at_primitives 1.0.0 copy "at_primitives: ^1.0.0" to clipboard
at_primitives: ^1.0.0 copied to clipboard

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

at_primitives

AT Protocol primitive types and utilities πŸ¦‹

1. Guide 🌎 #

This library provides the essential primitive types and utilities for AT Protocol in Dart and Flutter apps. It consolidates functionality from the previously separate at_identifier, at_uri, and nsid packages into a single, unified package.

1.1. Getting Started ⚑ #

1.1.1. Install Library #

With Dart:

 dart pub add at_primitives

Or With Flutter:

 flutter pub add at_primitives

1.1.2. Import #

import 'package:at_primitives/at_primitives.dart';

1.1.3. Implementation #

AT Identifiers:

import 'package:at_primitives/at_primitives.dart' as primitives;

void main() {
  // Handle validation
  primitives.isValidHandle('alice.test'); // returns true
  primitives.ensureValidHandle('alice.test'); // returns void

  primitives.isValidHandle('al!ce.test'); // returns false
  primitives.ensureValidHandle('al!ce.test'); // throws

  // DID validation
  primitives.ensureValidDid('did:method:val'); // returns void
  primitives.ensureValidDid(':did:method:val'); // throws
}

AT URIs:

import 'package:at_primitives/at_primitives.dart';

void main() {
  final uri = AtUri.parse('at://bob.com/com.example.post/1234');

  uri.protocol; // => 'at:'
  uri.origin; // => 'at://bob.com'
  uri.hostname; // => 'bob.com'
  uri.collection; // => 'com.example.post'
  uri.rkey; // => '1234'

  ensureValidAtUri('at://user.bsky.social'); // => returns void
  ensureValidAtUri('at//did:plc:asdf123'); // => throws
}

NSIDs:

import 'package:at_primitives/at_primitives.dart';

void main() {
  final id1 = NSID.parse('com.example.foo');
  id1.authority; // => 'example.com'
  id1.name; // => 'foo'
  id1.toString(); // => 'com.example.foo'

  final id2 = NSID.create('example.com', 'foo');
  id2.authority; // => 'example.com'
  id2.name; // => 'foo'
  id2.toString(); // => 'com.example.foo'

  final id3 = NSID.create('example.com', '*');
  id3.authority; // => 'example.com'
  id3.name; // => '*'
  id3.toString(); // => 'com.example.*'
}

1.2. Migration from Individual Packages #

If you were previously using the individual packages (at_identifier, at_uri, nsid), migration is straightforward:

Remove old packages:

dart pub remove at_identifier at_uri nsid

Add at_primitives:

dart pub add at_primitives

Update imports:

// Old
import 'package:at_identifier/at_identifier.dart';
import 'package:at_uri/at_uri.dart';
import 'package:nsid/nsid.dart';

// New
import 'package:at_primitives/at_identifier.dart';
import 'package:at_primitives/at_uri.dart';
import 'package:at_primitives/nsid.dart';

The API remains exactly the same, so no code changes are required beyond updating the import statements.


This package is part of the atproto.dart ecosystem.

0
likes
150
points
263
downloads

Publisher

verified publisheratprotodart.com

Weekly Downloads

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

Homepage
Repository (GitHub)
View/report issues
Contributing

Topics

#atproto #bluesky #primitives #utilities

Documentation

Documentation
API reference

Funding

Consider supporting this project:

github.com

License

BSD-3-Clause (license)

Dependencies

freezed_annotation, json_annotation

More

Packages that depend on at_primitives