Skip to content

a collection of lightweight TypeScript packages for AT Protocol, the protocol powering Bluesky.

License

Notifications You must be signed in to change notification settings

mary-ext/atcute

Repository files navigation

atcute

a collection of lightweight TypeScript packages for AT Protocol, the protocol powering Bluesky, featuring:

looking for more? check out skyware, an additional collection of packages, built on top of atcute.


Packages
Core packages
client: API client library
lex-cli: CLI tool to generate type definitions for the API client
OAuth packages
oauth-browser-client: minimal OAuth browser client implementation
Lexicon definitions
bluemoji: adds blue.moji.* lexicons
bluesky: adds app.bsky.* and chat.bsky.* lexicons
ozone: adds tools.ozone.* lexicons
whitewind: adds com.whtwnd.* lexicons
Utility packages
car: DASL CAR and atproto repository decoder
cbor: DASL dCBOR42 codec
cid: DASL CID codec
crypto: cryptographic utilities
did: did utilities
did-plc: did:plc utilities
multibase: multibase utilities
tid: atproto timestamp identifier codec
varint: protobuf-style LEB128 varint codec
Bluesky-specific packages
bluesky-richtext-builder: builder pattern for Bluesky's rich text facets
bluesky-richtext-parser: parse Bluesky's (extended) rich text syntax
bluesky-richtext-segmenter: segments Bluesky's rich text facets into tokens
bluesky-threading: create Bluesky threads containing multiple posts with one write

contribution guide

this monorepo uses mise to handle versioning, although it doesn't really matter. Node.js LTS is necessary to use the internal-dev-env package for testing the client package with the official PDS distribution, but otherwise you can (and should) use the latest available version.

# Install all the recommended runtimes
mise install

# Runs all the build scripts
pnpm run -r build

# Pull in the latest ATProto/Ozone/Bluesky lexicons, and generate the type declarations
pnpm run pull
pnpm run -r generate

checking package sizes

to observe the size of packages (both install size and bundled size), there is a pkg-size-report tool doing just that. you can also save the package sizes at a given time and inspect the impact of changes to the final bundle size. the tool uses esbuild to produce a minified bundle to get the size of each entrypoint.

Warning

run pnpm run -r build before running the command. otherwise, the command may not run, or give bad measurements.

# See the size of packages.
# If package sizes were saved previously, will also show the diff.
pnpm pkg-size-report

# Save esbuild metafiles and package size information.
pnpm pkg-size-report --save

# Save just esbuild metafiles.
pnpm pkg-size-report --save-meta

# Show only the packages whose size have changed.
pnpm pkg-size-report --compare

# Keep the result bundle produced by esbuild.
# Will be left in /tmp/[...]--[pkgname]--[random]
pnpm pkg-size-report --keep-builds

About

a collection of lightweight TypeScript packages for AT Protocol, the protocol powering Bluesky.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published