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

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

quick start

npm install @atcute/client @atcute/bluesky
import { Client, simpleFetchHandler } from '@atcute/client';
import type {} from '@atcute/bluesky';

const client = new Client({
	handler: simpleFetchHandler({ service: 'https://public.api.bsky.app' }),
});

const { data } = await client.get('app.bsky.actor.getProfile', {
	params: { actor: 'bsky.app' },
});

console.log(data.displayName);
// -> Bluesky

for authenticated requests, see the client docs or use the OAuth browser client for web apps.

packages

Packages
Client packages
client: XRPC HTTP client
firehose: XRPC subscription client
jetstream: Jetstream WebSocket client
cache: normalized cache store
Server packages
xrpc-server: XRPC web framework
xrpc-server-bun: Bun WebSocket adapter
xrpc-server-cloudflare: Cloudflare Workers WebSocket adapter
xrpc-server-deno: Deno WebSocket adapter
xrpc-server-node: Node.js WebSocket adapter
OAuth packages
oauth-browser-client: minimal OAuth client for SPAs
Lexicon packages
lex-cli: generate TypeScript from lexicon schemas
lexicon-doc: parse and author lexicon documents
lexicon-resolver: resolve lexicons from the network
lexicons: core types and schema validation
Lexicon definition packages
atproto: com.atproto.* definitions
bluemoji: blue.moji.* definitions
bluesky: app.bsky.*, chat.bsky.* definitions
frontpage: fyi.unravel.frontpage.* definitions
leaflet: pub.leaflet.* definitions
lexicon-community: community.lexicon.* definitions
microcosm: blue.microcosm.*, com.bad-example.* definitions
ozone: tools.ozone.* definitions
pckt: blog.pckt.* definitions
tangled: sh.tangled.* definitions
whitewind: com.whtwnd.* definitions
Identity packages
identity: handle, DID and DID document types
identity-resolver: handle and DID document resolution
identity-resolver-node: Node.js DNS-based handle resolver
did-plc: did:plc operation validation
Utility packages
car: CAR archive codec
cbor: deterministic CBOR codec
cid: content identifier codec
crypto: signing and verification
mst: merkle search tree utilities
multibase: base32/base64 encoding
repo: repository export reader
tid: timestamp identifier codec
varint: LEB128 varint codec
Bluesky-specific packages
bluesky-moderation: content moderation interpretation
bluesky-richtext-builder: rich text facet builder
bluesky-richtext-parser: parse rich text syntax
bluesky-richtext-segmenter: segment text by facets
bluesky-search-parser: search query tokenizer
bluesky-threading: atomic thread publishing

contributing

this monorepo uses mise for runtime versioning and pnpm for package management.

# install runtimes
mise install

# build all packages
pnpm run -r build

# pull latest lexicons and regenerate definitions
pnpm run -r pull
pnpm run -r generate

package size reporting

check bundle sizes with the pkg-size-report tool:

Warning

run pnpm run -r build first, otherwise measurements may be inaccurate.

pnpm pkg-size-report           # show sizes (and diff if previously saved)
pnpm pkg-size-report --save    # save current sizes for comparison
pnpm pkg-size-report --compare # show only changed packages

About

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

Topics

Resources

License

Stars

Watchers

Forks

Sponsor this project

  •  

Packages

No packages published

Contributors 10

Languages