PackageTrack
Sign in Get early access

at_primitives

Primitive types and utilities for AT Protocol. This package provides basic data structures and utilities used across AT Protocol implementations.

1.2.0 myConsciousness/atproto.dart

What this package is like to depend on

Last release 1 months ago

22 Jul 2026

Release timing varies

gaps range from 8 days to 10 months

Nearly every release is documented

notes for 4 of 4 stable releases

Nothing withdrawn

no release was ever pulled

11 months old

4 releases · first in 2025

4 releases in the last 12 months

see the full history below

Release timeline

4 releases · Sep 2025 to Jul 2026
2026
Release Pre-release

Releases

latest 4
  1. 1.2.0 22 Jul 2026
    Release notes
    • feat: added TidGenerator, a stateful, strictly-monotonic TID generator for record keys. next() never repeats or regresses, even when the system clock is coarse or steps backwards, and the encoding is exact on both the VM and the web.
    Open source →
  2. 1.1.1 16 Jul 2026
    Release notes
    • docs: fixed the README, which imported the non-existent package:at_primitives/at_primitives.dart barrel throughout; every snippet now imports the correct sub-barrel (at_identifier.dart/at_uri.dart/nsid.dart/tid.dart/record_key.dart).
    • docs: corrected the AtUri.collection type note (collection returns an NSID, only 'com.example.post' via .toString()) and documented the non-throwing collectionOrNull/rkeyOrNull getters.
    • docs: documented the previously undocumented TID (isValidTid/ensureValidTid/InvalidTidError) and Record Key (isValidRecordKey/ensureValidRecordKey/InvalidRecordKeyError) modules with runnable snippets.
    Open source →
  3. 1.1.0 13 Jul 2026
    Release notes
    • fix!: collection/rkey on a path-less AtUri now throw InvalidAtUriError instead of a raw StateError/RangeError; added collectionOrNull/rkeyOrNull for the non-throwing path.
    • feat: added AtUri.parseStrict for full validation (ensureValidAtUri + handle/NSID checks). AtUri.parse stays lenient for backwards compatibility.
    • fix: AtUri now preserves the query string (search/searchParams) through parse/toString instead of silently dropping it.
    • fix: NSID length limits corrected to the current spec (317 overall / 63 per segment).
    • fix: Invalid*Error types now override toString() so their message is shown.
    • perf: hoisted per-call RegExps to static final.
    • fix: NSID validation now matches the official spec: middle domain-authority segments may start with a digit (com.4chan.example is valid), the name segment must be letters and digits only (com.example.foo-bar is now rejected), and segments can not start with a hyphen.
    • feat: added TID validation (ensureValidTid/isValidTid, InvalidTidError), exported from package:at_primitives/tid.dart.
    • feat: added Record Key validation (ensureValidRecordKey/isValidRecordKey, InvalidRecordKeyError), exported from package:at_primitives/record_key.dart.
    • fix: AtUri.parseStrict now validates the record key path segment (rejects ./.., over 512 chars, disallowed chars), mirroring the official strict AT URI parsing. ensureValidAtUri stays rkey-lenient to match the official ensureValidAtUri.
    • fix: DID length limit corrected from 8192 to the spec's hard limit of 2048 characters.
    • fix: AtUri.parse now accepts DIDs containing . and _ (e.g. at://did:web:example.com%3A3000/... no longer throws).
    Open source →
  4. 1.0.0 25 Sep 2025
    Release notes
    • NEW: Initial release of the consolidated at_primitives package.
    • FEATURE: Unified primitive types for AT Protocol including:
      • AtIdentifier - Core identifier syntax handling (migrated from at_identifier package)
      • AtUri - AT URI parsing and validation (migrated from at_uri package)
      • NSID - Namespaced identifier parsing (migrated from nsid package)
    • CONSOLIDATION: This package replaces the separate at_identifier, at_uri, and nsid packages to reduce dependency complexity and improve maintainability.
    • COMPATIBILITY: Provides the same API surface as the individual packages for seamless migration.
    Open source →

Every package, every release, already written down.

The archive is open and free. Watching your own project is what we are building next.

Browse the archive