The validation module provides high-performance validation rules and metadata extraction routines for all supported identifier types.
isValid(id, type?)
Validates whether an input string conforms to a specified ID type or any known format:
js
import { isValid } from '@readytools/id';
isValid('1b9d6bcd-bbfd-4b2d-9b5d-ab8dfbbd4bed', 'uuid'); // true
isValid('V1StGXR8_Z5jdHi6B-myT', 'nanoid'); // true
isValid('01ARZ3NDEKTSV4RRFFQ69G5FAV', 'ulid'); // true
isValid('tz4a98xxat96iws9zmbrgj3a', 'cuid2'); // true
// Polymorphic check across all supported formats
isValid('01ARZ3NDEKTSV4RRFFQ69G5FAV'); // true
isValid('invalid-string'); // falsegetVersion(uuid)
Extracts the RFC UUID version integer (e.g. 1, 4, 5, 7) from any valid UUID string:
js
import { getVersion } from '@readytools/id';
getVersion('018f6f89-8d2a-7140-9a3b-586b9e248b11'); // 7
getVersion('f47ac10b-58cc-4372-a567-0e02b2c3d479'); // 4
getVersion('invalid-uuid'); // nullextractTimestamp(id, type)
Parses the embedded millisecond or nanosecond timestamp from time-ordered IDs and reconstructs a native JavaScript Date object:
js
import { extractTimestamp } from '@readytools/id';
// From UUIDv7
const date1 = extractTimestamp('018f6f89-8d2a-7140-9a3b-586b9e248b11', 'uuidv7');
console.log(date1.toISOString()); // e.g. "2024-05-12T14:30:00.000Z"
// From ULID
const date2 = extractTimestamp('01ARZ3NDEKTSV4RRFFQ69G5FAV', 'ulid');
console.log(date2.toISOString());