Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

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.

AltStyle によって変換されたページ (->オリジナル) /