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