UNPKG

shortid-extend

Version:

Alternative versión with options from Dylan Greene ShortId

67 lines (55 loc) 1.71 kB
'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 = 1459707606518; // don't change unless we change the algos or REDUCE_TIME // must be an integer and less than 16 var version = 6; // 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; // Default Length; var _defaultLength = true; var _configLength; function setDefaults(config) { if(config.disableDefault) { _defaultLength = false; _configLength = config.configLength } } /** * Generate unique id * Returns string id */ function build(clusterWorkerId) { var str = ''; if(_defaultLength) { 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; } else { for(var i = 0; i < _configLength; i++){ str = str + generate(version); } return str } } module.exports = { build: build, setDefaults: setDefaults };