@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":"disk-cache.js","sourceRoot":"","sources":["../src/disk-cache.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ export { KV2 } from "./cached-kv.js";
2
+ export { TypedKV } from "./typed-kv.js";
3
+ export { VercelBlobStore } from "./blob-store.js";
4
+ export { KVVersionConflictError, KVIndexConflictError } from "./types.js";
5
+ export { createKV } from "./create-kv.js";
6
+ export { UpstreamKV } from "./upstream-kv.js";
7
+ export { ManifestLog } from "./manifest-log.js";
8
+ export { noopTracer, consoleTracer, createOtelTracer, createStatsTracer, } from "./tracing.js";
9
+ export type { OtelTracerLike, OtelSpanLike, TimingStats } from "./tracing.js";
10
+ export { defineSchema, createSchemaKV } from "./schema/index.js";
11
+ export type { SchemaNodeDef, SchemaDef, TreeNode, TreeNodeIterator, TreeNodePage, TreeNodeWithChildren, KeyBuilders, SchemaKV, } from "./schema/index.js";
12
+ export type { BlobStore, KV2Options, EntriesIterable, EntriesPage, KeysIterable, KeysPage, KVEntry, KVEntryNotFound, KVGetResult, KVLike, KVSetResult, PrefixString, PutBody, SetOptions, Span, Tracer, } from "./types.js";
13
+ export type { CreateKVOptions, UpstreamConfig } from "./create-kv.js";
14
+ export type { KeyMeta } from "./manifest-log.js";
15
+ export type { IndexDef, IndexQuery } from "./typed-kv.js";
16
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,sBAAsB,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAG1E,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAGhD,OAAO,EACN,UAAU,EACV,aAAa,EACb,gBAAgB,EAChB,iBAAiB,GACjB,MAAM,cAAc,CAAC;AACtB,YAAY,EAAE,cAAc,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAG9E,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACjE,YAAY,EACX,aAAa,EACb,SAAS,EACT,QAAQ,EACR,gBAAgB,EAChB,YAAY,EACZ,oBAAoB,EACpB,WAAW,EACX,QAAQ,GACR,MAAM,mBAAmB,CAAC;AAE3B,YAAY,EACX,SAAS,EACT,UAAU,EACV,eAAe,EACf,WAAW,EACX,YAAY,EACZ,QAAQ,EACR,OAAO,EACP,eAAe,EACf,WAAW,EACX,MAAM,EACN,WAAW,EACX,YAAY,EACZ,OAAO,EACP,UAAU,EACV,IAAI,EACJ,MAAM,GACN,MAAM,YAAY,CAAC;AAEpB,YAAY,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACtE,YAAY,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AACjD,YAAY,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,13 @@
1
+ export { KV2 } from "./cached-kv.js";
2
+ export { TypedKV } from "./typed-kv.js";
3
+ export { VercelBlobStore } from "./blob-store.js";
4
+ export { KVVersionConflictError, KVIndexConflictError } from "./types.js";
5
+ // CoW / Environment-aware KV
6
+ export { createKV } from "./create-kv.js";
7
+ export { UpstreamKV } from "./upstream-kv.js";
8
+ export { ManifestLog } from "./manifest-log.js";
9
+ // Tracing
10
+ export { noopTracer, consoleTracer, createOtelTracer, createStatsTracer, } from "./tracing.js";
11
+ // Schema-based API
12
+ export { defineSchema, createSchemaKV } from "./schema/index.js";
13
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,sBAAsB,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAE1E,6BAA6B;AAC7B,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD,UAAU;AACV,OAAO,EACN,UAAU,EACV,aAAa,EACb,gBAAgB,EAChB,iBAAiB,GACjB,MAAM,cAAc,CAAC;AAGtB,mBAAmB;AACnB,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC"}
@@ -0,0 +1,44 @@
1
+ import { TypedKV } from "./typed-kv.js";
2
+ import type { EntriesIterable, KVEntry, KVGetResult, KVLike, KVSetResult, KeysIterable, SetOptions } from "./types.js";
3
+ export interface IndexDef<V> {
4
+ /** Extract index key(s) from value. Return string for single-value, string[] for multi-value. */
5
+ key: (value: V, primaryKey: string) => string | string[];
6
+ /** Unique constraint. Default: false */
7
+ unique?: boolean;
8
+ }
9
+ /**
10
+ * A KV store wrapper that automatically maintains secondary indexes.
11
+ *
12
+ * Wraps any KVLike parent and adds index management on top of a prefixed data store.
13
+ * Index entries are stored as siblings under `__idx/` to avoid polluting `keys()` scans.
14
+ *
15
+ * Orphan detection: stale index entries are detected and cleaned up on read.
16
+ */
17
+ export declare class IndexedKV<V, M = undefined> {
18
+ private parent;
19
+ private store;
20
+ private indexes;
21
+ private prefix;
22
+ private indexStores;
23
+ constructor(parent: KVLike<M>, prefix: string, indexes: Record<string, IndexDef<V>>);
24
+ get(key: string): Promise<KVGetResult<V, M>>;
25
+ set(key: string, value: V, ...[metadata, options]: undefined extends M ? [M?, SetOptions?] : [M, SetOptions?]): Promise<KVSetResult>;
26
+ delete(key: string): Promise<void>;
27
+ keys(prefix?: string): KeysIterable;
28
+ entries(prefix?: string): EntriesIterable<V, M>;
29
+ getMany(keys: string[], concurrency?: number): Promise<Map<string, KVEntry<V, M>>>;
30
+ /**
31
+ * Point lookup on a unique index. Validates and cleans orphans.
32
+ */
33
+ getByIndex(indexName: string, indexKey: string): Promise<KVGetResult<V, M>>;
34
+ /**
35
+ * Prefix scan on a non-unique index. Returns primary keys.
36
+ */
37
+ keysByIndex(indexName: string, indexKey: string): KeysIterable;
38
+ /**
39
+ * Prefix scan returning full entries. Validates each result.
40
+ */
41
+ entriesByIndex(indexName: string, indexKey: string): EntriesIterable<V, M>;
42
+ getStore(): TypedKV<V, M>;
43
+ }
44
+ //# sourceMappingURL=indexed-kv.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"indexed-kv.d.ts","sourceRoot":"","sources":["../src/indexed-kv.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAExC,OAAO,KAAK,EACX,eAAe,EAEf,OAAO,EACP,WAAW,EACX,MAAM,EACN,WAAW,EACX,YAAY,EAEZ,UAAU,EACV,MAAM,YAAY,CAAC;AAEpB,MAAM,WAAW,QAAQ,CAAC,CAAC;IAC1B,iGAAiG;IACjG,GAAG,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,UAAU,EAAE,MAAM,KAAK,MAAM,GAAG,MAAM,EAAE,CAAC;IACzD,wCAAwC;IACxC,MAAM,CAAC,EAAE,OAAO,CAAC;CACjB;AAQD;;;;;;;GAOG;AACH,qBAAa,SAAS,CAAC,CAAC,EAAE,CAAC,GAAG,SAAS;IACtC,OAAO,CAAC,MAAM,CAAY;IAC1B,OAAO,CAAC,KAAK,CAAgB;IAC7B,OAAO,CAAC,OAAO,CAA8B;IAC7C,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,WAAW,CAA6C;gBAG/D,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,EACjB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;IAmB/B,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAI5C,GAAG,CACR,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,CAAC,EACR,GAAG,CAAC,QAAQ,EAAE,OAAO,CAAC,EAAE,SAAS,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,GAChF,OAAO,CAAC,WAAW,CAAC;IAsEjB,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA4BxC,IAAI,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,YAAY;IAInC,OAAO,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC;IAIzC,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAMxF;;OAEG;IACG,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAgDjF;;OAEG;IACH,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,YAAY;IAoF9D;;OAEG;IACH,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC;IAqG1E,QAAQ,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC;CAGzB"}
@@ -0,0 +1,373 @@
1
+ import { TypedKV } from "./typed-kv.js";
2
+ import { KVIndexConflictError } from "./types.js";
3
+ const INDEX_PREFIX = "__idx/";
4
+ function normalizeIndexKeys(raw) {
5
+ return Array.isArray(raw) ? raw : [raw];
6
+ }
7
+ /**
8
+ * A KV store wrapper that automatically maintains secondary indexes.
9
+ *
10
+ * Wraps any KVLike parent and adds index management on top of a prefixed data store.
11
+ * Index entries are stored as siblings under `__idx/` to avoid polluting `keys()` scans.
12
+ *
13
+ * Orphan detection: stale index entries are detected and cleaned up on read.
14
+ */
15
+ export class IndexedKV {
16
+ parent;
17
+ store;
18
+ indexes;
19
+ prefix;
20
+ indexStores;
21
+ constructor(parent, prefix, indexes) {
22
+ this.parent = parent;
23
+ this.prefix = prefix;
24
+ this.store = new TypedKV(parent, prefix);
25
+ this.indexes = indexes;
26
+ // Create a TypedKV for each index, storing plain primary-key strings with no metadata
27
+ this.indexStores = {};
28
+ for (const name of Object.keys(indexes)) {
29
+ this.indexStores[name] = new TypedKV(parent, `${INDEX_PREFIX}${prefix}${name}/`);
30
+ }
31
+ }
32
+ // --- Standard KVLike methods ---
33
+ async get(key) {
34
+ return this.store.get(key);
35
+ }
36
+ async set(key, value, ...[metadata, options]) {
37
+ // 1. Read old entry to determine old index keys
38
+ const oldResult = await this.store.get(key);
39
+ const oldValue = oldResult.exists ? await oldResult.value : undefined;
40
+ // 2. Check unique constraints for new index keys that changed
41
+ for (const [name, def] of Object.entries(this.indexes)) {
42
+ if (!def.unique)
43
+ continue;
44
+ const newKeys = normalizeIndexKeys(def.key(value, key));
45
+ const oldKeys = oldValue
46
+ ? normalizeIndexKeys(def.key(oldValue, key))
47
+ : [];
48
+ const oldSet = new Set(oldKeys);
49
+ for (const newKey of newKeys) {
50
+ if (oldSet.has(newKey))
51
+ continue; // unchanged, skip check
52
+ const existing = await this.indexStores[name].get(newKey);
53
+ if (existing.exists) {
54
+ const existingPK = await existing.value;
55
+ if (existingPK !== key) {
56
+ throw new KVIndexConflictError(name, newKey);
57
+ }
58
+ }
59
+ }
60
+ }
61
+ // 3. Write all index entries concurrently (throw on failure — before
62
+ // main entry is written, so a failed index write means clean state).
63
+ // If main write later fails, orphan indexes self-heal on read.
64
+ const indexOps = [];
65
+ for (const [name, def] of Object.entries(this.indexes)) {
66
+ const newKeys = normalizeIndexKeys(def.key(value, key));
67
+ const oldKeys = oldValue
68
+ ? normalizeIndexKeys(def.key(oldValue, key))
69
+ : [];
70
+ const newSet = new Set(newKeys);
71
+ const oldSet = new Set(oldKeys);
72
+ const indexStore = this.indexStores[name];
73
+ const isUnique = def.unique ?? false;
74
+ // Delete old index entries that are no longer needed
75
+ for (const oldKey of oldKeys) {
76
+ if (!newSet.has(oldKey)) {
77
+ if (isUnique) {
78
+ indexOps.push(indexStore.delete(oldKey));
79
+ }
80
+ else {
81
+ indexOps.push(indexStore.delete(`${oldKey}/${key}`));
82
+ }
83
+ }
84
+ }
85
+ // Write new index entries
86
+ for (const newKey of newKeys) {
87
+ if (!oldSet.has(newKey)) {
88
+ if (isUnique) {
89
+ indexOps.push(indexStore.set(newKey, key));
90
+ }
91
+ else {
92
+ indexOps.push(indexStore.set(`${newKey}/${key}`, key));
93
+ }
94
+ }
95
+ }
96
+ }
97
+ await Promise.all(indexOps);
98
+ // 4. Write main entry last
99
+ return this.store.set(key, value, ...[metadata, options]);
100
+ }
101
+ async delete(key) {
102
+ // 1. Read entry to determine current index keys
103
+ const result = await this.store.get(key);
104
+ if (!result.exists)
105
+ return;
106
+ const value = await result.value;
107
+ // 2. Delete main entry
108
+ await this.store.delete(key);
109
+ // 3. Delete all index entries concurrently
110
+ const deleteOps = [];
111
+ for (const [name, def] of Object.entries(this.indexes)) {
112
+ const keys = normalizeIndexKeys(def.key(value, key));
113
+ const indexStore = this.indexStores[name];
114
+ const isUnique = def.unique ?? false;
115
+ for (const indexKey of keys) {
116
+ if (isUnique) {
117
+ deleteOps.push(indexStore.delete(indexKey).catch(() => { }));
118
+ }
119
+ else {
120
+ deleteOps.push(indexStore.delete(`${indexKey}/${key}`).catch(() => { }));
121
+ }
122
+ }
123
+ }
124
+ await Promise.all(deleteOps);
125
+ }
126
+ keys(prefix) {
127
+ return this.store.keys(prefix);
128
+ }
129
+ entries(prefix) {
130
+ return this.store.entries(prefix);
131
+ }
132
+ async getMany(keys, concurrency) {
133
+ return this.store.getMany(keys, concurrency);
134
+ }
135
+ // --- Index query methods ---
136
+ /**
137
+ * Point lookup on a unique index. Validates and cleans orphans.
138
+ */
139
+ async getByIndex(indexName, indexKey) {
140
+ const def = this.indexes[indexName];
141
+ if (!def) {
142
+ throw new Error(`Unknown index: "${indexName}"`);
143
+ }
144
+ if (!def.unique) {
145
+ throw new Error(`getByIndex requires a unique index, "${indexName}" is non-unique. Use keysByIndex or entriesByIndex instead.`);
146
+ }
147
+ const indexStore = this.indexStores[indexName];
148
+ // 1. Look up index entry
149
+ const indexResult = await indexStore.get(indexKey);
150
+ if (!indexResult.exists) {
151
+ return { exists: false, metadata: undefined, value: undefined, stream: undefined };
152
+ }
153
+ // 2. Get primary key from index
154
+ const primaryKey = await indexResult.value;
155
+ // 3. Look up main entry
156
+ const entry = await this.store.get(primaryKey);
157
+ // 4. Orphan type 1: main entry doesn't exist
158
+ if (!entry.exists) {
159
+ indexStore.delete(indexKey).catch(() => { });
160
+ return { exists: false, metadata: undefined, value: undefined, stream: undefined };
161
+ }
162
+ // 5. Orphan type 2: index points to value with different index key
163
+ const value = await entry.value;
164
+ const currentKeys = normalizeIndexKeys(def.key(value, primaryKey));
165
+ if (!currentKeys.includes(indexKey)) {
166
+ indexStore.delete(indexKey).catch(() => { });
167
+ return { exists: false, metadata: undefined, value: undefined, stream: undefined };
168
+ }
169
+ // 6. Valid — return the entry (re-wrap value since we already awaited it)
170
+ return {
171
+ exists: true,
172
+ metadata: entry.metadata,
173
+ value: Promise.resolve(value),
174
+ stream: entry.stream,
175
+ version: entry.version,
176
+ update: entry.update,
177
+ };
178
+ }
179
+ /**
180
+ * Prefix scan on a non-unique index. Returns primary keys.
181
+ */
182
+ keysByIndex(indexName, indexKey) {
183
+ const def = this.indexes[indexName];
184
+ if (!def) {
185
+ throw new Error(`Unknown index: "${indexName}"`);
186
+ }
187
+ const indexStore = this.indexStores[indexName];
188
+ const store = this.store;
189
+ const isUnique = def.unique ?? false;
190
+ if (isUnique) {
191
+ // For unique indexes, just do a point lookup
192
+ const self = this;
193
+ return {
194
+ async *[Symbol.asyncIterator]() {
195
+ const result = await self.getByIndex(indexName, indexKey);
196
+ if (result.exists) {
197
+ const indexResult = await indexStore.get(indexKey);
198
+ if (indexResult.exists) {
199
+ yield await indexResult.value;
200
+ }
201
+ }
202
+ },
203
+ async page(limit, cursor) {
204
+ if (cursor)
205
+ return { keys: [] };
206
+ const result = await self.getByIndex(indexName, indexKey);
207
+ if (result.exists) {
208
+ const indexResult = await indexStore.get(indexKey);
209
+ if (indexResult.exists) {
210
+ return { keys: [await indexResult.value] };
211
+ }
212
+ }
213
+ return { keys: [] };
214
+ },
215
+ };
216
+ }
217
+ // Non-unique: scan prefix {indexKey}/
218
+ const scanPrefix = `${indexKey}/`;
219
+ return {
220
+ async *[Symbol.asyncIterator]() {
221
+ for await (const [, entry] of indexStore.entries(scanPrefix)) {
222
+ const primaryKey = await entry.value;
223
+ // Validate: main entry must exist
224
+ const mainEntry = await store.get(primaryKey);
225
+ if (mainEntry.exists) {
226
+ const value = await mainEntry.value;
227
+ const currentKeys = normalizeIndexKeys(def.key(value, primaryKey));
228
+ if (currentKeys.includes(indexKey)) {
229
+ yield primaryKey;
230
+ }
231
+ else {
232
+ // Orphan type 2
233
+ indexStore.delete(`${indexKey}/${primaryKey}`).catch(() => { });
234
+ }
235
+ }
236
+ else {
237
+ // Orphan type 1
238
+ indexStore.delete(`${indexKey}/${primaryKey}`).catch(() => { });
239
+ }
240
+ }
241
+ },
242
+ async page(limit, cursor) {
243
+ const { entries, cursor: nextCursor } = await indexStore.entries(scanPrefix).page(limit, cursor);
244
+ const keys = [];
245
+ for (const [, entry] of entries) {
246
+ const primaryKey = await entry.value;
247
+ const mainEntry = await store.get(primaryKey);
248
+ if (mainEntry.exists) {
249
+ const value = await mainEntry.value;
250
+ const currentKeys = normalizeIndexKeys(def.key(value, primaryKey));
251
+ if (currentKeys.includes(indexKey)) {
252
+ keys.push(primaryKey);
253
+ }
254
+ else {
255
+ indexStore.delete(`${indexKey}/${primaryKey}`).catch(() => { });
256
+ }
257
+ }
258
+ else {
259
+ indexStore.delete(`${indexKey}/${primaryKey}`).catch(() => { });
260
+ }
261
+ }
262
+ return { keys, cursor: nextCursor };
263
+ },
264
+ };
265
+ }
266
+ /**
267
+ * Prefix scan returning full entries. Validates each result.
268
+ */
269
+ entriesByIndex(indexName, indexKey) {
270
+ const def = this.indexes[indexName];
271
+ if (!def) {
272
+ throw new Error(`Unknown index: "${indexName}"`);
273
+ }
274
+ const indexStore = this.indexStores[indexName];
275
+ const store = this.store;
276
+ const isUnique = def.unique ?? false;
277
+ if (isUnique) {
278
+ const self = this;
279
+ return {
280
+ async *[Symbol.asyncIterator]() {
281
+ const result = await self.getByIndex(indexName, indexKey);
282
+ if (result.exists) {
283
+ const indexResult = await indexStore.get(indexKey);
284
+ if (indexResult.exists) {
285
+ const pk = await indexResult.value;
286
+ yield [pk, result];
287
+ }
288
+ }
289
+ },
290
+ async page(limit, cursor) {
291
+ if (cursor)
292
+ return { entries: [] };
293
+ const result = await self.getByIndex(indexName, indexKey);
294
+ if (result.exists) {
295
+ const indexResult = await indexStore.get(indexKey);
296
+ if (indexResult.exists) {
297
+ const pk = await indexResult.value;
298
+ return { entries: [[pk, result]] };
299
+ }
300
+ }
301
+ return { entries: [] };
302
+ },
303
+ };
304
+ }
305
+ // Non-unique: scan prefix {indexKey}/
306
+ const scanPrefix = `${indexKey}/`;
307
+ return {
308
+ async *[Symbol.asyncIterator]() {
309
+ for await (const [, indexEntry] of indexStore.entries(scanPrefix)) {
310
+ const primaryKey = await indexEntry.value;
311
+ const mainEntry = await store.get(primaryKey);
312
+ if (mainEntry.exists) {
313
+ const value = await mainEntry.value;
314
+ const currentKeys = normalizeIndexKeys(def.key(value, primaryKey));
315
+ if (currentKeys.includes(indexKey)) {
316
+ // Re-wrap value since we already awaited it
317
+ const wrappedEntry = {
318
+ exists: true,
319
+ metadata: mainEntry.metadata,
320
+ value: Promise.resolve(value),
321
+ stream: mainEntry.stream,
322
+ version: mainEntry.version,
323
+ update: mainEntry.update,
324
+ };
325
+ yield [primaryKey, wrappedEntry];
326
+ }
327
+ else {
328
+ indexStore.delete(`${indexKey}/${primaryKey}`).catch(() => { });
329
+ }
330
+ }
331
+ else {
332
+ indexStore.delete(`${indexKey}/${primaryKey}`).catch(() => { });
333
+ }
334
+ }
335
+ },
336
+ async page(limit, cursor) {
337
+ const { entries: indexEntries, cursor: nextCursor } = await indexStore.entries(scanPrefix).page(limit, cursor);
338
+ const entries = [];
339
+ for (const [, indexEntry] of indexEntries) {
340
+ const primaryKey = await indexEntry.value;
341
+ const mainEntry = await store.get(primaryKey);
342
+ if (mainEntry.exists) {
343
+ const value = await mainEntry.value;
344
+ const currentKeys = normalizeIndexKeys(def.key(value, primaryKey));
345
+ if (currentKeys.includes(indexKey)) {
346
+ const wrappedEntry = {
347
+ exists: true,
348
+ metadata: mainEntry.metadata,
349
+ value: Promise.resolve(value),
350
+ stream: mainEntry.stream,
351
+ version: mainEntry.version,
352
+ update: mainEntry.update,
353
+ };
354
+ entries.push([primaryKey, wrappedEntry]);
355
+ }
356
+ else {
357
+ indexStore.delete(`${indexKey}/${primaryKey}`).catch(() => { });
358
+ }
359
+ }
360
+ else {
361
+ indexStore.delete(`${indexKey}/${primaryKey}`).catch(() => { });
362
+ }
363
+ }
364
+ return { entries, cursor: nextCursor };
365
+ },
366
+ };
367
+ }
368
+ // --- Access to underlying stores ---
369
+ getStore() {
370
+ return this.store;
371
+ }
372
+ }
373
+ //# sourceMappingURL=indexed-kv.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"indexed-kv.js","sourceRoot":"","sources":["../src/indexed-kv.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAoBlD,MAAM,YAAY,GAAG,QAAQ,CAAC;AAE9B,SAAS,kBAAkB,CAAC,GAAsB;IACjD,OAAO,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACzC,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,OAAO,SAAS;IACb,MAAM,CAAY;IAClB,KAAK,CAAgB;IACrB,OAAO,CAA8B;IACrC,MAAM,CAAS;IACf,WAAW,CAA6C;IAEhE,YACC,MAAiB,EACjB,MAAc,EACd,OAAoC;QAEpC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,KAAK,GAAG,IAAI,OAAO,CAAO,MAAM,EAAE,MAAM,CAAC,CAAC;QAC/C,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QAEvB,sFAAsF;QACtF,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;QACtB,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YACzC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,IAAI,OAAO,CACnC,MAAsC,EACtC,GAAG,YAAY,GAAG,MAAM,GAAG,IAAI,GAAG,CAClC,CAAC;QACH,CAAC;IACF,CAAC;IAED,kCAAkC;IAElC,KAAK,CAAC,GAAG,CAAC,GAAW;QACpB,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC5B,CAAC;IAED,KAAK,CAAC,GAAG,CACR,GAAW,EACX,KAAQ,EACR,GAAG,CAAC,QAAQ,EAAE,OAAO,CAA6D;QAElF,gDAAgD;QAChD,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC5C,MAAM,QAAQ,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;QAEtE,8DAA8D;QAC9D,KAAK,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YACxD,IAAI,CAAC,GAAG,CAAC,MAAM;gBAAE,SAAS;YAC1B,MAAM,OAAO,GAAG,kBAAkB,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC;YACxD,MAAM,OAAO,GAAG,QAAQ;gBACvB,CAAC,CAAC,kBAAkB,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;gBAC5C,CAAC,CAAC,EAAE,CAAC;YACN,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC;YAEhC,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;gBAC9B,IAAI,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC;oBAAE,SAAS,CAAC,wBAAwB;gBAC1D,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;gBAC1D,IAAI,QAAQ,CAAC,MAAM,EAAE,CAAC;oBACrB,MAAM,UAAU,GAAG,MAAM,QAAQ,CAAC,KAAK,CAAC;oBACxC,IAAI,UAAU,KAAK,GAAG,EAAE,CAAC;wBACxB,MAAM,IAAI,oBAAoB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;oBAC9C,CAAC;gBACF,CAAC;YACF,CAAC;QACF,CAAC;QAED,qEAAqE;QACrE,qEAAqE;QACrE,+DAA+D;QAC/D,MAAM,QAAQ,GAAuB,EAAE,CAAC;QACxC,KAAK,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YACxD,MAAM,OAAO,GAAG,kBAAkB,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC;YACxD,MAAM,OAAO,GAAG,QAAQ;gBACvB,CAAC,CAAC,kBAAkB,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;gBAC5C,CAAC,CAAC,EAAE,CAAC;YAEN,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC;YAChC,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC;YAChC,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;YAC1C,MAAM,QAAQ,GAAG,GAAG,CAAC,MAAM,IAAI,KAAK,CAAC;YAErC,qDAAqD;YACrD,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;gBAC9B,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;oBACzB,IAAI,QAAQ,EAAE,CAAC;wBACd,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;oBAC1C,CAAC;yBAAM,CAAC;wBACP,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,MAAM,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC;oBACtD,CAAC;gBACF,CAAC;YACF,CAAC;YAED,0BAA0B;YAC1B,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;gBAC9B,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;oBACzB,IAAI,QAAQ,EAAE,CAAC;wBACd,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC;oBAC5C,CAAC;yBAAM,CAAC;wBACP,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,MAAM,IAAI,GAAG,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC;oBACxD,CAAC;gBACF,CAAC;YACF,CAAC;QACF,CAAC;QAED,MAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAE5B,2BAA2B;QAC3B,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,CAAC,QAAQ,EAAE,OAAO,CAAqB,CAAC,CAAC;IAC/E,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,GAAW;QACvB,gDAAgD;QAChD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACzC,IAAI,CAAC,MAAM,CAAC,MAAM;YAAE,OAAO;QAC3B,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC;QAEjC,uBAAuB;QACvB,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAE7B,2CAA2C;QAC3C,MAAM,SAAS,GAAoB,EAAE,CAAC;QACtC,KAAK,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YACxD,MAAM,IAAI,GAAG,kBAAkB,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC;YACrD,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;YAC1C,MAAM,QAAQ,GAAG,GAAG,CAAC,MAAM,IAAI,KAAK,CAAC;YAErC,KAAK,MAAM,QAAQ,IAAI,IAAI,EAAE,CAAC;gBAC7B,IAAI,QAAQ,EAAE,CAAC;oBACd,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC,CAAC;gBAC7D,CAAC;qBAAM,CAAC;oBACP,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,QAAQ,IAAI,GAAG,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC,CAAC;gBACzE,CAAC;YACF,CAAC;QACF,CAAC;QAED,MAAM,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IAC9B,CAAC;IAED,IAAI,CAAC,MAAe;QACnB,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAChC,CAAC;IAED,OAAO,CAAC,MAAe;QACtB,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IACnC,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,IAAc,EAAE,WAAoB;QACjD,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;IAC9C,CAAC;IAED,8BAA8B;IAE9B;;OAEG;IACH,KAAK,CAAC,UAAU,CAAC,SAAiB,EAAE,QAAgB;QACnD,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QACpC,IAAI,CAAC,GAAG,EAAE,CAAC;YACV,MAAM,IAAI,KAAK,CAAC,mBAAmB,SAAS,GAAG,CAAC,CAAC;QAClD,CAAC;QACD,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,wCAAwC,SAAS,6DAA6D,CAAC,CAAC;QACjI,CAAC;QAED,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;QAE/C,yBAAyB;QACzB,MAAM,WAAW,GAAG,MAAM,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACnD,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC;YACzB,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;QACpF,CAAC;QAED,gCAAgC;QAChC,MAAM,UAAU,GAAG,MAAM,WAAW,CAAC,KAAK,CAAC;QAE3C,wBAAwB;QACxB,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAE/C,6CAA6C;QAC7C,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;YACnB,UAAU,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;YAC5C,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;QACpF,CAAC;QAED,mEAAmE;QACnE,MAAM,KAAK,GAAG,MAAM,KAAK,CAAC,KAAK,CAAC;QAChC,MAAM,WAAW,GAAG,kBAAkB,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC;QACnE,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;YACrC,UAAU,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;YAC5C,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;QACpF,CAAC;QAED,0EAA0E;QAC1E,OAAO;YACN,MAAM,EAAE,IAAI;YACZ,QAAQ,EAAE,KAAK,CAAC,QAAQ;YACxB,KAAK,EAAE,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC;YAC7B,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,MAAM,EAAE,KAAK,CAAC,MAAM;SACpB,CAAC;IACH,CAAC;IAED;;OAEG;IACH,WAAW,CAAC,SAAiB,EAAE,QAAgB;QAC9C,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QACpC,IAAI,CAAC,GAAG,EAAE,CAAC;YACV,MAAM,IAAI,KAAK,CAAC,mBAAmB,SAAS,GAAG,CAAC,CAAC;QAClD,CAAC;QAED,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;QAC/C,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACzB,MAAM,QAAQ,GAAG,GAAG,CAAC,MAAM,IAAI,KAAK,CAAC;QAErC,IAAI,QAAQ,EAAE,CAAC;YACd,6CAA6C;YAC7C,MAAM,IAAI,GAAG,IAAI,CAAC;YAClB,OAAO;gBACN,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC;oBAC5B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;oBAC1D,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;wBACnB,MAAM,WAAW,GAAG,MAAM,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;wBACnD,IAAI,WAAW,CAAC,MAAM,EAAE,CAAC;4BACxB,MAAM,MAAM,WAAW,CAAC,KAAK,CAAC;wBAC/B,CAAC;oBACF,CAAC;gBACF,CAAC;gBACD,KAAK,CAAC,IAAI,CAAC,KAAa,EAAE,MAAe;oBACxC,IAAI,MAAM;wBAAE,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;oBAChC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;oBAC1D,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;wBACnB,MAAM,WAAW,GAAG,MAAM,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;wBACnD,IAAI,WAAW,CAAC,MAAM,EAAE,CAAC;4BACxB,OAAO,EAAE,IAAI,EAAE,CAAC,MAAM,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC;wBAC5C,CAAC;oBACF,CAAC;oBACD,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;gBACrB,CAAC;aACD,CAAC;QACH,CAAC;QAED,sCAAsC;QACtC,MAAM,UAAU,GAAG,GAAG,QAAQ,GAAG,CAAC;QAElC,OAAO;YACN,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC;gBAC5B,IAAI,KAAK,EAAE,MAAM,CAAC,EAAE,KAAK,CAAC,IAAI,UAAU,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;oBAC9D,MAAM,UAAU,GAAG,MAAM,KAAK,CAAC,KAAK,CAAC;oBACrC,kCAAkC;oBAClC,MAAM,SAAS,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;oBAC9C,IAAI,SAAS,CAAC,MAAM,EAAE,CAAC;wBACtB,MAAM,KAAK,GAAG,MAAM,SAAS,CAAC,KAAK,CAAC;wBACpC,MAAM,WAAW,GAAG,kBAAkB,CAAC,GAAG,CAAC,GAAG,CAAC,KAAU,EAAE,UAAU,CAAC,CAAC,CAAC;wBACxE,IAAI,WAAW,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;4BACpC,MAAM,UAAU,CAAC;wBAClB,CAAC;6BAAM,CAAC;4BACP,gBAAgB;4BAChB,UAAU,CAAC,MAAM,CAAC,GAAG,QAAQ,IAAI,UAAU,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;wBAChE,CAAC;oBACF,CAAC;yBAAM,CAAC;wBACP,gBAAgB;wBAChB,UAAU,CAAC,MAAM,CAAC,GAAG,QAAQ,IAAI,UAAU,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;oBAChE,CAAC;gBACF,CAAC;YACF,CAAC;YACD,KAAK,CAAC,IAAI,CAAC,KAAa,EAAE,MAAe;gBACxC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,UAAU,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;gBACjG,MAAM,IAAI,GAAa,EAAE,CAAC;gBAC1B,KAAK,MAAM,CAAC,EAAE,KAAK,CAAC,IAAI,OAAO,EAAE,CAAC;oBACjC,MAAM,UAAU,GAAG,MAAM,KAAK,CAAC,KAAK,CAAC;oBACrC,MAAM,SAAS,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;oBAC9C,IAAI,SAAS,CAAC,MAAM,EAAE,CAAC;wBACtB,MAAM,KAAK,GAAG,MAAM,SAAS,CAAC,KAAK,CAAC;wBACpC,MAAM,WAAW,GAAG,kBAAkB,CAAC,GAAG,CAAC,GAAG,CAAC,KAAU,EAAE,UAAU,CAAC,CAAC,CAAC;wBACxE,IAAI,WAAW,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;4BACpC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;wBACvB,CAAC;6BAAM,CAAC;4BACP,UAAU,CAAC,MAAM,CAAC,GAAG,QAAQ,IAAI,UAAU,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;wBAChE,CAAC;oBACF,CAAC;yBAAM,CAAC;wBACP,UAAU,CAAC,MAAM,CAAC,GAAG,QAAQ,IAAI,UAAU,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;oBAChE,CAAC;gBACF,CAAC;gBACD,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC;YACrC,CAAC;SACD,CAAC;IACH,CAAC;IAED;;OAEG;IACH,cAAc,CAAC,SAAiB,EAAE,QAAgB;QACjD,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QACpC,IAAI,CAAC,GAAG,EAAE,CAAC;YACV,MAAM,IAAI,KAAK,CAAC,mBAAmB,SAAS,GAAG,CAAC,CAAC;QAClD,CAAC;QAED,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;QAC/C,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACzB,MAAM,QAAQ,GAAG,GAAG,CAAC,MAAM,IAAI,KAAK,CAAC;QAErC,IAAI,QAAQ,EAAE,CAAC;YACd,MAAM,IAAI,GAAG,IAAI,CAAC;YAClB,OAAO;gBACN,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC;oBAC5B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;oBAC1D,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;wBACnB,MAAM,WAAW,GAAG,MAAM,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;wBACnD,IAAI,WAAW,CAAC,MAAM,EAAE,CAAC;4BACxB,MAAM,EAAE,GAAG,MAAM,WAAW,CAAC,KAAK,CAAC;4BACnC,MAAM,CAAC,EAAE,EAAE,MAAuB,CAA4B,CAAC;wBAChE,CAAC;oBACF,CAAC;gBACF,CAAC;gBACD,KAAK,CAAC,IAAI,CAAC,KAAa,EAAE,MAAe;oBACxC,IAAI,MAAM;wBAAE,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;oBACnC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;oBAC1D,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;wBACnB,MAAM,WAAW,GAAG,MAAM,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;wBACnD,IAAI,WAAW,CAAC,MAAM,EAAE,CAAC;4BACxB,MAAM,EAAE,GAAG,MAAM,WAAW,CAAC,KAAK,CAAC;4BACnC,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,MAAuB,CAAC,CAAC,EAAE,CAAC;wBACrD,CAAC;oBACF,CAAC;oBACD,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;gBACxB,CAAC;aACD,CAAC;QACH,CAAC;QAED,sCAAsC;QACtC,MAAM,UAAU,GAAG,GAAG,QAAQ,GAAG,CAAC;QAElC,OAAO;YACN,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC;gBAC5B,IAAI,KAAK,EAAE,MAAM,CAAC,EAAE,UAAU,CAAC,IAAI,UAAU,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;oBACnE,MAAM,UAAU,GAAG,MAAM,UAAU,CAAC,KAAK,CAAC;oBAC1C,MAAM,SAAS,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;oBAC9C,IAAI,SAAS,CAAC,MAAM,EAAE,CAAC;wBACtB,MAAM,KAAK,GAAG,MAAM,SAAS,CAAC,KAAK,CAAC;wBACpC,MAAM,WAAW,GAAG,kBAAkB,CAAC,GAAG,CAAC,GAAG,CAAC,KAAU,EAAE,UAAU,CAAC,CAAC,CAAC;wBACxE,IAAI,WAAW,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;4BACpC,4CAA4C;4BAC5C,MAAM,YAAY,GAAkB;gCACnC,MAAM,EAAE,IAAI;gCACZ,QAAQ,EAAE,SAAS,CAAC,QAAQ;gCAC5B,KAAK,EAAE,OAAO,CAAC,OAAO,CAAC,KAAU,CAAC;gCAClC,MAAM,EAAE,SAAS,CAAC,MAAM;gCACxB,OAAO,EAAE,SAAS,CAAC,OAAO;gCAC1B,MAAM,EAAE,SAAS,CAAC,MAAM;6BACxB,CAAC;4BACF,MAAM,CAAC,UAAU,EAAE,YAAY,CAA4B,CAAC;wBAC7D,CAAC;6BAAM,CAAC;4BACP,UAAU,CAAC,MAAM,CAAC,GAAG,QAAQ,IAAI,UAAU,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;wBAChE,CAAC;oBACF,CAAC;yBAAM,CAAC;wBACP,UAAU,CAAC,MAAM,CAAC,GAAG,QAAQ,IAAI,UAAU,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;oBAChE,CAAC;gBACF,CAAC;YACF,CAAC;YACD,KAAK,CAAC,IAAI,CAAC,KAAa,EAAE,MAAe;gBACxC,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,UAAU,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;gBAC/G,MAAM,OAAO,GAA8B,EAAE,CAAC;gBAC9C,KAAK,MAAM,CAAC,EAAE,UAAU,CAAC,IAAI,YAAY,EAAE,CAAC;oBAC3C,MAAM,UAAU,GAAG,MAAM,UAAU,CAAC,KAAK,CAAC;oBAC1C,MAAM,SAAS,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;oBAC9C,IAAI,SAAS,CAAC,MAAM,EAAE,CAAC;wBACtB,MAAM,KAAK,GAAG,MAAM,SAAS,CAAC,KAAK,CAAC;wBACpC,MAAM,WAAW,GAAG,kBAAkB,CAAC,GAAG,CAAC,GAAG,CAAC,KAAU,EAAE,UAAU,CAAC,CAAC,CAAC;wBACxE,IAAI,WAAW,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;4BACpC,MAAM,YAAY,GAAkB;gCACnC,MAAM,EAAE,IAAI;gCACZ,QAAQ,EAAE,SAAS,CAAC,QAAQ;gCAC5B,KAAK,EAAE,OAAO,CAAC,OAAO,CAAC,KAAU,CAAC;gCAClC,MAAM,EAAE,SAAS,CAAC,MAAM;gCACxB,OAAO,EAAE,SAAS,CAAC,OAAO;gCAC1B,MAAM,EAAE,SAAS,CAAC,MAAM;6BACxB,CAAC;4BACF,OAAO,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC,CAAC;wBAC1C,CAAC;6BAAM,CAAC;4BACP,UAAU,CAAC,MAAM,CAAC,GAAG,QAAQ,IAAI,UAAU,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;wBAChE,CAAC;oBACF,CAAC;yBAAM,CAAC;wBACP,UAAU,CAAC,MAAM,CAAC,GAAG,QAAQ,IAAI,UAAU,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;oBAChE,CAAC;gBACF,CAAC;gBACD,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC;YACxC,CAAC;SACD,CAAC;IACH,CAAC;IAED,sCAAsC;IAEtC,QAAQ;QACP,OAAO,IAAI,CAAC,KAAK,CAAC;IACnB,CAAC;CACD"}
@@ -0,0 +1,57 @@
1
+ import type { BlobStore, CacheLike } from "./types.js";
2
+ export interface KeyMeta {
3
+ source: "local" | "upstream" | "tombstone";
4
+ }
5
+ /**
6
+ * Manifest for tracking key sources (local vs upstream vs tombstone).
7
+ *
8
+ * Individual entries stored in blob for persistence.
9
+ * Aggregated manifest cached as single entry for fast cross-instance reads.
10
+ */
11
+ export declare class ManifestLog {
12
+ private kv;
13
+ private cache;
14
+ private cacheKey;
15
+ constructor(blobStore: BlobStore, manifestPrefix: string, cache?: CacheLike);
16
+ /**
17
+ * Get the source for a specific key.
18
+ * Returns null if key is not in manifest (unknown).
19
+ */
20
+ getKeySource(key: string): Promise<KeyMeta | null>;
21
+ /**
22
+ * Record a key as local or upstream.
23
+ */
24
+ recordAdd(key: string, source: "local" | "upstream"): Promise<void>;
25
+ /**
26
+ * Record a key deletion (tombstone).
27
+ */
28
+ recordDelete(key: string): Promise<void>;
29
+ /**
30
+ * Delete a manifest entry (for cleanup).
31
+ */
32
+ remove(key: string): Promise<void>;
33
+ /**
34
+ * Delete all manifest entries.
35
+ */
36
+ destroy(): Promise<void>;
37
+ /**
38
+ * Get all manifest entries.
39
+ */
40
+ getAll(): Promise<Map<string, KeyMeta>>;
41
+ /**
42
+ * Get manifest state with keys map.
43
+ */
44
+ getManifest(): Promise<{
45
+ keys: Map<string, KeyMeta>;
46
+ }>;
47
+ /**
48
+ * Load manifest from cache or blob.
49
+ * Caches aggregated result for fast repeated reads.
50
+ */
51
+ private loadManifest;
52
+ /**
53
+ * Invalidate the cached manifest.
54
+ */
55
+ private invalidateCache;
56
+ }
57
+ //# sourceMappingURL=manifest-log.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manifest-log.d.ts","sourceRoot":"","sources":["../src/manifest-log.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAEvD,MAAM,WAAW,OAAO;IACvB,MAAM,EAAE,OAAO,GAAG,UAAU,GAAG,WAAW,CAAC;CAC3C;AASD;;;;;GAKG;AACH,qBAAa,WAAW;IACvB,OAAO,CAAC,EAAE,CAAiB;IAC3B,OAAO,CAAC,KAAK,CAAwB;IACrC,OAAO,CAAC,QAAQ,CAAS;gBAEb,SAAS,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,SAAS;IAY3E;;;OAGG;IACG,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;IAKxD;;OAEG;IACG,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,GAAG,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAKzE;;OAEG;IACG,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAK9C;;OAEG;IACG,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKxC;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAO9B;;OAEG;IACG,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAI7C;;OAEG;IACG,WAAW,IAAI,OAAO,CAAC;QAAE,IAAI,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,CAAC;IAI5D;;;OAGG;YACW,YAAY;IAuC1B;;OAEG;YACW,eAAe;CAU7B"}