@bjornpagen/bumbledb 1.0.0 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (102) hide show
  1. package/COOKBOOK.md +64 -27
  2. package/README.md +21 -20
  3. package/dist/capacity.d.ts +1 -1
  4. package/dist/changes.d.ts +4 -5
  5. package/dist/changes.d.ts.map +1 -1
  6. package/dist/changes.js +37 -34
  7. package/dist/changes.js.map +1 -1
  8. package/dist/close.d.ts +2 -2
  9. package/dist/codec.d.ts +5 -6
  10. package/dist/codec.d.ts.map +1 -1
  11. package/dist/codec.js +6 -6
  12. package/dist/codec.js.map +1 -1
  13. package/dist/compile.d.ts +4 -6
  14. package/dist/compile.d.ts.map +1 -1
  15. package/dist/compile.js +6 -6
  16. package/dist/compile.js.map +1 -1
  17. package/dist/db-native.d.ts +43 -56
  18. package/dist/db-native.d.ts.map +1 -1
  19. package/dist/db-native.js.map +1 -1
  20. package/dist/db.d.ts +43 -28
  21. package/dist/db.d.ts.map +1 -1
  22. package/dist/db.js +77 -63
  23. package/dist/db.js.map +1 -1
  24. package/dist/errors.d.ts +4 -8
  25. package/dist/errors.d.ts.map +1 -1
  26. package/dist/errors.js +4 -8
  27. package/dist/errors.js.map +1 -1
  28. package/dist/fields.d.ts +4 -5
  29. package/dist/fields.d.ts.map +1 -1
  30. package/dist/fields.js.map +1 -1
  31. package/dist/index.d.ts +4 -4
  32. package/dist/index.d.ts.map +1 -1
  33. package/dist/index.js +2 -2
  34. package/dist/index.js.map +1 -1
  35. package/dist/internal/log.d.ts +4 -4
  36. package/dist/internal/log.d.ts.map +1 -1
  37. package/dist/internal/log.js +1 -1
  38. package/dist/internal/log.js.map +1 -1
  39. package/dist/law.d.ts +1 -1
  40. package/dist/migration.d.ts +5 -7
  41. package/dist/migration.d.ts.map +1 -1
  42. package/dist/migration.js +8 -9
  43. package/dist/migration.js.map +1 -1
  44. package/dist/native.d.ts +2 -2
  45. package/dist/native.d.ts.map +1 -1
  46. package/dist/native.js.map +1 -1
  47. package/dist/query/lower.d.ts +1 -1
  48. package/dist/result.d.ts +10 -25
  49. package/dist/result.d.ts.map +1 -1
  50. package/dist/result.js +7 -12
  51. package/dist/result.js.map +1 -1
  52. package/dist/rows.d.ts +10 -16
  53. package/dist/rows.d.ts.map +1 -1
  54. package/dist/rows.js +8 -45
  55. package/dist/rows.js.map +1 -1
  56. package/dist/runtime-codes.d.ts +1 -1
  57. package/dist/runtime-codes.d.ts.map +1 -1
  58. package/dist/runtime-codes.js +1 -2
  59. package/dist/runtime-codes.js.map +1 -1
  60. package/dist/runtime-errors.d.ts +3 -15
  61. package/dist/runtime-errors.d.ts.map +1 -1
  62. package/dist/runtime-errors.js +1 -5
  63. package/dist/runtime-errors.js.map +1 -1
  64. package/dist/runtime-native.d.ts +18 -48
  65. package/dist/runtime-native.d.ts.map +1 -1
  66. package/dist/runtime-native.js.map +1 -1
  67. package/dist/runtime.d.ts +12 -29
  68. package/dist/runtime.d.ts.map +1 -1
  69. package/dist/runtime.js +16 -57
  70. package/dist/runtime.js.map +1 -1
  71. package/dist/shape.d.ts +3 -4
  72. package/dist/shape.d.ts.map +1 -1
  73. package/dist/spec.d.ts +2 -2
  74. package/dist/spec.js +1 -1
  75. package/dist/statements.js +2 -2
  76. package/dist/statements.js.map +1 -1
  77. package/pack-provenance.json +3 -3
  78. package/package.json +4 -4
  79. package/src/capacity.ts +1 -1
  80. package/src/changes.ts +50 -48
  81. package/src/close.ts +2 -2
  82. package/src/codec.ts +8 -24
  83. package/src/compile.ts +8 -10
  84. package/src/db-native.ts +37 -83
  85. package/src/db.ts +156 -135
  86. package/src/errors.ts +4 -8
  87. package/src/fields.ts +4 -5
  88. package/src/index.ts +6 -5
  89. package/src/internal/log.ts +2 -7
  90. package/src/law.ts +1 -1
  91. package/src/migration.ts +8 -16
  92. package/src/native.ts +2 -3
  93. package/src/query/lower.ts +1 -1
  94. package/src/result.ts +16 -45
  95. package/src/rows.ts +12 -65
  96. package/src/runtime-codes.ts +1 -2
  97. package/src/runtime-errors.ts +1 -5
  98. package/src/runtime-native.ts +15 -68
  99. package/src/runtime.ts +53 -122
  100. package/src/shape.ts +3 -4
  101. package/src/spec.ts +2 -2
  102. package/src/statements.ts +2 -2
package/COOKBOOK.md CHANGED
@@ -8,7 +8,7 @@ reads, sealed complete results, and one-shot page streams.
8
8
  Every `ts` fence below is extracted and type-checked against the real
9
9
  package surface by `test/cookbook-doc.test.ts`; the imports fence here is
10
10
  prepended to every recipe. The examples are lazy Effect programs — nothing
11
- below runs a database at import time, and measured policies are inputs.
11
+ below runs a database at import time.
12
12
 
13
13
  ```ts
14
14
  import { Effect, Option, Result, Stream } from "effect"
@@ -43,14 +43,10 @@ import {
43
43
  import type {
44
44
  ApplyOutcome,
45
45
  CompleteResult,
46
- ExecutionPolicy,
47
46
  Fact,
48
- NativeRuntimeOptions,
49
47
  QueryReader
50
48
  } from "@bjornpagen/bumbledb"
51
49
 
52
- declare const work: ExecutionPolicy
53
- declare const runtimePolicy: NativeRuntimeOptions
54
50
  declare const localPath: string
55
51
  ```
56
52
 
@@ -93,8 +89,18 @@ void [Learning, scoreIsNumber, unitsAreExact]
93
89
 
94
90
  ## 2. One runtime layer; explicit create and open
95
91
 
96
- `NativeRuntime.layer(options)` acquires the single bounded native runtime
92
+ `NativeRuntime.layer()` acquires the single native runtime
97
93
  with scope; reuse ONE layer value so Effect's memoization shares it.
94
+ Optional configuration controls workers, outstanding jobs/handles, and cleanup
95
+ reporting. Defaults are up to four workers, 128 queued jobs, 128 cleanup reports,
96
+ 64 directory owners, 1,024 native handles, and a five-second cleanup report window.
97
+ Operations use ordinary allocation without byte/row/work quotas or execution
98
+ deadlines. Effect interruption requests cooperative cancellation. Runtime
99
+ inspection reports outstanding work, not memory usage.
100
+ Database `inspect().storage` reports virtual map extent, populated file length,
101
+ non-free LMDB pages, and allocated disk blocks (null when unavailable).
102
+ None of these measures process heap usage or resident RAM. Log history
103
+ inspection uses the same `StorageInspection` fields.
98
104
  `Db.open` never creates a missing database; `Db.create` refuses existing
99
105
  authority. Both are scoped acquisitions.
100
106
 
@@ -104,20 +110,20 @@ const Docs = schema("Docs", { Doc }, [key(Doc, ["id"])])
104
110
 
105
111
  const openExisting = Effect.scoped(
106
112
  Effect.gen(function* () {
107
- const db = yield* Db.open(localPath, Docs, work)
113
+ const db = yield* Db.open(localPath, Docs)
108
114
  return db.schemaId
109
115
  })
110
116
  )
111
117
 
112
118
  const createOnce = Effect.scoped(
113
119
  Effect.gen(function* () {
114
- const db = yield* Db.create(localPath, Docs, work)
120
+ const db = yield* Db.create(localPath, Docs)
115
121
  return db.schemaId
116
122
  })
117
123
  )
118
124
 
119
125
  // One boundary; an Effect app provides the layer in its own graph instead.
120
- const layer = NativeRuntime.layer(runtimePolicy)
126
+ const layer = NativeRuntime.layer()
121
127
  void [openExisting.pipe(Effect.provide(layer)), createOnce.pipe(Effect.provide(layer))]
122
128
  ```
123
129
 
@@ -125,7 +131,7 @@ void [openExisting.pipe(Effect.provide(layer)), createOnce.pipe(Effect.provide(l
125
131
 
126
132
  `ChangeSet.builder` acquires a scoped database-free draft. Ingestion effects
127
133
  are lazy and re-runnable while the draft is building — each execution reads
128
- the then-current iterable and charges work again. Within ONE change set the
134
+ the then-current iterable. Within ONE change set the
129
135
  normalization is `(add, remove ∖ add)`: the identical fact's add wins
130
136
  independent of call order. `finish()` consumes the draft into an immutable,
131
137
  reusable `ChangeSet`.
@@ -136,12 +142,12 @@ const Tasks = schema("Tasks", { Task }, [key(Task, ["id"])])
136
142
 
137
143
  const applyOnce = Effect.scoped(
138
144
  Effect.gen(function* () {
139
- const db = yield* Db.open(localPath, Tasks, work)
145
+ const db = yield* Db.open(localPath, Tasks)
140
146
  const taskId = yield* Effect.sync(() => crypto.randomUUID())
141
- const draft = yield* ChangeSet.builder(Tasks, work)
147
+ const draft = yield* ChangeSet.builder(Tasks)
142
148
  yield* draft.insert(Task, [{ id: taskId, title: "write the cookbook", done: 0n }])
143
149
  const changes = yield* draft.finish()
144
- const outcome: ApplyOutcome = yield* db.apply(changes, { ...work, expected: { kind: "any" } })
150
+ const outcome: ApplyOutcome = yield* db.apply(changes, { expected: { kind: "any" } })
145
151
  switch (outcome.kind) {
146
152
  case "accepted":
147
153
  case "no-change":
@@ -168,7 +174,7 @@ const People = schema("People", { Person }, [key(Person, ["id"])])
168
174
 
169
175
  const lookup = (reader: QueryReader<typeof People>, personId: Uuid) =>
170
176
  Effect.gen(function* () {
171
- const found = yield* reader.get(Person, { id: personId }, work)
177
+ const found = yield* reader.get(Person, { id: personId })
172
178
  return Option.isSome(found) ? found.value.name : "unknown"
173
179
  })
174
180
  void lookup
@@ -203,13 +209,42 @@ const booksBy = query(Library).rule((r) => {
203
209
  const readBooks = (reader: QueryReader<typeof Library>, name: string) =>
204
210
  Effect.scoped(
205
211
  Effect.gen(function* () {
206
- const result = yield* reader.execute(booksBy, { name }, work)
207
- return yield* result.collect({ maxBytes: work.resultBytes }, work)
212
+ const result = yield* reader.execute(booksBy, { name })
213
+ return yield* result.collect()
208
214
  })
209
215
  )
210
216
  void readBooks
211
217
  ```
212
218
 
219
+ For repeated calls on one snapshot, prepare once. The scoped handle keeps
220
+ one compiled plan and reuses its execution buffers; only parameters cross
221
+ the native boundary on subsequent calls. One-shot `execute` does not retain
222
+ a plan. Preparations share the snapshot's pinned version but close
223
+ independently; completed results also remain independent.
224
+
225
+ Ordinary execution keeps buffers for reuse. If a prepared query will sit idle
226
+ after a large operation, `yield* prepared.releaseMemory()` drops its
227
+ execution buffers but keeps the compiled query and pinned snapshot. Shared
228
+ query caches belong to the database: `yield* db.clearCache()` clears those
229
+ separately. Neither operation invalidates live results. Both are optional;
230
+ scope closure releases ownership as usual.
231
+
232
+ ```ts
233
+ const readTwoAuthors = (reader: QueryReader<typeof Library>) =>
234
+ Effect.scoped(
235
+ Effect.gen(function* () {
236
+ const prepared = yield* reader.prepare(booksBy)
237
+ const first = yield* prepared.execute({ name: "Ursula Le Guin" })
238
+ const second = yield* prepared.execute({ name: "Octavia Butler" })
239
+ return [
240
+ yield* first.collect(),
241
+ yield* second.collect()
242
+ ]
243
+ })
244
+ )
245
+ void readTwoAuthors
246
+ ```
247
+
213
248
  ## 6. Grouped exact aggregates
214
249
 
215
250
  Aggregates fold the group's distinct full bindings: keep the identity-bearing
@@ -263,13 +298,15 @@ const labeled = query(Telemetry).rule((r) => {
263
298
  void labeled
264
299
  ```
265
300
 
266
- ## 8. Bounded results: capped collect, one-shot page stream
301
+ ## 8. Completed results: collect or consume delivery batches
267
302
 
268
- `collect({ maxBytes }, work)` is database-enforced total materialization and
269
- leaves the result available. `pages({ pageBytes }, work)` is a ONE-SHOT consuming
303
+ `collect()` explicitly materializes all rows into JavaScript and
304
+ leaves the result available. `pages()` is a ONE-SHOT consuming
270
305
  stream over the completed result: the first run moves the backing into a
271
306
  private scoped cursor; a second run refuses. Every element is one owned page
272
- array — pages, not rows — delivered after complete evaluation.
307
+ array of up to 256 rows — pages, not rows — delivered after complete evaluation.
308
+ Paging bounds delivery, not query execution or total result storage. An empty
309
+ result emits one empty page; interruption and early termination close the cursor.
273
310
 
274
311
  ```ts
275
312
  const Event = relation("Event", { id: uuid, at: i64 })
@@ -281,7 +318,7 @@ const everything = query(Feed).rule((r) => {
281
318
  })
282
319
 
283
320
  const drain = (result: CompleteResult<{ readonly id: Uuid; readonly at: bigint }>) =>
284
- result.pages({ pageBytes: 65536n }, work).pipe(
321
+ result.pages().pipe(
285
322
  Stream.runForEach((page) =>
286
323
  Effect.sync(() => {
287
324
  // One owned page array; caller mutation cannot reach native
@@ -326,22 +363,22 @@ const Bank = schema("Bank", { Account }, [key(Account, ["id"])])
326
363
  const correct = (accountId: Uuid) =>
327
364
  Effect.scoped(
328
365
  Effect.gen(function* () {
329
- const db = yield* Db.open(localPath, Bank, work)
366
+ const db = yield* Db.open(localPath, Bank)
330
367
  const observed = yield* Effect.scoped(
331
368
  Effect.gen(function* () {
332
- const snapshot = yield* db.snapshot(work)
333
- const previous = yield* snapshot.get(Account, { id: accountId }, work)
369
+ const snapshot = yield* db.snapshot()
370
+ const previous = yield* snapshot.get(Account, { id: accountId })
334
371
  if (Option.isNone(previous)) {
335
372
  return yield* Effect.fail({ missing: accountId })
336
373
  }
337
374
  return { previous: previous.value, at: snapshot.witness }
338
375
  })
339
376
  )
340
- const draft = yield* ChangeSet.builder(Bank, work)
377
+ const draft = yield* ChangeSet.builder(Bank)
341
378
  yield* draft.delete(Account, [observed.previous])
342
379
  yield* draft.insert(Account, [{ ...observed.previous, balance: observed.previous.balance + 1n }])
343
380
  const changes = yield* draft.finish()
344
- return yield* db.apply(changes, { ...work, expected: { kind: "exact", at: observed.at } })
381
+ return yield* db.apply(changes, { expected: { kind: "exact", at: observed.at } })
345
382
  })
346
383
  )
347
384
  void correct
@@ -377,7 +414,7 @@ const Items = schema("Items", { Item }, [key(Item, ["id"])])
377
414
 
378
415
  const explicitClose = Effect.scoped(
379
416
  Effect.gen(function* () {
380
- const db = yield* Db.open(localPath, Items, work)
417
+ const db = yield* Db.open(localPath, Items)
381
418
  const report = yield* db.close()
382
419
  // `closed` releases this capability's obligations; `incomplete` and
383
420
  // `failed` retain native Closing accounting — they are never
package/README.md CHANGED
@@ -33,8 +33,12 @@ correctness CI is distinct from the Apple Silicon performance measurements.
33
33
 
34
34
  ## Install
35
35
 
36
+ This guide follows the 1.1.0 source API. Use the guide from the Git tag matching
37
+ your installed package. GitHub release tarballs and npm publication are separate;
38
+ the npm command below applies once that version is published.
39
+
36
40
  ```sh
37
- pnpm add @bjornpagen/bumbledb@1.0.0 effect@4.0.0-rc.112
41
+ pnpm add @bjornpagen/bumbledb@1.1.0 effect@4.0.0-rc.112
38
42
  ```
39
43
 
40
44
  ## Quick start
@@ -68,7 +72,6 @@ import {
68
72
  weigh,
69
73
  within
70
74
  } from "@bjornpagen/bumbledb"
71
- import type { ExecutionPolicy, NativeRuntimeOptions } from "@bjornpagen/bumbledb"
72
75
 
73
76
  // Relations describe stored records. Identity fields are ordinary
74
77
  // application-owned Uuid values — the database issues no identity.
@@ -93,9 +96,6 @@ const Learning = schema("Learning", { Student, Attempt }, [
93
96
  })
94
97
  ])
95
98
 
96
- // Measured policies are inputs — the library invents no limits.
97
- declare const runtimePolicy: NativeRuntimeOptions
98
- declare const work: ExecutionPolicy
99
99
  declare const localPath: string
100
100
 
101
101
  // Queries are reusable typed values: reusing a v(R) variable is the join,
@@ -111,35 +111,35 @@ const attemptsFor = query(Learning).rule((r) => {
111
111
  const program = Effect.scoped(
112
112
  Effect.gen(function* () {
113
113
  // First use: create explicitly. Use Db.open for an existing store.
114
- const db = yield* Db.create(localPath, Learning, work)
114
+ const db = yield* Db.create(localPath, Learning)
115
115
  const studentId = yield* Effect.sync(() => crypto.randomUUID())
116
116
  const attemptId = yield* Effect.sync(() => crypto.randomUUID())
117
117
 
118
- const draft = yield* ChangeSet.builder(Learning, work)
118
+ const draft = yield* ChangeSet.builder(Learning)
119
119
  yield* draft.insert(Student, [{ id: studentId, name: "Ada", budget: 10n }])
120
120
  yield* draft.insert(Attempt, [
121
121
  { id: attemptId, student: studentId, score: 0.9, units: 1n, active: { start: 0n, end: 60n } }
122
122
  ])
123
123
  const changes = yield* draft.finish()
124
124
 
125
- const outcome = yield* db.apply(changes, { ...work, expected: { kind: "any" } })
125
+ const outcome = yield* db.apply(changes, { expected: { kind: "any" } })
126
126
  if (outcome.kind !== "accepted" && outcome.kind !== "no-change") {
127
127
  return outcome
128
128
  }
129
- const snapshot = yield* db.snapshot(work)
130
- const found = yield* snapshot.get(Student, { id: studentId }, work)
129
+ const snapshot = yield* db.snapshot()
130
+ const found = yield* snapshot.get(Student, { id: studentId })
131
131
  if (Option.isNone(found)) {
132
132
  return outcome
133
133
  }
134
- const result = yield* snapshot.execute(attemptsFor, { student: studentId }, work)
135
- const rows = yield* result.collect({ maxBytes: work.resultBytes }, work)
134
+ const result = yield* snapshot.execute(attemptsFor, { student: studentId })
135
+ const rows = yield* result.collect()
136
136
  return { outcome, rows }
137
137
  })
138
138
  )
139
139
 
140
140
  // One boundary for this script; an Effect app supplies the layer in its
141
141
  // own application graph instead.
142
- void Effect.runPromise(program.pipe(Effect.provide(NativeRuntime.layer(runtimePolicy))))
142
+ void Effect.runPromise(program.pipe(Effect.provide(NativeRuntime.layer())))
143
143
  ```
144
144
 
145
145
  Every `ts` fence in this README is extracted and type-checked against the
@@ -166,20 +166,21 @@ and query representations.
166
166
  measurement range, and `weigh` chooses a numeric field or interval
167
167
  duration. Harmless equivalent window spellings lower to one canonical
168
168
  law; genuinely different meanings still refuse.
169
- - `NativeRuntime.layer(options)` owns the one bounded native runtime;
169
+ - `NativeRuntime.layer()` owns the shared native runtime with sensible defaults;
170
170
  provide it once in the app graph. `Db.create` and `Db.open` are scoped
171
171
  Effects over that runtime; `open` never creates and `create` refuses
172
- existing authority. `db.apply(changes, { ...work, expected })` judges one
172
+ existing authority. `db.apply(changes, { expected })` judges one
173
173
  immutable final-state change: `accepted`, `no-change`,
174
174
  `invariant-rejected` (complete statement diagnostics), or `moved`.
175
- - `ChangeSet.builder(schema, work)` acquires a scoped database-free draft;
175
+ - `ChangeSet.builder(schema)` acquires a scoped database-free draft;
176
176
  `insert`/`delete` are lazy bounded ingestion effects, `finish()` seals the
177
177
  immutable `ChangeSet`. Snapshots satisfy the shared `QueryReader`: typed
178
178
  `get` returns `Option`, `execute` returns a sealed `CompleteResult` whose
179
- `collect({ maxBytes }, work)` is capped materialization and whose
180
- `pages({ pageBytes }, work)` is a one-shot consuming `Stream` of owned page
181
- arrays after complete evaluation. Delivery work is fresh: it does not
182
- inherit the snapshot or execution deadline.
179
+ `collect()` explicitly materializes all rows and whose
180
+ `pages()` is a one-shot consuming `Stream` of owned page
181
+ arrays after complete evaluation. Each page contains up to 256 rows; this
182
+ bounds delivery rather than streaming execution. Effect scope closes the
183
+ cursor on completion, failure, or interruption.
183
184
  - `query(S).rule(...)` builds typed queries. Reusing a variable created by
184
185
  `v(R)` joins records through that value. The builder supports named result
185
186
  rows, typed parameters, negation, comparisons, boolean conditions, set
@@ -76,7 +76,7 @@ type IsNegative<N extends bigint> = `${N}` extends `-${string}` ? true : false;
76
76
  type PathBan<F extends string> = string extends F ? unknown : F extends `${string}.${string}` ? RefusedPath<"pin the column — a two-column containment (Source(ref, f) <= Catalog(id, f)) proves the local copy, then name the local field"> : unknown;
77
77
  type NegativeBan<N extends bigint> = bigint extends N ? unknown : IsNegative<N> extends true ? BannedWindow<"capacity bounds are u64 — a negative bound is out of domain"> : unknown;
78
78
  /**
79
- * The spelling-ban tables are DELETED (C01, chapter 34): `{n..n}`, `{0..0}`,
79
+ * The spelling-ban tables are DELETED: `{n..n}`, `{0..0}`,
80
80
  * unit floors `{1..*}`/`{N..*}` and the vacuous `{0..*}` are harmless
81
81
  * equivalent spellings that lower to the one canonical `(lo, hi)` law at
82
82
  * the mint. Genuinely different semantics still refuse: negative bounds
package/dist/changes.d.ts CHANGED
@@ -3,14 +3,13 @@ import { Effect } from "effect";
3
3
  import type { SchemaId } from "./compile.js";
4
4
  import type { ChangesHandle } from "./db-native.js";
5
5
  import type { Fact } from "./relation.js";
6
- import type { ExecutionPolicy } from "./runtime.js";
7
6
  import type { CloseReport } from "./runtime-errors.js";
8
7
  import { DbError } from "./runtime-errors.js";
9
8
  import type { AnySchema } from "./schema.js";
10
9
  import type { Rel } from "./shape.js";
11
10
  /**
12
- * `ChangeSet` — the public name of the engine's checked immutable delta
13
- * (chapter 30/34): schema-fingerprint-bound canonical native bytes with
11
+ * `ChangeSet` — the engine's checked immutable delta:
12
+ * schema-fingerprint-bound canonical native bytes with
14
13
  * one-command `(add, remove ∖ add)` normalization and exact same-fact
15
14
  * add-wins. Immutable and reusable while open; sealing/submitting it later
16
15
  * retains the SAME native value — no second JS row walk ever happens.
@@ -24,7 +23,7 @@ interface ChangeSet<S extends AnySchema> {
24
23
  /**
25
24
  * `ChangeDraft` — the scoped, database-free construction capability.
26
25
  * Every method constructs a LAZY effect; execution reads the then-current
27
- * iterable and charges its work again on every sequential rerun (no hidden
26
+ * iterable again on every sequential rerun (no hidden
28
27
  * memoization, no automatic retry, no iterator replay). Input must stay
29
28
  * stable from an ingestion effect's execution start through its Exit;
30
29
  * after successful ingestion the accepted native bytes are independent.
@@ -47,7 +46,7 @@ interface ChangesInternal {
47
46
  /** Private cross-module accessor (db.apply retains the native ChangeSet). */
48
47
  declare function internalChanges(value: object): ChangesInternal | undefined;
49
48
  declare const ChangeSet: Readonly<{
50
- builder: <S extends AnySchema>(schema: S, work: ExecutionPolicy) => Effect.Effect<ChangeDraft<S>, DbError, import("./runtime.js").NativeRuntime | Scope.Scope>;
49
+ builder: <S extends AnySchema>(schema: S) => Effect.Effect<ChangeDraft<S>, DbError, import("./runtime.js").NativeRuntime | Scope.Scope>;
51
50
  }>;
52
51
  export type { ChangeDraft };
53
52
  export { ChangeSet, internalChanges };
@@ -1 +1 @@
1
- {"version":3,"file":"changes.d.ts","sourceRoot":"","sources":["../src/changes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAA;AACnC,OAAO,EAAE,MAAM,EAAQ,MAAM,QAAQ,CAAA;AAErC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAE3C,OAAO,KAAK,EAAE,aAAa,EAAe,MAAM,eAAe,CAAA;AAG/D,OAAO,KAAK,EAAe,IAAI,EAAE,MAAM,cAAc,CAAA;AAGrD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAElD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AACrD,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAA;AAC5C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AAC3C,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,WAAW,CAAA;AAEpC;;;;;;GAMG;AACH,UAAU,SAAS,CAAC,CAAC,SAAS,SAAS;IACtC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAA;IAC3B,2EAA2E;IAC3E,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;IACnB,KAAK,IAAI,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAA;CACnC;AAED;;;;;;;;;;;GAWG;AACH,UAAU,WAAW,CAAC,CAAC,SAAS,SAAS;IACxC,MAAM,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;IAC5F,MAAM,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;IAC5F,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,KAAK,CAAC,CAAA;IAC3D,KAAK,IAAI,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAA;CACnC;AAqBD,UAAU,eAAe;IACxB,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAA;IAC9B,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAA;IAC3B,MAAM,EAAE,OAAO,CAAA;CACf;AAID,6EAA6E;AAC7E,iBAAS,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,eAAe,GAAG,SAAS,CAEnE;AAoRD,QAAA,MAAM,SAAS;cA3C2C,CAAC,SAAS,SAAS;EA2CjC,CAAA;AAE5C,YAAY,EAAE,WAAW,EAAE,CAAA;AAC3B,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,CAAA"}
1
+ {"version":3,"file":"changes.d.ts","sourceRoot":"","sources":["../src/changes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAA;AACnC,OAAO,EAAE,MAAM,EAAQ,MAAM,QAAQ,CAAA;AAErC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAE3C,OAAO,KAAK,EAAE,aAAa,EAAe,MAAM,eAAe,CAAA;AAG/D,OAAO,KAAK,EAAe,IAAI,EAAE,MAAM,cAAc,CAAA;AAIrD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AACrD,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAA;AAC5C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AAC3C,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,WAAW,CAAA;AAEpC;;;;;;GAMG;AACH,UAAU,SAAS,CAAC,CAAC,SAAS,SAAS;IACtC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAA;IAC3B,2EAA2E;IAC3E,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;IACnB,KAAK,IAAI,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAA;CACnC;AAED;;;;;;;;;;;GAWG;AACH,UAAU,WAAW,CAAC,CAAC,SAAS,SAAS;IACxC,MAAM,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;IAC5F,MAAM,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;IAC5F,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,KAAK,CAAC,CAAA;IAC3D,KAAK,IAAI,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAA;CACnC;AAmBD,UAAU,eAAe;IACxB,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAA;IAC9B,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAA;IAC3B,MAAM,EAAE,OAAO,CAAA;CACf;AAID,6EAA6E;AAC7E,iBAAS,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,eAAe,GAAG,SAAS,CAEnE;AAyRD,QAAA,MAAM,SAAS;cA1C2C,CAAC,SAAS,SAAS;EA0CjC,CAAA;AAE5C,YAAY,EAAE,WAAW,EAAE,CAAA;AAC3B,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,CAAA"}
package/dist/changes.js CHANGED
@@ -3,16 +3,15 @@ import { drainClose, releaseOwner } from "#close.ts";
3
3
  import { Schema as CoreSchema, schemaTables } from "#compile.ts";
4
4
  import { dbNative } from "#db-native.ts";
5
5
  import { lower } from "#lower.ts";
6
- import { assertHostCellFits, cellOf, recordOf } from "#rows.ts";
7
- import { nativeOperationWith, policyWire, runtimeHandle } from "#runtime.ts";
6
+ import { cellOf, hostCellCharge, recordOf } from "#rows.ts";
7
+ import { nativeOperationWith, runtimeHandle } from "#runtime.ts";
8
8
  import { DbError } from "#runtime-errors.ts";
9
9
  /**
10
10
  * Host-copy granularity: one bounded host-to-native message per chunk, so
11
11
  * real event-loop turns happen between chunks (each chunk completes through
12
12
  * a native callback, not a microtask chain). These are converter
13
- * granularity bounds, not database-size policy the draft's aggregate
14
- * input/working/spill budget is charged natively and is CUMULATIVE across
15
- * calls and chunks (chunks never reset it).
13
+ * granularity targets, not database-size limits. One larger row travels
14
+ * alone; otherwise native callbacks provide backpressure between batches.
16
15
  */
17
16
  const CHUNK_BYTES = 65536n;
18
17
  const CHUNK_ROWS = 4096;
@@ -38,7 +37,7 @@ function hostFactCharge(relation, record) {
38
37
  if (value === undefined) {
39
38
  throw refusal("ChangeDraft.ingest", "InvalidArgument");
40
39
  }
41
- bytes += assertHostCellFits(`relation ${data.name} field ${declared.name}`, value, CHUNK_BYTES);
40
+ bytes += hostCellCharge(value);
42
41
  }
43
42
  return bytes;
44
43
  }
@@ -79,7 +78,8 @@ function pullChunk(relation, iterator, pending) {
79
78
  leftover = current;
80
79
  break;
81
80
  }
82
- cells.push(...projectFact(relation, record));
81
+ for (const cell of projectFact(relation, record))
82
+ cells.push(cell);
83
83
  bytes += charge;
84
84
  rows += 1n;
85
85
  current = undefined;
@@ -106,7 +106,7 @@ function ingest(state, operation, relation, rows) {
106
106
  }
107
107
  if (state.inFlight) {
108
108
  // Reentrant construction refuses AND spends/drains — there is
109
- // no implicit queue (chapter 35).
109
+ // no implicit queue.
110
110
  yield* spendAndDrain(state, operation);
111
111
  return yield* Effect.fail(refusal(operation, "SpentHandle"));
112
112
  }
@@ -119,29 +119,33 @@ function ingest(state, operation, relation, rows) {
119
119
  return yield* Effect.fail(refusal(operation, "InvalidArgument"));
120
120
  }
121
121
  state.inFlight = true;
122
- const wire = yield* Effect.try({
123
- try: () => policyWire(state.policy, operation),
124
- catch: () => refusal(operation, "InvalidArgument")
125
- });
126
122
  const body = Effect.gen(function* () {
127
- const iterator = rows[Symbol.iterator]();
123
+ const iterator = yield* Effect.try({
124
+ try: () => rows[Symbol.iterator](),
125
+ catch: () => refusal(operation, "InvalidArgument")
126
+ });
128
127
  let leftover;
129
128
  let done = false;
130
- while (!done) {
131
- const chunk = yield* Effect.try({
132
- try: () => pullChunk(relation, iterator, leftover),
133
- catch: (cause) => (cause instanceof DbError ? cause : refusal(operation, "InvalidArgument"))
134
- }).pipe(Effect.catch((error) => spendAndDrain(state, operation).pipe(Effect.andThen(Effect.fail(error)))));
135
- leftover = chunk.leftover;
136
- done = chunk.done && leftover === undefined;
137
- if (chunk.rows === 0n) {
138
- continue;
129
+ return yield* Effect.gen(function* () {
130
+ while (!done) {
131
+ const chunk = yield* Effect.try({
132
+ try: () => pullChunk(relation, iterator, leftover),
133
+ catch: (cause) => (cause instanceof DbError ? cause : refusal(operation, "InvalidArgument"))
134
+ }).pipe(Effect.catch((error) => spendAndDrain(state, operation).pipe(Effect.andThen(Effect.fail(error)))));
135
+ leftover = chunk.leftover;
136
+ done = chunk.done && leftover === undefined;
137
+ if (chunk.rows === 0n) {
138
+ continue;
139
+ }
140
+ yield* eventLoopTurn();
141
+ yield* nativeOperationWith(operation, (callback) => verb(state.handle, relationId, chunk.rows, chunk.cells, callback), dbNative.runtimeReportTake, () => undefined).pipe(Effect.catch((error) => Effect.sync(() => {
142
+ state.spent = true;
143
+ }).pipe(Effect.andThen(Effect.fail(error)))));
139
144
  }
140
- yield* eventLoopTurn();
141
- yield* nativeOperationWith(operation, (callback) => verb(state.handle, wire, relationId, chunk.rows, chunk.cells, callback), dbNative.runtimeReportTake, () => undefined).pipe(Effect.catch((error) => Effect.sync(() => {
142
- state.spent = true;
143
- }).pipe(Effect.andThen(Effect.fail(error)))));
144
- }
145
+ }).pipe(Effect.ensuring(Effect.sync(() => {
146
+ if (!done)
147
+ iterator.return?.();
148
+ })));
145
149
  });
146
150
  return yield* Effect.onExit(body, (exit) => {
147
151
  state.inFlight = false;
@@ -182,7 +186,7 @@ function makeDraft(state, schemaId) {
182
186
  }
183
187
  // Finish CONSUMES the draft, success or failure.
184
188
  state.spent = true;
185
- const wire = yield* nativeOperationWith("ChangeDraft.finish", (callback) => dbNative.runtimeDraftFinish(state.handle, policyWire(state.policy, "ChangeDraft.finish"), callback), dbNative.runtimeChangesTake, (value) => value);
189
+ const wire = yield* nativeOperationWith("ChangeDraft.finish", (callback) => dbNative.runtimeDraftFinish(state.handle, callback), dbNative.runtimeChangesTake, (value) => value);
186
190
  return makeChangeSet(wire.changes, schemaId);
187
191
  }), (changes) => Effect.suspend(() => {
188
192
  const internal = changesInternals.get(changes);
@@ -203,21 +207,20 @@ function makeDraft(state, schemaId) {
203
207
  return Object.freeze(draft);
204
208
  }
205
209
  /**
206
- * `ChangeSet.builder(schema, work)` — lazy scoped acquisition of a
207
- * database-free draft (chapter 35 roster). Requires the acquired
210
+ * `ChangeSet.builder(schema)` — lazy scoped acquisition of a
211
+ * database-free draft. Requires the acquired
208
212
  * `NativeRuntime`; the draft's native resources release with its scope, and
209
213
  * the scope finalizer surfaces incomplete/failed teardown as a
210
214
  * `CloseFailure` defect.
211
215
  */
212
- const builder = Effect.fn("ChangeSet.builder")(function* (schema, work) {
216
+ const builder = Effect.fn("ChangeSet.builder")(function* (schema) {
213
217
  const handle = yield* runtimeHandle();
214
- const compiled = yield* CoreSchema.compile(schema, work);
218
+ const compiled = yield* CoreSchema.compile(schema);
215
219
  const spec = lower(schema);
216
220
  return yield* Effect.acquireRelease(Effect.gen(function* () {
217
- const draftHandle = yield* nativeOperationWith("ChangeSet.builder", (callback) => dbNative.runtimeDraftOpen(handle, policyWire(work, "ChangeSet.builder"), spec, callback), dbNative.runtimeDraftTake, (value) => value);
221
+ const draftHandle = yield* nativeOperationWith("ChangeSet.builder", (callback) => dbNative.runtimeDraftOpen(handle, spec, callback), dbNative.runtimeDraftTake, (value) => value);
218
222
  const state = {
219
223
  handle: draftHandle,
220
- policy: work,
221
224
  theory: schema,
222
225
  spent: false,
223
226
  inFlight: false
@@ -1 +1 @@
1
- {"version":3,"file":"changes.js","sourceRoot":"","sources":["../src/changes.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"changes.js","sourceRoot":"","sources":["../src/changes.ts"],"names":[],"mappings":"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"}
package/dist/close.d.ts CHANGED
@@ -2,8 +2,8 @@ import { Effect } from "effect";
2
2
  import type { CloseReport } from "./runtime-errors.js";
3
3
  /**
4
4
  * Shared close/drain adapters for scoped core owners (drafts, changes,
5
- * snapshots, sessions, results, cursors, databases). One policy, chapter
6
- * 35's: early `close()` starts/joins the native close transition and
5
+ * snapshots, sessions, results, cursors, databases). Early `close()` joins
6
+ * the native close transition and
7
7
  * returns the honest {@link CloseReport}; a scope FINALIZER runs the same
8
8
  * close and surfaces `incomplete`/`failed` as a structured `CloseFailure`
9
9
  * DEFECT in the finalizer Cause — never catch-and-log, never false
package/dist/codec.d.ts CHANGED
@@ -1,17 +1,16 @@
1
1
  import { Effect, Schema as EffectSchema, Result } from "effect";
2
2
  import type { AnyRelation, Fact } from "./relation.js";
3
- import type { ExecutionPolicy } from "./runtime.js";
4
3
  import { DbError } from "./runtime-errors.js";
5
4
  import type { AnySchema } from "./schema.js";
6
5
  import type { Rel } from "./shape.js";
7
6
  /**
8
7
  * Boundary row codecs, derived from the core relation descriptors — never a
9
- * second hand-maintained field roster (chapter 35).
8
+ * second hand-maintained field roster.
10
9
  *
11
10
  * Two layers:
12
11
  *
13
12
  * 1. The CANONICAL native row codec: `encodeRows`/`decodeRows` run the
14
- * same charged native implementation the engine, log and migrations
13
+ * same native implementation the engine, log and migrations
15
14
  * share (owned bytes in, owned typed rows out; untrusted input cannot
16
15
  * inject native capabilities). Effect-only, `NativeRuntime` required.
17
16
  * 2. The schema-tagged JSON VALUE form for HTTP/export boundaries
@@ -43,14 +42,14 @@ declare function decodeBoundaryRows<R extends AnyRelation>(relation: R, input: u
43
42
  */
44
43
  declare function rowSchema<R extends AnyRelation>(relation: R): EffectSchema.declare<Fact<R>, Fact<R>>;
45
44
  /**
46
- * The charged CANONICAL native row codec (chapter 35 roster): owned bytes
45
+ * The canonical native row codec (chapter 35 roster): owned bytes
47
46
  * out, owned typed rows back in — the same implementation log sealing and
48
47
  * migrations use. Binding parameters is ingestion: input must stay stable
49
48
  * through execution, and no native work starts before the checked owned
50
49
  * chunk exists.
51
50
  */
52
- declare const encodeRows: <R extends AnyRelation>(shape: RowShape<R>, rows: Iterable<Fact<R>>, work: ExecutionPolicy) => Effect.Effect<Uint8Array<ArrayBufferLike>, DbError, import("./runtime.js").NativeRuntime>;
53
- declare const decodeRows: <R extends AnyRelation>(shape: RowShape<R>, input: Uint8Array<ArrayBufferLike>, work: ExecutionPolicy) => Effect.Effect<readonly Fact<R>[], DbError, import("./runtime.js").NativeRuntime>;
51
+ declare const encodeRows: <R extends AnyRelation>(shape: RowShape<R>, rows: Iterable<Fact<R>>) => Effect.Effect<Uint8Array<ArrayBufferLike>, DbError, import("./runtime.js").NativeRuntime>;
52
+ declare const decodeRows: <R extends AnyRelation>(shape: RowShape<R>, input: Uint8Array<ArrayBufferLike>) => Effect.Effect<readonly Fact<R>[], DbError, import("./runtime.js").NativeRuntime>;
54
53
  export type { RowShape };
55
54
  export { decodeBoundaryRows, decodeRows, encodeBoundaryRows, encodeRows, rowSchema, rowShape };
56
55
  //# sourceMappingURL=codec.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"codec.d.ts","sourceRoot":"","sources":["../src/codec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,IAAI,YAAY,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAM/D,OAAO,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,cAAc,CAAA;AAGrD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAElD,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAA;AAC5C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AAC3C,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,WAAW,CAAA;AAIpC;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,+DAA+D;AAC/D,UAAU,QAAQ,CAAC,CAAC,SAAS,WAAW;IACvC,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAA;IAC1B,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAA;CACpB;AAED,iBAAS,QAAQ,CAAC,CAAC,SAAS,SAAS,EAAE,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAE5F;AAuLD,yEAAyE;AACzE,iBAAS,kBAAkB,CAAC,CAAC,SAAS,WAAW,EAChD,QAAQ,EAAE,CAAC,EACX,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GACrB,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAkB1E;AAED,6EAA6E;AAC7E,iBAAS,kBAAkB,CAAC,CAAC,SAAS,WAAW,EAChD,QAAQ,EAAE,CAAC,EACX,KAAK,EAAE,OAAO,GACZ,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CA0BhD;AAED;;;;;GAKG;AACH,iBAAS,SAAS,CAAC,CAAC,SAAS,WAAW,EAAE,QAAQ,EAAE,CAAC,0CAmBpD;AAED;;;;;;GAMG;AACH,QAAA,MAAM,UAAU,GAAsC,CAAC,SAAS,WAAW,iKA+BzE,CAAA;AAEF,QAAA,MAAM,UAAU,GAAsC,CAAC,SAAS,WAAW,mKAsBzE,CAAA;AAEF,YAAY,EAAE,QAAQ,EAAE,CAAA;AACxB,OAAO,EAAE,kBAAkB,EAAE,UAAU,EAAE,kBAAkB,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAA"}
1
+ {"version":3,"file":"codec.d.ts","sourceRoot":"","sources":["../src/codec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,IAAI,YAAY,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAM/D,OAAO,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,cAAc,CAAA;AAIrD,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAA;AAC5C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AAC3C,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,WAAW,CAAA;AAIpC;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,+DAA+D;AAC/D,UAAU,QAAQ,CAAC,CAAC,SAAS,WAAW;IACvC,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAA;IAC1B,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAA;CACpB;AAED,iBAAS,QAAQ,CAAC,CAAC,SAAS,SAAS,EAAE,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAE5F;AAuLD,yEAAyE;AACzE,iBAAS,kBAAkB,CAAC,CAAC,SAAS,WAAW,EAChD,QAAQ,EAAE,CAAC,EACX,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GACrB,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAkB1E;AAED,6EAA6E;AAC7E,iBAAS,kBAAkB,CAAC,CAAC,SAAS,WAAW,EAChD,QAAQ,EAAE,CAAC,EACX,KAAK,EAAE,OAAO,GACZ,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CA0BhD;AAED;;;;;GAKG;AACH,iBAAS,SAAS,CAAC,CAAC,SAAS,WAAW,EAAE,QAAQ,EAAE,CAAC,0CAmBpD;AAED;;;;;;GAMG;AACH,QAAA,MAAM,UAAU,GAAsC,CAAC,SAAS,WAAW,0IAqBzE,CAAA;AAEF,QAAA,MAAM,UAAU,GAAsC,CAAC,SAAS,WAAW,4IAiBzE,CAAA;AAEF,YAAY,EAAE,QAAQ,EAAE,CAAA;AACxB,OAAO,EAAE,kBAAkB,EAAE,UAAU,EAAE,kBAAkB,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAA"}