{"_id":"@atiproto/edge-resolver-cache","name":"@atiproto/edge-resolver-cache","dist-tags":{"latest":"0.0.1"},"versions":{"0.0.1":{"name":"@atiproto/edge-resolver-cache","version":"0.0.1","description":"Tiered edge cache (Cache API + in-memory) for ATProto DID and handle resolvers on Cloudflare Workers","main":"dist/index.js","module":"dist/index.mjs","types":"dist/index.d.ts","exports":{".":{"source":"./src/index.ts","types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"scripts":{"build":"tsup && tsc --emitDeclarationOnly --declaration","prepack":"npm run build","test":"vitest run"},"license":"MIT","dependencies":{"@atproto-labs/simple-store":"^0.3.0","@atproto-labs/simple-store-memory":"^0.1.4"},"devDependencies":{"@atproto/did":"^0.3.0","@cloudflare/workers-types":"^4.20260411.1","tsup":"^8.5.1","typescript":"^6.0.2","vitest":"^4.1.4"},"gitHead":"b41c46073aea7dacad7f55863567753449c80a31","_id":"@atiproto/edge-resolver-cache@0.0.1","_nodeVersion":"24.14.0","_npmVersion":"11.9.0","dist":{"integrity":"sha512-pBgI5uH79Fppd7mXRHdEk50NJG2lZL3BO8DH6g5X+mCyeRro/EZKx5FENqkrBC5tN3MhvpeQtjy2glJCuOVI1w==","shasum":"6a74d2f610538bed93351efd94bcba53105a91eb","tarball":"https://registry.npmjs.org/@atiproto/edge-resolver-cache/-/edge-resolver-cache-0.0.1.tgz","fileCount":9,"unpackedSize":25542,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQCGZqNWILVEXS2U5ovnrXDhfMDrS5R2f7CmymJz/41zHAIhAOb9SSI8nqVL23WuC2SY1Ezr+fjnDCGrJAtE1/d0fEXX"}]},"_npmUser":{"name":"kayakyakr","email":"kayakyakr@gmail.com"},"directories":{},"maintainers":[{"name":"kayakyakr","email":"kayakyakr@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/edge-resolver-cache_0.0.1_1776025873533_0.18445061722142486"},"_hasShrinkwrap":false}},"time":{"created":"2026-04-12T20:31:13.394Z","0.0.1":"2026-04-12T20:31:13.714Z","modified":"2026-04-12T20:31:13.965Z"},"maintainers":[{"name":"kayakyakr","email":"kayakyakr@gmail.com"}],"description":"Tiered edge cache (Cache API + in-memory) for ATProto DID and handle resolvers on Cloudflare Workers","license":"MIT","readme":"# @atiproto/edge-resolver-cache\n\nTiered edge cache (Cloudflare Cache API + in-memory) for ATProto DID and handle resolvers on Cloudflare Workers.\n\n[![npm](https://img.shields.io/npm/v/@atiproto/edge-resolver-cache)](https://www.npmjs.com/package/@atiproto/edge-resolver-cache)\n\n- [Documentation](https://atiproto.com/docs/edge-oauth)\n- [GitHub](https://github.com/Yakrware/atiproto)\n\n## Installation\n\n```bash\nnpm install @atiproto/edge-resolver-cache\n```\n\n## Usage\n\nUse with `@atiproto/edge-oauth-client` to add resolver caching:\n\n```typescript\nimport { EdgeOAuthClient } from \"@atiproto/edge-oauth-client\";\nimport { createDidCache, createHandleCache } from \"@atiproto/edge-resolver-cache\";\n\nconst client = new EdgeOAuthClient({\n  clientMetadata: { /* ... */ },\n  stateStore: myStateStore,\n  sessionStore: mySessionStore,\n  didCache: createDidCache(),\n  handleCache: createHandleCache(),\n});\n```\n\n### Cache tiers\n\nEach factory returns a `SimpleStore` with two tiers:\n\n| Tier | Backend | Latency | Lifetime | Cost |\n|------|---------|---------|----------|------|\n| L1 | In-memory (`SimpleStoreMemory`) | ~0ms | Worker isolate lifetime | Free |\n| L2 | Cloudflare Cache API | <1ms | Regional, survives isolate restarts | Free |\n\n### Default TTLs\n\n| Cache | L1 (memory) | L2 (Cache API) |\n|-------|-------------|----------------|\n| DID documents | 1 hour, ~50MB max | 24 hours |\n| Handle resolution | 10 minutes, 1000 entries max | 1 hour |\n\n### Using individual components\n\n```typescript\nimport { CacheApiStore, TieredStore } from \"@atiproto/edge-resolver-cache\";\nimport { SimpleStoreMemory } from \"@atproto-labs/simple-store-memory\";\n\n// Cache API store only (no memory tier)\nconst cacheOnly = new CacheApiStore({\n  prefix: \"my-prefix:\",\n  ttlSeconds: 3600,\n  cacheName: \"my-cache\",\n});\n\n// Custom tiered configuration\nconst tiered = new TieredStore(\n  new SimpleStoreMemory({ max: 500, ttl: 300_000 }),\n  new CacheApiStore({ prefix: \"custom:\", ttlSeconds: 7200 }),\n);\n```\n\n## License\n\nMIT\n","readmeFilename":"README.md","_rev":"1-0e38762e16c605324e529cff2109df30"}