New Research: Supply Chain Attack on Axios Pulls Malicious Dependency from npm.Details →
Socket
Book a DemoSign in
Socket

egg-liteflake

Package Overview
Dependencies
Maintainers
1
Versions
1
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

egg-liteflake

Egg plugin to generate unique and increased twitter-snowflake uuid.

latest
Source
npmnpm
Version
1.1.5
Version published
Maintainers
1
Created
Source

Build Status Coverage

egg-liteflake

Egg plugin to generate unique and increased twitter-snowflake uuid.

egg-liteflake will first assign a unique worker id to each worker by using the IPC messaging, and then create uuid according to the twitter snowflake algorithm.

Install

$ npm install egg-liteflake

Configurations

config/plugin.js

exports.liteflake = {
  enable: true,
  package: 'egg-liteflake'
}

config/config.default.js

// |--- timestamp ---|- machine -|- worker -|-- serial --|
// |----- 31 bit ----|---- 6 ----|--- 4 ----|---- 12 ----|
// |                 |           |          |            |
//  00000000000000000    000001      0000    000000000000

exports.liteflake = {
  client: {
    machineId: 1,
    // `Number` if 6-bit length (the default value),
    // we could handle servers from `2 ** 6` different machines.
    // And if 0, there will be no machine id in the uuid
    machineIdBitLength: 6,
    workerIdBitLength: 4,
    // Could handle max 4096 requests per millisecond
    serialIdBitLength: 12
  }
}

Then:

...
  async doSomething () {
    const {liteflake} = this.app

    const uuid = await liteflake.uuid()
    console.log(uuid)
    // '6465404975054230'

    const workerId = await liteflake.index()
    console.log(workerId)
    // 0
  }
...

await liteflake.uuid()

Generates the unique and time-based id across workers (/ machines)

Returns String | Promise<String> instead of Number due to the bad accuracy of JavaScript.

The bit-length of the return value equals to:

31 + machineIdBitLength + workerIdBitLength + serialIdBitLength

So you could use the three configuration options to handle the length of uuids.

await liteflake.index()

Returns String | Promise<Number> the 0-index unique worker id of the current cluster.

License

MIT

Keywords

egg

FAQs

Package last updated on 06 Nov 2018

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts