@zenginehq/uclid
TypeScript icon, indicating that this package has built-in type declarations

1.2.3 • Public • Published

UCLID

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

Readme

Keywords

none

Package Sidebar

Install

npm i @zenginehq/uclid

Weekly Downloads

0

Version

1.2.3

License

none

Unpacked Size

23.2 kB

Total Files

20

Last publish

Collaborators

  • chris.manjoine
  • dwmcnelis-wizehive
  • wizehive-jeremyf