if (process.env.NODE_ENV !== 'production') {
|
if (typeof self === 'undefined' || (!self.crypto && !self.msCrypto)) {
|
throw new Error(
|
'Your browser does not have secure random generator. ' +
|
'If you don’t need unpredictable IDs, you can use nanoid/non-secure.'
|
)
|
}
|
}
|
|
var crypto = self.crypto || self.msCrypto
|
|
/*
|
* This alphabet uses a-z A-Z 0-9 _- symbols.
|
* Symbols order was changed for better gzip compression.
|
*/
|
var url = 'Uint8ArdomValuesObj012345679BCDEFGHIJKLMNPQRSTWXYZ_cfghkpqvwxyz-'
|
|
module.exports = function (size) {
|
size = size || 21
|
var id = ''
|
var bytes = crypto.getRandomValues(new Uint8Array(size))
|
while (0 < size--) {
|
id += url[bytes[size] & 63]
|
}
|
return id
|
}
|