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