0.1.0 • Published 3 years ago
sequence-id-generator v0.1.0
Sequence ID Generator
A small library for generating base62 encoded sequence. It can be used to generate incremental sequence but also to generate random values.
Random values are generated with a Linear congruential generator - each value in the sequence is generated only once. After all possible values are generated, the sequence is repeated.
Usage
Default behavior
By default, base62 encoded values from an interval <0 Number.MAX_SAFE_INTEGER) are generated.
import { createGenerator } from 'sequence-id-generator';
const rnd = createGenerator();
for (let i = 0; i < 15; i++) {
console.log(rnd());
}
// output: 0,1,2,3,4,5,6,7,8,9,a,b,c,d,eCustom alphabet
const rnd = createGenerator({
alphabet: '01234',
});
for (let i = 0; i < 10; i++) {
console.log(rnd());
}
// output: 0,1,2,3,4,10,11,12,13,14Limit generated values
Setting min and max value.
const rnd = createGenerator({
alphabet: '01234',
max: 4,
});
for (let i = 0; i < 10; i++) {
console.log(rnd());
}
// output: 0,1,2,3,4,0,1,2,3,4const rnd = createGenerator({
alphabet: '01234',
min: 1
max: 8,
});
for (let i = 0; i < 10; i++) {
console.log(rnd());
}
// output: 1,2,3,4,10,11,12,13,1,2Setting minLength and maxLength will calculate and override min and max options.
const rnd = createGenerator({
alphabet: '012',
minLength: 2,
maxLength: 3,
});
for (let i = 0; i < 10; i++) {
console.log(rnd());
}
// output: 10,11,12,20,21,22,100,101,102,110Random values
Shuffle alphabet - value will be increased by 1 but output will be encoded with a shuffled alphabet.
const rnd = createGenerator({
alphabet: '01234',
shuffle: true,
});
for (let i = 0; i < 10; i++) {
console.log(rnd());
}
// output: 3,1,4,0,2,13,11,14,10,12Random generator - each value from sequence is generated exactly once.
const rnd = createGenerator({
alphabet: '01234',
max: 8,
random: true,
});
for (let i = 0; i < 20; i++) {
console.log(rnd());
}
// output: 12,2,11,1,10,0,4,13,3,12,2,11,1,10,0,4,13,3,12,2Fixed string length
const rnd = createGenerator({
alphabet: '01234',
maxLength: 3,
random: true,
fixedLength: true,
});
for (let i = 0; i < 20; i++) {
console.log(rnd());
}
// output: 102,200,223,031,414,132,030,403,011,144Options
| Name | Description | Default |
|---|---|---|
| min | Inclusive minimum generated value. 0 <= min < Number.MAX_SAFE_INTEGER | 0 |
| max | Exclusive maximum generated value. min < max <= Number.MAX_SAFE_INTEGER | Number.MAX_SAFE_INTEGER |
| minLength | Minimal length of generated encoded string. If specified, min option is ignored. | 0 |
| maxLength | Maximal length of generated encoded string. If specified, max option is ignored. | 9 |
| fixedLength | If enabled, all generated strings has the same length = maxLength. | false |
| prefix | Prefix used if fixedLength is enabled. Default value us first character from (shuffled) alphabet. | '0' |
| shuffle | If enabled, alphabet is shuffled. | false |
| random | If enabled, random values within range <min, max) will be generated instead of incremental values. | false |
| alphabet | Custom alphabet used for encoding. | '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ |
API
Object properties
- options: get all used options including calculated ones.
const rnd = createGenerator();
console.log(rnd.options);
// output:
// {
// min: 0,
// max: 9007199254740991,
// minLength: 1,
// maxLength: 9,
// prefix: '0',
// fixedLength: false,
// random: false,
// shuffle: false,
// alphabet: '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
// }