'use strict'; var generate = require('./generate'); var alphabet = require('./alphabet'); // Ignore all milliseconds before a certain time to reduce the size of the date entropy without sacrificing uniqueness. // This number should be updated every year or so to keep the generated id short. // To regenerate `new Date() - 0` and bump the version. Always bump the version! var REDUCE_TIME = 1567752802062; // don't change unless we change the algos or REDUCE_TIME // must be an integer and less than 16 var version = 7; // Counter is used when shortid is called multiple times in one second. var counter; // Remember the last time shortid was called in case counter is needed. var previousSeconds; /** * Generate unique id * Returns string id */ function build(clusterWorkerId) { var str = ''; var seconds = Math.floor((Date.now() - REDUCE_TIME) * 0.001); if (seconds === previousSeconds) { counter++; } else { counter = 0; previousSeconds = seconds; } str = str + generate(version); str = str + generate(clusterWorkerId); if (counter > 0) { str = str + generate(counter); } str = str + generate(seconds); return str; } module.exports = build;