1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 |
- 'use strict';
- var alphabet = require('./alphabet');
- var build = require('./build');
- var isValid = require('./is-valid');
- // if you are using cluster or multiple servers use this to make each instance
- // has a unique value for worker
- // Note: I don't know if this is automatically set when using third
- // party cluster solutions such as pm2.
- var clusterWorkerId = require('./util/cluster-worker-id') || 0;
- /**
- * Set the seed.
- * Highly recommended if you don't want people to try to figure out your id schema.
- * exposed as shortid.seed(int)
- * @param seed Integer value to seed the random alphabet. ALWAYS USE THE SAME SEED or you might get overlaps.
- */
- function seed(seedValue) {
- alphabet.seed(seedValue);
- return module.exports;
- }
- /**
- * Set the cluster worker or machine id
- * exposed as shortid.worker(int)
- * @param workerId worker must be positive integer. Number less than 16 is recommended.
- * returns shortid module so it can be chained.
- */
- function worker(workerId) {
- clusterWorkerId = workerId;
- return module.exports;
- }
- /**
- *
- * sets new characters to use in the alphabet
- * returns the shuffled alphabet
- */
- function characters(newCharacters) {
- if (newCharacters !== undefined) {
- alphabet.characters(newCharacters);
- }
- return alphabet.shuffled();
- }
- /**
- * Generate unique id
- * Returns string id
- */
- function generate() {
- return build(clusterWorkerId);
- }
- // Export all other functions as properties of the generate function
- module.exports = generate;
- module.exports.generate = generate;
- module.exports.seed = seed;
- module.exports.worker = worker;
- module.exports.characters = characters;
- module.exports.isValid = isValid;
|