@bjornpagen/bumbledb 0.5.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 +140 -136
- package/README.md +24 -11
- 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 +172 -116
- 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 +9 -6
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -2
- package/dist/index.js.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 +199 -203
- package/dist/query/atom.d.ts.map +1 -1
- package/dist/query/atom.js +39 -48
- package/dist/query/atom.js.map +1 -1
- package/dist/query/find.d.ts +116 -0
- package/dist/query/find.d.ts.map +1 -0
- package/dist/query/{select.js → find.js} +22 -22
- package/dist/query/find.js.map +1 -0
- package/dist/query/lower.d.ts +131 -158
- package/dist/query/lower.d.ts.map +1 -1
- package/dist/query/lower.js +505 -494
- package/dist/query/lower.js.map +1 -1
- package/dist/query/predicate.d.ts +22 -14
- package/dist/query/predicate.d.ts.map +1 -1
- package/dist/query/predicate.js +35 -42
- package/dist/query/predicate.js.map +1 -1
- package/dist/query/run.d.ts +8 -8
- package/dist/query/run.d.ts.map +1 -1
- package/dist/query/run.js +16 -21
- package/dist/query/run.js.map +1 -1
- package/dist/query/scope.d.ts +139 -74
- package/dist/query/scope.d.ts.map +1 -1
- package/dist/query/scope.js +80 -33
- 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 +293 -177
- package/src/exhume.ts +48 -11
- package/src/face.ts +13 -6
- package/src/fields.ts +51 -15
- package/src/index.ts +12 -8
- package/src/lower.ts +17 -12
- package/src/marshal.ts +38 -13
- package/src/native.ts +59 -8
- package/src/query/atom.ts +297 -275
- package/src/query/find.ts +212 -0
- package/src/query/lower.ts +692 -724
- package/src/query/predicate.ts +37 -45
- package/src/query/run.ts +17 -22
- package/src/query/scope.ts +184 -90
- 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/dist/query/select.d.ts +0 -128
- package/dist/query/select.d.ts.map +0 -1
- package/dist/query/select.js.map +0 -1
- package/src/query/select.ts +0 -215
package/dist/exhume.d.ts
CHANGED
|
@@ -17,11 +17,20 @@
|
|
|
17
17
|
* reconstructs a `Schema` value from the descriptor — that inverse mapping
|
|
18
18
|
* is deliberately out of scope; the rebirth tool keys by name.
|
|
19
19
|
*
|
|
20
|
-
*
|
|
21
|
-
*
|
|
22
|
-
*
|
|
23
|
-
*
|
|
24
|
-
*
|
|
20
|
+
* LIFETIMES ARE DISPOSABLES, never `close()` (ruled 2026-07-23, R12): the
|
|
21
|
+
* `Exhumed` value implements `Symbol.dispose` — teardown is synchronous
|
|
22
|
+
* (one environment close) — and `using` is the documented idiom:
|
|
23
|
+
*
|
|
24
|
+
* using exhumed = await Db.exhume(path)
|
|
25
|
+
*
|
|
26
|
+
* Disposal releases the engine handle AND the store's exclusive advisory
|
|
27
|
+
* lock deterministically, scope-shaped in the language's own syntax, so a
|
|
28
|
+
* same-path reopen (retry after a half-failed migration, a second forensic
|
|
29
|
+
* read) never waits on an unforceable GC finalizer. Every verb after
|
|
30
|
+
* disposal is a typed used-after-dispose refusal. The engine-side drop
|
|
31
|
+
* remains the reclamation-only backstop for a collected-but-undisposed
|
|
32
|
+
* value; the store is never written through this surface, so there is
|
|
33
|
+
* nothing to flush.
|
|
25
34
|
*/
|
|
26
35
|
import type { FactValue } from "#native.ts";
|
|
27
36
|
import type { ValueTypeSpec } from "#spec.ts";
|
|
@@ -100,9 +109,11 @@ interface ExhumedDescriptor {
|
|
|
100
109
|
/**
|
|
101
110
|
* One exhumed store: the self-described relation shapes and the raw facts
|
|
102
111
|
* by relation name. Read-only by construction — no write verb, no prepare
|
|
103
|
-
* verb
|
|
112
|
+
* verb. A DISPOSABLE lifetime (R12): `Symbol.dispose` releases the engine
|
|
113
|
+
* handle and the store's exclusive lock deterministically; `using` is the
|
|
114
|
+
* idiom, and a disposed value's verbs are typed refusals.
|
|
104
115
|
*/
|
|
105
|
-
interface Exhumed {
|
|
116
|
+
interface Exhumed extends Disposable {
|
|
106
117
|
/** The store's own persisted schema, as its creator declared it. */
|
|
107
118
|
readonly descriptor: ExhumedDescriptor;
|
|
108
119
|
/**
|
|
@@ -121,9 +132,10 @@ interface Exhumed {
|
|
|
121
132
|
* The bridge's three domain refusals become the typed error constants
|
|
122
133
|
* ({@link ErrExhumeNoDescriptor}, {@link ErrExhumeFormatMismatch},
|
|
123
134
|
* {@link ErrExhumeCorruption}), each carrying the engine's message in its
|
|
124
|
-
* wrap. The returned value is NOT cached: exhume is a forensic read
|
|
125
|
-
*
|
|
126
|
-
*
|
|
135
|
+
* wrap. The returned value is NOT cached: exhume is a forensic read whose
|
|
136
|
+
* lifetime is the caller's `using` scope — disposal releases the store's
|
|
137
|
+
* exclusive lock deterministically (R12), so the path is reusable the
|
|
138
|
+
* moment the scope exits.
|
|
127
139
|
*/
|
|
128
140
|
declare function exhumeStore(canonical: string): Exhumed;
|
|
129
141
|
export type { Exhumed, ExhumedAxiom, ExhumedDescriptor, ExhumedFact, ExhumedField, ExhumedRelation };
|
package/dist/exhume.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"exhume.d.ts","sourceRoot":"","sources":["../src/exhume.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"exhume.d.ts","sourceRoot":"","sources":["../src/exhume.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AAGH,OAAO,KAAK,EAAE,SAAS,EAAY,MAAM,YAAY,CAAA;AAErD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AAE7C;;;;;;GAMG;AACH,QAAA,MAAM,qBAAqB,OAE1B,CAAA;AAED;;;;GAIG;AACH,QAAA,MAAM,uBAAuB,OAE5B,CAAA;AAED;;;;;GAKG;AACH,QAAA,MAAM,mBAAmB,OAA2F,CAAA;AAEpH;;;;;;GAMG;AACH,KAAK,WAAW,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAA;AAEtD;;;;GAIG;AACH,UAAU,YAAY;IACrB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,SAAS,EAAE,aAAa,CAAA;CACjC;AAED;;;;GAIG;AACH,UAAU,YAAY;IACrB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAA;CAC5B;AAED;;;;;;;GAOG;AACH,UAAU,eAAe;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,MAAM,EAAE,SAAS,YAAY,EAAE,CAAA;IACxC,QAAQ,CAAC,MAAM,EAAE,SAAS,YAAY,EAAE,GAAG,SAAS,CAAA;CACpD;AAED;;;;;;;GAOG;AACH,UAAU,iBAAiB;IAC1B,QAAQ,CAAC,SAAS,EAAE,SAAS,eAAe,EAAE,CAAA;CAC9C;AAED;;;;;;GAMG;AACH,UAAU,OAAQ,SAAQ,UAAU;IACnC,oEAAoE;IACpE,QAAQ,CAAC,UAAU,EAAE,iBAAiB,CAAA;IACtC;;;;;;;OAOG;IACH,IAAI,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,WAAW,EAAE,CAAA;CAC9C;AA+BD;;;;;;;;;;GAUG;AACH,iBAAS,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CA8E/C;AAED,YAAY,EAAE,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,WAAW,EAAE,YAAY,EAAE,eAAe,EAAE,CAAA;AACpG,OAAO,EAAE,mBAAmB,EAAE,uBAAuB,EAAE,qBAAqB,EAAE,WAAW,EAAE,CAAA"}
|
package/dist/exhume.js
CHANGED
|
@@ -17,11 +17,20 @@
|
|
|
17
17
|
* reconstructs a `Schema` value from the descriptor — that inverse mapping
|
|
18
18
|
* is deliberately out of scope; the rebirth tool keys by name.
|
|
19
19
|
*
|
|
20
|
-
*
|
|
21
|
-
*
|
|
22
|
-
*
|
|
23
|
-
*
|
|
24
|
-
*
|
|
20
|
+
* LIFETIMES ARE DISPOSABLES, never `close()` (ruled 2026-07-23, R12): the
|
|
21
|
+
* `Exhumed` value implements `Symbol.dispose` — teardown is synchronous
|
|
22
|
+
* (one environment close) — and `using` is the documented idiom:
|
|
23
|
+
*
|
|
24
|
+
* using exhumed = await Db.exhume(path)
|
|
25
|
+
*
|
|
26
|
+
* Disposal releases the engine handle AND the store's exclusive advisory
|
|
27
|
+
* lock deterministically, scope-shaped in the language's own syntax, so a
|
|
28
|
+
* same-path reopen (retry after a half-failed migration, a second forensic
|
|
29
|
+
* read) never waits on an unforceable GC finalizer. Every verb after
|
|
30
|
+
* disposal is a typed used-after-dispose refusal. The engine-side drop
|
|
31
|
+
* remains the reclamation-only backstop for a collected-but-undisposed
|
|
32
|
+
* value; the store is never written through this surface, so there is
|
|
33
|
+
* nothing to flush.
|
|
25
34
|
*/
|
|
26
35
|
import * as errors from "@superbuilders/errors";
|
|
27
36
|
import { bridged, native } from "#native.ts";
|
|
@@ -78,9 +87,10 @@ function descriptorOf(manifest) {
|
|
|
78
87
|
* The bridge's three domain refusals become the typed error constants
|
|
79
88
|
* ({@link ErrExhumeNoDescriptor}, {@link ErrExhumeFormatMismatch},
|
|
80
89
|
* {@link ErrExhumeCorruption}), each carrying the engine's message in its
|
|
81
|
-
* wrap. The returned value is NOT cached: exhume is a forensic read
|
|
82
|
-
*
|
|
83
|
-
*
|
|
90
|
+
* wrap. The returned value is NOT cached: exhume is a forensic read whose
|
|
91
|
+
* lifetime is the caller's `using` scope — disposal releases the store's
|
|
92
|
+
* exclusive lock deterministically (R12), so the path is reusable the
|
|
93
|
+
* moment the scope exits.
|
|
84
94
|
*/
|
|
85
95
|
function exhumeStore(canonical) {
|
|
86
96
|
const outcome = bridged(`exhume bumbledb store at ${canonical}`, function callExhume() {
|
|
@@ -107,7 +117,27 @@ function exhumeStore(canonical) {
|
|
|
107
117
|
return field.name;
|
|
108
118
|
}));
|
|
109
119
|
}
|
|
120
|
+
/** The lifetime record: flipped once by {@link dispose}, judged by every verb. */
|
|
121
|
+
const lifetime = { live: true };
|
|
122
|
+
/**
|
|
123
|
+
* The `Symbol.dispose` teardown (R12): idempotent — a manual call inside
|
|
124
|
+
* a `using` scope must not double-close — and deterministic: the engine
|
|
125
|
+
* handle and the store's exclusive lock release HERE, never on a GC
|
|
126
|
+
* schedule.
|
|
127
|
+
*/
|
|
128
|
+
function dispose() {
|
|
129
|
+
if (!lifetime.live) {
|
|
130
|
+
return;
|
|
131
|
+
}
|
|
132
|
+
lifetime.live = false;
|
|
133
|
+
bridged(`close bumbledb exhumed store at ${canonical}`, function close() {
|
|
134
|
+
native.exhumeClose(handle);
|
|
135
|
+
});
|
|
136
|
+
}
|
|
110
137
|
function scan(relation) {
|
|
138
|
+
if (!lifetime.live) {
|
|
139
|
+
throw errors.new("bumbledb exhumed store is disposed — its using scope already exited");
|
|
140
|
+
}
|
|
111
141
|
const names = fieldNames.get(relation);
|
|
112
142
|
if (names === undefined) {
|
|
113
143
|
throw errors.new(`bumbledb exhume: the store's descriptor declares no relation ${relation}`);
|
|
@@ -116,6 +146,9 @@ function exhumeStore(canonical) {
|
|
|
116
146
|
return native.exhumeScan(handle, relation);
|
|
117
147
|
});
|
|
118
148
|
return Object.freeze(rows.map(function factOf(row) {
|
|
149
|
+
if (row.length !== names.length) {
|
|
150
|
+
throw errors.new(`bumbledb exhume drift: relation ${relation} row arity ${row.length} does not match the ${names.length} descriptor fields`);
|
|
151
|
+
}
|
|
119
152
|
const fact = {};
|
|
120
153
|
names.forEach(function pair(name, index) {
|
|
121
154
|
const cell = row[index];
|
|
@@ -127,7 +160,7 @@ function exhumeStore(canonical) {
|
|
|
127
160
|
return Object.freeze(fact);
|
|
128
161
|
}));
|
|
129
162
|
}
|
|
130
|
-
return Object.freeze({ descriptor, scan });
|
|
163
|
+
return Object.freeze({ descriptor, scan, [Symbol.dispose]: dispose });
|
|
131
164
|
}
|
|
132
165
|
export { ErrExhumeCorruption, ErrExhumeFormatMismatch, ErrExhumeNoDescriptor, exhumeStore };
|
|
133
166
|
//# sourceMappingURL=exhume.js.map
|
package/dist/exhume.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"exhume.js","sourceRoot":"","sources":["../src/exhume.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"exhume.js","sourceRoot":"","sources":["../src/exhume.ts"],"names":[],"mappings":"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"}
|
package/dist/face.d.ts
CHANGED
|
@@ -84,11 +84,14 @@ type FaceFields<S extends FaceSource> = S extends AnySelected ? keyof RelationFi
|
|
|
84
84
|
* mirrors, recipe 29's mixed-width zones) and the width slot reads
|
|
85
85
|
* `undefined` for every interval. Elements stay bound: u64-vs-i64 interval
|
|
86
86
|
* pairs still mismatch. The ROSTER slot is SDK-only structure (the engine's
|
|
87
|
-
* wire carries plain u64s): a closed reference contributes its
|
|
88
|
-
*
|
|
89
|
-
*
|
|
90
|
-
*
|
|
91
|
-
*
|
|
87
|
+
* wire carries plain u64s): a closed reference contributes its vocabulary
|
|
88
|
+
* NAME literal paired with its handle union — the faithful encoding of the
|
|
89
|
+
* runtime's roster VALUE-IDENTITY judgment, so two same-shaped vocabularies
|
|
90
|
+
* mismatch at compile time exactly as they throw at construction — every
|
|
91
|
+
* other kind `undefined`, so a plain u64 face cannot pair with a closed
|
|
92
|
+
* `[id]` face — the vocabulary's own descriptor (`Kind.id`) is the ONE
|
|
93
|
+
* spelling of a closed reference at this surface, and a bare column cannot
|
|
94
|
+
* alias a vocabulary through a declared law. The runtime twin is the
|
|
92
95
|
* statement constructors' roster-identity walk (`statements.ts`).
|
|
93
96
|
*/
|
|
94
97
|
type ShapeOf<F extends AnyField> = readonly [
|
|
@@ -103,9 +106,10 @@ type ShapeOf<F extends AnyField> = readonly [
|
|
|
103
106
|
} ? E : undefined,
|
|
104
107
|
F extends {
|
|
105
108
|
readonly closed: {
|
|
109
|
+
readonly name: infer N extends string;
|
|
106
110
|
readonly handles: readonly (infer H extends string)[];
|
|
107
111
|
};
|
|
108
|
-
} ? H : undefined
|
|
112
|
+
} ? readonly [N, H] : undefined
|
|
109
113
|
];
|
|
110
114
|
/** One field's structural shape within a declared field block (`undefined` when the name is foreign). */
|
|
111
115
|
type ShapeIn<Fields extends FieldsShape, K extends string> = K extends keyof Fields ? ShapeOf<Fields[K]> : undefined;
|
package/dist/face.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"face.d.ts","sourceRoot":"","sources":["../src/face.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAGH,OAAO,KAAK,EAAE,SAAS,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAC5E,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAC1C,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAA;AAM3G;;;;;;;GAOG;AACH,KAAK,OAAO,CAAC,CAAC,SAAS,UAAU,IAAI,CAAC,SAAS,WAAW,GAAG,iBAAiB,GAAG,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAA;AAmBlG,8DAA8D;AAC9D,KAAK,SAAS,GAAG,WAAW,GAAG,SAAS,CAAA;AAExC;;;;;;;GAOG;AACH,UAAU,QAAQ,CAAC,CAAC,SAAS,SAAS,GAAG,SAAS,EAAE,CAAC,SAAS,SAAS,MAAM,EAAE,GAAG,SAAS,MAAM,EAAE;IAClG,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAA;IACjB,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAA;IACtB,QAAQ,CAAC,SAAS,EAAE,SAAS,gBAAgB,EAAE,CAAA;CAC/C;AAED;;;;;;;;GAQG;AACH,UAAU,IAAI,CAAC,CAAC,SAAS,UAAU,EAAE,CAAC,SAAS,SAAS,MAAM,EAAE;IAC/D,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAA;IAClB,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAA;IACtB,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;CACtC;AAED,0DAA0D;AAC1D,KAAK,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,SAAS,MAAM,EAAE,CAAC,CAAA;AAElD,8FAA8F;AAC9F,KAAK,UAAU,GAAG,WAAW,GAAG,SAAS,GAAG,WAAW,GAAG,iBAAiB,CAAA;AAE3E;;;;;;GAMG;AACH,KAAK,UAAU,CAAC,CAAC,SAAS,UAAU,IAAI,CAAC,SAAS,WAAW,GAC1D,MAAM,cAAc,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,GAAG,MAAM,GAC5C,CAAC,SAAS,iBAAiB,GAC1B,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC,GAAG,MAAM,CAAC,GAChD,CAAC,SAAS,WAAW,GACpB,MAAM,cAAc,CAAC,CAAC,CAAC,GAAG,MAAM,GAChC,CAAC,SAAS;IAAE,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,CAAC,CAAC,CAAA;CAAE,GACjE,IAAI,GAAG,CAAC,MAAM,GAAG,GAAG,MAAM,CAAC,GAC3B,KAAK,CAAA;AAEX
|
|
1
|
+
{"version":3,"file":"face.d.ts","sourceRoot":"","sources":["../src/face.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAGH,OAAO,KAAK,EAAE,SAAS,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAC5E,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAC1C,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAA;AAM3G;;;;;;;GAOG;AACH,KAAK,OAAO,CAAC,CAAC,SAAS,UAAU,IAAI,CAAC,SAAS,WAAW,GAAG,iBAAiB,GAAG,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAA;AAmBlG,8DAA8D;AAC9D,KAAK,SAAS,GAAG,WAAW,GAAG,SAAS,CAAA;AAExC;;;;;;;GAOG;AACH,UAAU,QAAQ,CAAC,CAAC,SAAS,SAAS,GAAG,SAAS,EAAE,CAAC,SAAS,SAAS,MAAM,EAAE,GAAG,SAAS,MAAM,EAAE;IAClG,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAA;IACjB,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAA;IACtB,QAAQ,CAAC,SAAS,EAAE,SAAS,gBAAgB,EAAE,CAAA;CAC/C;AAED;;;;;;;;GAQG;AACH,UAAU,IAAI,CAAC,CAAC,SAAS,UAAU,EAAE,CAAC,SAAS,SAAS,MAAM,EAAE;IAC/D,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAA;IAClB,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAA;IACtB,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;CACtC;AAED,0DAA0D;AAC1D,KAAK,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,SAAS,MAAM,EAAE,CAAC,CAAA;AAElD,8FAA8F;AAC9F,KAAK,UAAU,GAAG,WAAW,GAAG,SAAS,GAAG,WAAW,GAAG,iBAAiB,CAAA;AAE3E;;;;;;GAMG;AACH,KAAK,UAAU,CAAC,CAAC,SAAS,UAAU,IAAI,CAAC,SAAS,WAAW,GAC1D,MAAM,cAAc,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,GAAG,MAAM,GAC5C,CAAC,SAAS,iBAAiB,GAC1B,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC,GAAG,MAAM,CAAC,GAChD,CAAC,SAAS,WAAW,GACpB,MAAM,cAAc,CAAC,CAAC,CAAC,GAAG,MAAM,GAChC,CAAC,SAAS;IAAE,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,CAAC,CAAC,CAAA;CAAE,GACjE,IAAI,GAAG,CAAC,MAAM,GAAG,GAAG,MAAM,CAAC,GAC3B,KAAK,CAAA;AAEX;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,KAAK,OAAO,CAAC,CAAC,SAAS,QAAQ,IAAI,SAAS;IAC3C,CAAC,CAAC,MAAM,CAAC;IACT,CAAC,SAAS;QAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAA;KAAE,GAAG,SAAS,GAAG,CAAC,SAAS;QAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,CAAA;KAAE,GAAG,CAAC,GAAG,SAAS;IAC3G,CAAC,SAAS;QAAE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,CAAA;KAAE,GAAG,CAAC,GAAG,SAAS;IACvD,CAAC,SAAS;QACT,QAAQ,CAAC,MAAM,EAAE;YAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,SAAS,MAAM,CAAC;YAAC,QAAQ,CAAC,OAAO,EAAE,SAAS,CAAC,MAAM,CAAC,SAAS,MAAM,CAAC,EAAE,CAAA;SAAE,CAAA;KACjH,GACE,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,GACf,SAAS;CACZ,CAAA;AAED,yGAAyG;AACzG,KAAK,OAAO,CAAC,MAAM,SAAS,WAAW,EAAE,CAAC,SAAS,MAAM,IAAI,CAAC,SAAS,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,SAAS,CAAA;AAEpH;;;;;;;;GAQG;AACH,KAAK,cAAc,CAAC,CAAC,SAAS,UAAU,EAAE,CAAC,SAAS,MAAM,IAAI,CAAC,SAAS,WAAW,GAChF,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,GACzC,CAAC,SAAS,iBAAiB,GAC1B,CAAC,SAAS,IAAI,GACb,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,GAC5B,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,GACrC,CAAC,SAAS,WAAW,GACpB,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAC7B,CAAC,SAAS;IACT,QAAQ,CAAC,EAAE,EAAE,MAAM,EAAE,SAAS,QAAQ,CAAA;IACtC,QAAQ,CAAC,OAAO,EAAE,MAAM,IAAI,SAAS,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAA;CACjE,GACA,CAAC,SAAS,IAAI,GACb,OAAO,CAAC,EAAE,CAAC,GACX,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,GACjB,SAAS,CAAA;AAEf,wEAAwE;AACxE,KAAK,QAAQ,CAAC,CAAC,SAAS,UAAU,EAAE,CAAC,SAAS,SAAS,MAAM,EAAE,IAAI;IAClE,QAAQ,EAAE,CAAC,IAAI,MAAM,CAAC,GAAG,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC;CACzD,CAAA;AAED,2FAA2F;AAC3F,KAAK,UAAU,CAAC,CAAC,SAAS,OAAO,IAAI,CAAC,SAAS,IAAI,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,KAAK,CAAA;AAE9F,sCAAsC;AACtC,KAAK,KAAK,CAAC,CAAC,SAAS,OAAO,IAAI,CAAC,CAAC,YAAY,CAAC,CAAC,QAAQ,CAAC,CAAA;AAEzD;;;;GAIG;AACH,UAAU,iBAAiB,CAAC,IAAI,EAAE,KAAK;IACtC,QAAQ,CAAC,6FAA6F,EAAE,SAAS;QAChH,IAAI;QACJ,KAAK;KACL,CAAA;CACD;AAED;;;;GAIG;AACH,KAAK,SAAS,CAAC,CAAC,SAAS,OAAO,EAAE,CAAC,SAAS,OAAO,IAClD,KAAK,CAAC,CAAC,CAAC,SAAS,KAAK,CAAC,CAAC,CAAC,GACtB,KAAK,CAAC,CAAC,CAAC,SAAS,KAAK,CAAC,CAAC,CAAC,GACxB,OAAO,GACP,iBAAiB,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,GACtC,iBAAiB,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;AAEzC;;;;;;;GAOG;AACH,UAAU,iBAAiB,CAAC,IAAI,EAAE,KAAK;IACtC,QAAQ,CAAC,wGAAwG,EAAE,SAAS;QAC3H,IAAI;QACJ,KAAK;KACL,CAAA;CACD;AAED;;;;;;;;;;GAUG;AACH,KAAK,UAAU,CAAC,CAAC,SAAS,OAAO,EAAE,CAAC,SAAS,OAAO,IACnD,UAAU,CAAC,CAAC,CAAC,SAAS,UAAU,CAAC,CAAC,CAAC,GAChC,UAAU,CAAC,CAAC,CAAC,SAAS,UAAU,CAAC,CAAC,CAAC,GAClC,OAAO,GACP,iBAAiB,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,GAChD,iBAAiB,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,CAAA;AAEnD;;;;;;;;;GASG;AACH,iBAAS,EAAE,CAAC,CAAC,SAAS,UAAU,EAAE,KAAK,CAAC,CAAC,SAAS,UAAU,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAA;AAC5G,iBAAS,EAAE,CAAC,CAAC,SAAS,UAAU,EAAE,KAAK,CAAC,CAAC,SAAS,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,GAAG,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,EAC7F,MAAM,EAAE,CAAC,EACT,MAAM,EAAE,CAAC,GACP,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;AAuCb;;;;GAIG;AACH,iBAAS,UAAU,CAAC,IAAI,EAAE,QAAQ,GAAG,MAAM,CAW1C;AAED,YAAY,EACX,OAAO,EACP,KAAK,EACL,IAAI,EACJ,iBAAiB,EACjB,QAAQ,EACR,UAAU,EACV,SAAS,EACT,iBAAiB,EACjB,UAAU,EACV,UAAU,EACV,OAAO,EACP,SAAS,EACT,UAAU,EACV,CAAA;AACD,OAAO,EAAE,EAAE,EAAE,UAAU,EAAE,CAAA"}
|
package/dist/face.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"face.js","sourceRoot":"","sources":["../src/face.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,KAAK,MAAM,MAAM,uBAAuB,CAAA;AAI/C,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAA;AAE3C,6EAA6E;AAC7E,MAAM,cAAc,GAAgC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;AAYrE;;;;;;GAMG;AACH,SAAS,SAAS,CAAC,MAAkB;IAIpC,IAAI,UAAU,IAAI,MAAM,EAAE,CAAC;QAC1B,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,QAAQ,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,CAAA;IAC/D,CAAC;IACD,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,cAAc,EAAE,CAAA;AACpD,CAAC;
|
|
1
|
+
{"version":3,"file":"face.js","sourceRoot":"","sources":["../src/face.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,KAAK,MAAM,MAAM,uBAAuB,CAAA;AAI/C,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAA;AAE3C,6EAA6E;AAC7E,MAAM,cAAc,GAAgC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;AAYrE;;;;;;GAMG;AACH,SAAS,SAAS,CAAC,MAAkB;IAIpC,IAAI,UAAU,IAAI,MAAM,EAAE,CAAC;QAC1B,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,QAAQ,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,CAAA;IAC/D,CAAC;IACD,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,cAAc,EAAE,CAAA;AACpD,CAAC;AAyMD,SAAS,EAAE,CAAuB,MAAS,EAAE,MAAkC;IAC9E,MAAM,UAAU,GAAsB,MAAM,CAAC,MAAM,CAAC,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAA;IACxG,MAAM,KAAK,GAAG,SAAS,CAAC,MAAM,CAAC,CAAA;IAC/B,MAAM,IAAI,GAAa,MAAM,CAAC,MAAM,CAAC;QACpC,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,UAAU;QACV,SAAS,EAAE,KAAK,CAAC,SAAS;KAC1B,CAAC,CAAA;IACF,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAA;IACzD,IAAI,CAAC,UAAU,CAAuB,KAAK,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,CAAC;QAClE,MAAM,MAAM,CAAC,GAAG,CAAC,aAAa,KAAK,CAAC,KAAK,CAAC,IAAI,gCAAgC,CAAC,CAAA;IAChF,CAAC;IACD,OAAO,KAAK,CAAA;AACb,CAAC;AAED;;;;;;;;GAQG;AACH,SAAS,UAAU,CAClB,KAAuG,EACvG,MAAS,EACT,UAAa;IAEb,MAAM,KAAK,GAAG,UAAU,IAAI,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAA;IAC7D,OAAO,CACN,KAAK,CAAC,MAAM,KAAK,MAAM;QACvB,KAAK,CAAC,UAAU,KAAK,UAAU;QAC/B,KAAK,CAAC,IAAI,CAAC,KAAK,KAAK,KAAK;QAC1B,KAAK,CAAC,IAAI,CAAC,UAAU,KAAK,UAAU,CACpC,CAAA;AACF,CAAC;AAED;;;;GAIG;AACH,SAAS,UAAU,CAAC,IAAc;IACjC,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAC7C,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACjC,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,UAAU,GAAG,CAAA;IAC3C,CAAC;IACD,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS;SAC7B,GAAG,CAAC,SAAS,aAAa,CAAC,OAAO;QAClC,OAAO,GAAG,OAAO,CAAC,KAAK,OAAO,gBAAgB,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAA;IAC9D,CAAC,CAAC;SACD,IAAI,CAAC,IAAI,CAAC,CAAA;IACZ,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,UAAU,MAAM,QAAQ,GAAG,CAAA;AACzD,CAAC;AAiBD,OAAO,EAAE,EAAE,EAAE,UAAU,EAAE,CAAA"}
|
package/dist/fields.d.ts
CHANGED
|
@@ -40,14 +40,19 @@ declare function span(start: bigint, end: bigint): IntervalValue;
|
|
|
40
40
|
* A closed relation's roster as seen from a referencing field: the handle
|
|
41
41
|
* namespace `where()` selections and ground axioms resolve bare handle ids
|
|
42
42
|
* through (the macro's own rule: a handle is legal exactly on a field that
|
|
43
|
-
* references a closed relation). The
|
|
44
|
-
* the literal
|
|
45
|
-
*
|
|
46
|
-
*
|
|
43
|
+
* references a closed relation). The roster is PRECISE in BOTH slots —
|
|
44
|
+
* `Name` carries the vocabulary's literal name and `H` the literal handle
|
|
45
|
+
* names in declaration order (the unbound `string` defaults exist only as
|
|
46
|
+
* the fallback where no roster is in scope). The name literal is
|
|
47
|
+
* load-bearing: the runtime twins judge roster VALUE IDENTITY, so two
|
|
48
|
+
* same-shaped vocabularies (`Yes/No` twice) are distinct — carrying the
|
|
49
|
+
* name makes the type the faithful encoding of that judgment, and a
|
|
50
|
+
* cross-vocabulary pairing fails at compile time, not construction. The
|
|
51
|
+
* runtime twin is the same frozen declaration-order value that was always
|
|
47
52
|
* there.
|
|
48
53
|
*/
|
|
49
|
-
interface ClosedRoster<H extends string = string> {
|
|
50
|
-
readonly name:
|
|
54
|
+
interface ClosedRoster<Name extends string = string, H extends string = string> {
|
|
55
|
+
readonly name: Name;
|
|
51
56
|
readonly handles: readonly H[];
|
|
52
57
|
}
|
|
53
58
|
/** The `bool` field descriptor: value type `boolean`. No `.fresh` (macro parity). */
|
|
@@ -115,9 +120,9 @@ interface IntervalField<Element extends "u64" | "i64" = "u64" | "i64", Width ext
|
|
|
115
120
|
* map and JoinOk, which compare kind/class/width/element. Terminal: no
|
|
116
121
|
* `.fresh` — a vocabulary's rows are ground axioms, never minted.
|
|
117
122
|
*/
|
|
118
|
-
interface ClosedIdField<H extends string = string> {
|
|
123
|
+
interface ClosedIdField<Name extends string = string, H extends string = string> {
|
|
119
124
|
readonly kind: "u64";
|
|
120
|
-
readonly closed: ClosedRoster<H>;
|
|
125
|
+
readonly closed: ClosedRoster<Name, H>;
|
|
121
126
|
}
|
|
122
127
|
/** Any field descriptor, whatever its kind or marks. */
|
|
123
128
|
type AnyField = BoolField | StrField | U64Field | FreshU64Field | I64Field | BytesField | IntervalField | ClosedIdField;
|
|
@@ -167,16 +172,33 @@ declare function rosterOf(field: AnyField | undefined): ClosedRoster | undefined
|
|
|
167
172
|
/** Narrows an interval-shaped value: a plain object with bigint start/end — THE one interval predicate. */
|
|
168
173
|
declare function isIntervalValue(value: unknown): value is IntervalValue;
|
|
169
174
|
/**
|
|
170
|
-
* Rejects a declaration name that JavaScript would re-order
|
|
171
|
-
*
|
|
172
|
-
*
|
|
175
|
+
* Rejects a declaration name that JavaScript would re-order, and a name
|
|
176
|
+
* that would break the class map's coordinate encoding. Declaration order =
|
|
177
|
+
* ordinal ids is the law relations, columns, and schemas all lean on, and
|
|
178
|
+
* it is carried by object-literal key order — which ECMA-262's
|
|
173
179
|
* OrdinaryOwnPropertyKeys breaks for integer-index keys (they enumerate
|
|
174
|
-
* first, ascending, regardless of where they were written).
|
|
175
|
-
*
|
|
176
|
-
*
|
|
177
|
-
*
|
|
180
|
+
* first, ascending, regardless of where they were written). A `.` in a name
|
|
181
|
+
* would make the law engine's `${relation}.${field}` coordinate template
|
|
182
|
+
* non-injective at BOTH tiers (relation `"A.B"` field `"x"` and relation
|
|
183
|
+
* `"A"` field `"B.x"` are one coordinate), silently merging unrelated law
|
|
184
|
+
* classes — banned here, which is exact macro parity: Rust identifiers
|
|
185
|
+
* cannot contain dots. Both are construction errors, exactly as an
|
|
186
|
+
* unparseable name is a macro expansion error.
|
|
178
187
|
*/
|
|
179
188
|
declare function assertDeclarationOrderKey(where: string, name: string): void;
|
|
189
|
+
/**
|
|
190
|
+
* Rejects a declaration record whose prototype was replaced. A plain
|
|
191
|
+
* `__proto__: {...}` property in an object literal is ECMA-262 Annex B's
|
|
192
|
+
* prototype SETTER, not a data property — the entry never becomes an own
|
|
193
|
+
* enumerable key, so the declared handle/field/relation would silently
|
|
194
|
+
* vanish from every `Object.keys`/`Object.entries` walk while the type
|
|
195
|
+
* tier still admits its name. A non-default prototype on a declaration
|
|
196
|
+
* literal proves exactly that spelling, so it is a construction error; the
|
|
197
|
+
* computed spelling `["__proto__"]: {...}` creates an own data property
|
|
198
|
+
* and is admitted (no name is reserved). `Object.create(null)` records
|
|
199
|
+
* stay admissible.
|
|
200
|
+
*/
|
|
201
|
+
declare function assertDeclarationRecord(where: string, record: object): void;
|
|
180
202
|
/** The one `u64` constructor value. */
|
|
181
203
|
declare const u64: U64Field;
|
|
182
204
|
/** The one `i64` constructor value. */
|
|
@@ -214,5 +236,5 @@ declare function interval<Element extends U64Field | I64Field, const Width exten
|
|
|
214
236
|
*/
|
|
215
237
|
declare function literalOf(field: AnyField, value: unknown): LiteralSpec;
|
|
216
238
|
export type { AnyField, BoolField, BytesField, ClosedIdField, ClosedRoster, FreshU64Field, I64Field, Infer, IntervalField, IntervalValue, StrField, U64Field };
|
|
217
|
-
export { assertDeclarationOrderKey, bool, bytes, i64, interval, isIntervalValue, literalOf, literalShapeError, rosterOf, span, str, u64 };
|
|
239
|
+
export { assertDeclarationOrderKey, assertDeclarationRecord, bool, bytes, i64, interval, isIntervalValue, literalOf, literalShapeError, rosterOf, span, str, u64 };
|
|
218
240
|
//# sourceMappingURL=fields.d.ts.map
|
package/dist/fields.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fields.d.ts","sourceRoot":"","sources":["../src/fields.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAGH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA;AAE3C;;;;;;;;GAQG;AACH,UAAU,aAAa;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;CACpB;AAED;;;;;;GAMG;AACH,iBAAS,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,aAAa,CAKvD;AAED
|
|
1
|
+
{"version":3,"file":"fields.d.ts","sourceRoot":"","sources":["../src/fields.ts"],"names":[],"mappings":"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"}
|
package/dist/fields.js
CHANGED
|
@@ -88,19 +88,44 @@ function intervalLiteral(element, value) {
|
|
|
88
88
|
return { kind: "value", value: { kind: "intervalI64", start: value.start, end: value.end } };
|
|
89
89
|
}
|
|
90
90
|
/**
|
|
91
|
-
* Rejects a declaration name that JavaScript would re-order
|
|
92
|
-
*
|
|
93
|
-
*
|
|
91
|
+
* Rejects a declaration name that JavaScript would re-order, and a name
|
|
92
|
+
* that would break the class map's coordinate encoding. Declaration order =
|
|
93
|
+
* ordinal ids is the law relations, columns, and schemas all lean on, and
|
|
94
|
+
* it is carried by object-literal key order — which ECMA-262's
|
|
94
95
|
* OrdinaryOwnPropertyKeys breaks for integer-index keys (they enumerate
|
|
95
|
-
* first, ascending, regardless of where they were written).
|
|
96
|
-
*
|
|
97
|
-
*
|
|
98
|
-
*
|
|
96
|
+
* first, ascending, regardless of where they were written). A `.` in a name
|
|
97
|
+
* would make the law engine's `${relation}.${field}` coordinate template
|
|
98
|
+
* non-injective at BOTH tiers (relation `"A.B"` field `"x"` and relation
|
|
99
|
+
* `"A"` field `"B.x"` are one coordinate), silently merging unrelated law
|
|
100
|
+
* classes — banned here, which is exact macro parity: Rust identifiers
|
|
101
|
+
* cannot contain dots. Both are construction errors, exactly as an
|
|
102
|
+
* unparseable name is a macro expansion error.
|
|
99
103
|
*/
|
|
100
104
|
function assertDeclarationOrderKey(where, name) {
|
|
101
105
|
if (/^(?:0|[1-9][0-9]*)$/.test(name)) {
|
|
102
106
|
throw errors.new(`${where}: name ${name} is an integer index — JavaScript object keys re-order integer indices, breaking the declaration-order law; use a non-numeric name`);
|
|
103
107
|
}
|
|
108
|
+
if (name.includes(".")) {
|
|
109
|
+
throw errors.new(`${where}: name ${name} contains a dot — the law classes key on the \`relation.field\` coordinate, so a dotted name would alias unrelated slots (macro parity: Rust identifiers cannot contain dots); use a dot-free name`);
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Rejects a declaration record whose prototype was replaced. A plain
|
|
114
|
+
* `__proto__: {...}` property in an object literal is ECMA-262 Annex B's
|
|
115
|
+
* prototype SETTER, not a data property — the entry never becomes an own
|
|
116
|
+
* enumerable key, so the declared handle/field/relation would silently
|
|
117
|
+
* vanish from every `Object.keys`/`Object.entries` walk while the type
|
|
118
|
+
* tier still admits its name. A non-default prototype on a declaration
|
|
119
|
+
* literal proves exactly that spelling, so it is a construction error; the
|
|
120
|
+
* computed spelling `["__proto__"]: {...}` creates an own data property
|
|
121
|
+
* and is admitted (no name is reserved). `Object.create(null)` records
|
|
122
|
+
* stay admissible.
|
|
123
|
+
*/
|
|
124
|
+
function assertDeclarationRecord(where, record) {
|
|
125
|
+
const proto = Object.getPrototypeOf(record);
|
|
126
|
+
if (proto !== Object.prototype && proto !== null) {
|
|
127
|
+
throw errors.new(`${where}: the declaration record's prototype was replaced — a plain \`__proto__: {...}\` entry is the prototype setter, so its key silently vanishes from the declaration; spell it computed (["__proto__"]: {...}) to declare it as data`);
|
|
128
|
+
}
|
|
104
129
|
}
|
|
105
130
|
/** The one fresh-marked u64 descriptor (the `.fresh` property of the unmarked one). */
|
|
106
131
|
const freshU64 = Object.freeze({ kind: "u64", fresh: true });
|
|
@@ -195,5 +220,5 @@ function literalOf(field, value) {
|
|
|
195
220
|
return intervalLiteral(field.element, value);
|
|
196
221
|
}
|
|
197
222
|
}
|
|
198
|
-
export { assertDeclarationOrderKey, bool, bytes, i64, interval, isIntervalValue, literalOf, literalShapeError, rosterOf, span, str, u64 };
|
|
223
|
+
export { assertDeclarationOrderKey, assertDeclarationRecord, bool, bytes, i64, interval, isIntervalValue, literalOf, literalShapeError, rosterOf, span, str, u64 };
|
|
199
224
|
//# sourceMappingURL=fields.js.map
|
package/dist/fields.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fields.js","sourceRoot":"","sources":["../src/fields.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,MAAM,MAAM,uBAAuB,CAAA;AAiB/C;;;;;;GAMG;AACH,SAAS,IAAI,CAAC,KAAa,EAAE,GAAW;IACvC,IAAI,KAAK,IAAI,GAAG,EAAE,CAAC;QAClB,MAAM,MAAM,CAAC,GAAG,CAAC,gEAAgE,KAAK,KAAK,GAAG,GAAG,CAAC,CAAA;IACnG,CAAC;IACD,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAA;AACrC,CAAC;
|
|
1
|
+
{"version":3,"file":"fields.js","sourceRoot":"","sources":["../src/fields.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,MAAM,MAAM,uBAAuB,CAAA;AAiB/C;;;;;;GAMG;AACH,SAAS,IAAI,CAAC,KAAa,EAAE,GAAW;IACvC,IAAI,KAAK,IAAI,GAAG,EAAE,CAAC;QAClB,MAAM,MAAM,CAAC,GAAG,CAAC,gEAAgE,KAAK,KAAK,GAAG,GAAG,CAAC,CAAA;IACnG,CAAC;IACD,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAA;AACrC,CAAC;AAoID;;;;;GAKG;AACH,SAAS,iBAAiB,CAAC,OAAe,EAAE,QAAgB,EAAE,KAAc;IAC3E,OAAO,MAAM,CAAC,GAAG,CAAC,GAAG,OAAO,cAAc,QAAQ,SAAS,OAAO,KAAK,EAAE,CAAC,CAAA;AAC3E,CAAC;AAED;;;;;;GAMG;AACH,SAAS,QAAQ,CAAC,KAA2B;IAC5C,IAAI,KAAK,KAAK,SAAS,IAAI,QAAQ,IAAI,KAAK,EAAE,CAAC;QAC9C,OAAO,KAAK,CAAC,MAAM,CAAA;IACpB,CAAC;IACD,OAAO,SAAS,CAAA;AACjB,CAAC;AAED,2GAA2G;AAC3G,SAAS,eAAe,CAAC,KAAc;IACtC,OAAO,CACN,OAAO,KAAK,KAAK,QAAQ;QACzB,KAAK,KAAK,IAAI;QACd,OAAO,IAAI,KAAK;QAChB,KAAK,IAAI,KAAK;QACd,OAAO,KAAK,CAAC,KAAK,KAAK,QAAQ;QAC/B,OAAO,KAAK,CAAC,GAAG,KAAK,QAAQ,CAC7B,CAAA;AACF,CAAC;AAED;;;;;;;;GAQG;AACH,SAAS,aAAa,CAAC,MAAoB,EAAE,KAAc;IAC1D,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC/B,MAAM,iBAAiB,CAAC,mBAAmB,EAAE,KAAK,MAAM,CAAC,IAAI,uBAAuB,EAAE,KAAK,CAAC,CAAA;IAC7F,CAAC;IACD,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QACrC,MAAM,MAAM,CAAC,GAAG,CAAC,IAAI,KAAK,wBAAwB,MAAM,CAAC,IAAI,oBAAoB,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IAC9G,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,CAAA;AACzC,CAAC;AAED,uDAAuD;AACvD,SAAS,eAAe,CAAC,OAAsB,EAAE,KAAc;IAC9D,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,EAAE,CAAC;QAC7B,MAAM,iBAAiB,CAAC,mBAAmB,EAAE,mCAAmC,EAAE,KAAK,CAAC,CAAA;IACzF,CAAC;IACD,IAAI,OAAO,KAAK,KAAK,EAAE,CAAC;QACvB,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,EAAE,CAAA;IAC7F,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,EAAE,CAAA;AAC7F,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,SAAS,yBAAyB,CAAC,KAAa,EAAE,IAAY;IAC7D,IAAI,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACtC,MAAM,MAAM,CAAC,GAAG,CACf,GAAG,KAAK,UAAU,IAAI,oIAAoI,CAC1J,CAAA;IACF,CAAC;IACD,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QACxB,MAAM,MAAM,CAAC,GAAG,CACf,GAAG,KAAK,UAAU,IAAI,oMAAoM,CAC1N,CAAA;IACF,CAAC;AACF,CAAC;AAED;;;;;;;;;;;GAWG;AACH,SAAS,uBAAuB,CAAC,KAAa,EAAE,MAAc;IAC7D,MAAM,KAAK,GAAG,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,CAAA;IAC3C,IAAI,KAAK,KAAK,MAAM,CAAC,SAAS,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QAClD,MAAM,MAAM,CAAC,GAAG,CACf,GAAG,KAAK,mOAAmO,CAC3O,CAAA;IACF,CAAC;AACF,CAAC;AAED,uFAAuF;AACvF,MAAM,QAAQ,GAAkB,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAA;AAE3E,uCAAuC;AACvC,MAAM,GAAG,GAAa,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAA;AAErE,uCAAuC;AACvC,MAAM,GAAG,GAAa,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAA;AAEpD,wCAAwC;AACxC,MAAM,IAAI,GAAc,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAA;AAEvD,uCAAuC;AACvC,MAAM,GAAG,GAAa,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAA;AAEpD;;;;;;GAMG;AACH,SAAS,KAAK,CAA6B,KAAY;IACtD,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,GAAG,EAAE,EAAE,CAAC;QACzD,MAAM,MAAM,CAAC,GAAG,CACf,iDAAiD,KAAK,+DAA+D,CACrH,CAAA;IACF,CAAC;IACD,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAA;AAC/C,CAAC;AAgBD,SAAS,QAAQ,CAAC,OAA4B,EAAE,KAAc;IAC7D,MAAM,WAAW,GAAG,OAAO,CAAC,IAAI,CAAA;IAChC,IAAI,WAAW,KAAK,KAAK,IAAI,WAAW,KAAK,KAAK,EAAE,CAAC;QACpD,MAAM,MAAM,CAAC,GAAG,CAAC,kEAAkE,WAAW,GAAG,CAAC,CAAA;IACnG,CAAC;IACD,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,GAAG,EAAE,EAAE,CAAC;QACvC,MAAM,MAAM,CAAC,GAAG,CACf,oCAAoC,KAAK,4DAA4D,CACrG,CAAA;IACF,CAAC;IACD,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,CAAA;AACxE,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,SAAS,CAAC,KAAe,EAAE,KAAc;IACjD,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IAC9B,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QAC1B,OAAO,aAAa,CAAC,MAAM,EAAE,KAAK,CAAC,CAAA;IACpC,CAAC;IACD,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;QACpB,KAAK,MAAM,EAAE,CAAC;YACb,IAAI,OAAO,KAAK,KAAK,SAAS,EAAE,CAAC;gBAChC,MAAM,iBAAiB,CAAC,mBAAmB,EAAE,SAAS,EAAE,KAAK,CAAC,CAAA;YAC/D,CAAC;YACD,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,CAAA;QACzD,CAAC;QACD,KAAK,KAAK,EAAE,CAAC;YACZ,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;gBAC/B,MAAM,iBAAiB,CAAC,mBAAmB,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAA;YAC9D,CAAC;YACD,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,CAAA;QACxD,CAAC;QACD,KAAK,KAAK,EAAE,CAAC;YACZ,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;gBAC/B,MAAM,iBAAiB,CAAC,mBAAmB,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAA;YAC9D,CAAC;YACD,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,CAAA;QACxD,CAAC;QACD,KAAK,KAAK,EAAE,CAAC;YACZ,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;gBAC/B,MAAM,iBAAiB,CAAC,mBAAmB,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAA;YAC9D,CAAC;YACD;;;;;;;;eAQG;YACH,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,EAAE,CAAC;gBAC3B,MAAM,iBAAiB,CAAC,mBAAmB,EAAE,oBAAoB,EAAE,KAAK,CAAC,CAAA;YAC1E,CAAC;YACD,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,CAAA;QAC3D,CAAC;QACD,KAAK,OAAO,EAAE,CAAC;YACd,IAAI,CAAC,CAAC,KAAK,YAAY,UAAU,CAAC,EAAE,CAAC;gBACpC,MAAM,iBAAiB,CAAC,mBAAmB,EAAE,YAAY,EAAE,KAAK,CAAC,CAAA;YAClE,CAAC;YACD,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,EAAE,CAAA;QAC/D,CAAC;QACD,KAAK,UAAU;YACd,OAAO,eAAe,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAA;IAC9C,CAAC;AACF,CAAC;AAgBD,OAAO,EACN,yBAAyB,EACzB,uBAAuB,EACvB,IAAI,EACJ,KAAK,EACL,GAAG,EACH,QAAQ,EACR,eAAe,EACf,SAAS,EACT,iBAAiB,EACjB,QAAQ,EACR,IAAI,EACJ,GAAG,EACH,GAAG,EACH,CAAA"}
|
package/dist/index.d.ts
CHANGED
|
@@ -8,8 +8,10 @@
|
|
|
8
8
|
* runtime (path-cached stores, transactions, typed violations, scoped
|
|
9
9
|
* snapshot reads, the witnessed write loop with `abandon` — PRD-07, zero
|
|
10
10
|
* closables), the query surface (Datalog as values, kysely-shaped:
|
|
11
|
-
* `query(S).rule(r => r.match(
|
|
12
|
-
*
|
|
11
|
+
* `query(S).rule(r => { const { id, name } = v(Holder); return r.match(Holder, { id, name }).find({ name }) })` —
|
|
12
|
+
* variables minted by `v()` and joined by OBJECT REFERENCE (reuse is the
|
|
13
|
+
* join), the head a `find` RECORD whose keys name the answer columns
|
|
14
|
+
* (renames are real), params still STRING-named, plus negation,
|
|
13
15
|
* conditions, aggregates, and stratified recursion via `program()`/`rec` —
|
|
14
16
|
* `db.prepare` as a plain value; the comparison/connective builders are
|
|
15
17
|
* also free exports, and the free names `eq`/`not`/`and`/`or` collide with
|
|
@@ -26,7 +28,7 @@ export type { AnyClosed, AnySelectedClosed, AxiomRow, Axioms, Closed, ClosedColu
|
|
|
26
28
|
export { closed } from "#closed.ts";
|
|
27
29
|
export type { Count } from "#count.ts";
|
|
28
30
|
export { atLeast, atMost, between, exactly, none } from "#count.ts";
|
|
29
|
-
export type { Abandon, DeclaredKeyFact, DeltaBuild, MemberRelation, OffendingFact, Prepared, ReadScope, Tx, Violation,
|
|
31
|
+
export type { Abandon, AbandonedArm, DeclaredKeyFact, DeltaBuild, MemberRelation, OffendingFact, Prepared, ReadScope, Tx, Violation, WriteResult } from "#db.ts";
|
|
30
32
|
export { abandon, Db, ErrNewtypeMismatch, ErrWitnessedLivelock, WITNESSED_ATTEMPT_CAP } from "#db.ts";
|
|
31
33
|
export type { Exhumed, ExhumedAxiom, ExhumedDescriptor, ExhumedFact, ExhumedField, ExhumedRelation } from "#exhume.ts";
|
|
32
34
|
export { ErrExhumeCorruption, ErrExhumeFormatMismatch, ErrExhumeNoDescriptor } from "#exhume.ts";
|
|
@@ -40,14 +42,15 @@ export type { KeyFact, Minted } from "#marshal.ts";
|
|
|
40
42
|
export type { FactValue, OccurrenceDrift, ProgramIr, Staleness, StatementKindTag } from "#native.ts";
|
|
41
43
|
export type { Desc, SortKey } from "#order.ts";
|
|
42
44
|
export { by, desc } from "#order.ts";
|
|
43
|
-
export type { AnyCond, BindingInput, Cmp,
|
|
45
|
+
export type { AnyCond, BindingInput, Cmp, FindColumn, MatchShape, NotAtom, RecData, RuleData, Tree } from "#query/atom.ts";
|
|
44
46
|
export { ALLEN, allen, and, eq, ge, gt, le, lt, ne, not, or, pointIn } from "#query/atom.ts";
|
|
47
|
+
export type { Agg, FindEntry } from "#query/find.ts";
|
|
45
48
|
export type { AnyQuery, AnyRuleValue, OutputRuleChain, OutputRuleScope, Query, QueryData, QueryParams, QueryRelation, QueryRow, QueryRuleChain, QueryRuleScope, QueryStart, RecRef, RecRuleChain, RecRuleScope, RuleValue, TermOps } from "#query/lower.ts";
|
|
46
49
|
export { lowerQuery, query } from "#query/lower.ts";
|
|
47
50
|
export type { ProgramScope, Rec } from "#query/predicate.ts";
|
|
48
51
|
export { program } from "#query/predicate.ts";
|
|
49
|
-
export type { ClassedField, Duration, MaskParam, Param, ParamEntry, ParamsRecord, SetParam, Var } from "#query/scope.ts";
|
|
50
|
-
export
|
|
52
|
+
export type { ClassedField, Duration, MaskParam, MatchFields, MatchOwner, Param, ParamEntry, ParamsRecord, SetParam, Var, VarsOf } from "#query/scope.ts";
|
|
53
|
+
export { v } from "#query/scope.ts";
|
|
51
54
|
export type { AnyRelation, AnySelected, Fact, FieldsShape, FreshKeys, InsertFact, Relation, RelationData, RelationField, RelationFields, Selected, SelectionBinding, SelectionInput } from "#relation.ts";
|
|
52
55
|
export { relation } from "#relation.ts";
|
|
53
56
|
export type { AnySchema, Schema, SchemaRelation, SchemaRelations } from "#schema.ts";
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -8,8 +8,10 @@
|
|
|
8
8
|
* runtime (path-cached stores, transactions, typed violations, scoped
|
|
9
9
|
* snapshot reads, the witnessed write loop with `abandon` — PRD-07, zero
|
|
10
10
|
* closables), the query surface (Datalog as values, kysely-shaped:
|
|
11
|
-
* `query(S).rule(r => r.match(
|
|
12
|
-
*
|
|
11
|
+
* `query(S).rule(r => { const { id, name } = v(Holder); return r.match(Holder, { id, name }).find({ name }) })` —
|
|
12
|
+
* variables minted by `v()` and joined by OBJECT REFERENCE (reuse is the
|
|
13
|
+
* join), the head a `find` RECORD whose keys name the answer columns
|
|
14
|
+
* (renames are real), params still STRING-named, plus negation,
|
|
13
15
|
* conditions, aggregates, and stratified recursion via `program()`/`rec` —
|
|
14
16
|
* `db.prepare` as a plain value; the comparison/connective builders are
|
|
15
17
|
* also free exports, and the free names `eq`/`not`/`and`/`or` collide with
|
|
@@ -33,6 +35,7 @@ export { by, desc } from "#order.ts";
|
|
|
33
35
|
export { ALLEN, allen, and, eq, ge, gt, le, lt, ne, not, or, pointIn } from "#query/atom.ts";
|
|
34
36
|
export { lowerQuery, query } from "#query/lower.ts";
|
|
35
37
|
export { program } from "#query/predicate.ts";
|
|
38
|
+
export { v } from "#query/scope.ts";
|
|
36
39
|
export { relation } from "#relation.ts";
|
|
37
40
|
export { schema } from "#schema.ts";
|
|
38
41
|
export { renderLiteral, renderLiteralSet, renderWindow } from "#spec.ts";
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAgBH,OAAO,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AAEnC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAcnE,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,MAAM,QAAQ,CAAA;AASrG,OAAO,EACN,mBAAmB,EACnB,uBAAuB,EACvB,qBAAqB,EACrB,MAAM,YAAY,CAAA;AAgBnB,OAAO,EAAE,EAAE,EAAE,MAAM,UAAU,CAAA;AAe7B,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,YAAY,CAAA;AAEvE,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,WAAW,CAAA;AAU7D,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAapC,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAA;AAqB5F,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAA;AAEnD,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAc7C,OAAO,EAAE,CAAC,EAAE,MAAM,iBAAiB,CAAA;AAgBnC,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAA;AAEvC,OAAO,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AAcnC,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AAWxE,OAAO,EAAE,SAAS,EAAE,GAAG,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA"}
|
package/dist/lower.d.ts
CHANGED
|
@@ -16,19 +16,19 @@ import type { RelationSpec, SchemaSpec } from "#spec.ts";
|
|
|
16
16
|
* Lowers one ordinary relation to its `RelationSpec` fragment: fields in
|
|
17
17
|
* declaration order, each carrying its law-computed class name as the
|
|
18
18
|
* `newtype` (`classes` — the schema's class record for this relation;
|
|
19
|
-
* bare fields carry `undefined`), `
|
|
20
|
-
*
|
|
19
|
+
* bare fields carry `undefined`), `closed: undefined` (the option is the
|
|
20
|
+
* kind — one sum, R7).
|
|
21
21
|
*/
|
|
22
22
|
declare function lowerRelation(relation: AnyRelation, classes: RelationClasses): RelationSpec;
|
|
23
23
|
/**
|
|
24
24
|
* Lowers one closed relation to its `RelationSpec` fragment: declared
|
|
25
|
-
* intrinsic columns only (the engine materializes the synthetic `id`)
|
|
26
|
-
* the
|
|
27
|
-
* class
|
|
28
|
-
* every referencing field shares by law
|
|
29
|
-
* literal back to its roster)
|
|
30
|
-
* order (row id = index); the
|
|
31
|
-
* construction.
|
|
25
|
+
* intrinsic columns only (the engine materializes the synthetic `id`) and
|
|
26
|
+
* the fused closedness sum (R7) — the handle newtype (the COMPUTED class
|
|
27
|
+
* name of the id's generator class, `"Kind.id"`, always present: a closed
|
|
28
|
+
* id is a generator; every referencing field shares it by law, which is
|
|
29
|
+
* how the engine resolves a handle literal back to its roster) together
|
|
30
|
+
* with the ground axioms in declaration order (row id = index); the
|
|
31
|
+
* literals were already lowered at `closed()` construction.
|
|
32
32
|
*/
|
|
33
33
|
declare function lowerClosed(member: AnyClosed, classes: RelationClasses): RelationSpec;
|
|
34
34
|
/**
|
package/dist/lower.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lower.d.ts","sourceRoot":"","sources":["../src/lower.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;
|
|
1
|
+
{"version":3,"file":"lower.d.ts","sourceRoot":"","sources":["../src/lower.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AAI3C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAC9C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAC/C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AAC3C,OAAO,KAAK,EAGX,YAAY,EACZ,UAAU,EAIV,MAAM,UAAU,CAAA;AAoFjB;;;;;;GAMG;AACH,iBAAS,aAAa,CAAC,QAAQ,EAAE,WAAW,EAAE,OAAO,EAAE,eAAe,GAAG,YAAY,CAKpF;AAED;;;;;;;;;GASG;AACH,iBAAS,WAAW,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,eAAe,GAAG,YAAY,CAY9E;AAKD;;;;;;;GAOG;AACH,iBAAS,KAAK,CAAC,MAAM,EAAE,SAAS,GAAG,UAAU,CAS5C;AAED,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,CAAA"}
|