@bjornpagen/bumbledb 0.14.0 → 0.17.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 +58 -62
- package/README.md +82 -56
- package/dist/capacity.d.ts +24 -136
- package/dist/capacity.d.ts.map +1 -1
- package/dist/capacity.js +18 -40
- package/dist/capacity.js.map +1 -1
- package/dist/closed.d.ts +0 -156
- package/dist/closed.d.ts.map +1 -1
- package/dist/closed.js +0 -104
- package/dist/closed.js.map +1 -1
- package/dist/db.d.ts +93 -290
- package/dist/db.d.ts.map +1 -1
- package/dist/db.js +713 -556
- package/dist/db.js.map +1 -1
- package/dist/face.d.ts +0 -133
- package/dist/face.d.ts.map +1 -1
- package/dist/face.js +0 -33
- package/dist/face.js.map +1 -1
- package/dist/fields.d.ts +1 -145
- package/dist/fields.d.ts.map +1 -1
- package/dist/fields.js +2 -91
- package/dist/fields.js.map +1 -1
- package/dist/index.d.ts +13 -23
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +11 -20
- package/dist/index.js.map +1 -1
- package/dist/law.d.ts +111 -93
- package/dist/law.d.ts.map +1 -1
- package/dist/law.js +23 -27
- package/dist/law.js.map +1 -1
- package/dist/lower.d.ts +9 -35
- package/dist/lower.d.ts.map +1 -1
- package/dist/lower.js +8 -53
- package/dist/lower.js.map +1 -1
- package/dist/marshal.d.ts +0 -65
- package/dist/marshal.d.ts.map +1 -1
- package/dist/marshal.js +0 -72
- package/dist/marshal.js.map +1 -1
- package/dist/native.d.ts +97 -390
- package/dist/native.d.ts.map +1 -1
- package/dist/native.js +39 -61
- package/dist/native.js.map +1 -1
- package/dist/query/atom.d.ts +10 -276
- package/dist/query/atom.d.ts.map +1 -1
- package/dist/query/atom.js +1 -96
- package/dist/query/atom.js.map +1 -1
- package/dist/query/find.d.ts +10 -76
- package/dist/query/find.d.ts.map +1 -1
- package/dist/query/find.js +0 -30
- package/dist/query/find.js.map +1 -1
- package/dist/query/lower.d.ts +64 -146
- package/dist/query/lower.d.ts.map +1 -1
- package/dist/query/lower.js +19 -256
- package/dist/query/lower.js.map +1 -1
- package/dist/query/parse-ir.d.ts +0 -7
- package/dist/query/parse-ir.d.ts.map +1 -1
- package/dist/query/parse-ir.js +1 -13
- package/dist/query/parse-ir.js.map +1 -1
- package/dist/query/run.d.ts +0 -36
- package/dist/query/run.d.ts.map +1 -1
- package/dist/query/run.js +0 -44
- package/dist/query/run.js.map +1 -1
- package/dist/query/scope.d.ts +24 -180
- package/dist/query/scope.d.ts.map +1 -1
- package/dist/query/scope.js +2 -66
- package/dist/query/scope.js.map +1 -1
- package/dist/relation.d.ts +2 -50
- package/dist/relation.d.ts.map +1 -1
- package/dist/relation.js +2 -37
- package/dist/relation.js.map +1 -1
- package/dist/schema.d.ts +13 -63
- package/dist/schema.d.ts.map +1 -1
- package/dist/schema.js +118 -92
- package/dist/schema.js.map +1 -1
- package/dist/spec.d.ts +1 -140
- package/dist/spec.d.ts.map +1 -1
- package/dist/spec.js +1 -68
- package/dist/spec.js.map +1 -1
- package/dist/statements.d.ts +6 -137
- package/dist/statements.d.ts.map +1 -1
- package/dist/statements.js +16 -119
- package/dist/statements.js.map +1 -1
- package/package.json +3 -3
- package/src/capacity.ts +26 -140
- package/src/closed.ts +5 -206
- package/src/db.ts +997 -854
- package/src/face.ts +0 -142
- package/src/fields.ts +4 -172
- package/src/index.ts +32 -35
- package/src/law.ts +201 -129
- package/src/lower.ts +8 -53
- package/src/marshal.ts +1 -85
- package/src/native.ts +192 -413
- package/src/query/atom.ts +26 -313
- package/src/query/find.ts +24 -110
- package/src/query/lower.ts +132 -377
- package/src/query/parse-ir.ts +1 -14
- package/src/query/run.ts +0 -45
- package/src/query/scope.ts +25 -186
- package/src/relation.ts +2 -66
- package/src/schema.ts +143 -122
- package/src/spec.ts +1 -160
- package/src/statements.ts +22 -174
- package/dist/exhume.d.ts +0 -143
- package/dist/exhume.d.ts.map +0 -1
- package/dist/exhume.js +0 -166
- package/dist/exhume.js.map +0 -1
- package/src/exhume.ts +0 -267
package/dist/relation.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"relation.js","sourceRoot":"","sources":["../src/relation.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,MAAM,MAAM,uBAAuB,CAAA;AAC/C,OAAO,EAAiB,yBAAyB,EAAE,uBAAuB,EAAc,SAAS,EAAE,MAAM,YAAY,CAAA;AACrH,OAAO,EAAyC,aAAa,EAAE,MAAM,UAAU,CAAA;AAE/E
|
|
1
|
+
{"version":3,"file":"relation.js","sourceRoot":"","sources":["../src/relation.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,MAAM,MAAM,uBAAuB,CAAA;AAC/C,OAAO,EAAiB,yBAAyB,EAAE,uBAAuB,EAAc,SAAS,EAAE,MAAM,YAAY,CAAA;AACrH,OAAO,EAAyC,aAAa,EAAE,MAAM,UAAU,CAAA;AAE/E,SAAS,YAAY,CAAC,OAAe,EAAE,KAAe,EAAE,KAAc;IACrE,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QAC1B,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACtB,MAAM,MAAM,CAAC,GAAG,CACf,KAAK,CAAC,MAAM,KAAK,CAAC;gBACjB,CAAC,CAAC,GAAG,OAAO,uEAAuE;gBACnF,CAAC,CAAC,GAAG,OAAO,wIAAwI,CACrJ,CAAA;QACF,CAAC;QACD,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAA;QAC9B,MAAM,QAAQ,GAAkB,KAAK,CAAC,GAAG,CAAC,SAAS,eAAe,CAAC,OAAgB;YAClF,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAA;YACxD,MAAM,QAAQ,GAAG,aAAa,CAAC,OAAO,CAAC,CAAA;YACvC,IAAI,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;gBACxB,MAAM,MAAM,CAAC,GAAG,CACf,GAAG,OAAO,4BAA4B,QAAQ,iFAAiF,CAC/H,CAAA;YACF,CAAC;YACD,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;YAClB,OAAO,OAAO,CAAA;QACf,CAAC,CAAC,CAAA;QACF,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAA;IAC1E,CAAC;IACD,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,CAAA;AACvF,CAAC;AAED,SAAS,gBAAgB,CACxB,IAAY,EACZ,OAAiC,EACjC,OAAkD;IAElD,MAAM,QAAQ,GAAuB,EAAE,CAAA;IACvC,KAAK,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC,IAAI,OAAO,EAAE,CAAC;QAC1C,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACzB,SAAQ;QACT,CAAC;QACD,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,SAAS,MAAM,CAAC,SAAS;YACtD,OAAO,SAAS,CAAC,IAAI,KAAK,SAAS,CAAA;QACpC,CAAC,CAAC,CAAA;QACF,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YAC5B,MAAM,MAAM,CAAC,GAAG,CAAC,YAAY,IAAI,iBAAiB,SAAS,EAAE,CAAC,CAAA;QAC/D,CAAC;QACD,QAAQ,CAAC,IAAI,CACZ,MAAM,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,YAAY,CAAC,YAAY,IAAI,IAAI,SAAS,EAAE,EAAE,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE,CAAC,CAC9G,CAAA;IACF,CAAC;IACD,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC3B,MAAM,MAAM,CAAC,GAAG,CACf,YAAY,IAAI,yIAAyI,CACzJ,CAAA;IACF,CAAC;IACD,OAAO,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;AAC/B,CAAC;AAmDD,SAAS,QAAQ,CAChB,IAAU,EACV,MAAc;IAEd,yBAAyB,CAAC,UAAU,EAAE,IAAI,CAAC,CAAA;IAC3C,uBAAuB,CAAC,YAAY,IAAI,SAAS,EAAE,MAAM,CAAC,CAAA;IAC1D,MAAM,OAAO,GAAoB,EAAE,CAAA;IACnC,KAAK,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QACzD,yBAAyB,CAAC,YAAY,IAAI,QAAQ,EAAE,SAAS,CAAC,CAAA;QAC9D,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC,CAAA;IACxD,CAAC;IACD,MAAM,IAAI,GAAiB,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;IAClF,MAAM,MAAM,GAAkD,EAAE,KAAK,EAAE,SAAS,EAAE,CAAA;IAClF,SAAS,KAAK,CAAC,SAAiC;QAC/C,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAA;QAC1B,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACzB,MAAM,MAAM,CAAC,GAAG,CAAC,YAAY,IAAI,qDAAqD,CAAC,CAAA;QACxF,CAAC;QACD,OAAO,MAAM,CAAC,MAAM,CAAC;YACpB,QAAQ,EAAE,KAAK;YACf,SAAS,EAAE,gBAAgB,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;SACrE,CAAC,CAAA;IACH,CAAC;IACD,MAAM,KAAK,GAA2B,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAA;IAC1E,MAAM,CAAC,KAAK,GAAG,KAAK,CAAA;IACpB,OAAO,KAAK,CAAA;AACb,CAAC;AAgBD,OAAO,EAAE,QAAQ,EAAE,gBAAgB,EAAE,CAAA"}
|
package/dist/schema.d.ts
CHANGED
|
@@ -1,87 +1,37 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* `schema
|
|
2
|
+
* `schema` — assembles relations and statements into a theory value (the
|
|
3
3
|
* `Theory` analog; what `Db.create`/`Db.open` take). Construction-time
|
|
4
|
-
* validation is the macro-EXPANSION-boundary analog
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
4
|
+
* validation is the macro-EXPANSION-boundary analog: membership,
|
|
5
|
+
* implied-key duplicates, duplicate statements, a belt-and-braces handle
|
|
6
|
+
* re-verification — and the TARGET-KEY WALL ({@link verifyTargetKeys}),
|
|
7
|
+
* the value tier of the two-tier containment law
|
|
8
|
+
* (60-containment-parity): every containment/mirrors/capacity target
|
|
9
|
+
* projection must set-match a key of its relation, judged HERE with the
|
|
10
|
+
* engine's exact rule so `lower` never emits an engine-refused
|
|
11
|
+
* containment. The type tier is `law.ts`'s `TargetKeyWall` (best effort,
|
|
12
|
+
* statically known tuples); every OTHER semantic judgment (key-internal
|
|
13
|
+
* legality, fresh-on-u64, …) stays the engine's `SchemaError` at
|
|
14
|
+
* `Db.create` — the engine is the final authority for every boundary,
|
|
15
|
+
* this wall just makes the SDK agree with it first.
|
|
10
16
|
*/
|
|
11
17
|
import type { AnyClosed } from "./closed.js";
|
|
12
18
|
import { type ClassesOf, type LawfulStatements, type SchemaClasses } from "./law.js";
|
|
13
19
|
import type { AnyRelation } from "./relation.js";
|
|
14
20
|
import { type Statement } from "./statements.js";
|
|
15
|
-
/** One member of a schema's relation record. */
|
|
16
21
|
type SchemaRelation = AnyRelation | AnyClosed;
|
|
17
|
-
/** The relation record a schema is generic over — what `Db` and queries key on. */
|
|
18
22
|
type SchemaRelations = Record<string, SchemaRelation>;
|
|
19
|
-
/**
|
|
20
|
-
* A theory value: named relations, the DECLARED dependency statements, and
|
|
21
|
-
* the LAW-COMPUTED class map (`classes` — relation → field → class name,
|
|
22
|
-
* `undefined` = bare). The class map is THE domain authority: `schema()`
|
|
23
|
-
* computes it FROM the statement list at both tiers (the type through
|
|
24
|
-
* {@link ClassesOf}, the value through the union-find twin), queries
|
|
25
|
-
* compare class names off it, and the wire lowering emits it as the spec
|
|
26
|
-
* `newtype` labels. Nothing is ever synthesized: `statements` is exactly
|
|
27
|
-
* the declared list, in written order.
|
|
28
|
-
*/
|
|
29
23
|
interface Schema<Rels extends SchemaRelations, Classes extends SchemaClasses = SchemaClasses> {
|
|
30
24
|
readonly name: string;
|
|
31
25
|
readonly relations: Rels;
|
|
32
26
|
readonly statements: readonly Statement[];
|
|
33
27
|
readonly classes: Classes;
|
|
34
28
|
}
|
|
35
|
-
/** Any schema value, whatever its relation record. */
|
|
36
29
|
type AnySchema = Schema<SchemaRelations>;
|
|
37
|
-
/**
|
|
38
|
-
* Forces the class map to EVALUATE at the `schema()` boundary: a two-level
|
|
39
|
-
* mapped copy, type-identical to `C` — but instantiation resolves it to
|
|
40
|
-
* the finished relation → field → class record, so hovering a schema value
|
|
41
|
-
* (or anything carrying its `Classes` parameter — queries, `Db`) shows the
|
|
42
|
-
* computed record instead of the unevaluated `ClassesOf<...>` application
|
|
43
|
-
* dragging the whole statement-tuple type along. The conditional wrapper
|
|
44
|
-
* is the display mechanism, not a judgment: resolving it drops the alias
|
|
45
|
-
* reference, so tsc renders the finished record (measured against tsc's
|
|
46
|
-
* own type rendering; a bare mapped alias still displays by name).
|
|
47
|
-
* Display-only by construction; `classesComplete` guards the same type at
|
|
48
|
-
* the value tier.
|
|
49
|
-
*/
|
|
50
30
|
type EvaluatedClasses<C extends SchemaClasses> = C extends SchemaClasses ? {
|
|
51
31
|
readonly [N in keyof C]: {
|
|
52
32
|
readonly [F in keyof C[N]]: C[N][F];
|
|
53
33
|
};
|
|
54
34
|
} : never;
|
|
55
|
-
/**
|
|
56
|
-
* Assembles a theory:
|
|
57
|
-
* `schema("Ledger", { Kind, Account, Holder }, [ ...statements ])`.
|
|
58
|
-
*
|
|
59
|
-
* Rejected here, each with the offending statement rendered canonically:
|
|
60
|
-
* a record key differing from its relation's declared name; a statement
|
|
61
|
-
* whose relation is not (identically) a member of the record; an explicit
|
|
62
|
-
* duplicate of a fresh-implied or closedness-implied key (macro parity:
|
|
63
|
-
* "redundant here — and rejected as a duplicate"); a duplicate statement
|
|
64
|
-
* (two statements rendering to one canonical utterance ARE one judgment);
|
|
65
|
-
* a handle selection that its roster does not hold (belt-and-braces —
|
|
66
|
-
* the type level already blocks it); and a handle selection whose closed
|
|
67
|
-
* reference no declared containment resolves (the engine's canonical
|
|
68
|
-
* renderer would print the raw row id where `renderStatement` prints the
|
|
69
|
-
* handle — the paste-back law demands the two spellings agree).
|
|
70
|
-
*
|
|
71
|
-
* The fresh-implied and closed auto-keys are NOT added to the statement
|
|
72
|
-
* list: the engine materializes them itself, in its own pinned order
|
|
73
|
-
* (`SchemaDescriptor::materialized_statements`), and restating them would
|
|
74
|
-
* double them.
|
|
75
|
-
*
|
|
76
|
-
* THE LAW-TYPING happens here too (rulings 2/3 — the laws type the
|
|
77
|
-
* columns): the statement list induces the equivalence classes over field
|
|
78
|
-
* slots, at the TYPE level ({@link ClassesOf} — spell the statement list
|
|
79
|
-
* inline so the tuple type stays precise) and at runtime (the union-find
|
|
80
|
-
* twin), and the one-generator-per-class wall holds at both tiers — the
|
|
81
|
-
* {@link LawfulStatements} verdict lands the compile error on the
|
|
82
|
-
* statements argument; `computeClasses` throws the same content naming the
|
|
83
|
-
* exact statement.
|
|
84
|
-
*/
|
|
85
35
|
declare function schema<const Rels extends SchemaRelations, const Stmts extends readonly Statement[]>(name: string, relations: Rels, statements: Stmts & LawfulStatements<Rels, Stmts>): Schema<Rels, EvaluatedClasses<ClassesOf<Rels, Stmts>>>;
|
|
86
36
|
export type { AnySchema, Schema, SchemaRelation, SchemaRelations };
|
|
87
37
|
export { schema };
|
package/dist/schema.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAGH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AAI3C,OAAO,EAAE,KAAK,SAAS,EAAmC,KAAK,gBAAgB,EAAE,KAAK,aAAa,EAAE,MAAM,SAAS,CAAA;AACpH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAE/C,OAAO,EAAgC,KAAK,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAoR7E,KAAK,cAAc,GAAG,WAAW,GAAG,SAAS,CAAA;AAE7C,KAAK,eAAe,GAAG,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAA;AAErD,UAAU,MAAM,CAAC,IAAI,SAAS,eAAe,EAAE,OAAO,SAAS,aAAa,GAAG,aAAa;IAC3F,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAA;IACxB,QAAQ,CAAC,UAAU,EAAE,SAAS,SAAS,EAAE,CAAA;IACzC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAA;CACzB;AAED,KAAK,SAAS,GAAG,MAAM,CAAC,eAAe,CAAC,CAAA;AAExC,KAAK,gBAAgB,CAAC,CAAC,SAAS,aAAa,IAAI,CAAC,SAAS,aAAa,GACrE;IAAE,QAAQ,EAAE,CAAC,IAAI,MAAM,CAAC,GAAG;QAAE,QAAQ,EAAE,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;KAAE;CAAE,GACpE,KAAK,CAAA;AAER,iBAAS,MAAM,CAAC,KAAK,CAAC,IAAI,SAAS,eAAe,EAAE,KAAK,CAAC,KAAK,SAAS,SAAS,SAAS,EAAE,EAC3F,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,IAAI,EACf,UAAU,EAAE,KAAK,GAAG,gBAAgB,CAAC,IAAI,EAAE,KAAK,CAAC,GAC/C,MAAM,CAAC,IAAI,EAAE,gBAAgB,CAAC,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CA6BxD;AAED,YAAY,EAAE,SAAS,EAAE,MAAM,EAAE,cAAc,EAAE,eAAe,EAAE,CAAA;AAClE,OAAO,EAAE,MAAM,EAAE,CAAA"}
|
package/dist/schema.js
CHANGED
|
@@ -1,46 +1,51 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* `schema
|
|
2
|
+
* `schema` — assembles relations and statements into a theory value (the
|
|
3
3
|
* `Theory` analog; what `Db.create`/`Db.open` take). Construction-time
|
|
4
|
-
* validation is the macro-EXPANSION-boundary analog
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
4
|
+
* validation is the macro-EXPANSION-boundary analog: membership,
|
|
5
|
+
* implied-key duplicates, duplicate statements, a belt-and-braces handle
|
|
6
|
+
* re-verification — and the TARGET-KEY WALL ({@link verifyTargetKeys}),
|
|
7
|
+
* the value tier of the two-tier containment law
|
|
8
|
+
* (60-containment-parity): every containment/mirrors/capacity target
|
|
9
|
+
* projection must set-match a key of its relation, judged HERE with the
|
|
10
|
+
* engine's exact rule so `lower` never emits an engine-refused
|
|
11
|
+
* containment. The type tier is `law.ts`'s `TargetKeyWall` (best effort,
|
|
12
|
+
* statically known tuples); every OTHER semantic judgment (key-internal
|
|
13
|
+
* legality, fresh-on-u64, …) stays the engine's `SchemaError` at
|
|
14
|
+
* `Db.create` — the engine is the final authority for every boundary,
|
|
15
|
+
* this wall just makes the SDK agree with it first.
|
|
10
16
|
*/
|
|
11
17
|
import * as errors from "@superbuilders/errors";
|
|
12
18
|
import { isClosedMember, sealedFieldOf } from "#closed.ts";
|
|
13
19
|
import { assertDeclarationOrderKey, assertDeclarationRecord, rosterOf } from "#fields.ts";
|
|
14
20
|
import { classesComplete, computeClasses } from "#law.ts";
|
|
15
21
|
import { isStatement, renderStatement } from "#statements.ts";
|
|
16
|
-
/**
|
|
17
|
-
* Validates the relation record and collects the implied keys: the
|
|
18
|
-
* fresh-implied `R(field) -> R` per minted field and the closed auto-key
|
|
19
|
-
* `R(id) -> R` per closed relation, each rendered canonically so an
|
|
20
|
-
* explicit duplicate is caught by string identity with the renderer as the
|
|
21
|
-
* single spelling authority.
|
|
22
|
-
*/
|
|
23
22
|
function collectImplied(name, relations) {
|
|
24
23
|
assertDeclarationRecord(`schema ${name} relations`, relations);
|
|
25
|
-
const
|
|
24
|
+
const rendered = new Set();
|
|
25
|
+
const roster = new Map();
|
|
26
26
|
for (const [recordKey, member] of Object.entries(relations)) {
|
|
27
27
|
assertDeclarationOrderKey(`schema ${name} relation`, recordKey);
|
|
28
28
|
if (member.name !== recordKey) {
|
|
29
29
|
throw errors.new(`schema ${name}: record key ${recordKey} holds relation ${member.name} — the key must equal the relation's declared name`);
|
|
30
30
|
}
|
|
31
|
+
const projections = [];
|
|
31
32
|
if (isClosedMember(member)) {
|
|
32
|
-
|
|
33
|
-
continue;
|
|
33
|
+
projections.push(Object.freeze(["id"]));
|
|
34
34
|
}
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
35
|
+
else {
|
|
36
|
+
for (const declared of member.data.fields) {
|
|
37
|
+
if ("fresh" in declared.field && declared.field.fresh === true) {
|
|
38
|
+
projections.push(Object.freeze([declared.name]));
|
|
39
|
+
}
|
|
38
40
|
}
|
|
39
41
|
}
|
|
42
|
+
for (const projection of projections) {
|
|
43
|
+
rendered.add(`${member.name}(${projection.join(", ")}) -> ${member.name}`);
|
|
44
|
+
}
|
|
45
|
+
roster.set(member.name, Object.freeze(projections));
|
|
40
46
|
}
|
|
41
|
-
return
|
|
47
|
+
return { rendered, roster };
|
|
42
48
|
}
|
|
43
|
-
/** The relation values a statement addresses, for membership checking. */
|
|
44
49
|
function statementOwners(statement) {
|
|
45
50
|
const data = statement.data;
|
|
46
51
|
if (data.kind === "key") {
|
|
@@ -48,11 +53,6 @@ function statementOwners(statement) {
|
|
|
48
53
|
}
|
|
49
54
|
return [data.source.owner, data.target.owner];
|
|
50
55
|
}
|
|
51
|
-
/**
|
|
52
|
-
* Requires every relation a statement addresses to be the IDENTICAL value
|
|
53
|
-
* the schema record declares — same-name-different-value is a forgery, not
|
|
54
|
-
* a membership.
|
|
55
|
-
*/
|
|
56
56
|
function verifyMembership(name, relations, statement, rendered) {
|
|
57
57
|
for (const owner of statementOwners(statement)) {
|
|
58
58
|
const member = relations[owner.name];
|
|
@@ -64,19 +64,12 @@ function verifyMembership(name, relations, statement, rendered) {
|
|
|
64
64
|
}
|
|
65
65
|
}
|
|
66
66
|
}
|
|
67
|
-
/** Flattens one binding's literal set into its literals. */
|
|
68
67
|
function bindingLiterals(set) {
|
|
69
68
|
if (set.kind === "one") {
|
|
70
69
|
return [set.literal];
|
|
71
70
|
}
|
|
72
71
|
return set.literals;
|
|
73
72
|
}
|
|
74
|
-
/**
|
|
75
|
-
* Re-verifies one binding's handle literals against the field's roster —
|
|
76
|
-
* belt-and-braces over what `where()` already resolved and the type level
|
|
77
|
-
* already blocked, so a forged binding fails here rather than at the
|
|
78
|
-
* engine boundary with a colder message.
|
|
79
|
-
*/
|
|
80
73
|
function verifyBindingHandles(name, face, binding, rendered) {
|
|
81
74
|
const roster = rosterOf(sealedFieldOf(face.owner, binding.field));
|
|
82
75
|
for (const literal of bindingLiterals(binding.set)) {
|
|
@@ -91,7 +84,6 @@ function verifyBindingHandles(name, face, binding, rendered) {
|
|
|
91
84
|
}
|
|
92
85
|
}
|
|
93
86
|
}
|
|
94
|
-
/** Walks every face of a statement through the handle re-verification. */
|
|
95
87
|
function verifyHandles(name, statement, rendered) {
|
|
96
88
|
const data = statement.data;
|
|
97
89
|
if (data.kind === "key") {
|
|
@@ -103,15 +95,6 @@ function verifyHandles(name, statement, rendered) {
|
|
|
103
95
|
}
|
|
104
96
|
}
|
|
105
97
|
}
|
|
106
|
-
/**
|
|
107
|
-
* Resolves the closed relation a `(relation, field)` pair references
|
|
108
|
-
* through the DECLARED containments — the identical walk the engine's
|
|
109
|
-
* canonical renderer performs (`schema/render.rs` `closed_target_of`): one
|
|
110
|
-
* hop, source projecting exactly `[field]`, target projecting exactly the
|
|
111
|
-
* closed relation's `[id]`, first declared match wins; a `mirrors`
|
|
112
|
-
* contributes both of its materialized orientations. `undefined` = the
|
|
113
|
-
* engine would render the field's selection literals as raw row ids.
|
|
114
|
-
*/
|
|
115
98
|
function closedTargetOf(statements, owner, field) {
|
|
116
99
|
for (const statement of statements) {
|
|
117
100
|
const data = statement.data;
|
|
@@ -135,18 +118,6 @@ function closedTargetOf(statements, owner, field) {
|
|
|
135
118
|
}
|
|
136
119
|
return undefined;
|
|
137
120
|
}
|
|
138
|
-
/**
|
|
139
|
-
* Admits a handle spelling only when the schema also declares the
|
|
140
|
-
* containment the ENGINE's canonical renderer resolves it through
|
|
141
|
-
* (`docs/architecture/10-data-model.md` § closed relations: a closed
|
|
142
|
-
* reference is the plain u64 column PLUS a declared containment). Without
|
|
143
|
-
* it the two renderers drift — `renderStatement` prints the handle name,
|
|
144
|
-
* the engine's violation `canonical` prints the raw row id — and the
|
|
145
|
-
* paste-back law (`violation.canonical === renderStatement(statement)`)
|
|
146
|
-
* breaks. Runs over the COMPLETE statement list, so declaration order
|
|
147
|
-
* never matters. The closed relation's own `id` field resolves directly
|
|
148
|
-
* (the walk's field-0 case).
|
|
149
|
-
*/
|
|
150
121
|
function verifyClosedReferences(name, statements) {
|
|
151
122
|
for (const statement of statements) {
|
|
152
123
|
const data = statement.data;
|
|
@@ -161,7 +132,6 @@ function verifyClosedReferences(name, statements) {
|
|
|
161
132
|
}
|
|
162
133
|
}
|
|
163
134
|
}
|
|
164
|
-
/** One binding's closed-reference resolution check (the {@link verifyClosedReferences} leaf). */
|
|
165
135
|
function verifyClosedReferenceBinding(name, statements, face, binding, rendered) {
|
|
166
136
|
const spellsHandle = bindingLiterals(binding.set).some(function isHandle(literal) {
|
|
167
137
|
return literal.kind === "handle";
|
|
@@ -182,51 +152,106 @@ function verifyClosedReferenceBinding(name, statements, face, binding, rendered)
|
|
|
182
152
|
}
|
|
183
153
|
}
|
|
184
154
|
/**
|
|
185
|
-
*
|
|
186
|
-
*
|
|
187
|
-
*
|
|
188
|
-
*
|
|
189
|
-
*
|
|
190
|
-
*
|
|
191
|
-
*
|
|
192
|
-
*
|
|
193
|
-
*
|
|
194
|
-
*
|
|
195
|
-
*
|
|
196
|
-
*
|
|
197
|
-
*
|
|
198
|
-
*
|
|
199
|
-
*
|
|
200
|
-
* The fresh-implied and closed auto-keys are NOT added to the statement
|
|
201
|
-
* list: the engine materializes them itself, in its own pinned order
|
|
202
|
-
* (`SchemaDescriptor::materialized_statements`), and restating them would
|
|
203
|
-
* double them.
|
|
204
|
-
*
|
|
205
|
-
* THE LAW-TYPING happens here too (rulings 2/3 — the laws type the
|
|
206
|
-
* columns): the statement list induces the equivalence classes over field
|
|
207
|
-
* slots, at the TYPE level ({@link ClassesOf} — spell the statement list
|
|
208
|
-
* inline so the tuple type stays precise) and at runtime (the union-find
|
|
209
|
-
* twin), and the one-generator-per-class wall holds at both tiers — the
|
|
210
|
-
* {@link LawfulStatements} verdict lands the compile error on the
|
|
211
|
-
* statements argument; `computeClasses` throws the same content naming the
|
|
212
|
-
* exact statement.
|
|
155
|
+
* THE TARGET-KEY WALL, value tier (60-containment-parity — the runtime
|
|
156
|
+
* twin of `law.ts`'s `TargetKeyWall`, the engine's `resolve_target_key` /
|
|
157
|
+
* `resolve_capacity_target` mirrored exactly): every `contained`/
|
|
158
|
+
* `mirrors`/`capacity` statement's target projection must resolve a key
|
|
159
|
+
* of the target relation, judged over the SAME key population the engine
|
|
160
|
+
* materializes — the fresh-implied and closed auto-keys
|
|
161
|
+
* ({@link collectImplied}'s roster) first, then the declared `key`
|
|
162
|
+
* statements in written order (a key may be declared after its probe, so
|
|
163
|
+
* this wall runs over the COMPLETE list, never inside the statement
|
|
164
|
+
* loop). `mirrors` materializes as two containments source-first, so both
|
|
165
|
+
* orientations judge their own target. SOUNDNESS BAR: the set-match +
|
|
166
|
+
* closed-id rule below is the engine's COMPLETE rule for this law
|
|
167
|
+
* (`matching_functionality` compares field SETS — permutations resolve,
|
|
168
|
+
* subsets/supersets refuse), so this wall never rejects what the engine
|
|
169
|
+
* accepts; every other schema judgment stays engine-first.
|
|
213
170
|
*/
|
|
171
|
+
function verifyTargetKeys(name, statements, implied) {
|
|
172
|
+
const declared = new Map();
|
|
173
|
+
for (const statement of statements) {
|
|
174
|
+
const data = statement.data;
|
|
175
|
+
if (data.kind !== "key") {
|
|
176
|
+
continue;
|
|
177
|
+
}
|
|
178
|
+
const keys = declared.get(data.owner.name);
|
|
179
|
+
if (keys === undefined) {
|
|
180
|
+
declared.set(data.owner.name, [data.projection]);
|
|
181
|
+
}
|
|
182
|
+
else {
|
|
183
|
+
keys.push(data.projection);
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
for (const statement of statements) {
|
|
187
|
+
const data = statement.data;
|
|
188
|
+
if (data.kind === "key") {
|
|
189
|
+
continue;
|
|
190
|
+
}
|
|
191
|
+
const rendered = renderStatement(statement);
|
|
192
|
+
const faces = data.kind === "mirrors" ? [data.target, data.source] : [data.target];
|
|
193
|
+
for (const face of faces) {
|
|
194
|
+
verifyTargetKeyFace(name, face, implied, declared, rendered);
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
/**
|
|
199
|
+
* One target face's key resolution (the {@link verifyTargetKeys} leaf).
|
|
200
|
+
* Closed target: the handle id is the ONE probe-able identity of a closed
|
|
201
|
+
* relation, so the projection must be exactly `["id"]` — its own refusal
|
|
202
|
+
* (the engine's `ClosedTargetNotHandle`): the rule is CLOSEDNESS, not key
|
|
203
|
+
* absence. Ordinary target: the projection's field-name SET must equal
|
|
204
|
+
* some roster member's set (the engine's `matching_functionality` —
|
|
205
|
+
* permutations resolve, subsets and supersets do not). The refusal speaks
|
|
206
|
+
* the engine's shape in NAMES, with the engine's pointwise hint verbatim
|
|
207
|
+
* when the projection carries an interval position.
|
|
208
|
+
*/
|
|
209
|
+
function verifyTargetKeyFace(name, face, implied, declared, rendered) {
|
|
210
|
+
if (isClosedMember(face.owner)) {
|
|
211
|
+
if (face.projection.length === 1 && face.projection[0] === "id") {
|
|
212
|
+
return;
|
|
213
|
+
}
|
|
214
|
+
throw errors.new(`schema ${name}: ${rendered}: closed target ${face.owner.name} is addressed by its synthetic id only — projection (${face.projection.join(", ")}) must be exactly (id) (rewrite the target side as on(${face.owner.name}, "id"))`);
|
|
215
|
+
}
|
|
216
|
+
const roster = [...(implied.get(face.owner.name) ?? []), ...(declared.get(face.owner.name) ?? [])];
|
|
217
|
+
const want = new Set(face.projection);
|
|
218
|
+
const matched = roster.some(function sameFieldSet(key) {
|
|
219
|
+
// engine's FieldSet refuses (duplicates are refused at the key()
|
|
220
|
+
if (key.length !== face.projection.length || want.size !== face.projection.length) {
|
|
221
|
+
return false;
|
|
222
|
+
}
|
|
223
|
+
const keySet = new Set(key);
|
|
224
|
+
if (keySet.size !== want.size) {
|
|
225
|
+
return false;
|
|
226
|
+
}
|
|
227
|
+
for (const field of keySet) {
|
|
228
|
+
if (!want.has(field)) {
|
|
229
|
+
return false;
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
return true;
|
|
233
|
+
});
|
|
234
|
+
if (matched) {
|
|
235
|
+
return;
|
|
236
|
+
}
|
|
237
|
+
const available = roster.length === 0 ? "none" : roster.map((key) => `(${key.join(", ")})`).join("; ");
|
|
238
|
+
const pointwise = face.projection.some(function carriesInterval(fieldName) {
|
|
239
|
+
const descriptor = sealedFieldOf(face.owner, fieldName);
|
|
240
|
+
return descriptor !== undefined && descriptor.kind === "interval";
|
|
241
|
+
});
|
|
242
|
+
const hint = pointwise ? "; hint: declare the exact pointwise key `R(prefix…, interval) -> R`" : "";
|
|
243
|
+
throw errors.new(`schema ${name}: ${rendered}: target projection (${face.projection.join(", ")}) matches no declared key of ${face.owner.name} — available keys: ${available}${hint}`);
|
|
244
|
+
}
|
|
214
245
|
function schema(name, relations, statements) {
|
|
215
246
|
const implied = collectImplied(name, relations);
|
|
216
247
|
const seen = new Set();
|
|
217
248
|
for (const statement of statements) {
|
|
218
|
-
/**
|
|
219
|
-
* The untyped caller's half of the admission brand: the type tier
|
|
220
|
-
* already refuses an unbranded structural literal, and this probe
|
|
221
|
-
* refuses the same forgery at runtime — a statement that skipped the
|
|
222
|
-
* construction-time arity and roster walls never enters the theory.
|
|
223
|
-
*/
|
|
224
249
|
if (!isStatement(statement)) {
|
|
225
250
|
throw errors.new(`schema ${name}: a statement is minted only by key/contained/mirrors/capacity — a structural literal skips the construction-time arity and roster walls`);
|
|
226
251
|
}
|
|
227
252
|
const rendered = renderStatement(statement);
|
|
228
253
|
verifyMembership(name, relations, statement, rendered);
|
|
229
|
-
if (implied.has(rendered)) {
|
|
254
|
+
if (implied.rendered.has(rendered)) {
|
|
230
255
|
throw errors.new(`schema ${name}: ${rendered} is redundant here (the fresh mark or closedness already implies it) — and rejected as a duplicate`);
|
|
231
256
|
}
|
|
232
257
|
if (seen.has(rendered)) {
|
|
@@ -236,6 +261,7 @@ function schema(name, relations, statements) {
|
|
|
236
261
|
verifyHandles(name, statement, rendered);
|
|
237
262
|
}
|
|
238
263
|
verifyClosedReferences(name, statements);
|
|
264
|
+
verifyTargetKeys(name, statements, implied.roster);
|
|
239
265
|
const classes = computeClasses(name, relations, statements);
|
|
240
266
|
if (!classesComplete(classes, relations)) {
|
|
241
267
|
throw errors.new(`schema ${name}: class-map construction incomplete`);
|
package/dist/schema.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":"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"}
|