@quereus/store 4.11.0 → 4.12.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.
- package/README.md +131 -10
- package/dist/src/common/cached-kv-store.d.ts +16 -0
- package/dist/src/common/cached-kv-store.d.ts.map +1 -1
- package/dist/src/common/cached-kv-store.js +43 -0
- package/dist/src/common/cached-kv-store.js.map +1 -1
- package/dist/src/common/index.d.ts +1 -0
- package/dist/src/common/index.d.ts.map +1 -1
- package/dist/src/common/index.js +2 -0
- package/dist/src/common/index.js.map +1 -1
- package/dist/src/common/key-builder.d.ts +9 -6
- package/dist/src/common/key-builder.d.ts.map +1 -1
- package/dist/src/common/key-builder.js +17 -6
- package/dist/src/common/key-builder.js.map +1 -1
- package/dist/src/common/kv-store.d.ts +89 -3
- package/dist/src/common/kv-store.d.ts.map +1 -1
- package/dist/src/common/kv-store.js +21 -1
- package/dist/src/common/kv-store.js.map +1 -1
- package/dist/src/common/memory-store.d.ts +1 -0
- package/dist/src/common/memory-store.d.ts.map +1 -1
- package/dist/src/common/memory-store.js +7 -0
- package/dist/src/common/memory-store.js.map +1 -1
- package/dist/src/common/pk-key-resolution.d.ts +17 -4
- package/dist/src/common/pk-key-resolution.d.ts.map +1 -1
- package/dist/src/common/pk-key-resolution.js +23 -8
- package/dist/src/common/pk-key-resolution.js.map +1 -1
- package/dist/src/common/store-module-access-plan.d.ts +1 -1
- package/dist/src/common/store-module-access-plan.d.ts.map +1 -1
- package/dist/src/common/store-module-access-plan.js +434 -105
- package/dist/src/common/store-module-access-plan.js.map +1 -1
- package/dist/src/common/store-module-alter-column.d.ts.map +1 -1
- package/dist/src/common/store-module-alter-column.js +25 -2
- package/dist/src/common/store-module-alter-column.js.map +1 -1
- package/dist/src/common/store-module-alter.d.ts.map +1 -1
- package/dist/src/common/store-module-alter.js +36 -13
- package/dist/src/common/store-module-alter.js.map +1 -1
- package/dist/src/common/store-module-catalog.d.ts +6 -4
- package/dist/src/common/store-module-catalog.d.ts.map +1 -1
- package/dist/src/common/store-module-catalog.js +8 -6
- package/dist/src/common/store-module-catalog.js.map +1 -1
- package/dist/src/common/store-module-index.d.ts +98 -7
- package/dist/src/common/store-module-index.d.ts.map +1 -1
- package/dist/src/common/store-module-index.js +236 -81
- package/dist/src/common/store-module-index.js.map +1 -1
- package/dist/src/common/store-module.d.ts.map +1 -1
- package/dist/src/common/store-module.js +7 -3
- package/dist/src/common/store-module.js.map +1 -1
- package/dist/src/common/store-table-base.d.ts +30 -0
- package/dist/src/common/store-table-base.d.ts.map +1 -1
- package/dist/src/common/store-table-base.js +71 -12
- package/dist/src/common/store-table-base.js.map +1 -1
- package/dist/src/common/store-table-constraints.js +3 -3
- package/dist/src/common/store-table-constraints.js.map +1 -1
- package/dist/src/common/store-table-scan.d.ts +208 -98
- package/dist/src/common/store-table-scan.d.ts.map +1 -1
- package/dist/src/common/store-table-scan.js +353 -105
- package/dist/src/common/store-table-scan.js.map +1 -1
- package/dist/src/testing/index.d.ts +17 -5
- package/dist/src/testing/index.d.ts.map +1 -1
- package/dist/src/testing/index.js +16 -5
- package/dist/src/testing/index.js.map +1 -1
- package/dist/src/testing/kv-conformance.d.ts +49 -0
- package/dist/src/testing/kv-conformance.d.ts.map +1 -1
- package/dist/src/testing/kv-conformance.js +125 -0
- package/dist/src/testing/kv-conformance.js.map +1 -1
- package/dist/src/testing/kv-lifecycle.d.ts +22 -0
- package/dist/src/testing/kv-lifecycle.d.ts.map +1 -0
- package/dist/src/testing/kv-lifecycle.js +12 -0
- package/dist/src/testing/kv-lifecycle.js.map +1 -0
- package/dist/src/testing/kv-naming-conformance.d.ts +77 -0
- package/dist/src/testing/kv-naming-conformance.d.ts.map +1 -0
- package/dist/src/testing/kv-naming-conformance.js +208 -0
- package/dist/src/testing/kv-naming-conformance.js.map +1 -0
- package/dist/src/testing/kv-reclaim-conformance.d.ts +52 -0
- package/dist/src/testing/kv-reclaim-conformance.d.ts.map +1 -0
- package/dist/src/testing/kv-reclaim-conformance.js +287 -0
- package/dist/src/testing/kv-reclaim-conformance.js.map +1 -0
- package/package.json +5 -5
package/README.md
CHANGED
|
@@ -46,10 +46,16 @@ The store module uses separate logical stores for different data types:
|
|
|
46
46
|
- **Data keys**: Encoded primary key (no prefix)
|
|
47
47
|
- **Index keys**: Encoded index columns + encoded PK
|
|
48
48
|
- **Index values**: The row's encoded **data key**. A secondary-index scan resolves each
|
|
49
|
-
matched entry back to its base row
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
49
|
+
matched entry back to its base row by reading this key, rather than decoding the index
|
|
50
|
+
key's PK suffix (that suffix is encoded lossily for a NOCASE/RTRIM PK column, so it is
|
|
51
|
+
not recoverable to SQL values). Entries are not covering — the row itself always lives
|
|
52
|
+
in the data store. The resolution is **batched**: the scan collects surviving index
|
|
53
|
+
entries (across every window of an `IN`-list seek, not just one) up to
|
|
54
|
+
`ROW_RESOLUTION_BATCH` = 256 and resolves each batch with a single `KVStore.getMany`,
|
|
55
|
+
so an indexed read of *N* rows costs about *N*/256 data-store round trips rather than
|
|
56
|
+
*N* serialized point reads — on IndexedDB, one readonly transaction per batch instead
|
|
57
|
+
of one per row. The trade is early termination: a `limit 1` collects one batch rather
|
|
58
|
+
than one row (the same trade `iterate`'s pager already makes).
|
|
53
59
|
- **Catalog keys**:
|
|
54
60
|
- Tables: `{schema}.{table}` as a string (the `CREATE TABLE` bundle, with its index DDL and any exposed-implicit-index tag DDL)
|
|
55
61
|
- Views: `\x00view\x00{schema}.{view}` (reserved-prefix; `generateViewDDL`)
|
|
@@ -57,6 +63,41 @@ The store module uses separate logical stores for different data types:
|
|
|
57
63
|
|
|
58
64
|
This design eliminates redundant prefixes and groups related stores together by table name. The leading-`0x00` view/MV prefixes never collide with an unprefixed table key, so a view/MV may safely share a name with a table; a full catalog scan returns all three kinds intermixed and rehydrate classifies each by its key prefix.
|
|
59
65
|
|
|
66
|
+
**Which predicate shapes become a seek.** Everything else is answered by a full scan plus
|
|
67
|
+
a re-check of the pushed predicate, which is always correct — the shapes below are the ones
|
|
68
|
+
that also *narrow the bytes read*:
|
|
69
|
+
|
|
70
|
+
| Shape | Served by |
|
|
71
|
+
|-------|-----------|
|
|
72
|
+
| Equality on every primary-key column | one data-store point read |
|
|
73
|
+
| `IN` on every primary-key column | one data-store point read per distinct key tuple (`plan=5`, see below) |
|
|
74
|
+
| `<` / `<=` / `>` / `>=` on the **leading** primary-key column | one data-store byte window |
|
|
75
|
+
| Equality on a contiguous **leading prefix** of a secondary index | one index byte window (`plan=2`) |
|
|
76
|
+
| `IN` on a contiguous leading prefix of a secondary index | one index window per distinct list value (`plan=5`, see below) |
|
|
77
|
+
| `<` / `<=` / `>` / `>=` on the **leading** column of a secondary index | one index byte window (`plan=3`) |
|
|
78
|
+
| Equality on a **strict** leading prefix of a secondary index **plus** a bound on the very next index column | one index byte window covering just the bounded slice inside the prefix (`plan=7`) |
|
|
79
|
+
|
|
80
|
+
The last row is what makes `where entity = ? and date between ? and ?` over an index on
|
|
81
|
+
`(entity, date)` read only the dated slice rather than every row of the entity. It needs the
|
|
82
|
+
prefix pinned to a **single** value per column — a multi-value `IN` prefix keeps the
|
|
83
|
+
multi-seek above and leaves the bound as a residual — and it gives up the narrowing (falling
|
|
84
|
+
back to the plain prefix window, answer unchanged) when the bounded column's key bytes do not
|
|
85
|
+
reproduce its collation's order, or when its bound value has no faithful key position under a
|
|
86
|
+
semantically-ordered type. A bound on a *later* index column than the one right after the
|
|
87
|
+
prefix is not seeked at all. No ordering is advertised for this path, so an `ORDER BY` on the
|
|
88
|
+
bounded column keeps its `Sort`.
|
|
89
|
+
|
|
90
|
+
**A seek priced above a full scan is dropped.** A secondary-index seek reads two things per
|
|
91
|
+
matched row — the index entry, then the row it names — while a scan reads one, so the module
|
|
92
|
+
charges that second read and then compares the arm against its own sequential-scan cost,
|
|
93
|
+
returning the scan when the seek prices higher. The predicate stays as a residual either
|
|
94
|
+
way, so the rows are identical and only the speed differs. The module keeps no per-column
|
|
95
|
+
statistics, so how many rows a predicate matches is guessed as a fixed fraction of the table
|
|
96
|
+
(10% for an equality, 30% for a range); that makes the comparison per-*index-shape* rather
|
|
97
|
+
than per-query, and today it only fires where the guess is the whole table. Multi-seeks are
|
|
98
|
+
exempt from the comparison — the engine reads their cost as a curve to decide its own key-set
|
|
99
|
+
rewrites, and answering it with a scan would switch that feature off.
|
|
100
|
+
|
|
60
101
|
**`IN`-list index seeks ("multi-seek").** An `IN`-list on an indexed column
|
|
61
102
|
(`where v in (1, 2, 3)`, including parameter-bound lists) is served from the index as one
|
|
62
103
|
deduplicated, key-ordered point seek per distinct list value, instead of a full scan with
|
|
@@ -64,18 +105,27 @@ a residual filter. `NULL` list values match nothing and are skipped, duplicate v
|
|
|
64
105
|
yield their rows once, and a composite index serves the cross-product of per-column lists
|
|
65
106
|
(`a in (1,2) and b in (10,20)` is four seeks). Very large lists (over 1000 seek keys) and
|
|
66
107
|
lists on semantically-ordered column types (TIMESPAN, JSON) fall back to the scan path —
|
|
67
|
-
still correct, just not accelerated.
|
|
68
|
-
`feat-store-pk-in-list-multiseek`). When several secondary indexes can serve the same
|
|
108
|
+
still correct, just not accelerated. When several secondary indexes can serve the same
|
|
69
109
|
predicate, the lowest-cost seek wins (equal costs keep the first-declared index), so
|
|
70
110
|
declaration order no longer decides whether a query does one seek or hundreds. The primary-key
|
|
71
111
|
arms still take precedence over any secondary index whenever they apply.
|
|
72
112
|
|
|
113
|
+
An `IN` covering the **whole primary key** takes the same path against the data store
|
|
114
|
+
itself: `where pk in (1, 2, 3)`, or `a in (…) and b in (…)` on a composite key, becomes one
|
|
115
|
+
deduplicated point read per distinct key tuple rather than a scan. Every gate above applies
|
|
116
|
+
(the 1000-key cap, the semantic-ordering decline, NULL-skip and dedup), and a key only
|
|
117
|
+
*partly* pinned — `a in (…)` alone on a `(a, b)` key — still scans with the predicate as a
|
|
118
|
+
residual. Unlike a secondary multi-seek, this one **advertises primary-key order**: the point
|
|
119
|
+
reads are emitted ascending by encoded data key, which is primary-key order (a `DESC` key
|
|
120
|
+
member's inversion is baked into its bytes), so `where pk in (…) order by pk` needs no `Sort`.
|
|
121
|
+
|
|
73
122
|
The same multi-seek path also serves an `IN` whose values only exist once the query runs
|
|
74
123
|
— `where v in (select … )`, which the engine may materialize into a set and hand down as
|
|
75
124
|
a seek (its `KeySetSemiJoin`). **Nothing in this module distinguishes the two.** The
|
|
76
125
|
engine stamps a `FilterInfo` byte-identical in shape to a literal list's, so every gate
|
|
77
126
|
above applies unchanged: the 1000-key cap, the semantic-ordering decline, the key-collation
|
|
78
|
-
guard, the partial-index exclusion
|
|
127
|
+
guard, and the partial-index exclusion — on the primary-key arm as well as the secondary
|
|
128
|
+
one, so `where pk in (select …)` is served as a `_primary_` multi-seek too. At plan
|
|
79
129
|
time such a set describes itself only by a ceiling (`PredicateConstraint.runtimeSet.maxCount`),
|
|
80
130
|
which is what the cost and cap arithmetic judges. The engine also re-checks every row the
|
|
81
131
|
seek returns, so an over-fetching window costs only time.
|
|
@@ -152,10 +202,13 @@ await db.exec(`
|
|
|
152
202
|
Implement `KVStore` and `KVStoreProvider` to create custom storage backends:
|
|
153
203
|
|
|
154
204
|
```typescript
|
|
155
|
-
import type
|
|
205
|
+
import { defaultGetMany, type KVStore, type KVStoreProvider } from '@quereus/store';
|
|
156
206
|
|
|
157
207
|
class MyCustomStore implements KVStore {
|
|
158
208
|
async get(key: Uint8Array) { /* ... */ }
|
|
209
|
+
// Positional batch point-read. Override it when the backend has a native multi-get or a
|
|
210
|
+
// way to issue every request on one round trip; otherwise `defaultGetMany(this, keys)`.
|
|
211
|
+
getMany(keys: readonly Uint8Array[]) { return defaultGetMany(this, keys); }
|
|
159
212
|
async put(key: Uint8Array, value: Uint8Array) { /* ... */ }
|
|
160
213
|
async delete(key: Uint8Array) { /* ... */ }
|
|
161
214
|
async has(key: Uint8Array) { /* ... */ }
|
|
@@ -191,8 +244,8 @@ db.registerModule('store', module);
|
|
|
191
244
|
exports `runKVStoreConformance(name, makeBackend)` — one parameterized battery of
|
|
192
245
|
behavioral tests written against the `KVStore` contract (point ops, ordering, range
|
|
193
246
|
iteration, streaming across page boundaries, batch semantics, optional persistence,
|
|
194
|
-
cross-backend encoded-key ordering, and
|
|
195
|
-
and run it under Mocha so any drift from the contract fails a test:
|
|
247
|
+
cross-backend encoded-key ordering, bounded iteration, and the batch point-read). Wire a
|
|
248
|
+
tiny lifecycle adapter and run it under Mocha so any drift from the contract fails a test:
|
|
196
249
|
|
|
197
250
|
```typescript
|
|
198
251
|
import { runKVStoreConformance } from '@quereus/store/testing';
|
|
@@ -207,6 +260,12 @@ runKVStoreConformance('MyCustomStore', () => ({
|
|
|
207
260
|
// backend's batch size, and the bounded-iteration tier also measures reads. Omit it
|
|
208
261
|
// and that tier still checks that abandoning an iteration releases resources.
|
|
209
262
|
readMeter: { entriesRead: () => myBackingReads, maxReadAhead: 1 },
|
|
263
|
+
// Also optional, and a DIFFERENT counter: `readMeter` counts entries an iteration
|
|
264
|
+
// yields, so it cannot see a point read. Supply this — trips to backing storage, one
|
|
265
|
+
// per `get`, one per native multi-get — and the batch point-read tier additionally
|
|
266
|
+
// asserts that `getMany` over K keys costs exactly ONE trip. Omit it on a backend whose
|
|
267
|
+
// `getMany` is the shared fallback; that tier's correctness cases still run.
|
|
268
|
+
pointReadMeter: { roundTrips: () => myBackingRoundTrips },
|
|
210
269
|
}));
|
|
211
270
|
```
|
|
212
271
|
|
|
@@ -241,6 +300,62 @@ The LevelDB / IndexedDB plugins' `test/atomic-batch.spec.ts` run it, keeping onl
|
|
|
241
300
|
backend-specific cases (LevelDB's "no batch before the shared root is open", IndexedDB's
|
|
242
301
|
post-write read-cache invalidation) alongside.
|
|
243
302
|
|
|
303
|
+
**Every provider runs the store-name distinctness battery.** `runStoreNameDistinctness(name,
|
|
304
|
+
makeNamingBackend)` holds a provider to the one naming rule the engine depends on: two
|
|
305
|
+
logical stores it considers distinct never share one physical store. A provider must build
|
|
306
|
+
its names with `buildDataStoreName` / `buildIndexStoreName` and escape them into its own
|
|
307
|
+
namespace injectively; a name the namespace cannot represent must be *rejected*, never folded
|
|
308
|
+
onto another. The battery asserts this behaviorally — it opens a corpus of adversarial
|
|
309
|
+
`(schema, table)` and `(schema, table, index)` names, writes a distinct marker into each under
|
|
310
|
+
one shared key, and checks each still reads back its own — plus that two spellings of one
|
|
311
|
+
case-insensitive identifier land on the SAME store, and that a user table named `__stats__` or
|
|
312
|
+
`__catalog__` stays off the reserved stores:
|
|
313
|
+
|
|
314
|
+
```typescript
|
|
315
|
+
import { runStoreNameDistinctness } from '@quereus/store/testing';
|
|
316
|
+
|
|
317
|
+
runStoreNameDistinctness('MyCustomProvider store names', () => ({
|
|
318
|
+
open: async () => new MyCustomProvider(/* fresh, empty keyspace */),
|
|
319
|
+
teardown: async () => { /* close the provider, remove backing storage */ },
|
|
320
|
+
}));
|
|
321
|
+
```
|
|
322
|
+
|
|
323
|
+
All four backend plugins register it in their `test/conformance.spec.ts`. LevelDB and
|
|
324
|
+
IndexedDB are its reference implementations, so a failure there means the battery is wrong
|
|
325
|
+
rather than the plugin. `assertStoreNamesDistinct` — its core assertion — is exported
|
|
326
|
+
standalone; `test/store-name-distinctness.spec.ts` drives it against provider doubles built
|
|
327
|
+
to fold, truncate, and over-reject, so the guard itself is watched failing.
|
|
328
|
+
|
|
329
|
+
**Every provider runs the store-reclaim battery too.** `runStoreReclaimConformance(name,
|
|
330
|
+
makeReclaimBackend)` holds a provider to the other rule the engine depends on: when it is
|
|
331
|
+
told to delete a table's stores, those stores must be *erased*, not merely closed. Store
|
|
332
|
+
handles are re-opened lazily by name, so a provider that only drops its cached handle leaves
|
|
333
|
+
the bytes in place and the next table created under that name comes back holding the dropped
|
|
334
|
+
table's rows — a defect two of the four shipped providers had. The battery deletes and
|
|
335
|
+
re-opens by the same names, checking each store reads back empty through both a point `get`
|
|
336
|
+
and a scan, that a store re-created under a dropped name holds only its own new rows, that
|
|
337
|
+
`deleteIndexStore` touches only that one index, that sibling tables (including one literally
|
|
338
|
+
named `{table}_idx_<x>`), an index store the caller did not name, and the reserved
|
|
339
|
+
`__stats__` / `__catalog__` stores all survive, that deleting a store that was never created
|
|
340
|
+
is a no-op rather than a throw, that a store whose handle the caller already closed is still
|
|
341
|
+
erased (the order every `drop index` takes), and that a store holding more rows than a
|
|
342
|
+
provider erases in one pass comes back empty to the last key:
|
|
343
|
+
|
|
344
|
+
```typescript
|
|
345
|
+
import { runStoreReclaimConformance } from '@quereus/store/testing';
|
|
346
|
+
|
|
347
|
+
runStoreReclaimConformance('MyCustomProvider store reclaim', () => ({
|
|
348
|
+
open: async () => new MyCustomProvider(/* fresh, empty keyspace */),
|
|
349
|
+
teardown: async () => { /* close the provider, remove backing storage */ },
|
|
350
|
+
}));
|
|
351
|
+
```
|
|
352
|
+
|
|
353
|
+
It takes the same `KVProviderLifecycle` adapter as the naming battery, so a plugin's spec
|
|
354
|
+
builds one closure and registers both. Both delete hooks are optional on `KVStoreProvider`;
|
|
355
|
+
a provider that omits one is skipped for those cases, and the skip is printed rather than
|
|
356
|
+
silent. Reclaiming bytes *on disk* is deliberately not asserted — a provider may leave an
|
|
357
|
+
emptied database directory or an unshrunk file behind and still be correct.
|
|
358
|
+
|
|
244
359
|
## KVStore Interface
|
|
245
360
|
|
|
246
361
|
The `KVStore` interface is the foundation for all storage backends:
|
|
@@ -248,6 +363,10 @@ The `KVStore` interface is the foundation for all storage backends:
|
|
|
248
363
|
```typescript
|
|
249
364
|
interface KVStore {
|
|
250
365
|
get(key: Uint8Array): Promise<Uint8Array | undefined>;
|
|
366
|
+
// Positional: result[i] belongs to keys[i], `undefined` for an absent key, the array is
|
|
367
|
+
// always keys.length long, and a repeated key is answered at every position it occupies
|
|
368
|
+
// in its own buffer. No internal paging — the CALLER sizes the batch.
|
|
369
|
+
getMany(keys: readonly Uint8Array[]): Promise<(Uint8Array | undefined)[]>;
|
|
251
370
|
put(key: Uint8Array, value: Uint8Array): Promise<void>;
|
|
252
371
|
delete(key: Uint8Array): Promise<void>;
|
|
253
372
|
has(key: Uint8Array): Promise<boolean>;
|
|
@@ -311,6 +430,8 @@ const caps = storeModule.getCapabilities();
|
|
|
311
430
|
- No snapshot isolation: between connections, reads see only committed data, and concurrent readers may observe partial writes
|
|
312
431
|
- Within a transaction, reads through the table's shared coordinator DO see that transaction's own pending writes (read-your-own-writes). This extends to DML's own internal reads: the insert PK-conflict probe, the update/delete old-image reads, and the update PK-change conflict probe all read through the pending merge, so an INSERT/UPDATE/DELETE against a row written earlier in the same transaction sees that pending row — it raises a UNIQUE conflict (or evicts under `OR REPLACE`), cleans up secondary-index entries, tracks the correct row-count delta, and emits events carrying the pending `oldRow`
|
|
313
432
|
- Row-validating DDL reads the same effective stream: `create index` / `create unique index` populate from it (see above), and `alter table … add constraint … unique` plus the `set collate` re-validation of a covering non-PK UNIQUE scan it too — so a duplicate inserted earlier in the still-open transaction is rejected rather than surviving to commit
|
|
433
|
+
- A **schema-only** DDL statement that fails is a clean no-op: `create index` / `drop index` and every `alter table` path that rewrites no row data (`add` / `drop` / `rename constraint`, `rename column`, and the `alter column` shapes with no value rewrite, key re-encode or index rebuild — `drop not null`, `set default`, a `set not null` over rows holding no NULL, a `set collate` on an unindexed non-PK column) put the connected table's cached schema back when the catalog write throws. Without that undo the module's in-memory schema stayed one statement ahead of both the engine and the catalog for the rest of the session, and the *next* successful catalog write — from any later statement — made the refused change durable
|
|
434
|
+
- Not so for the **row-rewriting** paths (`add` / `drop column`, `alter primary key`, and the `alter column` shapes that convert values, re-key, or rebuild indexes): by the time they persist they have already re-encoded the store outside any transaction, so restoring the old schema would misread the new bytes. An IO error between the rewrite and the catalog write leaves the two diverged until the statement is re-run — an accepted tradeoff whose real fix is one durable marker covering the whole physical rewrite
|
|
314
435
|
- Savepoints (create / release / rollback-to) work within a transaction via the coordinator's buffered op log
|
|
315
436
|
- Caveat: a DDL-commit operation (`replaceContents` / `renameTable`, e.g. `refresh materialized view` or `alter table … rename`) commits the coordinator mid-transaction, clearing the savepoint stack. A later `rollback to` / `release` targeting a now-vanished savepoint degrades to a no-op (warn-and-return) rather than throwing; the committed DDL and everything before it stays committed
|
|
316
437
|
|
|
@@ -36,11 +36,27 @@ export declare class CachedKVStore implements KVStore {
|
|
|
36
36
|
/** Get the underlying (unwrapped) store. */
|
|
37
37
|
getUnderlying(): KVStore;
|
|
38
38
|
get(key: Uint8Array): Promise<Uint8Array | undefined>;
|
|
39
|
+
/**
|
|
40
|
+
* Serve whatever the cache already holds from memory and batch ONLY the misses to the
|
|
41
|
+
* underlying store, so a partially-warm batch costs one round trip for the cold part
|
|
42
|
+
* instead of one for everything.
|
|
43
|
+
*
|
|
44
|
+
* The miss positions are remembered rather than re-derived, so the result stays
|
|
45
|
+
* positional even when hits and misses interleave. Buffer discipline is the same as
|
|
46
|
+
* `get`: a hit hands out a copy of the cached buffer, and a miss caches its own copy
|
|
47
|
+
* of what the underlying handed back.
|
|
48
|
+
*/
|
|
49
|
+
getMany(keys: readonly Uint8Array[]): Promise<(Uint8Array | undefined)[]>;
|
|
39
50
|
has(key: Uint8Array): Promise<boolean>;
|
|
40
51
|
put(key: Uint8Array, value: Uint8Array, options?: WriteOptions): Promise<void>;
|
|
41
52
|
delete(key: Uint8Array, options?: WriteOptions): Promise<void>;
|
|
42
53
|
iterate(options?: IterateOptions): AsyncIterable<KVEntry>;
|
|
43
54
|
batch(): WriteBatch;
|
|
55
|
+
/**
|
|
56
|
+
* Dropping the cache BEFORE closing the underlying store is load-bearing, not tidiness:
|
|
57
|
+
* a warm entry left behind would let `get`/`getMany` keep answering from memory after
|
|
58
|
+
* close, where every real backend rejects. Conformance tiers 1 and 8 pin that rejection.
|
|
59
|
+
*/
|
|
44
60
|
close(): Promise<void>;
|
|
45
61
|
approximateCount(options?: IterateOptions): Promise<number>;
|
|
46
62
|
/** Invalidate a single key from the cache. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cached-kv-store.d.ts","sourceRoot":"","sources":["../../../src/common/cached-kv-store.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,cAAc,EAAW,YAAY,EAAE,MAAM,eAAe,CAAC;AAEzG,mDAAmD;AACnD,MAAM,WAAW,YAAY;IAC5B,sDAAsD;IACtD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,uDAAuD;IACvD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,8CAA8C;IAC9C,OAAO,CAAC,EAAE,OAAO,CAAC;CAClB;AA0BD;;;;;;;GAOG;AACH,qBAAa,aAAc,YAAW,OAAO;IAC5C,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAU;IAChC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAqB;IAC9C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAU;IAGlC,OAAO,CAAC,IAAI,CAAwB;IACpC,OAAO,CAAC,IAAI,CAAwB;IACpC,OAAO,CAAC,GAAG,CAA8B;IACzC,OAAO,CAAC,UAAU,CAAK;gBAEX,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,YAAY;IAOlD,4CAA4C;IAC5C,aAAa,IAAI,OAAO;IAIlB,GAAG,CAAC,GAAG,EAAE,UAAU,GAAG,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"cached-kv-store.d.ts","sourceRoot":"","sources":["../../../src/common/cached-kv-store.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,cAAc,EAAW,YAAY,EAAE,MAAM,eAAe,CAAC;AAEzG,mDAAmD;AACnD,MAAM,WAAW,YAAY;IAC5B,sDAAsD;IACtD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,uDAAuD;IACvD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,8CAA8C;IAC9C,OAAO,CAAC,EAAE,OAAO,CAAC;CAClB;AA0BD;;;;;;;GAOG;AACH,qBAAa,aAAc,YAAW,OAAO;IAC5C,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAU;IAChC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAqB;IAC9C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAU;IAGlC,OAAO,CAAC,IAAI,CAAwB;IACpC,OAAO,CAAC,IAAI,CAAwB;IACpC,OAAO,CAAC,GAAG,CAA8B;IACzC,OAAO,CAAC,UAAU,CAAK;gBAEX,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,YAAY;IAOlD,4CAA4C;IAC5C,aAAa,IAAI,OAAO;IAIlB,GAAG,CAAC,GAAG,EAAE,UAAU,GAAG,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC;IAiB3D;;;;;;;;;OASG;IACG,OAAO,CAAC,IAAI,EAAE,SAAS,UAAU,EAAE,GAAG,OAAO,CAAC,CAAC,UAAU,GAAG,SAAS,CAAC,EAAE,CAAC;IA6BzE,GAAG,CAAC,GAAG,EAAE,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC;IAgBtC,GAAG,CAAC,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAmB9E,MAAM,CAAC,GAAG,EAAE,UAAU,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAkBpE,OAAO,CAAC,OAAO,CAAC,EAAE,cAAc,GAAG,aAAa,CAAC,OAAO,CAAC;IAKzD,KAAK,IAAI,UAAU;IAInB;;;;OAIG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAK5B,gBAAgB,CAAC,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC;IAI3D,8CAA8C;IAC9C,UAAU,CAAC,GAAG,EAAE,UAAU,GAAG,IAAI;IAKjC,6CAA6C;IAC7C,aAAa,IAAI,IAAI;IASrB,OAAO,CAAC,QAAQ;IAmBhB,OAAO,CAAC,WAAW;IAQnB,OAAO,CAAC,UAAU;IAMlB,OAAO,CAAC,WAAW;IAYnB,OAAO,CAAC,UAAU;IAelB,OAAO,CAAC,KAAK;CASb"}
|
|
@@ -63,6 +63,44 @@ export class CachedKVStore {
|
|
|
63
63
|
this.addEntry(hex, copyValue(value), key.length + (value?.length ?? 0));
|
|
64
64
|
return value;
|
|
65
65
|
}
|
|
66
|
+
/**
|
|
67
|
+
* Serve whatever the cache already holds from memory and batch ONLY the misses to the
|
|
68
|
+
* underlying store, so a partially-warm batch costs one round trip for the cold part
|
|
69
|
+
* instead of one for everything.
|
|
70
|
+
*
|
|
71
|
+
* The miss positions are remembered rather than re-derived, so the result stays
|
|
72
|
+
* positional even when hits and misses interleave. Buffer discipline is the same as
|
|
73
|
+
* `get`: a hit hands out a copy of the cached buffer, and a miss caches its own copy
|
|
74
|
+
* of what the underlying handed back.
|
|
75
|
+
*/
|
|
76
|
+
async getMany(keys) {
|
|
77
|
+
if (!this.enabled)
|
|
78
|
+
return this.store.getMany(keys);
|
|
79
|
+
const out = new Array(keys.length);
|
|
80
|
+
const missPositions = [];
|
|
81
|
+
const missKeys = [];
|
|
82
|
+
for (let i = 0; i < keys.length; i++) {
|
|
83
|
+
const node = this.map.get(bytesToHex(keys[i]));
|
|
84
|
+
if (node) {
|
|
85
|
+
this.moveToHead(node);
|
|
86
|
+
out[i] = copyValue(node.value);
|
|
87
|
+
}
|
|
88
|
+
else {
|
|
89
|
+
missPositions.push(i);
|
|
90
|
+
missKeys.push(keys[i]);
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
if (missKeys.length > 0) {
|
|
94
|
+
const values = await this.store.getMany(missKeys);
|
|
95
|
+
for (let j = 0; j < missPositions.length; j++) {
|
|
96
|
+
const key = missKeys[j];
|
|
97
|
+
const value = values[j];
|
|
98
|
+
this.addEntry(bytesToHex(key), copyValue(value), key.length + (value?.length ?? 0));
|
|
99
|
+
out[missPositions[j]] = value;
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
return out;
|
|
103
|
+
}
|
|
66
104
|
async has(key) {
|
|
67
105
|
if (!this.enabled)
|
|
68
106
|
return this.store.has(key);
|
|
@@ -121,6 +159,11 @@ export class CachedKVStore {
|
|
|
121
159
|
batch() {
|
|
122
160
|
return new CachedWriteBatch(this.store.batch(), this);
|
|
123
161
|
}
|
|
162
|
+
/**
|
|
163
|
+
* Dropping the cache BEFORE closing the underlying store is load-bearing, not tidiness:
|
|
164
|
+
* a warm entry left behind would let `get`/`getMany` keep answering from memory after
|
|
165
|
+
* close, where every real backend rejects. Conformance tiers 1 and 8 pin that rejection.
|
|
166
|
+
*/
|
|
124
167
|
async close() {
|
|
125
168
|
this.invalidateAll();
|
|
126
169
|
return this.store.close();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cached-kv-store.js","sourceRoot":"","sources":["../../../src/common/cached-kv-store.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cached-kv-store.js","sourceRoot":"","sources":["../../../src/common/cached-kv-store.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
* Common utilities for the persistent store module.
|
|
3
3
|
*/
|
|
4
4
|
export type { KVStore, KVEntry, WriteBatch, WriteOptions, BatchOp, AtomicBatch, IterateOptions, KVStoreFactory, KVStoreOptions, KVStoreProvider, } from './kv-store.js';
|
|
5
|
+
export { defaultGetMany } from './kv-store.js';
|
|
5
6
|
export { pagedIterate, type FetchBatch } from './paged-iterate.js';
|
|
6
7
|
export { encodeValue, encodeCompositeKey, decodeValue, decodeCompositeKey, BUILTIN_KEY_NORMALIZER_RESOLVER, assertNoUnpairedSurrogate, findUnpairedSurrogate, type EncodeOptions, type KeyValueTransform, } from './encoding.js';
|
|
7
8
|
export { serializeRow, deserializeRow, serializeValue, deserializeValue, serializeStats, deserializeStats, type TableStats, } from './serialization.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/common/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,YAAY,EACV,OAAO,EACP,OAAO,EACP,UAAU,EACV,YAAY,EACZ,OAAO,EACP,WAAW,EACX,cAAc,EACd,cAAc,EACd,cAAc,EACd,eAAe,GAChB,MAAM,eAAe,CAAC;AAGvB,OAAO,EAAE,YAAY,EAAE,KAAK,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAGnE,OAAO,EACL,WAAW,EACX,kBAAkB,EAClB,WAAW,EACX,kBAAkB,EAClB,+BAA+B,EAC/B,yBAAyB,EACzB,qBAAqB,EACrB,KAAK,aAAa,EAClB,KAAK,iBAAiB,GACvB,MAAM,eAAe,CAAC;AAGvB,OAAO,EACL,YAAY,EACZ,cAAc,EACd,cAAc,EACd,gBAAgB,EAChB,cAAc,EACd,gBAAgB,EAChB,KAAK,UAAU,GAChB,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EACN,YAAY,EACZ,kBAAkB,EAClB,gBAAgB,EAChB,kBAAkB,EAClB,mBAAmB,EACnB,mBAAmB,EACnB,aAAa,EACb,YAAY,EACZ,aAAa,EACb,KAAK,YAAY,EACjB,eAAe,EACf,mBAAmB,EACnB,+BAA+B,EAC/B,+BAA+B,EAC/B,mBAAmB,EACnB,wBAAwB,EACxB,mBAAmB,EACnB,kBAAkB,EAClB,KAAK,gBAAgB,EACrB,mBAAmB,EACnB,sBAAsB,EACtB,mBAAmB,EACnB,sBAAsB,EAEtB,UAAU,EACV,gBAAgB,EAChB,oBAAoB,EACpB,oBAAoB,EACpB,YAAY,EACZ,mBAAmB,GACnB,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EACL,iBAAiB,EACjB,KAAK,iBAAiB,EACtB,KAAK,eAAe,EACpB,KAAK,oBAAoB,EACzB,KAAK,kBAAkB,GACxB,MAAM,aAAa,CAAC;AAGrB,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,eAAe,EAAE,0BAA0B,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAGzI,OAAO,EACL,sBAAsB,EACtB,KAAK,oBAAoB,EACzB,KAAK,eAAe,EACpB,KAAK,iBAAiB,GACvB,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAGlE,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAGpD,OAAO,EAAE,aAAa,EAAE,KAAK,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAGxE,OAAO,EAAE,UAAU,EAAE,KAAK,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAClE,OAAO,EAAE,KAAK,gBAAgB,EAAE,KAAK,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAGrF,OAAO,EACL,sBAAsB,EACtB,sBAAsB,EACtB,yBAAyB,EACzB,yBAAyB,EACzB,yBAAyB,GAC1B,MAAM,wBAAwB,CAAC;AAGhC,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAGxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAIrD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,KAAK,iBAAiB,EAAE,KAAK,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAC7F,OAAO,EAAE,KAAK,iBAAiB,EAAE,KAAK,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAG9F,OAAO,EACN,yBAAyB,EACzB,YAAY,EACZ,KAAK,yBAAyB,GAC9B,MAAM,qBAAqB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/common/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,YAAY,EACV,OAAO,EACP,OAAO,EACP,UAAU,EACV,YAAY,EACZ,OAAO,EACP,WAAW,EACX,cAAc,EACd,cAAc,EACd,cAAc,EACd,eAAe,GAChB,MAAM,eAAe,CAAC;AAGvB,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAG/C,OAAO,EAAE,YAAY,EAAE,KAAK,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAGnE,OAAO,EACL,WAAW,EACX,kBAAkB,EAClB,WAAW,EACX,kBAAkB,EAClB,+BAA+B,EAC/B,yBAAyB,EACzB,qBAAqB,EACrB,KAAK,aAAa,EAClB,KAAK,iBAAiB,GACvB,MAAM,eAAe,CAAC;AAGvB,OAAO,EACL,YAAY,EACZ,cAAc,EACd,cAAc,EACd,gBAAgB,EAChB,cAAc,EACd,gBAAgB,EAChB,KAAK,UAAU,GAChB,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EACN,YAAY,EACZ,kBAAkB,EAClB,gBAAgB,EAChB,kBAAkB,EAClB,mBAAmB,EACnB,mBAAmB,EACnB,aAAa,EACb,YAAY,EACZ,aAAa,EACb,KAAK,YAAY,EACjB,eAAe,EACf,mBAAmB,EACnB,+BAA+B,EAC/B,+BAA+B,EAC/B,mBAAmB,EACnB,wBAAwB,EACxB,mBAAmB,EACnB,kBAAkB,EAClB,KAAK,gBAAgB,EACrB,mBAAmB,EACnB,sBAAsB,EACtB,mBAAmB,EACnB,sBAAsB,EAEtB,UAAU,EACV,gBAAgB,EAChB,oBAAoB,EACpB,oBAAoB,EACpB,YAAY,EACZ,mBAAmB,GACnB,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EACL,iBAAiB,EACjB,KAAK,iBAAiB,EACtB,KAAK,eAAe,EACpB,KAAK,oBAAoB,EACzB,KAAK,kBAAkB,GACxB,MAAM,aAAa,CAAC;AAGrB,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,eAAe,EAAE,0BAA0B,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAGzI,OAAO,EACL,sBAAsB,EACtB,KAAK,oBAAoB,EACzB,KAAK,eAAe,EACpB,KAAK,iBAAiB,GACvB,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAGlE,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAGpD,OAAO,EAAE,aAAa,EAAE,KAAK,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAGxE,OAAO,EAAE,UAAU,EAAE,KAAK,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAClE,OAAO,EAAE,KAAK,gBAAgB,EAAE,KAAK,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAGrF,OAAO,EACL,sBAAsB,EACtB,sBAAsB,EACtB,yBAAyB,EACzB,yBAAyB,EACzB,yBAAyB,GAC1B,MAAM,wBAAwB,CAAC;AAGhC,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAGxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAIrD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,KAAK,iBAAiB,EAAE,KAAK,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAC7F,OAAO,EAAE,KAAK,iBAAiB,EAAE,KAAK,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAG9F,OAAO,EACN,yBAAyB,EACzB,YAAY,EACZ,KAAK,yBAAyB,GAC9B,MAAM,qBAAqB,CAAC"}
|
package/dist/src/common/index.js
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Common utilities for the persistent store module.
|
|
3
3
|
*/
|
|
4
|
+
// Shared `getMany` fallback for backends without a native batch point-read
|
|
5
|
+
export { defaultGetMany } from './kv-store.js';
|
|
4
6
|
// Bounded paging for backends without a streaming cursor
|
|
5
7
|
export { pagedIterate } from './paged-iterate.js';
|
|
6
8
|
// Key encoding
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/common/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAgBH,yDAAyD;AACzD,OAAO,EAAE,YAAY,EAAmB,MAAM,oBAAoB,CAAC;AAEnE,eAAe;AACf,OAAO,EACL,WAAW,EACX,kBAAkB,EAClB,WAAW,EACX,kBAAkB,EAClB,+BAA+B,EAC/B,yBAAyB,EACzB,qBAAqB,GAGtB,MAAM,eAAe,CAAC;AAEvB,oBAAoB;AACpB,OAAO,EACL,YAAY,EACZ,cAAc,EACd,cAAc,EACd,gBAAgB,EAChB,cAAc,EACd,gBAAgB,GAEjB,MAAM,oBAAoB,CAAC;AAE5B,yBAAyB;AACzB,OAAO,EACN,YAAY,EACZ,kBAAkB,EAClB,gBAAgB,EAChB,kBAAkB,EAClB,mBAAmB,EACnB,mBAAmB,EACnB,aAAa,EACb,YAAY,EACZ,aAAa,EAEb,eAAe,EACf,mBAAmB,EACnB,+BAA+B,EAC/B,+BAA+B,EAC/B,mBAAmB,EACnB,wBAAwB,EACxB,mBAAmB,EACnB,kBAAkB,EAElB,mBAAmB,EACnB,sBAAsB,EACtB,mBAAmB,EACnB,sBAAsB;AACtB,8BAA8B;AAC9B,UAAU,EACV,gBAAgB,EAChB,oBAAoB,EACpB,oBAAoB,EACpB,YAAY,EACZ,mBAAmB,GACnB,MAAM,kBAAkB,CAAC;AAE1B,SAAS;AACT,OAAO,EACL,iBAAiB,GAKlB,MAAM,aAAa,CAAC;AAErB,sEAAsE;AACtE,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,eAAe,EAAE,0BAA0B,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAEzI,sBAAsB;AACtB,OAAO,EACL,sBAAsB,GAIvB,MAAM,kBAAkB,CAAC;AAE1B,gCAAgC;AAChC,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAElE,qBAAqB;AACrB,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD,0BAA0B;AAC1B,OAAO,EAAE,aAAa,EAAqB,MAAM,sBAAsB,CAAC;AAExE,qCAAqC;AACrC,OAAO,EAAE,UAAU,EAAsB,MAAM,kBAAkB,CAAC;AAGlE,yDAAyD;AACzD,OAAO,EACL,sBAAsB,EACtB,sBAAsB,EACtB,yBAAyB,EACzB,yBAAyB,EACzB,yBAAyB,GAC1B,MAAM,wBAAwB,CAAC;AAEhC,wDAAwD;AACxD,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAExD,qFAAqF;AACrF,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAErD,wFAAwF;AACxF,mEAAmE;AACnE,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAIhD,4BAA4B;AAC5B,OAAO,EACN,yBAAyB,EACzB,YAAY,GAEZ,MAAM,qBAAqB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/common/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAgBH,2EAA2E;AAC3E,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAE/C,yDAAyD;AACzD,OAAO,EAAE,YAAY,EAAmB,MAAM,oBAAoB,CAAC;AAEnE,eAAe;AACf,OAAO,EACL,WAAW,EACX,kBAAkB,EAClB,WAAW,EACX,kBAAkB,EAClB,+BAA+B,EAC/B,yBAAyB,EACzB,qBAAqB,GAGtB,MAAM,eAAe,CAAC;AAEvB,oBAAoB;AACpB,OAAO,EACL,YAAY,EACZ,cAAc,EACd,cAAc,EACd,gBAAgB,EAChB,cAAc,EACd,gBAAgB,GAEjB,MAAM,oBAAoB,CAAC;AAE5B,yBAAyB;AACzB,OAAO,EACN,YAAY,EACZ,kBAAkB,EAClB,gBAAgB,EAChB,kBAAkB,EAClB,mBAAmB,EACnB,mBAAmB,EACnB,aAAa,EACb,YAAY,EACZ,aAAa,EAEb,eAAe,EACf,mBAAmB,EACnB,+BAA+B,EAC/B,+BAA+B,EAC/B,mBAAmB,EACnB,wBAAwB,EACxB,mBAAmB,EACnB,kBAAkB,EAElB,mBAAmB,EACnB,sBAAsB,EACtB,mBAAmB,EACnB,sBAAsB;AACtB,8BAA8B;AAC9B,UAAU,EACV,gBAAgB,EAChB,oBAAoB,EACpB,oBAAoB,EACpB,YAAY,EACZ,mBAAmB,GACnB,MAAM,kBAAkB,CAAC;AAE1B,SAAS;AACT,OAAO,EACL,iBAAiB,GAKlB,MAAM,aAAa,CAAC;AAErB,sEAAsE;AACtE,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,eAAe,EAAE,0BAA0B,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAEzI,sBAAsB;AACtB,OAAO,EACL,sBAAsB,GAIvB,MAAM,kBAAkB,CAAC;AAE1B,gCAAgC;AAChC,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAElE,qBAAqB;AACrB,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD,0BAA0B;AAC1B,OAAO,EAAE,aAAa,EAAqB,MAAM,sBAAsB,CAAC;AAExE,qCAAqC;AACrC,OAAO,EAAE,UAAU,EAAsB,MAAM,kBAAkB,CAAC;AAGlE,yDAAyD;AACzD,OAAO,EACL,sBAAsB,EACtB,sBAAsB,EACtB,yBAAyB,EACzB,yBAAyB,EACzB,yBAAyB,GAC1B,MAAM,wBAAwB,CAAC;AAEhC,wDAAwD;AACxD,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAExD,qFAAqF;AACrF,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAErD,wFAAwF;AACxF,mEAAmE;AACnE,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAIhD,4BAA4B;AAC5B,OAAO,EACN,yBAAyB,EACzB,YAAY,GAEZ,MAAM,qBAAqB,CAAC"}
|
|
@@ -39,11 +39,14 @@ export declare const STATS_STORE_NAME = "__stats__";
|
|
|
39
39
|
* Refusing the identifier here is also what lets `StoreModule.assertStoreNameFree` stand in
|
|
40
40
|
* for a PHYSICAL store collision check: that guard compares names as JS strings, before any
|
|
41
41
|
* provider encoding, so distinct logical names imply distinct physical stores only where the
|
|
42
|
-
* provider's encoding is injective. With unpaired surrogates refused
|
|
43
|
-
*
|
|
44
|
-
*
|
|
45
|
-
*
|
|
46
|
-
*
|
|
42
|
+
* provider's encoding is injective. With unpaired surrogates refused, every shipped
|
|
43
|
+
* provider's encoding is: LevelDB percent-escapes the UTF-8 bytes, IndexedDB uses the name
|
|
44
|
+
* verbatim as a `DOMString`, NativeScript SQLite escapes to `[a-z0-9_]` with `_` as the
|
|
45
|
+
* introducer, and React Native LevelDB percent-escapes into a filename-safe set. That is a
|
|
46
|
+
* property of each provider rather than of this module, so it is pinned behaviorally by the
|
|
47
|
+
* shared `runStoreNameDistinctness` battery (`@quereus/store/testing`), which every plugin's
|
|
48
|
+
* `test/conformance.spec.ts` registers — a new provider that re-derives its own names fails
|
|
49
|
+
* there instead of silently merging two tables' rows.
|
|
47
50
|
*/
|
|
48
51
|
export declare function buildDataStoreName(schemaName: string, tableName: string): string;
|
|
49
52
|
/**
|
|
@@ -52,7 +55,7 @@ export declare function buildDataStoreName(schemaName: string, tableName: string
|
|
|
52
55
|
*
|
|
53
56
|
* Identifier-guarded for the same reason as {@link buildDataStoreName} — see its docstring
|
|
54
57
|
* for why refusing an unpaired surrogate is what keeps distinct logical names on distinct
|
|
55
|
-
* physical stores
|
|
58
|
+
* physical stores.
|
|
56
59
|
*/
|
|
57
60
|
export declare function buildIndexStoreName(schemaName: string, tableName: string, indexName: string): string;
|
|
58
61
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"key-builder.d.ts","sourceRoot":"","sources":["../../../src/common/key-builder.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAiD,KAAK,aAAa,EAAE,KAAK,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAK1H;;GAEG;AACH,eAAO,MAAM,YAAY;;;CAGf,CAAC;AAEX,mCAAmC;AACnC,eAAO,MAAM,kBAAkB,gBAAgB,CAAC;AAEhD,iCAAiC;AACjC,eAAO,MAAM,gBAAgB,cAAc,CAAC;AAgB5C
|
|
1
|
+
{"version":3,"file":"key-builder.d.ts","sourceRoot":"","sources":["../../../src/common/key-builder.ts"],"names":[],"mappings":"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"}
|
|
@@ -53,11 +53,14 @@ function assertKeyableIdentifiers(...names) {
|
|
|
53
53
|
* Refusing the identifier here is also what lets `StoreModule.assertStoreNameFree` stand in
|
|
54
54
|
* for a PHYSICAL store collision check: that guard compares names as JS strings, before any
|
|
55
55
|
* provider encoding, so distinct logical names imply distinct physical stores only where the
|
|
56
|
-
* provider's encoding is injective. With unpaired surrogates refused
|
|
57
|
-
*
|
|
58
|
-
*
|
|
59
|
-
*
|
|
60
|
-
*
|
|
56
|
+
* provider's encoding is injective. With unpaired surrogates refused, every shipped
|
|
57
|
+
* provider's encoding is: LevelDB percent-escapes the UTF-8 bytes, IndexedDB uses the name
|
|
58
|
+
* verbatim as a `DOMString`, NativeScript SQLite escapes to `[a-z0-9_]` with `_` as the
|
|
59
|
+
* introducer, and React Native LevelDB percent-escapes into a filename-safe set. That is a
|
|
60
|
+
* property of each provider rather than of this module, so it is pinned behaviorally by the
|
|
61
|
+
* shared `runStoreNameDistinctness` battery (`@quereus/store/testing`), which every plugin's
|
|
62
|
+
* `test/conformance.spec.ts` registers — a new provider that re-derives its own names fails
|
|
63
|
+
* there instead of silently merging two tables' rows.
|
|
61
64
|
*/
|
|
62
65
|
// NOTE: composes with a literal '.' delimiter, so the schema/table boundary is
|
|
63
66
|
// not recoverable from the physical name. A lone dotted identifier round-trips
|
|
@@ -77,8 +80,16 @@ export function buildDataStoreName(schemaName, tableName) {
|
|
|
77
80
|
*
|
|
78
81
|
* Identifier-guarded for the same reason as {@link buildDataStoreName} — see its docstring
|
|
79
82
|
* for why refusing an unpaired surrogate is what keeps distinct logical names on distinct
|
|
80
|
-
* physical stores
|
|
83
|
+
* physical stores.
|
|
81
84
|
*/
|
|
85
|
+
// NOTE: `_idx_` is a legal substring of an ordinary identifier, so — exactly like the '.'
|
|
86
|
+
// delimiter in buildDataStoreName — this join is not boundary-safe: index `x` on table `t`
|
|
87
|
+
// and a sibling table literally named `t_idx_x` both compose to `{schema}.t_idx_x`. That
|
|
88
|
+
// collision is real but is caught above every provider by
|
|
89
|
+
// `StoreModuleBase.assertStoreNameFree`, which rejects whichever of the two is created
|
|
90
|
+
// second (see `collectOccupiedStoreNames`). No provider can distinguish them, so
|
|
91
|
+
// `runStoreNameDistinctness` deliberately excludes the pair from its corpus. If the guard
|
|
92
|
+
// ever has to go, switch to a boundary-safe encoding here rather than widening the guard.
|
|
82
93
|
export function buildIndexStoreName(schemaName, tableName, indexName) {
|
|
83
94
|
assertKeyableIdentifiers(schemaName, tableName, indexName);
|
|
84
95
|
return `${schemaName}.${tableName}_idx_${indexName}`.toLowerCase();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"key-builder.js","sourceRoot":"","sources":["../../../src/common/key-builder.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAGH,OAAO,EAAE,kBAAkB,EAAE,yBAAyB,EAA8C,MAAM,eAAe,CAAC;AAE1H,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC;AAClC,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC;AAElC;;GAEG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG;IAC3B,KAAK,EAAE,OAAO;IACd,KAAK,EAAE,QAAQ;CACN,CAAC;AAEX,mCAAmC;AACnC,MAAM,CAAC,MAAM,kBAAkB,GAAG,aAAa,CAAC;AAEhD,iCAAiC;AACjC,MAAM,CAAC,MAAM,gBAAgB,GAAG,WAAW,CAAC;AAE5C;;;;;;;GAOG;AACH,SAAS,wBAAwB,CAAC,GAAG,KAAe;IACnD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QAC1B,yBAAyB,CAAC,IAAI,EAAE,mBAAmB,IAAI,GAAG,CAAC,CAAC;IAC7D,CAAC;AACF,CAAC;AAED
|
|
1
|
+
{"version":3,"file":"key-builder.js","sourceRoot":"","sources":["../../../src/common/key-builder.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAGH,OAAO,EAAE,kBAAkB,EAAE,yBAAyB,EAA8C,MAAM,eAAe,CAAC;AAE1H,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC;AAClC,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC;AAElC;;GAEG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG;IAC3B,KAAK,EAAE,OAAO;IACd,KAAK,EAAE,QAAQ;CACN,CAAC;AAEX,mCAAmC;AACnC,MAAM,CAAC,MAAM,kBAAkB,GAAG,aAAa,CAAC;AAEhD,iCAAiC;AACjC,MAAM,CAAC,MAAM,gBAAgB,GAAG,WAAW,CAAC;AAE5C;;;;;;;GAOG;AACH,SAAS,wBAAwB,CAAC,GAAG,KAAe;IACnD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QAC1B,yBAAyB,CAAC,IAAI,EAAE,mBAAmB,IAAI,GAAG,CAAC,CAAC;IAC7D,CAAC;AACF,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,+EAA+E;AAC/E,+EAA+E;AAC/E,2EAA2E;AAC3E,4EAA4E;AAC5E,4EAA4E;AAC5E,+EAA+E;AAC/E,gFAAgF;AAChF,oEAAoE;AACpE,MAAM,UAAU,kBAAkB,CAAC,UAAkB,EAAE,SAAiB;IACvE,wBAAwB,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;IAChD,OAAO,GAAG,UAAU,IAAI,SAAS,EAAE,CAAC,WAAW,EAAE,CAAC;AACnD,CAAC;AAED;;;;;;;GAOG;AACH,0FAA0F;AAC1F,2FAA2F;AAC3F,yFAAyF;AACzF,0DAA0D;AAC1D,uFAAuF;AACvF,iFAAiF;AACjF,0FAA0F;AAC1F,0FAA0F;AAC1F,MAAM,UAAU,mBAAmB,CAClC,UAAkB,EAClB,SAAiB,EACjB,SAAiB;IAEjB,wBAAwB,CAAC,UAAU,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;IAC3D,OAAO,GAAG,UAAU,IAAI,SAAS,QAAQ,SAAS,EAAE,CAAC,WAAW,EAAE,CAAC;AACpE,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,mBAAmB,CAAC,UAAkB,EAAE,SAAiB;IACxE,OAAO,GAAG,UAAU,IAAI,SAAS,QAAQ,CAAC,WAAW,EAAE,CAAC;AACzD,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,aAAa,CAAC,UAAkB,EAAE,SAAiB;IAClE,wBAAwB,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;IAChD,OAAO,OAAO,CAAC,MAAM,CAAC,GAAG,UAAU,IAAI,SAAS,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC;AACnE,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,YAAY,CAC3B,QAAoB,EACpB,OAAuB,EACvB,UAAmC,EACnC,UAA8C,EAC9C,UAAyD;IAEzD,OAAO,kBAAkB,CAAC,QAAQ,EAAE,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;AAClF,CAAC;AAeD;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,UAAU,aAAa,CAC5B,KAAmB,EACnB,EAAgB,EAChB,OAAuB;IAEvB,MAAM,YAAY,GAAG,kBAAkB,CAAC,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;IACrH,MAAM,SAAS,GAAG,kBAAkB,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC;IACtG,OAAO,WAAW,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC;AAC7C,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,eAAe,CAAC,UAAkB,EAAE,SAAiB;IACpE,wBAAwB,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;IAChD,OAAO,OAAO,CAAC,MAAM,CAAC,GAAG,UAAU,IAAI,SAAS,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC;AACnE,CAAC;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,eAAe,GAAG,cAAc,CAAC;AACvC,MAAM,gBAAgB,GAAG,eAAe,CAAC;AACzC,MAAM,eAAe,GAAG,cAAc,CAAC;AACvC,MAAM,qBAAqB,GAAG,OAAO,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;AAC9D,MAAM,sBAAsB,GAAG,OAAO,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;AAChE,MAAM,qBAAqB,GAAG,OAAO,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;AAK9D;;;;GAIG;AACH,MAAM,UAAU,mBAAmB,CAAC,UAAkB,EAAE,QAAgB;IACvE,wBAAwB,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;IAC/C,OAAO,OAAO,CAAC,MAAM,CAAC,GAAG,eAAe,GAAG,GAAG,UAAU,IAAI,QAAQ,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;AACzF,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,+BAA+B,CAAC,UAAkB,EAAE,MAAc;IACjF,wBAAwB,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;IAC7C,OAAO,OAAO,CAAC,MAAM,CAAC,GAAG,gBAAgB,GAAG,GAAG,UAAU,IAAI,MAAM,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;AACxF,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,+BAA+B,CAAC,GAAe;IAC9D,OAAO,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,sBAAsB,CAAC,MAAM,CAAC,CAAC,CAAC;AACpE,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,mBAAmB,CAAC,IAAY;IAC/C,OAAO,OAAO,CAAC,MAAM,CAAC,GAAG,eAAe,GAAG,IAAI,EAAE,CAAC,CAAC;AACpD,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,gBAAgB,CAAC;AAEzD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,WAAW,CAAC;AAE/C;;;;;GAKG;AACH,MAAM,UAAU,kBAAkB,CAAC,GAAe;IACjD,IAAI,eAAe,CAAC,GAAG,EAAE,qBAAqB,CAAC;QAAE,OAAO,MAAM,CAAC;IAC/D,IAAI,eAAe,CAAC,GAAG,EAAE,sBAAsB,CAAC;QAAE,OAAO,kBAAkB,CAAC;IAC5E,IAAI,eAAe,CAAC,GAAG,EAAE,qBAAqB,CAAC;QAAE,OAAO,MAAM,CAAC;IAC/D,OAAO,OAAO,CAAC;AAChB,CAAC;AAED,8DAA8D;AAC9D,SAAS,eAAe,CAAC,GAAe,EAAE,MAAkB;IAC3D,IAAI,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM;QAAE,OAAO,KAAK,CAAC;IAC7C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACxC,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC;YAAE,OAAO,KAAK,CAAC;IACxC,CAAC;IACD,OAAO,IAAI,CAAC;AACb,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,mBAAmB;IAClC,OAAO;QACN,GAAG,EAAE,IAAI,UAAU,CAAC,CAAC,CAAC;KACtB,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,MAAM,UAAU,sBAAsB,CACrC,YAAwB,EACxB,OAAuB,EACvB,UAAmC,EACnC,UAA8C,EAC9C,UAAyD;IAEzD,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC/B,OAAO,mBAAmB,EAAE,CAAC;IAC9B,CAAC;IAED,MAAM,aAAa,GAAG,kBAAkB,CAAC,YAAY,EAAE,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;IACpG,OAAO;QACN,GAAG,EAAE,aAAa;QAClB,EAAE,EAAE,iBAAiB,CAAC,aAAa,CAAC;KACpC,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,UAAU,mBAAmB,CAClC,YAAwB,EACxB,OAAuB,EACvB,UAAmC,EACnC,UAA8C,EAC9C,UAAyD;IAEzD,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC/B,OAAO,mBAAmB,EAAE,CAAC;IAC9B,CAAC;IAED,MAAM,aAAa,GAAG,kBAAkB,CAAC,YAAY,EAAE,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;IACpG,OAAO;QACN,GAAG,EAAE,aAAa;QAClB,EAAE,EAAE,iBAAiB,CAAC,aAAa,CAAC;KACpC,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,sBAAsB,CAAC,UAAmB;IACzD,IAAI,UAAU,EAAE,CAAC;QAChB,MAAM,MAAM,GAAG,GAAG,UAAU,GAAG,CAAC,WAAW,EAAE,CAAC;QAC9C,4EAA4E;QAC5E,OAAO;YACN,GAAG,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC;YAC3B,EAAE,EAAE,iBAAiB,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAE;SAC9C,CAAC;IACH,CAAC;IACD,OAAO;QACN,GAAG,EAAE,IAAI,UAAU,CAAC,CAAC,CAAC;QACtB,EAAE,EAAE,IAAI,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC;KAC1B,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,SAAS,iBAAiB,CAAC,GAAe;IACzC,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAC1C,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAEhB,4CAA4C;IAC5C,KAAK,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC7C,IAAI,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,EAAE,CAAC;YACtB,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;YACZ,OAAO,MAAM,CAAC;QACf,CAAC;QACD,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACf,CAAC;IAED,OAAO,SAAS,CAAC;AAClB,CAAC;AAED;;GAEG;AACH,SAAS,WAAW,CAAC,GAAG,MAAoB;IAC3C,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IACrE,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,WAAW,CAAC,CAAC;IAC3C,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,KAAK,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;QAC1B,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QACxB,MAAM,IAAI,GAAG,CAAC,MAAM,CAAC;IACtB,CAAC;IACD,OAAO,MAAM,CAAC;AACf,CAAC;AAED,+EAA+E;AAC/E,8DAA8D;AAC9D,yDAAyD;AACzD,+EAA+E;AAE/E,iDAAiD;AACjD,MAAM,CAAC,MAAM,UAAU,GAAG;IACzB,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC;IAC1B,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC;IAC3B,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC;CACjB,CAAC;AAEX,2CAA2C;AAC3C,MAAM,UAAU,gBAAgB,CAC/B,OAAwB,EACxB,UAAkB,EAClB,SAAiB;IAEjB,OAAO,OAAO,CAAC,MAAM,CAAC,GAAG,UAAU,IAAI,SAAS,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC;AACnE,CAAC;AAED,kDAAkD;AAClD,MAAM,UAAU,oBAAoB,CACnC,WAAmB,EACnB,UAAkB;IAElB,OAAO,mBAAmB,EAAE,CAAC;AAC9B,CAAC;AAED,qDAAqD;AACrD,MAAM,UAAU,oBAAoB,CACnC,WAAmB,EACnB,UAAkB,EAClB,UAAkB,EAClB,YAAyB,EACzB,OAAuB;IAEvB,OAAO,sBAAsB,CAAC,YAAY,IAAI,EAAE,EAAE,OAAO,CAAC,CAAC;AAC5D,CAAC;AAED,8CAA8C;AAC9C,MAAM,UAAU,YAAY,CAC3B,SAAoC,EACpC,UAAkB,EAClB,UAAkB,EAClB,QAAiB;IAEjB,OAAO,eAAe,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;AAChD,CAAC;AAED,qDAAqD;AACrD,MAAM,UAAU,mBAAmB,CAClC,SAAoC,EACpC,UAAmB;IAEnB,OAAO,sBAAsB,CAAC,UAAU,CAAC,CAAC;AAC3C,CAAC"}
|