a collection of lightweight TypeScript packages for AT Protocol, the protocol powering Bluesky
atproto bluesky typescript npm
99
fork

Configure Feed

Select the types of activity you want to include in your feed.

README.md

@atcute/tid#

timestamp identifier (TID) codec for AT Protocol.

npm install @atcute/tid

this library implements atproto's TID codec used to generate compact and unique record keys that can be sorted chronologically.

usage#

generating TIDs#

import * as TID from '@atcute/tid';

// generate a TID for the current time
const tid = TID.now();
// -> "3l25zusnsfctk"

// create from specific timestamp (microseconds) and clock ID
const custom = TID.create(1724171495793000, 512);
// -> "3l25zusnsfck2"

on Node.js, TID.now() relies on the system's real-time clock for microsecond precision where available, falling back to millisecond precision otherwise.

TID.now() is not monotonic — TIDs encode wall clock time, so the generator must follow clock corrections rather than preserve ordering. enforcing monotonicity on devices with unreliable clocks (e.g. phones) would leave the generator permanently stuck at the wrong time after a correction. the only exception is rapid successive calls within a single process that observe the same timestamp, where it increments instead of reusing it to avoid collisions.

parsing TIDs#

import * as TID from '@atcute/tid';

const { timestamp, clockid } = TID.parse('3l25zusnsfctk');
// timestamp: 1724171495793000 (microseconds since epoch)
// clockid: 816

validating TIDs#

import * as TID from '@atcute/tid';

TID.validate('3l25zusnsfctk'); // true
TID.validate('invalid'); // false