1.2.3 • Published 2 years ago

@zenginehq/uclid v1.2.3

Weekly downloads
-
License
-
Repository
-
Last release
2 years ago

Universally Unique, Compact, Lexicographically Sortable Identifier

UUID can be suboptimal for many uses-cases because:

  • It isn't the most character efficient way of encoding 128 bits of randomness
  • UUID v1/v2 is impractical in many environments, as it requires access to a unique, stable MAC address
  • UUID v3/v5 requires a unique seed and produces randomly distributed IDs, which can cause fragmentation in many data structures
  • UUID v4 provides no other information than randomness which can cause fragmentation in many data structures

Instead, herein is proposed UCLID:

  • 128-bit compatibility with UUID
  • 1.21e+24 unique UCLIDs per millisecond
  • Lexicographically sortable!
  • Canonically encoded as a 22 character string, as opposed to the 36 character UUID
  • Uses Bitcoin's base58 for better efficiency and readability (6 bits per character) (URL safe)
  • Monotonic sort order (correctly detects and handles the same millisecond)

Installation

npm install --save uclid

Import

TypeScript, ES6+, Babel, Webpack, Rollup, etc.. environments

import { uclid } from 'uclid'
 
uclid() // 1C4qEmGwVVz7hL4r2TrphQ

CommonJS environments

const UCLID = require('uclid')
 
UCLID.uclid()

Usage

To generate a UCLID, simply run the function!

import { uclid } from 'uclid'
 
uclid() // 1C4qEmGwfjYxZH4uS31jbg