TypeScript monorepo for Bluesky packages published under the @bsky npm organization.
packages/*— publishable libraries (node-only and isomorphic)services/*— private service entrypoints (not published)tsconfig/*— shared TypeScript presets (node,isomorphic,tests)
Requires Node.js >=22.12 and pnpm 11 (enforced via devEngines).
pnpm install
pnpm build # tsc project builds, topological
pnpm typecheck # tsc --build tsconfig.json
pnpm lint # eslint
pnpm format # prettier --write
pnpm test # vitest
pnpm verify # format:check + lint + typecheck + test (what CI runs)- ESM-only:
"type": "module", single-entryexportswithtypes+defaultconditions - Built with
tsc --build tsconfig.build.jsonintodist/ tsconfig.jsonis references-only, pointing attsconfig.build.json(andtsconfig.tests.jsonif present), which extend a preset fromtsconfig/- Tests live in
tests/and run with vitest via a per-packagevitest.config.ts - New packages must be added to the root
tsconfig.jsonreferenceslist
Versioning and publishing are handled by changesets. Every PR that changes a published package needs a changeset (pnpm changeset); merges to main open/refresh a "Version packages" PR, and merging that publishes to npm with provenance.
This project is dual-licensed under MIT and Apache 2.0 terms:
- MIT license (LICENSE-MIT.txt or http://opensource.org/licenses/MIT)
- Apache License, Version 2.0, (LICENSE-APACHE.txt or http://www.apache.org/licenses/LICENSE-2.0)
Downstream projects and end users may chose either license individually, or both together, at their discretion. The motivation for this dual-licensing is the additional software patent assurance provided by Apache 2.0.
Bluesky Social PBC has committed to a software patent non-aggression pledge. For details see the original announcement.