Author: Tim Wood
Sluid is a unique base 62 string generator.
Sluid is similar to UUID, only instead of being globally unique, it is locally unique.
// each call generates a unique id
sluid() // mVpqw450
sluid() // mVpqw451
sluid() // mVpqw452
// the size of the unique id can be changed
sluid(3) // qIe0
sluid(4) // jagM0
sluid(5) // YWK640
sluid(6) // fv2ebd0
sluid(7) // mVpr0mQ0
minified | gzipped |
---|---|
434 bytes | 380 bytes |
The function returns a base 62 encoding of the current timestamp plus an auto-incrementing, zero-indexed, base 62 suffix. This allows the function to be called many times in a millisecond and always return unique values.
The baselength
parameter will change how long the base of the sluid
will be.
The minimum length of the output will be baselength + 1
, but can be longer
depending on how many times sluid() is called in a millisecond.
baselength
should be a number between 3 and 7, and defaults to 7 if an
invalid value is passed in.
The baselength
parameter also changes how long the sluid
is guaranteed to
be unique. This is because the sluid
is generated based on the current timestamp.
baselength | time |
---|---|
3 | 3 minutes and 50 seconds |
4 | 3 hours, 53 minutes and 20 seconds |
5 | 10 days, 12 hours, 46 minutes and 40 seconds |
6 | 648 days, 3 hours, 33 minutes and 20 seconds |
7 | 40509 days, 6 hours, 13 minutes and 20 seconds |
The reason the lengths of time are so random is because these are the base 10
equivalents of the maximum base 62 value for that baselength
.
// base 62 for baselength of 7
'ZZZZZZZ'
// base 10
3521614606207
The numbers are also slightly rounded down for minification.
// base 10
3521614606207
// base 10 rounded down
35e11
By default, sluid is attached to the window
namespace. To change that,
simply change the namespace variable passed in at the end of the file to
whatever namespace you desire
...a.sluid=h})(window)
Can change to
...a.sluid=h})(jQuery)
or
...a.sluid=h})(_)
There are a couple of tests in the test/ folder. Check them out. If you think some tests are missing, open an issue, and I'll add it.
Initial release