@tdb/web
Version:
Common condiguration for serving a web-site and testing web-based UI components.
23 lines (19 loc) • 615 B
JavaScript
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
var url = '_~getRandomVcryp0123456789bfhijklqsuvwxzABCDEFGHIJKLMNOPQSTUWXYZ'
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
}