Skip to content

Latest commit

History

39 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

node-simpleflake

travisnpm

Distributed id generation for the lazy. Inspired by this article.

Generates ids consisting of a 41 bit time (millisecond precision with custom epoch) followed 23 random bits. Result is a Buffer with an added feature of base58 and base10 conversions for producing compact and readable strings.

Custom epoch starts on 2000-01-01T00:00:00.000Z, which should be good until around mid-2069.

Install

npm install simpleflake

On Windows, you may need to specify path to your OpenSSL installation:

npm install --openssl-root=/path/to/openssl

(Note: For a version compatible with nodejs v4, npm install simpleflake@1.0.1)

Use

Generate an id using current time and a random sequence number:

varflake=require('simpleflake');varid=flake();// <Buffer 34 62 a7 d5 c7 36 7c b9>id.toString('hex');// '3462a7d5c7367cb9'id.toString('base58');// '9mCpPjW7D5a'id.toString('base10');// '3774763974302006457'

Generate an id using deterministic time and sequence:

varid=flake(Date.UTC(2014,1,1),1);// <Buffer 33 bf f7 7e 00 00 00 01>

Parse an id into its time and sequence components:

flake.parse(id);// [ 1396671731598, 3570873 ]flake.parse('9mCpPjW7D5a','base58');// [ 1396671731598, 3570873 ]flake.parse('3774763974302006457','base10');// [ 1396671731598, 3570873 ]

Customise generation options (default values shown):

flake.options.epoch=Date.UTC(2000,0,1);flake.options.timebits=41;

License

MIT

About

Distributed id generation for the lazy.

Resources

Stars

19 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages