@bjornpagen/bumbledb 0.3.0 → 0.4.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 +66 -46
- package/README.md +28 -15
- package/dist/closed.d.ts +50 -73
- package/dist/closed.d.ts.map +1 -1
- package/dist/closed.js +38 -109
- package/dist/closed.js.map +1 -1
- package/dist/db.d.ts +4 -1
- package/dist/db.d.ts.map +1 -1
- package/dist/db.js +26 -3
- package/dist/db.js.map +1 -1
- package/dist/face.d.ts +39 -39
- package/dist/face.d.ts.map +1 -1
- package/dist/face.js +7 -16
- package/dist/face.js.map +1 -1
- package/dist/fields.d.ts +28 -14
- package/dist/fields.d.ts.map +1 -1
- package/dist/fields.js +15 -14
- package/dist/fields.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/marshal.d.ts +33 -6
- package/dist/marshal.d.ts.map +1 -1
- package/dist/marshal.js +67 -6
- package/dist/marshal.js.map +1 -1
- package/dist/query/atom.d.ts +59 -14
- package/dist/query/atom.d.ts.map +1 -1
- package/dist/query/atom.js +3 -0
- package/dist/query/atom.js.map +1 -1
- package/dist/query/lower.d.ts.map +1 -1
- package/dist/query/lower.js +251 -26
- package/dist/query/lower.js.map +1 -1
- package/dist/query/run.d.ts +15 -5
- package/dist/query/run.d.ts.map +1 -1
- package/dist/query/run.js +26 -6
- package/dist/query/run.js.map +1 -1
- package/dist/query/scope.d.ts +35 -13
- package/dist/query/scope.d.ts.map +1 -1
- package/dist/query/scope.js +16 -4
- package/dist/query/scope.js.map +1 -1
- package/dist/relation.d.ts +8 -7
- package/dist/relation.d.ts.map +1 -1
- package/dist/relation.js +32 -10
- package/dist/relation.js.map +1 -1
- package/dist/spec.d.ts +3 -2
- package/dist/spec.d.ts.map +1 -1
- package/dist/spec.js.map +1 -1
- package/dist/statements.d.ts +10 -4
- package/dist/statements.d.ts.map +1 -1
- package/dist/statements.js +79 -7
- package/dist/statements.js.map +1 -1
- package/package.json +2 -2
- package/src/closed.ts +72 -179
- package/src/db.ts +42 -5
- package/src/face.ts +34 -45
- package/src/fields.ts +46 -34
- package/src/index.ts +1 -2
- package/src/marshal.ts +74 -7
- package/src/query/atom.ts +58 -15
- package/src/query/lower.ts +301 -28
- package/src/query/run.ts +26 -6
- package/src/query/scope.ts +49 -15
- package/src/relation.ts +45 -17
- package/src/spec.ts +3 -2
- package/src/statements.ts +86 -7
package/dist/face.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"face.d.ts","sourceRoot":"","sources":["../src/face.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"face.d.ts","sourceRoot":"","sources":["../src/face.ts"],"names":[],"mappings":"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"}
|
package/dist/face.js
CHANGED
|
@@ -11,11 +11,12 @@
|
|
|
11
11
|
* positional: tuple order is preserved in the type, and the statement
|
|
12
12
|
* constructors pair the two sides' tuples by arity ({@link SameArity}) AND
|
|
13
13
|
* by structural shape ({@link SameShapes}) — every projected field's
|
|
14
|
-
* kind/width/element
|
|
15
|
-
* kernel: descriptors are pure structure
|
|
16
|
-
*
|
|
17
|
-
*
|
|
18
|
-
*
|
|
14
|
+
* kind/width/element/roster quadruple is read off the schema type (the
|
|
15
|
+
* minimal kernel: descriptors are pure structure, and a closed reference's
|
|
16
|
+
* roster IS part of that structure) and compared positionwise. There is no
|
|
17
|
+
* domain to compare at construction — domains are LAW-BORN: the statements
|
|
18
|
+
* themselves define the equivalence classes, and `schema()` is where they
|
|
19
|
+
* aggregate and get judged (the one-generator-per-class wall).
|
|
19
20
|
*/
|
|
20
21
|
import * as errors from "@superbuilders/errors";
|
|
21
22
|
import { renderLiteralSet } from "#spec.ts";
|
|
@@ -34,16 +35,6 @@ function faceParts(source) {
|
|
|
34
35
|
}
|
|
35
36
|
return { owner: source, selection: emptySelection };
|
|
36
37
|
}
|
|
37
|
-
/**
|
|
38
|
-
* Constructs a literal set (read disjunctively) for a `where()` binding.
|
|
39
|
-
* Two leading arguments by signature: the degenerate sets have no spelling
|
|
40
|
-
* (the canonical-utterance law, `docs/architecture/70-api.md`).
|
|
41
|
-
*/
|
|
42
|
-
function oneOf(first, second, ...rest) {
|
|
43
|
-
const literals = [first, second, ...rest];
|
|
44
|
-
Object.freeze(literals);
|
|
45
|
-
return Object.freeze({ literals });
|
|
46
|
-
}
|
|
47
38
|
function on(source, fields) {
|
|
48
39
|
const projection = Object.freeze(typeof fields === "string" ? [fields] : [...fields]);
|
|
49
40
|
const parts = faceParts(source);
|
|
@@ -90,5 +81,5 @@ function renderFace(face) {
|
|
|
90
81
|
.join(", ");
|
|
91
82
|
return `${face.owner.name}(${projection} | ${bindings})`;
|
|
92
83
|
}
|
|
93
|
-
export { on,
|
|
84
|
+
export { on, renderFace };
|
|
94
85
|
//# sourceMappingURL=face.js.map
|
package/dist/face.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"face.js","sourceRoot":"","sources":["../src/face.ts"],"names":[],"mappings":"AAAA
|
|
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;AAkMD,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;;;;;;;GAOG;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,11 +40,15 @@ 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).
|
|
43
|
+
* references a closed relation). The handle union is PRECISE — `H` carries
|
|
44
|
+
* the literal handle names in declaration order (the unbound `string`
|
|
45
|
+
* default exists only as the fallback where no roster is in scope); the
|
|
46
|
+
* runtime twin is the same frozen declaration-order array that was always
|
|
47
|
+
* there.
|
|
44
48
|
*/
|
|
45
|
-
interface ClosedRoster {
|
|
49
|
+
interface ClosedRoster<H extends string = string> {
|
|
46
50
|
readonly name: string;
|
|
47
|
-
readonly handles: readonly
|
|
51
|
+
readonly handles: readonly H[];
|
|
48
52
|
}
|
|
49
53
|
/** The `bool` field descriptor: value type `boolean`. No `.fresh` (macro parity). */
|
|
50
54
|
interface BoolField {
|
|
@@ -104,14 +108,16 @@ interface IntervalField<Element extends "u64" | "i64" = "u64" | "i64", Width ext
|
|
|
104
108
|
}
|
|
105
109
|
/**
|
|
106
110
|
* A closed relation's reference field descriptor (`Kind.id`) — a u64
|
|
107
|
-
* descriptor carrying the closed linkage: the roster resolves
|
|
108
|
-
*
|
|
109
|
-
* generator class `"Kind.id"`.
|
|
110
|
-
*
|
|
111
|
+
* descriptor carrying the closed linkage: the roster resolves handle
|
|
112
|
+
* literals in selections and ground axioms, and `schema()` names the id's
|
|
113
|
+
* generator class `"Kind.id"`. The handle union `H` is the field's VALUE
|
|
114
|
+
* TYPE (see {@link Infer}); `kind: "u64"` stays load-bearing for the class
|
|
115
|
+
* map and JoinOk, which compare kind/class/width/element. Terminal: no
|
|
116
|
+
* `.fresh` — a vocabulary's rows are ground axioms, never minted.
|
|
111
117
|
*/
|
|
112
|
-
interface ClosedIdField {
|
|
118
|
+
interface ClosedIdField<H extends string = string> {
|
|
113
119
|
readonly kind: "u64";
|
|
114
|
-
readonly closed: ClosedRoster
|
|
120
|
+
readonly closed: ClosedRoster<H>;
|
|
115
121
|
}
|
|
116
122
|
/** Any field descriptor, whatever its kind or marks. */
|
|
117
123
|
type AnyField = BoolField | StrField | U64Field | FreshU64Field | I64Field | BytesField | IntervalField | ClosedIdField;
|
|
@@ -119,13 +125,22 @@ type AnyField = BoolField | StrField | U64Field | FreshU64Field | I64Field | Byt
|
|
|
119
125
|
* The bare structural VALUE type of a field descriptor — the one total
|
|
120
126
|
* definition every fact, result row, and query term reads: `bool` →
|
|
121
127
|
* `boolean`, `str` → `string`, `u64`/`i64` → `bigint`, `bytes<N>` →
|
|
122
|
-
* `Uint8Array`, intervals → {@link IntervalValue}
|
|
128
|
+
* `Uint8Array`, intervals → {@link IntervalValue}, and a closed reference →
|
|
129
|
+
* its PRECISE handle union (`"DirectPass" | "Failed"` — the string-literal
|
|
130
|
+
* union IS the value type at the TS surface; the engine keeps u64 row ids
|
|
131
|
+
* and the marshal owns the bijection). The closed arm precedes the `u64`
|
|
132
|
+
* arm because a closed reference is structurally a u64 descriptor plus the
|
|
133
|
+
* roster.
|
|
123
134
|
*/
|
|
124
135
|
type Infer<F extends AnyField> = F extends {
|
|
125
136
|
readonly kind: "bool";
|
|
126
137
|
} ? boolean : F extends {
|
|
127
138
|
readonly kind: "str";
|
|
128
139
|
} ? string : F extends {
|
|
140
|
+
readonly closed: {
|
|
141
|
+
readonly handles: readonly (infer H extends string)[];
|
|
142
|
+
};
|
|
143
|
+
} ? H : F extends {
|
|
129
144
|
readonly kind: "u64";
|
|
130
145
|
} ? bigint : F extends {
|
|
131
146
|
readonly kind: "i64";
|
|
@@ -176,10 +191,9 @@ declare function interval<Element extends U64Field | I64Field, const Width exten
|
|
|
176
191
|
* Lowers one host literal at its field position to the wire
|
|
177
192
|
* {@link LiteralSpec} — the selection-literal machine ground axioms and
|
|
178
193
|
* `where()` bindings both ride (one machine, same errors — the macro's own
|
|
179
|
-
* rule). A value on a closed-reference field
|
|
180
|
-
*
|
|
181
|
-
*
|
|
182
|
-
* the field's structural kind.
|
|
194
|
+
* rule). A value on a closed-reference field IS its handle NAME (verified
|
|
195
|
+
* against the roster: an unknown name is a construction error); everything
|
|
196
|
+
* else lowers to a plain value tagged by the field's structural kind.
|
|
183
197
|
*/
|
|
184
198
|
declare function literalOf(field: AnyField, value: unknown): LiteralSpec;
|
|
185
199
|
export type { AnyField, BoolField, BytesField, ClosedIdField, ClosedRoster, FreshU64Field, I64Field, Infer, IntervalField, IntervalValue, StrField, U64Field };
|
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
|
@@ -45,20 +45,22 @@ function isIntervalLiteral(value) {
|
|
|
45
45
|
typeof value.end === "bigint");
|
|
46
46
|
}
|
|
47
47
|
/**
|
|
48
|
-
* Resolves one closed-handle literal: the handle
|
|
49
|
-
*
|
|
50
|
-
*
|
|
51
|
-
*
|
|
48
|
+
* Resolves one closed-handle literal: the handle NAME, verified against the
|
|
49
|
+
* roster — an unknown name is a construction error, the belt the wide
|
|
50
|
+
* fallback type deliberately does not provide (structural values make any
|
|
51
|
+
* string spellable here; the roster judges). The name IS the value at the
|
|
52
|
+
* TS surface (the drizzle law); the wire literal already crossed as
|
|
53
|
+
* `{ kind: "handle", handle }`, so the output — and every fingerprint
|
|
54
|
+
* derived from it — is untouched.
|
|
52
55
|
*/
|
|
53
56
|
function handleLiteral(closed, value) {
|
|
54
|
-
if (typeof value !== "
|
|
55
|
-
throw literalShapeError(`a ${closed.name} handle
|
|
57
|
+
if (typeof value !== "string") {
|
|
58
|
+
throw literalShapeError(`a ${closed.name} handle name (string)`, value);
|
|
56
59
|
}
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
throw errors.new(`closed relation ${closed.name} has no handle with id ${value} (roster holds ${closed.handles.length})`);
|
|
60
|
+
if (!closed.handles.includes(value)) {
|
|
61
|
+
throw errors.new(`"${value}" is not a handle of ${closed.name} — the roster is ${closed.handles.join(", ")}`);
|
|
60
62
|
}
|
|
61
|
-
return { kind: "handle", handle };
|
|
63
|
+
return { kind: "handle", handle: value };
|
|
62
64
|
}
|
|
63
65
|
/** Lowers one interval literal at its element type. */
|
|
64
66
|
function intervalLiteral(element, value) {
|
|
@@ -122,10 +124,9 @@ function interval(element, width) {
|
|
|
122
124
|
* Lowers one host literal at its field position to the wire
|
|
123
125
|
* {@link LiteralSpec} — the selection-literal machine ground axioms and
|
|
124
126
|
* `where()` bindings both ride (one machine, same errors — the macro's own
|
|
125
|
-
* rule). A value on a closed-reference field
|
|
126
|
-
*
|
|
127
|
-
*
|
|
128
|
-
* the field's structural kind.
|
|
127
|
+
* rule). A value on a closed-reference field IS its handle NAME (verified
|
|
128
|
+
* against the roster: an unknown name is a construction error); everything
|
|
129
|
+
* else lowers to a plain value tagged by the field's structural kind.
|
|
129
130
|
*/
|
|
130
131
|
function literalOf(field, value) {
|
|
131
132
|
if ("closed" in field) {
|
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":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -27,8 +27,8 @@ export type { Abandon, DeclaredKeyFact, DeltaBuild, MemberRelation, OffendingFac
|
|
|
27
27
|
export { abandon, Db, ErrNewtypeMismatch } from "#db.ts";
|
|
28
28
|
export type { Exhumed, ExhumedAxiom, ExhumedDescriptor, ExhumedFact, ExhumedField, ExhumedRelation } from "#exhume.ts";
|
|
29
29
|
export { ErrExhumeCorruption, ErrExhumeFormatMismatch, ErrExhumeNoDescriptor } from "#exhume.ts";
|
|
30
|
-
export type { AnyFace, Arity, Face, FaceArityMismatch, FaceData, FaceFields, FaceOwner, FaceShapeMismatch, FaceShapes, FaceSource,
|
|
31
|
-
export { on
|
|
30
|
+
export type { AnyFace, Arity, Face, FaceArityMismatch, FaceData, FaceFields, FaceOwner, FaceShapeMismatch, FaceShapes, FaceSource, OwnerOf, SameArity, SameShapes } from "#face.ts";
|
|
31
|
+
export { on } from "#face.ts";
|
|
32
32
|
export type { AnyField, BoolField, BytesField, ClosedIdField, ClosedRoster, FreshU64Field, I64Field, Infer, IntervalField, IntervalValue, StrField, U64Field } from "#fields.ts";
|
|
33
33
|
export { bool, bytes, i64, interval, span, str, u64 } from "#fields.ts";
|
|
34
34
|
export type { ClassesOf, ClassWall, LawfulStatements, RelationClasses, SchemaClasses } from "#law.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;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,YAAY,EACX,SAAS,EACT,iBAAiB,EACjB,QAAQ,EACR,MAAM,EACN,MAAM,EACN,YAAY,EACZ,UAAU,EACV,UAAU,EACV,SAAS,EACT,oBAAoB,EACpB,YAAY,EACZ,cAAc,EACd,MAAM,YAAY,CAAA;AACnB,OAAO,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AACnC,YAAY,EAAE,KAAK,EAAE,MAAM,WAAW,CAAA;AACtC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AACnE,YAAY,EACX,OAAO,EACP,eAAe,EACf,UAAU,EACV,cAAc,EACd,aAAa,EACb,QAAQ,EACR,SAAS,EACT,EAAE,EACF,SAAS,EACT,oBAAoB,EACpB,WAAW,EACX,MAAM,QAAQ,CAAA;AACf,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,kBAAkB,EAAE,MAAM,QAAQ,CAAA;AACxD,YAAY,EACX,OAAO,EACP,YAAY,EACZ,iBAAiB,EACjB,WAAW,EACX,YAAY,EACZ,eAAe,EACf,MAAM,YAAY,CAAA;AACnB,OAAO,EACN,mBAAmB,EACnB,uBAAuB,EACvB,qBAAqB,EACrB,MAAM,YAAY,CAAA;AACnB,YAAY,EACX,OAAO,EACP,KAAK,EACL,IAAI,EACJ,iBAAiB,EACjB,QAAQ,EACR,UAAU,EACV,SAAS,EACT,iBAAiB,EACjB,UAAU,EACV,UAAU,EACV,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -23,7 +23,7 @@ export { closed } from "#closed.ts";
|
|
|
23
23
|
export { atLeast, atMost, between, exactly, none } from "#count.ts";
|
|
24
24
|
export { abandon, Db, ErrNewtypeMismatch } from "#db.ts";
|
|
25
25
|
export { ErrExhumeCorruption, ErrExhumeFormatMismatch, ErrExhumeNoDescriptor } from "#exhume.ts";
|
|
26
|
-
export { on
|
|
26
|
+
export { on } from "#face.ts";
|
|
27
27
|
export { bool, bytes, i64, interval, span, str, u64 } from "#fields.ts";
|
|
28
28
|
export { lower, lowerClosed, lowerRelation } from "#lower.ts";
|
|
29
29
|
export { ALLEN, allen, and, covers, eq, ge, gt, le, lt, ne, not, or, pointIn } from "#query/atom.ts";
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;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,MAAM,QAAQ,CAAA;AASxD,OAAO,EACN,mBAAmB,EACnB,uBAAuB,EACvB,qBAAqB,EACrB,MAAM,YAAY,CAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;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,MAAM,QAAQ,CAAA;AASxD,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;AAuB7D,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAA;AAoBpG,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAA;AAEnD,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AA8B7C,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/marshal.d.ts
CHANGED
|
@@ -13,8 +13,20 @@
|
|
|
13
13
|
* the engine admitted IS a legal fact of its relation (the same trust
|
|
14
14
|
* direction as Rust's typed readback). Shape mismatches here are genuine
|
|
15
15
|
* failures and THROW typed; they are never domain data.
|
|
16
|
+
*
|
|
17
|
+
* THE CLOSED BIJECTION (0.4.0): a closed-referencing cell crosses this
|
|
18
|
+
* boundary as its handle NAME — the write side lowers name → u64 row id
|
|
19
|
+
* (declaration order = row ids, the sealed roster's own law, ≤ 256 rows),
|
|
20
|
+
* the read side lifts id → name, and both directions are total and static
|
|
21
|
+
* over the roster. An unknown name is a pointed THROW at the write seam —
|
|
22
|
+
* a deliberate UPGRADE over 0.3.0, where any bigint sailed through the
|
|
23
|
+
* marshal to a commit-time containment violation; the wrong spelling now
|
|
24
|
+
* dies here, before the engine ever sees the row. An out-of-roster id on
|
|
25
|
+
* the read side (reachable only in a store whose closed-typed column was
|
|
26
|
+
* never pinned by its containment law) is equally pointed — never a
|
|
27
|
+
* silent fallback, never `undefined`.
|
|
16
28
|
*/
|
|
17
|
-
import type { AnyField } from "#fields.ts";
|
|
29
|
+
import type { AnyField, ClosedRoster } from "#fields.ts";
|
|
18
30
|
import type { FactValue } from "#native.ts";
|
|
19
31
|
import type { AnyRelation, Fact, FreshKeys, RelationData } from "#relation.ts";
|
|
20
32
|
/**
|
|
@@ -54,12 +66,25 @@ type KeyFact<R extends AnyRelation> = [FreshKeys<R>] extends [never] ? Partial<F
|
|
|
54
66
|
* signature) enter the name-directed marshaling below, without a cast.
|
|
55
67
|
*/
|
|
56
68
|
declare function recordOf(fact: object): Record<string, unknown>;
|
|
69
|
+
/**
|
|
70
|
+
* The read half of the closed bijection: one u64 row id back to its handle
|
|
71
|
+
* NAME (`Number(cell)` is safe — the sealed extension holds at most 256
|
|
72
|
+
* rows, engine law). An id outside the roster THROWS pointed, never a
|
|
73
|
+
* silent fallback and never `undefined`: the state is reachable only in a
|
|
74
|
+
* store whose closed-typed column was never pinned by its containment law,
|
|
75
|
+
* and the error names that missing piece.
|
|
76
|
+
*/
|
|
77
|
+
declare function handleOf(context: string, closed: ClosedRoster, cell: FactValue): string;
|
|
57
78
|
/**
|
|
58
79
|
* Marshals one host cell at its field position to the natural wire value,
|
|
59
80
|
* schema-directed by the field descriptor's structural kind (never
|
|
60
|
-
* guessed).
|
|
61
|
-
*
|
|
62
|
-
*
|
|
81
|
+
* guessed). A closed-referencing cell arrives as its handle NAME and
|
|
82
|
+
* lowers through {@link closedCellOf} — the arm precedes the switch
|
|
83
|
+
* because a closed reference is structurally a u64 descriptor plus the
|
|
84
|
+
* roster (the same precedence `Infer` pins at the type level). Everything
|
|
85
|
+
* else is bare, so the runtime values ARE the wire's natural JS values;
|
|
86
|
+
* widths and domain labels are the engine's own judgment at the write
|
|
87
|
+
* boundary.
|
|
63
88
|
*/
|
|
64
89
|
declare function cellOf(context: string, field: AnyField, value: unknown): FactValue;
|
|
65
90
|
/**
|
|
@@ -86,9 +111,11 @@ declare function isMintedFresh<R extends AnyRelation>(relation: R, minted: Reado
|
|
|
86
111
|
/**
|
|
87
112
|
* Unmarshals one positional row to the relation's named, frozen fact object
|
|
88
113
|
* of bare structural values — the inverse of {@link rowOf},
|
|
89
|
-
* ordinal-directed by the same declaration order.
|
|
114
|
+
* ordinal-directed by the same declaration order. Closed-referencing cells
|
|
115
|
+
* lift id → handle NAME through {@link handleOf} (the read half of the
|
|
116
|
+
* bijection), so every fact a user sees speaks the roster's vocabulary.
|
|
90
117
|
*/
|
|
91
118
|
declare function factOf<R extends AnyRelation>(relation: R, row: readonly FactValue[]): Fact<R>;
|
|
92
119
|
export type { KeyFact, Minted };
|
|
93
|
-
export { cellOf, factOf, isFreshField, isMintedFresh, keyRowOf, recordOf, rowOf };
|
|
120
|
+
export { cellOf, factOf, handleOf, isFreshField, isMintedFresh, keyRowOf, recordOf, rowOf };
|
|
94
121
|
//# sourceMappingURL=marshal.d.ts.map
|
package/dist/marshal.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"marshal.d.ts","sourceRoot":"","sources":["../src/marshal.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"marshal.d.ts","sourceRoot":"","sources":["../src/marshal.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAGH,OAAO,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AACxD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AAC3C,OAAO,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAE9E;;;;;GAKG;AACH,iBAAS,YAAY,CAAC,KAAK,EAAE,QAAQ,GAAG,OAAO,CAE9C;AAED;;;;GAIG;AACH,KAAK,MAAM,CAAC,CAAC,SAAS,WAAW,IAAI;KAAG,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CAAE,CAAA;AAExE;;;;;;;;;;;;GAYG;AACH,KAAK,OAAO,CAAC,CAAC,SAAS,WAAW,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,GACjE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAChB;KAAG,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CAAE,CAAA;AAmBtC;;;;GAIG;AACH,iBAAS,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAEvD;AAqBD;;;;;;;GAOG;AACH,iBAAS,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,IAAI,EAAE,SAAS,GAAG,MAAM,CAWhF;AAED;;;;;;;;;;GAUG;AACH,iBAAS,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,GAAG,SAAS,CAkD3E;AAED;;;;;GAKG;AACH,iBAAS,KAAK,CAAC,QAAQ,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GAAG,SAAS,EAAE,CAQ3F;AAED;;;;;GAKG;AACH,iBAAS,QAAQ,CAChB,QAAQ,EAAE,YAAY,EACtB,UAAU,EAAE,SAAS,MAAM,EAAE,EAC7B,GAAG,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GACpC,SAAS,EAAE,CAgBb;AAiBD;;;;;GAKG;AACH,iBAAS,aAAa,CAAC,CAAC,SAAS,WAAW,EAC3C,QAAQ,EAAE,CAAC,EACX,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,GACzC,MAAM,IAAI,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAI3D;AAED;;;;;;GAMG;AACH,iBAAS,MAAM,CAAC,CAAC,SAAS,WAAW,EAAE,QAAQ,EAAE,CAAC,EAAE,GAAG,EAAE,SAAS,SAAS,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,CAuBtF;AAED,YAAY,EAAE,OAAO,EAAE,MAAM,EAAE,CAAA;AAC/B,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,EAAE,aAAa,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAA"}
|
package/dist/marshal.js
CHANGED
|
@@ -13,6 +13,18 @@
|
|
|
13
13
|
* the engine admitted IS a legal fact of its relation (the same trust
|
|
14
14
|
* direction as Rust's typed readback). Shape mismatches here are genuine
|
|
15
15
|
* failures and THROW typed; they are never domain data.
|
|
16
|
+
*
|
|
17
|
+
* THE CLOSED BIJECTION (0.4.0): a closed-referencing cell crosses this
|
|
18
|
+
* boundary as its handle NAME — the write side lowers name → u64 row id
|
|
19
|
+
* (declaration order = row ids, the sealed roster's own law, ≤ 256 rows),
|
|
20
|
+
* the read side lifts id → name, and both directions are total and static
|
|
21
|
+
* over the roster. An unknown name is a pointed THROW at the write seam —
|
|
22
|
+
* a deliberate UPGRADE over 0.3.0, where any bigint sailed through the
|
|
23
|
+
* marshal to a commit-time containment violation; the wrong spelling now
|
|
24
|
+
* dies here, before the engine ever sees the row. An out-of-roster id on
|
|
25
|
+
* the read side (reachable only in a store whose closed-typed column was
|
|
26
|
+
* never pinned by its containment law) is equally pointed — never a
|
|
27
|
+
* silent fallback, never `undefined`.
|
|
16
28
|
*/
|
|
17
29
|
import * as errors from "@superbuilders/errors";
|
|
18
30
|
/**
|
|
@@ -45,14 +57,58 @@ function isIntervalCell(value) {
|
|
|
45
57
|
function recordOf(fact) {
|
|
46
58
|
return Object.fromEntries(Object.entries(fact));
|
|
47
59
|
}
|
|
60
|
+
/**
|
|
61
|
+
* The write half of the closed bijection: one handle NAME to its u64 row
|
|
62
|
+
* id (declaration order = row ids — the engine's own minting of the
|
|
63
|
+
* sealed extension). An unknown name is a pointed refusal naming the
|
|
64
|
+
* vocabulary and its roster — the 0.4.0 upgrade over any-bigint-compiles:
|
|
65
|
+
* the wrong spelling dies at the marshal, never as a commit-time
|
|
66
|
+
* violation. `indexOf` is the whole machine (the roster is ≤ 256 rows,
|
|
67
|
+
* engine law — no map is warranted).
|
|
68
|
+
*/
|
|
69
|
+
function closedCellOf(context, closed, name) {
|
|
70
|
+
const id = closed.handles.indexOf(name);
|
|
71
|
+
if (id === -1) {
|
|
72
|
+
throw errors.new(`${context}: "${name}" is not a handle of ${closed.name} — the roster is ${closed.handles.join(", ")}`);
|
|
73
|
+
}
|
|
74
|
+
return BigInt(id);
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* The read half of the closed bijection: one u64 row id back to its handle
|
|
78
|
+
* NAME (`Number(cell)` is safe — the sealed extension holds at most 256
|
|
79
|
+
* rows, engine law). An id outside the roster THROWS pointed, never a
|
|
80
|
+
* silent fallback and never `undefined`: the state is reachable only in a
|
|
81
|
+
* store whose closed-typed column was never pinned by its containment law,
|
|
82
|
+
* and the error names that missing piece.
|
|
83
|
+
*/
|
|
84
|
+
function handleOf(context, closed, cell) {
|
|
85
|
+
if (typeof cell !== "bigint") {
|
|
86
|
+
throw cellShapeError(context, `a ${closed.name} handle id (bigint)`, cell);
|
|
87
|
+
}
|
|
88
|
+
const handle = closed.handles[Number(cell)];
|
|
89
|
+
if (handle === undefined) {
|
|
90
|
+
throw errors.new(`${context}: id ${cell} is outside the ${closed.name} roster (${closed.handles.join(", ")}) — the column types ${closed.name} but no law pins it — a containment statement is the missing piece`);
|
|
91
|
+
}
|
|
92
|
+
return handle;
|
|
93
|
+
}
|
|
48
94
|
/**
|
|
49
95
|
* Marshals one host cell at its field position to the natural wire value,
|
|
50
96
|
* schema-directed by the field descriptor's structural kind (never
|
|
51
|
-
* guessed).
|
|
52
|
-
*
|
|
53
|
-
*
|
|
97
|
+
* guessed). A closed-referencing cell arrives as its handle NAME and
|
|
98
|
+
* lowers through {@link closedCellOf} — the arm precedes the switch
|
|
99
|
+
* because a closed reference is structurally a u64 descriptor plus the
|
|
100
|
+
* roster (the same precedence `Infer` pins at the type level). Everything
|
|
101
|
+
* else is bare, so the runtime values ARE the wire's natural JS values;
|
|
102
|
+
* widths and domain labels are the engine's own judgment at the write
|
|
103
|
+
* boundary.
|
|
54
104
|
*/
|
|
55
105
|
function cellOf(context, field, value) {
|
|
106
|
+
if ("closed" in field) {
|
|
107
|
+
if (typeof value !== "string") {
|
|
108
|
+
throw cellShapeError(context, `a ${field.closed.name} handle name (string)`, value);
|
|
109
|
+
}
|
|
110
|
+
return closedCellOf(context, field.closed, value);
|
|
111
|
+
}
|
|
56
112
|
switch (field.kind) {
|
|
57
113
|
case "bool": {
|
|
58
114
|
if (typeof value !== "boolean") {
|
|
@@ -158,7 +214,9 @@ function isMintedFresh(relation, minted) {
|
|
|
158
214
|
/**
|
|
159
215
|
* Unmarshals one positional row to the relation's named, frozen fact object
|
|
160
216
|
* of bare structural values — the inverse of {@link rowOf},
|
|
161
|
-
* ordinal-directed by the same declaration order.
|
|
217
|
+
* ordinal-directed by the same declaration order. Closed-referencing cells
|
|
218
|
+
* lift id → handle NAME through {@link handleOf} (the read half of the
|
|
219
|
+
* bijection), so every fact a user sees speaks the roster's vocabulary.
|
|
162
220
|
*/
|
|
163
221
|
function factOf(relation, row) {
|
|
164
222
|
const data = relation.data;
|
|
@@ -171,7 +229,10 @@ function factOf(relation, row) {
|
|
|
171
229
|
if (cell === undefined) {
|
|
172
230
|
throw errors.new(`relation ${data.name}: row cell ${ordinal} (${declared.name}) is absent`);
|
|
173
231
|
}
|
|
174
|
-
decoded[declared.name] =
|
|
232
|
+
decoded[declared.name] =
|
|
233
|
+
"closed" in declared.field
|
|
234
|
+
? handleOf(`relation ${data.name} field ${declared.name}`, declared.field.closed, cell)
|
|
235
|
+
: cell;
|
|
175
236
|
});
|
|
176
237
|
Object.freeze(decoded);
|
|
177
238
|
if (!isCompleteFact(relation, decoded)) {
|
|
@@ -179,5 +240,5 @@ function factOf(relation, row) {
|
|
|
179
240
|
}
|
|
180
241
|
return decoded;
|
|
181
242
|
}
|
|
182
|
-
export { cellOf, factOf, isFreshField, isMintedFresh, keyRowOf, recordOf, rowOf };
|
|
243
|
+
export { cellOf, factOf, handleOf, isFreshField, isMintedFresh, keyRowOf, recordOf, rowOf };
|
|
183
244
|
//# sourceMappingURL=marshal.js.map
|
package/dist/marshal.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"marshal.js","sourceRoot":"","sources":["../src/marshal.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"marshal.js","sourceRoot":"","sources":["../src/marshal.ts"],"names":[],"mappings":"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"}
|