openacid
packages ~ @openacid on npm

5 packages. 20 versions.

The four primitives plus four adapters, all published under one scope. Every package ships ESM + CJS dual builds and full .d.ts typings. MIT-licensed.

¶ release matrix
0.1.00.1.10.1.20.2.0
0.1.0 — first publish
0.1.1 — Error.cause chain · saga meta
0.1.2 — getCompositionLabel(fn)
0.2.0 — recipientWhitelist · withTimeout
corev0.2.0

@openacid/acid

The four primitives — saga, invariant, idempotent, receipted — plus shared types, errors, conformance suite, EIP-712 receipt encoding, composition introspection, chain-aware broadcast helper.

npm i @openacid/acid
exports
· saga, invariant, idempotent, receipted
· verifyReceipt, receiptDigest, hashCanonical
· noOrphanAllowances, balanceWithinBound, gasUnderCap, slippageBelow, recipientWhitelist
· withTimeout, TimeoutError
· inspectComposition, getCompositionLabel, checkComposition
· chainAwareBroadcast, inspectInFlight
· storageConformanceCases
versions: 0.1.0 · 0.1.1 · 0.1.2 · 0.2.0
npm ↗packages/core
in-memoryv0.2.0

@openacid/adapter-memory

StorageAdapter with atomic compare-and-swap; MemorySigner with real secp256k1 signing. For tests and the dry-run demo path. Not for production.

npm i @openacid/adapter-memory
exports
· MemoryStorageAdapter
· MemorySigner
versions: 0.1.0 · 0.1.1 · 0.1.2 · 0.2.0
npm ↗packages/adapter-memory
viem · EVMv0.2.0

@openacid/adapter-viem

ChainAdapter wrapping a viem PublicClient (getTxByHash, getTxByNonce, waitForFinality). ViemSigner for production wallets.

npm i @openacid/adapter-viem
exports
· ViemChainAdapter
· ViemSigner
versions: 0.1.0 · 0.1.1 · 0.1.2 · 0.2.0
npm ↗packages/adapter-viem
0G durabilityv0.2.0

@openacid/adapter-0g-storage

Write-through StorageAdapter on 0G blob storage. Receipts persist as content-addressed blobs; pointers live in-process for hot reads. Live conformance suite passes 10/10 against Galileo testnet.

npm i @openacid/adapter-0g-storage
exports
· ZeroGStorageAdapter
versions: 0.1.0 · 0.1.1 · 0.1.2 · 0.2.0
npm ↗packages/adapter-0g-storage
ENS mirrorv0.2.0

@openacid/adapter-ens

Mirrors receipt CIDs to ENS text records on every emitted receipt. Wires into receipted() via onReceipt. Any third party can resolve openacid.eth/receipt.latest with no library install.

npm i @openacid/adapter-ens
exports
· EnsReceiptMirror
versions: 0.1.0 · 0.1.1 · 0.1.2 · 0.2.0
npm ↗packages/adapter-ens
install everything

One command for the full kit.

Use this when you want the four primitives plus every adapter ready in one go. In production, prefer installing only the adapters you actually wire.

all 5 packages
pnpm add @openacid/acid @openacid/adapter-memory @openacid/adapter-viem @openacid/adapter-0g-storage @openacid/adapter-ens
what changed in 0.2.0

Newest release.

  • recipientWhitelist — built-in invariant that flags any tx whose recipient is not in your allowlist. Critical-severity rejection by default.
  • withTimeout — top-level wrapper that races the wrapped fn against a hard deadline. Throws TimeoutError with the configured label.
  • See the recipes for both.

Earlier releases

  • 0.1.2getCompositionLabel(fn) renders a chain like receipted→invariant→idempotent→saga.
  • 0.1.1Error.cause propagation; saga errors carry { sagaId, attempt } meta.
  • 0.1.0 — first publish across all five packages.