Skip to content

A lightweight module to generate time based 64-bit unique ids, inspired by Twitter id (snowflake).

License

Notifications You must be signed in to change notification settings

PharaStarLLC/snowflakeid

Repository files navigation

SnowflakeId

A lightweight module to generate time based 64-bit unique ids, inspired by Twitter id (snowflake).


Installation

NodeJS

npm install @pharastar/snowflakeid

Usage

Initializtion

const SnowflakeId = require('@pharastar/snowflakeid'); /* on node js only */

//initiate flake
const snowflake = new SnowflakeId({
    mid: 420, // optional, define machine id
    timeOffset: (2022 - 1970) * 31536000 * 1000 // optional, define a offset time
});

Create a instance of snowflake as shown above which will be used to generate snowflake ids afterward.

Id generation

const id1 = snowflake.gen(); // returns something like 112867124767768576
const id2 = snowflake.gen(); // returns something like 112867124784545792

Options

mid: (Defaults to 1) A machine id or any random id. If you are generating id in distributed system, its highly advised to provide a proper mid which is unique to different machines.

timeOffset: (Defaults to 0) Time offset will be subtracted from current time to get the first 42 bit of id. This help in generating smaller ids.

About

A lightweight module to generate time based 64-bit unique ids, inspired by Twitter id (snowflake).

Resources

License

Stars

Watchers

Forks