// 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;