Skip to content

Twitter's Snowflake Generator with TypeScript / JavaScript - generate unique Id numbers at high scale with some simple guarantees.

License

Notifications You must be signed in to change notification settings

rakheyl/snowflake-uuid

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Snowflake-UUID

Twitter's Snowflake generator for NodeJS.

  • Speedy
  • Lightweight
  • Zero dependencies

Snowflake-UUID can generate unique Id numbers at high scale with some simple guarantees.

Installing

npm install snowflake-uuid
// or
yarn add snowflake-uuid
// or
pnpm add snowflake-uuid

Example

import { Worker } from 'snowflake-uuid';
// const { Worker } = require('snowflake-uuid');

const generator = new Worker(0, 1, {
	workerIdBits: 5,
	datacenterIdBits: 5,
	sequenceBits: 12,
});

generator.nextId(); // 87559690812260352n
generator.nextId().toString(); // 87559690833231872

generator.getCurrentSequence(); // 0n
generator.getDatacenterId(); // 1n
generator.getLastTimestamp(); // 1630335057075n
generator.getWorkerId(); // 0n

Generated IDs are BigInt and can be easily converted into strings.

Constructor Options

Property Description Optional? Type Default Value
workerId Id for the worker Yes Number or BigInt 0
datacenterId Identifier of the datacenter to which the worker belongs Yes Number or BigInt 0
options Custom options for the worker Yes Object undefined
options.epoch Custom epoch for timestamp generation. By default, the number of milliseconds since the first second of 2021 Yes Number or BigInt 1609459200000
options.workerIdBits Number of usable bits for Worker Id. 5 by default, allows up to 31 Workers Yes Number or BigInt 5
options.datacenterIdBits Number of usable bits for Datacenter Id. 5 by default, allows up to 31 Datacenters Yes Number or BigInt 5
options.sequence For every Id that is generated on that process, this number is incremented Yes Number or BigInt 0
options.sequenceBits Number of usable bits for Sequence Id. 12 by default, allows up to 4095 generations per millisecond per Worker per Datacenter Yes Number or BigInt 12

Useful Links

License

Refer to the LICENSE file.