@quereus/store 4.5.0 → 4.7.0

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 (107) hide show
  1. package/README.md +34 -6
  2. package/dist/src/common/encoding.d.ts +4 -3
  3. package/dist/src/common/encoding.d.ts.map +1 -1
  4. package/dist/src/common/encoding.js +17 -13
  5. package/dist/src/common/encoding.js.map +1 -1
  6. package/dist/src/common/events.d.ts +31 -25
  7. package/dist/src/common/events.d.ts.map +1 -1
  8. package/dist/src/common/events.js +38 -39
  9. package/dist/src/common/events.js.map +1 -1
  10. package/dist/src/common/implicit-unique-index.d.ts +80 -0
  11. package/dist/src/common/implicit-unique-index.d.ts.map +1 -0
  12. package/dist/src/common/implicit-unique-index.js +148 -0
  13. package/dist/src/common/implicit-unique-index.js.map +1 -0
  14. package/dist/src/common/index.d.ts +7 -3
  15. package/dist/src/common/index.d.ts.map +1 -1
  16. package/dist/src/common/index.js +5 -2
  17. package/dist/src/common/index.js.map +1 -1
  18. package/dist/src/common/json-key.d.ts +30 -2
  19. package/dist/src/common/json-key.d.ts.map +1 -1
  20. package/dist/src/common/json-key.js +49 -2
  21. package/dist/src/common/json-key.js.map +1 -1
  22. package/dist/src/common/key-builder.d.ts +40 -20
  23. package/dist/src/common/key-builder.d.ts.map +1 -1
  24. package/dist/src/common/key-builder.js +31 -23
  25. package/dist/src/common/key-builder.js.map +1 -1
  26. package/dist/src/common/kv-store.d.ts +10 -0
  27. package/dist/src/common/kv-store.d.ts.map +1 -1
  28. package/dist/src/common/pk-key-resolution.d.ts +348 -0
  29. package/dist/src/common/pk-key-resolution.d.ts.map +1 -0
  30. package/dist/src/common/pk-key-resolution.js +481 -0
  31. package/dist/src/common/pk-key-resolution.js.map +1 -0
  32. package/dist/src/common/store-module-access-plan.d.ts +32 -0
  33. package/dist/src/common/store-module-access-plan.d.ts.map +1 -0
  34. package/dist/src/common/store-module-access-plan.js +428 -0
  35. package/dist/src/common/store-module-access-plan.js.map +1 -0
  36. package/dist/src/common/store-module-alter-column.d.ts +23 -0
  37. package/dist/src/common/store-module-alter-column.d.ts.map +1 -0
  38. package/dist/src/common/store-module-alter-column.js +389 -0
  39. package/dist/src/common/store-module-alter-column.js.map +1 -0
  40. package/dist/src/common/store-module-alter.d.ts +55 -0
  41. package/dist/src/common/store-module-alter.d.ts.map +1 -0
  42. package/dist/src/common/store-module-alter.js +504 -0
  43. package/dist/src/common/store-module-alter.js.map +1 -0
  44. package/dist/src/common/store-module-base.d.ts +268 -0
  45. package/dist/src/common/store-module-base.d.ts.map +1 -0
  46. package/dist/src/common/store-module-base.js +362 -0
  47. package/dist/src/common/store-module-base.js.map +1 -0
  48. package/dist/src/common/store-module-catalog.d.ts +269 -0
  49. package/dist/src/common/store-module-catalog.d.ts.map +1 -0
  50. package/dist/src/common/store-module-catalog.js +462 -0
  51. package/dist/src/common/store-module-catalog.js.map +1 -0
  52. package/dist/src/common/store-module-index-build.d.ts +88 -0
  53. package/dist/src/common/store-module-index-build.d.ts.map +1 -0
  54. package/dist/src/common/store-module-index-build.js +280 -0
  55. package/dist/src/common/store-module-index-build.js.map +1 -0
  56. package/dist/src/common/store-module-index.d.ts +116 -0
  57. package/dist/src/common/store-module-index.d.ts.map +1 -0
  58. package/dist/src/common/store-module-index.js +373 -0
  59. package/dist/src/common/store-module-index.js.map +1 -0
  60. package/dist/src/common/store-module-rename.d.ts +49 -0
  61. package/dist/src/common/store-module-rename.d.ts.map +1 -0
  62. package/dist/src/common/store-module-rename.js +268 -0
  63. package/dist/src/common/store-module-rename.js.map +1 -0
  64. package/dist/src/common/store-module-schema-rewrite.d.ts +57 -0
  65. package/dist/src/common/store-module-schema-rewrite.d.ts.map +1 -0
  66. package/dist/src/common/store-module-schema-rewrite.js +140 -0
  67. package/dist/src/common/store-module-schema-rewrite.js.map +1 -0
  68. package/dist/src/common/store-module-schema-sync.d.ts +232 -0
  69. package/dist/src/common/store-module-schema-sync.d.ts.map +1 -0
  70. package/dist/src/common/store-module-schema-sync.js +529 -0
  71. package/dist/src/common/store-module-schema-sync.js.map +1 -0
  72. package/dist/src/common/store-module.d.ts +43 -909
  73. package/dist/src/common/store-module.d.ts.map +1 -1
  74. package/dist/src/common/store-module.js +184 -3276
  75. package/dist/src/common/store-module.js.map +1 -1
  76. package/dist/src/common/store-table-base.d.ts +539 -0
  77. package/dist/src/common/store-table-base.d.ts.map +1 -0
  78. package/dist/src/common/store-table-base.js +900 -0
  79. package/dist/src/common/store-table-base.js.map +1 -0
  80. package/dist/src/common/store-table-constraints.d.ts +237 -0
  81. package/dist/src/common/store-table-constraints.d.ts.map +1 -0
  82. package/dist/src/common/store-table-constraints.js +624 -0
  83. package/dist/src/common/store-table-constraints.js.map +1 -0
  84. package/dist/src/common/store-table-scan.d.ts +452 -0
  85. package/dist/src/common/store-table-scan.d.ts.map +1 -0
  86. package/dist/src/common/store-table-scan.js +901 -0
  87. package/dist/src/common/store-table-scan.js.map +1 -0
  88. package/dist/src/common/store-table.d.ts +71 -1144
  89. package/dist/src/common/store-table.d.ts.map +1 -1
  90. package/dist/src/common/store-table.js +168 -2385
  91. package/dist/src/common/store-table.js.map +1 -1
  92. package/dist/src/testing/index.d.ts +12 -0
  93. package/dist/src/testing/index.d.ts.map +1 -0
  94. package/dist/src/testing/index.js +12 -0
  95. package/dist/src/testing/index.js.map +1 -0
  96. package/dist/src/testing/kv-assert.d.ts +19 -0
  97. package/dist/src/testing/kv-assert.d.ts.map +1 -0
  98. package/dist/src/testing/kv-assert.js +25 -0
  99. package/dist/src/testing/kv-assert.js.map +1 -0
  100. package/dist/src/testing/kv-conformance.d.ts.map +1 -1
  101. package/dist/src/testing/kv-conformance.js +1 -15
  102. package/dist/src/testing/kv-conformance.js.map +1 -1
  103. package/dist/src/testing/kv-provider-conformance.d.ts +54 -0
  104. package/dist/src/testing/kv-provider-conformance.d.ts.map +1 -0
  105. package/dist/src/testing/kv-provider-conformance.js +183 -0
  106. package/dist/src/testing/kv-provider-conformance.js.map +1 -0
  107. package/package.json +8 -8
@@ -0,0 +1,183 @@
1
+ /**
2
+ * Shared KVStoreProvider atomic-batch conformance suite — test-support; run under Mocha.
3
+ *
4
+ * Sibling of {@link runKVStoreConformance} (kv-conformance.ts), one level up the
5
+ * abstraction: that suite tests the {@link KVStore} contract, this one tests the
6
+ * PROVIDER-level contract that a single {@link KVStoreProvider} can commit ops across
7
+ * SEVERAL of its stores in one durable, all-or-nothing physical write
8
+ * ({@link KVStoreProvider.beginAtomicBatch} → {@link AtomicBatch}).
9
+ *
10
+ * Only providers whose stores share one atomic commit domain implement that method,
11
+ * so this suite is opt-in per backend rather than part of the store battery. Each
12
+ * backend supplies a small {@link KVProviderBackend} adapter (how to open a provider,
13
+ * how to open a SECOND independent one, how to tear both down); this file supplies
14
+ * every assertion, so the LevelDB and IndexedDB implementations cannot quietly drift.
15
+ *
16
+ * Genuinely backend-specific behavior stays in the per-plugin spec: LevelDB's
17
+ * "beginAtomicBatch() returns undefined before the shared root is open", IndexedDB's
18
+ * post-write read-cache invalidation, and so on.
19
+ *
20
+ * Dependency and Mocha-global handling mirror kv-conformance.ts — see its header.
21
+ *
22
+ * NOTE: this asserts the QUEUE + COMMIT contract (what lands where, in what order),
23
+ * not crash atomicity — nothing here injects a mid-commit failure, so a backend that
24
+ * committed op-by-op instead of in one physical write would still pass. If a backend
25
+ * ever grows a fault-injection seam (a store that throws on the Nth physical write),
26
+ * add a torn-write case asserting nothing from the batch is visible afterwards.
27
+ *
28
+ * Nothing here reuses a batch after `write()` either: {@link AtomicBatch} declares that
29
+ * unspecified (LevelDB's chained batch is closed by write, IndexedDB's resets), so pinning
30
+ * a behavior would be inventing contract rather than asserting it.
31
+ */
32
+ import assert from 'node:assert/strict';
33
+ import { QuereusError, StatusCode } from '@quereus/quereus';
34
+ import { InMemoryKVStore } from '../common/memory-store.js';
35
+ import { assertBytes, b } from './kv-assert.js';
36
+ const K1 = b(0x01);
37
+ const V1 = b(0x10);
38
+ const K2 = b(0x02);
39
+ const V2 = b(0x20);
40
+ /**
41
+ * Open the provider's atomic batch, asserting it exists. A provider may only expose one
42
+ * once its physical commit domain is open (LevelDB opens its shared root lazily on the
43
+ * first getStore), so every caller opens at least one store first.
44
+ */
45
+ function beginBatch(provider) {
46
+ const begin = provider.beginAtomicBatch;
47
+ assert.ok(begin, 'a provider under provider-conformance must implement beginAtomicBatch');
48
+ const batch = begin.call(provider);
49
+ assert.ok(batch, 'beginAtomicBatch() must return a batch once a store is open');
50
+ return batch;
51
+ }
52
+ /**
53
+ * Assert that `queueOp` — queueing an op against a store handle this provider never
54
+ * handed out — throws `QuereusError` / `StatusCode.MISUSE`. Handed a thunk rather than
55
+ * a promise because the contract is a SYNCHRONOUS throw at queue time, not at write().
56
+ */
57
+ function assertMisuse(queueOp, what) {
58
+ let err;
59
+ try {
60
+ queueOp();
61
+ }
62
+ catch (e) {
63
+ err = e;
64
+ }
65
+ assert.ok(err instanceof QuereusError, `${what}: expected a QuereusError, got ${String(err)}`);
66
+ assert.strictEqual(err.code, StatusCode.MISUSE, `${what}: wrong status code`);
67
+ }
68
+ /**
69
+ * Register the provider atomic-batch conformance battery under `describe(name)`. Call
70
+ * once per backend whose provider implements `beginAtomicBatch`.
71
+ */
72
+ export function runKVProviderConformance(name, makeProviderBackend) {
73
+ describe(name, () => {
74
+ let backend;
75
+ let provider;
76
+ beforeEach(async () => {
77
+ backend = makeProviderBackend();
78
+ provider = await backend.open();
79
+ });
80
+ afterEach(async () => {
81
+ await backend.teardown();
82
+ });
83
+ it('commits data + index ops across stores in one atomic batch', async () => {
84
+ const dataStore = await provider.getStore('main', 't');
85
+ const indexStore = await provider.getIndexStore('main', 't', 'ix');
86
+ const batch = beginBatch(provider);
87
+ batch.put(dataStore, K1, V1);
88
+ batch.put(indexStore, K2, V2);
89
+ await batch.write();
90
+ assertBytes(await dataStore.get(K1), V1);
91
+ assertBytes(await indexStore.get(K2), V2);
92
+ // Each op landed only in its OWN store — the batch addresses stores by handle,
93
+ // so a provider that mixed handles up would still commit, just to the wrong place.
94
+ assert.strictEqual(await indexStore.get(K1), undefined, 'data op must not reach the index store');
95
+ assert.strictEqual(await dataStore.get(K2), undefined, 'index op must not reach the data store');
96
+ });
97
+ it('queued ops are not visible until write()', async () => {
98
+ const dataStore = await provider.getStore('main', 't');
99
+ const indexStore = await provider.getIndexStore('main', 't', 'ix');
100
+ await dataStore.put(K1, V1);
101
+ const batch = beginBatch(provider);
102
+ batch.delete(dataStore, K1);
103
+ batch.put(indexStore, K2, V2);
104
+ // Queueing commits nothing: reads still see the pre-batch state. On a caching
105
+ // backend these reads also warm the cache, so the post-write reads below fail
106
+ // unless the commit invalidates what it touched.
107
+ assertBytes(await dataStore.get(K1), V1, 'queued delete must not apply before write()');
108
+ assert.strictEqual(await indexStore.get(K2), undefined, 'queued put must not apply before write()');
109
+ await batch.write();
110
+ assert.strictEqual(await dataStore.get(K1), undefined);
111
+ assertBytes(await indexStore.get(K2), V2);
112
+ });
113
+ it('a batched delete of a missing key is a no-op, not an error', async () => {
114
+ // The coordinator replays whatever a transaction queued; an index-maintenance
115
+ // delete for an entry that was never written reaches the batch verbatim.
116
+ const dataStore = await provider.getStore('main', 't');
117
+ const batch = beginBatch(provider);
118
+ batch.delete(dataStore, K1); // never written
119
+ batch.put(dataStore, K2, V2);
120
+ await batch.write();
121
+ assert.strictEqual(await dataStore.get(K1), undefined);
122
+ assertBytes(await dataStore.get(K2), V2);
123
+ });
124
+ it('a delete and a put in one batch both apply', async () => {
125
+ const dataStore = await provider.getStore('main', 't');
126
+ await dataStore.put(K1, V1);
127
+ const batch = beginBatch(provider);
128
+ batch.delete(dataStore, K1);
129
+ batch.put(dataStore, K2, V2);
130
+ await batch.write();
131
+ assert.strictEqual(await dataStore.get(K1), undefined);
132
+ assertBytes(await dataStore.get(K2), V2);
133
+ });
134
+ it('same-key ops in one batch resolve to the last one queued', async () => {
135
+ // The transaction coordinator replays a transaction's pending ops into one atomic
136
+ // batch without collapsing duplicates, so a transaction that writes then deletes
137
+ // the same row lands both ops here and depends on queue order.
138
+ const dataStore = await provider.getStore('main', 't');
139
+ await dataStore.put(K1, V1);
140
+ const putThenDelete = beginBatch(provider);
141
+ putThenDelete.put(dataStore, K1, V2);
142
+ putThenDelete.delete(dataStore, K1);
143
+ await putThenDelete.write();
144
+ assert.strictEqual(await dataStore.get(K1), undefined);
145
+ const deleteThenPut = beginBatch(provider);
146
+ deleteThenPut.delete(dataStore, K1);
147
+ deleteThenPut.put(dataStore, K1, V2);
148
+ await deleteThenPut.write();
149
+ assertBytes(await dataStore.get(K1), V2);
150
+ });
151
+ it('clear() discards queued ops (nothing is committed)', async () => {
152
+ const dataStore = await provider.getStore('main', 't');
153
+ const batch = beginBatch(provider);
154
+ batch.put(dataStore, K1, V1);
155
+ batch.clear();
156
+ await batch.write();
157
+ assert.strictEqual(await dataStore.get(K1), undefined);
158
+ assert.strictEqual(await dataStore.approximateCount(), 0);
159
+ });
160
+ it('an empty write() commits nothing and does not throw', async () => {
161
+ const dataStore = await provider.getStore('main', 't'); // also opens the commit domain
162
+ const batch = beginBatch(provider);
163
+ await batch.write(); // no queued ops
164
+ assert.strictEqual(await dataStore.approximateCount(), 0);
165
+ });
166
+ it('throws MISUSE for a handle not produced by this provider (wrong type)', async () => {
167
+ await provider.getStore('main', 't'); // open the commit domain so a batch is available
168
+ const foreign = new InMemoryKVStore();
169
+ const batch = beginBatch(provider);
170
+ assertMisuse(() => batch.put(foreign, K1, V1), 'put with a wrong-type handle');
171
+ assertMisuse(() => batch.delete(foreign, K1), 'delete with a wrong-type handle');
172
+ });
173
+ it('throws MISUSE for a store of the right type bound to a different provider', async () => {
174
+ const otherProvider = await backend.openForeign();
175
+ const foreign = await otherProvider.getStore('main', 't');
176
+ await provider.getStore('main', 't'); // open THIS provider's commit domain
177
+ const batch = beginBatch(provider);
178
+ assertMisuse(() => batch.delete(foreign, K1), 'delete with another provider\'s handle');
179
+ assertMisuse(() => batch.put(foreign, K1, V1), 'put with another provider\'s handle');
180
+ });
181
+ });
182
+ }
183
+ //# sourceMappingURL=kv-provider-conformance.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kv-provider-conformance.js","sourceRoot":"","sources":["../../../src/testing/kv-provider-conformance.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@quereus/store",
3
- "version": "4.5.0",
3
+ "version": "4.7.0",
4
4
  "type": "module",
5
5
  "description": "Abstract key-value storage module for Quereus",
6
6
  "keywords": [
@@ -32,14 +32,14 @@
32
32
  "import": "./dist/src/index.js"
33
33
  },
34
34
  "./testing": {
35
- "types": "./dist/src/testing/kv-conformance.d.ts",
36
- "import": "./dist/src/testing/kv-conformance.js"
35
+ "types": "./dist/src/testing/index.d.ts",
36
+ "import": "./dist/src/testing/index.js"
37
37
  }
38
38
  },
39
39
  "typesVersions": {
40
40
  "*": {
41
41
  "testing": [
42
- "./dist/src/testing/kv-conformance.d.ts"
42
+ "./dist/src/testing/index.d.ts"
43
43
  ]
44
44
  }
45
45
  },
@@ -52,12 +52,12 @@
52
52
  "test:single": "cd ../.. && node --import ./packages/quereus-store/register.mjs node_modules/mocha/bin/mocha.js --bail"
53
53
  },
54
54
  "peerDependencies": {
55
- "@quereus/isolation": "^4.5.0",
56
- "@quereus/quereus": "^4.5.0"
55
+ "@quereus/isolation": "^4.7.0",
56
+ "@quereus/quereus": "^4.7.0"
57
57
  },
58
58
  "dependencies": {
59
- "@quereus/isolation": "^4.5.0",
60
- "@quereus/quereus": "^4.5.0"
59
+ "@quereus/isolation": "^4.7.0",
60
+ "@quereus/quereus": "^4.7.0"
61
61
  },
62
62
  "devDependencies": {
63
63
  "@types/mocha": "^10.0.10",