Durable operation tooling for Cloudflare Workers and SQLite-backed Durable Objects.
The documentation site targets durability.shirei.dev, with shirei.dev redirecting there. It is a deployable Cloudflare Worker, with a getting-started guide, a separate page and implementation walkthrough for every primitive, illustrated application compositions, and searchable API references.
pnpm install
pnpm --filter durability-docs devTo build and deploy it, see docs/README.md.
| Package | Description |
|---|---|
durability |
Composable Durability operations, DurabilityAlarms, DurabilityFanout, DurabilityLog, DurabilityRouting, and DurabilitySocket browser sync for application-owned SQLite-backed Durable Objects. |
@durability/storage |
Shared migration types for Durable Object storage. |
@durability/transforms |
Typed caller and callee transforms for Cloudflare RPC, including a Vite plugin. |
@durability/lint |
Oxlint rules for durability migrations and alarm delegation. |
Each package has its own API documentation. Complete example Workers for every primitive live in examples/; they are type-checked as part of the validation suite.
This repository uses pnpm. Libraries require Node.js 22 or newer; building the docs site requires Node.js 22.23.4 or newer.
pnpm install
pnpm checkThe validation suite formats, lints, builds, type-checks, tests, and validates the publishable package manifests. Run an individual task with a workspace filter when needed:
pnpm --filter durability test
pnpm --filter @durability/transforms testThe Worker integration tests run locally through @cloudflare/vitest-pool-workers; they do not require Cloudflare credentials.
Package versions and release notes are managed with Changesets. Add a changeset to every pull request that changes a published package:
pnpm changesetGitHub Actions creates and updates a version pull request. After that pull request is merged, the release workflow publishes the new package versions from main through npm trusted publishing and records provenance for each release.
Publishing requires a trusted publisher for each npm package that is restricted to the release.yaml workflow and the npm GitHub environment.