@bjornpagen/bumbledb 1.2.1 → 1.3.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 (56) hide show
  1. package/COOKBOOK.md +178 -0
  2. package/README.md +2 -2
  3. package/dist/alternatives.d.ts +25 -0
  4. package/dist/alternatives.d.ts.map +1 -0
  5. package/dist/alternatives.js +59 -0
  6. package/dist/alternatives.js.map +1 -0
  7. package/dist/index.d.ts +4 -2
  8. package/dist/index.d.ts.map +1 -1
  9. package/dist/index.js +1 -0
  10. package/dist/index.js.map +1 -1
  11. package/dist/native.d.ts +14 -0
  12. package/dist/native.d.ts.map +1 -1
  13. package/dist/native.js.map +1 -1
  14. package/dist/query/atom.d.ts +2 -1
  15. package/dist/query/atom.d.ts.map +1 -1
  16. package/dist/query/atom.js.map +1 -1
  17. package/dist/query/compute.d.ts +16 -1
  18. package/dist/query/compute.d.ts.map +1 -1
  19. package/dist/query/compute.js +15 -2
  20. package/dist/query/compute.js.map +1 -1
  21. package/dist/query/description.d.ts +10 -2
  22. package/dist/query/description.d.ts.map +1 -1
  23. package/dist/query/description.js +10 -1
  24. package/dist/query/description.js.map +1 -1
  25. package/dist/query/find.d.ts +13 -6
  26. package/dist/query/find.d.ts.map +1 -1
  27. package/dist/query/find.js +1 -1
  28. package/dist/query/find.js.map +1 -1
  29. package/dist/query/lower.d.ts +3 -0
  30. package/dist/query/lower.d.ts.map +1 -1
  31. package/dist/query/lower.js +37 -28
  32. package/dist/query/lower.js.map +1 -1
  33. package/dist/query/parse-ir.d.ts.map +1 -1
  34. package/dist/query/parse-ir.js +24 -1
  35. package/dist/query/parse-ir.js.map +1 -1
  36. package/dist/query/segments.d.ts +20 -0
  37. package/dist/query/segments.d.ts.map +1 -0
  38. package/dist/query/segments.js +35 -0
  39. package/dist/query/segments.js.map +1 -0
  40. package/dist/scalar.d.ts +30 -8
  41. package/dist/scalar.d.ts.map +1 -1
  42. package/dist/scalar.js +80 -2
  43. package/dist/scalar.js.map +1 -1
  44. package/pack-provenance.json +3 -3
  45. package/package.json +4 -4
  46. package/src/alternatives.ts +95 -0
  47. package/src/index.ts +12 -1
  48. package/src/native.ts +14 -0
  49. package/src/query/atom.ts +2 -0
  50. package/src/query/compute.ts +41 -2
  51. package/src/query/description.ts +34 -4
  52. package/src/query/find.ts +37 -26
  53. package/src/query/lower.ts +35 -29
  54. package/src/query/parse-ir.ts +23 -1
  55. package/src/query/segments.ts +61 -0
  56. package/src/scalar.ts +140 -7
package/dist/scalar.d.ts CHANGED
@@ -1,10 +1,14 @@
1
+ import type { ScalarExprIr } from "./native.js";
1
2
  import type { ValueSpec } from "./spec.js";
2
3
  /** F0: leaf scope for the shared AST (C1). Query vars are typed; source fields stay unresolved. */
3
4
  export type ScalarLeafScope = "query-var" | "source-field";
4
5
  /** The engine's scalar result vocabulary — distinct at the type level. */
5
6
  type ScalarKind = "u64" | "i64" | "f64" | "bool";
6
7
  /** Cached result kind: known only when derivable; otherwise honestly unresolved. */
7
- type ScalarResultKind = ScalarKind | "unresolved";
8
+ type IntervalKind = "intervalU64" | "intervalI64" | "intervalF64";
9
+ type ScalarInputKind = ScalarKind | IntervalKind;
10
+ type ScalarResultKind = ScalarInputKind | "unresolved";
11
+ type Rounding = "towardZero" | "nearestTiesAwayFromZero" | "nearestTiesToEven";
8
12
  /** Host value for a derived scalar kind. */
9
13
  type ScalarValue<K extends ScalarKind> = K extends "f64" ? number : K extends "bool" ? boolean : bigint;
10
14
  type NumericCast = "toF64" | "toF64Exact" | "toI64Exact" | "toU64Exact";
@@ -26,7 +30,7 @@ type ScalarLiteral = {
26
30
  } | {
27
31
  readonly f64: number;
28
32
  };
29
- type ScalarOpKind = "literal" | "negate" | "isNaN" | "isFinite" | "add" | "subtract" | "multiply" | "divide" | "cast";
33
+ type ScalarOpKind = "literal" | "negate" | "isNaN" | "isFinite" | "add" | "subtract" | "multiply" | "divide" | "cast" | "mulDiv" | "measure";
30
34
  /**
31
35
  * Structural query-variable leaf. The query layer supplies a bound variable
32
36
  * whose field kind is already a schema kind; this module does not import
@@ -47,7 +51,16 @@ type SourceFieldLeaf = {
47
51
  readonly name: string;
48
52
  };
49
53
  type ScalarLeaf<S extends ScalarLeafScope> = S extends "query-var" ? QueryVarLeaf : SourceFieldLeaf;
50
- type ScalarNodeBody<S extends ScalarLeafScope> = ScalarLeaf<S> | {
54
+ type ScalarNodeBody<S extends ScalarLeafScope> = {
55
+ readonly kind: "measure";
56
+ readonly expr: ScalarNode<S>;
57
+ } | {
58
+ readonly kind: "mulDiv";
59
+ readonly a: ScalarNode<S>;
60
+ readonly b: ScalarNode<S>;
61
+ readonly divisor: ScalarNode<S>;
62
+ readonly rounding: Rounding;
63
+ } | ScalarLeaf<S> | {
51
64
  readonly kind: "literal";
52
65
  readonly value: ScalarLiteral;
53
66
  } | {
@@ -109,15 +122,18 @@ declare function literalValue(value: ScalarLiteral): ScalarLiteral;
109
122
  declare function literalWireOf(value: ScalarLiteral): ValueSpec;
110
123
  declare function literalKindOf(value: ScalarLiteral): ScalarKind;
111
124
  declare function assertDepth(where: string, depth: number): void;
112
- declare function assertNumeric(where: string, kind: ScalarKind): void;
113
- declare function assertSameKind(where: string, left: ScalarKind, right: ScalarKind): ScalarKind;
125
+ declare function assertNumeric(where: string, kind: ScalarInputKind): asserts kind is NumericKind;
126
+ declare function assertSameKind(where: string, left: ScalarInputKind, right: ScalarInputKind): ScalarInputKind;
114
127
  declare function isScalarNode(value: unknown): value is ScalarNode;
115
128
  declare function isUnresolvedScalar(node: ScalarNode): boolean;
116
129
  /** Query-var leaf — kind is the variable's schema kind, already known. */
117
- declare function queryVarLeaf<K extends ScalarKind>(ref: ScalarQueryVar, kind: K): ScalarNode<"query-var", K>;
130
+ declare function queryVarLeaf<K extends ScalarInputKind>(ref: ScalarQueryVar, kind: K): ScalarNode<"query-var", K>;
118
131
  declare function scalarLiteral<S extends ScalarLeafScope>(scope: S, value: ScalarLiteral): ScalarNode<S, ScalarKind>;
119
132
  type BinaryOp = "add" | "subtract" | "multiply" | "divide";
120
133
  declare function scalarBinary<S extends ScalarLeafScope>(where: string, op: BinaryOp, left: ScalarNode<S>, right: ScalarNode<S>): ScalarNode<S, ScalarResultKind>;
134
+ declare function roundingMode(value: unknown): Rounding;
135
+ declare function scalarMulDiv<S extends ScalarLeafScope>(where: string, a: ScalarNode<S>, b: ScalarNode<S>, divisor: ScalarNode<S>, rounding: Rounding): ScalarNode<S>;
136
+ declare function scalarMeasure<S extends ScalarLeafScope>(where: string, expr: ScalarNode<S>): ScalarNode<S>;
121
137
  declare function scalarNegate<S extends ScalarLeafScope>(where: string, expr: ScalarNode<S>): ScalarNode<S, ScalarResultKind>;
122
138
  declare function scalarCast<S extends ScalarLeafScope>(where: string, cast: NumericCast, result: ScalarKind, expr: ScalarNode<S>): ScalarNode<S, ScalarKind>;
123
139
  declare function scalarFloatPredicate<S extends ScalarLeafScope>(where: string, op: "isNaN" | "isFinite", expr: ScalarNode<S>): ScalarNode<S, "bool">;
@@ -134,12 +150,16 @@ declare function add<L extends NumericOrUnresolved, R extends CombineNumeric<L,
134
150
  declare function subtract<L extends NumericOrUnresolved, R extends CombineNumeric<L, R> extends never ? never : NumericOrUnresolved>(left: ScalarExpr<L>, right: ScalarExpr<R>): ScalarExpr<CombineNumeric<L, R>>;
135
151
  declare function multiply<L extends NumericOrUnresolved, R extends CombineNumeric<L, R> extends never ? never : NumericOrUnresolved>(left: ScalarExpr<L>, right: ScalarExpr<R>): ScalarExpr<CombineNumeric<L, R>>;
136
152
  declare function divide<L extends NumericOrUnresolved, R extends CombineNumeric<L, R> extends never ? never : NumericOrUnresolved>(left: ScalarExpr<L>, right: ScalarExpr<R>): ScalarExpr<CombineNumeric<L, R>>;
153
+ declare function mulDiv<L extends "i64" | "u64" | "unresolved", R extends CombineNumeric<L, R> extends never ? never : "i64" | "u64" | "unresolved", D extends CombineNumeric<L, D> extends never ? never : CombineNumeric<R, D> extends never ? never : "i64" | "u64" | "unresolved">(a: ScalarExpr<L>, b: ScalarExpr<R>, divisor: ScalarExpr<D>, rounding: Rounding): ScalarExpr<CombineNumeric<CombineNumeric<L, R>, D>>;
154
+ declare function measure(expr: ScalarFieldRef): ScalarExpr<"unresolved">;
137
155
  declare function toF64(expr: ScalarExpr<NumericOrUnresolved>): ScalarExpr<"f64">;
138
156
  declare function toF64Exact(expr: ScalarExpr<NumericOrUnresolved>): ScalarExpr<"f64">;
139
157
  declare function toI64Exact(expr: ScalarExpr<NumericOrUnresolved>): ScalarExpr<"i64">;
140
158
  declare function toU64Exact(expr: ScalarExpr<NumericOrUnresolved>): ScalarExpr<"u64">;
141
159
  declare function isNaNExpr(expr: ScalarExpr<"f64" | "unresolved">): ScalarExpr<"bool">;
142
160
  declare function isFiniteExpr(expr: ScalarExpr<"f64" | "unresolved">): ScalarExpr<"bool">;
161
+ /** One lowering walk for query variables and row-field bindings. */
162
+ declare function scalarWire(node: ScalarNode, leaf: (node: QueryVarLeaf | SourceFieldLeaf) => number): ScalarExprIr;
143
163
  /** The authoring namespace: `Scalar.field("units")`, `Scalar.add(...)`. */
144
164
  declare const Scalar: Readonly<{
145
165
  field: typeof field;
@@ -153,6 +173,8 @@ declare const Scalar: Readonly<{
153
173
  subtract: typeof subtract;
154
174
  multiply: typeof multiply;
155
175
  divide: typeof divide;
176
+ mulDiv: typeof mulDiv;
177
+ measure: typeof measure;
156
178
  toF64: typeof toF64;
157
179
  toF64Exact: typeof toF64Exact;
158
180
  toI64Exact: typeof toI64Exact;
@@ -160,6 +182,6 @@ declare const Scalar: Readonly<{
160
182
  isNaN: typeof isNaNExpr;
161
183
  isFinite: typeof isFiniteExpr;
162
184
  }>;
163
- export type { CombineNumeric, NumericCast, NumericKind, NumericOrUnresolved, QueryVarLeaf, ScalarExpr, ScalarFieldRef, ScalarKind, ScalarLiteral, ScalarNode, ScalarOpKind, ScalarQueryVar, ScalarResultKind, ScalarValue, SourceFieldLeaf };
164
- export { assertDepth, assertNumeric, assertSameKind, checkBool, checkF64, checkI64, checkU64, isScalarNode, isUnresolvedScalar, literalKindOf, literalValue, literalWireOf, MAX_SCALAR_DEPTH, queryVarLeaf, queryVarsOf, Scalar, scalarAuthoringWork, scalarBinary, scalarCast, scalarFloatPredicate, scalarLiteral, scalarNegate };
185
+ export type { CombineNumeric, IntervalKind, NumericCast, NumericKind, NumericOrUnresolved, QueryVarLeaf, Rounding, ScalarExpr, ScalarFieldRef, ScalarInputKind, ScalarKind, ScalarLiteral, ScalarNode, ScalarOpKind, ScalarQueryVar, ScalarResultKind, ScalarValue, SourceFieldLeaf };
186
+ export { assertDepth, assertNumeric, assertSameKind, checkBool, checkF64, checkI64, checkU64, isScalarNode, isUnresolvedScalar, literalKindOf, literalValue, literalWireOf, MAX_SCALAR_DEPTH, queryVarLeaf, queryVarsOf, roundingMode, Scalar, scalarAuthoringWork, scalarBinary, scalarCast, scalarFloatPredicate, scalarLiteral, scalarMeasure, scalarMulDiv, scalarNegate, scalarWire };
165
187
  //# sourceMappingURL=scalar.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"scalar.d.ts","sourceRoot":"","sources":["../src/scalar.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"scalar.d.ts","sourceRoot":"","sources":["../src/scalar.ts"],"names":[],"mappings":"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"}
package/dist/scalar.js CHANGED
@@ -86,7 +86,7 @@ function assertDepth(where, depth) {
86
86
  }
87
87
  }
88
88
  function assertNumeric(where, kind) {
89
- if (kind === "bool") {
89
+ if (kind !== "u64" && kind !== "i64" && kind !== "f64") {
90
90
  throw new AuthoringError({ message: `${where}: the operand is bool, not numeric (u64/i64/f64)` });
91
91
  }
92
92
  }
@@ -200,6 +200,47 @@ function scalarBinary(where, op, left, right) {
200
200
  depth: Math.max(left.depth, right.depth) + 1
201
201
  });
202
202
  }
203
+ function roundingMode(value) {
204
+ if (value !== "towardZero" && value !== "nearestTiesAwayFromZero" && value !== "nearestTiesToEven")
205
+ throw new AuthoringError({ message: "unknown integer rounding mode" });
206
+ return value;
207
+ }
208
+ function scalarMulDiv(where, a, b, divisor, rounding) {
209
+ const scope = assertScope(where, a, b);
210
+ assertScope(where, a, divisor);
211
+ let known;
212
+ for (const operand of [a, b, divisor]) {
213
+ if (operand.result === "unresolved")
214
+ continue;
215
+ if ((operand.result !== "i64" && operand.result !== "u64") || (known !== undefined && known !== operand.result))
216
+ throw new AuthoringError({ message: `${where}: operands must have one matching integer kind` });
217
+ known = operand.result;
218
+ }
219
+ return admit(where, {
220
+ kind: "mulDiv",
221
+ a,
222
+ b,
223
+ divisor,
224
+ rounding: roundingMode(rounding),
225
+ scope,
226
+ result: a.result === "unresolved" || b.result === "unresolved" || divisor.result === "unresolved"
227
+ ? "unresolved"
228
+ : a.result,
229
+ depth: Math.max(a.depth, b.depth, divisor.depth) + 1
230
+ });
231
+ }
232
+ function scalarMeasure(where, expr) {
233
+ const kind = expr.result;
234
+ if (kind !== "unresolved" && kind !== "intervalU64" && kind !== "intervalI64" && kind !== "intervalF64")
235
+ throw new AuthoringError({ message: `${where}: measure requires an interval` });
236
+ return admit(where, {
237
+ kind: "measure",
238
+ expr,
239
+ scope: expr.scope,
240
+ result: { unresolved: "unresolved", intervalF64: "f64", intervalI64: "u64", intervalU64: "u64" }[kind],
241
+ depth: expr.depth + 1
242
+ });
243
+ }
203
244
  function scalarNegate(where, expr) {
204
245
  return admit(where, {
205
246
  kind: "negate",
@@ -245,12 +286,16 @@ function queryVarsOf(node) {
245
286
  break;
246
287
  case "literal":
247
288
  break;
289
+ case "measure":
248
290
  case "negate":
249
291
  case "isNaN":
250
292
  case "isFinite":
251
293
  case "cast":
252
294
  pending.push(next.expr);
253
295
  break;
296
+ case "mulDiv":
297
+ pending.push(next.a, next.b, next.divisor);
298
+ break;
254
299
  case "add":
255
300
  case "subtract":
256
301
  case "multiply":
@@ -302,6 +347,12 @@ function multiply(left, right) {
302
347
  function divide(left, right) {
303
348
  return scalarBinary("Scalar.divide", "divide", left, right);
304
349
  }
350
+ function mulDiv(a, b, divisor, rounding) {
351
+ return scalarMulDiv("Scalar.mulDiv", a, b, divisor, rounding);
352
+ }
353
+ function measure(expr) {
354
+ return scalarMeasure("Scalar.measure", expr);
355
+ }
305
356
  function toF64(expr) {
306
357
  return scalarCast("Scalar.toF64", "toF64", "f64", expr);
307
358
  }
@@ -320,6 +371,31 @@ function isNaNExpr(expr) {
320
371
  function isFiniteExpr(expr) {
321
372
  return scalarFloatPredicate("Scalar.isFinite", "isFinite", expr);
322
373
  }
374
+ /** One lowering walk for query variables and row-field bindings. */
375
+ function scalarWire(node, leaf) {
376
+ const walk = (expr) => scalarWire(expr, leaf);
377
+ switch (node.kind) {
378
+ case "var":
379
+ case "field":
380
+ return { kind: "var", var: leaf(node) };
381
+ case "literal":
382
+ return { kind: "literal", value: literalWireOf(node.value) };
383
+ case "measure":
384
+ case "negate":
385
+ case "isNaN":
386
+ case "isFinite":
387
+ return { kind: node.kind, expr: walk(node.expr) };
388
+ case "cast":
389
+ return { kind: node.kind, cast: node.cast, expr: walk(node.expr) };
390
+ case "mulDiv":
391
+ return { kind: node.kind, a: walk(node.a), b: walk(node.b), divisor: walk(node.divisor), rounding: node.rounding };
392
+ case "add":
393
+ case "subtract":
394
+ case "multiply":
395
+ case "divide":
396
+ return { kind: node.kind, left: walk(node.left), right: walk(node.right) };
397
+ }
398
+ }
323
399
  /** The authoring namespace: `Scalar.field("units")`, `Scalar.add(...)`. */
324
400
  const Scalar = Object.freeze({
325
401
  field,
@@ -333,6 +409,8 @@ const Scalar = Object.freeze({
333
409
  subtract,
334
410
  multiply,
335
411
  divide,
412
+ mulDiv,
413
+ measure,
336
414
  toF64,
337
415
  toF64Exact,
338
416
  toI64Exact,
@@ -340,5 +418,5 @@ const Scalar = Object.freeze({
340
418
  isNaN: isNaNExpr,
341
419
  isFinite: isFiniteExpr
342
420
  });
343
- export { assertDepth, assertNumeric, assertSameKind, checkBool, checkF64, checkI64, checkU64, isScalarNode, isUnresolvedScalar, literalKindOf, literalValue, literalWireOf, MAX_SCALAR_DEPTH, queryVarLeaf, queryVarsOf, Scalar, scalarAuthoringWork, scalarBinary, scalarCast, scalarFloatPredicate, scalarLiteral, scalarNegate };
421
+ export { assertDepth, assertNumeric, assertSameKind, checkBool, checkF64, checkI64, checkU64, isScalarNode, isUnresolvedScalar, literalKindOf, literalValue, literalWireOf, MAX_SCALAR_DEPTH, queryVarLeaf, queryVarsOf, roundingMode, Scalar, scalarAuthoringWork, scalarBinary, scalarCast, scalarFloatPredicate, scalarLiteral, scalarMeasure, scalarMulDiv, scalarNegate, scalarWire };
344
422
  //# sourceMappingURL=scalar.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"scalar.js","sourceRoot":"","sources":["../src/scalar.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"scalar.js","sourceRoot":"","sources":["../src/scalar.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  {
2
- "candidateSourceDigest": "ca9592096bd15b3f2a56e586a074505ae6695befdad7ed4df816af59a0ae1bf5",
2
+ "candidateSourceDigest": "cf0cd07de3f8596acc7b15601063911472272a859f0fad176c3f75cd48f95719",
3
3
  "specificationRevision": "87e9a83ee21d1f843c73ac6e7057b2b740db75aae70a553b8053b4f38e87bd2d",
4
- "stagedAt": "2026-09-11T13:37:03.509Z",
4
+ "stagedAt": "2026-09-11T16:23:11.093Z",
5
5
  "package": "@bjornpagen/bumbledb",
6
- "version": "1.2.1"
6
+ "version": "1.3.0"
7
7
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bjornpagen/bumbledb",
3
- "version": "1.2.1",
3
+ "version": "1.3.0",
4
4
  "description": "Effect-native embedded relational database for TypeScript: typed schemas and queries, exact floats, commit-time constraints",
5
5
  "type": "module",
6
6
  "exports": {
@@ -57,8 +57,8 @@
57
57
  },
58
58
  "private": false,
59
59
  "optionalDependencies": {
60
- "@bjornpagen/bumbledb-darwin-arm64": "1.2.1",
61
- "@bjornpagen/bumbledb-linux-arm64": "1.2.1",
62
- "@bjornpagen/bumbledb-linux-x64": "1.2.1"
60
+ "@bjornpagen/bumbledb-darwin-arm64": "1.3.0",
61
+ "@bjornpagen/bumbledb-linux-arm64": "1.3.0",
62
+ "@bjornpagen/bumbledb-linux-x64": "1.3.0"
63
63
  }
64
64
  }
@@ -0,0 +1,95 @@
1
+ import { type AnyClosed, closedDescriptor, closedId, sealedFieldOf } from "#closed.ts"
2
+ import { AuthoringError } from "#errors.ts"
3
+ import type { Face, SameArity, SameShapes } from "#face.ts"
4
+ import { type ClosedIdField, signaturesAgree } from "#fields.ts"
5
+ import type { RelationFields } from "#relation.ts"
6
+ import {
7
+ type ContainmentStatement,
8
+ type KeyStatement,
9
+ type MirrorsStatement,
10
+ statementDescriptor
11
+ } from "#statements.ts"
12
+ import { recordValue } from "#values.ts"
13
+
14
+ type KeyFace<K extends KeyStatement> = Face<K["owner"], K["projection"]>
15
+ type ScalarKey<K extends KeyStatement> =
16
+ Extract<RelationFields<K["owner"]>[K["projection"][number]], { readonly kind: "interval" }> extends never
17
+ ? unknown
18
+ : { readonly "alternative identity keys must be scalar": never }
19
+ type Discriminator<P extends KeyStatement, C extends AnyClosed> = {
20
+ [F in keyof RelationFields<P["owner"]>]: RelationFields<P["owner"]>[F] extends ClosedIdField<C["name"], C["handles"]>
21
+ ? F
22
+ : never
23
+ }[keyof RelationFields<P["owner"]>] &
24
+ string
25
+
26
+ function scalarKey(input: KeyStatement): KeyStatement {
27
+ const checked = statementDescriptor(input)
28
+ if (checked.kind !== "key") throw new AuthoringError({ message: "alternatives: expected a key statement" })
29
+ for (const name of checked.projection) {
30
+ if (sealedFieldOf(checked.owner, name)?.kind === "interval")
31
+ throw new AuthoringError({
32
+ message: "alternatives: identity keys must be scalar; interval keys prove point coverage"
33
+ })
34
+ }
35
+ return checked
36
+ }
37
+
38
+ /**
39
+ * Exhaustive closed alternatives, expanded into ordinary laws. Declare the
40
+ * supplied keys in the schema once; this helper emits only the discriminator
41
+ * containment followed by one mirrors statement per handle in roster order.
42
+ * No new statement kind or assembled payload representation is introduced.
43
+ */
44
+ function alternatives<
45
+ P extends KeyStatement,
46
+ C extends AnyClosed,
47
+ const Arms extends Record<C["handles"][number], KeyStatement>
48
+ >(
49
+ parent: P & ScalarKey<P>,
50
+ discriminator: Discriminator<NoInfer<P>, NoInfer<C>>,
51
+ roster: C,
52
+ arms: Arms &
53
+ Record<Exclude<keyof Arms, C["handles"][number]>, never> & {
54
+ readonly [H in C["handles"][number]]: ScalarKey<Arms[H]> &
55
+ SameArity<KeyFace<P>, KeyFace<Arms[H]>> &
56
+ SameShapes<KeyFace<P>, KeyFace<Arms[H]>>
57
+ }
58
+ ): readonly (ContainmentStatement | MirrorsStatement)[] {
59
+ const primary = scalarKey(parent)
60
+ const closed = closedDescriptor(roster)
61
+ const field = sealedFieldOf(primary.owner, discriminator)
62
+ if (field === undefined || !signaturesAgree(field, closedId(closed)))
63
+ throw new AuthoringError({ message: "alternatives: discriminator must reference the supplied closed roster" })
64
+ const payloads = recordValue("alternative arms", arms, closed.handles)
65
+ const statements: (ContainmentStatement | MirrorsStatement)[] = [
66
+ statementDescriptor({
67
+ kind: "containment",
68
+ source: { owner: primary.owner, projection: [discriminator], selection: [] },
69
+ target: { owner: closed, projection: ["id"], selection: [] }
70
+ })
71
+ ]
72
+ const children = new Set<string>([primary.owner.name])
73
+ for (const handle of closed.handles) {
74
+ const child = scalarKey(payloads[handle] as KeyStatement)
75
+ if (children.has(child.owner.name))
76
+ throw new AuthoringError({
77
+ message: `alternatives: each arm needs its own payload relation (${child.owner.name})`
78
+ })
79
+ children.add(child.owner.name)
80
+ statements.push(
81
+ statementDescriptor({
82
+ kind: "mirrors",
83
+ source: {
84
+ owner: primary.owner,
85
+ projection: primary.projection,
86
+ selection: [{ field: discriminator, set: { kind: "one", literal: { kind: "handle", handle } } }]
87
+ },
88
+ target: { owner: child.owner, projection: child.projection, selection: [] }
89
+ })
90
+ )
91
+ }
92
+ return Object.freeze(statements)
93
+ }
94
+
95
+ export { alternatives }
package/src/index.ts CHANGED
@@ -6,6 +6,7 @@
6
6
  * or disposal twin. The raw native bridge is not exported from this barrel.
7
7
  */
8
8
 
9
+ export { alternatives } from "#alternatives.ts"
9
10
  export type {
10
11
  BoundsOnTarget,
11
12
  CapacityWeight,
@@ -112,7 +113,13 @@ export type { FindColumn } from "#query/atom.ts"
112
113
  export { ALLEN } from "#query/atom.ts"
113
114
  export type { AnyComputeExpr, ComputeExpr, ComputeValue, QueryNode } from "#query/compute.ts"
114
115
  export { Compute } from "#query/compute.ts"
115
- export type { DescriptionParameter, DescriptionRow, DescriptionTable, QueryDescription } from "#query/description.ts"
116
+ export type {
117
+ DescriptionHead,
118
+ DescriptionParameter,
119
+ DescriptionRow,
120
+ DescriptionTable,
121
+ QueryDescription
122
+ } from "#query/description.ts"
116
123
  export { describeQuery, queryFromDescription } from "#query/description.ts"
117
124
  export type { Agg, HeadRecordOf, RowOfFind } from "#query/find.ts"
118
125
  export type {
@@ -147,6 +154,7 @@ export type {
147
154
  VarsOf
148
155
  } from "#query/scope.ts"
149
156
  export { v } from "#query/scope.ts"
157
+ export type { IntervalVar, SegmentOp, Segments } from "#query/segments.ts"
150
158
  export type {
151
159
  AnyRelation,
152
160
  Fact,
@@ -164,9 +172,12 @@ export { NativeRuntime } from "#runtime.ts"
164
172
  export type { CloseReport, OutstandingWork } from "#runtime-errors.ts"
165
173
  export { CloseFailure, DbError, dbError, runtimeErrorCodes } from "#runtime-errors.ts"
166
174
  export type {
175
+ IntervalKind,
167
176
  NumericCast,
177
+ Rounding,
168
178
  ScalarExpr,
169
179
  ScalarFieldRef,
180
+ ScalarInputKind,
170
181
  ScalarKind,
171
182
  ScalarLeafScope,
172
183
  ScalarLiteral,
package/src/native.ts CHANGED
@@ -89,6 +89,14 @@ type HeadOpIr = "sum" | "mean" | "min" | "max" | "count" | "pack"
89
89
  type NumericCastIr = "toF64" | "toF64Exact" | "toI64Exact" | "toU64Exact"
90
90
 
91
91
  type ScalarExprIr =
92
+ | { readonly kind: "measure"; readonly expr: ScalarExprIr }
93
+ | {
94
+ readonly kind: "mulDiv"
95
+ readonly a: ScalarExprIr
96
+ readonly b: ScalarExprIr
97
+ readonly divisor: ScalarExprIr
98
+ readonly rounding: import("#scalar.ts").Rounding
99
+ }
92
100
  | { readonly kind: "var"; readonly var: number }
93
101
  | { readonly kind: "literal"; readonly value: TaggedValue }
94
102
  | { readonly kind: "negate"; readonly expr: ScalarExprIr }
@@ -114,6 +122,12 @@ type FoldOpIr =
114
122
  | { readonly kind: "max" }
115
123
 
116
124
  type FindTermIr =
125
+ | {
126
+ readonly kind: "segments"
127
+ readonly op: import("#query/segments.ts").SegmentOp
128
+ readonly left: number
129
+ readonly right: number
130
+ }
117
131
  | { readonly kind: "var"; readonly var: number }
118
132
  | { readonly kind: "compute"; readonly expr: ScalarExprIr }
119
133
  | { readonly kind: "count" }
package/src/query/atom.ts CHANGED
@@ -16,6 +16,7 @@ import type {
16
16
  ShapeOf
17
17
  } from "#query/scope.ts"
18
18
  import { isTerm, term } from "#query/scope.ts"
19
+ import type { Segments } from "#query/segments.ts"
19
20
  import type { FieldsShape } from "#relation.ts"
20
21
  import type { ScalarKind } from "#scalar.ts"
21
22
  import type { Uuid } from "#uuid.ts"
@@ -75,6 +76,7 @@ type AggData =
75
76
 
76
77
  /** Compute `expr` is the shared `#scalar.ts` query-var node (one grammar). */
77
78
  type FindEntryData =
79
+ | Segments
78
80
  | { readonly kind: "var"; readonly over: AnyVar }
79
81
  | { readonly kind: "aggregate"; readonly agg: AggData }
80
82
  | { readonly kind: "compute"; readonly expr: QueryNode; readonly result: ScalarKind }
@@ -13,7 +13,7 @@ import type { AnyField } from "#fields.ts"
13
13
  import { bool as boolField, f64 as f64Field, i64 as i64Field, rosterOf, u64 as u64Field } from "#fields.ts"
14
14
  import type { AnyVar } from "#query/scope.ts"
15
15
  import { isTerm, term } from "#query/scope.ts"
16
- import type { ScalarKind, ScalarLiteral, ScalarNode } from "#scalar.ts"
16
+ import type { Rounding, ScalarKind, ScalarLiteral, ScalarNode } from "#scalar.ts"
17
17
  import {
18
18
  checkBool,
19
19
  checkF64,
@@ -27,6 +27,8 @@ import {
27
27
  scalarCast,
28
28
  scalarFloatPredicate,
29
29
  scalarLiteral,
30
+ scalarMeasure,
31
+ scalarMulDiv,
30
32
  scalarNegate
31
33
  } from "#scalar.ts"
32
34
 
@@ -61,7 +63,11 @@ type OperandKind<O> =
61
63
  : never
62
64
 
63
65
  function isComputeExpr(value: unknown): value is AnyComputeExpr {
64
- return isScalarNode(value) && value.scope === "query-var" && value.result !== "unresolved"
66
+ return (
67
+ isScalarNode(value) &&
68
+ value.scope === "query-var" &&
69
+ (value.result === "u64" || value.result === "i64" || value.result === "f64" || value.result === "bool")
70
+ )
65
71
  }
66
72
 
67
73
  function varKindOf(where: string, ref: AnyVar): ScalarKind {
@@ -167,6 +173,37 @@ function negate<O extends SignedOperand>(operand: O): ComputeExpr<OperandKind<O>
167
173
  return scalarNegate(where, asQueryNode(where, operand)) as ComputeExpr<OperandKind<O> & ("i64" | "f64")>
168
174
  }
169
175
 
176
+ type IntegerOperand =
177
+ | ComputeExpr<"u64">
178
+ | ComputeExpr<"i64">
179
+ | (AnyVar & { readonly field: { readonly kind: "i64" | "u64" } })
180
+
181
+ function mulDiv<A extends IntegerOperand, B extends IntegerOperand, D extends IntegerOperand>(
182
+ a: A,
183
+ b: B & (OperandKind<A> extends OperandKind<B> ? unknown : never),
184
+ divisor: D & (OperandKind<A> extends OperandKind<D> ? unknown : never),
185
+ rounding: Rounding
186
+ ): ComputeExpr<OperandKind<A>> {
187
+ return scalarMulDiv(
188
+ "Compute.mulDiv",
189
+ asQueryNode("Compute.mulDiv", a),
190
+ asQueryNode("Compute.mulDiv", b),
191
+ asQueryNode("Compute.mulDiv", divisor),
192
+ rounding
193
+ ) as ComputeExpr<OperandKind<A>>
194
+ }
195
+
196
+ function measure<V extends AnyVar & { readonly field: { readonly kind: "interval" } }>(
197
+ interval: V
198
+ ): ComputeExpr<V["field"] extends { readonly element: "f64" } ? "f64" : "u64"> {
199
+ if (!isTerm(interval) || interval[term] !== "var" || interval.field.kind !== "interval")
200
+ throw new AuthoringError({ message: "Compute.measure: expected an interval variable" })
201
+ const kind = { u64: "intervalU64", i64: "intervalI64", f64: "intervalF64" } as const
202
+ return scalarMeasure("Compute.measure", queryVarLeaf(interval, kind[interval.field.element])) as ComputeExpr<
203
+ V["field"] extends { readonly element: "f64" } ? "f64" : "u64"
204
+ >
205
+ }
206
+
170
207
  function toF64(operand: ArithmeticOperand): ComputeExpr<"f64"> {
171
208
  const where = "Compute.toF64"
172
209
  return scalarCast(where, "toF64", "f64", asQueryNode(where, operand)) as ComputeExpr<"f64">
@@ -225,6 +262,8 @@ const Compute = Object.freeze({
225
262
  subtract,
226
263
  multiply,
227
264
  divide,
265
+ mulDiv,
266
+ measure,
228
267
  toF64,
229
268
  toF64Exact,
230
269
  toI64Exact,