Spaces:
Sleeping
Sleeping
// imported from https://github.com/unshiftio/yeast | |
; | |
Object.defineProperty(exports, "__esModule", { value: true }); | |
exports.yeast = exports.decode = exports.encode = void 0; | |
const alphabet = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-_".split(""), length = 64, map = {}; | |
let seed = 0, i = 0, prev; | |
/** | |
* Return a string representing the specified number. | |
* | |
* @param {Number} num The number to convert. | |
* @returns {String} The string representation of the number. | |
* @api public | |
*/ | |
function encode(num) { | |
let encoded = ""; | |
do { | |
encoded = alphabet[num % length] + encoded; | |
num = Math.floor(num / length); | |
} while (num > 0); | |
return encoded; | |
} | |
exports.encode = encode; | |
/** | |
* Return the integer value specified by the given string. | |
* | |
* @param {String} str The string to convert. | |
* @returns {Number} The integer value represented by the string. | |
* @api public | |
*/ | |
function decode(str) { | |
let decoded = 0; | |
for (i = 0; i < str.length; i++) { | |
decoded = decoded * length + map[str.charAt(i)]; | |
} | |
return decoded; | |
} | |
exports.decode = decode; | |
/** | |
* Yeast: A tiny growing id generator. | |
* | |
* @returns {String} A unique id. | |
* @api public | |
*/ | |
function yeast() { | |
const now = encode(+new Date()); | |
if (now !== prev) | |
return (seed = 0), (prev = now); | |
return now + "." + encode(seed++); | |
} | |
exports.yeast = yeast; | |
// | |
// Map each character to its index. | |
// | |
for (; i < length; i++) | |
map[alphabet[i]] = i; | |