Files
async-programming-promises/node_modules/nanoid/index.browser.js
2019-10-23 07:41:03 -05:00

34 lines
1.0 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

if (process.env.NODE_ENV !== 'production') {
if (typeof navigator !== 'undefined' && navigator.product === 'ReactNative') {
throw new Error(
'React Native does not have a built-in secure random generator. ' +
'If you dont need unpredictable IDs, you can use `nanoid/non-secure`. ' +
'For secure ID install `expo-random` locally and use `nanoid/async`.'
)
}
if (typeof self === 'undefined' || (!self.crypto && !self.msCrypto)) {
throw new Error(
'Your browser does not have secure random generator. ' +
'If you dont 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 (size--) {
id += url[bytes[size] & 63]
}
return id
}