@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.
Files changed (100) hide show
  1. package/COOKBOOK.md +140 -136
  2. package/README.md +24 -11
  3. package/dist/closed.d.ts +7 -5
  4. package/dist/closed.d.ts.map +1 -1
  5. package/dist/closed.js +4 -1
  6. package/dist/closed.js.map +1 -1
  7. package/dist/count.js +1 -1
  8. package/dist/count.js.map +1 -1
  9. package/dist/db.d.ts +110 -73
  10. package/dist/db.d.ts.map +1 -1
  11. package/dist/db.js +172 -116
  12. package/dist/db.js.map +1 -1
  13. package/dist/exhume.d.ts +22 -10
  14. package/dist/exhume.d.ts.map +1 -1
  15. package/dist/exhume.js +42 -9
  16. package/dist/exhume.js.map +1 -1
  17. package/dist/face.d.ts +10 -6
  18. package/dist/face.d.ts.map +1 -1
  19. package/dist/face.js.map +1 -1
  20. package/dist/fields.d.ts +38 -16
  21. package/dist/fields.d.ts.map +1 -1
  22. package/dist/fields.js +33 -8
  23. package/dist/fields.js.map +1 -1
  24. package/dist/index.d.ts +9 -6
  25. package/dist/index.d.ts.map +1 -1
  26. package/dist/index.js +5 -2
  27. package/dist/index.js.map +1 -1
  28. package/dist/lower.d.ts +9 -9
  29. package/dist/lower.d.ts.map +1 -1
  30. package/dist/lower.js +17 -12
  31. package/dist/lower.js.map +1 -1
  32. package/dist/marshal.d.ts +17 -7
  33. package/dist/marshal.d.ts.map +1 -1
  34. package/dist/marshal.js +32 -10
  35. package/dist/marshal.js.map +1 -1
  36. package/dist/native.d.ts +60 -9
  37. package/dist/native.d.ts.map +1 -1
  38. package/dist/native.js.map +1 -1
  39. package/dist/query/atom.d.ts +199 -203
  40. package/dist/query/atom.d.ts.map +1 -1
  41. package/dist/query/atom.js +39 -48
  42. package/dist/query/atom.js.map +1 -1
  43. package/dist/query/find.d.ts +116 -0
  44. package/dist/query/find.d.ts.map +1 -0
  45. package/dist/query/{select.js → find.js} +22 -22
  46. package/dist/query/find.js.map +1 -0
  47. package/dist/query/lower.d.ts +131 -158
  48. package/dist/query/lower.d.ts.map +1 -1
  49. package/dist/query/lower.js +505 -494
  50. package/dist/query/lower.js.map +1 -1
  51. package/dist/query/predicate.d.ts +22 -14
  52. package/dist/query/predicate.d.ts.map +1 -1
  53. package/dist/query/predicate.js +35 -42
  54. package/dist/query/predicate.js.map +1 -1
  55. package/dist/query/run.d.ts +8 -8
  56. package/dist/query/run.d.ts.map +1 -1
  57. package/dist/query/run.js +16 -21
  58. package/dist/query/run.js.map +1 -1
  59. package/dist/query/scope.d.ts +139 -74
  60. package/dist/query/scope.d.ts.map +1 -1
  61. package/dist/query/scope.js +80 -33
  62. package/dist/query/scope.js.map +1 -1
  63. package/dist/relation.d.ts.map +1 -1
  64. package/dist/relation.js +3 -1
  65. package/dist/relation.js.map +1 -1
  66. package/dist/schema.d.ts.map +1 -1
  67. package/dist/schema.js +12 -2
  68. package/dist/schema.js.map +1 -1
  69. package/dist/spec.d.ts +20 -10
  70. package/dist/spec.d.ts.map +1 -1
  71. package/dist/spec.js.map +1 -1
  72. package/dist/statements.d.ts +22 -2
  73. package/dist/statements.d.ts.map +1 -1
  74. package/dist/statements.js +26 -5
  75. package/dist/statements.js.map +1 -1
  76. package/package.json +3 -3
  77. package/src/closed.ts +13 -7
  78. package/src/count.ts +1 -1
  79. package/src/db.ts +293 -177
  80. package/src/exhume.ts +48 -11
  81. package/src/face.ts +13 -6
  82. package/src/fields.ts +51 -15
  83. package/src/index.ts +12 -8
  84. package/src/lower.ts +17 -12
  85. package/src/marshal.ts +38 -13
  86. package/src/native.ts +59 -8
  87. package/src/query/atom.ts +297 -275
  88. package/src/query/find.ts +212 -0
  89. package/src/query/lower.ts +692 -724
  90. package/src/query/predicate.ts +37 -45
  91. package/src/query/run.ts +17 -22
  92. package/src/query/scope.ts +184 -90
  93. package/src/relation.ts +3 -1
  94. package/src/schema.ts +14 -2
  95. package/src/spec.ts +21 -9
  96. package/src/statements.ts +30 -6
  97. package/dist/query/select.d.ts +0 -128
  98. package/dist/query/select.d.ts.map +0 -1
  99. package/dist/query/select.js.map +0 -1
  100. package/src/query/select.ts +0 -215
@@ -1,24 +1,39 @@
1
1
  /**
2
- * Query scope terms, LAW-TYPED edition: string-named variables and
3
- * parameters as plain frozen values. A `Var` is a NAME — it is typed by the
4
- * field slot it first binds (the descriptor AND the slot's law-computed
5
- * CLASS, read off the schema's class map through the rule builder's
6
- * environment), reuse of the name within one rule IS the join, and a
7
- * class-mismatched reuse is a compile error: a var joins only class-equal
8
- * slots, and BARE PAIRS ONLY WITH BARE (ruling 3 a slot in no law has no
9
- * class and never joins a classed slot; the deliberate sum-domain pointer
10
- * stays legal against other bare slots). Params are query-global by name
11
- * and typed BY USE: the field position or comparison sibling that anchors
12
- * a param types it, the query's inferred `Params` object is exactly the
13
- * params the rules use, and a param value that no rule uses simply never
14
- * registers — the query executes under its own inferred type (the
15
- * bug-hunt law). This module also owns the environment/typing utilities
16
- * the whole surface shares: the env shape (var name → classed slot), the
17
- * class-equality judgment {@link JoinOk} with its runtime twin
18
- * {@link fieldJoins}, and the record-folding helpers `Params` and `Row`
19
- * inference ride.
2
+ * Query scope terms, REFERENCE-IDENTITY edition: a query variable is an
3
+ * OBJECT, minted fresh by {@link v} over a relation's statically-known
4
+ * columns. `v(relation)` returns a record of fresh variables one per
5
+ * column, each typed at mint by its column's descriptor AND the mint
6
+ * coordinate (the owner relation name and the column name), so
7
+ * destructuring preserves every literal and every class
8
+ * (`const { id, holder } = v(Account)`). Variable IDENTITY is the object
9
+ * reference: reusing the same var value across binding positions IS the
10
+ * join, and a name-collision join is unrepresentable (two `v()` calls mint
11
+ * two distinct batches, so two same-named vars are two variables). Params
12
+ * stay STRING-named their names are the execute() params object's runtime
13
+ * keys, an honest load-bearing channel, not a lie.
14
+ *
15
+ * THE DESIGN THEOREM. {@link JoinOk} is an EQUALITY (kind, class, width,
16
+ * element, roster), so judging every binding position against the
17
+ * variable's MINT slot ({@link MintSlotOf}) makes all cross-binding joins
18
+ * mutually class-equal by transitivity the env/sibling checks the
19
+ * name-keyed edition needed are subsumed, deleted rather than ported. The
20
+ * one check representation cannot carry is BOUNDNESS (is this var positively
21
+ * bound in this rule): TypeScript types cannot see object identity, so
22
+ * boundness moves from the type tier to construction-time walls only — an
23
+ * explicit essential-vs-accidental concession; every runtime twin is
24
+ * preserved.
25
+ *
26
+ * This module also owns the environment/typing utilities the whole surface
27
+ * shares: the join descriptor {@link ClassedField}, the mint-slot machinery
28
+ * ({@link MintSlotOf}/{@link MintClassOf}), the class-equality judgment
29
+ * {@link JoinOk} with its runtime twin {@link fieldJoins}, and the
30
+ * record-folding helpers `Params` and `Row` inference ride.
20
31
  */
32
+ import type { AnyClosed } from "#closed.ts";
21
33
  import type { AnyField, Infer } from "#fields.ts";
34
+ import type { ClassLookup, ClassRecordOf, SchemaClasses } from "#law.ts";
35
+ import type { QueryParam } from "#native.ts";
36
+ import type { AnyRelation, RelationFields } from "#relation.ts";
22
37
  /**
23
38
  * The runtime discriminant of query term values. Host literals (bigints,
24
39
  * strings, interval objects) never carry it, so "is this position a term
@@ -33,16 +48,43 @@ declare const term: unique symbol;
33
48
  */
34
49
  declare const inferred: unique symbol;
35
50
  /**
36
- * A query variable — a NAME. Its type comes from the field it first binds
37
- * in the rule (the builder's environment); reusing the name joins, and a
38
- * cross-domain reuse is a compile error. Identity is the name, strictly
39
- * rule-scoped: the same name in two rules names two unrelated variables
40
- * (exactly as the IR scopes `VarId`).
51
+ * What a query atom matches over: an ordinary relation or a CLOSED
52
+ * vocabulary (ψ query atoms the engine folds a resolvable closed atom
53
+ * into a plan-constant member set at prepare, or joins the L1-resident
54
+ * virtual image when the shape does not fold; the SDK never pre-folds and
55
+ * never knows which transparency is the contract).
41
56
  */
42
- interface Var<Name extends string = string> {
57
+ type MatchOwner = AnyRelation | AnyClosed;
58
+ /**
59
+ * The matchable field block of an atom owner: a relation's declared
60
+ * fields; a closed relation's SEALED shape — the synthetic `id` (the
61
+ * value's OWN roster-carrying descriptor, at its precise type) first, then
62
+ * the declared payload columns read through the typed `columns` carrier.
63
+ * The runtime twin is `sealedFieldsOf` in `#closed.ts`.
64
+ */
65
+ type MatchFields<R extends MatchOwner> = R extends AnyClosed ? {
66
+ readonly id: R["id"];
67
+ } & R["columns"] : R extends AnyRelation ? RelationFields<R> : never;
68
+ /**
69
+ * A query variable — an OBJECT minted by {@link v}. Identity is the object
70
+ * reference: reuse of the same value across binding positions is the join,
71
+ * strictly rule-scoped (each rule numbers its own dense `VarId`s). The type
72
+ * carries the mint COORDINATE — `RN` the owner relation name literal, `K`
73
+ * the column name literal — and `F` the mint descriptor, so the mint slot
74
+ * (descriptor + law-computed class) is recoverable at every binding
75
+ * position for the join judgment.
76
+ */
77
+ interface Var<F extends AnyField = AnyField, RN extends string = string, K extends string = string> {
43
78
  readonly [term]: "var";
44
- readonly name: Name;
79
+ readonly owner: MatchOwner & {
80
+ readonly name: RN;
81
+ };
82
+ readonly column: K;
83
+ readonly field: F;
84
+ readonly label: string;
45
85
  }
86
+ /** Any query variable, whatever its descriptor and mint coordinate. */
87
+ type AnyVar = Var;
46
88
  /**
47
89
  * A scalar query parameter — `r.param("root")`. The name is the key of the
48
90
  * typed params object `execute` takes; the type is the element type of the
@@ -77,47 +119,72 @@ interface MaskParam<Name extends string = string> {
77
119
  /**
78
120
  * The measure of an interval-typed variable (`ir::Term::Measure`):
79
121
  * `|[s, e)| = e − s`, u64 — legal as one side of an order comparison, as a
80
- * select entry, and as the input of `sum`/`min`/`max`; every other position
81
- * is unwritable, exactly as the IR rejects it typed. A ray has no finite
82
- * measure the engine's `MeasureOfRay` execution error; exclude rays first
83
- * (`allen` against a bounded window).
122
+ * find entry, and as the input of `sum`/`min`/`max`; every other position
123
+ * is unwritable, exactly as the IR rejects it typed. Carries the interval
124
+ * variable it measures BY REFERENCE.
84
125
  */
85
- interface Duration<Name extends string = string> {
126
+ interface Duration<V extends AnyVar = AnyVar> {
86
127
  readonly [term]: "duration";
87
- readonly name: Name;
128
+ readonly over: V;
88
129
  }
89
130
  /** Any scope term value. */
90
131
  type AnyTerm = Var | Param | SetParam | MaskParam | Duration;
91
132
  /** Narrows an unknown position value to a scope term (vs a host literal). */
92
133
  declare function isTerm(value: unknown): value is AnyTerm;
93
- /** Builds one variable term. */
94
- declare function makeVar<const Name extends string>(name: Name): Var<Name>;
134
+ /**
135
+ * The record of fresh variables `v(owner)` mints — one per statically-known
136
+ * column, each typed by its column's descriptor and mint coordinate.
137
+ */
138
+ type VarsOf<R extends MatchOwner> = {
139
+ readonly [K in keyof MatchFields<R> & string]: Var<MatchFields<R>[K], R["name"], K>;
140
+ };
141
+ /**
142
+ * Mints a FRESH batch of query variables over an atom owner's
143
+ * statically-known columns — one variable per sealed column
144
+ * (`sealedFieldsOf`: a closed owner mints `id` first, then payload columns),
145
+ * each frozen and each defined by OWN-property definition (object-protocol
146
+ * column names must work, the `closed()` precedent). Every `v()` call mints
147
+ * new objects, so two batches are two variables; property access within one
148
+ * batch is stable by construction (the record is an eager frozen record,
149
+ * never a Proxy). Variable identity is the object reference: destructure
150
+ * what you need (`const { id, holder } = v(Account)`) and reuse a value
151
+ * across binding positions to join.
152
+ */
153
+ declare function v<R extends MatchOwner>(owner: R): VarsOf<R>;
95
154
  /** Builds one scalar-parameter term. */
96
155
  declare function makeParam<const Name extends string>(name: Name): Param<Name>;
97
156
  /** Builds one set-parameter term. */
98
157
  declare function makeSetParam<const Name extends string>(name: Name): SetParam<Name>;
99
158
  /** Builds one Allen-mask-parameter term. */
100
159
  declare function makeMaskParam<const Name extends string>(name: Name): MaskParam<Name>;
101
- /** Builds one measure term over an interval-typed variable's name. */
102
- declare function makeDuration<const Name extends string>(name: Name): Duration<Name>;
160
+ /** Builds one measure term over an interval-typed variable reference. */
161
+ declare function makeDuration<const V extends AnyVar>(over: V): Duration<V>;
103
162
  /**
104
163
  * One bound field slot: the field's descriptor plus the slot's
105
164
  * law-computed CLASS (`undefined` = bare — the slot is in no law). The one
106
- * shape the rule environment carries per variable, at the TYPE level (env
107
- * entries hold the schema type's class-map lookups) and at RUNTIME alike
108
- * (the rule's `varFields` record holds exactly this shape, read off the
109
- * schema value's frozen class map) — one shape, two tiers, one walk.
165
+ * shape every join judgment compares, at the TYPE level (a variable's mint
166
+ * slot, a binding position's slot) and at RUNTIME alike.
110
167
  */
111
168
  interface ClassedField {
112
169
  readonly field: AnyField;
113
170
  readonly class: string | undefined;
114
171
  }
115
172
  /**
116
- * A rule's typing environment: variable name the classed slot it first
117
- * bound. Purely a TYPE the runtime twin is the rule's `varFields`
118
- * record, and the two are built by the same walk.
173
+ * A variable's law-computed CLASS at the TYPE level: its column's class,
174
+ * read off the schema type's class map through the mint coordinate the
175
+ * variable carries (`RN.K`). `undefined` = bare.
176
+ */
177
+ type MintClassOf<Classes extends SchemaClasses, V> = V extends Var<AnyField, infer RN extends string, infer K extends string> ? ClassLookup<ClassRecordOf<Classes, RN>, K> : never;
178
+ /**
179
+ * A variable's MINT slot: the descriptor it was minted at plus its
180
+ * law-computed class. The one slot every binding position judges against —
181
+ * because {@link JoinOk} is an equality, judging each position against the
182
+ * mint slot makes every cross-binding join transitively class-equal.
119
183
  */
120
- type EnvShape = Record<string, ClassedField>;
184
+ type MintSlotOf<Classes extends SchemaClasses, V extends AnyVar> = {
185
+ readonly field: V["field"];
186
+ readonly class: MintClassOf<Classes, V>;
187
+ };
121
188
  /** A params object type — what `execute` takes and inference carries. */
122
189
  type ParamsRecord = Readonly<Record<string, unknown>>;
123
190
  /** Flattens an intersection into one displayed object type (hover legibility). */
@@ -139,23 +206,28 @@ type WidthOf<F extends AnyField> = F extends {
139
206
  type ElementOf<F extends AnyField> = F extends {
140
207
  readonly element: infer E;
141
208
  } ? E : undefined;
142
- /** Reads a closed reference's handle union; `undefined` on every non-closed kind (the roster IS descriptor structure). */
209
+ /**
210
+ * Reads a closed reference's vocabulary name literal paired with its handle
211
+ * union; `undefined` on every non-closed kind (the roster IS descriptor
212
+ * structure). The name literal is the type-tier encoding of the runtime's
213
+ * roster VALUE-IDENTITY judgment ({@link fieldJoins}): two same-shaped
214
+ * vocabularies are distinct rosters, so they mismatch here exactly as they
215
+ * refuse at runtime.
216
+ */
143
217
  type RosterOf<F extends AnyField> = F extends {
144
218
  readonly closed: {
219
+ readonly name: infer N extends string;
145
220
  readonly handles: readonly (infer H extends string)[];
146
221
  };
147
- } ? H : undefined;
222
+ } ? readonly [N, H] : undefined;
148
223
  /**
149
224
  * The join judgment: two bound slots join iff their descriptors' structure
150
225
  * agrees (kind, width label, interval element, and the closed ROSTER — a
151
226
  * closed reference pairs only with the same vocabulary, never with a bare
152
- * u64: the roster keys every closed judgment downstream, so a join across
153
- * it would decode/order/translate incoherently by binding order) AND their
154
- * law-computed classes agree same class name joins, and bare
155
- * (`undefined`) pairs only with bare (ruling 3: a field in no law has no
156
- * class; a bare↔classed pairing refuses). The class names come off the
157
- * SCHEMA type's class map — the statements are the typing; no descriptor
158
- * label beyond the roster exists to compare.
227
+ * u64) AND their law-computed classes agree same class name joins, and
228
+ * bare (`undefined`) pairs only with bare (ruling 3). The class names come
229
+ * off the SCHEMA type's class map; no descriptor label beyond the roster
230
+ * exists to compare.
159
231
  */
160
232
  type JoinOk<A extends ClassedField, B extends ClassedField> = [
161
233
  A["field"]["kind"],
@@ -174,29 +246,23 @@ type JoinOk<A extends ClassedField, B extends ClassedField> = [
174
246
  * The runtime twin of {@link JoinOk}: two bound slots join iff descriptor
175
247
  * structure and class agree — the same comparison the type tier makes,
176
248
  * judged on the honest runtime values (the descriptor, the roster by VALUE
177
- * IDENTITY vocabulary identity is value identity and the schema
178
- * value's frozen class map). The rule builders throw through this on a
179
- * class-unequal variable reuse, so the wall holds for untyped callers too,
180
- * not only where the compiler can see.
249
+ * IDENTITY, and the schema value's frozen class map). The rule builders
250
+ * throw through this on a class-unequal reuse, so the wall holds for untyped
251
+ * callers too.
181
252
  */
182
253
  declare function fieldJoins(a: ClassedField, b: ClassedField): boolean;
183
254
  /**
184
255
  * Renders one bound slot for join-mismatch diagnostics — the structural
185
256
  * kind in the schema grammar's spelling (a closed reference names its
186
- * vocabulary: the roster is part of the structure being compared) plus the
187
- * slot's law-computed class (`u64 in class Holder.id`; a lawless slot
188
- * renders `bare`).
257
+ * vocabulary) plus the slot's law-computed class (`u64 in class Holder.id`;
258
+ * a lawless slot renders `bare`).
189
259
  */
190
260
  declare function renderFieldKind(slot: ClassedField): string;
191
261
  /**
192
262
  * What a PARAM anchored at field `F` accepts at execution: the field's
193
263
  * bare value type, exactly — at a CLOSED-reference field that is the
194
264
  * handle-name union (`"DirectPass" | "Failed"`), translated name → row id
195
- * at execute through the one roster-verification point
196
- * (`taggedHandleId`). At an interval field the engine resolves the
197
- * bivalent anchor to the INTERVAL reading (value equality) — the point
198
- * reading of a param is spelled `pointIn(r.param(...), w)`, whose sibling
199
- * anchors it element-typed.
265
+ * at execute through the one roster-verification point (`taggedHandleId`).
200
266
  */
201
267
  type ParamValueAt<F extends AnyField> = Infer<F>;
202
268
  /** Reads a value's inferred-types carrier (rules, queries, recs). */
@@ -207,21 +273,20 @@ type InferredOf<T> = T extends {
207
273
  * One registered parameter of a query, as the wire marshal reads it: the
208
274
  * name, the wire shape, the field descriptor (or the measure) that anchored
209
275
  * it, and the comparison op the anchor came from (`"binding"` for atom
210
- * positions) the op keeps literal tagging op-aware at `pointIn`
211
- * (the bug-hunt fix, preserved). `anchor` is `undefined` only on a query
212
- * built but not yet anchored by any rule; lowering and the wire both refuse
213
- * that state typed. `members` is present exactly on a MEMBERSHIP-ARRAY
214
- * entry (a literal set at a closed field, folded into the program): the
215
- * SDK itself translates and supplies the set at every execute — the entry
216
- * is never read from, and never demanded of, the host's params object.
276
+ * positions). `anchor` is `undefined` only on a query built but not yet
277
+ * anchored by any rule. `membership` is present exactly on a
278
+ * MEMBERSHIP-ARRAY entry: the FROZEN wire param, already resolved through
279
+ * the one roster-verification point at BUILD time (the entry stores the
280
+ * image, never the pre-image no per-execute re-translation exists, and an
281
+ * out-of-roster handle name fails where the mistake was made).
217
282
  */
218
283
  interface ParamEntry {
219
284
  readonly name: string;
220
285
  readonly shape: "value" | "set" | "mask";
221
286
  readonly anchor: AnyField | "measure" | undefined;
222
287
  readonly op: "binding" | "eq" | "ne" | "lt" | "le" | "gt" | "ge" | "pointIn" | "allen";
223
- readonly members: readonly string[] | undefined;
288
+ readonly membership: QueryParam | undefined;
224
289
  }
225
- export type { AnyTerm, ClassedField, Duration, EnvShape, Flatten, InferredOf, JoinOk, MaskParam, Param, ParamEntry, ParamsRecord, ParamValueAt, SetParam, ShapeOf, UnionToIntersection, Var };
226
- export { fieldJoins, inferred, isTerm, makeDuration, makeMaskParam, makeParam, makeSetParam, makeVar, renderFieldKind, term };
290
+ export type { AnyTerm, AnyVar, ClassedField, Duration, Flatten, InferredOf, JoinOk, MaskParam, MatchFields, MatchOwner, MintClassOf, MintSlotOf, Param, ParamEntry, ParamsRecord, ParamValueAt, SetParam, ShapeOf, UnionToIntersection, Var, VarsOf };
291
+ export { fieldJoins, inferred, isTerm, makeDuration, makeMaskParam, makeParam, makeSetParam, renderFieldKind, term, v };
227
292
  //# sourceMappingURL=scope.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"scope.d.ts","sourceRoot":"","sources":["../../src/query/scope.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"scope.d.ts","sourceRoot":"","sources":["../../src/query/scope.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAGH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AAE3C,OAAO,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAEjD,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AACxE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAC5C,OAAO,KAAK,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAE/D;;;;GAIG;AACH,QAAA,MAAM,IAAI,EAAE,OAAO,MAAsC,CAAA;AAEzD;;;;;GAKG;AACH,QAAA,MAAM,QAAQ,EAAE,OAAO,MAA0C,CAAA;AAEjE;;;;;;GAMG;AACH,KAAK,UAAU,GAAG,WAAW,GAAG,SAAS,CAAA;AAEzC;;;;;;GAMG;AACH,KAAK,WAAW,CAAC,CAAC,SAAS,UAAU,IAAI,CAAC,SAAS,SAAS,GACzD;IAAE,QAAQ,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,CAAA;CAAE,GAAG,CAAC,CAAC,SAAS,CAAC,GACvC,CAAC,SAAS,WAAW,GACpB,cAAc,CAAC,CAAC,CAAC,GACjB,KAAK,CAAA;AAET;;;;;;;;GAQG;AACH,UAAU,GAAG,CAAC,CAAC,SAAS,QAAQ,GAAG,QAAQ,EAAE,EAAE,SAAS,MAAM,GAAG,MAAM,EAAE,CAAC,SAAS,MAAM,GAAG,MAAM;IACjG,QAAQ,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,CAAA;IACtB,QAAQ,CAAC,KAAK,EAAE,UAAU,GAAG;QAAE,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAA;KAAE,CAAA;IAClD,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAA;IAClB,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAA;IACjB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CACtB;AAED,uEAAuE;AACvE,KAAK,MAAM,GAAG,GAAG,CAAA;AAEjB;;;;;GAKG;AACH,UAAU,KAAK,CAAC,IAAI,SAAS,MAAM,GAAG,MAAM;IAC3C,QAAQ,CAAC,CAAC,IAAI,CAAC,EAAE,OAAO,CAAA;IACxB,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAA;CACnB;AAED;;;;;;GAMG;AACH,UAAU,QAAQ,CAAC,IAAI,SAAS,MAAM,GAAG,MAAM;IAC9C,QAAQ,CAAC,CAAC,IAAI,CAAC,EAAE,UAAU,CAAA;IAC3B,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAA;CACnB;AAED;;;;;GAKG;AACH,UAAU,SAAS,CAAC,IAAI,SAAS,MAAM,GAAG,MAAM;IAC/C,QAAQ,CAAC,CAAC,IAAI,CAAC,EAAE,WAAW,CAAA;IAC5B,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAA;CACnB;AAED;;;;;;GAMG;AACH,UAAU,QAAQ,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM;IAC3C,QAAQ,CAAC,CAAC,IAAI,CAAC,EAAE,UAAU,CAAA;IAC3B,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAA;CAChB;AAED,4BAA4B;AAC5B,KAAK,OAAO,GAAG,GAAG,GAAG,KAAK,GAAG,QAAQ,GAAG,SAAS,GAAG,QAAQ,CAAA;AAE5D,6EAA6E;AAC7E,iBAAS,MAAM,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,OAAO,CAEhD;AAED;;;GAGG;AACH,KAAK,MAAM,CAAC,CAAC,SAAS,UAAU,IAAI;IACnC,QAAQ,EAAE,CAAC,IAAI,MAAM,WAAW,CAAC,CAAC,CAAC,GAAG,MAAM,GAAG,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;CACnF,CAAA;AAcD;;;;;;;;;;;GAWG;AACH,iBAAS,CAAC,CAAC,CAAC,SAAS,UAAU,EAAE,KAAK,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAiBpD;AAED,wCAAwC;AACxC,iBAAS,SAAS,CAAC,KAAK,CAAC,IAAI,SAAS,MAAM,EAAE,IAAI,EAAE,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,CAGrE;AAED,qCAAqC;AACrC,iBAAS,YAAY,CAAC,KAAK,CAAC,IAAI,SAAS,MAAM,EAAE,IAAI,EAAE,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,CAG3E;AAED,4CAA4C;AAC5C,iBAAS,aAAa,CAAC,KAAK,CAAC,IAAI,SAAS,MAAM,EAAE,IAAI,EAAE,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,CAG7E;AAED,yEAAyE;AACzE,iBAAS,YAAY,CAAC,KAAK,CAAC,CAAC,SAAS,MAAM,EAAE,IAAI,EAAE,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAGlE;AAED;;;;;GAKG;AACH,UAAU,YAAY;IACrB,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAA;IACxB,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,CAAA;CAClC;AAED;;;;GAIG;AACH,KAAK,WAAW,CAAC,OAAO,SAAS,aAAa,EAAE,CAAC,IAChD,CAAC,SAAS,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,MAAM,EAAE,MAAM,CAAC,SAAS,MAAM,CAAC,GACrE,WAAW,CAAC,aAAa,CAAC,OAAO,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,GAC1C,KAAK,CAAA;AAET;;;;;GAKG;AACH,KAAK,UAAU,CAAC,OAAO,SAAS,aAAa,EAAE,CAAC,SAAS,MAAM,IAAI;IAClE,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC,OAAO,CAAC,CAAA;IAC1B,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC,OAAO,EAAE,CAAC,CAAC,CAAA;CACvC,CAAA;AAED,yEAAyE;AACzE,KAAK,YAAY,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAA;AAErD,kFAAkF;AAClF,KAAK,OAAO,CAAC,CAAC,IAAI;KAAG,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CAAE,CAAA;AAE1C,sEAAsE;AACtE,KAAK,mBAAmB,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,OAAO,GAAG,CAAC,MAAM,EAAE,CAAC,KAAK,IAAI,GAAG,KAAK,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,IAAI,GAC9G,CAAC,GACD,KAAK,CAAA;AAER;;;GAGG;AACH,KAAK,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAA;AAE9F,qHAAqH;AACrH,KAAK,OAAO,CAAC,CAAC,SAAS,QAAQ,IAAI,CAAC,SAAS;IAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,CAAA;CAAE,GAAG,CAAC,GAAG,SAAS,CAAA;AAExF,gFAAgF;AAChF,KAAK,SAAS,CAAC,CAAC,SAAS,QAAQ,IAAI,CAAC,SAAS;IAAE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,CAAA;CAAE,GAAG,CAAC,GAAG,SAAS,CAAA;AAE5F;;;;;;;GAOG;AACH,KAAK,QAAQ,CAAC,CAAC,SAAS,QAAQ,IAAI,CAAC,SAAS;IAC7C,QAAQ,CAAC,MAAM,EAAE;QAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,SAAS,MAAM,CAAC;QAAC,QAAQ,CAAC,OAAO,EAAE,SAAS,CAAC,MAAM,CAAC,SAAS,MAAM,CAAC,EAAE,CAAA;KAAE,CAAA;CACjH,GACE,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,GACf,SAAS,CAAA;AAEZ;;;;;;;;GAQG;AACH,KAAK,MAAM,CAAC,CAAC,SAAS,YAAY,EAAE,CAAC,SAAS,YAAY,IAAI;IAC7D,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC;IAClB,CAAC,CAAC,OAAO,CAAC;IACV,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;IACnB,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;IACrB,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;CACpB,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GACzG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS;IAC3G,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC;IAClB,CAAC,CAAC,OAAO,CAAC;IACV,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;IACnB,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;IACrB,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;CACpB,GACC,IAAI,GACJ,KAAK,GACN,KAAK,CAAA;AAER;;;;;;;GAOG;AACH,iBAAS,UAAU,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,YAAY,GAAG,OAAO,CAc7D;AAED;;;;;GAKG;AACH,iBAAS,eAAe,CAAC,IAAI,EAAE,YAAY,GAAG,MAAM,CAcnD;AAED;;;;;GAKG;AACH,KAAK,YAAY,CAAC,CAAC,SAAS,QAAQ,IAAI,KAAK,CAAC,CAAC,CAAC,CAAA;AAEhD,qEAAqE;AACrE,KAAK,UAAU,CAAC,CAAC,IAAI,CAAC,SAAS;IAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC,CAAA;CAAE,GAAG,OAAO,CAAC,CAAC,EAAE,SAAS,CAAC,GAAG,KAAK,CAAA;AAEhG;;;;;;;;;;GAUG;AACH,UAAU,UAAU;IACnB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,GAAG,MAAM,CAAA;IACxC,QAAQ,CAAC,MAAM,EAAE,QAAQ,GAAG,SAAS,GAAG,SAAS,CAAA;IACjD,QAAQ,CAAC,EAAE,EAAE,SAAS,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,SAAS,GAAG,OAAO,CAAA;IACtF,QAAQ,CAAC,UAAU,EAAE,UAAU,GAAG,SAAS,CAAA;CAC3C;AAED,YAAY,EACX,OAAO,EACP,MAAM,EACN,YAAY,EACZ,QAAQ,EACR,OAAO,EACP,UAAU,EACV,MAAM,EACN,SAAS,EACT,WAAW,EACX,UAAU,EACV,WAAW,EACX,UAAU,EACV,KAAK,EACL,UAAU,EACV,YAAY,EACZ,YAAY,EACZ,QAAQ,EACR,OAAO,EACP,mBAAmB,EACnB,GAAG,EACH,MAAM,EACN,CAAA;AACD,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,YAAY,EAAE,aAAa,EAAE,SAAS,EAAE,YAAY,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC,EAAE,CAAA"}
@@ -1,23 +1,36 @@
1
1
  /**
2
- * Query scope terms, LAW-TYPED edition: string-named variables and
3
- * parameters as plain frozen values. A `Var` is a NAME — it is typed by the
4
- * field slot it first binds (the descriptor AND the slot's law-computed
5
- * CLASS, read off the schema's class map through the rule builder's
6
- * environment), reuse of the name within one rule IS the join, and a
7
- * class-mismatched reuse is a compile error: a var joins only class-equal
8
- * slots, and BARE PAIRS ONLY WITH BARE (ruling 3 a slot in no law has no
9
- * class and never joins a classed slot; the deliberate sum-domain pointer
10
- * stays legal against other bare slots). Params are query-global by name
11
- * and typed BY USE: the field position or comparison sibling that anchors
12
- * a param types it, the query's inferred `Params` object is exactly the
13
- * params the rules use, and a param value that no rule uses simply never
14
- * registers — the query executes under its own inferred type (the
15
- * bug-hunt law). This module also owns the environment/typing utilities
16
- * the whole surface shares: the env shape (var name → classed slot), the
17
- * class-equality judgment {@link JoinOk} with its runtime twin
18
- * {@link fieldJoins}, and the record-folding helpers `Params` and `Row`
19
- * inference ride.
2
+ * Query scope terms, REFERENCE-IDENTITY edition: a query variable is an
3
+ * OBJECT, minted fresh by {@link v} over a relation's statically-known
4
+ * columns. `v(relation)` returns a record of fresh variables one per
5
+ * column, each typed at mint by its column's descriptor AND the mint
6
+ * coordinate (the owner relation name and the column name), so
7
+ * destructuring preserves every literal and every class
8
+ * (`const { id, holder } = v(Account)`). Variable IDENTITY is the object
9
+ * reference: reusing the same var value across binding positions IS the
10
+ * join, and a name-collision join is unrepresentable (two `v()` calls mint
11
+ * two distinct batches, so two same-named vars are two variables). Params
12
+ * stay STRING-named their names are the execute() params object's runtime
13
+ * keys, an honest load-bearing channel, not a lie.
14
+ *
15
+ * THE DESIGN THEOREM. {@link JoinOk} is an EQUALITY (kind, class, width,
16
+ * element, roster), so judging every binding position against the
17
+ * variable's MINT slot ({@link MintSlotOf}) makes all cross-binding joins
18
+ * mutually class-equal by transitivity the env/sibling checks the
19
+ * name-keyed edition needed are subsumed, deleted rather than ported. The
20
+ * one check representation cannot carry is BOUNDNESS (is this var positively
21
+ * bound in this rule): TypeScript types cannot see object identity, so
22
+ * boundness moves from the type tier to construction-time walls only — an
23
+ * explicit essential-vs-accidental concession; every runtime twin is
24
+ * preserved.
25
+ *
26
+ * This module also owns the environment/typing utilities the whole surface
27
+ * shares: the join descriptor {@link ClassedField}, the mint-slot machinery
28
+ * ({@link MintSlotOf}/{@link MintClassOf}), the class-equality judgment
29
+ * {@link JoinOk} with its runtime twin {@link fieldJoins}, and the
30
+ * record-folding helpers `Params` and `Row` inference ride.
20
31
  */
32
+ import * as errors from "@superbuilders/errors";
33
+ import { sealedFieldsOf } from "#closed.ts";
21
34
  import { rosterOf } from "#fields.ts";
22
35
  /**
23
36
  * The runtime discriminant of query term values. Host literals (bigints,
@@ -36,10 +49,46 @@ const inferred = Symbol("bumbledb.query.inferred");
36
49
  function isTerm(value) {
37
50
  return typeof value === "object" && value !== null && term in value;
38
51
  }
39
- /** Builds one variable term. */
40
- function makeVar(name) {
41
- const value = { [term]: "var", name };
42
- return Object.freeze(value);
52
+ /**
53
+ * The trusted admission seam of the variable-record mint (the pattern's
54
+ * home is `isTypedScope` in `#query/lower.ts`): the checkable fact — one own
55
+ * enumerable variable per sealed column — is verified before the record is
56
+ * admitted at its computed {@link VarsOf} type.
57
+ */
58
+ function varsMinted(owner, record) {
59
+ return sealedFieldsOf(owner).every(function columnMinted(declared) {
60
+ return Object.hasOwn(record, declared.name);
61
+ });
62
+ }
63
+ /**
64
+ * Mints a FRESH batch of query variables over an atom owner's
65
+ * statically-known columns — one variable per sealed column
66
+ * (`sealedFieldsOf`: a closed owner mints `id` first, then payload columns),
67
+ * each frozen and each defined by OWN-property definition (object-protocol
68
+ * column names must work, the `closed()` precedent). Every `v()` call mints
69
+ * new objects, so two batches are two variables; property access within one
70
+ * batch is stable by construction (the record is an eager frozen record,
71
+ * never a Proxy). Variable identity is the object reference: destructure
72
+ * what you need (`const { id, holder } = v(Account)`) and reuse a value
73
+ * across binding positions to join.
74
+ */
75
+ function v(owner) {
76
+ const record = {};
77
+ for (const declared of sealedFieldsOf(owner)) {
78
+ const variable = Object.freeze({
79
+ [term]: "var",
80
+ owner,
81
+ column: declared.name,
82
+ field: declared.field,
83
+ label: `${owner.name}.${declared.name}`
84
+ });
85
+ Object.defineProperty(record, declared.name, { value: variable, enumerable: true });
86
+ }
87
+ Object.freeze(record);
88
+ if (!varsMinted(owner, record)) {
89
+ throw errors.new(`v(${owner.name}): variable-record minting incomplete`);
90
+ }
91
+ return record;
43
92
  }
44
93
  /** Builds one scalar-parameter term. */
45
94
  function makeParam(name) {
@@ -56,19 +105,18 @@ function makeMaskParam(name) {
56
105
  const value = { [term]: "maskParam", name };
57
106
  return Object.freeze(value);
58
107
  }
59
- /** Builds one measure term over an interval-typed variable's name. */
60
- function makeDuration(name) {
61
- const value = { [term]: "duration", name };
108
+ /** Builds one measure term over an interval-typed variable reference. */
109
+ function makeDuration(over) {
110
+ const value = { [term]: "duration", over };
62
111
  return Object.freeze(value);
63
112
  }
64
113
  /**
65
114
  * The runtime twin of {@link JoinOk}: two bound slots join iff descriptor
66
115
  * structure and class agree — the same comparison the type tier makes,
67
116
  * judged on the honest runtime values (the descriptor, the roster by VALUE
68
- * IDENTITY vocabulary identity is value identity and the schema
69
- * value's frozen class map). The rule builders throw through this on a
70
- * class-unequal variable reuse, so the wall holds for untyped callers too,
71
- * not only where the compiler can see.
117
+ * IDENTITY, and the schema value's frozen class map). The rule builders
118
+ * throw through this on a class-unequal reuse, so the wall holds for untyped
119
+ * callers too.
72
120
  */
73
121
  function fieldJoins(a, b) {
74
122
  const widthA = "width" in a.field ? a.field.width : undefined;
@@ -86,9 +134,8 @@ function fieldJoins(a, b) {
86
134
  /**
87
135
  * Renders one bound slot for join-mismatch diagnostics — the structural
88
136
  * kind in the schema grammar's spelling (a closed reference names its
89
- * vocabulary: the roster is part of the structure being compared) plus the
90
- * slot's law-computed class (`u64 in class Holder.id`; a lawless slot
91
- * renders `bare`).
137
+ * vocabulary) plus the slot's law-computed class (`u64 in class Holder.id`;
138
+ * a lawless slot renders `bare`).
92
139
  */
93
140
  function renderFieldKind(slot) {
94
141
  const field = slot.field;
@@ -105,5 +152,5 @@ function renderFieldKind(slot) {
105
152
  }
106
153
  return slot.class === undefined ? `${base} (bare)` : `${base} in class ${slot.class}`;
107
154
  }
108
- export { fieldJoins, inferred, isTerm, makeDuration, makeMaskParam, makeParam, makeSetParam, makeVar, renderFieldKind, term };
155
+ export { fieldJoins, inferred, isTerm, makeDuration, makeMaskParam, makeParam, makeSetParam, renderFieldKind, term, v };
109
156
  //# sourceMappingURL=scope.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"scope.js","sourceRoot":"","sources":["../../src/query/scope.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"scope.js","sourceRoot":"","sources":["../../src/query/scope.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"relation.d.ts","sourceRoot":"","sources":["../src/relation.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"relation.d.ts","sourceRoot":"","sources":["../src/relation.ts"],"names":[],"mappings":"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"}
package/dist/relation.js CHANGED
@@ -13,7 +13,7 @@
13
13
  * (resupply-to-preserve-identity), typed exactly.
14
14
  */
15
15
  import * as errors from "@superbuilders/errors";
16
- import { assertDeclarationOrderKey, literalOf } from "#fields.ts";
16
+ import { assertDeclarationOrderKey, assertDeclarationRecord, literalOf } from "#fields.ts";
17
17
  import { renderLiteral } from "#spec.ts";
18
18
  /**
19
19
  * Resolves one selection entry to its lowered literal set: a plain ARRAY
@@ -91,6 +91,8 @@ function resolveSelection(name, ordered, entries) {
91
91
  * on. The returned value is frozen and side-effect free.
92
92
  */
93
93
  function relation(name, fields) {
94
+ assertDeclarationOrderKey("relation", name);
95
+ assertDeclarationRecord(`relation ${name} fields`, fields);
94
96
  const ordered = [];
95
97
  for (const [fieldName, field] of Object.entries(fields)) {
96
98
  assertDeclarationOrderKey(`relation ${name} field`, fieldName);
@@ -1 +1 @@
1
- {"version":3,"file":"relation.js","sourceRoot":"","sources":["../src/relation.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"relation.js","sourceRoot":"","sources":["../src/relation.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;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,EAAmB,KAAK,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAuMhE,gDAAgD;AAChD,KAAK,cAAc,GAAG,WAAW,GAAG,SAAS,CAAA;AAE7C,mFAAmF;AACnF,KAAK,eAAe,GAAG,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAA;AAErD;;;;;;;;;GASG;AACH,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,sDAAsD;AACtD,KAAK,SAAS,GAAG,MAAM,CAAC,eAAe,CAAC,CAAA;AAExC;;;;;;;;;;;;GAYG;AACH,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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,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,CAuBxD;AAED,YAAY,EAAE,SAAS,EAAE,MAAM,EAAE,cAAc,EAAE,eAAe,EAAE,CAAA;AAClE,OAAO,EAAE,MAAM,EAAE,CAAA"}
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;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;AAwM7E,gDAAgD;AAChD,KAAK,cAAc,GAAG,WAAW,GAAG,SAAS,CAAA;AAE7C,mFAAmF;AACnF,KAAK,eAAe,GAAG,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAA;AAErD;;;;;;;;;GASG;AACH,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,sDAAsD;AACtD,KAAK,SAAS,GAAG,MAAM,CAAC,eAAe,CAAC,CAAA;AAExC;;;;;;;;;;;;GAYG;AACH,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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,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,CAkCxD;AAED,YAAY,EAAE,SAAS,EAAE,MAAM,EAAE,cAAc,EAAE,eAAe,EAAE,CAAA;AAClE,OAAO,EAAE,MAAM,EAAE,CAAA"}
package/dist/schema.js CHANGED
@@ -10,9 +10,9 @@
10
10
  */
11
11
  import * as errors from "@superbuilders/errors";
12
12
  import { isClosedMember, sealedFieldOf } from "#closed.ts";
13
- import { assertDeclarationOrderKey, rosterOf } from "#fields.ts";
13
+ import { assertDeclarationOrderKey, assertDeclarationRecord, rosterOf } from "#fields.ts";
14
14
  import { classesComplete, computeClasses } from "#law.ts";
15
- import { renderStatement } from "#statements.ts";
15
+ import { isStatement, renderStatement } from "#statements.ts";
16
16
  /**
17
17
  * Validates the relation record and collects the implied keys: the
18
18
  * fresh-implied `R(field) -> R` per minted field and the closed auto-key
@@ -21,6 +21,7 @@ import { renderStatement } from "#statements.ts";
21
21
  * single spelling authority.
22
22
  */
23
23
  function collectImplied(name, relations) {
24
+ assertDeclarationRecord(`schema ${name} relations`, relations);
24
25
  const implied = new Set();
25
26
  for (const [recordKey, member] of Object.entries(relations)) {
26
27
  assertDeclarationOrderKey(`schema ${name} relation`, recordKey);
@@ -214,6 +215,15 @@ function schema(name, relations, statements) {
214
215
  const implied = collectImplied(name, relations);
215
216
  const seen = new Set();
216
217
  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
+ if (!isStatement(statement)) {
225
+ throw errors.new(`schema ${name}: a statement is minted only by key/contained/mirrors/window — a structural literal skips the construction-time arity and roster walls`);
226
+ }
217
227
  const rendered = renderStatement(statement);
218
228
  verifyMembership(name, relations, statement, rendered);
219
229
  if (implied.has(rendered)) {