1.0.1 • Published 4 years ago

id-auto-increment v1.0.1

Weekly downloads
11
License
MIT
Repository
github
Last release
4 years ago

Auto increment id generate

Auto generate increment id, unique guarantee, custom bit length, distributable, serverless, and customizable unique ID generator based on Snowflake

the code fork from maylily, change source to nodejs instead of mjs, and remove no need dependence

Features

  • distributable / scalable
  • no external servers required
  • customizable
  • supports 2-36 radix
  • supports multiple precision integer
  • supports CommonJS, ES Modules, TypeScript

How to install

Install by npm.

npm install id-auto-increment

How to use

No external servers needed. Just import and call idAutoIncrement()!

JavaScript

Traditional syntax. This code will run on most JavaScript engine.

const idAutoIncrement = require("id-auto-increment");

(function() {
    // returns a Promise object
    idAutoIncrement()
        .then(function(id) {
            // do something...
        })
        .catch(function(err) {
            // err is instance of Error
        });
}();

ECMAScript 7

Modern syntax. Async/await syntax is easy to read

const idAutoIncrement = require("id-auto-increment");

(async() => { // async syntax / arrow function
    try {
        const id = await idAutoIncrement(); // await syntax
        // do something...
    }
    catch(err) {
        // err is instance of Error
    }
})();

How to customize

namedescriptiondefault
radixradix of generated ID (2-36)10
timeBasebase time in unixtime(millisec)946684800000 (2000-01-01T00:00:00Z)
machineIdidentifier of machine; must be unique in service0
machineBitsrequired bits to represent machineId3
generatorIdidentifier of generator; must be unique in machineprocess ID
generatorBitsrequired bits to represent generatorId10
sequenceBitsrequired bits to represent sequence8

Generated value is stringified multiple precision integer (in specified radix).

 000001011100000101111010101110101010111101 001 1101101010 00000110
|------------------------------------------|                         current time from timeBase in millisec
                                           |---|                     machineId (uses machineBits bits)
                                               |----------|          generatorId (uses generatorBits bits)
                                                          |--------| sequence number (uses sequenceBits bits)

example:

// keeps options until next change
idAutoIncrement({
    timeBase: Date.parse("2017-01-01T00:00:00Z"),   // if your service starts in 2017, this is enough.
    machineBits: 1                                  // if required number machines are up to 2, this is enough.
});