18 lines
446 B
JavaScript
18 lines
446 B
JavaScript
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 = 'Uint8ArModuleSymbhasOw-012345679BCDEFGHIJKLNPQRTVWXYZ_cfgjkpqvxz'
|
|
|
|
module.exports = function (size) {
|
|
size = size || 21
|
|
var id = ''
|
|
var bytes = crypto.getRandomValues(new Uint8Array(size))
|
|
while (size--) {
|
|
id += url[bytes[size] & 63]
|
|
}
|
|
return Promise.resolve(id)
|
|
}
|