@vercel/kv2 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (166) hide show
  1. package/README.md +87 -0
  2. package/SKILL.md +65 -0
  3. package/dist/blob-format.d.ts +35 -0
  4. package/dist/blob-format.d.ts.map +1 -0
  5. package/dist/blob-format.js +91 -0
  6. package/dist/blob-format.js.map +1 -0
  7. package/dist/blob-store.d.ts +11 -0
  8. package/dist/blob-store.d.ts.map +1 -0
  9. package/dist/blob-store.js +32 -0
  10. package/dist/blob-store.js.map +1 -0
  11. package/dist/cache.d.ts +33 -0
  12. package/dist/cache.d.ts.map +1 -0
  13. package/dist/cache.js +146 -0
  14. package/dist/cache.js.map +1 -0
  15. package/dist/cached-kv.d.ts +63 -0
  16. package/dist/cached-kv.d.ts.map +1 -0
  17. package/dist/cached-kv.js +891 -0
  18. package/dist/cached-kv.js.map +1 -0
  19. package/dist/cli.d.ts +3 -0
  20. package/dist/cli.d.ts.map +1 -0
  21. package/dist/cli.js +342 -0
  22. package/dist/cli.js.map +1 -0
  23. package/dist/create-kv.d.ts +86 -0
  24. package/dist/create-kv.d.ts.map +1 -0
  25. package/dist/create-kv.js +125 -0
  26. package/dist/create-kv.js.map +1 -0
  27. package/dist/disk-cache.d.ts.map +1 -0
  28. package/dist/disk-cache.js.map +1 -0
  29. package/dist/index.d.ts +16 -0
  30. package/dist/index.d.ts.map +1 -0
  31. package/dist/index.js +13 -0
  32. package/dist/index.js.map +1 -0
  33. package/dist/indexed-kv.d.ts +44 -0
  34. package/dist/indexed-kv.d.ts.map +1 -0
  35. package/dist/indexed-kv.js +373 -0
  36. package/dist/indexed-kv.js.map +1 -0
  37. package/dist/manifest-log.d.ts +57 -0
  38. package/dist/manifest-log.d.ts.map +1 -0
  39. package/dist/manifest-log.js +128 -0
  40. package/dist/manifest-log.js.map +1 -0
  41. package/dist/memory-cache.d.ts +22 -0
  42. package/dist/memory-cache.d.ts.map +1 -0
  43. package/dist/memory-cache.js +90 -0
  44. package/dist/memory-cache.js.map +1 -0
  45. package/dist/proxy-cache.d.ts +40 -0
  46. package/dist/proxy-cache.d.ts.map +1 -0
  47. package/dist/proxy-cache.js +124 -0
  48. package/dist/proxy-cache.js.map +1 -0
  49. package/dist/readme.test.d.ts +9 -0
  50. package/dist/readme.test.d.ts.map +1 -0
  51. package/dist/readme.test.js +285 -0
  52. package/dist/readme.test.js.map +1 -0
  53. package/dist/schema/define-schema.d.ts +35 -0
  54. package/dist/schema/define-schema.d.ts.map +1 -0
  55. package/dist/schema/define-schema.js +70 -0
  56. package/dist/schema/define-schema.js.map +1 -0
  57. package/dist/schema/index.d.ts +4 -0
  58. package/dist/schema/index.d.ts.map +1 -0
  59. package/dist/schema/index.js +5 -0
  60. package/dist/schema/index.js.map +1 -0
  61. package/dist/schema/key-builders.d.ts +40 -0
  62. package/dist/schema/key-builders.d.ts.map +1 -0
  63. package/dist/schema/key-builders.js +124 -0
  64. package/dist/schema/key-builders.js.map +1 -0
  65. package/dist/schema/schema-kv.d.ts +48 -0
  66. package/dist/schema/schema-kv.d.ts.map +1 -0
  67. package/dist/schema/schema-kv.js +96 -0
  68. package/dist/schema/schema-kv.js.map +1 -0
  69. package/dist/schema/tree.d.ts +14 -0
  70. package/dist/schema/tree.d.ts.map +1 -0
  71. package/dist/schema/tree.js +135 -0
  72. package/dist/schema/tree.js.map +1 -0
  73. package/dist/schema/types.d.ts +135 -0
  74. package/dist/schema/types.d.ts.map +1 -0
  75. package/dist/schema/types.js +2 -0
  76. package/dist/schema/types.js.map +1 -0
  77. package/dist/testing/core-tests.d.ts +30 -0
  78. package/dist/testing/core-tests.d.ts.map +1 -0
  79. package/dist/testing/core-tests.js +383 -0
  80. package/dist/testing/core-tests.js.map +1 -0
  81. package/dist/testing/create-kv-test-setup.d.ts +21 -0
  82. package/dist/testing/create-kv-test-setup.d.ts.map +1 -0
  83. package/dist/testing/create-kv-test-setup.js +25 -0
  84. package/dist/testing/create-kv-test-setup.js.map +1 -0
  85. package/dist/testing/debug-manifest.d.ts +2 -0
  86. package/dist/testing/debug-manifest.d.ts.map +1 -0
  87. package/dist/testing/debug-manifest.js +14 -0
  88. package/dist/testing/debug-manifest.js.map +1 -0
  89. package/dist/testing/fake-blob-store.d.ts +23 -0
  90. package/dist/testing/fake-blob-store.d.ts.map +1 -0
  91. package/dist/testing/fake-blob-store.js +158 -0
  92. package/dist/testing/fake-blob-store.js.map +1 -0
  93. package/dist/testing/fake-cache.d.ts +54 -0
  94. package/dist/testing/fake-cache.d.ts.map +1 -0
  95. package/dist/testing/fake-cache.js +137 -0
  96. package/dist/testing/fake-cache.js.map +1 -0
  97. package/dist/testing/index.d.ts +34 -0
  98. package/dist/testing/index.d.ts.map +1 -0
  99. package/dist/testing/index.js +101 -0
  100. package/dist/testing/index.js.map +1 -0
  101. package/dist/testing/manifest-test-setup.d.ts +22 -0
  102. package/dist/testing/manifest-test-setup.d.ts.map +1 -0
  103. package/dist/testing/manifest-test-setup.js +43 -0
  104. package/dist/testing/manifest-test-setup.js.map +1 -0
  105. package/dist/testing/perf-test.d.ts +13 -0
  106. package/dist/testing/perf-test.d.ts.map +1 -0
  107. package/dist/testing/perf-test.js +101 -0
  108. package/dist/testing/perf-test.js.map +1 -0
  109. package/dist/testing/run-tests.d.ts +2 -0
  110. package/dist/testing/run-tests.d.ts.map +1 -0
  111. package/dist/testing/run-tests.js +141 -0
  112. package/dist/testing/run-tests.js.map +1 -0
  113. package/dist/testing/setup.d.ts +2 -0
  114. package/dist/testing/setup.d.ts.map +1 -0
  115. package/dist/testing/setup.js +3 -0
  116. package/dist/testing/setup.js.map +1 -0
  117. package/dist/testing/test-index.d.ts +28 -0
  118. package/dist/testing/test-index.d.ts.map +1 -0
  119. package/dist/testing/test-index.js +35 -0
  120. package/dist/testing/test-index.js.map +1 -0
  121. package/dist/testing/test-setup.d.ts +32 -0
  122. package/dist/testing/test-setup.d.ts.map +1 -0
  123. package/dist/testing/test-setup.js +72 -0
  124. package/dist/testing/test-setup.js.map +1 -0
  125. package/dist/testing/upstream-kv-test-setup.d.ts +30 -0
  126. package/dist/testing/upstream-kv-test-setup.d.ts.map +1 -0
  127. package/dist/testing/upstream-kv-test-setup.js +66 -0
  128. package/dist/testing/upstream-kv-test-setup.js.map +1 -0
  129. package/dist/testing/vitest-compat.d.ts +92 -0
  130. package/dist/testing/vitest-compat.d.ts.map +1 -0
  131. package/dist/testing/vitest-compat.js +601 -0
  132. package/dist/testing/vitest-compat.js.map +1 -0
  133. package/dist/tracing.d.ts +71 -0
  134. package/dist/tracing.d.ts.map +1 -0
  135. package/dist/tracing.js +232 -0
  136. package/dist/tracing.js.map +1 -0
  137. package/dist/typed-kv.d.ts +120 -0
  138. package/dist/typed-kv.d.ts.map +1 -0
  139. package/dist/typed-kv.js +565 -0
  140. package/dist/typed-kv.js.map +1 -0
  141. package/dist/typed-upstream-kv.d.ts +17 -0
  142. package/dist/typed-upstream-kv.d.ts.map +1 -0
  143. package/dist/typed-upstream-kv.js +38 -0
  144. package/dist/typed-upstream-kv.js.map +1 -0
  145. package/dist/types.d.ts +199 -0
  146. package/dist/types.d.ts.map +1 -0
  147. package/dist/types.js +23 -0
  148. package/dist/types.js.map +1 -0
  149. package/dist/upstream-kv.d.ts +84 -0
  150. package/dist/upstream-kv.d.ts.map +1 -0
  151. package/dist/upstream-kv.js +375 -0
  152. package/dist/upstream-kv.js.map +1 -0
  153. package/docs/api-reference.md +222 -0
  154. package/docs/caching.md +60 -0
  155. package/docs/cli.md +123 -0
  156. package/docs/copy-on-write-branches.md +98 -0
  157. package/docs/getting-started.md +61 -0
  158. package/docs/indexes.md +122 -0
  159. package/docs/iterating-and-pagination.md +93 -0
  160. package/docs/metadata.md +82 -0
  161. package/docs/optimistic-locking.md +72 -0
  162. package/docs/schema-and-trees.md +222 -0
  163. package/docs/streaming.md +61 -0
  164. package/docs/testing-and-tracing.md +141 -0
  165. package/docs/typed-stores.md +68 -0
  166. package/package.json +63 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vitest-compat.js","sourceRoot":"","sources":["../../src/testing/vitest-compat.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,71 @@
1
+ /**
2
+ * Pluggable tracing system for KV2.
3
+ *
4
+ * Provides a simple span-based API that can be backed by:
5
+ * - Console logging (default for debugging)
6
+ * - No-op (production default)
7
+ * - OpenTelemetry (plug in your own tracer)
8
+ */
9
+ import type { Span, Tracer } from "./types.js";
10
+ export type { Span, Tracer };
11
+ export declare const noopTracer: Tracer;
12
+ export declare const consoleTracer: Tracer;
13
+ /**
14
+ * Create an OTEL-compatible tracer adapter.
15
+ *
16
+ * Usage with OpenTelemetry:
17
+ * ```ts
18
+ * import { trace } from '@opentelemetry/api';
19
+ *
20
+ * const otelTracer = createOtelTracer(trace.getTracer('kv2'));
21
+ * const kv = new KV2({ tracer: otelTracer });
22
+ * ```
23
+ */
24
+ export interface OtelTracerLike {
25
+ startSpan(name: string, options?: {
26
+ attributes?: Record<string, unknown>;
27
+ }): OtelSpanLike;
28
+ }
29
+ export interface OtelSpanLike {
30
+ setAttribute(key: string, value: unknown): void;
31
+ setStatus(status: {
32
+ code: number;
33
+ message?: string;
34
+ }): void;
35
+ recordException(error: Error): void;
36
+ end(): void;
37
+ }
38
+ export declare function createOtelTracer(otelTracer: OtelTracerLike): Tracer;
39
+ /**
40
+ * Statistics tracer for collecting timing data.
41
+ * Use in integration tests to measure real-world performance.
42
+ */
43
+ export interface TimingStats {
44
+ count: number;
45
+ avg: number;
46
+ p50: number;
47
+ p95: number;
48
+ p99: number;
49
+ min: number;
50
+ max: number;
51
+ }
52
+ /**
53
+ * Create a stats tracer for collecting timing data.
54
+ *
55
+ * Usage:
56
+ * ```ts
57
+ * const { tracer, printStats, clear } = createStatsTracer();
58
+ * const kv = new KV2({ tracer });
59
+ *
60
+ * // ... run operations ...
61
+ *
62
+ * printStats(); // Print timing summary
63
+ * ```
64
+ */
65
+ export declare function createStatsTracer(): {
66
+ tracer: Tracer;
67
+ printStats: () => void;
68
+ clear: () => void;
69
+ getStats: (operation?: string) => TimingStats | null;
70
+ };
71
+ //# sourceMappingURL=tracing.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tracing.d.ts","sourceRoot":"","sources":["../src/tracing.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAE/C,YAAY,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;AAa7B,eAAO,MAAM,UAAU,EAAE,MAIxB,CAAC;AA6CF,eAAO,MAAM,aAAa,EAAE,MAO3B,CAAC;AAEF;;;;;;;;;;GAUG;AACH,MAAM,WAAW,cAAc;IAC9B,SAAS,CACR,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE;QAAE,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,GAChD,YAAY,CAAC;CAChB;AAED,MAAM,WAAW,YAAY;IAC5B,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI,CAAC;IAChD,SAAS,CAAC,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IAC5D,eAAe,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IACpC,GAAG,IAAI,IAAI,CAAC;CACZ;AAED,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,cAAc,GAAG,MAAM,CAuBnE;AAED;;;GAGG;AACH,MAAM,WAAW,WAAW;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;CACZ;AA+JD;;;;;;;;;;;;GAYG;AACH,wBAAgB,iBAAiB,IAAI;IACpC,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,IAAI,CAAC;IACvB,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB,QAAQ,EAAE,CAAC,SAAS,CAAC,EAAE,MAAM,KAAK,WAAW,GAAG,IAAI,CAAC;CACrD,CAgBA"}
@@ -0,0 +1,232 @@
1
+ /**
2
+ * Pluggable tracing system for KV2.
3
+ *
4
+ * Provides a simple span-based API that can be backed by:
5
+ * - Console logging (default for debugging)
6
+ * - No-op (production default)
7
+ * - OpenTelemetry (plug in your own tracer)
8
+ */
9
+ /**
10
+ * No-op tracer for production (zero overhead).
11
+ */
12
+ class NoopSpan {
13
+ setAttributes() { }
14
+ setError() { }
15
+ end() { }
16
+ }
17
+ const noopSpan = new NoopSpan();
18
+ export const noopTracer = {
19
+ startSpan() {
20
+ return noopSpan;
21
+ },
22
+ };
23
+ /**
24
+ * Console logging tracer for debugging.
25
+ * Logs span start, attributes, errors, and duration.
26
+ */
27
+ class ConsoleSpan {
28
+ name;
29
+ startTime;
30
+ attrs;
31
+ error;
32
+ constructor(name, attributes) {
33
+ this.name = name;
34
+ this.startTime = performance.now();
35
+ this.attrs = attributes ?? {};
36
+ }
37
+ setAttributes(attrs) {
38
+ Object.assign(this.attrs, attrs);
39
+ }
40
+ setError(error) {
41
+ this.error = error;
42
+ }
43
+ end() {
44
+ const duration = performance.now() - this.startTime;
45
+ const attrs = Object.entries(this.attrs)
46
+ .map(([k, v]) => `${k}=${v}`)
47
+ .join(" ");
48
+ if (this.error) {
49
+ console.log(`[KV] ${this.name} FAILED ${duration.toFixed(1)}ms ${attrs} error=${this.error.message}`);
50
+ }
51
+ else {
52
+ console.log(`[KV] ${this.name} ${duration.toFixed(1)}ms ${attrs}`);
53
+ }
54
+ }
55
+ }
56
+ export const consoleTracer = {
57
+ startSpan(name, attributes) {
58
+ return new ConsoleSpan(name, attributes);
59
+ },
60
+ };
61
+ export function createOtelTracer(otelTracer) {
62
+ return {
63
+ startSpan(name, attributes) {
64
+ const span = otelTracer.startSpan(name, { attributes });
65
+ return {
66
+ setAttributes(attrs) {
67
+ for (const [key, value] of Object.entries(attrs)) {
68
+ span.setAttribute(key, value);
69
+ }
70
+ },
71
+ setError(error) {
72
+ span.setStatus({ code: 2, message: error.message }); // OTEL SpanStatusCode.ERROR = 2
73
+ span.recordException(error);
74
+ },
75
+ end() {
76
+ span.end();
77
+ },
78
+ };
79
+ },
80
+ };
81
+ }
82
+ class StatsSpan {
83
+ name;
84
+ startTime;
85
+ attrs;
86
+ error;
87
+ collector;
88
+ constructor(name, collector, attributes) {
89
+ this.name = name;
90
+ this.startTime = performance.now();
91
+ this.attrs = attributes ?? {};
92
+ this.collector = collector;
93
+ }
94
+ setAttributes(attrs) {
95
+ Object.assign(this.attrs, attrs);
96
+ }
97
+ setError(error) {
98
+ this.error = error;
99
+ }
100
+ end() {
101
+ const durationMs = performance.now() - this.startTime;
102
+ this.collector.record({
103
+ name: this.name,
104
+ durationMs,
105
+ attributes: this.attrs,
106
+ error: this.error?.message,
107
+ });
108
+ }
109
+ }
110
+ class StatsCollector {
111
+ entries = [];
112
+ record(entry) {
113
+ this.entries.push(entry);
114
+ }
115
+ clear() {
116
+ this.entries = [];
117
+ }
118
+ /** Get unique operation keys (name + source) */
119
+ getOperationKeys() {
120
+ const keys = new Set();
121
+ for (const e of this.entries) {
122
+ const source = e.attributes.source;
123
+ const key = source ? `${e.name}:${source}` : e.name;
124
+ keys.add(key);
125
+ }
126
+ return [...keys].sort();
127
+ }
128
+ getStats(operationKey) {
129
+ let filtered;
130
+ if (operationKey) {
131
+ const [name, source] = operationKey.includes(":")
132
+ ? operationKey.split(":")
133
+ : [operationKey, undefined];
134
+ filtered = this.entries.filter((e) => {
135
+ if (e.name !== name)
136
+ return false;
137
+ if (source && e.attributes.source !== source)
138
+ return false;
139
+ return true;
140
+ });
141
+ }
142
+ else {
143
+ filtered = this.entries;
144
+ }
145
+ if (filtered.length === 0)
146
+ return null;
147
+ const durations = filtered.map((e) => e.durationMs).sort((a, b) => a - b);
148
+ const sum = durations.reduce((a, b) => a + b, 0);
149
+ return {
150
+ count: durations.length,
151
+ avg: Math.round((sum / durations.length) * 100) / 100,
152
+ p50: this.percentile(durations, 50),
153
+ p95: this.percentile(durations, 95),
154
+ p99: this.percentile(durations, 99),
155
+ min: Math.round(durations[0] * 100) / 100,
156
+ max: Math.round(durations[durations.length - 1] * 100) / 100,
157
+ };
158
+ }
159
+ percentile(sorted, p) {
160
+ const index = Math.ceil((p / 100) * sorted.length) - 1;
161
+ return Math.round(sorted[Math.max(0, index)] * 100) / 100;
162
+ }
163
+ printSummary() {
164
+ const keys = this.getOperationKeys();
165
+ if (keys.length === 0) {
166
+ return;
167
+ }
168
+ console.log("\n=== Timing Statistics ===\n");
169
+ console.log("Operation".padEnd(25) +
170
+ "Count".padStart(8) +
171
+ "Avg".padStart(10) +
172
+ "p50".padStart(10) +
173
+ "p95".padStart(10) +
174
+ "p99".padStart(10) +
175
+ "Min".padStart(10) +
176
+ "Max".padStart(10));
177
+ console.log("-".repeat(93));
178
+ for (const key of keys) {
179
+ const stats = this.getStats(key);
180
+ if (!stats)
181
+ continue;
182
+ console.log(key.padEnd(25) +
183
+ String(stats.count).padStart(8) +
184
+ `${stats.avg}ms`.padStart(10) +
185
+ `${stats.p50}ms`.padStart(10) +
186
+ `${stats.p95}ms`.padStart(10) +
187
+ `${stats.p99}ms`.padStart(10) +
188
+ `${stats.min}ms`.padStart(10) +
189
+ `${stats.max}ms`.padStart(10));
190
+ }
191
+ const overall = this.getStats();
192
+ if (overall) {
193
+ console.log("-".repeat(93));
194
+ console.log("TOTAL".padEnd(25) +
195
+ String(overall.count).padStart(8) +
196
+ `${overall.avg}ms`.padStart(10) +
197
+ `${overall.p50}ms`.padStart(10) +
198
+ `${overall.p95}ms`.padStart(10) +
199
+ `${overall.p99}ms`.padStart(10) +
200
+ `${overall.min}ms`.padStart(10) +
201
+ `${overall.max}ms`.padStart(10));
202
+ }
203
+ console.log();
204
+ }
205
+ }
206
+ /**
207
+ * Create a stats tracer for collecting timing data.
208
+ *
209
+ * Usage:
210
+ * ```ts
211
+ * const { tracer, printStats, clear } = createStatsTracer();
212
+ * const kv = new KV2({ tracer });
213
+ *
214
+ * // ... run operations ...
215
+ *
216
+ * printStats(); // Print timing summary
217
+ * ```
218
+ */
219
+ export function createStatsTracer() {
220
+ const collector = new StatsCollector();
221
+ return {
222
+ tracer: {
223
+ startSpan(name, attributes) {
224
+ return new StatsSpan(name, collector, attributes);
225
+ },
226
+ },
227
+ printStats: () => collector.printSummary(),
228
+ clear: () => collector.clear(),
229
+ getStats: (op) => collector.getStats(op),
230
+ };
231
+ }
232
+ //# sourceMappingURL=tracing.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tracing.js","sourceRoot":"","sources":["../src/tracing.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,120 @@
1
+ import type { EntriesIterable, KVEntry, KVGetResult, KVLike, KVSetResult, KeysIterable, SetOptions } from "./types.js";
2
+ export interface IndexDef<V> {
3
+ /** Extract index key(s) from value. Return string for single-value, string[] for multi-value. */
4
+ key: (value: V, primaryKey: string) => string | string[];
5
+ /** Unique constraint. Default: false */
6
+ unique?: boolean;
7
+ }
8
+ /**
9
+ * When I = never (no indexes), resolves to never — so `string | never` = `string`.
10
+ * When I has values, resolves to a record of optional index keys.
11
+ */
12
+ export type IndexQuery<I extends string> = [I] extends [never] ? never : {
13
+ [K in I]?: string;
14
+ };
15
+ /**
16
+ * A typed sub-store that wraps any KVLike (KV2 or UpstreamKV) with a prefix.
17
+ *
18
+ * TypedKV implements KVLike, so it can be nested via getStore() to create
19
+ * hierarchical key structures.
20
+ *
21
+ * Optionally supports secondary indexes: pass an `indexes` record to
22
+ * `getStore()` or the constructor to auto-maintain index entries on set/delete.
23
+ *
24
+ * @typeParam V - Value type
25
+ * @typeParam M - Metadata type (undefined = no metadata)
26
+ * @typeParam I - Union of index names (never = no indexes)
27
+ *
28
+ * @example
29
+ * ```ts
30
+ * const kv = createKV({ prefix: "app/" });
31
+ *
32
+ * // Sub-store with indexes
33
+ * const usersKV = kv.getStore<User>("users/", {
34
+ * byEmail: { key: (u) => u.email, unique: true },
35
+ * byRole: { key: (u) => u.role },
36
+ * });
37
+ *
38
+ * await usersKV.set("alice", { email: "a@b.com", role: "admin" });
39
+ * const user = await usersKV.get({ byEmail: "a@b.com" });
40
+ * for await (const key of usersKV.keys({ byRole: "admin" })) { ... }
41
+ * ```
42
+ */
43
+ export declare class TypedKV<V, M = undefined, I extends string = never> implements KVLike<M> {
44
+ private parent;
45
+ private prefix;
46
+ private indexes?;
47
+ private indexStores?;
48
+ constructor(parent: KVLike<M>, prefix: string, indexes?: Record<string, IndexDef<V>>);
49
+ private prefixKey;
50
+ /**
51
+ * Get by primary key or by unique index.
52
+ *
53
+ * @example
54
+ * ```ts
55
+ * // By primary key
56
+ * const result = await store.get("page/123");
57
+ *
58
+ * // By unique index
59
+ * const result = await store.get({ bySlug: "hello-world" });
60
+ * ```
61
+ */
62
+ get<T = V>(keyOrFilter: string | IndexQuery<I>): Promise<KVGetResult<T, M>>;
63
+ set<T = V>(key: string, value: T | ReadableStream<Uint8Array>, ...[metadata, options]: undefined extends M ? [M?, SetOptions?] : [M, SetOptions?]): Promise<KVSetResult>;
64
+ delete(key: string): Promise<void>;
65
+ /**
66
+ * List keys by prefix or by index.
67
+ *
68
+ * @example
69
+ * ```ts
70
+ * // All keys
71
+ * for await (const key of store.keys()) { ... }
72
+ *
73
+ * // By prefix
74
+ * for await (const key of store.keys("page/")) { ... }
75
+ *
76
+ * // By index
77
+ * for await (const key of store.keys({ byStatus: "draft" })) { ... }
78
+ * ```
79
+ */
80
+ keys(filter?: string | IndexQuery<I>): KeysIterable;
81
+ /**
82
+ * List entries by prefix or by index.
83
+ *
84
+ * @example
85
+ * ```ts
86
+ * // All entries
87
+ * for await (const [key, entry] of store.entries()) { ... }
88
+ *
89
+ * // By index
90
+ * const { entries } = await store.entries({ byStatus: "draft" }).page(20);
91
+ * ```
92
+ */
93
+ entries<T = V>(filter?: string | IndexQuery<I>): EntriesIterable<T, M>;
94
+ getMany<T = V>(keys: string[], concurrency?: number): Promise<Map<string, KVEntry<T, M>>>;
95
+ /**
96
+ * List only direct children (keys without "/" after the optional prefix).
97
+ */
98
+ keysShallow(prefix?: string): AsyncIterable<string>;
99
+ /**
100
+ * Create a nested sub-store with an accumulated prefix.
101
+ * Pass `indexes` to enable secondary index maintenance.
102
+ */
103
+ getStore<ChildV, ChildM = M, ChildI extends string = never>(subPrefix: string, indexes?: Record<ChildI, IndexDef<ChildV>>): TypedKV<ChildV, ChildM, ChildI>;
104
+ /**
105
+ * Rebuild index entries by scanning all data. Idempotent.
106
+ * Use after adding a new index to an existing store.
107
+ *
108
+ * @param indexName - Specific index to rebuild, or omit for all indexes.
109
+ * @returns Number of entries indexed.
110
+ */
111
+ reindex(indexName?: I extends never ? never : I): Promise<{
112
+ indexed: number;
113
+ }>;
114
+ private keysByPrefix;
115
+ private entriesByPrefix;
116
+ private getByIndex;
117
+ private keysByIndex;
118
+ private entriesByIndex;
119
+ }
120
+ //# sourceMappingURL=typed-kv.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"typed-kv.d.ts","sourceRoot":"","sources":["../src/typed-kv.ts"],"names":[],"mappings":"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"}