- "moduleDoc": "Deno KV client for [Probitas](https://github.com/jsr-probitas/probitas) scenario testing framework.\n\nThis package provides a Deno KV client designed for integration testing of applications using Deno KV storage.\n\n## Features\n\n- **Key-Value Operations**: get, set, delete with structured keys\n- **Listing**: Iterate over keys by prefix, start, end\n- **Atomic Transactions**: Atomic operations with version checking\n- **Type Safety**: Generic type parameters for stored values\n- **Resource Management**: Implements `AsyncDisposable` for proper cleanup\n\n## Installation\n\n```bash\ndeno add jsr:@probitas/client-deno-kv\n```\n\n## Quick Start\n\n```ts\nimport { createDenoKvClient } from \"@probitas/client-deno-kv\";\n\nconst kv = await createDenoKvClient();\n\n// Set a value\nconst setResult = await kv.set([\"users\", \"1\"], { name: \"Alice\", age: 30 });\nconsole.log(\"Versionstamp:\", setResult.versionstamp);\n\n// Get a value with type\nconst getResult = await kv.get<{ name: string; age: number }>([\"users\", \"1\"]);\nconsole.log(\"User:\", getResult.value);\n\n// List entries by prefix\nconst listResult = await kv.list<{ name: string }>({ prefix: [\"users\"] });\nconsole.log(\"Entries:\", listResult.entries);\n\nawait kv.close();\n```\n\n## Atomic Operations\n\n```ts\nimport { createDenoKvClient } from \"@probitas/client-deno-kv\";\n\nconst kv = await createDenoKvClient();\n\n// Atomic transaction with version check\nconst atomic = kv.atomic();\natomic.check({ key: [\"counter\"], versionstamp: null }); // Only if key doesn't exist\natomic.set([\"counter\"], 1n);\nawait atomic.commit();\n\n// Atomic increment\nconst current = await kv.get<bigint>([\"counter\"]);\nconst atomic2 = kv.atomic();\natomic2.check({ key: [\"counter\"], versionstamp: current.versionstamp });\natomic2.set([\"counter\"], (current.value ?? 0n) + 1n);\nawait atomic2.commit();\n\nawait kv.close();\n```\n\n## Using with `using` Statement\n\n```ts\nimport { createDenoKvClient } from \"@probitas/client-deno-kv\";\n\nawait using kv = await createDenoKvClient();\n\nawait kv.set([\"test\"], \"value\");\nconst result = await kv.get([\"test\"]);\nconsole.log(result.value);\n// Client automatically closed when block exits\n```\n\n## Related Packages\n\n| Package | Description |\n|---------|-------------|\n| [`@probitas/client`](https://jsr.io/@probitas/client) | Core utilities and types |\n| [`@probitas/client-redis`](https://jsr.io/@probitas/client-redis) | Redis client |\n\n## Links\n\n- [GitHub Repository](https://github.com/jsr-probitas/probitas-client)\n- [Probitas Framework](https://github.com/jsr-probitas/probitas)\n- [Deno KV](https://deno.land/manual/runtime/kv)\n",
0 commit comments