dragonroll/backend/node_modules/shortid/lib/build.js

47 lines
1.2 KiB
JavaScript

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