@bjornpagen/bumbledb 0.6.0 → 0.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/COOKBOOK.md +45 -6
- package/README.md +15 -2
- package/dist/closed.d.ts +7 -5
- package/dist/closed.d.ts.map +1 -1
- package/dist/closed.js +4 -1
- package/dist/closed.js.map +1 -1
- package/dist/count.js +1 -1
- package/dist/count.js.map +1 -1
- package/dist/db.d.ts +110 -73
- package/dist/db.d.ts.map +1 -1
- package/dist/db.js +170 -114
- package/dist/db.js.map +1 -1
- package/dist/exhume.d.ts +22 -10
- package/dist/exhume.d.ts.map +1 -1
- package/dist/exhume.js +42 -9
- package/dist/exhume.js.map +1 -1
- package/dist/face.d.ts +10 -6
- package/dist/face.d.ts.map +1 -1
- package/dist/face.js.map +1 -1
- package/dist/fields.d.ts +38 -16
- package/dist/fields.d.ts.map +1 -1
- package/dist/fields.js +33 -8
- package/dist/fields.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/lower.d.ts +9 -9
- package/dist/lower.d.ts.map +1 -1
- package/dist/lower.js +17 -12
- package/dist/lower.js.map +1 -1
- package/dist/marshal.d.ts +17 -7
- package/dist/marshal.d.ts.map +1 -1
- package/dist/marshal.js +32 -10
- package/dist/marshal.js.map +1 -1
- package/dist/native.d.ts +60 -9
- package/dist/native.d.ts.map +1 -1
- package/dist/native.js.map +1 -1
- package/dist/query/atom.d.ts +72 -7
- package/dist/query/atom.d.ts.map +1 -1
- package/dist/query/atom.js +12 -9
- package/dist/query/atom.js.map +1 -1
- package/dist/query/lower.d.ts +8 -0
- package/dist/query/lower.d.ts.map +1 -1
- package/dist/query/lower.js +80 -13
- package/dist/query/lower.js.map +1 -1
- package/dist/query/run.d.ts +5 -5
- package/dist/query/run.d.ts.map +1 -1
- package/dist/query/run.js +7 -12
- package/dist/query/run.js.map +1 -1
- package/dist/query/scope.d.ts +15 -5
- package/dist/query/scope.d.ts.map +1 -1
- package/dist/query/scope.js.map +1 -1
- package/dist/relation.d.ts.map +1 -1
- package/dist/relation.js +3 -1
- package/dist/relation.js.map +1 -1
- package/dist/schema.d.ts.map +1 -1
- package/dist/schema.js +12 -2
- package/dist/schema.js.map +1 -1
- package/dist/spec.d.ts +20 -10
- package/dist/spec.d.ts.map +1 -1
- package/dist/spec.js.map +1 -1
- package/dist/statements.d.ts +22 -2
- package/dist/statements.d.ts.map +1 -1
- package/dist/statements.js +26 -5
- package/dist/statements.js.map +1 -1
- package/package.json +3 -3
- package/src/closed.ts +13 -7
- package/src/count.ts +1 -1
- package/src/db.ts +289 -173
- package/src/exhume.ts +48 -11
- package/src/face.ts +13 -6
- package/src/fields.ts +51 -15
- package/src/index.ts +1 -1
- package/src/lower.ts +17 -12
- package/src/marshal.ts +38 -13
- package/src/native.ts +59 -8
- package/src/query/atom.ts +119 -15
- package/src/query/lower.ts +117 -15
- package/src/query/run.ts +7 -12
- package/src/query/scope.ts +15 -6
- package/src/relation.ts +3 -1
- package/src/schema.ts +14 -2
- package/src/spec.ts +21 -9
- package/src/statements.ts +30 -6
package/COOKBOOK.md
CHANGED
|
@@ -983,7 +983,10 @@ the host's own interleaved writes), capped at 64 attempts: a callback that
|
|
|
983
983
|
itself issues a plain `db.write` each try re-moves the generation it is about
|
|
984
984
|
to witness, and past the cap that interleave hazard throws the typed
|
|
985
985
|
`ErrWitnessedLivelock` instead of spinning forever. `abandon(payload)`
|
|
986
|
-
declines to commit without issuing anything.
|
|
986
|
+
declines to commit without issuing anything — from `db.write` and
|
|
987
|
+
`db.writeWitnessed` alike (the sentinel's contract is unconditional, and
|
|
988
|
+
the outcome arm is in the result type exactly when the callback can
|
|
989
|
+
abandon).
|
|
987
990
|
|
|
988
991
|
```ts
|
|
989
992
|
const State = closed("State", ["Queued", "Running", "Done"])
|
|
@@ -1207,9 +1210,9 @@ for (;;) {
|
|
|
1207
1210
|
Termination is the host's theorem: `seen` grows strictly or the loop breaks,
|
|
1208
1211
|
inside a finite node set. When the idiom's costs bite — **unbounded or large
|
|
1209
1212
|
depth**, or **closure composed into a larger plan** — write the engine-native
|
|
1210
|
-
form instead: `?root` seeds the predicate, and the output
|
|
1211
|
-
set
|
|
1212
|
-
|
|
1213
|
+
form instead: `?root` seeds the predicate, and the output is the finished
|
|
1214
|
+
set's own identity projection (an `idb` atom is a positive occurrence, so it
|
|
1215
|
+
grounds its variables — no re-grounding join over a domain relation exists):
|
|
1213
1216
|
|
|
1214
1217
|
```ts
|
|
1215
1218
|
const reach = program(Closure, (p) => {
|
|
@@ -1231,12 +1234,46 @@ const reach = program(Closure, (p) => {
|
|
|
1231
1234
|
})
|
|
1232
1235
|
return p.output((r) => {
|
|
1233
1236
|
const { id: c } = v(Node)
|
|
1234
|
-
return r.
|
|
1237
|
+
return r.idb(seeded, { c }).find({ c })
|
|
1235
1238
|
})
|
|
1236
1239
|
})
|
|
1237
1240
|
const reachPrepared = db.prepare(reach)
|
|
1238
1241
|
```
|
|
1239
1242
|
|
|
1243
|
+
The complement is one `r.not` away — negation **of** a finished stratum is
|
|
1244
|
+
engine-legal (the strata judge refuses only negation *through* a cycle), so
|
|
1245
|
+
"every node the closure never reached" runs in-plan through the engine's
|
|
1246
|
+
anti-probe, never as a host-side set difference — the same program with the
|
|
1247
|
+
output rule:
|
|
1248
|
+
|
|
1249
|
+
```ts
|
|
1250
|
+
const unreached = program(Closure, (p) => {
|
|
1251
|
+
const rec = p.rec("reach")
|
|
1252
|
+
const seeded = rec
|
|
1253
|
+
.rule((r) => {
|
|
1254
|
+
const { id: c } = v(Node)
|
|
1255
|
+
return r
|
|
1256
|
+
.match(Node, { id: c })
|
|
1257
|
+
.where(eq(c, r.param("root")))
|
|
1258
|
+
.find({ c })
|
|
1259
|
+
})
|
|
1260
|
+
.rule((r) => {
|
|
1261
|
+
const { child: c, parent } = v(Parent)
|
|
1262
|
+
return r
|
|
1263
|
+
.match(Parent, { child: c, parent })
|
|
1264
|
+
.idb(rec, { c: parent })
|
|
1265
|
+
.find({ c })
|
|
1266
|
+
})
|
|
1267
|
+
return p.output((r) => {
|
|
1268
|
+
const { id: c } = v(Node)
|
|
1269
|
+
return r
|
|
1270
|
+
.match(Node, { id: c })
|
|
1271
|
+
.where(r.not(seeded, { c }))
|
|
1272
|
+
.find({ c })
|
|
1273
|
+
})
|
|
1274
|
+
})
|
|
1275
|
+
```
|
|
1276
|
+
|
|
1240
1277
|
(the test drives both dialects and asserts the same reachable sets, root for
|
|
1241
1278
|
root). What stays host-side is the **chain-window class** — interval
|
|
1242
1279
|
intersection along paths — which the recursion surface fences out: the idiom
|
|
@@ -1441,7 +1478,9 @@ the fingerprint refusal, load order, identity, mint catch-up, judgment); the
|
|
|
1441
1478
|
SDK pin asserts the two theories carry two distinct fingerprints — the
|
|
1442
1479
|
refusal's premise. For stores whose creating schema is gone, `Db.exhume`
|
|
1443
1480
|
reads the store's own persisted descriptor — the one schema-independent read
|
|
1444
|
-
path, the E half of ETL.
|
|
1481
|
+
path, the E half of ETL. Its lifetime is a `using` scope (`using exhumed =
|
|
1482
|
+
await Db.exhume(oldPath)`): disposal releases the store's exclusive lock at
|
|
1483
|
+
scope exit, so the rebirth loop's same-path retry never waits on GC.
|
|
1445
1484
|
|
|
1446
1485
|
## Composition
|
|
1447
1486
|
|
package/README.md
CHANGED
|
@@ -93,6 +93,19 @@ const prepared = db.prepare(certifiedAbove)
|
|
|
93
93
|
const rows = db.execute(prepared, { floor: 15n }) // rows: { a: bigint; rank: bigint }[]
|
|
94
94
|
console.log(rows)
|
|
95
95
|
|
|
96
|
+
// Lifetimes are disposables, never close() (Node 26 explicit resource
|
|
97
|
+
// management): a read scope acquired without a callback is released by its
|
|
98
|
+
// `using` declaration at scope exit — deterministic, in the language's own
|
|
99
|
+
// syntax. `db.read(fn)` remains the callback spelling of the same scope.
|
|
100
|
+
{
|
|
101
|
+
using snap = db.read()
|
|
102
|
+
console.log(snap.generation, snap.execute(prepared, { floor: 15n }))
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
// explain(): the plan as data — what the engine did with the query, plan
|
|
106
|
+
// sections and counters as plain values (a diagnostic surface, unfrozen).
|
|
107
|
+
console.log(db.explain(prepared, { floor: 15n }).emits)
|
|
108
|
+
|
|
96
109
|
// Host dispatch over the sealed roster is native `switch` narrowing over
|
|
97
110
|
// the handle union ("DirectPass" | "JudgedPass" | "Failed") — exhaustive
|
|
98
111
|
// via `satisfies never`; the sealed axioms read back typed.
|
|
@@ -119,9 +132,9 @@ The drizzle law governs this surface: the SDK's job at the host boundary is tran
|
|
|
119
132
|
|
|
120
133
|
- The structural type kernel — fields as pure structure (`bool`, `bytes`, `i64`, `u64`, `str`, `interval`, `span`), `relation()`, and `closed()` sealed rosters with typed axiom payloads. A closed reference's value type IS the handle union (`Infer` speaks it); dispatch is native `switch` narrowing with `satisfies never` exhaustiveness. Domains are never declared: `schema()` computes every field's class from the statement list.
|
|
121
134
|
- The statement algebra — `schema()`, `key`, `contained`, `mirrors`, `window`; faces via `on` (set membership is a plain array in `.where`); counts via `exactly`, `atLeast`, `atMost`, `between`, `none`; ψ-selection via `.where` on relations and closed rosters.
|
|
122
|
-
- The `Db` runtime — `Db.create`/`Db.open`, path-cached stores, transactions, typed violations, scoped snapshot reads, the
|
|
135
|
+
- The `Db` runtime — `Db.create`/`Db.open`, path-cached stores, transactions, typed violations, scoped snapshot reads (`db.read(fn)`, or `using snap = db.read()` — lifetimes are disposables, never `close()`), the write verbs with `abandon` (returning `abandon(payload)` from `write` or `writeWitnessed` rolls the transaction back; the outcome arm is in the result type), and `db.explain` — the prepared plan as data.
|
|
123
136
|
- The query surface — Datalog as values, `query(S).rule(r => ...)`: `v(R)`-minted vars (identity is the object reference — reusing one across binding positions IS the join), `find({...})` named result heads (renames are real), params typed by use unchanged, negation, aggregates, and the free comparison/connective exports (`eq`, `ne`, `lt`, `le`, `gt`, `ge`, `and`, `or`, `not`, `allen`/`ALLEN`, `pointIn`); set membership at a closed field is a plain array in the match record (`r.match(Ticket, { priority: ["Normal", "Urgent"] })` — closed-only there: an ordinary field's membership is a bound `r.inSet` param); stratified recursion via `program()`; `db.prepare` as a plain value.
|
|
124
|
-
- The exhume surface — `Db.exhume`, the schema-independent read path: a store's self-described shapes and raw facts by name, with typed refusals (`ErrExhumeNoDescriptor`, `ErrExhumeFormatMismatch`, `ErrExhumeCorruption`).
|
|
137
|
+
- The exhume surface — `Db.exhume`, the schema-independent read path: a store's self-described shapes and raw facts by name, with typed refusals (`ErrExhumeNoDescriptor`, `ErrExhumeFormatMismatch`, `ErrExhumeCorruption`). A disposable lifetime: `using exhumed = await Db.exhume(path)` releases the store's exclusive lock at scope exit.
|
|
125
138
|
|
|
126
139
|
## Cookbook
|
|
127
140
|
|
package/dist/closed.d.ts
CHANGED
|
@@ -98,12 +98,14 @@ interface ClosedCore<Name extends string, Handles extends string, Cols extends R
|
|
|
98
98
|
* The closed reference descriptor: `kind: Kind.id` in another relation's
|
|
99
99
|
* field block is the reference through which handle literals become
|
|
100
100
|
* legal in that relation's selections. Pure structure plus the PRECISE
|
|
101
|
-
* roster (`ClosedIdField<Handles>` — the handle union is the
|
|
102
|
-
* value type under `Infer
|
|
103
|
-
*
|
|
104
|
-
*
|
|
101
|
+
* roster (`ClosedIdField<Name, Handles>` — the handle union is the
|
|
102
|
+
* field's value type under `Infer`, and the name literal keeps two
|
|
103
|
+
* same-shaped vocabularies distinct at the type tier, matching the
|
|
104
|
+
* runtime's roster-identity judgment); the referencing field's domain is
|
|
105
|
+
* law-born: `schema()` computes it from the declared containment
|
|
106
|
+
* (`"Kind.id"`, the generator class).
|
|
105
107
|
*/
|
|
106
|
-
readonly id: ClosedIdField<Handles>;
|
|
108
|
+
readonly id: ClosedIdField<Name, Handles>;
|
|
107
109
|
readonly data: ClosedData;
|
|
108
110
|
/** Payload readback: handle to its declared column values, bare and structural. */
|
|
109
111
|
readonly axioms: Axioms<Handles, Cols>;
|
package/dist/closed.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"closed.d.ts","sourceRoot":"","sources":["../src/closed.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAGH,OAAO,EACN,KAAK,QAAQ,
|
|
1
|
+
{"version":3,"file":"closed.d.ts","sourceRoot":"","sources":["../src/closed.ts"],"names":[],"mappings":"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"}
|
package/dist/closed.js
CHANGED
|
@@ -30,7 +30,7 @@
|
|
|
30
30
|
* shape.
|
|
31
31
|
*/
|
|
32
32
|
import * as errors from "@superbuilders/errors";
|
|
33
|
-
import { assertDeclarationOrderKey, literalOf } from "#fields.ts";
|
|
33
|
+
import { assertDeclarationOrderKey, assertDeclarationRecord, literalOf } from "#fields.ts";
|
|
34
34
|
import { resolveSelection } from "#relation.ts";
|
|
35
35
|
/**
|
|
36
36
|
* THE relation-kind discriminant — the ONE spelling of "is this schema
|
|
@@ -160,9 +160,11 @@ function closedBare(name, handles) {
|
|
|
160
160
|
* axioms record's own keys.
|
|
161
161
|
*/
|
|
162
162
|
function closedPayload(name, columns, axioms) {
|
|
163
|
+
assertDeclarationRecord(`closed relation ${name} columns`, columns);
|
|
163
164
|
for (const columnName of Object.keys(columns)) {
|
|
164
165
|
assertDeclarationOrderKey(`closed relation ${name} column`, columnName);
|
|
165
166
|
}
|
|
167
|
+
assertDeclarationRecord(`closed relation ${name} axioms`, axioms);
|
|
166
168
|
const handles = Object.keys(axioms);
|
|
167
169
|
for (const handle of handles) {
|
|
168
170
|
assertDeclarationOrderKey(`closed relation ${name} handle`, handle);
|
|
@@ -192,6 +194,7 @@ function surfaceMinted(value, cols) {
|
|
|
192
194
|
* ψ-selection `where()`.
|
|
193
195
|
*/
|
|
194
196
|
function mintClosed(name, handles, columns, axioms) {
|
|
197
|
+
assertDeclarationOrderKey("closed relation", name);
|
|
195
198
|
if (handles.length === 0) {
|
|
196
199
|
throw errors.new(`closed relation ${name}: at least one handle is required (an empty vocabulary declares nothing)`);
|
|
197
200
|
}
|
package/dist/closed.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"closed.js","sourceRoot":"","sources":["../src/closed.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAEH,OAAO,KAAK,MAAM,MAAM,uBAAuB,CAAA;AAC/C,OAAO,EAEN,yBAAyB,
|
|
1
|
+
{"version":3,"file":"closed.js","sourceRoot":"","sources":["../src/closed.ts"],"names":[],"mappings":"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"}
|
package/dist/count.js
CHANGED
|
@@ -46,7 +46,7 @@ function exactly(n) {
|
|
|
46
46
|
throw errors.new(`window counts are u64: exactly(${n}) is out of domain`);
|
|
47
47
|
}
|
|
48
48
|
if (n === 0n) {
|
|
49
|
-
throw errors.new("`{0
|
|
49
|
+
throw errors.new("`{0}` is the exclusion — write none");
|
|
50
50
|
}
|
|
51
51
|
return admit(Object.freeze({ kind: "exact", n }));
|
|
52
52
|
}
|
package/dist/count.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"count.js","sourceRoot":"","sources":["../src/count.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,KAAK,MAAM,MAAM,uBAAuB,CAAA;AAG/C,sDAAsD;AACtD,MAAM,SAAS,GAAe,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAA;AAErE;;;;;;;GAOG;AACH,MAAM,QAAQ,GAAkB,MAAM,CAAC,yBAAyB,CAAC,CAAA;AAYjE,4DAA4D;AAC5D,SAAS,KAAK,CAAC,MAAkB;IAChC,MAAM,KAAK,GAAU,EAAE,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,CAAA;IACjD,OAAO,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;AAC5B,CAAC;AAyED;;;;GAIG;AACH,SAAS,OAAO,CAAyB,CAAoB;IAC5D,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;QACZ,MAAM,MAAM,CAAC,GAAG,CAAC,kCAAkC,CAAC,oBAAoB,CAAC,CAAA;IAC1E,CAAC;IACD,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC;QACd,MAAM,MAAM,CAAC,GAAG,CAAC,
|
|
1
|
+
{"version":3,"file":"count.js","sourceRoot":"","sources":["../src/count.ts"],"names":[],"mappings":"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"}
|
package/dist/db.d.ts
CHANGED
|
@@ -5,16 +5,19 @@
|
|
|
5
5
|
* keyed to statements, read through scoped snapshots, and run the witnessed
|
|
6
6
|
* read-compute-write loop — all typed by the schema's relations record.
|
|
7
7
|
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
*
|
|
8
|
+
* LIFETIMES ARE DISPOSABLES, never `close()` (ruled 2026-07-23, R12): no
|
|
9
|
+
* value this module returns carries a close spelling — release is
|
|
10
|
+
* deterministic and scope-shaped in the language's own syntax. `Db` values
|
|
11
|
+
* are CACHED per canonical path for the life of the process (a best-effort
|
|
12
|
+
* exit hook closes the cached environments; correctness never depends on it
|
|
13
|
+
* — the engine fsyncs every commit, so a process that dies without the hook
|
|
14
|
+
* loses nothing that was committed). Snapshots are scope-shaped both ways:
|
|
15
|
+
* `read(fn)` opens one before `fn` and closes it after unconditionally
|
|
16
|
+
* (the {@link ReadScope} handed to `fn` is invalidated the moment `fn`
|
|
17
|
+
* returns), and `using snap = db.read()` hands the caller the lifetime,
|
|
18
|
+
* released by the scope's own `Symbol.dispose` at scope exit. Prepared
|
|
19
|
+
* plans are plain values whose engine-side half is reclaimed by a GC
|
|
20
|
+
* finalizer — reclamation only, never correctness.
|
|
18
21
|
*
|
|
19
22
|
* PROCESS MODEL: one process, one exclusive-lock handle per store. The
|
|
20
23
|
* cached `Db` value owns the LMDB environment's exclusive lock until
|
|
@@ -31,12 +34,12 @@
|
|
|
31
34
|
*/
|
|
32
35
|
import type { Exhumed } from "#exhume.ts";
|
|
33
36
|
import { type KeyFact, type Minted } from "#marshal.ts";
|
|
34
|
-
import type { FactValue, Staleness, StatementKindTag } from "#native.ts";
|
|
37
|
+
import type { Explain, FactValue, Staleness, StatementKindTag } from "#native.ts";
|
|
35
38
|
import type { Query } from "#query/lower.ts";
|
|
36
39
|
import type { ParamsRecord } from "#query/scope.ts";
|
|
37
40
|
import type { AnyRelation, Fact, InsertFact } from "#relation.ts";
|
|
38
41
|
import type { Schema, SchemaRelations } from "#schema.ts";
|
|
39
|
-
import type
|
|
42
|
+
import { type KeyStatement, type Statement } from "#statements.ts";
|
|
40
43
|
/**
|
|
41
44
|
* The ordinary (writable, scannable) relations of a schema's record — the
|
|
42
45
|
* only values the runtime methods accept: closed relations lack the
|
|
@@ -94,19 +97,39 @@ interface Violation<Rels extends SchemaRelations> {
|
|
|
94
97
|
readonly facts: readonly OffendingFact<Rels>[];
|
|
95
98
|
}
|
|
96
99
|
/**
|
|
97
|
-
*
|
|
98
|
-
*
|
|
99
|
-
*
|
|
100
|
+
* The abandoned arm of a write result (ruled 2026-07-23, R10): present in
|
|
101
|
+
* the type EXACTLY when the callback can abandon — the conditional
|
|
102
|
+
* distributes over `R`, so a callback with no `Abandon` arm contributes
|
|
103
|
+
* `never` and the arm vanishes from the sum. The outcome is in the type;
|
|
104
|
+
* a dead arm is never handled.
|
|
100
105
|
*/
|
|
101
|
-
type
|
|
106
|
+
type AbandonedArm<R> = R extends Abandon<infer P> ? {
|
|
107
|
+
readonly ok: false;
|
|
108
|
+
readonly abandoned: P;
|
|
109
|
+
} : never;
|
|
110
|
+
/**
|
|
111
|
+
* A write's domain outcome, one sum for BOTH verbs (ruled 2026-07-23,
|
|
112
|
+
* R10): the committed generation; the COMPLETE violation set (every
|
|
113
|
+
* violated statement cited once, per direction for a containment, in
|
|
114
|
+
* materialized statement order); or the callback's own abandon payload —
|
|
115
|
+
* commit-vs-abandon is in the type, so a caller's explicit decline to
|
|
116
|
+
* commit can never be silently discarded. Narrows on `.ok`, then (when the
|
|
117
|
+
* callback can abandon) on `"violations" in result`.
|
|
118
|
+
*/
|
|
119
|
+
type WriteResult<Rels extends SchemaRelations, R = void> = {
|
|
102
120
|
readonly ok: true;
|
|
103
121
|
readonly generation: bigint;
|
|
104
122
|
} | {
|
|
105
123
|
readonly ok: false;
|
|
106
124
|
readonly violations: readonly Violation<Rels>[];
|
|
107
|
-
}
|
|
108
|
-
/**
|
|
109
|
-
|
|
125
|
+
} | AbandonedArm<R>;
|
|
126
|
+
/**
|
|
127
|
+
* The delta-building callback of a write: runs synchronously against the
|
|
128
|
+
* live transaction. Returning {@link abandon}`(payload)` rolls the
|
|
129
|
+
* transaction back (R10) — the result type carries the payload arm exactly
|
|
130
|
+
* then.
|
|
131
|
+
*/
|
|
132
|
+
type DeltaBuild<Rels extends SchemaRelations, R = void> = (tx: Tx<Rels>) => R;
|
|
110
133
|
/**
|
|
111
134
|
* The runtime discriminant of {@link Abandon} values — a property probe is
|
|
112
135
|
* how `writeWitnessed` distinguishes "abort without committing" from an
|
|
@@ -114,44 +137,24 @@ type DeltaBuild<Rels extends SchemaRelations> = (tx: Tx<Rels>) => void;
|
|
|
114
137
|
*/
|
|
115
138
|
declare const abandonMark: unique symbol;
|
|
116
139
|
/**
|
|
117
|
-
* The abandon sentinel {@link abandon} builds: returning one from a
|
|
118
|
-
* `writeWitnessed` callback
|
|
119
|
-
* commit is ever issued) and surfaces the payload as
|
|
120
|
-
* `{ ok: false, abandoned: payload }
|
|
140
|
+
* The abandon sentinel {@link abandon} builds: returning one from a `write`
|
|
141
|
+
* or `writeWitnessed` callback rolls the transaction back WITHOUT
|
|
142
|
+
* committing (no empty commit is ever issued) and surfaces the payload as
|
|
143
|
+
* `{ ok: false, abandoned: payload }` (ruled 2026-07-23, R10 — the
|
|
144
|
+
* sentinel's contract is unconditional, whichever write verb received it).
|
|
121
145
|
*/
|
|
122
146
|
interface Abandon<P> {
|
|
123
147
|
readonly [abandonMark]: true;
|
|
124
148
|
readonly payload: P;
|
|
125
149
|
}
|
|
126
150
|
/**
|
|
127
|
-
* Wraps a payload in the {@link Abandon} sentinel — the one way a
|
|
128
|
-
*
|
|
129
|
-
*
|
|
130
|
-
*
|
|
151
|
+
* Wraps a payload in the {@link Abandon} sentinel — the one way a write
|
|
152
|
+
* callback declines to commit: `return abandon(payload)` aborts the delta
|
|
153
|
+
* (nothing is committed, not even an empty commit) and the write resolves
|
|
154
|
+
* to `{ ok: false, abandoned: payload }`, from `write` and `writeWitnessed`
|
|
155
|
+
* alike (R10).
|
|
131
156
|
*/
|
|
132
157
|
declare function abandon<P>(payload: P): Abandon<P>;
|
|
133
|
-
/**
|
|
134
|
-
* The abandon payload type a `writeWitnessed` callback's return type
|
|
135
|
-
* implies: the payload of its `Abandon` arm, `never` when the callback can
|
|
136
|
-
* never abandon (the `abandoned` outcome is then statically unreachable).
|
|
137
|
-
*/
|
|
138
|
-
type AbandonedPayload<R> = R extends Abandon<infer P> ? P : never;
|
|
139
|
-
/**
|
|
140
|
-
* `writeWitnessed`'s domain outcome: the committed generation, the COMPLETE
|
|
141
|
-
* engine violation set (rejection-as-data, exactly {@link WriteResult}'s
|
|
142
|
-
* false arm), or the callback's own abandon payload. Narrows on `.ok`, then
|
|
143
|
-
* on `"violations" in result`.
|
|
144
|
-
*/
|
|
145
|
-
type WitnessedWriteResult<Rels extends SchemaRelations, R> = {
|
|
146
|
-
readonly ok: true;
|
|
147
|
-
readonly generation: bigint;
|
|
148
|
-
} | {
|
|
149
|
-
readonly ok: false;
|
|
150
|
-
readonly violations: readonly Violation<Rels>[];
|
|
151
|
-
} | {
|
|
152
|
-
readonly ok: false;
|
|
153
|
-
readonly abandoned: AbandonedPayload<R>;
|
|
154
|
-
};
|
|
155
158
|
/**
|
|
156
159
|
* One live write transaction: the submitted delta with the engine's
|
|
157
160
|
* FINAL-STATE point-read view (base + pending delta — the exact state the
|
|
@@ -163,10 +166,19 @@ interface Tx<Rels extends SchemaRelations> {
|
|
|
163
166
|
/**
|
|
164
167
|
* Records one insert. Omitted fresh fields are MINTED through the
|
|
165
168
|
* engine's alloc lane and returned as bare bigints; supplying them instead
|
|
166
|
-
* preserves identity (the resupply idiom). Returns
|
|
167
|
-
*
|
|
169
|
+
* preserves identity (the resupply idiom). Returns `{ changed, ...fresh }`
|
|
170
|
+
* (ruled 2026-07-23, R11): the engine's changed-state report — the Rust
|
|
171
|
+
* surface's `insert(&fact) -> bool` bijection `delete` always honored —
|
|
172
|
+
* beside the relation's fresh cells, minted or resupplied. The
|
|
173
|
+
* idempotent-replay lane reads the bit from the insert itself; no extra
|
|
174
|
+
* `contains` round trip exists. The flattened shape cannot carry a FRESH
|
|
175
|
+
* cell literally named `changed` beside the report, so admission refuses
|
|
176
|
+
* that one spelling ({@link refuseShadowedChanged}) — never a silent
|
|
177
|
+
* shadow here.
|
|
168
178
|
*/
|
|
169
|
-
insert<R extends MemberRelation<Rels>>(relation: R, fact: InsertFact<R>):
|
|
179
|
+
insert<R extends MemberRelation<Rels>>(relation: R, fact: InsertFact<R>): {
|
|
180
|
+
readonly changed: boolean;
|
|
181
|
+
} & Minted<R>;
|
|
170
182
|
/** Records one delete; `true` iff the final state changed. */
|
|
171
183
|
delete<R extends MemberRelation<Rels>>(relation: R, fact: Fact<R>): boolean;
|
|
172
184
|
/** Final-state membership of one complete fact. */
|
|
@@ -184,19 +196,20 @@ interface Tx<Rels extends SchemaRelations> {
|
|
|
184
196
|
get<R extends MemberRelation<Rels>, const P extends readonly string[]>(relation: R, keyStatement: KeyStatement<R, P>, key: DeclaredKeyFact<R, P>): Fact<R> | undefined;
|
|
185
197
|
}
|
|
186
198
|
/**
|
|
187
|
-
* The read view one `db.read(fn)` call scopes
|
|
188
|
-
*
|
|
189
|
-
*
|
|
190
|
-
*
|
|
191
|
-
*
|
|
192
|
-
*
|
|
199
|
+
* The read view one `db.read(fn)` call scopes — or one `using snap =
|
|
200
|
+
* db.read()` acquisition owns (ruled 2026-07-23, R12: lifetimes are
|
|
201
|
+
* disposables, never `close()`). The callback form invalidates the value
|
|
202
|
+
* when `fn` returns; the `using` form releases it at scope exit through
|
|
203
|
+
* `Symbol.dispose` — either way the release is deterministic and
|
|
204
|
+
* scope-shaped, every later verb call throws a typed used-after-scope
|
|
205
|
+
* error, and the underlying snapshot (with its LMDB reader slot) is
|
|
206
|
+
* already closed.
|
|
193
207
|
*/
|
|
194
|
-
interface ReadScope<Rels extends SchemaRelations> {
|
|
208
|
+
interface ReadScope<Rels extends SchemaRelations> extends Disposable {
|
|
195
209
|
/**
|
|
196
|
-
* The committed generation this scope witnessed —
|
|
197
|
-
*
|
|
198
|
-
*
|
|
199
|
-
* open and the generation read.
|
|
210
|
+
* The committed generation this scope witnessed — carried by the
|
|
211
|
+
* snapshot open itself (one crossing, inside the snapshot's own
|
|
212
|
+
* transaction), so it is atomic with the snapshot by construction.
|
|
200
213
|
*/
|
|
201
214
|
readonly generation: bigint;
|
|
202
215
|
/** Full-relation export in row-id order, decoded to bare structural facts. */
|
|
@@ -221,6 +234,16 @@ interface ReadScope<Rels extends SchemaRelations> {
|
|
|
221
234
|
* execution spelling ({@link Prepared} carries no `execute`).
|
|
222
235
|
*/
|
|
223
236
|
execute<Row, Params extends ParamsRecord>(prepared: Prepared<Rels, Row, Params>, params: Params): Row[];
|
|
237
|
+
/**
|
|
238
|
+
* Plan introspection as data (ruled 2026-07-23, R13): runs the prepared
|
|
239
|
+
* query against this scope's snapshot with counting instrumentation
|
|
240
|
+
* (the engine's ANALYZE semantics) and returns the structured
|
|
241
|
+
* {@link Explain} report — plan sections and counters as plain values,
|
|
242
|
+
* so the host reads what the engine did with its query without a
|
|
243
|
+
* second toolchain. A diagnostic surface, EXPLICITLY UNFROZEN: the
|
|
244
|
+
* shape follows the plan representation wherever it goes.
|
|
245
|
+
*/
|
|
246
|
+
explain<Row, Params extends ParamsRecord>(prepared: Prepared<Rels, Row, Params>, params: Params): Explain;
|
|
224
247
|
}
|
|
225
248
|
/**
|
|
226
249
|
* The module-private inference slot of {@link Prepared}: an optional symbol
|
|
@@ -270,6 +293,14 @@ interface Db<Rels extends SchemaRelations> {
|
|
|
270
293
|
* when `fn` returns — a used-after-scope call throws a typed error.
|
|
271
294
|
*/
|
|
272
295
|
read<T>(fn: (snap: ReadScope<Rels>) => T): T;
|
|
296
|
+
/**
|
|
297
|
+
* The `using` acquisition (ruled 2026-07-23, R12): `using snap =
|
|
298
|
+
* db.read()` — the caller owns the scope's lifetime, and the scope's
|
|
299
|
+
* `Symbol.dispose` releases the snapshot deterministically at scope
|
|
300
|
+
* exit, in the language's own syntax. Lifetimes are disposables, never
|
|
301
|
+
* `close()`.
|
|
302
|
+
*/
|
|
303
|
+
read(): ReadScope<Rels>;
|
|
273
304
|
/** `db.scan(r)` === `db.read(snap => snap.scan(r))` — the symmetry rule. */
|
|
274
305
|
scan<R extends MemberRelation<Rels>>(relation: R): Fact<R>[];
|
|
275
306
|
/** `db.get(r, k)` === `db.read(snap => snap.get(r, k))` — the symmetry rule. */
|
|
@@ -280,12 +311,18 @@ interface Db<Rels extends SchemaRelations> {
|
|
|
280
311
|
contains<R extends MemberRelation<Rels>>(relation: R, fact: Fact<R>): boolean;
|
|
281
312
|
/** `db.execute(p, params)` === `db.read(snap => snap.execute(p, params))` — the symmetry rule. */
|
|
282
313
|
execute<Row, Params extends ParamsRecord>(prepared: Prepared<Rels, Row, Params>, params: Params): Row[];
|
|
314
|
+
/** `db.explain(p, params)` === `db.read(snap => snap.explain(p, params))` — the symmetry rule (R13). */
|
|
315
|
+
explain<Row, Params extends ParamsRecord>(prepared: Prepared<Rels, Row, Params>, params: Params): Explain;
|
|
283
316
|
/**
|
|
284
317
|
* One delta transaction: builds the delta synchronously through `fn`,
|
|
285
318
|
* commits, and returns the domain outcome. A throw from `fn` aborts
|
|
286
|
-
* the delta (LMDB untouched) and rethrows wrapped.
|
|
319
|
+
* the delta (LMDB untouched) and rethrows wrapped. `fn` may decline to
|
|
320
|
+
* commit by returning {@link abandon}`(payload)` (ruled 2026-07-23,
|
|
321
|
+
* R10): the transaction rolls back — nothing is committed, not even an
|
|
322
|
+
* empty commit — and the outcome is `{ ok: false, abandoned: payload }`,
|
|
323
|
+
* an arm the result type carries exactly when the callback can abandon.
|
|
287
324
|
*/
|
|
288
|
-
write(fn: DeltaBuild<Rels>): WriteResult<Rels>;
|
|
325
|
+
write<R = void>(fn: DeltaBuild<Rels, R>): WriteResult<Rels, R>;
|
|
289
326
|
/**
|
|
290
327
|
* The ONE witnessed-write form: snapshot → `fn` (premise reads via
|
|
291
328
|
* `snap`, delta via `tx`) → witnessed commit, which lands only if no
|
|
@@ -304,7 +341,7 @@ interface Db<Rels extends SchemaRelations> {
|
|
|
304
341
|
* `{ ok: false, abandoned: payload }` and NO commit (not even an empty
|
|
305
342
|
* one) is issued.
|
|
306
343
|
*/
|
|
307
|
-
writeWitnessed<R>(fn: (snap: ReadScope<Rels>, tx: Tx<Rels>) => R):
|
|
344
|
+
writeWitnessed<R>(fn: (snap: ReadScope<Rels>, tx: Tx<Rels>) => R): WriteResult<Rels, R>;
|
|
308
345
|
/**
|
|
309
346
|
* Prepares a query value built against THIS schema (identity is the
|
|
310
347
|
* membership rule): lowers it to the engine IR, pins the plan, and
|
|
@@ -376,15 +413,15 @@ declare const Db: Readonly<{
|
|
|
376
413
|
* one schema-independent read path (no theory, no fingerprint check; the
|
|
377
414
|
* store rebirth tool's entry). Lives beside `open`/`create` so the path
|
|
378
415
|
* law stays in one place: the same `node:path.resolve` canonicalization,
|
|
379
|
-
* applied here. The value is NOT cached and
|
|
380
|
-
*
|
|
381
|
-
*
|
|
382
|
-
*
|
|
383
|
-
*
|
|
384
|
-
* the descriptor).
|
|
416
|
+
* applied here. The value is NOT cached and is a DISPOSABLE lifetime
|
|
417
|
+
* (R12) — `using exhumed = await Db.exhume(path)` releases the engine
|
|
418
|
+
* handle and the store's exclusive lock at scope exit, so a same-path
|
|
419
|
+
* reopen never waits on GC. A store not yet adopted rejects with the
|
|
420
|
+
* typed `ErrExhumeNoDescriptor` (the remedy: one fingerprint-matching
|
|
421
|
+
* `Db.open` under the creating schema back-fills the descriptor).
|
|
385
422
|
*/
|
|
386
423
|
exhume(storePath: string): Promise<Exhumed>;
|
|
387
424
|
}>;
|
|
388
|
-
export type { Abandon, DeclaredKeyFact, DeltaBuild, MemberRelation, OffendingFact, Prepared, ReadScope, Tx, Violation,
|
|
425
|
+
export type { Abandon, AbandonedArm, DeclaredKeyFact, DeltaBuild, MemberRelation, OffendingFact, Prepared, ReadScope, Tx, Violation, WriteResult };
|
|
389
426
|
export { abandon, Db, ErrNewtypeMismatch, ErrWitnessedLivelock, WITNESSED_ATTEMPT_CAP };
|
|
390
427
|
//# sourceMappingURL=db.d.ts.map
|
package/dist/db.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"db.d.ts","sourceRoot":"","sources":["../src/db.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"db.d.ts","sourceRoot":"","sources":["../src/db.ts"],"names":[],"mappings":"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"}
|