a collection of lightweight TypeScript packages for AT Protocol, the protocol powering Bluesky
at trunk 107 lines 7.5 kB view raw view rendered
1# atcute 2 3lightweight TypeScript packages for [AT Protocol](https://atproto.com), the protocol powering 4Bluesky. 5 6## quick start 7 8```sh 9npm install @atcute/client @atcute/bluesky 10``` 11 12```ts 13import { Client, simpleFetchHandler } from '@atcute/client'; 14import type {} from '@atcute/bluesky'; 15 16const client = new Client({ 17 handler: simpleFetchHandler({ service: 'https://public.api.bsky.app' }), 18}); 19 20const { data } = await client.get('app.bsky.actor.getProfile', { 21 params: { actor: 'bsky.app' }, 22}); 23 24console.log(data.displayName); 25// -> Bluesky 26``` 27 28for authenticated requests, see the [client docs](./packages/clients/client) or use the 29[OAuth browser client](./packages/oauth/browser-client) for web apps. 30 31## packages 32 33| Packages | 34| ----------------------------------------------------------------------------------------------------------- | 35| **Client packages** | 36| [`client`](./packages/clients/client): XRPC HTTP client | 37| [`firehose`](./packages/clients/firehose): XRPC subscription client | 38| [`jetstream`](./packages/clients/jetstream): Jetstream WebSocket client | 39| [`tap`](./packages/clients/tap): Tap WebSocket client | 40| [`cache`](./packages/clients/cache): normalized cache store | 41| **Server packages** | 42| [`xrpc-server`](./packages/servers/xrpc-server): XRPC web framework | 43| [`xrpc-server-bun`](./packages/servers/xrpc-server-bun): Bun WebSocket adapter | 44| [`xrpc-server-cloudflare`](./packages/servers/xrpc-server-cloudflare): Cloudflare Workers WebSocket adapter | 45| [`xrpc-server-deno`](./packages/servers/xrpc-server-deno): Deno WebSocket adapter | 46| [`xrpc-server-node`](./packages/servers/xrpc-server-node): Node.js WebSocket adapter | 47| **OAuth packages** | 48| [`oauth-browser-client`](./packages/oauth/browser-client): minimal OAuth client for SPAs | 49| [`oauth-node-client`](./packages/oauth/node-client): OAuth client for Node.js | 50| **Lexicon packages** | 51| [`lex-cli`](./packages/lexicons/lex-cli): generate TypeScript from lexicon schemas | 52| [`lexicon-doc`](./packages/lexicons/lexicon-doc): parse and author lexicon documents | 53| [`lexicon-resolver`](./packages/lexicons/lexicon-resolver): resolve lexicons from the network | 54| [`lexicon-resolver-node`](./packages/lexicons/lexicon-resolver-node): Node.js lexicon resolvers | 55| [`lexicons`](./packages/lexicons/lexicons): core types and schema validation | 56| **Lexicon definition packages** | 57| [`atproto`](./packages/definitions/atproto): `com.atproto.*` definitions | 58| [`bluemoji`](./packages/definitions/bluemoji): `blue.moji.*` definitions | 59| [`bluesky`](./packages/definitions/bluesky): `app.bsky.*`, `chat.bsky.*` definitions | 60| [`frontpage`](./packages/definitions/frontpage): `fyi.unravel.frontpage.*` definitions | 61| [`leaflet`](./packages/definitions/leaflet): `pub.leaflet.*` definitions | 62| [`lexicon-community`](./packages/definitions/lexicon-community): `community.lexicon.*` definitions | 63| [`microcosm`](./packages/definitions/microcosm): `blue.microcosm.*`, `com.bad-example.*` definitions | 64| [`ozone`](./packages/definitions/ozone): `tools.ozone.*` definitions | 65| [`pckt`](./packages/definitions/pckt): `blog.pckt.*` definitions | 66| [`standard-site`](./packages/definitions/standard-site): `site.standard.*` definitions | 67| [`tangled`](./packages/definitions/tangled): `sh.tangled.*` definitions | 68| [`whitewind`](./packages/definitions/whitewind): `com.whtwnd.*` definitions | 69| **Identity packages** | 70| [`identity`](./packages/identity/identity): handle, DID and DID document types | 71| [`identity-resolver`](./packages/identity/identity-resolver): handle and DID document resolution | 72| [`identity-resolver-node`](./packages/identity/identity-resolver-node): Node.js DNS-based handle resolver | 73| [`did-plc`](./packages/identity/did-plc): did:plc operation validation | 74| **Utility packages** | 75| [`car`](./packages/utilities/car): CAR archive codec | 76| [`cbor`](./packages/utilities/cbor): deterministic CBOR codec | 77| [`cid`](./packages/utilities/cid): content identifier codec | 78| [`crypto`](./packages/utilities/crypto): signing and verification | 79| [`mst`](./packages/utilities/mst): merkle search tree utilities | 80| [`multibase`](./packages/utilities/multibase): base32/base64 encoding | 81| [`repo`](./packages/utilities/repo): repository export reader | 82| [`tid`](./packages/utilities/tid): timestamp identifier codec | 83| [`varint`](./packages/utilities/varint): LEB128 varint codec | 84| **Bluesky-specific packages** | 85| [`bluesky-moderation`](./packages/bluesky/moderation): content moderation interpretation | 86| [`bluesky-richtext-builder`](./packages/bluesky/richtext-builder): rich text facet builder | 87| [`bluesky-richtext-parser`](./packages/bluesky/richtext-parser): parse rich text syntax | 88| [`bluesky-richtext-segmenter`](./packages/bluesky/richtext-segmenter): segment text by facets | 89| [`bluesky-search-parser`](./packages/bluesky/search-parser): search query tokenizer | 90| [`bluesky-threading`](./packages/bluesky/threading): atomic thread publishing | 91 92## contributing 93 94this monorepo uses [mise](https://mise.jdx.dev) for runtime versioning and pnpm for package 95management. 96 97```sh 98# install runtimes 99mise install 100 101# build all packages 102pnpm run -r build 103 104# pull latest lexicons and regenerate definitions 105pnpm run -r pull 106pnpm run -r generate 107```