28 lines
814 B
JavaScript
28 lines
814 B
JavaScript
|
// This alphabet uses a-z A-Z 0-9 _- symbols.
|
|||
|
// Despite the fact the source code is quite long, its entropy
|
|||
|
// is low and there are lots of duplicates - just what compressors
|
|||
|
// like GZIP and Brotli likes the best.
|
|||
|
|
|||
|
/**
|
|||
|
* URL safe symbols.
|
|||
|
*
|
|||
|
* @name url
|
|||
|
* @type {string}
|
|||
|
*
|
|||
|
* @example
|
|||
|
* const url = require('nanoid/url')
|
|||
|
* generate(url, 10) //=> "Uakgb_J5m9"
|
|||
|
*/
|
|||
|
|
|||
|
// This alphabet uses a-z A-Z 0-9 _- symbols.
|
|||
|
// Symbols are generated for smaller size.
|
|||
|
// -_zyxwvutsrqponmlkjihgfedcba9876543210ZYXWVUTSRQPONMLKJIHGFEDCBA
|
|||
|
module.exports = '-_'
|
|||
|
var i = 36
|
|||
|
while (i--) {
|
|||
|
// 36 is radix. Number.prototype.toString(36) returns number
|
|||
|
// in Base36 representation. Base36 is like hex, but it uses 0–9 and a-z.
|
|||
|
module.exports += i.toString(36)
|
|||
|
i > 9 && (module.exports += i.toString(36).toUpperCase())
|
|||
|
}
|