{"_id":"@barter.game/bank-core","_rev":"4-48bff70e3ea048af8c84a28a606e4f23","name":"@barter.game/bank-core","dist-tags":{"latest":"0.0.4"},"versions":{"0.0.1":{"name":"@barter.game/bank-core","version":"0.0.1","keywords":["mutual-credit","federated","ledger","bank","barter"],"license":"MIT","_id":"@barter.game/bank-core@0.0.1","maintainers":[{"name":"ddegtyarev","email":"ddegtyarev@gmail.com"}],"homepage":"https://barter.game","bugs":{"url":"https://github.com/ai-1st/barter.game/issues"},"dist":{"shasum":"5c8d2cd8d881500a8fd86a39dc97a040965bc663","tarball":"https://registry.npmjs.org/@barter.game/bank-core/-/bank-core-0.0.1.tgz","fileCount":23,"integrity":"sha512-Hs1oT+HpQhbzJ1S93y297ewYfj9RFfqtcZfE+kv1HenA4zDUT0by92XJ88Jc8K+JA0VV8AjUorj5PuY1BM/4pA==","signatures":[{"sig":"MEQCIEnvVFF+uBwD3qZIDN34gKKjnhvhRR7aYxvNKLQytSQvAiBCDeYXkJEl1ldIuLxL32R77tSDFi5v4T5T6z+uwl05Ww==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":196580},"main":"./src/index.ts","type":"module","types":"./src/index.ts","exports":{".":"./src/index.ts"},"gitHead":"5b1fb855ba8c5717dd63eb42877a34c72529f081","scripts":{"build":"echo 'no build: consumed as TS source'","typecheck":"tsc -p tsconfig.json --noEmit","prepublishOnly":"tsc -p tsconfig.json --noEmit"},"_npmUser":{"name":"ddegtyarev","email":"ddegtyarev@gmail.com"},"repository":{"url":"git+https://github.com/ai-1st/barter.game.git","type":"git","directory":"packages/bank-core"},"_npmVersion":"11.7.0","description":"Runtime-agnostic bank engine for the barter.game federated mutual-credit ledger (routing, RPC, advance engine, storage seams). Consumed as TypeScript source; no build step (same policy as @barter.game/protocol). Web-standard APIs only; the host injects st","directories":{},"sideEffects":false,"_nodeVersion":"25.2.1","dependencies":{"@barter.game/protocol":"^0.0.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.6.0"},"_npmOperationalInternal":{"tmp":"tmp/bank-core_0.0.1_1787403022576_0.083726873095745","host":"s3://npm-registry-packages-npm-production"}},"0.0.2":{"name":"@barter.game/bank-core","version":"0.0.2","keywords":["mutual-credit","federated","ledger","bank","barter"],"license":"MIT","_id":"@barter.game/bank-core@0.0.2","maintainers":[{"name":"ddegtyarev","email":"ddegtyarev@gmail.com"}],"homepage":"https://barter.game","bugs":{"url":"https://github.com/ai-1st/barter.game/issues"},"dist":{"shasum":"dab0137913dd047d3445a9b100ae696aab8dd231","tarball":"https://registry.npmjs.org/@barter.game/bank-core/-/bank-core-0.0.2.tgz","fileCount":24,"integrity":"sha512-iLs6CD/YgI0wTf7yzrJTdIsggDVrDoU4ig/CkyuUyfhbh72SOf/2CQDc9H5h53JA85qyr8m/r45dzCbK7kTMug==","signatures":[{"sig":"MEUCIQD/mqJmpBo5FX3RZtIqscsgfKD8G/8GIC3aUvjd7G2G/gIgK0zIInx2OTNNGEU9KIKBYauKGlrcYNZyGEKysUCYetI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":212039},"main":"./src/index.ts","type":"module","types":"./src/index.ts","exports":{".":"./src/index.ts","./testkit":"./src/testkit.ts"},"gitHead":"5b1fb855ba8c5717dd63eb42877a34c72529f081","scripts":{"build":"echo 'no build: consumed as TS source'","typecheck":"tsc -p tsconfig.json --noEmit","prepublishOnly":"tsc -p tsconfig.json --noEmit"},"_npmUser":{"name":"ddegtyarev","email":"ddegtyarev@gmail.com"},"repository":{"url":"git+https://github.com/ai-1st/barter.game.git","type":"git","directory":"packages/bank-core"},"_npmVersion":"11.7.0","description":"Runtime-agnostic bank engine for the barter.game federated mutual-credit ledger (routing, RPC, advance engine, storage seams). Consumed as TypeScript source; no build step (same policy as @barter.game/protocol). Web-standard APIs only; the host injects st","directories":{},"sideEffects":false,"_nodeVersion":"25.2.1","dependencies":{"@barter.game/protocol":"^0.0.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.6.0"},"_npmOperationalInternal":{"tmp":"tmp/bank-core_0.0.2_1787423495831_0.37721051608393763","host":"s3://npm-registry-packages-npm-production"}},"0.0.3":{"name":"@barter.game/bank-core","version":"0.0.3","keywords":["mutual-credit","federated","ledger","bank","barter"],"license":"MIT","_id":"@barter.game/bank-core@0.0.3","maintainers":[{"name":"ddegtyarev","email":"ddegtyarev@gmail.com"}],"homepage":"https://docs.barter.game","bugs":{"url":"https://github.com/ai-1st/barter.game/issues"},"dist":{"shasum":"07dd2b55de5c6eecccfb51f2e19fb752ca710edc","tarball":"https://registry.npmjs.org/@barter.game/bank-core/-/bank-core-0.0.3.tgz","fileCount":24,"integrity":"sha512-IPVcq5gKG+RLR4py7doacWnrRuFGCiCZz3/ENmFDKHeZTwuGm5o/AtECDrCy0UwAj1YRF1lxVdxnxKVjlOARgA==","signatures":[{"sig":"MEQCIE/ItOPtNpp7kZVqjarfdWstlOK8Q4k7SdxYzoKsmdVEAiB7jjjPBME5yY3ucbYaTv4t1cTuQ40vwWgChV+lF0rcUw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":225504},"main":"./src/index.ts","type":"module","types":"./src/index.ts","exports":{".":"./src/index.ts","./testkit":"./src/testkit.ts"},"gitHead":"04aad33272ef71d3927a7bad2851547412db673d","scripts":{"build":"echo 'no build: consumed as TS source'","typecheck":"tsc -p tsconfig.json --noEmit","prepublishOnly":"tsc -p tsconfig.json --noEmit"},"_npmUser":{"name":"ddegtyarev","email":"ddegtyarev@gmail.com"},"repository":{"url":"git+https://github.com/ai-1st/barter.game.git","type":"git","directory":"packages/bank-core"},"_npmVersion":"11.7.0","description":"Runtime-agnostic bank engine for the barter.game federated mutual-credit ledger (routing, RPC, advance engine, storage seams). Consumed as TypeScript source; no build step (same policy as @barter.game/protocol). Web-standard APIs only; the host injects st","directories":{},"sideEffects":false,"_nodeVersion":"25.2.1","dependencies":{"@barter.game/protocol":"^0.0.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.6.0"},"_npmOperationalInternal":{"tmp":"tmp/bank-core_0.0.3_1787813936853_0.8656351095888604","host":"s3://npm-registry-packages-npm-production"}},"0.0.4":{"name":"@barter.game/bank-core","version":"0.0.4","license":"MIT","type":"module","description":"Runtime-agnostic bank engine for the barter.game federated mutual-credit ledger (routing, RPC, advance engine, storage seams). Consumed as TypeScript source; no build step (same policy as @barter.game/protocol). Web-standard APIs only; the host injects st","keywords":["mutual-credit","federated","ledger","bank","barter"],"homepage":"https://docs.barter.game","repository":{"type":"git","url":"git+https://github.com/Mitek99/barter.game.git","directory":"packages/bank-core"},"bugs":{"url":"https://github.com/Mitek99/barter.game/issues"},"main":"./src/index.ts","types":"./src/index.ts","exports":{".":"./src/index.ts","./testkit":"./src/testkit.ts"},"sideEffects":false,"publishConfig":{"access":"public"},"scripts":{"build":"echo 'no build: consumed as TS source'","typecheck":"tsc -p tsconfig.json --noEmit","prepublishOnly":"tsc -p tsconfig.json --noEmit"},"dependencies":{"@barter.game/protocol":"^0.0.1"},"devDependencies":{"typescript":"^5.6.0"},"gitHead":"974da53924a9cf67acc603e91ce2a7f749c544c5","_id":"@barter.game/bank-core@0.0.4","_nodeVersion":"25.2.1","_npmVersion":"11.7.0","dist":{"integrity":"sha512-nNH7qUKZLN9rinQyn2SxuyatbQNw+y85PNj1FGw3uWPokpuCNAW5Af31IA0fY7cuG4Xy5ddXu+gKzkSSubpfzA==","shasum":"948b7a87473622c43c4862dc585bf4c1f4b66ce2","tarball":"https://registry.npmjs.org/@barter.game/bank-core/-/bank-core-0.0.4.tgz","fileCount":24,"unpackedSize":226669,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQD5dH1iLVqL3QQg9pIJD1v5U2khqHnjI7ccrLlPazUt5wIhAKWO9WfZen0RTgK4eVASnazS7s8w8IyCPvxaDpethN6t"}]},"_npmUser":{"name":"ddegtyarev","email":"ddegtyarev@gmail.com"},"directories":{},"maintainers":[{"name":"ddegtyarev","email":"ddegtyarev@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/bank-core_0.0.4_1788711411234_0.8860101326169907"},"_hasShrinkwrap":false}},"time":{"created":"2026-08-22T12:50:22.480Z","modified":"2026-09-06T16:16:51.590Z","0.0.1":"2026-08-22T12:50:22.704Z","0.0.2":"2026-08-22T18:31:35.987Z","0.0.3":"2026-08-27T06:58:56.993Z","0.0.4":"2026-09-06T16:16:51.377Z"},"bugs":{"url":"https://github.com/Mitek99/barter.game/issues"},"license":"MIT","homepage":"https://docs.barter.game","keywords":["mutual-credit","federated","ledger","bank","barter"],"repository":{"type":"git","url":"git+https://github.com/Mitek99/barter.game.git","directory":"packages/bank-core"},"description":"Runtime-agnostic bank engine for the barter.game federated mutual-credit ledger (routing, RPC, advance engine, storage seams). Consumed as TypeScript source; no build step (same policy as @barter.game/protocol). Web-standard APIs only; the host injects st","maintainers":[{"name":"ddegtyarev","email":"ddegtyarev@gmail.com"}],"readme":"# @barter.game/bank-core — the shared bank engine\n\nEverything a barter.game v1 bank does, independent of where it runs: HTTP\nrouting ([`src/router.ts`](./src/router.ts)), the signed JSON-RPC surface\n([`src/rpc.ts`](./src/rpc.ts), [`src/registry.ts`](./src/registry.ts),\n[`src/handlers/`](./src/handlers/)), the deal advance engine\n([`src/advance.ts`](./src/advance.ts)), peer calls ([`src/peer.ts`](./src/peer.ts)),\nthe `/ui/*` custom API + Barter Links + media vault ([`src/ui.ts`](./src/ui.ts)),\nand the storage layer ([`src/db.ts`](./src/db.ts)).\n\nLike [`@barter.game/protocol`](../protocol/), this package is consumed as\nTypeScript source — no build step. It is written against **web-standard APIs\nonly** (Request/Response, fetch, crypto.subtle, TextEncoder); no Node or DOM\nglobals. The host that wires it up and ships it is\n[`apps/bank-aws`](../../apps/bank-aws/) — AWS Lambda behind CloudFront, plus a\nlocal Node server (`bun run local`) that runs the same engine for development\nand the e2e suites.\n\n## The seams\n\nA host wires three small interfaces into `createBank()` and forwards each\nincoming `Request` to `route(request, banks)`:\n\n| Interface | Contract | Local host (`local-server.ts`) | AWS Lambda |\n|---|---|---|---|\n| `KvStore` ([`src/kv.ts`](./src/kv.ts)) | The minimal atomic KV contract the bank relies on: `get`/`set(expireIn?)`/`list(prefix, start?, limit?)`/`atomic().check().set().delete().commit()` with versionstamp optimistic concurrency | `MemoryKv` (or DynamoDB Local) | DynamoDB single table (conditional writes + `TransactWriteItems`, TTL attribute) |\n| `MediaStore` ([`src/media.ts`](./src/media.ts)) | Content-addressed immutable blobs, namespaced by bank pubkey | `KvMediaStore` (48 KiB KV chunks) | S3 objects |\n| `AssetReader` ([`src/types.ts`](./src/types.ts)) | Read-only access to the bundled [`apps/web`](../../apps/web/) client | filesystem (`fsAssets`) | bundled files / S3 |\n\n`MemoryKv` (in [`src/kv.ts`](./src/kv.ts)) is a faithful in-memory `KvStore`\nfor tests and local runs. The contract suite every implementation must pass —\nincluding the 64 KiB value cap that keeps every backend accepting the same\nwrites — is exported as a **runner-agnostic testkit** from\n[`src/testkit.ts`](./src/testkit.ts), so any host can verify its own backend\nagainst the exact semantics the ledger depends on:\n\n```ts\nimport { test, describe } from 'node:test';\nimport { kvContractTests } from '@barter.game/bank-core/testkit';\n\ndescribe('MyKv', () => {\n  for (const t of kvContractTests(() => new MyKv())) test(t.name, t.run);\n});\n```\n\nThe suite returns named async tests that throw on failure — wrap them in\nwhatever runner you use. [`apps/bank-aws/test/kv-contract.test.ts`](../../apps/bank-aws/test/kv-contract.test.ts)\nruns it against `MemoryKv` always and against DynamoDB Local when\n`DDB_ENDPOINT` is set.\n\nStorage-semantics rules an implementation must honor (the ledger depends on\nthem): versionstamp checks are the only concurrency control; all ops in one\n`atomic()` commit together or not at all; an expired `expireIn` key must read\nas absent; `list` iterates in ascending component order and excludes the\nexact prefix key.\n\n## Invariants\n\nThe regression net is the ten e2e suites in\n[`apps/bank-aws/e2e/e2e-*.ts`](../../apps/bank-aws/README.md) — wire-protocol\nclients that run under Bun against any host via `E2E_BASE_URL`. Cross-runtime\nhash/signature parity is pinned by [`../protocol`](../protocol/)'s golden\nvectors and its web-mirror test; the bank and the browser client must agree\nbyte-for-byte on canonical JSON or they will split-brain on the same deal.\n","readmeFilename":"README.md"}