Skip to content

ReverseTimestampCodec

ReverseTimestampCodec<Brand> = object

Defined in: src/codecs/reverse/index.ts:43

A brand-scoped codec for generating and validating Reverse Timestamp IDs.

Wire format: {brand}_ plus 26 lowercase Crockford base32 characters encoding a 16-byte payload (6-byte bitwise-inverted ms timestamp + 10 random bytes). IDs sort by creation time in descending (newest-first) order.

Range queries across a time interval [t_old, t_new] should scan from minIdForTime(t_new) to maxIdForTime(t_old) — the reversed sort order means newer timestamps produce lexicographically smaller IDs.

Constructed via createReverseTimestampId(brand) from @smonn/ids/reverse.

Brand extends string

readonly ~standard: StandardSchemaProps<Brand>

Defined in: src/codecs/reverse/index.ts:91

Standard Schema validate entry point.

extractTimestamp(id): Date

Defined in: src/codecs/reverse/index.ts:69

Decodes the creation Date from an Id<Brand> by inverting the timestamp bytes. Trusts the type — use safeParse() at boundaries first.

Best-effort: inverts and decodes the timestamp bytes in the payload without any additional verification. An ID that bypassed safeParse() (e.g. via a type assertion) may return a plausible-looking but incorrect Date.

Id<Brand>

Date


fromUUID(value): Id<Brand>

Defined in: src/codecs/reverse/index.ts:103

Parses a UUID string into an Id<Brand>. Accepts case-insensitive 8-4-4-4-12 hyphenated form only. Throws IdsError with code: "invalid_id" on bad input. See ADR-0024.

string

Id<Brand>


generate(): Id<Brand>

Defined in: src/codecs/reverse/index.ts:45

Produces a new canonical ID using the codec’s now and rng.

Id<Brand>


generateAt(date): Id<Brand>

Defined in: src/codecs/reverse/index.ts:47

Produces a new canonical ID with timestamp bytes from date and a fresh random tail. Throws on invalid dates.

Date

Id<Brand>


is(value): value is Id<Brand>

Defined in: src/codecs/reverse/index.ts:52

Strict type guard: true only for already-canonical strings for this brand. For untrusted input, use safeParse() or parse() instead. See ADR-0003.

unknown

value is Id<Brand>


maxIdForTime(date): Id<Brand>

Defined in: src/codecs/reverse/index.ts:83

Lexicographically largest ID for any ID generated at date (random portion 0xff). Because timestamps are inverted, an older date yields a lexicographically larger result — use maxIdForTime(t_old) as the upper bound when scanning [t_old, t_new]. Throws on invalid dates.

Date

Id<Brand>


minIdForTime(date): Id<Brand>

Defined in: src/codecs/reverse/index.ts:76

Lexicographically smallest ID for any ID generated at date (random portion 0x00). Because timestamps are inverted, a newer date yields a lexicographically smaller result — use minIdForTime(t_new) as the lower bound when scanning [t_old, t_new]. Throws on invalid dates.

Date

Id<Brand>


parse(value): Id<Brand>

Defined in: src/codecs/reverse/index.ts:56

Lenient parse: normalises case and Crockford aliases, returns canonical Id<Brand>, or throws.

unknown

Id<Brand>


safeFromUUID(value): ParseResult<Brand>

Defined in: src/codecs/reverse/index.ts:108

Non-throwing UUID parse. Returns { ok: true, id } or { ok: false, error: "not_string" | "invalid_uuid" }. See ADR-0024.

unknown

ParseResult<Brand>


safeParse(value): ParseResult<Brand>

Defined in: src/codecs/reverse/index.ts:60

Lenient parse without throwing: normalises to canonical form, or returns { ok: false, error }.

unknown

ParseResult<Brand>


toJsonSchema(): JsonSchema

Defined in: src/codecs/reverse/index.ts:89

JSON Schema for the canonical wire form. The pattern matches the canonical stored form only and is deliberately stricter than parse()/safeParse(), which accept uppercase letters and Crockford aliases (o/i/l) before normalising. See ADR-0003.

JsonSchema


toUUID(id): string

Defined in: src/codecs/reverse/index.ts:97

Converts a trusted Id<Brand> to an RFC 9562 canonical (lowercase, hyphenated) UUID string by reinterpreting the 16-byte payload verbatim. Total — cannot fail. Returns a plain string (brand is shed). See ADR-0024.

Id<Brand>

string