You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
29 lines
654 B
29 lines
654 B
var random = require('./random') |
|
|
|
var url = '_~0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ' |
|
|
|
/** |
|
* Generate secure URL-friendly unique ID. |
|
* |
|
* By default, ID will have 22 symbols to have same collisions probability |
|
* as UUID v4. |
|
* |
|
* @param {number} [size=22] The number of symbols in ID. |
|
* |
|
* @return {string} Random string. |
|
* |
|
* @example |
|
* var nanoid = require('nanoid') |
|
* model.id = nanoid() //=> "Uakgb_J5m9g~0JDMbcJqLJ" |
|
* |
|
* @name nanoid |
|
*/ |
|
module.exports = function (size) { |
|
size = size || 22 |
|
var id = '' |
|
var bytes = random(size) |
|
for (var i = 0; i < size; i++) { |
|
id += url[bytes[i] & 63] |
|
} |
|
return id |
|
}
|
|
|