| // imported from https://github.com/unshiftio/yeast |
| "use strict"; |
| 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; |