@bjornpagen/bumbledb 0.1.0 → 0.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 (112) hide show
  1. package/COOKBOOK.md +1450 -0
  2. package/README.md +69 -30
  3. package/dist/closed.d.ts +157 -38
  4. package/dist/closed.d.ts.map +1 -1
  5. package/dist/closed.js +232 -47
  6. package/dist/closed.js.map +1 -1
  7. package/dist/count.d.ts +64 -17
  8. package/dist/count.d.ts.map +1 -1
  9. package/dist/count.js +37 -14
  10. package/dist/count.js.map +1 -1
  11. package/dist/db.d.ts +27 -8
  12. package/dist/db.d.ts.map +1 -1
  13. package/dist/db.js +33 -10
  14. package/dist/db.js.map +1 -1
  15. package/dist/exhume.d.ts +12 -11
  16. package/dist/exhume.d.ts.map +1 -1
  17. package/dist/exhume.js +7 -6
  18. package/dist/exhume.js.map +1 -1
  19. package/dist/face.d.ts +135 -30
  20. package/dist/face.d.ts.map +1 -1
  21. package/dist/face.js +44 -19
  22. package/dist/face.js.map +1 -1
  23. package/dist/fields.d.ts +130 -130
  24. package/dist/fields.d.ts.map +1 -1
  25. package/dist/fields.js +60 -94
  26. package/dist/fields.js.map +1 -1
  27. package/dist/index.d.ts +29 -24
  28. package/dist/index.d.ts.map +1 -1
  29. package/dist/index.js +19 -14
  30. package/dist/index.js.map +1 -1
  31. package/dist/law.d.ts +224 -0
  32. package/dist/law.d.ts.map +1 -0
  33. package/dist/law.js +224 -0
  34. package/dist/law.js.map +1 -0
  35. package/dist/lower.d.ts +17 -7
  36. package/dist/lower.d.ts.map +1 -1
  37. package/dist/lower.js +66 -24
  38. package/dist/lower.js.map +1 -1
  39. package/dist/marshal.d.ts +36 -21
  40. package/dist/marshal.d.ts.map +1 -1
  41. package/dist/marshal.js +41 -25
  42. package/dist/marshal.js.map +1 -1
  43. package/dist/native.d.ts +6 -2
  44. package/dist/native.d.ts.map +1 -1
  45. package/dist/native.js +2 -2
  46. package/dist/native.js.map +1 -1
  47. package/dist/query/atom.d.ts +370 -174
  48. package/dist/query/atom.d.ts.map +1 -1
  49. package/dist/query/atom.js +75 -172
  50. package/dist/query/atom.js.map +1 -1
  51. package/dist/query/lower.d.ts +312 -109
  52. package/dist/query/lower.d.ts.map +1 -1
  53. package/dist/query/lower.js +906 -387
  54. package/dist/query/lower.js.map +1 -1
  55. package/dist/query/predicate.d.ts +70 -88
  56. package/dist/query/predicate.d.ts.map +1 -1
  57. package/dist/query/predicate.js +118 -72
  58. package/dist/query/predicate.js.map +1 -1
  59. package/dist/query/run.d.ts +19 -16
  60. package/dist/query/run.d.ts.map +1 -1
  61. package/dist/query/run.js +31 -24
  62. package/dist/query/run.js.map +1 -1
  63. package/dist/query/scope.d.ts +178 -127
  64. package/dist/query/scope.d.ts.map +1 -1
  65. package/dist/query/scope.js +111 -108
  66. package/dist/query/scope.js.map +1 -1
  67. package/dist/query/select.d.ts +102 -80
  68. package/dist/query/select.d.ts.map +1 -1
  69. package/dist/query/select.js +39 -34
  70. package/dist/query/select.js.map +1 -1
  71. package/dist/relation.d.ts +48 -38
  72. package/dist/relation.d.ts.map +1 -1
  73. package/dist/relation.js +24 -19
  74. package/dist/relation.js.map +1 -1
  75. package/dist/schema.d.ts +41 -3
  76. package/dist/schema.d.ts.map +1 -1
  77. package/dist/schema.js +34 -9
  78. package/dist/schema.js.map +1 -1
  79. package/dist/spec.d.ts +7 -5
  80. package/dist/spec.d.ts.map +1 -1
  81. package/dist/spec.js.map +1 -1
  82. package/dist/statements.d.ts +91 -36
  83. package/dist/statements.d.ts.map +1 -1
  84. package/dist/statements.js +42 -12
  85. package/dist/statements.js.map +1 -1
  86. package/package.json +4 -3
  87. package/src/closed.ts +448 -95
  88. package/src/count.ts +112 -18
  89. package/src/db.ts +45 -17
  90. package/src/exhume.ts +12 -11
  91. package/src/face.ts +211 -41
  92. package/src/fields.ts +199 -234
  93. package/src/index.ts +78 -61
  94. package/src/law.ts +519 -0
  95. package/src/lower.ts +82 -27
  96. package/src/marshal.ts +48 -30
  97. package/src/native.ts +8 -4
  98. package/src/query/atom.ts +525 -374
  99. package/src/query/lower.ts +1469 -538
  100. package/src/query/predicate.ts +208 -161
  101. package/src/query/run.ts +35 -25
  102. package/src/query/scope.ts +264 -218
  103. package/src/query/select.ts +168 -93
  104. package/src/relation.ts +47 -47
  105. package/src/schema.ts +69 -18
  106. package/src/spec.ts +7 -5
  107. package/src/statements.ts +124 -41
  108. package/dist/brand.d.ts +0 -59
  109. package/dist/brand.d.ts.map +0 -1
  110. package/dist/brand.js +0 -47
  111. package/dist/brand.js.map +0 -1
  112. package/src/brand.ts +0 -82
@@ -1,134 +1,137 @@
1
1
  /**
2
- * Query scope terms (PRD-08): typed variables and parameters, declared
3
- * inside a `query()` scope callback so identity is lexical. A `Var` is
4
- * typed by the field it is declared from and joins are brand-equal by
5
- * construction (the nominal join discipline); var identity is OBJECT
6
- * identity — two `$.var` calls are two variables even from the same field,
7
- * and no name-collision machinery exists. Params are query-global, carry a
8
- * mandatory literal name (the key of `execute`'s params object), and lower
9
- * to dense positional `ParamId`s in declaration order. This module also
10
- * owns the type-level params extraction: every atom and condition value
11
- * carries its contributed params object in a phantom, and the query's
12
- * `Params` type is the flattened intersection over the returned rules —
13
- * inference rides the return value, never a mutable type accumulator.
2
+ * Query scope terms, LAW-TYPED edition: string-named variables and
3
+ * parameters as plain frozen values. A `Var` is a NAME — it is typed by the
4
+ * field slot it first binds (the descriptor AND the slot's law-computed
5
+ * CLASS, read off the schema's class map through the rule builder's
6
+ * environment), reuse of the name within one rule IS the join, and a
7
+ * class-mismatched reuse is a compile error: a var joins only class-equal
8
+ * slots, and BARE PAIRS ONLY WITH BARE (ruling 3 — a slot in no law has no
9
+ * class and never joins a classed slot; the deliberate sum-domain pointer
10
+ * stays legal against other bare slots). Params are query-global by name
11
+ * and typed BY USE: the field position or comparison sibling that anchors
12
+ * a param types it, the query's inferred `Params` object is exactly the
13
+ * params the rules use, and a param value that no rule uses simply never
14
+ * registers — the query executes under its own inferred type (the
15
+ * bug-hunt law). This module also owns the environment/typing utilities
16
+ * the whole surface shares: the env shape (var name → classed slot), the
17
+ * class-equality judgment {@link JoinOk} with its runtime twin
18
+ * {@link fieldJoins}, and the record-folding helpers `Params` and `Row`
19
+ * inference ride.
14
20
  */
15
21
  import * as errors from "@superbuilders/errors";
16
- import { phantom } from "#brand.ts";
17
22
  /**
18
23
  * The runtime discriminant of query term values. Host literals (bigints,
19
- * strings, interval objects, `oneOf` sets) never carry it, so "is this
20
- * binding a term or a literal" is one property probe, never a guess.
24
+ * strings, interval objects) never carry it, so "is this position a term
25
+ * or a literal" is one property probe, never a guess.
21
26
  */
22
27
  const term = Symbol("bumbledb.query.term");
23
- /** Narrows an unknown binding value to a scope term (vs a host literal). */
28
+ /**
29
+ * The carrier of a value's INFERRED types (a rule's row/params, a query's
30
+ * row/params, a rec's params). The property is never present at runtime —
31
+ * it exists so inference rides plain values without any brand on any
32
+ * field value.
33
+ */
34
+ const inferred = Symbol("bumbledb.query.inferred");
35
+ /** Narrows an unknown position value to a scope term (vs a host literal). */
24
36
  function isTerm(value) {
25
37
  return typeof value === "object" && value !== null && term in value;
26
38
  }
27
- /** Creates one empty scope registry over the query's theory. */
28
- function createRegistry(theory) {
29
- return {
30
- theory,
31
- vars: new Set(),
32
- params: [],
33
- paramIndex: new Map(),
34
- predicates: []
35
- };
39
+ /** Builds one variable term. */
40
+ function makeVar(name) {
41
+ const value = { [term]: "var", name };
42
+ return Object.freeze(value);
36
43
  }
37
44
  /**
38
- * The relation-kind discriminant: a closed relation's runtime description
39
- * carries its handle roster, an ordinary relation's never does.
45
+ * The trusted seam of the vars mint: every requested name reads back as an
46
+ * own var term of exactly that name — verified before the record is
47
+ * admitted at the {@link VarsRecord} type (a name riding the
48
+ * object-protocol accessor instead of an own definition would fail exactly
49
+ * this check).
40
50
  */
41
- function isClosedMember(member) {
42
- return "handles" in member.data;
51
+ function varsMinted(record, names) {
52
+ return names.every(function varMinted(name) {
53
+ if (!Object.hasOwn(record, name)) {
54
+ return false;
55
+ }
56
+ const value = record[name];
57
+ return isTerm(value) && value[term] === "var" && value.name === name;
58
+ });
43
59
  }
44
60
  /**
45
- * Resolves a field reference's runtime description through the schema —
46
- * the seam that types `$.var`/`$.param` declarations at runtime (the type
47
- * level already carries the brand; this recovers the structural type the
48
- * lowering and the param marshaler direct by).
61
+ * Mints several variables at once — `const { service, w } = r.vars("service",
62
+ * "w")`: tuple-to-object, each name typed exactly (`Var<"service">`),
63
+ * inference identical to the one-at-a-time `r.var` spelling (one lowering,
64
+ * two entry flavors). Each key is defined as an OWN property (a name like
65
+ * `"__proto__"` is a record key like any other, never a prototype write),
66
+ * and a duplicate name in one call is a construction error: each name mints
67
+ * one variable — write it once and reuse the binding.
49
68
  */
50
- function resolveFieldData(theory, relationName, fieldName) {
51
- const member = theory.relations[relationName];
52
- if (member === undefined) {
53
- throw errors.new(`schema ${theory.name} has no relation ${relationName}`);
54
- }
55
- if (isClosedMember(member)) {
56
- if (fieldName === "id") {
57
- return member.id.data;
69
+ function makeVars(...names) {
70
+ const out = {};
71
+ const seen = new Set();
72
+ for (const name of names) {
73
+ if (seen.has(name)) {
74
+ throw errors.new(`vars: duplicate name ${name} — each name mints one variable; write it once and reuse the binding`);
58
75
  }
59
- const column = member.data.columns.find(function byName(candidate) {
60
- return candidate.name === fieldName;
61
- });
62
- if (column === undefined) {
63
- throw errors.new(`closed relation ${relationName} has no column ${fieldName}`);
64
- }
65
- return column.field;
76
+ seen.add(name);
77
+ Object.defineProperty(out, name, { value: makeVar(name), enumerable: true });
66
78
  }
67
- const declared = member.data.fields.find(function byName(candidate) {
68
- return candidate.name === fieldName;
69
- });
70
- if (declared === undefined) {
71
- throw errors.new(`relation ${relationName} has no field ${fieldName}`);
79
+ Object.freeze(out);
80
+ if (!varsMinted(out, names)) {
81
+ throw errors.new("vars: variable minting incomplete");
72
82
  }
73
- return declared.field;
83
+ return out;
74
84
  }
75
- /** Declares one variable in the scope (the `$.var` implementation). */
76
- function scopeVar(registry, ref) {
77
- const value = Object.freeze({
78
- [term]: "var",
79
- relation: ref.relation,
80
- field: ref.field,
81
- data: resolveFieldData(registry.theory, ref.relation, ref.field)
82
- });
83
- registry.vars.add(value);
84
- return value;
85
+ /** Builds one scalar-parameter term. */
86
+ function makeParam(name) {
87
+ const value = { [term]: "param", name };
88
+ return Object.freeze(value);
85
89
  }
86
- /** Rejects a second parameter under an already-taken name. */
87
- function assertFreshParamName(registry, name) {
88
- const taken = registry.params.some(function byName(entry) {
89
- return entry.name === name;
90
- });
91
- if (taken) {
92
- throw errors.new(`query scope already declares a param named ${name} — param names key the execute params object, one declaration each`);
93
- }
90
+ /** Builds one set-parameter term. */
91
+ function makeSetParam(name) {
92
+ const value = { [term]: "setParam", name };
93
+ return Object.freeze(value);
94
94
  }
95
- /** Declares one scalar parameter (the `$.param` implementation). */
96
- function scopeParam(registry, name, ref) {
97
- assertFreshParamName(registry, name);
98
- const data = resolveFieldData(registry.theory, ref.relation, ref.field);
99
- const value = Object.freeze({
100
- [term]: "param",
101
- name,
102
- relation: ref.relation,
103
- field: ref.field,
104
- data
105
- });
106
- registry.paramIndex.set(value, registry.params.length);
107
- registry.params.push(Object.freeze({ name, shape: "value", data }));
108
- return value;
95
+ /** Builds one Allen-mask-parameter term. */
96
+ function makeMaskParam(name) {
97
+ const value = { [term]: "maskParam", name };
98
+ return Object.freeze(value);
109
99
  }
110
- /** Declares one set parameter (the `$.paramSet` implementation). */
111
- function scopeParamSet(registry, name, ref) {
112
- assertFreshParamName(registry, name);
113
- const data = resolveFieldData(registry.theory, ref.relation, ref.field);
114
- const value = Object.freeze({
115
- [term]: "paramSet",
116
- name,
117
- relation: ref.relation,
118
- field: ref.field,
119
- data
120
- });
121
- registry.paramIndex.set(value, registry.params.length);
122
- registry.params.push(Object.freeze({ name, shape: "set", data }));
123
- return value;
100
+ /** Builds one measure term over an interval-typed variable's name. */
101
+ function makeDuration(name) {
102
+ const value = { [term]: "duration", name };
103
+ return Object.freeze(value);
104
+ }
105
+ /**
106
+ * The runtime twin of {@link JoinOk}: two bound slots join iff descriptor
107
+ * structure and class agree — the same comparison the type tier makes,
108
+ * judged on the honest runtime values (the descriptor and the schema
109
+ * value's frozen class map). The rule builders throw through this on a
110
+ * class-unequal variable reuse, so the wall holds for untyped callers too,
111
+ * not only where the compiler can see.
112
+ */
113
+ function fieldJoins(a, b) {
114
+ const widthA = "width" in a.field ? a.field.width : undefined;
115
+ const widthB = "width" in b.field ? b.field.width : undefined;
116
+ const elementA = "element" in a.field ? a.field.element : undefined;
117
+ const elementB = "element" in b.field ? b.field.element : undefined;
118
+ return a.field.kind === b.field.kind && a.class === b.class && widthA === widthB && elementA === elementB;
124
119
  }
125
- /** Declares one Allen-mask parameter (the `$.allenParam` implementation). */
126
- function scopeAllenParam(registry, name) {
127
- assertFreshParamName(registry, name);
128
- const value = Object.freeze({ [term]: "maskParam", name });
129
- registry.paramIndex.set(value, registry.params.length);
130
- registry.params.push(Object.freeze({ name, shape: "mask", data: undefined }));
131
- return value;
120
+ /**
121
+ * Renders one bound slot for join-mismatch diagnostics — the structural
122
+ * kind in the schema grammar's spelling plus the slot's law-computed class
123
+ * (`u64 in class Holder.id`; a lawless slot renders `bare`).
124
+ */
125
+ function renderFieldKind(slot) {
126
+ const field = slot.field;
127
+ let base = field.kind;
128
+ if (field.kind === "bytes") {
129
+ base = `bytes<${field.width}>`;
130
+ }
131
+ if (field.kind === "interval") {
132
+ base = field.width === undefined ? `interval<${field.element}>` : `interval<${field.element}, ${field.width}>`;
133
+ }
134
+ return slot.class === undefined ? `${base} (bare)` : `${base} in class ${slot.class}`;
132
135
  }
133
- export { createRegistry, isTerm, resolveFieldData, scopeAllenParam, scopeParam, scopeParamSet, scopeVar, term };
136
+ export { fieldJoins, inferred, isTerm, makeDuration, makeMaskParam, makeParam, makeSetParam, makeVar, makeVars, renderFieldKind, term };
134
137
  //# sourceMappingURL=scope.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"scope.js","sourceRoot":"","sources":["../../src/query/scope.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"scope.js","sourceRoot":"","sources":["../../src/query/scope.ts"],"names":[],"mappings":"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"}
@@ -1,86 +1,55 @@
1
1
  /**
2
- * Select entries and aggregates (PRD-08) — the head vocabulary, mirroring
3
- * the IR's aggregate roster exactly (`bumbledb/crates/bumbledb/src/ir.rs`
4
- * `AggOp`/`FindTerm`; `docs/architecture/20-query-ir.md` § aggregation):
5
- * `count` (nullary), `countDistinct`, `sum`/`min`/`max` (over a u64/i64
6
- * variable or the measure), `argmax`/`argmin` (arg-restriction: carried
7
- * value + orderable key; a tie yields every attaining row), and `pack`
8
- * (the coalescing fold — RELATION-SHAPED: one answer row per (group,
9
- * maximal segment), the result position interval-typed). Grouping is
2
+ * Select entries and aggregates, STRUCTURAL edition — the head vocabulary,
3
+ * mirroring the IR's aggregate roster exactly
4
+ * (`bumbledb/crates/bumbledb/src/ir.rs` `AggOp`/`FindTerm`;
5
+ * `docs/architecture/20-query-ir.md` § aggregation): `count` (nullary),
6
+ * `countDistinct`, `sum`/`min`/`max` (over an orderable variable or the
7
+ * measure), `argMax`/`argMin` (arg-restriction: carried value + orderable
8
+ * key; a tie yields every attaining row), and `pack` (the coalescing fold —
9
+ * RELATION-SHAPED: one answer row per (group, maximal segment), the result
10
+ * position interval-typed). Aggregates name their variables — `r.sum("m")`
11
+ * — and are typed by the rule environment at `.select`. Grouping is
10
12
  * implicit: the non-aggregate select entries are the group key; over empty
11
13
  * input an all-aggregate select yields the EMPTY SET, never a zero row.
14
+ * The creation quarantine is representational: a head position is a var
15
+ * name, the measure, or an aggregate — no minting or arithmetic term
16
+ * exists to spell (permanent law).
12
17
  */
13
- import type { IntervalValue } from "#brand.ts";
14
- import { phantom } from "#brand.ts";
15
- import type { Duration } from "#query/atom.ts";
16
- import type { AnyVar, Flatten, Var } from "#query/scope.ts";
17
- import { term } from "#query/scope.ts";
18
- /** The three folds the measure admits (and the plain-variable folds). */
19
- type FoldOp = "sum" | "min" | "max";
20
- /** One aggregate's runtime description. */
21
- type AggregateData = {
22
- readonly op: "count";
23
- } | {
24
- readonly op: "countDistinct";
25
- readonly over: AnyVar;
26
- } | {
27
- readonly op: "fold";
28
- readonly fold: FoldOp;
29
- readonly over: AnyVar | Duration;
30
- } | {
31
- readonly op: "arg";
32
- readonly direction: "argMax" | "argMin";
33
- readonly key: AnyVar;
34
- readonly over: AnyVar;
35
- } | {
36
- readonly op: "pack";
37
- readonly over: AnyVar;
38
- };
18
+ import type { Infer } from "#fields.ts";
19
+ import type { IntervalVarOk, OrderVarOk } from "#query/atom.ts";
20
+ import type { Duration, EnvShape, ShapeOf } from "#query/scope.ts";
21
+ /** One aggregate operator name of the select vocabulary. */
22
+ type AggOpName = "count" | "countDistinct" | "sum" | "min" | "max" | "argMax" | "argMin" | "pack";
39
23
  /**
40
- * One aggregate select value; the phantom carries the answer column's
41
- * host type (`count`/`countDistinct` → `bigint` whatever they counted;
42
- * folds carry their input's type; the Arg forms the carried payload's
43
- * type; `pack` its interval type).
24
+ * One aggregate select VALUE: the op, the variable name (or measure) it
25
+ * folds, and — for the Arg forms — the orderable key's variable name. The
26
+ * runtime representation carries the types; the rule environment types the
27
+ * result at `.select`.
44
28
  */
45
- interface Aggregate<R> {
46
- readonly aggregate: AggregateData;
47
- readonly [phantom]?: R;
29
+ interface Agg<Op extends AggOpName, Over extends string | Duration<string> | undefined, Key extends string | undefined = undefined> {
30
+ readonly agg: Op;
31
+ readonly over: Over;
32
+ readonly key: Key;
48
33
  }
49
- /** What a select record's values may be: a projection, a measure, or an aggregate. */
50
- type SelectEntryInput = AnyVar | Duration | Aggregate<unknown>;
51
- /** The select record: answer column name to entry, written order = column order. */
52
- type SelectShape = Readonly<Record<string, SelectEntryInput>>;
53
- /** One select entry's answer type. */
54
- type SelectValue<T> = T extends {
55
- readonly aggregate: AggregateData;
56
- readonly [phantom]?: infer R;
57
- } ? Exclude<R, undefined> : T extends {
58
- readonly measure: AnyVar;
59
- } ? bigint : T extends {
60
- readonly [term]: "var";
61
- readonly [phantom]?: infer V;
62
- } ? Exclude<V, undefined> : never;
63
- /** The inferred answer-row object type of a select record. */
64
- type RowOf<Sel extends SelectShape> = Flatten<{
65
- [K in keyof Sel]: SelectValue<Sel[K]>;
66
- }>;
67
- /** Nullary count: |the group's set of distinct full bindings|, `bigint`. */
68
- declare function count(): Aggregate<bigint>;
69
- /** |the distinct values of `over` across the group|, `bigint`; legal over every type. */
70
- declare function countDistinct<V>(over: Var<V>): Aggregate<bigint>;
34
+ /** Any aggregate select value. */
35
+ type AnyAgg = Agg<AggOpName, string | Duration<string> | undefined, string | undefined>;
36
+ /** One select entry: a projected var name, the measure, or an aggregate. */
37
+ type SelectEntry = string | Duration<string> | AnyAgg;
38
+ /** Nullary count: |the group's set of distinct full bindings|, `bigint`; the answer column is named `count`. */
39
+ declare function count(): Agg<"count", undefined>;
40
+ /** |the distinct values of the named variable across the group|, `bigint`; legal over every type. */
41
+ declare function countDistinct<const N extends string>(over: N): Agg<"countDistinct", N>;
71
42
  /**
72
- * Exact checked sum over a u64/i64 variable (wide accumulator, one
73
- * finalize range check — overflow is the engine's typed runtime error,
74
- * never a wrap), or over the measure (`sum(duration(v))`).
43
+ * Exact checked sum over an orderable (u64/i64) variable — wide
44
+ * accumulator, one finalize range check; overflow is the engine's typed
45
+ * runtime error, never a wrap — or over the measure
46
+ * (`r.sum(r.duration("w"))`).
75
47
  */
76
- declare function sum<V extends bigint>(over: Var<V>): Aggregate<V>;
77
- declare function sum(over: Duration): Aggregate<bigint>;
78
- /** Minimum over a u64/i64 variable or the measure (orderable types only). */
79
- declare function min<V extends bigint>(over: Var<V>): Aggregate<V>;
80
- declare function min(over: Duration): Aggregate<bigint>;
81
- /** Maximum over a u64/i64 variable or the measure (orderable types only). */
82
- declare function max<V extends bigint>(over: Var<V>): Aggregate<V>;
83
- declare function max(over: Duration): Aggregate<bigint>;
48
+ declare function sum<const N extends string | Duration<string>>(over: N): Agg<"sum", N>;
49
+ /** Minimum over an orderable variable or the measure (orderable types only). */
50
+ declare function min<const N extends string | Duration<string>>(over: N): Agg<"min", N>;
51
+ /** Maximum over an orderable variable or the measure (orderable types only). */
52
+ declare function max<const N extends string | Duration<string>>(over: N): Agg<"max", N>;
84
53
  /**
85
54
  * Arg-restriction toward the maximum of `key` (`ir::AggOp::ArgMax`): the
86
55
  * group's binding set is restricted to the bindings attaining the extreme
@@ -89,9 +58,9 @@ declare function max(over: Duration): Aggregate<bigint>;
89
58
  * direction; Arg and fold aggregates never mix (both the engine's typed
90
59
  * rules).
91
60
  */
92
- declare function argmax<K extends bigint, V>(key: Var<K>, value: Var<V>): Aggregate<V>;
93
- /** Arg-restriction toward the minimum of `key`; rules as {@link argmax}. */
94
- declare function argmin<K extends bigint, V>(key: Var<K>, value: Var<V>): Aggregate<V>;
61
+ declare function argMax<const V extends string, const K extends string>(value: V, key: K): Agg<"argMax", V, K>;
62
+ /** Arg-restriction toward the minimum of `key`; rules as {@link argMax}. */
63
+ declare function argMin<const V extends string, const K extends string>(value: V, key: K): Agg<"argMin", V, K>;
95
64
  /**
96
65
  * The coalescing fold (Snodgrass coalesce, `ir::AggOp::Pack`): per group,
97
66
  * the maximal disjoint half-open segments of the union of the group's
@@ -100,7 +69,60 @@ declare function argmin<K extends bigint, V>(key: Var<K>, value: Var<V>): Aggreg
100
69
  * input's element type. At most one `pack` per select, never beside a
101
70
  * fold or an Arg entry (the engine's typed rules).
102
71
  */
103
- declare function pack<IV extends IntervalValue>(over: Var<IV>): Aggregate<IV>;
104
- export type { Aggregate, AggregateData, FoldOp, RowOf, SelectEntryInput, SelectShape, SelectValue };
105
- export { argmax, argmin, count, countDistinct, max, min, pack, sum };
72
+ declare function pack<const N extends string>(over: N): Agg<"pack", N>;
73
+ /** A fold input's judgment: an orderable variable, or the measure of an interval variable. */
74
+ type FoldOverOk<Env extends EnvShape, O> = O extends string ? OrderVarOk<Env, O> : O extends Duration<infer N extends string> ? IntervalVarOk<Env, N> : false;
75
+ /**
76
+ * One select entry's judgment against the rule environment: projected
77
+ * names must be bound, the measure and `pack` demand interval-typed
78
+ * variables, folds and Arg keys demand orderable ones.
79
+ */
80
+ type SelectEntryOk<Env extends EnvShape, E> = E extends string ? E extends keyof Env ? true : false : E extends Duration<infer N extends string> ? IntervalVarOk<Env, N> : E extends Agg<"count", undefined> ? true : E extends Agg<"countDistinct", infer O extends string> ? O extends keyof Env ? true : false : E extends Agg<"sum" | "min" | "max", infer O> ? FoldOverOk<Env, O> : E extends Agg<"argMax" | "argMin", infer O extends string, infer K extends string> ? [O extends keyof Env ? true : false, OrderVarOk<Env, K>] extends [true, true] ? true : false : E extends Agg<"pack", infer O extends string> ? IntervalVarOk<Env, O> : false;
81
+ /** The validated select tuple (intersect with the inferred entries — errors land on the offending argument). */
82
+ type CheckSelect<Env extends EnvShape, S> = {
83
+ readonly [I in keyof S]: SelectEntryOk<Env, S[I]> extends true ? S[I] : never;
84
+ };
85
+ /** The validated names-only select tuple of a RECURSIVE rule (aggregates and the measure are unwritable there). */
86
+ type CheckNameSelect<Env extends EnvShape, S> = {
87
+ readonly [I in keyof S]: S[I] extends keyof Env ? S[I] : never;
88
+ };
89
+ /**
90
+ * One select entry's answer-column fragment: the column is named by the
91
+ * variable it projects or folds (`count` names its column `count`), and
92
+ * its type reflects the entry — `count`/`countDistinct` are `bigint`
93
+ * whatever they counted, folds carry their input's type, the measure is
94
+ * `bigint`, the Arg forms carry the payload's type, `pack` its interval
95
+ * type.
96
+ */
97
+ type SelectEntryRow<Env extends EnvShape, E> = E extends string ? {
98
+ readonly [K in E]: Infer<Env[E & keyof Env]["field"]>;
99
+ } : E extends Duration<infer N extends string> ? {
100
+ readonly [K in N]: bigint;
101
+ } : E extends Agg<"count", undefined> ? {
102
+ readonly count: bigint;
103
+ } : E extends Agg<"countDistinct", infer O extends string> ? {
104
+ readonly [K in O]: bigint;
105
+ } : E extends Agg<"sum" | "min" | "max", infer O> ? O extends string ? {
106
+ readonly [K in O]: Infer<Env[O & keyof Env]["field"]>;
107
+ } : O extends Duration<infer N extends string> ? {
108
+ readonly [K in N]: bigint;
109
+ } : never : E extends Agg<"argMax" | "argMin", infer O extends string, string> ? {
110
+ readonly [K in O]: Infer<Env[O & keyof Env]["field"]>;
111
+ } : E extends Agg<"pack", infer O extends string> ? {
112
+ readonly [K in O]: Infer<Env[O & keyof Env]["field"]>;
113
+ } : never;
114
+ /** The inferred answer-row object type of a select tuple. */
115
+ type RowOfSelect<Env extends EnvShape, S extends readonly SelectEntry[]> = ShapeOf<SelectEntryRow<Env, S[number]>>;
116
+ /**
117
+ * One projected name's answer-column fragment — a NAKED parameter, so the
118
+ * judgment distributes per name (the union of a multi-name select never
119
+ * smears into one column's type), mirroring {@link SelectEntryRow}.
120
+ */
121
+ type NameSelectRow<Env extends EnvShape, N> = N extends string ? {
122
+ readonly [K in N]: Infer<Env[K & keyof Env]["field"]>;
123
+ } : never;
124
+ /** The inferred answer-row object type of a names-only (recursive-rule) select tuple. */
125
+ type RowOfNameSelect<Env extends EnvShape, S extends readonly string[]> = ShapeOf<NameSelectRow<Env, S[number]>>;
126
+ export type { Agg, AggOpName, AnyAgg, CheckNameSelect, CheckSelect, RowOfNameSelect, RowOfSelect, SelectEntry, SelectEntryOk, SelectEntryRow };
127
+ export { argMax, argMin, count, countDistinct, max, min, pack, sum };
106
128
  //# sourceMappingURL=select.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"select.d.ts","sourceRoot":"","sources":["../../src/query/select.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"select.d.ts","sourceRoot":"","sources":["../../src/query/select.ts"],"names":[],"mappings":"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"}