1.3.1 • Published 6 months ago

@evokegroup/ulid v1.3.1

Weekly downloads
-
License
ISC
Repository
github
Last release
6 months ago

evokegroup/ulid

Universally unique Lexicographically sortable IDentifier

A ULID is a 26 charater string consisting of a encoded timestamp followed by 16 random characters. This library can also encode a ULID in a UUID format and convert between the 2 formats.

Requires NodeJS 16+

Versions for use in the browser is included in /dist-browser.

Node.js

ulid()

Generates a ULID.

returns string

ParameterTypeDefaultDescription
timestamp?numberDate.now()The timestamp
import { ulid } from '@evokegroup/ulid';

const id = ulid(); // 01HDEKBMW3904VB2HYTVWWMSY5

// Use a existing timestamp
const now = Date.now(); // 1698075890563
const id = ulid(now); // 01HDEKBMW3904VB2HYTVWWMSY5

ulid.timestamp()

Gets the timestamp from a ULID

returns number

ParameterTypeDefaultDescription
idstringThe string to parconsose
import { ulid } from '@evokegroup/ulid';

ulid.timestamp('01HDEKBMW3904VB2HYTVWWMSY5'); // 1698075890563
ulid.timestamp('018B5D35-D383-4809-B58A-3ED6F9CA67C5'); // 1698075890563

ulid.data()

Gets the random data portion of a ULID as a BigInt

returns bigint

ParameterTypeDefaultDescription
idstringThe string to parse
import { ulid } from '@evokegroup/ulid';

ulid.data('01HDEKBMW3904VB2HYTVWWMSY5'); // 340189488800438527092677n
ulid.data('018B5D35-D383-4809-B58A-3ED6F9CA67C5'); // 340189488800438527092677n

ulid.is()

Determines if the given string is a ULID

returns boolean

ParameterTypeDefaultDescription
idstringThe string to test
import { ulid } from '@evokegroup/ulid';

ulid.is('01HDEKBMW3904VB2HYTVWWMSY5'); // true
ulid.is('018B5D35-D383-4809-B58A-3ED6F9CA67C5'); // false

ulid.uuid()

Generates a ULID in a UUID v4 format.

returns string

ParameterTypeDefaultDescription
timestamp?numberDate.now()The timestamp
import { ulid } from '@evokegroup/ulid';

const id = ulid.uuid(); // 018B5D35-D383-4809-B58A-3ED6F9CA67C5

ulid.fromUUID()

Convert a UUID to a ULID.

returns string

ParameterTypeDefaultDescription
idstringThe ID to be converted
import { ulid } from '@evokegroup/ulid';

const id = ulid.fromUUID('018B5D38-9C52-47FB-97AB-09550991A91C'); // 01HDEKH72J8ZXSFAR9AM4S3A8W

ulid.toUUID()

Convert a ULID to a UUID. Conversions of externally generated ULIDs may not result in a valid UUID v4.

returns string

ParameterTypeDefaultDescription
idstringThe ID to be converted
import { ulid } from '@evokegroup/ulid';

const uuid = ulid.toUUID('01HDEKH72J8ZXSFAR9AM4S3A8W'); // 018B5D38-9C52-47FB-97AB-09550991A91C

ulid.factory()

Create a ULID factory which will increment the ID with every generation. The ID will increment regardless of which ID format is generated.

returns Factory

ParameterTypeDefaultDescription
argsobject
args.timestamp?numberDate.now()The timestamp
args.data?bigintRandomly generatedThe seed data value. If this value is less than FACTORY_DATA_MIN or greater than FACTORY_DATA_MAX it will be set to FACTORY_DATA_MIN.
import { ulid } from '@evokegroup/ulid';

let factory = ulid.factory();
// with a timestamp
factory = ulid.factory({ timestamp: 1698160540736 });
// with a timestamp and data seed
factory = ulid.factory({ timestamp: 1698160540736, data: 369740473983206468055316n });

const ulid1 = factory.ulid(); // 01HDH42Z209S5TQNW6QK6BEW8M
const uuid2 = factory.uuid(); // 018B6241-7C40-4E4B-ABD7-86BCCCB77115
const ulid3 = factory.ulid(); // 01HDH42Z209S5TQNW6QK6BEW8P
const uuid4 = factory.uuid(); // 018B6241-7C40-4E4B-ABD7-86BCCCB77117

Factory.ulid()

Returns a ULID from the factory.

returns string

import { ulid } from '@evokegroup/ulid';

const factory = ulid.factory();
const ulid1 = factory.ulid(); // 01HDH8AJWQ9X7ABB2P330S362Y
const ulid2 = factory.ulid(); // 01HDH8AJWQ9X7ABB2P330S362Z
const ulid3 = factory.ulid(); // 01HDH8AJWQ9X7ABB2P330S3630

Factory.uuid()

Returns a UUID v4 from the factory.

returns string

import { ulid } from '@evokegroup/ulid';

const factory = ulid.factory();
const uuid1 = factory.uuid(); // 018B6286-CC0B-4F0B-DDEC-B6040D445C4E
const uuid2 = factory.uuid(); // 018B6286-CC0B-4F0B-DDEC-B6040D445C4F
const uuid3 = factory.uuid(); // 018B6286-CC0B-4F0B-DDEC-B6040D445C50

Constants

NameTypeDescription
ULID_CHARSstringThe characters used to encode a ULID
ULID_TIMESTAMP_LENGTHnumberThe length of the timestamp portion of a ULID
UUID_TIMESTAMP_LENGTHnumberThe length of the timestamp portion of a UUID
FACTORY_DATA_MINbigintThe minimum data seed value for the Factory
FACTORY_DATA_MAXbigintThe maximum data seed value for the Factory
TIMESTAMP_MINnumberThe minimum allowed timestamp value
TIMESTAMP_MAXnumberThe maximum allowed timestamp value

Browser

Versions of the ulid function for use in the browser.

Javascript

The regular javascript browser version will add all exported constants and the ulid function to the window object for global access.

<script src="node_modules/@evokegroup/ulid/dist-browser/index.min.js"></script>
<script>
  const id = ulid();
</script>

Module

<script src="main.mjs" type="module"></script>
// main.mjs
import { ulid } from 'node_modules/@evokegroup/ulid/dist-browser/index.min.mjs';
const id = ulid();
1.3.1

6 months ago

1.3.0

7 months ago

1.2.2

7 months ago

1.2.1

7 months ago

1.2.0

7 months ago

1.1.0

7 months ago

1.0.0

7 months ago