@procedures/collections 0.4.0 → 0.6.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.
- package/CHANGELOG.md +20 -0
- package/README.md +28 -10
- package/dist/.tsbuildinfo +1 -1
- package/dist/storage/interface.d.ts +25 -4
- package/dist/storage/interface.d.ts.map +1 -1
- package/dist/storage/interface.js.map +1 -1
- package/dist/storage/memory.d.ts +38 -7
- package/dist/storage/memory.d.ts.map +1 -1
- package/dist/storage/memory.js +79 -25
- package/dist/storage/memory.js.map +1 -1
- package/dist/testing/check.d.ts +0 -2
- package/dist/testing/check.d.ts.map +1 -1
- package/dist/testing/check.js +0 -4
- package/dist/testing/check.js.map +1 -1
- package/dist/testing/storage-contract.d.ts +11 -15
- package/dist/testing/storage-contract.d.ts.map +1 -1
- package/dist/testing/storage-contract.js +167 -45
- package/dist/testing/storage-contract.js.map +1 -1
- package/package.json +1 -1
- package/src/storage/interface.ts +26 -4
- package/src/storage/memory.ts +95 -26
- package/src/testing/check.ts +0 -5
- package/src/testing/storage-contract.ts +174 -60
|
@@ -15,8 +15,12 @@
|
|
|
15
15
|
*
|
|
16
16
|
* describeCollectionStorageContract("MyStorage", { create: () => new MyStorage() }, { describe, it });
|
|
17
17
|
* ```
|
|
18
|
+
*
|
|
19
|
+
* The suite has no option that hides a difference of a storage. Each storage keeps copies, keeps
|
|
20
|
+
* a stored `null`, gives a delta in the order of the last change of each id, and rejects each
|
|
21
|
+
* operation after `close()`.
|
|
18
22
|
*/
|
|
19
|
-
import {
|
|
23
|
+
import { holds, rejects, same, show } from "./check.js";
|
|
20
24
|
const item = (id, n, tags) => (tags === undefined ? { id, n } : { id, n, tags });
|
|
21
25
|
const ids = (items) => items.map((value) => value.id);
|
|
22
26
|
/** True for a value with a `then` function. */
|
|
@@ -54,12 +58,11 @@ function seeded(seed) {
|
|
|
54
58
|
}
|
|
55
59
|
/**
|
|
56
60
|
* This function gives the cases of the contract for a storage. Each case makes its own storage
|
|
57
|
-
* with `options.create`. A case for an optional method (`getEntries`, `
|
|
58
|
-
* `getMetadata`) skips a storage without the method.
|
|
61
|
+
* with `options.create`. A case for an optional method (`getEntries`, `getIds`, `getChangesSince`,
|
|
62
|
+
* `flush`, `getMetadata`) skips a storage without the method.
|
|
59
63
|
*/
|
|
60
64
|
export function collectionStorageContract(options) {
|
|
61
65
|
const create = () => options.create();
|
|
62
|
-
const nullValues = options.nullValues ?? true;
|
|
63
66
|
const cases = [];
|
|
64
67
|
const add = (name, run) => {
|
|
65
68
|
cases.push({ name, run });
|
|
@@ -99,6 +102,8 @@ export function collectionStorageContract(options) {
|
|
|
99
102
|
same(await storage.deleteBatch(["a", "b"]), 0, "deleteBatch() of missing ids");
|
|
100
103
|
if (storage.getEntries)
|
|
101
104
|
same(await storage.getEntries(), [], "getEntries() of an empty storage");
|
|
105
|
+
if (storage.getIds)
|
|
106
|
+
same(await storage.getIds(), [], "getIds() of an empty storage");
|
|
102
107
|
}));
|
|
103
108
|
add("set() stores an item, and a second set() of the id replaces it", () => withStorage(create, async (storage) => {
|
|
104
109
|
await storage.set("a", item("a", 1, ["x"]));
|
|
@@ -141,6 +146,23 @@ export function collectionStorageContract(options) {
|
|
|
141
146
|
same(ids(await storage.find(() => true)), ["a", "b", "c"], "find() keeps the order of the entries");
|
|
142
147
|
if (storage.getEntries)
|
|
143
148
|
same(await storage.getEntries(), expected, "getEntries() keeps the order of the entries");
|
|
149
|
+
if (storage.getIds)
|
|
150
|
+
same(await storage.getIds(), ["a", "b", "c"], "getIds() keeps the order of the entries");
|
|
151
|
+
}));
|
|
152
|
+
add("getIds() gives the ids of the entries in their order, as a new array", (context) => withStorage(create, async (storage) => {
|
|
153
|
+
if (lacks(storage, "getIds", context))
|
|
154
|
+
return;
|
|
155
|
+
await storage.setBatch([["c", item("c", 3)], ["a", item("a", 1)], ["b", item("b", 2)]]);
|
|
156
|
+
await storage.delete("a");
|
|
157
|
+
await storage.set("a", item("a", 10));
|
|
158
|
+
const first = await storage.getIds();
|
|
159
|
+
same(first, ["c", "b", "a"], "getIds() after a delete and a new set() of an id");
|
|
160
|
+
first.splice(0);
|
|
161
|
+
same(await storage.getIds(), ["c", "b", "a"], "getIds() after a change of an earlier result");
|
|
162
|
+
if (storage.getEntries)
|
|
163
|
+
same(await storage.getIds(), (await storage.getEntries()).map(([id]) => id), "getIds() and the ids of getEntries()");
|
|
164
|
+
await storage.clear();
|
|
165
|
+
same(await storage.getIds(), [], "getIds() after clear()");
|
|
144
166
|
}));
|
|
145
167
|
add("find() gives the matching items in order, and an error of the predicate rejects the promise", () => withStorage(create, async (storage) => {
|
|
146
168
|
await storage.setBatch([["a", item("a", 1)], ["b", item("b", 2)], ["c", item("c", 3)], ["d", item("d", 4)]]);
|
|
@@ -177,23 +199,33 @@ export function collectionStorageContract(options) {
|
|
|
177
199
|
same(await storage.has("z"), false, "has() of an id that only a result got");
|
|
178
200
|
same(await storage.getBatch(["a"]), new Map([["a", item("a", 1)]]), "getBatch() after a change of a result");
|
|
179
201
|
}));
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
202
|
+
add("the storage keeps copies: a change of a written or a read value does not change the item", () => withStorage(create, async (storage) => {
|
|
203
|
+
const value = item("a", 1, ["x"]);
|
|
204
|
+
await storage.set("a", value);
|
|
205
|
+
value.n = 99;
|
|
206
|
+
value.tags.push("changed after set");
|
|
207
|
+
const batch = item("b", 2, ["y"]);
|
|
208
|
+
await storage.setBatch([["b", batch]]);
|
|
209
|
+
batch.tags.push("changed after setBatch");
|
|
210
|
+
const read = (await storage.get("a"));
|
|
211
|
+
same(read, item("a", 1, ["x"]), "get() after a change of the value that set() took");
|
|
212
|
+
same(await storage.get("b"), item("b", 2, ["y"]), "get() after a change of the value that setBatch() took");
|
|
213
|
+
read.n = 98;
|
|
214
|
+
read.tags.push("changed after get");
|
|
215
|
+
(await storage.getAll())[0].n = 97;
|
|
216
|
+
(await storage.getBatch(["a"])).get("a").n = 96;
|
|
217
|
+
(await storage.find((found) => {
|
|
218
|
+
found.tags?.push("changed in the predicate");
|
|
219
|
+
return true;
|
|
220
|
+
}))[0].n = 95;
|
|
221
|
+
if (storage.getEntries)
|
|
222
|
+
(await storage.getEntries())[0][1].n = 94;
|
|
223
|
+
if (storage.getChangesSince)
|
|
224
|
+
(await storage.getChangesSince()).changed[0][1].n = 93;
|
|
225
|
+
same(await storage.get("a"), item("a", 1, ["x"]), "get() after changes of the read values");
|
|
226
|
+
same(await storage.get("b"), item("b", 2, ["y"]), "get() of the other item after changes of the read values");
|
|
227
|
+
}));
|
|
228
|
+
add("the storage keeps JSON values, also null", () => withStorage(create, async (typed) => {
|
|
197
229
|
const storage = typed;
|
|
198
230
|
const values = [
|
|
199
231
|
["object", { text: "é ✓ 😀", list: [1, null, { deep: true }], n: 1.5, empty: {}, none: [] }],
|
|
@@ -203,17 +235,18 @@ export function collectionStorageContract(options) {
|
|
|
203
235
|
["negative", -2.25],
|
|
204
236
|
["false", false],
|
|
205
237
|
["list", [1, "two", [3]]],
|
|
238
|
+
["null", null],
|
|
206
239
|
];
|
|
207
|
-
if (nullValues)
|
|
208
|
-
values.push(["null", null]);
|
|
209
240
|
await storage.setBatch(values);
|
|
210
241
|
for (const [id, value] of values)
|
|
211
242
|
same(await storage.get(id), value, `get("${id}")`);
|
|
212
243
|
same(await storage.getAll(), values.map(([, value]) => value), "getAll() of the JSON values");
|
|
213
244
|
same(await storage.getBatch(values.map(([id]) => id)), new Map(values), "getBatch() of the JSON values");
|
|
214
245
|
same(await storage.size(), values.length, "size() with the JSON values");
|
|
215
|
-
|
|
216
|
-
|
|
246
|
+
same(await storage.has("null"), true, "has() of an id whose value is null");
|
|
247
|
+
await storage.set("single", null);
|
|
248
|
+
same(await storage.get("single"), null, "get() of an id that set() gave the value null");
|
|
249
|
+
same(await storage.get("missing"), undefined, "get() of a missing id, next to a stored null");
|
|
217
250
|
}));
|
|
218
251
|
add("writes that run at the same time keep each write", () => withStorage(create, async (storage) => {
|
|
219
252
|
const count = 20;
|
|
@@ -221,16 +254,17 @@ export function collectionStorageContract(options) {
|
|
|
221
254
|
same(await storage.size(), count, `size() after ${count} writes at the same time`);
|
|
222
255
|
same(ids(await storage.getAll()).sort(), Array.from({ length: count }, (_, n) => `k${n}`).sort(), "the ids after the writes at the same time");
|
|
223
256
|
}));
|
|
224
|
-
add("getChangesSince() without a version gives every item", (context) => withStorage(create, async (storage) => {
|
|
257
|
+
add("getChangesSince() without a version gives every item, in the order of the entries", (context) => withStorage(create, async (storage) => {
|
|
225
258
|
if (lacks(storage, "getChangesSince", context))
|
|
226
259
|
return;
|
|
227
260
|
const changes = changesOf(storage);
|
|
228
|
-
const entries = [["
|
|
261
|
+
const entries = [["c", item("c", 3)], ["a", item("a", 1)], ["b", item("b", 2)]];
|
|
229
262
|
await storage.setBatch(entries);
|
|
263
|
+
await storage.set("c", item("c", 30));
|
|
230
264
|
const first = await changes();
|
|
231
265
|
holds(typeof first.version === "string" && first.version !== "", `the version must be a text that is not empty, not ${show(first.version)}`);
|
|
232
266
|
same(first.full, true, "full of the first call");
|
|
233
|
-
same(
|
|
267
|
+
same(first.changed, [["c", item("c", 30)], ["a", item("a", 1)], ["b", item("b", 2)]], "changed of the first call: every item, in the order of the entries");
|
|
234
268
|
same(first.deleted, [], "deleted of a full result");
|
|
235
269
|
}));
|
|
236
270
|
add("getChangesSince(version) gives the items that changed after the version and the ids that were deleted", (context) => withStorage(create, async (storage) => {
|
|
@@ -245,11 +279,32 @@ export function collectionStorageContract(options) {
|
|
|
245
279
|
await storage.set("d", item("d", 4));
|
|
246
280
|
const delta = await changes(start.version);
|
|
247
281
|
same(delta.full, false, "full of a delta");
|
|
248
|
-
same(
|
|
282
|
+
same(delta.changed, [["a", item("a", 10)], ["d", item("d", 4)]], "changed of a delta");
|
|
249
283
|
same(delta.deleted, ["b"], "deleted of a delta");
|
|
250
284
|
holds(delta.version !== start.version, "the version must change after a write");
|
|
251
285
|
}));
|
|
252
|
-
add("getChangesSince()
|
|
286
|
+
add("getChangesSince(version) gives the changes in the order of the last change of each id", (context) => withStorage(create, async (storage) => {
|
|
287
|
+
if (lacks(storage, "getChangesSince", context))
|
|
288
|
+
return;
|
|
289
|
+
const changes = changesOf(storage);
|
|
290
|
+
await storage.setBatch([["a", item("a", 1)], ["b", item("b", 2)], ["c", item("c", 3)], ["d", item("d", 4)]]);
|
|
291
|
+
const start = await changes();
|
|
292
|
+
// b changes first, then a. Then b changes again: its last change comes after the change of a.
|
|
293
|
+
await storage.set("b", item("b", 20));
|
|
294
|
+
await storage.set("a", item("a", 10));
|
|
295
|
+
await storage.delete("d");
|
|
296
|
+
await storage.delete("c");
|
|
297
|
+
await storage.setBatch([["e", item("e", 5)], ["b", item("b", 21)]]);
|
|
298
|
+
const delta = await changes(start.version);
|
|
299
|
+
same({ changed: delta.changed, deleted: delta.deleted }, { changed: [["a", item("a", 10)], ["e", item("e", 5)], ["b", item("b", 21)]], deleted: ["d", "c"] }, "the order of a delta: an id written again after another id comes after it");
|
|
300
|
+
// A delete of d again is not a change. A new set of c moves it from deleted to changed.
|
|
301
|
+
await storage.delete("d");
|
|
302
|
+
await storage.set("c", item("c", 30));
|
|
303
|
+
await storage.deleteBatch(["e", "a"]);
|
|
304
|
+
const next = await changes(delta.version);
|
|
305
|
+
same({ changed: next.changed, deleted: next.deleted }, { changed: [["c", item("c", 30)]], deleted: ["e", "a"] }, "the order of the next delta");
|
|
306
|
+
}));
|
|
307
|
+
add("getChangesSince(): a deleted id that comes back is a change, clear() deletes each id in the order of the entries, and no write gives no change", (context) => withStorage(create, async (storage) => {
|
|
253
308
|
if (lacks(storage, "getChangesSince", context))
|
|
254
309
|
return;
|
|
255
310
|
const changes = changesOf(storage);
|
|
@@ -258,10 +313,11 @@ export function collectionStorageContract(options) {
|
|
|
258
313
|
await storage.delete("b");
|
|
259
314
|
await storage.set("b", item("b", 20));
|
|
260
315
|
const back = await changes(start.version);
|
|
261
|
-
same({ full: back.full, changed:
|
|
316
|
+
same({ full: back.full, changed: back.changed, deleted: back.deleted }, { full: false, changed: [["b", item("b", 20)]], deleted: [] }, "a delete, then a set of the id");
|
|
317
|
+
// The entries are a, c, b now: b went to the end at its new set
|
|
262
318
|
await storage.clear();
|
|
263
319
|
const cleared = await changes(back.version);
|
|
264
|
-
same({ full: cleared.full, changed: cleared.changed, deleted:
|
|
320
|
+
same({ full: cleared.full, changed: cleared.changed, deleted: cleared.deleted }, { full: false, changed: [], deleted: ["a", "c", "b"] }, "the changes of clear()");
|
|
265
321
|
const quiet = await changes(cleared.version);
|
|
266
322
|
same({ full: quiet.full, changed: quiet.changed, deleted: quiet.deleted }, { full: false, changed: [], deleted: [] }, "the changes without a write");
|
|
267
323
|
}));
|
|
@@ -273,7 +329,7 @@ export function collectionStorageContract(options) {
|
|
|
273
329
|
await changes();
|
|
274
330
|
for (const unknown of ["not a version", ""]) {
|
|
275
331
|
const result = await changes(unknown);
|
|
276
|
-
same({ full: result.full, changed:
|
|
332
|
+
same({ full: result.full, changed: result.changed, deleted: result.deleted }, { full: true, changed: [["a", item("a", 1)], ["b", item("b", 2)]], deleted: [] }, `the changes since ${show(unknown)}`);
|
|
277
333
|
}
|
|
278
334
|
await withStorage(create, async (other) => {
|
|
279
335
|
await other.set("x", item("x", 9));
|
|
@@ -292,19 +348,26 @@ export function collectionStorageContract(options) {
|
|
|
292
348
|
// Two deletes fit in the log
|
|
293
349
|
await storage.deleteBatch(["a", "b"]);
|
|
294
350
|
const two = await changes(start.version);
|
|
295
|
-
same({ full: two.full, changed: two.changed, deleted:
|
|
351
|
+
same({ full: two.full, changed: two.changed, deleted: two.deleted }, { full: false, changed: [], deleted: ["a", "b"] }, "two deletes in a log of two");
|
|
296
352
|
// The third delete drops the oldest one: the start version gives all items now
|
|
297
353
|
await storage.delete("c");
|
|
298
354
|
const after = await changes(start.version);
|
|
299
|
-
same({ full: after.full, changed:
|
|
355
|
+
same({ full: after.full, changed: after.changed, deleted: after.deleted }, { full: true, changed: [["d", item("d", 4)]], deleted: [] }, "a version older than a dropped delete");
|
|
300
356
|
same((await changes(after.version)).full, false, "a version after the dropped deletes still gives a delta");
|
|
301
357
|
}));
|
|
302
358
|
}
|
|
303
|
-
add("a random sequence of writes agrees with a Map, and each version gives the right changes", () => withStorage(create, async (storage) => {
|
|
359
|
+
add("a random sequence of writes agrees with a Map, and each version gives the right changes in the right order", () => withStorage(create, async (storage) => {
|
|
304
360
|
const random = seeded(45);
|
|
305
361
|
const pool = ["a", "b", "c", "d", "e", "f", "g"];
|
|
306
362
|
const pick = () => pool[random(pool.length)];
|
|
307
363
|
const model = new Map();
|
|
364
|
+
// The model of the change log: the number of the last change of each id, oldest first
|
|
365
|
+
const lastChange = new Map();
|
|
366
|
+
let clock = 0;
|
|
367
|
+
const note = (id, deleted) => {
|
|
368
|
+
lastChange.delete(id);
|
|
369
|
+
lastChange.set(id, { at: ++clock, deleted });
|
|
370
|
+
};
|
|
308
371
|
const versions = [];
|
|
309
372
|
const hasChanges = typeof storage.getChangesSince === "function";
|
|
310
373
|
for (let step = 0; step < 80; step++) {
|
|
@@ -316,11 +379,15 @@ export function collectionStorageContract(options) {
|
|
|
316
379
|
label = `set(${id})`;
|
|
317
380
|
await storage.set(id, value);
|
|
318
381
|
model.set(id, value);
|
|
382
|
+
note(id, false);
|
|
319
383
|
}
|
|
320
384
|
else if (kind < 12) {
|
|
321
385
|
const id = pick();
|
|
322
386
|
label = `delete(${id})`;
|
|
323
|
-
|
|
387
|
+
const existed = model.delete(id);
|
|
388
|
+
if (existed)
|
|
389
|
+
note(id, true);
|
|
390
|
+
same(await storage.delete(id), existed, `the result of step ${step}: ${label}`);
|
|
324
391
|
}
|
|
325
392
|
else if (kind < 15) {
|
|
326
393
|
const batch = Array.from({ length: 1 + random(3) }, (_, index) => {
|
|
@@ -329,43 +396,63 @@ export function collectionStorageContract(options) {
|
|
|
329
396
|
});
|
|
330
397
|
label = `setBatch(${batch.map(([id]) => id).join(", ")})`;
|
|
331
398
|
await storage.setBatch(batch);
|
|
332
|
-
for (const [id, value] of batch)
|
|
399
|
+
for (const [id, value] of batch) {
|
|
333
400
|
model.set(id, value);
|
|
401
|
+
note(id, false);
|
|
402
|
+
}
|
|
334
403
|
}
|
|
335
404
|
else if (kind < 18) {
|
|
336
405
|
const batch = Array.from({ length: 1 + random(3) }, pick);
|
|
337
406
|
label = `deleteBatch(${batch.join(", ")})`;
|
|
338
|
-
const expected = batch.filter((id) =>
|
|
407
|
+
const expected = batch.filter((id) => {
|
|
408
|
+
const existed = model.delete(id);
|
|
409
|
+
if (existed)
|
|
410
|
+
note(id, true);
|
|
411
|
+
return existed;
|
|
412
|
+
}).length;
|
|
339
413
|
same(await storage.deleteBatch(batch), expected, `the result of step ${step}: ${label}`);
|
|
340
414
|
}
|
|
341
415
|
else if (kind < 19) {
|
|
342
416
|
label = "clear()";
|
|
343
417
|
await storage.clear();
|
|
418
|
+
for (const id of model.keys())
|
|
419
|
+
note(id, true);
|
|
344
420
|
model.clear();
|
|
345
421
|
}
|
|
346
422
|
else {
|
|
347
423
|
label = "a saved version";
|
|
348
424
|
if (hasChanges)
|
|
349
|
-
versions.push({ version: (await storage.getChangesSince()).version, entries: new Map(model) });
|
|
425
|
+
versions.push({ version: (await storage.getChangesSince()).version, entries: new Map(model), at: clock });
|
|
350
426
|
}
|
|
351
427
|
same(await storage.getAll(), [...model.values()], `getAll() after step ${step}: ${label}`);
|
|
352
428
|
}
|
|
353
429
|
same(await storage.size(), model.size, "size() after the sequence");
|
|
354
430
|
if (storage.getEntries)
|
|
355
431
|
same(await storage.getEntries(), [...model.entries()], "getEntries() after the sequence");
|
|
432
|
+
if (storage.getIds)
|
|
433
|
+
same(await storage.getIds(), [...model.keys()], "getIds() after the sequence");
|
|
356
434
|
if (!hasChanges)
|
|
357
435
|
return;
|
|
358
436
|
holds(versions.length > 0, "the sequence saved no version: change the seed");
|
|
359
437
|
for (const [index, saved] of versions.entries()) {
|
|
360
438
|
const result = await storage.getChangesSince(saved.version);
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
439
|
+
if (result.full) {
|
|
440
|
+
same(result.changed, [...model.entries()], `the full changes since version ${index}: every item, in the order of the entries`);
|
|
441
|
+
continue;
|
|
442
|
+
}
|
|
443
|
+
// A delta: the changes after the version, in the order of the last change of each id
|
|
444
|
+
const after = [...lastChange].filter(([, change]) => change.at > saved.at);
|
|
445
|
+
const expected = {
|
|
446
|
+
changed: after.filter(([, change]) => !change.deleted).map(([id]) => [id, model.get(id)]),
|
|
447
|
+
deleted: after.filter(([, change]) => change.deleted).map(([id]) => id),
|
|
448
|
+
};
|
|
449
|
+
same({ changed: result.changed, deleted: result.deleted }, expected, `the changes since version ${index}`);
|
|
450
|
+
const rebuilt = new Map(saved.entries);
|
|
364
451
|
for (const id of result.deleted)
|
|
365
452
|
rebuilt.delete(id);
|
|
366
453
|
for (const [id, value] of result.changed)
|
|
367
454
|
rebuilt.set(id, value);
|
|
368
|
-
same(
|
|
455
|
+
same(rebuilt, new Map(model), `the items of version ${index} with its changes`);
|
|
369
456
|
}
|
|
370
457
|
}));
|
|
371
458
|
add("flush() resolves, and the items stay", (context) => withStorage(create, async (storage) => {
|
|
@@ -384,10 +471,45 @@ export function collectionStorageContract(options) {
|
|
|
384
471
|
holds(["memory", "api", "hybrid", "synced", "custom"].includes(metadata.type), `getMetadata() gave the unknown type ${show(metadata.type)}`);
|
|
385
472
|
same(metadata.size, 2, "the size of getMetadata()");
|
|
386
473
|
}));
|
|
387
|
-
add("close()
|
|
474
|
+
add("after close(), each operation rejects with an error that says that the storage is closed, and a second close() does nothing", () => withStorage(create, async (storage) => {
|
|
388
475
|
await storage.set("a", item("a", 1));
|
|
389
476
|
await storage.close();
|
|
477
|
+
const operations = [
|
|
478
|
+
["get", () => storage.get("a")],
|
|
479
|
+
["getAll", () => storage.getAll()],
|
|
480
|
+
["find", () => storage.find(() => true)],
|
|
481
|
+
["has", () => storage.has("a")],
|
|
482
|
+
["size", () => storage.size()],
|
|
483
|
+
["getBatch", () => storage.getBatch(["a"])],
|
|
484
|
+
["getBatch of no id", () => storage.getBatch([])],
|
|
485
|
+
["set", () => storage.set("b", item("b", 2))],
|
|
486
|
+
["delete", () => storage.delete("a")],
|
|
487
|
+
["clear", () => storage.clear()],
|
|
488
|
+
["setBatch", () => storage.setBatch([["b", item("b", 2)]])],
|
|
489
|
+
["setBatch of no item", () => storage.setBatch([])],
|
|
490
|
+
["deleteBatch", () => storage.deleteBatch(["a"])],
|
|
491
|
+
["deleteBatch of no id", () => storage.deleteBatch([])],
|
|
492
|
+
];
|
|
493
|
+
if (storage.getEntries)
|
|
494
|
+
operations.push(["getEntries", () => storage.getEntries()]);
|
|
495
|
+
if (storage.getIds)
|
|
496
|
+
operations.push(["getIds", () => storage.getIds()]);
|
|
497
|
+
if (storage.getChangesSince)
|
|
498
|
+
operations.push(["getChangesSince", () => storage.getChangesSince()]);
|
|
499
|
+
if (storage.flush)
|
|
500
|
+
operations.push(["flush", () => storage.flush()]);
|
|
501
|
+
if (storage.getMetadata)
|
|
502
|
+
operations.push(["getMetadata", () => storage.getMetadata()]);
|
|
503
|
+
const check = async (when) => {
|
|
504
|
+
for (const [name, start] of operations) {
|
|
505
|
+
const error = await rejects(start, `${name}() ${when}`);
|
|
506
|
+
holds(error instanceof Error && /closed/i.test(error.message), `${name}() ${when} must reject with an Error whose message says "closed", not ${show(error instanceof Error ? error.message : error)}`);
|
|
507
|
+
}
|
|
508
|
+
};
|
|
509
|
+
await check("after close()");
|
|
510
|
+
// A second close() resolves, and the storage stays closed
|
|
390
511
|
await storage.close();
|
|
512
|
+
await check("after a second close()");
|
|
391
513
|
}));
|
|
392
514
|
return cases;
|
|
393
515
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"storage-contract.js","sourceRoot":"","sources":["../../src/testing/storage-contract.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAGH,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAmD9D,MAAM,IAAI,GAAG,CAAC,EAAU,EAAE,CAAS,EAAE,IAAe,EAAgB,EAAE,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;AAC1H,MAAM,GAAG,GAAG,CAAC,KAAqB,EAAY,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;AAEhF,+CAA+C;AAC/C,SAAS,SAAS,CAAC,KAAc;IAC/B,OAAO,OAAQ,KAAmC,EAAE,IAAI,KAAK,UAAU,CAAC;AAC1E,CAAC;AAED,4EAA4E;AAC5E,KAAK,UAAU,WAAW,CAAC,MAAwD,EAAE,IAAiD;IACpI,MAAM,OAAO,GAAG,MAAM,MAAM,EAAE,CAAC;IAC/B,IAAI,CAAC;QACH,MAAM,IAAI,CAAC,OAAO,CAAC,CAAC;IACtB,CAAC;YAAS,CAAC;QACT,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;IAC/C,CAAC;AACH,CAAC;AAED,2DAA2D;AAC3D,SAAS,SAAS,CAAC,OAAwB;IACzC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,CAAC,eAAgB,CAAC,KAAK,CAAC,CAAC;AACpD,CAAC;AAED,2FAA2F;AAC3F,SAAS,KAAK,CAAC,OAAwB,EAAE,MAAkE,EAAE,OAAwC;IACnJ,IAAI,OAAO,OAAO,CAAC,MAAM,CAAC,KAAK,UAAU;QAAE,OAAO,KAAK,CAAC;IACxD,OAAO,EAAE,IAAI,EAAE,CAAC,sBAAsB,MAAM,IAAI,CAAC,CAAC;IAClD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,+FAA+F;AAC/F,SAAS,MAAM,CAAC,IAAY;IAC1B,IAAI,KAAK,GAAG,IAAI,KAAK,CAAC,CAAC;IACvB,OAAO,CAAC,KAAK,EAAE,EAAE;QACf,KAAK,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;QACvD,OAAO,KAAK,GAAG,KAAK,CAAC;IACvB,CAAC,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,yBAAyB,CAAC,OAAyC;IACjF,MAAM,MAAM,GAAG,GAA+C,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;IAClF,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,IAAI,CAAC;IAC9C,MAAM,KAAK,GAAmB,EAAE,CAAC;IACjC,MAAM,GAAG,GAAG,CAAC,IAAY,EAAE,GAAqD,EAAQ,EAAE;QACxF,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;IAC5B,CAAC,CAAC;IAEF,GAAG,CAAC,6BAA6B,EAAE,GAAG,EAAE,CACtC,WAAW,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;QACpC,MAAM,OAAO,GAA6B;YACxC,CAAC,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACzB,CAAC,QAAQ,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC;YAC5B,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;YAClC,CAAC,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACzB,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC;YACxB,CAAC,UAAU,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;SACtC,CAAC;QACF,KAAK,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,OAAO;YAAE,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,GAAG,IAAI,2BAA2B,CAAC,CAAC;QACnG,MAAM,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;QACvD,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI;YAC1B,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;YAC7C,CAAC,UAAU,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC3D,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACrC,CAAC,aAAa,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YACjD,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;SACU,EAAE,CAAC;YAC7C,MAAM,MAAM,GAAG,KAAK,EAAE,CAAC;YACvB,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,GAAG,IAAI,2BAA2B,CAAC,CAAC;YAC7D,MAAM,MAAM,CAAC;QACf,CAAC;IACH,CAAC,CAAC,CACH,CAAC;IAEF,GAAG,CAAC,8BAA8B,EAAE,GAAG,EAAE,CACvC,WAAW,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;QACpC,IAAI,CAAC,MAAM,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,4BAA4B,CAAC,CAAC;QAC5D,IAAI,CAAC,MAAM,OAAO,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,8BAA8B,CAAC,CAAC;QACjE,IAAI,CAAC,MAAM,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,SAAS,EAAE,uBAAuB,CAAC,CAAC;QACjE,IAAI,CAAC,MAAM,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,uBAAuB,CAAC,CAAC;QAC7D,IAAI,CAAC,MAAM,OAAO,CAAC,QAAQ,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,IAAI,GAAG,EAAE,EAAE,2BAA2B,CAAC,CAAC;QACjF,IAAI,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,4BAA4B,CAAC,CAAC;QACvE,IAAI,CAAC,MAAM,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,0BAA0B,CAAC,CAAC;QACnE,IAAI,CAAC,MAAM,OAAO,CAAC,WAAW,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,8BAA8B,CAAC,CAAC;QAC/E,IAAI,OAAO,CAAC,UAAU;YAAE,IAAI,CAAC,MAAM,OAAO,CAAC,UAAU,EAAE,EAAE,EAAE,EAAE,kCAAkC,CAAC,CAAC;IACnG,CAAC,CAAC,CACH,CAAC;IAEF,GAAG,CAAC,gEAAgE,EAAE,GAAG,EAAE,CACzE,WAAW,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;QACpC,MAAM,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAC5C,MAAM,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;QACrC,IAAI,CAAC,MAAM,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,mBAAmB,CAAC,CAAC;QACvE,IAAI,CAAC,MAAM,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,mBAAmB,CAAC,CAAC;QACxD,IAAI,CAAC,MAAM,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,8BAA8B,CAAC,CAAC;QAC9D,MAAM,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC;QACtC,IAAI,CAAC,MAAM,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,sCAAsC,CAAC,CAAC;QACpF,IAAI,CAAC,MAAM,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,sCAAsC,CAAC,CAAC;IACxE,CAAC,CAAC,CACH,CAAC;IAEF,GAAG,CAAC,+FAA+F,EAAE,GAAG,EAAE,CACxG,WAAW,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;QACpC,MAAM,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACxF,IAAI,CAAC,MAAM,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,qBAAqB,CAAC,CAAC;QAC7D,IAAI,CAAC,MAAM,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,6BAA6B,CAAC,CAAC;QACtE,IAAI,CAAC,MAAM,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,sBAAsB,CAAC,CAAC;QAC5D,IAAI,CAAC,MAAM,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,SAAS,EAAE,sBAAsB,CAAC,CAAC;QAChE,IAAI,CAAC,MAAM,OAAO,CAAC,WAAW,CAAC,CAAC,GAAG,EAAE,SAAS,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,mDAAmD,CAAC,CAAC;QAC/G,IAAI,CAAC,GAAG,CAAC,MAAM,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,4BAA4B,CAAC,CAAC;IACzE,CAAC,CAAC,CACH,CAAC;IAEF,GAAG,CAAC,2HAA2H,EAAE,GAAG,EAAE,CACpI,WAAW,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;QACpC,MAAM,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACxF,IAAI,CAAC,MAAM,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,8CAA8C,CAAC,CAAC;QAC3F,IAAI,CAAC,MAAM,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,4CAA4C,CAAC,CAAC;QAC5E,IAAI,CACF,MAAM,OAAO,CAAC,QAAQ,CAAC,CAAC,GAAG,EAAE,SAAS,EAAE,GAAG,CAAC,CAAC,EAC7C,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EACnD,8BAA8B,CAC/B,CAAC;QACF,MAAM,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QAC3B,IAAI,CAAC,MAAM,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,wBAAwB,CAAC,CAAC;QACjE,IAAI,CAAC,MAAM,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,IAAI,GAAG,EAAE,EAAE,qBAAqB,CAAC,CAAC;QACnE,IAAI,CAAC,MAAM,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,gCAAgC,CAAC,CAAC;IAClE,CAAC,CAAC,CACH,CAAC;IAEF,GAAG,CAAC,yEAAyE,EAAE,GAAG,EAAE,CAClF,WAAW,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;QACpC,MAAM,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACxF,MAAM,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC;QACtC,IAAI,CAAC,GAAG,CAAC,MAAM,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,gEAAgE,CAAC,CAAC;QACrH,+CAA+C;QAC/C,MAAM,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC1B,MAAM,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC;QACtC,MAAM,QAAQ,GAAkC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;QAClH,IAAI,CAAC,MAAM,OAAO,CAAC,MAAM,EAAE,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,kDAAkD,CAAC,CAAC;QACrH,IAAI,CAAC,GAAG,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,uCAAuC,CAAC,CAAC;QACpG,IAAI,OAAO,CAAC,UAAU;YAAE,IAAI,CAAC,MAAM,OAAO,CAAC,UAAU,EAAE,EAAE,QAAQ,EAAE,6CAA6C,CAAC,CAAC;IACpH,CAAC,CAAC,CACH,CAAC;IAEF,GAAG,CAAC,6FAA6F,EAAE,GAAG,EAAE,CACtG,WAAW,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;QACpC,MAAM,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7G,IAAI,CAAC,GAAG,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,0BAA0B,CAAC,CAAC;QACpG,IAAI,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,wBAAwB,CAAC,CAAC;QACpE,MAAM,KAAK,GAAG,MAAM,OAAO,CACzB,GAAG,EAAE,CACH,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE;YAChB,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;QAC1C,CAAC,CAAC,EACJ,qCAAqC,CACtC,CAAC;QACF,KAAK,CAAC,KAAK,YAAY,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAAC,EAAE,2DAA2D,IAAI,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IACrM,CAAC,CAAC,CACH,CAAC;IAEF,GAAG,CAAC,sEAAsE,EAAE,GAAG,EAAE,CAC/E,WAAW,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;QACpC,MAAM,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACxF,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC;QACtB,IAAI,CAAC,MAAM,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,sBAAsB,CAAC,CAAC;QACtD,IAAI,CAAC,MAAM,OAAO,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,wBAAwB,CAAC,CAAC;QAC3D,IAAI,CAAC,MAAM,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,qBAAqB,CAAC,CAAC;QAC3D,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC;QACtB,MAAM,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;QACrC,IAAI,CAAC,MAAM,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,kCAAkC,CAAC,CAAC;IACnF,CAAC,CAAC,CACH,CAAC;IAEF,GAAG,CAAC,qFAAqF,EAAE,GAAG,EAAE,CAC9F,WAAW,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;QACpC,MAAM,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACnE,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,MAAM,EAAE,CAAC;QACnC,GAAG,CAAC,GAAG,EAAE,CAAC;QACV,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;QACvB,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;QAC7C,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;QACjB,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QAC5C,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAClB,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;QAC7B,IAAI,OAAO,CAAC,UAAU;YAAE,CAAC,MAAM,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAC/D,IAAI,CAAC,GAAG,CAAC,MAAM,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,uCAAuC,CAAC,CAAC;QACvF,IAAI,CAAC,MAAM,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,uCAAuC,CAAC,CAAC;QAC7E,IAAI,CAAC,MAAM,OAAO,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,uCAAuC,CAAC,CAAC;IAC/G,CAAC,CAAC,CACH,CAAC;IAEF,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACnB,GAAG,CAAC,0FAA0F,EAAE,GAAG,EAAE,CACnG,WAAW,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;YACpC,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;YAClC,MAAM,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YAC9B,KAAK,CAAC,CAAC,GAAG,EAAE,CAAC;YACb,KAAK,CAAC,IAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;YACtC,MAAM,IAAI,GAAG,CAAC,MAAM,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAE,CAAC;YACvC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,mDAAmD,CAAC,CAAC;YACrF,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC;YACZ,IAAI,CAAC,IAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;YACrC,CAAC,MAAM,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAE,CAAC,CAAC,GAAG,EAAE,CAAC;YACpC,CAAC,MAAM,OAAO,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAE,CAAC,CAAC,GAAG,EAAE,CAAC;YACjD,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAE,CAAC,CAAC,GAAG,EAAE,CAAC;YAC5C,IAAI,CAAC,MAAM,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,wCAAwC,CAAC,CAAC;QAC9F,CAAC,CAAC,CACH,CAAC;IACJ,CAAC;IAED,GAAG,CAAC,gCAAgC,UAAU,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,CAC1E,WAAW,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE;QAClC,MAAM,OAAO,GAAG,KAA8C,CAAC;QAC/D,MAAM,MAAM,GAA6B;YACvC,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;YAC5F,CAAC,MAAM,EAAE,OAAO,CAAC;YACjB,CAAC,OAAO,EAAE,EAAE,CAAC;YACb,CAAC,MAAM,EAAE,CAAC,CAAC;YACX,CAAC,UAAU,EAAE,CAAC,IAAI,CAAC;YACnB,CAAC,OAAO,EAAE,KAAK,CAAC;YAChB,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;SAC1B,CAAC;QACF,IAAI,UAAU;YAAE,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;QAC5C,MAAM,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QAC/B,KAAK,MAAM,CAAC,EAAE,EAAE,KAAK,CAAC,IAAI,MAAM;YAAE,IAAI,CAAC,MAAM,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;QACrF,IAAI,CAAC,MAAM,OAAO,CAAC,MAAM,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,6BAA6B,CAAC,CAAC;QAC9F,IAAI,CAAC,MAAM,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,GAAG,CAAC,MAAM,CAAC,EAAE,+BAA+B,CAAC,CAAC;QACzG,IAAI,CAAC,MAAM,OAAO,CAAC,IAAI,EAAE,EAAE,MAAM,CAAC,MAAM,EAAE,6BAA6B,CAAC,CAAC;QACzE,IAAI,UAAU;YAAE,IAAI,CAAC,MAAM,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,oCAAoC,CAAC,CAAC;IAC9F,CAAC,CAAC,CACH,CAAC;IAEF,GAAG,CAAC,kDAAkD,EAAE,GAAG,EAAE,CAC3D,WAAW,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;QACpC,MAAM,KAAK,GAAG,EAAE,CAAC;QACjB,MAAM,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACnG,IAAI,CAAC,MAAM,OAAO,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,gBAAgB,KAAK,0BAA0B,CAAC,CAAC;QACnF,IAAI,CAAC,GAAG,CAAC,MAAM,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,EAAE,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,EAAE,2CAA2C,CAAC,CAAC;IACjJ,CAAC,CAAC,CACH,CAAC;IAEF,GAAG,CAAC,sDAAsD,EAAE,CAAC,OAAO,EAAE,EAAE,CACtE,WAAW,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;QACpC,IAAI,KAAK,CAAC,OAAO,EAAE,iBAAiB,EAAE,OAAO,CAAC;YAAE,OAAO;QACvD,MAAM,OAAO,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC;QACnC,MAAM,OAAO,GAAkC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/G,MAAM,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QAChC,MAAM,KAAK,GAAG,MAAM,OAAO,EAAE,CAAC;QAC9B,KAAK,CAAC,OAAO,KAAK,CAAC,OAAO,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,KAAK,EAAE,EAAE,qDAAqD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAC7I,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,wBAAwB,CAAC,CAAC;QACjD,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,uCAAuC,CAAC,CAAC;QAC5E,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,EAAE,0BAA0B,CAAC,CAAC;IACtD,CAAC,CAAC,CACH,CAAC;IAEF,GAAG,CAAC,uGAAuG,EAAE,CAAC,OAAO,EAAE,EAAE,CACvH,WAAW,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;QACpC,IAAI,KAAK,CAAC,OAAO,EAAE,iBAAiB,EAAE,OAAO,CAAC;YAAE,OAAO;QACvD,MAAM,OAAO,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC;QACnC,MAAM,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACxF,MAAM,KAAK,GAAG,MAAM,OAAO,EAAE,CAAC;QAC9B,MAAM,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC;QACtC,MAAM,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC1B,MAAM,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAChC,MAAM,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;QACrC,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC3C,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,iBAAiB,CAAC,CAAC;QAC3C,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,oBAAoB,CAAC,CAAC;QAC7F,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,EAAE,oBAAoB,CAAC,CAAC;QACjD,KAAK,CAAC,KAAK,CAAC,OAAO,KAAK,KAAK,CAAC,OAAO,EAAE,uCAAuC,CAAC,CAAC;IAClF,CAAC,CAAC,CACH,CAAC;IAEF,GAAG,CAAC,oHAAoH,EAAE,CAAC,OAAO,EAAE,EAAE,CACpI,WAAW,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;QACpC,IAAI,KAAK,CAAC,OAAO,EAAE,iBAAiB,EAAE,OAAO,CAAC;YAAE,OAAO;QACvD,MAAM,OAAO,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC;QACnC,MAAM,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACxF,MAAM,KAAK,GAAG,MAAM,OAAO,EAAE,CAAC;QAC9B,MAAM,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC1B,MAAM,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC;QACtC,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC1C,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,gCAAgC,CAAC,CAAC;QAE/K,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC;QACtB,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC5C,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,EAAE,wBAAwB,CAAC,CAAC;QAC/K,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAC7C,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,6BAA6B,CAAC,CAAC;IACvJ,CAAC,CAAC,CACH,CAAC;IAEF,GAAG,CAAC,gGAAgG,EAAE,CAAC,OAAO,EAAE,EAAE,CAChH,WAAW,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;QACpC,IAAI,KAAK,CAAC,OAAO,EAAE,iBAAiB,EAAE,OAAO,CAAC;YAAE,OAAO;QACvD,MAAM,OAAO,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC;QACnC,MAAM,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACnE,MAAM,OAAO,EAAE,CAAC;QAChB,KAAK,MAAM,OAAO,IAAI,CAAC,eAAe,EAAE,EAAE,CAAC,EAAE,CAAC;YAC5C,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;YACtC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,qBAAqB,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAC9M,CAAC;QACD,MAAM,WAAW,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE;YACxC,MAAM,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;YACnC,MAAM,OAAO,GAAG,CAAC,MAAM,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC;YACnD,IAAI,CAAC,CAAC,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,uCAAuC,CAAC,CAAC;QACrF,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CACH,CAAC;IAEF,IAAI,OAAO,CAAC,uBAAuB,EAAE,CAAC;QACpC,MAAM,SAAS,GAAG,OAAO,CAAC,uBAAuB,CAAC;QAClD,GAAG,CAAC,8FAA8F,EAAE,CAAC,OAAO,EAAE,EAAE,CAC9G,WAAW,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;YAChD,IAAI,KAAK,CAAC,OAAO,EAAE,iBAAiB,EAAE,OAAO,CAAC;gBAAE,OAAO;YACvD,MAAM,OAAO,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC;YACnC,MAAM,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC7G,MAAM,KAAK,GAAG,MAAM,OAAO,EAAE,CAAC;YAC9B,6BAA6B;YAC7B,MAAM,OAAO,CAAC,WAAW,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;YACtC,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YACzC,IAAI,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,GAAG,GAAG,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,EAAE,6BAA6B,CAAC,CAAC;YACnK,+EAA+E;YAC/E,MAAM,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAC1B,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YAC3C,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,uCAAuC,CAAC,CAAC;YACvL,IAAI,CAAC,CAAC,MAAM,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,yDAAyD,CAAC,CAAC;QAC9G,CAAC,CAAC,CACH,CAAC;IACJ,CAAC;IAED,GAAG,CAAC,yFAAyF,EAAE,GAAG,EAAE,CAClG,WAAW,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;QACpC,MAAM,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC;QAC1B,MAAM,IAAI,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;QACjD,MAAM,IAAI,GAAG,GAAW,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAE,CAAC;QACtD,MAAM,KAAK,GAAG,IAAI,GAAG,EAAwB,CAAC;QAC9C,MAAM,QAAQ,GAAmE,EAAE,CAAC;QACpF,MAAM,UAAU,GAAG,OAAO,OAAO,CAAC,eAAe,KAAK,UAAU,CAAC;QACjE,KAAK,IAAI,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC;YACrC,MAAM,IAAI,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC;YACxB,IAAI,KAAa,CAAC;YAClB,IAAI,IAAI,GAAG,CAAC,EAAE,CAAC;gBACb,MAAM,EAAE,GAAG,IAAI,EAAE,CAAC;gBAClB,MAAM,KAAK,GAAG,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;gBAC7B,KAAK,GAAG,OAAO,EAAE,GAAG,CAAC;gBACrB,MAAM,OAAO,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;gBAC7B,KAAK,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;YACvB,CAAC;iBAAM,IAAI,IAAI,GAAG,EAAE,EAAE,CAAC;gBACrB,MAAM,EAAE,GAAG,IAAI,EAAE,CAAC;gBAClB,KAAK,GAAG,UAAU,EAAE,GAAG,CAAC;gBACxB,IAAI,CAAC,MAAM,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,sBAAsB,IAAI,KAAK,KAAK,EAAE,CAAC,CAAC;YAC3F,CAAC;iBAAM,IAAI,IAAI,GAAG,EAAE,EAAE,CAAC;gBACrB,MAAM,KAAK,GAAkC,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE;oBAC9F,MAAM,EAAE,GAAG,IAAI,EAAE,CAAC;oBAClB,OAAO,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,GAAG,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC;gBAC3C,CAAC,CAAC,CAAC;gBACH,KAAK,GAAG,YAAY,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;gBAC1D,MAAM,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;gBAC9B,KAAK,MAAM,CAAC,EAAE,EAAE,KAAK,CAAC,IAAI,KAAK;oBAAE,KAAK,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;YACxD,CAAC;iBAAM,IAAI,IAAI,GAAG,EAAE,EAAE,CAAC;gBACrB,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;gBAC1D,KAAK,GAAG,eAAe,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;gBAC3C,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;gBAC/D,IAAI,CAAC,MAAM,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,QAAQ,EAAE,sBAAsB,IAAI,KAAK,KAAK,EAAE,CAAC,CAAC;YAC3F,CAAC;iBAAM,IAAI,IAAI,GAAG,EAAE,EAAE,CAAC;gBACrB,KAAK,GAAG,SAAS,CAAC;gBAClB,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC;gBACtB,KAAK,CAAC,KAAK,EAAE,CAAC;YAChB,CAAC;iBAAM,CAAC;gBACN,KAAK,GAAG,iBAAiB,CAAC;gBAC1B,IAAI,UAAU;oBAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,CAAC,MAAM,OAAO,CAAC,eAAgB,EAAE,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YAClH,CAAC;YACD,IAAI,CAAC,MAAM,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,uBAAuB,IAAI,KAAK,KAAK,EAAE,CAAC,CAAC;QAC7F,CAAC;QACD,IAAI,CAAC,MAAM,OAAO,CAAC,IAAI,EAAE,EAAE,KAAK,CAAC,IAAI,EAAE,2BAA2B,CAAC,CAAC;QACpE,IAAI,OAAO,CAAC,UAAU;YAAE,IAAI,CAAC,MAAM,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC,EAAE,iCAAiC,CAAC,CAAC;QAClH,IAAI,CAAC,UAAU;YAAE,OAAO;QACxB,KAAK,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,gDAAgD,CAAC,CAAC;QAC7E,KAAK,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC;YAChD,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,eAAgB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YAC7D,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YACxC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,6BAA6B,KAAK,uCAAuC,CAAC,CAAC;YACnI,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,GAAG,EAAwB,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YACvF,KAAK,MAAM,EAAE,IAAI,MAAM,CAAC,OAAO;gBAAE,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YACpD,KAAK,MAAM,CAAC,EAAE,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO;gBAAE,OAAO,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;YACjE,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,wBAAwB,KAAK,mBAAmB,CAAC,CAAC;QACnH,CAAC;IACH,CAAC,CAAC,CACH,CAAC;IAEF,GAAG,CAAC,sCAAsC,EAAE,CAAC,OAAO,EAAE,EAAE,CACtD,WAAW,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;QACpC,IAAI,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC;YAAE,OAAO;QAC7C,MAAM,OAAO,CAAC,KAAM,EAAE,CAAC;QACvB,MAAM,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;QACrC,MAAM,OAAO,CAAC,KAAM,EAAE,CAAC;QACvB,IAAI,CAAC,MAAM,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,qBAAqB,CAAC,CAAC;IACpE,CAAC,CAAC,CACH,CAAC;IAEF,GAAG,CAAC,+CAA+C,EAAE,CAAC,OAAO,EAAE,EAAE,CAC/D,WAAW,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;QACpC,IAAI,KAAK,CAAC,OAAO,EAAE,aAAa,EAAE,OAAO,CAAC;YAAE,OAAO;QACnD,MAAM,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACnE,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,WAAY,EAAE,CAAC;QAC9C,KAAK,CAAC,CAAC,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,uCAAuC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC7I,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,EAAE,2BAA2B,CAAC,CAAC;IACtD,CAAC,CAAC,CACH,CAAC;IAEF,GAAG,CAAC,qDAAqD,EAAE,GAAG,EAAE,CAC9D,WAAW,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;QACpC,MAAM,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;QACrC,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC;QACtB,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC;IACxB,CAAC,CAAC,CACH,CAAC;IAEF,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,iCAAiC,CAAC,IAAY,EAAE,OAAyC,EAAE,GAAoB;IAC7H,GAAG,CAAC,QAAQ,CAAC,GAAG,IAAI,yCAAyC,EAAE,GAAG,EAAE;QAClE,KAAK,MAAM,YAAY,IAAI,yBAAyB,CAAC,OAAO,CAAC,EAAE,CAAC;YAC9D,GAAG,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;QACpE,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
1
|
+
{"version":3,"file":"storage-contract.js","sourceRoot":"","sources":["../../src/testing/storage-contract.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://json.schemastore.org/package",
|
|
3
3
|
"name": "@procedures/collections",
|
|
4
|
-
"version": "0.
|
|
4
|
+
"version": "0.6.0",
|
|
5
5
|
"description": "Collections for TypeScript: ArrayList, LinkedList, ArrayDeque, HashMap, LinkedHashMap, TreeMap (red-black), PriorityQueue, LRU and TTL maps, async queues, channels and collectors, tested with fast-check.",
|
|
6
6
|
"keywords": [
|
|
7
7
|
"collections",
|
package/src/storage/interface.ts
CHANGED
|
@@ -17,6 +17,15 @@
|
|
|
17
17
|
* All methods return Promise<T> to ensure consistent async behavior.
|
|
18
18
|
* This guarantees client code remains agnostic to the storage backend,
|
|
19
19
|
* enabling seamless switching between local and remote storage.
|
|
20
|
+
*
|
|
21
|
+
* The contract (the suite of `@procedures/collections/testing` tests it for each storage):
|
|
22
|
+
* - A storage keeps a copy of each value that a write takes, and each read gives a new copy. A
|
|
23
|
+
* change of a written or a read value does not change the stored item.
|
|
24
|
+
* - A stored `null` reads back as `null`. A missing id reads back as `undefined`.
|
|
25
|
+
* - The entries keep the order of the first set of each id, as a `Map` does.
|
|
26
|
+
* - A delta of `getChangesSince` follows the order of the last change of each id.
|
|
27
|
+
* - After `close()`, each operation rejects with an error whose message says "closed". A second
|
|
28
|
+
* `close()` does nothing.
|
|
20
29
|
*/
|
|
21
30
|
export interface CollectionStorage<T> {
|
|
22
31
|
//
|
|
@@ -27,7 +36,7 @@ export interface CollectionStorage<T> {
|
|
|
27
36
|
* Get item by ID.
|
|
28
37
|
*
|
|
29
38
|
* @param id - Item identifier
|
|
30
|
-
* @returns Promise resolving to item or undefined if not found
|
|
39
|
+
* @returns Promise resolving to a copy of the item, or undefined if not found. A stored null is null.
|
|
31
40
|
*/
|
|
32
41
|
get(id: string): Promise<T | undefined>;
|
|
33
42
|
|
|
@@ -46,9 +55,19 @@ export interface CollectionStorage<T> {
|
|
|
46
55
|
*/
|
|
47
56
|
getEntries?(): Promise<Array<[string, T]>>;
|
|
48
57
|
|
|
58
|
+
/**
|
|
59
|
+
* The ids of the items, in the order of the entries. The storage does not read or copy the
|
|
60
|
+
* values, so a sync that needs only the ids does not copy each item. A storage that cannot
|
|
61
|
+
* give the ids cheaply does not have this method, and a caller uses `getEntries()`.
|
|
62
|
+
*
|
|
63
|
+
* @returns Promise resolving to the ids, as a new array
|
|
64
|
+
*/
|
|
65
|
+
getIds?(): Promise<string[]>;
|
|
66
|
+
|
|
49
67
|
/**
|
|
50
68
|
* The changes after a version (roadmap R28). A storage without a change log does not have
|
|
51
|
-
* this method, and a sync uses `getEntries()`.
|
|
69
|
+
* this method, and a sync uses `getEntries()`. A full result follows the order of the entries.
|
|
70
|
+
* A delta follows the order of the last change of each id.
|
|
52
71
|
*
|
|
53
72
|
* @param since - A `version` that an earlier call gave. Without it, the result has all items.
|
|
54
73
|
* @returns Promise resolving to the changed items, the deleted ids and the new version
|
|
@@ -147,8 +166,9 @@ export interface CollectionStorage<T> {
|
|
|
147
166
|
flush?(): Promise<void>;
|
|
148
167
|
|
|
149
168
|
/**
|
|
150
|
-
*
|
|
151
|
-
*
|
|
169
|
+
* This method closes the storage and releases its resources. After it, each operation rejects
|
|
170
|
+
* with an error whose message says "closed". A second `close()` does nothing. A durable storage
|
|
171
|
+
* keeps its items for a new storage of the same place.
|
|
152
172
|
*
|
|
153
173
|
* @returns Promise resolving when cleanup completes
|
|
154
174
|
*/
|
|
@@ -172,6 +192,8 @@ export interface CollectionStorage<T> {
|
|
|
172
192
|
* the first call, a version of an older run, or a change log that dropped old deletes.
|
|
173
193
|
* - When `full` is false, `changed` has the items that changed after the version, and `deleted`
|
|
174
194
|
* has the ids that were deleted after it.
|
|
195
|
+
* - The order of a full result is the order of the entries. The order of a delta is the order of
|
|
196
|
+
* the last change of each id: an id that changed again comes after the ids that changed before.
|
|
175
197
|
*/
|
|
176
198
|
export interface StorageChanges<T> {
|
|
177
199
|
/** The version of the storage that includes these changes. */
|