@bjornpagen/bumbledb 1.2.0 → 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.
- package/COOKBOOK.md +178 -0
- package/README.md +2 -2
- package/dist/alternatives.d.ts +25 -0
- package/dist/alternatives.d.ts.map +1 -0
- package/dist/alternatives.js +59 -0
- package/dist/alternatives.js.map +1 -0
- package/dist/capacity.d.ts +7 -4
- package/dist/capacity.d.ts.map +1 -1
- package/dist/capacity.js +3 -1
- package/dist/capacity.js.map +1 -1
- package/dist/index.d.ts +6 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/law.d.ts +3 -1
- package/dist/law.d.ts.map +1 -1
- package/dist/law.js.map +1 -1
- package/dist/native.d.ts +14 -0
- package/dist/native.d.ts.map +1 -1
- package/dist/native.js.map +1 -1
- package/dist/query/atom.d.ts +2 -1
- package/dist/query/atom.d.ts.map +1 -1
- package/dist/query/atom.js.map +1 -1
- package/dist/query/compute.d.ts +16 -1
- package/dist/query/compute.d.ts.map +1 -1
- package/dist/query/compute.js +15 -2
- package/dist/query/compute.js.map +1 -1
- package/dist/query/description.d.ts +10 -2
- package/dist/query/description.d.ts.map +1 -1
- package/dist/query/description.js +10 -1
- package/dist/query/description.js.map +1 -1
- package/dist/query/find.d.ts +32 -10
- package/dist/query/find.d.ts.map +1 -1
- package/dist/query/find.js +1 -1
- package/dist/query/find.js.map +1 -1
- package/dist/query/lower.d.ts +18 -6
- package/dist/query/lower.d.ts.map +1 -1
- package/dist/query/lower.js +43 -30
- package/dist/query/lower.js.map +1 -1
- package/dist/query/parse-ir.d.ts.map +1 -1
- package/dist/query/parse-ir.js +24 -1
- package/dist/query/parse-ir.js.map +1 -1
- package/dist/query/scope.d.ts +21 -12
- package/dist/query/scope.d.ts.map +1 -1
- package/dist/query/scope.js.map +1 -1
- package/dist/query/segments.d.ts +20 -0
- package/dist/query/segments.d.ts.map +1 -0
- package/dist/query/segments.js +35 -0
- package/dist/query/segments.js.map +1 -0
- package/dist/scalar.d.ts +30 -8
- package/dist/scalar.d.ts.map +1 -1
- package/dist/scalar.js +80 -2
- package/dist/scalar.js.map +1 -1
- package/dist/shape.d.ts +6 -3
- package/dist/shape.d.ts.map +1 -1
- package/pack-provenance.json +3 -3
- package/package.json +4 -4
- package/src/alternatives.ts +95 -0
- package/src/capacity.ts +7 -4
- package/src/index.ts +14 -2
- package/src/law.ts +8 -5
- package/src/native.ts +14 -0
- package/src/query/atom.ts +2 -0
- package/src/query/compute.ts +41 -2
- package/src/query/description.ts +34 -4
- package/src/query/find.ts +47 -23
- package/src/query/lower.ts +73 -43
- package/src/query/parse-ir.ts +23 -1
- package/src/query/scope.ts +32 -15
- package/src/query/segments.ts +61 -0
- package/src/scalar.ts +140 -7
- package/src/shape.ts +9 -3
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { AuthoringError } from "#errors.ts";
|
|
2
|
+
import { isTerm, term } from "#query/scope.ts";
|
|
3
|
+
import { recordValue } from "#values.ts";
|
|
4
|
+
function segments(op, left, right) {
|
|
5
|
+
if (!isTerm(left) ||
|
|
6
|
+
left[term] !== "var" ||
|
|
7
|
+
!isTerm(right) ||
|
|
8
|
+
right[term] !== "var" ||
|
|
9
|
+
left.field.kind !== "interval" ||
|
|
10
|
+
right.field.kind !== "interval" ||
|
|
11
|
+
left.field.element !== right.field.element)
|
|
12
|
+
throw new AuthoringError({ message: `${op}: expected interval variables of the same element kind` });
|
|
13
|
+
return Object.freeze({ kind: "segments", op, left, right });
|
|
14
|
+
}
|
|
15
|
+
function intersection(left, right) {
|
|
16
|
+
return segments("intersection", left, right);
|
|
17
|
+
}
|
|
18
|
+
function difference(left, right) {
|
|
19
|
+
return segments("difference", left, right);
|
|
20
|
+
}
|
|
21
|
+
function isSegments(input) {
|
|
22
|
+
if (typeof input !== "object" || input === null || !("kind" in input) || input.kind !== "segments")
|
|
23
|
+
return false;
|
|
24
|
+
recordValue("segments", input, ["kind", "op", "left", "right"]);
|
|
25
|
+
const value = input;
|
|
26
|
+
if (value.op !== "intersection" && value.op !== "difference")
|
|
27
|
+
throw new AuthoringError({ message: "unknown segment operator" });
|
|
28
|
+
segments(value.op, value.left, value.right);
|
|
29
|
+
return true;
|
|
30
|
+
}
|
|
31
|
+
function segmentField(value) {
|
|
32
|
+
return Object.freeze({ kind: "interval", element: value.left.field.element, width: undefined });
|
|
33
|
+
}
|
|
34
|
+
export { difference, intersection, isSegments, segmentField };
|
|
35
|
+
//# sourceMappingURL=segments.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"segments.js","sourceRoot":"","sources":["../../src/query/segments.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAE3C,OAAO,EAAe,MAAM,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAA;AAC3D,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAaxC,SAAS,QAAQ,CAChB,EAAa,EACb,IAAoB,EACpB,KAA8B;IAE9B,IACC,CAAC,MAAM,CAAC,IAAI,CAAC;QACb,IAAI,CAAC,IAAI,CAAC,KAAK,KAAK;QACpB,CAAC,MAAM,CAAC,KAAK,CAAC;QACd,KAAK,CAAC,IAAI,CAAC,KAAK,KAAK;QACrB,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,UAAU;QAC9B,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,UAAU;QAC/B,IAAI,CAAC,KAAK,CAAC,OAAO,KAAK,KAAK,CAAC,KAAK,CAAC,OAAO;QAE1C,MAAM,IAAI,cAAc,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,wDAAwD,EAAE,CAAC,CAAA;IACrG,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAA;AAC5D,CAAC;AAED,SAAS,YAAY,CACpB,IAAoB,EACpB,KAA8B;IAE9B,OAAO,QAAQ,CAAC,cAAc,EAAE,IAAI,EAAE,KAAK,CAAC,CAAA;AAC7C,CAAC;AAED,SAAS,UAAU,CAAgC,IAAoB,EAAE,KAA8B;IACtG,OAAO,QAAQ,CAAC,YAAY,EAAE,IAAI,EAAE,KAAK,CAAC,CAAA;AAC3C,CAAC;AAED,SAAS,UAAU,CAAC,KAAc;IACjC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,CAAC,MAAM,IAAI,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,KAAK,UAAU;QAAE,OAAO,KAAK,CAAA;IAChH,WAAW,CAAC,UAAU,EAAE,KAAK,EAAE,CAAC,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,CAAA;IAC/D,MAAM,KAAK,GAAG,KAAiB,CAAA;IAC/B,IAAI,KAAK,CAAC,EAAE,KAAK,cAAc,IAAI,KAAK,CAAC,EAAE,KAAK,YAAY;QAC3D,MAAM,IAAI,cAAc,CAAC,EAAE,OAAO,EAAE,0BAA0B,EAAE,CAAC,CAAA;IAClE,QAAQ,CAAC,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,CAAA;IAC3C,OAAO,IAAI,CAAA;AACZ,CAAC;AAED,SAAS,YAAY,CAAC,KAAe;IACpC,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAA;AAChG,CAAC;AAGD,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,CAAA"}
|
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
|
|
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> =
|
|
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:
|
|
113
|
-
declare function assertSameKind(where: string, left:
|
|
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
|
|
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
|
package/dist/scalar.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scalar.d.ts","sourceRoot":"","sources":["../src/scalar.ts"],"names":[],"mappings":"AAkBA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,UAAU,CAAA;AAEzC,mGAAmG;AACnG,MAAM,MAAM,eAAe,GAAG,WAAW,GAAG,cAAc,CAAA;AAE1D,0EAA0E;AAC1E,KAAK,UAAU,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,MAAM,CAAA;AAEhD,oFAAoF;AACpF,KAAK,
|
|
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
|
|
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
|
package/dist/scalar.js.map
CHANGED
|
@@ -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":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AA0H3C,MAAM,gBAAgB,GAAG,GAAG,CAAA;AAC5B,MAAM,OAAO,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,GAAG,EAAE,CAAA;AAChC,MAAM,OAAO,GAAG,CAAC,CAAC,EAAE,IAAI,GAAG,CAAC,CAAA;AAC5B,MAAM,OAAO,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,GAAG,EAAE,CAAA;AAEhC,sFAAsF;AACtF,IAAI,aAAa,GAAG,CAAC,CAAA;AAErB,SAAS,mBAAmB;IAC3B,OAAO,aAAa,CAAA;AACrB,CAAC;AAED,SAAS,KAAK,CAEZ,KAAa,EAAE,IAAU;IAC1B,aAAa,IAAI,CAAC,CAAA;IAClB,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAA;IAC9B,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;AAC3B,CAAC;AAED,SAAS,QAAQ,CAAC,KAAa,EAAE,KAAa;IAC7C,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,GAAG,EAAE,IAAI,KAAK,GAAG,OAAO,EAAE,CAAC;QAChE,MAAM,IAAI,cAAc,CAAC,EAAE,OAAO,EAAE,GAAG,KAAK,2CAA2C,EAAE,CAAC,CAAA;IAC3F,CAAC;AACF,CAAC;AAED,SAAS,QAAQ,CAAC,KAAa,EAAE,KAAa;IAC7C,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,GAAG,OAAO,IAAI,KAAK,GAAG,OAAO,EAAE,CAAC;QACrE,MAAM,IAAI,cAAc,CAAC,EAAE,OAAO,EAAE,GAAG,KAAK,gDAAgD,EAAE,CAAC,CAAA;IAChG,CAAC;AACF,CAAC;AAED,SAAS,QAAQ,CAAC,KAAa,EAAE,KAAa;IAC7C,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC/B,MAAM,IAAI,cAAc,CAAC,EAAE,OAAO,EAAE,GAAG,KAAK,8BAA8B,EAAE,CAAC,CAAA;IAC9E,CAAC;AACF,CAAC;AAED,SAAS,SAAS,CAAC,KAAc,EAAE,KAAa;IAC/C,IAAI,OAAO,KAAK,KAAK,SAAS,EAAE,CAAC;QAChC,MAAM,IAAI,cAAc,CAAC,EAAE,OAAO,EAAE,GAAG,KAAK,+BAA+B,EAAE,CAAC,CAAA;IAC/E,CAAC;AACF,CAAC;AAED,SAAS,YAAY,CAAC,KAAoB;IACzC,OAAO,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;AAC5B,CAAC;AAED,gFAAgF;AAChF,SAAS,aAAa,CAAC,KAAoB;IAC1C,IAAI,MAAM,IAAI,KAAK,EAAE,CAAC;QACrB,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,CAAA;IAC3C,CAAC;IACD,IAAI,KAAK,IAAI,KAAK,EAAE,CAAC;QACpB,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,GAAG,EAAE,CAAA;IACzC,CAAC;IACD,IAAI,KAAK,IAAI,KAAK,EAAE,CAAC;QACpB,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,GAAG,EAAE,CAAA;IACzC,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,GAAG,EAAE,CAAA;AACzC,CAAC;AAED,SAAS,aAAa,CAAC,KAAoB;IAC1C,IAAI,MAAM,IAAI,KAAK,EAAE,CAAC;QACrB,OAAO,MAAM,CAAA;IACd,CAAC;IACD,IAAI,KAAK,IAAI,KAAK,EAAE,CAAC;QACpB,OAAO,KAAK,CAAA;IACb,CAAC;IACD,IAAI,KAAK,IAAI,KAAK,EAAE,CAAC;QACpB,OAAO,KAAK,CAAA;IACb,CAAC;IACD,OAAO,KAAK,CAAA;AACb,CAAC;AAED,SAAS,WAAW,CAAC,KAAa,EAAE,KAAa;IAChD,IAAI,KAAK,GAAG,gBAAgB,EAAE,CAAC;QAC9B,MAAM,IAAI,cAAc,CAAC;YACxB,OAAO,EAAE,GAAG,KAAK,mCAAmC,gBAAgB,0CAA0C;SAC9G,CAAC,CAAA;IACH,CAAC;AACF,CAAC;AAED,SAAS,aAAa,CAAC,KAAa,EAAE,IAAqB;IAC1D,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,EAAE,CAAC;QACxD,MAAM,IAAI,cAAc,CAAC,EAAE,OAAO,EAAE,GAAG,KAAK,kDAAkD,EAAE,CAAC,CAAA;IAClG,CAAC;AACF,CAAC;AAED,SAAS,cAAc,CAAC,KAAa,EAAE,IAAqB,EAAE,KAAsB;IACnF,IAAI,IAAI,KAAK,KAAK,EAAE,CAAC;QACpB,MAAM,IAAI,cAAc,CAAC;YACxB,OAAO,EAAE,GAAG,KAAK,2BAA2B,IAAI,OAAO,KAAK,2GAA2G;SACvK,CAAC,CAAA;IACH,CAAC;IACD,OAAO,IAAI,CAAA;AACZ,CAAC;AAED,SAAS,WAAW,CAA4B,KAAa,EAAE,IAAmB,EAAE,KAAoB;IACvG,IAAI,IAAI,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK,EAAE,CAAC;QAChC,MAAM,IAAI,cAAc,CAAC;YACxB,OAAO,EAAE,GAAG,KAAK,yBAAyB,IAAI,CAAC,KAAK,OAAO,KAAK,CAAC,KAAK,iDAAiD;SACvH,CAAC,CAAA;IACH,CAAC;IACD,OAAO,IAAI,CAAC,KAAK,CAAA;AAClB,CAAC;AAED,SAAS,cAAc,CAAC,KAAa,EAAE,IAAsB,EAAE,KAAuB;IACrF,IAAI,IAAI,KAAK,YAAY,IAAI,KAAK,KAAK,YAAY,EAAE,CAAC;QACrD,IAAI,IAAI,KAAK,YAAY,EAAE,CAAC;YAC3B,aAAa,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;QAC3B,CAAC;QACD,IAAI,KAAK,KAAK,YAAY,EAAE,CAAC;YAC5B,aAAa,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA;QAC5B,CAAC;QACD,OAAO,YAAY,CAAA;IACpB,CAAC;IACD,aAAa,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;IAC1B,aAAa,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA;IAC3B,OAAO,cAAc,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC,CAAA;AAC1C,CAAC;AAED,SAAS,UAAU,CAAC,KAAa,EAAE,KAAuB;IACzD,IAAI,KAAK,KAAK,YAAY,EAAE,CAAC;QAC5B,OAAO,YAAY,CAAA;IACpB,CAAC;IACD,IAAI,KAAK,KAAK,KAAK,IAAI,KAAK,KAAK,KAAK,EAAE,CAAC;QACxC,MAAM,IAAI,cAAc,CAAC;YACxB,OAAO,EAAE,GAAG,KAAK,oBAAoB,KAAK,8CAA8C;SACxF,CAAC,CAAA;IACH,CAAC;IACD,OAAO,KAAK,CAAA;AACb,CAAC;AAED,SAAS,iBAAiB,CAAC,KAAa,EAAE,KAAuB;IAChE,IAAI,KAAK,KAAK,YAAY,EAAE,CAAC;QAC5B,OAAM;IACP,CAAC;IACD,aAAa,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA;AAC5B,CAAC;AAED,SAAS,kBAAkB,CAAC,KAAa,EAAE,KAAuB;IACjE,IAAI,KAAK,KAAK,YAAY,EAAE,CAAC;QAC5B,OAAM;IACP,CAAC;IACD,IAAI,KAAK,KAAK,KAAK,EAAE,CAAC;QACrB,MAAM,IAAI,cAAc,CAAC,EAAE,OAAO,EAAE,GAAG,KAAK,oBAAoB,KAAK,kCAAkC,EAAE,CAAC,CAAA;IAC3G,CAAC;AACF,CAAC;AAED,SAAS,YAAY,CAAC,KAAc;IACnC,OAAO,CACN,OAAO,KAAK,KAAK,QAAQ;QACzB,KAAK,KAAK,IAAI;QACd,MAAM,IAAI,KAAK;QACf,OAAO,IAAI,KAAK;QAChB,QAAQ,IAAI,KAAK;QACjB,OAAO,IAAI,KAAK,CAChB,CAAA;AACF,CAAC;AAED,SAAS,kBAAkB,CAAC,IAAgB;IAC3C,OAAO,IAAI,CAAC,MAAM,KAAK,YAAY,CAAA;AACpC,CAAC;AAED,uFAAuF;AACvF,SAAS,WAAW,CAAC,IAAY;IAChC,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACnD,MAAM,IAAI,cAAc,CAAC,EAAE,OAAO,EAAE,iDAAiD,EAAE,CAAC,CAAA;IACzF,CAAC;IACD,OAAO,KAAK,CAAC,cAAc,EAAE;QAC5B,IAAI,EAAE,OAAO;QACb,IAAI;QACJ,KAAK,EAAE,cAAc;QACrB,MAAM,EAAE,YAAY;QACpB,KAAK,EAAE,CAAC;KACR,CAAC,CAAA;AACH,CAAC;AAED,0EAA0E;AAC1E,SAAS,YAAY,CAA4B,GAAmB,EAAE,IAAO;IAC5E,OAAO,KAAK,CAAC,iBAAiB,EAAE;QAC/B,IAAI,EAAE,KAAK;QACX,GAAG;QACH,KAAK,EAAE,WAAW;QAClB,MAAM,EAAE,IAAI;QACZ,KAAK,EAAE,CAAC;KACR,CAAC,CAAA;AACH,CAAC;AAED,SAAS,aAAa,CAA4B,KAAQ,EAAE,KAAoB;IAC/E,MAAM,IAAI,GAAG,aAAa,CAAC,KAAK,CAAC,CAAA;IACjC,OAAO,KAAK,CAAC,gBAAgB,EAAE;QAC9B,IAAI,EAAE,SAAS;QACf,KAAK,EAAE,YAAY,CAAC,KAAK,CAAC;QAC1B,KAAK;QACL,MAAM,EAAE,IAAI;QACZ,KAAK,EAAE,CAAC;KACR,CAA8B,CAAA;AAChC,CAAC;AAID,SAAS,YAAY,CACpB,KAAa,EACb,EAAY,EACZ,IAAmB,EACnB,KAAoB;IAEpB,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC,CAAA;IAC7C,OAAO,KAAK,CAAC,KAAK,EAAE;QACnB,IAAI,EAAE,EAAE;QACR,IAAI;QACJ,KAAK;QACL,KAAK;QACL,MAAM,EAAE,cAAc,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC;QACxD,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC;KAC5C,CAAC,CAAA;AACH,CAAC;AAED,SAAS,YAAY,CAAC,KAAc;IACnC,IAAI,KAAK,KAAK,YAAY,IAAI,KAAK,KAAK,yBAAyB,IAAI,KAAK,KAAK,mBAAmB;QACjG,MAAM,IAAI,cAAc,CAAC,EAAE,OAAO,EAAE,+BAA+B,EAAE,CAAC,CAAA;IACvE,OAAO,KAAK,CAAA;AACb,CAAC;AAED,SAAS,YAAY,CACpB,KAAa,EACb,CAAgB,EAChB,CAAgB,EAChB,OAAsB,EACtB,QAAkB;IAElB,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;IACtC,WAAW,CAAC,KAAK,EAAE,CAAC,EAAE,OAAO,CAAC,CAAA;IAC9B,IAAI,KAAgC,CAAA;IACpC,KAAK,MAAM,OAAO,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,EAAE,CAAC;QACvC,IAAI,OAAO,CAAC,MAAM,KAAK,YAAY;YAAE,SAAQ;QAC7C,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,KAAK,IAAI,OAAO,CAAC,MAAM,KAAK,KAAK,CAAC,IAAI,CAAC,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,OAAO,CAAC,MAAM,CAAC;YAC9G,MAAM,IAAI,cAAc,CAAC,EAAE,OAAO,EAAE,GAAG,KAAK,gDAAgD,EAAE,CAAC,CAAA;QAChG,KAAK,GAAG,OAAO,CAAC,MAAM,CAAA;IACvB,CAAC;IACD,OAAO,KAAK,CAAC,KAAK,EAAE;QACnB,IAAI,EAAE,QAAQ;QACd,CAAC;QACD,CAAC;QACD,OAAO;QACP,QAAQ,EAAE,YAAY,CAAC,QAAQ,CAAC;QAChC,KAAK;QACL,MAAM,EACL,CAAC,CAAC,MAAM,KAAK,YAAY,IAAI,CAAC,CAAC,MAAM,KAAK,YAAY,IAAI,OAAO,CAAC,MAAM,KAAK,YAAY;YACxF,CAAC,CAAC,YAAY;YACd,CAAC,CAAC,CAAC,CAAC,MAAM;QACZ,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC;KACpD,CAAC,CAAA;AACH,CAAC;AAED,SAAS,aAAa,CAA4B,KAAa,EAAE,IAAmB;IACnF,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAA;IACxB,IAAI,IAAI,KAAK,YAAY,IAAI,IAAI,KAAK,aAAa,IAAI,IAAI,KAAK,aAAa,IAAI,IAAI,KAAK,aAAa;QACtG,MAAM,IAAI,cAAc,CAAC,EAAE,OAAO,EAAE,GAAG,KAAK,gCAAgC,EAAE,CAAC,CAAA;IAChF,OAAO,KAAK,CAAC,KAAK,EAAE;QACnB,IAAI,EAAE,SAAS;QACf,IAAI;QACJ,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,MAAM,EAAG,EAAE,UAAU,EAAE,YAAY,EAAE,WAAW,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAY,CAAC,IAAI,CAAC;QACjH,KAAK,EAAE,IAAI,CAAC,KAAK,GAAG,CAAC;KACrB,CAAC,CAAA;AACH,CAAC;AAED,SAAS,YAAY,CAA4B,KAAa,EAAE,IAAmB;IAClF,OAAO,KAAK,CAAC,KAAK,EAAE;QACnB,IAAI,EAAE,QAAQ;QACd,IAAI;QACJ,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,MAAM,EAAE,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC;QACtC,KAAK,EAAE,IAAI,CAAC,KAAK,GAAG,CAAC;KACrB,CAAC,CAAA;AACH,CAAC;AAED,SAAS,UAAU,CAClB,KAAa,EACb,IAAiB,EACjB,MAAkB,EAClB,IAAmB;IAEnB,iBAAiB,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,CAAA;IACrC,OAAO,KAAK,CAAC,KAAK,EAAE;QACnB,IAAI,EAAE,MAAM;QACZ,IAAI;QACJ,IAAI;QACJ,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,MAAM;QACN,KAAK,EAAE,IAAI,CAAC,KAAK,GAAG,CAAC;KACrB,CAAC,CAAA;AACH,CAAC;AAED,SAAS,oBAAoB,CAC5B,KAAa,EACb,EAAwB,EACxB,IAAmB;IAEnB,kBAAkB,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,CAAA;IACtC,OAAO,KAAK,CAAC,KAAK,EAAE;QACnB,IAAI,EAAE,EAAE;QACR,IAAI;QACJ,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,MAAM,EAAE,MAAM;QACd,KAAK,EAAE,IAAI,CAAC,KAAK,GAAG,CAAC;KACrB,CAAC,CAAA;AACH,CAAC;AAED,sFAAsF;AACtF,SAAS,WAAW,CAAC,IAA6B;IACjD,MAAM,IAAI,GAAqB,EAAE,CAAA;IACjC,MAAM,OAAO,GAA8B,CAAC,IAAI,CAAC,CAAA;IACjD,OAAO,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC3B,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,EAAE,CAAA;QAC1B,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACxB,MAAK;QACN,CAAC;QACD,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;YACnB,KAAK,KAAK;gBACT,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;gBACnB,MAAK;YACN,KAAK,SAAS;gBACb,MAAK;YACN,KAAK,SAAS,CAAC;YACf,KAAK,QAAQ,CAAC;YACd,KAAK,OAAO,CAAC;YACb,KAAK,UAAU,CAAC;YAChB,KAAK,MAAM;gBACV,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;gBACvB,MAAK;YACN,KAAK,QAAQ;gBACZ,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,CAAA;gBAC1C,MAAK;YACN,KAAK,KAAK,CAAC;YACX,KAAK,UAAU,CAAC;YAChB,KAAK,UAAU,CAAC;YAChB,KAAK,QAAQ;gBACZ,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAA;gBACnC,MAAK;YACN;gBACC,MAAM,IAAI,cAAc,CAAC;oBACxB,OAAO,EAAE,gEAAgE;iBACzE,CAAC,CAAA;QACJ,CAAC;IACF,CAAC;IACD,OAAO,IAAI,CAAA;AACZ,CAAC;AAED,SAAS,KAAK,CAAC,IAAY;IAC1B,OAAO,WAAW,CAAC,IAAI,CAAC,CAAA;AACzB,CAAC;AAED,SAAS,OAAO,CAAC,KAAoB;IACpC,OAAO,aAAa,CAAC,cAAc,EAAE,KAAK,CAAC,CAAA;AAC5C,CAAC;AAED,SAAS,GAAG,CAAC,KAAa;IACzB,QAAQ,CAAC,KAAK,EAAE,YAAY,CAAC,CAAA;IAC7B,OAAO,aAAa,CAAC,cAAc,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,CAAsB,CAAA;AAC1E,CAAC;AAED,SAAS,GAAG,CAAC,KAAa;IACzB,QAAQ,CAAC,KAAK,EAAE,YAAY,CAAC,CAAA;IAC7B,OAAO,aAAa,CAAC,cAAc,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,CAAsB,CAAA;AAC1E,CAAC;AAED,SAAS,GAAG,CAAC,KAAa;IACzB,QAAQ,CAAC,KAAK,EAAE,YAAY,CAAC,CAAA;IAC7B,OAAO,aAAa,CAAC,cAAc,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,CAAsB,CAAA;AAC1E,CAAC;AAED,SAAS,IAAI,CAAC,KAAc;IAC3B,SAAS,CAAC,KAAK,EAAE,aAAa,CAAC,CAAA;IAC/B,OAAO,aAAa,CAAC,cAAc,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAuB,CAAA;AAC5E,CAAC;AAED,SAAS,MAAM,CAAyC,IAAmB;IAC1E,OAAO,YAAY,CAAC,eAAe,EAAE,IAAI,CAAkB,CAAA;AAC5D,CAAC;AAED,SAAS,GAAG,CACX,IAAmB,EACnB,KAAoB;IAEpB,OAAO,YAAY,CAAC,YAAY,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,CAAqC,CAAA;AAC1F,CAAC;AAED,SAAS,QAAQ,CAGf,IAAmB,EAAE,KAAoB;IAC1C,OAAO,YAAY,CAAC,iBAAiB,EAAE,UAAU,EAAE,IAAI,EAAE,KAAK,CAAqC,CAAA;AACpG,CAAC;AAED,SAAS,QAAQ,CAGf,IAAmB,EAAE,KAAoB;IAC1C,OAAO,YAAY,CAAC,iBAAiB,EAAE,UAAU,EAAE,IAAI,EAAE,KAAK,CAAqC,CAAA;AACpG,CAAC;AAED,SAAS,MAAM,CAGb,IAAmB,EAAE,KAAoB;IAC1C,OAAO,YAAY,CAAC,eAAe,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,CAAqC,CAAA;AAChG,CAAC;AAED,SAAS,MAAM,CASd,CAAgB,EAChB,CAAgB,EAChB,OAAsB,EACtB,QAAkB;IAElB,OAAO,YAAY,CAAC,eAAe,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,QAAQ,CAAwD,CAAA;AACrH,CAAC;AAED,SAAS,OAAO,CAAC,IAAoB;IACpC,OAAO,aAAa,CAAC,gBAAgB,EAAE,IAAI,CAA6B,CAAA;AACzE,CAAC;AAED,SAAS,KAAK,CAAC,IAAqC;IACnD,OAAO,UAAU,CAAC,cAAc,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAsB,CAAA;AAC7E,CAAC;AAED,SAAS,UAAU,CAAC,IAAqC;IACxD,OAAO,UAAU,CAAC,mBAAmB,EAAE,YAAY,EAAE,KAAK,EAAE,IAAI,CAAsB,CAAA;AACvF,CAAC;AAED,SAAS,UAAU,CAAC,IAAqC;IACxD,OAAO,UAAU,CAAC,mBAAmB,EAAE,YAAY,EAAE,KAAK,EAAE,IAAI,CAAsB,CAAA;AACvF,CAAC;AAED,SAAS,UAAU,CAAC,IAAqC;IACxD,OAAO,UAAU,CAAC,mBAAmB,EAAE,YAAY,EAAE,KAAK,EAAE,IAAI,CAAsB,CAAA;AACvF,CAAC;AAED,SAAS,SAAS,CAAC,IAAsC;IACxD,OAAO,oBAAoB,CAAC,cAAc,EAAE,OAAO,EAAE,IAAI,CAAC,CAAA;AAC3D,CAAC;AAED,SAAS,YAAY,CAAC,IAAsC;IAC3D,OAAO,oBAAoB,CAAC,iBAAiB,EAAE,UAAU,EAAE,IAAI,CAAC,CAAA;AACjE,CAAC;AAED,oEAAoE;AACpE,SAAS,UAAU,CAAC,IAAgB,EAAE,IAAsD;IAC3F,MAAM,IAAI,GAAG,CAAC,IAAgB,EAAgB,EAAE,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;IACvE,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;QACnB,KAAK,KAAK,CAAC;QACX,KAAK,OAAO;YACX,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,CAAA;QACxC,KAAK,SAAS;YACb,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAA;QAC7D,KAAK,SAAS,CAAC;QACf,KAAK,QAAQ,CAAC;QACd,KAAK,OAAO,CAAC;QACb,KAAK,UAAU;YACd,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAA;QAClD,KAAK,MAAM;YACV,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAA;QACnE,KAAK,QAAQ;YACZ,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAA;QACnH,KAAK,KAAK,CAAC;QACX,KAAK,UAAU,CAAC;QAChB,KAAK,UAAU,CAAC;QAChB,KAAK,QAAQ;YACZ,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAA;IAC5E,CAAC;AACF,CAAC;AAED,2EAA2E;AAC3E,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;IAC5B,KAAK;IACL,OAAO;IACP,GAAG;IACH,GAAG;IACH,GAAG;IACH,IAAI;IACJ,MAAM;IACN,GAAG;IACH,QAAQ;IACR,QAAQ;IACR,MAAM;IACN,MAAM;IACN,OAAO;IACP,KAAK;IACL,UAAU;IACV,UAAU;IACV,UAAU;IACV,KAAK,EAAE,SAAS;IAChB,QAAQ,EAAE,YAAY;CACtB,CAAC,CAAA;AAsBF,OAAO,EACN,WAAW,EACX,aAAa,EACb,cAAc,EACd,SAAS,EACT,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,YAAY,EACZ,kBAAkB,EAClB,aAAa,EACb,YAAY,EACZ,aAAa,EACb,gBAAgB,EAChB,YAAY,EACZ,WAAW,EACX,YAAY,EACZ,MAAM,EACN,mBAAmB,EACnB,YAAY,EACZ,UAAU,EACV,oBAAoB,EACpB,aAAa,EACb,aAAa,EACb,YAAY,EACZ,YAAY,EACZ,UAAU,EACV,CAAA"}
|
package/dist/shape.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { Query } from "./query/lower.js";
|
|
2
|
-
import type { ParamsRecord } from "./query/scope.js";
|
|
2
|
+
import type { inferred, 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)
|
|
@@ -18,7 +18,10 @@ type Rel<S extends AnySchema> = Extract<S["relations"][keyof S["relations"]], An
|
|
|
18
18
|
* fields and its exact projection. Every selected field is required.
|
|
19
19
|
*/
|
|
20
20
|
type Key<K extends KeyStatement<AnyRelation, readonly string[]>> = Pick<Fact<K["owner"]>, Extract<K["projection"][number], keyof Fact<K["owner"]>>>;
|
|
21
|
-
/**
|
|
22
|
-
|
|
21
|
+
/** The immutable executable view of a query. Readers consume its schema/data
|
|
22
|
+
* and inferred result/parameters, not the author's rule-building methods.
|
|
23
|
+
* Runtime schema identity remains authoritative for dynamically built schemas.
|
|
24
|
+
*/
|
|
25
|
+
type QueryTemplate<S extends AnySchema, P extends ParamsRecord, A> = Pick<Query<S["relations"], A, P>, "schema" | "data" | typeof inferred>;
|
|
23
26
|
export type { Key, QueryTemplate, Rel };
|
|
24
27
|
//# sourceMappingURL=shape.d.ts.map
|
package/dist/shape.d.ts.map
CHANGED
|
@@ -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;
|
|
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,QAAQ,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAC7D;;;;;;;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;;;GAGG;AACH,KAAK,aAAa,CAAC,CAAC,SAAS,SAAS,EAAE,CAAC,SAAS,YAAY,EAAE,CAAC,IAAI,IAAI,CACxE,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAC3B,QAAQ,GAAG,MAAM,GAAG,OAAO,QAAQ,CACnC,CAAA;AAED,YAAY,EAAE,GAAG,EAAE,aAAa,EAAE,GAAG,EAAE,CAAA"}
|
package/pack-provenance.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
|
-
"candidateSourceDigest": "
|
|
2
|
+
"candidateSourceDigest": "cf0cd07de3f8596acc7b15601063911472272a859f0fad176c3f75cd48f95719",
|
|
3
3
|
"specificationRevision": "87e9a83ee21d1f843c73ac6e7057b2b740db75aae70a553b8053b4f38e87bd2d",
|
|
4
|
-
"stagedAt": "2026-09-
|
|
4
|
+
"stagedAt": "2026-09-11T16:23:11.093Z",
|
|
5
5
|
"package": "@bjornpagen/bumbledb",
|
|
6
|
-
"version": "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.
|
|
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.
|
|
61
|
-
"@bjornpagen/bumbledb-linux-arm64": "1.
|
|
62
|
-
"@bjornpagen/bumbledb-linux-x64": "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/capacity.ts
CHANGED
|
@@ -77,9 +77,10 @@ type RangeBan<Lo extends bigint, Hi extends bigint> = bigint extends Lo
|
|
|
77
77
|
* The C18 dimension gate's ban row, unit instance (the engine's
|
|
78
78
|
* `CapacityDimensionMixing` twin, ruled 2026-07-24): a unit (count)
|
|
79
79
|
* window against a `duration` bound counts facts against a span of
|
|
80
|
-
*
|
|
81
|
-
* only
|
|
82
|
-
*
|
|
80
|
+
* interval coordinates — a dimension error. Judged on the `capacity`
|
|
81
|
+
* UNIT overload only. Explicit scalar and Duration measures may use
|
|
82
|
+
* either scalar or Duration bounds; the application supplies their
|
|
83
|
+
* common unit (for example, cents or calendar days).
|
|
83
84
|
*/
|
|
84
85
|
type UnitDimensionBan<W extends CapacityWindow> = W extends {
|
|
85
86
|
readonly hi: { readonly kind: "durationField" }
|
|
@@ -289,7 +290,9 @@ function ref<const F extends string>(field: F & PathBan<F>): FieldRef<F> {
|
|
|
289
290
|
* `Duration(field)` — the interval-measure spelling, one mint for both
|
|
290
291
|
* slots: handed to `weigh` it is the SOURCE row's interval measure;
|
|
291
292
|
* in `within`'s hi slot it is the TARGET row's interval-measure bound
|
|
292
|
-
*
|
|
293
|
+
* in the interval element's unit, not necessarily a clock unit.
|
|
294
|
+
* Explicit u64 measures/bounds may carry that same unit; an unweighted
|
|
295
|
+
* row count cannot be bounded by an interval measure (C18).
|
|
293
296
|
*/
|
|
294
297
|
function duration<const F extends string>(field: F & PathBan<F>): DurationRef<F> {
|
|
295
298
|
return Object.freeze({ kind: "durationField", field: assertRowLocal(field, "Duration measure") })
|
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,9 +113,15 @@ 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 {
|
|
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
|
-
export type { Agg, RowOfFind } from "#query/find.ts"
|
|
124
|
+
export type { Agg, HeadRecordOf, RowOfFind } from "#query/find.ts"
|
|
118
125
|
export type {
|
|
119
126
|
AnyQuery,
|
|
120
127
|
AnyRuleValue,
|
|
@@ -136,6 +143,7 @@ export { lowerQuery, query } from "#query/lower.ts"
|
|
|
136
143
|
export type {
|
|
137
144
|
ClassedField,
|
|
138
145
|
Flatten,
|
|
146
|
+
ImportedFieldVar,
|
|
139
147
|
MatchFields,
|
|
140
148
|
MatchOwner,
|
|
141
149
|
Param,
|
|
@@ -146,6 +154,7 @@ export type {
|
|
|
146
154
|
VarsOf
|
|
147
155
|
} from "#query/scope.ts"
|
|
148
156
|
export { v } from "#query/scope.ts"
|
|
157
|
+
export type { IntervalVar, SegmentOp, Segments } from "#query/segments.ts"
|
|
149
158
|
export type {
|
|
150
159
|
AnyRelation,
|
|
151
160
|
Fact,
|
|
@@ -163,9 +172,12 @@ export { NativeRuntime } from "#runtime.ts"
|
|
|
163
172
|
export type { CloseReport, OutstandingWork } from "#runtime-errors.ts"
|
|
164
173
|
export { CloseFailure, DbError, dbError, runtimeErrorCodes } from "#runtime-errors.ts"
|
|
165
174
|
export type {
|
|
175
|
+
IntervalKind,
|
|
166
176
|
NumericCast,
|
|
177
|
+
Rounding,
|
|
167
178
|
ScalarExpr,
|
|
168
179
|
ScalarFieldRef,
|
|
180
|
+
ScalarInputKind,
|
|
169
181
|
ScalarKind,
|
|
170
182
|
ScalarLeafScope,
|
|
171
183
|
ScalarLiteral,
|
package/src/law.ts
CHANGED
|
@@ -377,11 +377,14 @@ type ComputedClasses<Rels extends SchemaRelations, Comps extends readonly string
|
|
|
377
377
|
}
|
|
378
378
|
}
|
|
379
379
|
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
380
|
+
// A generated/erased statement array is not an empty theory. Its runtime
|
|
381
|
+
// containments may connect any compatible fields, so retain unknown classes
|
|
382
|
+
// until the native authoring boundary rather than inventing bare carriers.
|
|
383
|
+
type ClassesOf<Rels extends SchemaRelations, Stmts extends readonly Statement[]> = [DecidableRoster<Stmts>] extends [
|
|
384
|
+
true
|
|
385
|
+
]
|
|
386
|
+
? ComputedClasses<Rels, BuildComps<PairsOf<Stmts>>, GeneratorsOf<Rels>>
|
|
387
|
+
: SchemaClasses
|
|
385
388
|
|
|
386
389
|
interface MemberCoords {
|
|
387
390
|
readonly relation: string
|