@bjornpagen/bumbledb 1.0.1 → 1.2.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 (172) hide show
  1. package/COOKBOOK.md +176 -36
  2. package/README.md +70 -26
  3. package/dist/capacity.d.ts +15 -55
  4. package/dist/capacity.d.ts.map +1 -1
  5. package/dist/capacity.js +63 -12
  6. package/dist/capacity.js.map +1 -1
  7. package/dist/changes.d.ts +28 -6
  8. package/dist/changes.d.ts.map +1 -1
  9. package/dist/changes.js +119 -71
  10. package/dist/changes.js.map +1 -1
  11. package/dist/closed.d.ts +23 -51
  12. package/dist/closed.d.ts.map +1 -1
  13. package/dist/closed.js +110 -168
  14. package/dist/closed.js.map +1 -1
  15. package/dist/codec.d.ts +8 -14
  16. package/dist/codec.d.ts.map +1 -1
  17. package/dist/codec.js +113 -188
  18. package/dist/codec.js.map +1 -1
  19. package/dist/compile.d.ts +17 -18
  20. package/dist/compile.d.ts.map +1 -1
  21. package/dist/compile.js +41 -20
  22. package/dist/compile.js.map +1 -1
  23. package/dist/db-native.d.ts +76 -41
  24. package/dist/db-native.d.ts.map +1 -1
  25. package/dist/db-native.js +8 -0
  26. package/dist/db-native.js.map +1 -1
  27. package/dist/db.d.ts +61 -26
  28. package/dist/db.d.ts.map +1 -1
  29. package/dist/db.js +152 -85
  30. package/dist/db.js.map +1 -1
  31. package/dist/errors.d.ts +11 -3
  32. package/dist/errors.d.ts.map +1 -1
  33. package/dist/errors.js +13 -1
  34. package/dist/errors.js.map +1 -1
  35. package/dist/face.d.ts +19 -25
  36. package/dist/face.d.ts.map +1 -1
  37. package/dist/face.js +30 -24
  38. package/dist/face.js.map +1 -1
  39. package/dist/fields.d.ts +13 -26
  40. package/dist/fields.d.ts.map +1 -1
  41. package/dist/fields.js +89 -116
  42. package/dist/fields.js.map +1 -1
  43. package/dist/immutable.d.ts +10 -0
  44. package/dist/immutable.d.ts.map +1 -0
  45. package/dist/immutable.js +75 -0
  46. package/dist/immutable.js.map +1 -0
  47. package/dist/index.d.ts +16 -12
  48. package/dist/index.d.ts.map +1 -1
  49. package/dist/index.js +6 -4
  50. package/dist/index.js.map +1 -1
  51. package/dist/internal/log.d.ts +6 -4
  52. package/dist/internal/log.d.ts.map +1 -1
  53. package/dist/internal/log.js +3 -1
  54. package/dist/internal/log.js.map +1 -1
  55. package/dist/law.d.ts +11 -11
  56. package/dist/law.d.ts.map +1 -1
  57. package/dist/law.js +1 -1
  58. package/dist/law.js.map +1 -1
  59. package/dist/lower.d.ts.map +1 -1
  60. package/dist/lower.js +11 -6
  61. package/dist/lower.js.map +1 -1
  62. package/dist/migration.d.ts +2 -3
  63. package/dist/migration.d.ts.map +1 -1
  64. package/dist/migration.js +5 -5
  65. package/dist/migration.js.map +1 -1
  66. package/dist/native.d.ts +2 -2
  67. package/dist/native.d.ts.map +1 -1
  68. package/dist/native.js.map +1 -1
  69. package/dist/query/atom.d.ts +1 -1
  70. package/dist/query/atom.d.ts.map +1 -1
  71. package/dist/query/atom.js.map +1 -1
  72. package/dist/query/description.d.ts +33 -0
  73. package/dist/query/description.d.ts.map +1 -0
  74. package/dist/query/description.js +302 -0
  75. package/dist/query/description.js.map +1 -0
  76. package/dist/query/lower.d.ts +60 -4
  77. package/dist/query/lower.d.ts.map +1 -1
  78. package/dist/query/lower.js +126 -161
  79. package/dist/query/lower.js.map +1 -1
  80. package/dist/query/parse-ir.d.ts +7 -2
  81. package/dist/query/parse-ir.d.ts.map +1 -1
  82. package/dist/query/parse-ir.js +240 -53
  83. package/dist/query/parse-ir.js.map +1 -1
  84. package/dist/query/run.d.ts.map +1 -1
  85. package/dist/query/run.js +8 -10
  86. package/dist/query/run.js.map +1 -1
  87. package/dist/query/scope.d.ts +3 -4
  88. package/dist/query/scope.d.ts.map +1 -1
  89. package/dist/query/scope.js +5 -10
  90. package/dist/query/scope.js.map +1 -1
  91. package/dist/relation.d.ts +22 -48
  92. package/dist/relation.d.ts.map +1 -1
  93. package/dist/relation.js +30 -82
  94. package/dist/relation.js.map +1 -1
  95. package/dist/result.d.ts +10 -25
  96. package/dist/result.d.ts.map +1 -1
  97. package/dist/result.js +7 -12
  98. package/dist/result.js.map +1 -1
  99. package/dist/rows.d.ts +11 -14
  100. package/dist/rows.d.ts.map +1 -1
  101. package/dist/rows.js +49 -237
  102. package/dist/rows.js.map +1 -1
  103. package/dist/runtime-codes.d.ts +1 -1
  104. package/dist/runtime-codes.d.ts.map +1 -1
  105. package/dist/runtime-codes.js +1 -2
  106. package/dist/runtime-codes.js.map +1 -1
  107. package/dist/runtime-errors.d.ts +27 -15
  108. package/dist/runtime-errors.d.ts.map +1 -1
  109. package/dist/runtime-errors.js +44 -8
  110. package/dist/runtime-errors.js.map +1 -1
  111. package/dist/runtime-native.d.ts +16 -34
  112. package/dist/runtime-native.d.ts.map +1 -1
  113. package/dist/runtime-native.js.map +1 -1
  114. package/dist/runtime.d.ts +11 -28
  115. package/dist/runtime.d.ts.map +1 -1
  116. package/dist/runtime.js +14 -54
  117. package/dist/runtime.js.map +1 -1
  118. package/dist/schema.d.ts +9 -1
  119. package/dist/schema.d.ts.map +1 -1
  120. package/dist/schema.js +85 -24
  121. package/dist/schema.js.map +1 -1
  122. package/dist/selection.d.ts +27 -0
  123. package/dist/selection.d.ts.map +1 -0
  124. package/dist/selection.js +104 -0
  125. package/dist/selection.js.map +1 -0
  126. package/dist/shape.d.ts +6 -9
  127. package/dist/shape.d.ts.map +1 -1
  128. package/dist/statements.d.ts +17 -52
  129. package/dist/statements.d.ts.map +1 -1
  130. package/dist/statements.js +92 -111
  131. package/dist/statements.js.map +1 -1
  132. package/dist/values.d.ts +25 -0
  133. package/dist/values.d.ts.map +1 -0
  134. package/dist/values.js +203 -0
  135. package/dist/values.js.map +1 -0
  136. package/pack-provenance.json +3 -3
  137. package/package.json +4 -4
  138. package/src/capacity.ts +86 -76
  139. package/src/changes.ts +225 -94
  140. package/src/closed.ts +161 -314
  141. package/src/codec.ts +123 -213
  142. package/src/compile.ts +61 -38
  143. package/src/db-native.ts +73 -68
  144. package/src/db.ts +268 -165
  145. package/src/errors.ts +16 -1
  146. package/src/face.ts +44 -74
  147. package/src/fields.ts +100 -146
  148. package/src/immutable.ts +76 -0
  149. package/src/index.ts +38 -31
  150. package/src/internal/log.ts +4 -5
  151. package/src/law.ts +14 -14
  152. package/src/lower.ts +13 -10
  153. package/src/migration.ts +5 -12
  154. package/src/native.ts +2 -1
  155. package/src/query/atom.ts +1 -0
  156. package/src/query/description.ts +394 -0
  157. package/src/query/lower.ts +139 -173
  158. package/src/query/parse-ir.ts +247 -54
  159. package/src/query/run.ts +15 -9
  160. package/src/query/scope.ts +10 -18
  161. package/src/relation.ts +58 -142
  162. package/src/result.ts +16 -45
  163. package/src/rows.ts +57 -250
  164. package/src/runtime-codes.ts +1 -2
  165. package/src/runtime-errors.ts +48 -8
  166. package/src/runtime-native.ts +13 -46
  167. package/src/runtime.ts +51 -119
  168. package/src/schema.ts +99 -29
  169. package/src/selection.ts +124 -0
  170. package/src/shape.ts +9 -9
  171. package/src/statements.ts +138 -189
  172. package/src/values.ts +223 -0
package/dist/schema.js CHANGED
@@ -1,8 +1,11 @@
1
+ import { isDeepStrictEqual } from "node:util";
1
2
  import { AuthoringError, SdkInvariantError } from "#errors.ts";
2
- import { isClosedMember, sealedFieldOf } from "#closed.ts";
3
+ import { isClosedMember, memberDescriptor, membersAgree, sealedFieldOf } from "#closed.ts";
3
4
  import { assertDeclarationOrderKey, assertDeclarationRecord, rosterOf } from "#fields.ts";
5
+ import { descriptorCache, isImmutable } from "#immutable.ts";
4
6
  import { classesComplete, computeClasses } from "#law.ts";
5
- import { isStatement, renderStatement } from "#statements.ts";
7
+ import { renderStatement, statementDescriptor } from "#statements.ts";
8
+ import { arrayValue, recordValue } from "#values.ts";
6
9
  function collectImplied(name, relations) {
7
10
  assertDeclarationRecord(`schema ${name} relations`, relations);
8
11
  const rendered = new Set();
@@ -26,7 +29,7 @@ function collectImplied(name, relations) {
26
29
  return { rendered, roster };
27
30
  }
28
31
  function statementOwners(statement) {
29
- const data = statement.data;
32
+ const data = statement;
30
33
  if (data.kind === "key") {
31
34
  return [data.owner];
32
35
  }
@@ -40,9 +43,9 @@ function verifyMembership(name, relations, statement, rendered) {
40
43
  message: `schema ${name}: relation ${owner.name} is not declared in this schema — ${rendered}`
41
44
  });
42
45
  }
43
- if (member !== owner) {
46
+ if (!membersAgree(member, owner)) {
44
47
  throw new AuthoringError({
45
- message: `schema ${name}: statement references a different relation value named ${owner.name} than the one this schema declares — ${rendered}`
48
+ message: `schema ${name}: statement references a different relation declaration named ${owner.name} than the one this schema declares — ${rendered}`
46
49
  });
47
50
  }
48
51
  }
@@ -72,7 +75,7 @@ function verifyBindingHandles(name, face, binding, rendered) {
72
75
  }
73
76
  }
74
77
  function verifyHandles(name, statement, rendered) {
75
- const data = statement.data;
78
+ const data = statement;
76
79
  if (data.kind === "key") {
77
80
  return;
78
81
  }
@@ -84,7 +87,7 @@ function verifyHandles(name, statement, rendered) {
84
87
  }
85
88
  function closedTargetOf(statements, owner, field) {
86
89
  for (const statement of statements) {
87
- const data = statement.data;
90
+ const data = statement;
88
91
  if (data.kind !== "containment" && data.kind !== "mirrors") {
89
92
  continue;
90
93
  }
@@ -107,7 +110,7 @@ function closedTargetOf(statements, owner, field) {
107
110
  }
108
111
  function verifyClosedReferences(name, statements) {
109
112
  for (const statement of statements) {
110
- const data = statement.data;
113
+ const data = statement;
111
114
  if (data.kind === "key") {
112
115
  continue;
113
116
  }
@@ -160,7 +163,7 @@ function verifyClosedReferenceBinding(name, statements, face, binding, rendered)
160
163
  function verifyTargetKeys(name, statements, implied) {
161
164
  const declared = new Map();
162
165
  for (const statement of statements) {
163
- const data = statement.data;
166
+ const data = statement;
164
167
  if (data.kind !== "key") {
165
168
  continue;
166
169
  }
@@ -173,7 +176,7 @@ function verifyTargetKeys(name, statements, implied) {
173
176
  }
174
177
  }
175
178
  for (const statement of statements) {
176
- const data = statement.data;
179
+ const data = statement;
177
180
  if (data.kind === "key") {
178
181
  continue;
179
182
  }
@@ -235,17 +238,75 @@ function verifyTargetKeyFace(name, face, implied, declared, rendered) {
235
238
  message: `schema ${name}: ${rendered}: target projection (${face.projection.join(", ")}) matches no declared key of ${face.owner.name} — available keys: ${available}${hint}`
236
239
  });
237
240
  }
241
+ /**
242
+ * Logical schema equivalence, including the ordered native ordinals and
243
+ * host decoding domains. Schema display names do not change the theory.
244
+ * A database/snapshot still has its own resource identity and lifetime.
245
+ */
246
+ function schemasAgree(leftInput, rightInput) {
247
+ const left = schemaDescriptor(leftInput);
248
+ const right = schemaDescriptor(rightInput);
249
+ if (left === right)
250
+ return true;
251
+ const cacheable = isImmutable(left) && isImmutable(right);
252
+ const cached = schemaComparisons.get(left)?.get(right);
253
+ if (cacheable && cached !== undefined)
254
+ return cached;
255
+ const names = Object.keys(left.relations);
256
+ const otherNames = Object.keys(right.relations);
257
+ const equal = names.length === otherNames.length &&
258
+ names.every((name, index) => {
259
+ const member = right.relations[name];
260
+ return name === otherNames[index] && member !== undefined && membersAgree(left.relations[name], member);
261
+ }) &&
262
+ isDeepStrictEqual(left.statements, right.statements) &&
263
+ isDeepStrictEqual(left.classes, right.classes);
264
+ if (cacheable) {
265
+ let comparisons = schemaComparisons.get(left);
266
+ if (comparisons === undefined) {
267
+ comparisons = new WeakMap();
268
+ schemaComparisons.set(left, comparisons);
269
+ }
270
+ comparisons.set(right, equal);
271
+ }
272
+ return equal;
273
+ }
274
+ const schemaComparisons = new WeakMap();
275
+ function schemaDescriptor(input) {
276
+ return checkedSchema(input);
277
+ }
278
+ const checkedSchema = descriptorCache((input) => {
279
+ const raw = recordValue("schema", input, ["name", "relations", "statements", "classes"]);
280
+ if (typeof raw.name !== "string")
281
+ throw new AuthoringError({ message: "schema: expected a name" });
282
+ const relations = ownRelations(raw.name, raw.relations);
283
+ const statements = arrayValue("schema statements", raw.statements, (_, statement) => statementDescriptor(statement));
284
+ const result = schema(raw.name, relations, statements);
285
+ const classes = recordValue("schema classes", raw.classes, Object.keys(result.classes));
286
+ for (const [name, fields] of Object.entries(result.classes)) {
287
+ const supplied = recordValue(`schema classes.${name}`, classes[name], Object.keys(fields));
288
+ for (const [field, value] of Object.entries(fields)) {
289
+ if (supplied[field] !== value)
290
+ throw new AuthoringError({ message: `schema classes.${name}.${field}: incorrect class` });
291
+ }
292
+ }
293
+ return result;
294
+ });
295
+ function ownRelations(name, input) {
296
+ if (typeof input !== "object" || input === null)
297
+ throw new AuthoringError({ message: `schema ${name}: expected relations` });
298
+ assertDeclarationRecord(`schema ${name} relations`, input);
299
+ return Object.freeze(Object.fromEntries(Object.entries(input).map(([name, member]) => [name, memberDescriptor(member)])));
300
+ }
238
301
  function schema(name, relations, statements) {
239
- const implied = collectImplied(name, relations);
302
+ assertDeclarationOrderKey("schema", name);
303
+ const ownedRelations = ownRelations(name, relations);
304
+ const ownedStatements = arrayValue("schema statements", statements, (_, statement) => statementDescriptor(statement));
305
+ const implied = collectImplied(name, ownedRelations);
240
306
  const seen = new Set();
241
- for (const statement of statements) {
242
- if (!isStatement(statement)) {
243
- throw new AuthoringError({
244
- message: `schema ${name}: a statement is minted only by key/contained/mirrors/capacity — a structural literal skips the construction-time arity and roster walls`
245
- });
246
- }
307
+ for (const statement of ownedStatements) {
247
308
  const rendered = renderStatement(statement);
248
- verifyMembership(name, relations, statement, rendered);
309
+ verifyMembership(name, ownedRelations, statement, rendered);
249
310
  if (implied.rendered.has(rendered)) {
250
311
  throw new AuthoringError({
251
312
  message: `schema ${name}: ${rendered} is redundant here (closedness already implies it) — and rejected as a duplicate`
@@ -257,13 +318,13 @@ function schema(name, relations, statements) {
257
318
  seen.add(rendered);
258
319
  verifyHandles(name, statement, rendered);
259
320
  }
260
- verifyClosedReferences(name, statements);
261
- verifyTargetKeys(name, statements, implied.roster);
262
- const classes = computeClasses(name, relations, statements);
263
- if (!classesComplete(classes, relations)) {
321
+ verifyClosedReferences(name, ownedStatements);
322
+ verifyTargetKeys(name, ownedStatements, implied.roster);
323
+ const classes = computeClasses(name, ownedRelations, ownedStatements);
324
+ if (!classesComplete(classes, ownedRelations)) {
264
325
  throw new SdkInvariantError({ message: `schema ${name}: class-map construction incomplete` });
265
326
  }
266
- return Object.freeze({ name, relations, statements: Object.freeze([...statements]), classes });
327
+ return Object.freeze({ name, relations: ownedRelations, statements: Object.freeze(ownedStatements), classes });
267
328
  }
268
- export { schema };
329
+ export { schema, schemaDescriptor, schemasAgree };
269
330
  //# sourceMappingURL=schema.js.map
@@ -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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"}
@@ -0,0 +1,27 @@
1
+ import { type AnyClosed } from "./closed.js";
2
+ import { type AnyField, type ClosedIdField, type Infer } from "./fields.js";
3
+ import type { AnyRelation, RelationFields } from "./relation.js";
4
+ import { type LiteralSetSpec, type LiteralSpec } from "./spec.js";
5
+ type Selectable = AnyRelation | AnyClosed;
6
+ type FieldsOf<R extends Selectable> = R extends AnyRelation ? RelationFields<R> : R extends AnyClosed ? {
7
+ readonly id: ClosedIdField<R["name"], R["handles"]>;
8
+ } & R["columns"] : never;
9
+ type SelectionInput<R extends Selectable> = {
10
+ readonly [K in keyof FieldsOf<R>]?: Infer<FieldsOf<R>[K]> | readonly Infer<FieldsOf<R>[K]>[];
11
+ };
12
+ interface SelectionBinding {
13
+ readonly field: string;
14
+ readonly set: LiteralSetSpec;
15
+ }
16
+ interface Selected<R extends Selectable = Selectable> {
17
+ readonly relation: R;
18
+ readonly selection: readonly SelectionBinding[];
19
+ }
20
+ type AnySelected = Selected;
21
+ /** Checked logical literals use the same field interpreter as fact values. */
22
+ declare function selectionLiteral(field: AnyField, input: unknown): LiteralSpec;
23
+ declare function selectionBindings(owner: Selectable, input: unknown): readonly SelectionBinding[];
24
+ declare function select<R extends Selectable>(relation: R, input: SelectionInput<R>): Selected<R>;
25
+ export type { AnySelected, FieldsOf, Selectable, Selected, SelectionBinding, SelectionInput };
26
+ export { select, selectionBindings, selectionLiteral };
27
+ //# sourceMappingURL=selection.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"selection.d.ts","sourceRoot":"","sources":["../src/selection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAmD,MAAM,YAAY,CAAA;AAE5F,OAAO,EAAE,KAAK,QAAQ,EAA2B,KAAK,aAAa,EAAE,KAAK,KAAK,EAAa,MAAM,YAAY,CAAA;AAC9G,OAAO,KAAK,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAC/D,OAAO,EAAE,KAAK,cAAc,EAAE,KAAK,WAAW,EAAiB,MAAM,UAAU,CAAA;AAG/E,KAAK,UAAU,GAAG,WAAW,GAAG,SAAS,CAAA;AACzC,KAAK,QAAQ,CAAC,CAAC,SAAS,UAAU,IAAI,CAAC,SAAS,WAAW,GACxD,cAAc,CAAC,CAAC,CAAC,GACjB,CAAC,SAAS,SAAS,GAClB;IAAE,QAAQ,CAAC,EAAE,EAAE,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAA;CAAE,GAAG,CAAC,CAAC,SAAS,CAAC,GACtE,KAAK,CAAA;AACT,KAAK,cAAc,CAAC,CAAC,SAAS,UAAU,IAAI;IAC3C,QAAQ,EAAE,CAAC,IAAI,MAAM,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,SAAS,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;CAC5F,CAAA;AACD,UAAU,gBAAgB;IACzB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,GAAG,EAAE,cAAc,CAAA;CAC5B;AACD,UAAU,QAAQ,CAAC,CAAC,SAAS,UAAU,GAAG,UAAU;IACnD,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAA;IACpB,QAAQ,CAAC,SAAS,EAAE,SAAS,gBAAgB,EAAE,CAAA;CAC/C;AACD,KAAK,WAAW,GAAG,QAAQ,CAAA;AAE3B,8EAA8E;AAC9E,iBAAS,gBAAgB,CAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,GAAG,WAAW,CAoBtE;AAED,iBAAS,iBAAiB,CAAC,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,OAAO,GAAG,SAAS,gBAAgB,EAAE,CAsCzF;AAED,iBAAS,MAAM,CAAC,CAAC,SAAS,UAAU,EAAE,QAAQ,EAAE,CAAC,EAAE,KAAK,EAAE,cAAc,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CA+BxF;AAED,YAAY,EAAE,WAAW,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,gBAAgB,EAAE,cAAc,EAAE,CAAA;AAC7F,OAAO,EAAE,MAAM,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,CAAA"}
@@ -0,0 +1,104 @@
1
+ import { memberDescriptor, sealedFieldOf, sealedFieldsOf } from "#closed.ts";
2
+ import { AuthoringError } from "#errors.ts";
3
+ import { assertDeclarationRecord, literalOf } from "#fields.ts";
4
+ import { renderLiteral } from "#spec.ts";
5
+ import { arrayValue, recordValue } from "#values.ts";
6
+ /** Checked logical literals use the same field interpreter as fact values. */
7
+ function selectionLiteral(field, input) {
8
+ const raw = recordValue("selection literal", input, "closed" in field ? ["kind", "handle"] : ["kind", "value"]);
9
+ if ("closed" in field) {
10
+ if (raw.kind !== "handle")
11
+ throw new AuthoringError({ message: "closed selection requires a handle literal" });
12
+ return Object.freeze(literalOf(field, raw.handle));
13
+ }
14
+ if (raw.kind !== "value")
15
+ throw new AuthoringError({ message: "selection requires a value literal" });
16
+ const value = recordValue("selection value", raw.value, field.kind === "interval" ? ["kind", "start", "end"] : ["kind", "value"]);
17
+ let kind = field.kind;
18
+ if (field.kind === "str")
19
+ kind = "string";
20
+ if (field.kind === "bytes")
21
+ kind = "fixedBytes";
22
+ if (field.kind === "interval")
23
+ kind = { u64: "intervalU64", i64: "intervalI64", f64: "intervalF64" }[field.element];
24
+ if (value.kind !== kind)
25
+ throw new AuthoringError({ message: `selection requires the ${kind} value tag` });
26
+ const literal = literalOf(field, field.kind === "interval" ? { start: value.start, end: value.end } : value.value);
27
+ if (literal.kind === "value")
28
+ Object.freeze(literal.value);
29
+ return Object.freeze(literal);
30
+ }
31
+ function selectionBindings(owner, input) {
32
+ if (!Array.isArray(input))
33
+ throw new AuthoringError({ message: "selection: expected bindings" });
34
+ const selected = new Set();
35
+ return Object.freeze(arrayValue("selection", input, (_, raw) => {
36
+ const binding = recordValue("selection binding", raw, ["field", "set"]);
37
+ if (typeof binding.field !== "string")
38
+ throw new AuthoringError({ message: "selection: expected a field name" });
39
+ const field = sealedFieldOf(owner, binding.field);
40
+ if (field === undefined)
41
+ throw new AuthoringError({ message: `relation ${owner.name} has no field ${binding.field}` });
42
+ if (selected.has(binding.field))
43
+ throw new AuthoringError({ message: "selection: duplicate field" });
44
+ selected.add(binding.field);
45
+ const set = binding.set;
46
+ if (typeof set !== "object" || set === null || !("kind" in set))
47
+ throw new AuthoringError({ message: "literal set: expected a descriptor" });
48
+ assertDeclarationRecord("literal set", set);
49
+ if (set.kind === "one") {
50
+ const rawSet = recordValue("literal set", set, ["kind", "literal"]);
51
+ return Object.freeze({
52
+ field: binding.field,
53
+ set: Object.freeze({ kind: "one", literal: selectionLiteral(field, rawSet.literal) })
54
+ });
55
+ }
56
+ if (set.kind !== "many")
57
+ throw new AuthoringError({ message: "literal set: unknown kind" });
58
+ const rawSet = recordValue("literal set", set, ["kind", "literals"]);
59
+ if (!Array.isArray(rawSet.literals) || rawSet.literals.length < 2)
60
+ throw new AuthoringError({ message: "literal set: expected at least two distinct literals" });
61
+ const literals = arrayValue("selection literals", rawSet.literals, (_, literal) => selectionLiteral(field, literal));
62
+ if (new Set(literals.map(renderLiteral)).size !== literals.length)
63
+ throw new AuthoringError({ message: "literal set: duplicate literal" });
64
+ return Object.freeze({
65
+ field: binding.field,
66
+ set: Object.freeze({ kind: "many", literals: Object.freeze(literals) })
67
+ });
68
+ }));
69
+ }
70
+ function select(relation, input) {
71
+ const owner = memberDescriptor(relation);
72
+ assertDeclarationRecord(`relation ${owner.name} selection`, input);
73
+ const fields = sealedFieldsOf(owner);
74
+ const selection = Object.entries(input).map(([name, entry]) => {
75
+ const field = fields.find((field) => field.name === name)?.field;
76
+ if (field === undefined)
77
+ throw new AuthoringError({ message: `relation ${owner.name} has no field ${name}` });
78
+ if (!Array.isArray(entry))
79
+ return { field: name, set: { kind: "one", literal: literalOf(field, entry) } };
80
+ const context = `relation ${owner.name}.${name}`;
81
+ if (entry.length < 2)
82
+ throw new AuthoringError({
83
+ message: entry.length === 0
84
+ ? `${context}: an empty literal set selects nothing — write the selection you mean`
85
+ : `${context}: a one-element literal set is the bare literal respelled — write the literal`
86
+ });
87
+ const literals = arrayValue(context, entry, (_, value) => literalOf(field, value));
88
+ const seen = new Set();
89
+ for (const literal of literals) {
90
+ const rendered = renderLiteral(literal);
91
+ if (seen.has(rendered))
92
+ throw new AuthoringError({ message: `${context}: the literal set spells ${rendered} twice — write it once` });
93
+ seen.add(rendered);
94
+ }
95
+ return { field: name, set: { kind: "many", literals } };
96
+ });
97
+ if (selection.length === 0)
98
+ throw new AuthoringError({
99
+ message: `relation ${owner.name}: an empty selection is the bare relation respelled — pass the relation itself`
100
+ });
101
+ return Object.freeze({ relation: owner, selection: selectionBindings(owner, selection) });
102
+ }
103
+ export { select, selectionBindings, selectionLiteral };
104
+ //# sourceMappingURL=selection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"selection.js","sourceRoot":"","sources":["../src/selection.ts"],"names":[],"mappings":"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"}
package/dist/shape.d.ts CHANGED
@@ -3,24 +3,21 @@ import type { ParamsRecord } from "./query/scope.js";
3
3
  /**
4
4
  * Shared derived types: `S` is a
5
5
  * declared core schema value's type, `Rel<S>` its ordinary (writable)
6
- * relations, `Fact<R>` the inferred row object, `Key<R>` the primary-key
7
- * object accepted by `QueryReader.get`, and `QueryTemplate<S, P, A>` the
6
+ * relations, `Fact<R>` the inferred row object, `Key<K>` the exact value
7
+ * of a declared key accepted by `QueryReader.get`, and `QueryTemplate<S, P, A>` the
8
8
  * immutable schema-bound logical query template. All are derived from the
9
9
  * existing typed descriptors — no second hand-maintained roster.
10
10
  */
11
11
  import type { AnyRelation, Fact } from "./relation.js";
12
12
  import type { AnySchema } from "./schema.js";
13
+ import type { KeyStatement } from "./statements.js";
13
14
  /** The ordinary relations of a schema (closed vocabularies are ground axioms, never ingestion targets). */
14
15
  type Rel<S extends AnySchema> = Extract<S["relations"][keyof S["relations"]], AnyRelation>;
15
16
  /**
16
- * The primary-key object of a relation: the fields of its FIRST
17
- * materialized key statement (a closed relation's synthetic `(id)`,
18
- * otherwise the first declared `key`). The exact projection is a schema
19
- * fact, verified at execution against the compiled tables; the type admits
20
- * any subset of the fact's own fields and the runtime refuses a mismatch
21
- * with a typed `DbError` before any native work.
17
+ * The structural value of one declared key, derived from its owner's
18
+ * fields and its exact projection. Every selected field is required.
22
19
  */
23
- type Key<R extends AnyRelation> = Partial<Fact<R>>;
20
+ type Key<K extends KeyStatement<AnyRelation, readonly string[]>> = Pick<Fact<K["owner"]>, Extract<K["projection"][number], keyof Fact<K["owner"]>>>;
24
21
  /** Immutable typed query template. */
25
22
  type QueryTemplate<S extends AnySchema, P extends ParamsRecord, A> = Query<S["relations"], A, P>;
26
23
  export type { Key, QueryTemplate, Rel };
@@ -1 +1 @@
1
- {"version":3,"file":"shape.d.ts","sourceRoot":"","sources":["../src/shape.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAA;AAC5C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AACnD;;;;;;;GAOG;AACH,OAAO,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,cAAc,CAAA;AACrD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AAE3C,2GAA2G;AAC3G,KAAK,GAAG,CAAC,CAAC,SAAS,SAAS,IAAI,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,CAAC,EAAE,WAAW,CAAC,CAAA;AAE1F;;;;;;;GAOG;AACH,KAAK,GAAG,CAAC,CAAC,SAAS,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAA;AAElD,sCAAsC;AACtC,KAAK,aAAa,CAAC,CAAC,SAAS,SAAS,EAAE,CAAC,SAAS,YAAY,EAAE,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;AAEhG,YAAY,EAAE,GAAG,EAAE,aAAa,EAAE,GAAG,EAAE,CAAA"}
1
+ {"version":3,"file":"shape.d.ts","sourceRoot":"","sources":["../src/shape.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAA;AAC5C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AACnD;;;;;;;GAOG;AACH,OAAO,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,cAAc,CAAA;AACrD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AAC3C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAElD,2GAA2G;AAC3G,KAAK,GAAG,CAAC,CAAC,SAAS,SAAS,IAAI,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,CAAC,EAAE,WAAW,CAAC,CAAA;AAE1F;;;GAGG;AACH,KAAK,GAAG,CAAC,CAAC,SAAS,YAAY,CAAC,WAAW,EAAE,SAAS,MAAM,EAAE,CAAC,IAAI,IAAI,CACtE,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAChB,OAAO,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CACxD,CAAA;AAED,sCAAsC;AACtC,KAAK,aAAa,CAAC,CAAC,SAAS,SAAS,EAAE,CAAC,SAAS,YAAY,EAAE,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;AAEhG,YAAY,EAAE,GAAG,EAAE,aAAa,EAAE,GAAG,EAAE,CAAA"}
@@ -1,80 +1,45 @@
1
1
  import { type BoundsOnTarget, type CapacityWeight, type CapacityWindow, type UnitDimensionBan, type WeightOnSource } from "./capacity.js";
2
- import { type AnyFace, type FaceData, type SameArity, type SameShapes } from "./face.js";
2
+ import { type AnyFace, type SameArity, type SameShapes } from "./face.js";
3
3
  import type { AnyRelation, RelationFields } from "./relation.js";
4
- import { type CapacityWindowSpec, type WeightSpec } from "./spec.js";
5
- interface KeyData<R extends AnyRelation, Projection extends readonly string[]> {
4
+ interface KeyStatement<R extends AnyRelation = AnyRelation, Projection extends readonly string[] = readonly string[]> {
6
5
  readonly kind: "key";
7
6
  readonly owner: R;
8
7
  readonly projection: Projection;
9
8
  }
10
- interface ContainmentData<Src extends FaceData = FaceData, Tgt extends FaceData = FaceData> {
9
+ interface ContainmentStatement<Src extends AnyFace = AnyFace, Tgt extends AnyFace = AnyFace> {
11
10
  readonly kind: "containment";
12
11
  readonly source: Src;
13
12
  readonly target: Tgt;
14
13
  }
15
- interface MirrorsData<Src extends FaceData = FaceData, Tgt extends FaceData = FaceData> {
14
+ interface MirrorsStatement<Src extends AnyFace = AnyFace, Tgt extends AnyFace = AnyFace> {
16
15
  readonly kind: "mirrors";
17
16
  readonly source: Src;
18
17
  readonly target: Tgt;
19
18
  }
20
- interface CapacityData<Tgt extends FaceData = FaceData, Src extends FaceData = FaceData> {
19
+ interface CapacityStatement<Tgt extends AnyFace = AnyFace, Src extends AnyFace = AnyFace> {
21
20
  readonly kind: "capacity";
22
21
  readonly target: Tgt;
23
- readonly weight: WeightSpec;
24
- readonly window: CapacityWindowSpec;
22
+ readonly weight: CapacityWeight;
23
+ readonly window: CapacityWindow;
25
24
  readonly source: Src;
26
25
  }
27
- type StatementData = KeyData<AnyRelation, readonly string[]> | ContainmentData | MirrorsData | CapacityData;
28
- declare const admitted: unique symbol;
29
- interface Statement {
30
- readonly data: StatementData;
31
- readonly [admitted]: true;
32
- }
33
- declare function isStatement(value: unknown): value is Statement;
34
- interface ContainedStatement<Src extends FaceData, Tgt extends FaceData> extends Statement {
35
- readonly data: ContainmentData<Src, Tgt> | MirrorsData<Src, Tgt>;
36
- }
37
- interface CapacityStatement<Tgt extends FaceData, Src extends FaceData> extends Statement {
38
- readonly data: CapacityData<Tgt, Src>;
39
- }
40
- interface KeyStatement<R extends AnyRelation, Projection extends readonly string[]> extends Statement {
41
- readonly data: KeyData<R, Projection>;
42
- }
43
- /**
44
- * `R(X) -> R` — the FD key form, composite keys as tuples. No selection
45
- * parameter exists (the FD-with-selection shape is unrepresentable, as in
46
- * the grammar), and only ordinary relations are accepted: a closed
47
- * relation's key `R(id) -> R` is materialized by the engine, so an
48
- * explicit one would only ever be a duplicate. Every projected name is
49
- * checked against `R`'s field block in the type, and the tuple is carried
50
- * in the returned value's type ({@link KeyStatement}) — keyed point reads
51
- * through THIS statement are typed field-for-field, descriptors resolvable
52
- * through the owner's schema type. A DUPLICATE field in the projection is
53
- * refused here, at the mint (the engine's `FieldSet` refuses the same
54
- * duplicate at `Db.create`; canonical utterance says the twice-spelled
55
- * field is the once-spelled projection respelled) — without this wall a
56
- * `new Set`-collapsed duplicate could set-match a shorter target
57
- * projection the engine refuses.
58
- */
26
+ type Statement = KeyStatement | ContainmentStatement | MirrorsStatement | CapacityStatement;
27
+ /** Every authoring path checks and owns the same plain descriptor. */
28
+ declare function statementDescriptor<S extends Statement>(input: S): S;
29
+ declare function statementDescriptor(input: unknown): Statement;
59
30
  declare function key<R extends AnyRelation, const Projection extends readonly [keyof RelationFields<R> & string, ...(keyof RelationFields<R> & string)[]]>(relation: R, fields: Projection): KeyStatement<R, Projection>;
60
- declare function contained<A extends AnyFace, B extends AnyFace>(source: A, target: B & SameArity<A, B> & SameShapes<A, B>): ContainedStatement<A["data"], B["data"]>;
61
- declare function mirrors<A extends AnyFace, B extends AnyFace>(source: A, target: B & SameArity<A, B> & SameShapes<A, B>): ContainedStatement<A["data"], B["data"]>;
62
- /**
63
- * The chapter 34 NAMED-OPTIONS capacity call — it replaces the old four
64
- * positional arguments: `capacity(target, { from, weight?, within })`.
65
- * Unit weight is the default; `weigh(...)`/`within(...)` remain the only
66
- * mints for the weight/window values.
67
- */
31
+ declare function contained<A extends AnyFace, B extends AnyFace>(source: A, target: B & SameArity<A, B> & SameShapes<A, B>): ContainmentStatement<A, B>;
32
+ declare function mirrors<A extends AnyFace, B extends AnyFace>(source: A, target: B & SameArity<A, B> & SameShapes<A, B>): MirrorsStatement<A, B>;
68
33
  declare function capacity<B extends AnyFace, W extends CapacityWindow, A extends AnyFace>(target: B, options: {
69
34
  readonly from: A & SameArity<B, A> & SameShapes<B, A>;
70
35
  readonly within: W & UnitDimensionBan<W> & BoundsOnTarget<W, B>;
71
- }): CapacityStatement<B["data"], A["data"]>;
36
+ }): CapacityStatement<B, A>;
72
37
  declare function capacity<B extends AnyFace, M extends CapacityWeight, W extends CapacityWindow, A extends AnyFace>(target: B, options: {
73
38
  readonly from: A & SameArity<B, A> & SameShapes<B, A>;
74
39
  readonly weight: M & WeightOnSource<M, A>;
75
40
  readonly within: W & BoundsOnTarget<W, B>;
76
- }): CapacityStatement<B["data"], A["data"]>;
41
+ }): CapacityStatement<B, A>;
77
42
  declare function renderStatement(statement: Statement): string;
78
- export type { CapacityData, CapacityStatement, ContainedStatement, ContainmentData, KeyData, KeyStatement, Statement, StatementData };
79
- export { capacity, contained, isStatement, key, mirrors, renderStatement };
43
+ export type { CapacityStatement, ContainmentStatement, KeyStatement, MirrorsStatement, Statement };
44
+ export { capacity, contained, key, mirrors, renderStatement, statementDescriptor };
80
45
  //# sourceMappingURL=statements.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"statements.d.ts","sourceRoot":"","sources":["../src/statements.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"statements.d.ts","sourceRoot":"","sources":["../src/statements.ts"],"names":[],"mappings":"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"}