@omgbase/oqx 0.14.1 → 0.18.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 (79) hide show
  1. package/CHANGELOG.md +41 -0
  2. package/README.md +192 -34
  3. package/dist/ast.d.ts +77 -23
  4. package/dist/ast.d.ts.map +1 -1
  5. package/dist/ast.js +21 -6
  6. package/dist/ast.js.map +1 -1
  7. package/dist/build.d.ts +37 -0
  8. package/dist/build.d.ts.map +1 -0
  9. package/dist/build.js +54 -0
  10. package/dist/build.js.map +1 -0
  11. package/dist/context.d.ts +13 -3
  12. package/dist/context.d.ts.map +1 -1
  13. package/dist/context.js +7 -3
  14. package/dist/context.js.map +1 -1
  15. package/dist/engine.d.ts +1 -2
  16. package/dist/engine.d.ts.map +1 -1
  17. package/dist/engine.js +55 -26
  18. package/dist/engine.js.map +1 -1
  19. package/dist/errors.d.ts +1 -1
  20. package/dist/errors.d.ts.map +1 -1
  21. package/dist/errors.js +2 -1
  22. package/dist/errors.js.map +1 -1
  23. package/dist/index.d.ts +19 -6
  24. package/dist/index.d.ts.map +1 -1
  25. package/dist/index.js +34 -12
  26. package/dist/index.js.map +1 -1
  27. package/dist/lexer.d.ts +15 -1
  28. package/dist/lexer.d.ts.map +1 -1
  29. package/dist/lexer.js +104 -51
  30. package/dist/lexer.js.map +1 -1
  31. package/dist/optimize/analysis.d.ts +1 -1
  32. package/dist/optimize/analysis.d.ts.map +1 -1
  33. package/dist/optimize/analysis.js +7 -5
  34. package/dist/optimize/analysis.js.map +1 -1
  35. package/dist/optimize/ir.d.ts +3 -3
  36. package/dist/optimize/ir.d.ts.map +1 -1
  37. package/dist/optimize/ir.js +3 -3
  38. package/dist/optimize/ir.js.map +1 -1
  39. package/dist/parser.d.ts.map +1 -1
  40. package/dist/parser.js +616 -251
  41. package/dist/parser.js.map +1 -1
  42. package/dist/plan.d.ts.map +1 -1
  43. package/dist/plan.js +5 -3
  44. package/dist/plan.js.map +1 -1
  45. package/dist/print.d.ts +17 -0
  46. package/dist/print.d.ts.map +1 -0
  47. package/dist/print.js +266 -0
  48. package/dist/print.js.map +1 -0
  49. package/dist/resolve.d.ts +23 -0
  50. package/dist/resolve.d.ts.map +1 -0
  51. package/dist/resolve.js +330 -0
  52. package/dist/resolve.js.map +1 -0
  53. package/dist/semantics.js +1 -1
  54. package/dist/semantics.js.map +1 -1
  55. package/dist/version.d.ts +5 -0
  56. package/dist/version.d.ts.map +1 -0
  57. package/dist/version.js +5 -0
  58. package/dist/version.js.map +1 -0
  59. package/dist/walk.d.ts +54 -0
  60. package/dist/walk.d.ts.map +1 -0
  61. package/dist/walk.js +139 -0
  62. package/dist/walk.js.map +1 -0
  63. package/package.json +1 -1
  64. package/src/ast.ts +105 -36
  65. package/src/build.ts +72 -0
  66. package/src/context.ts +16 -3
  67. package/src/engine.ts +57 -28
  68. package/src/errors.ts +3 -2
  69. package/src/index.ts +38 -13
  70. package/src/lexer.ts +102 -51
  71. package/src/optimize/analysis.ts +6 -5
  72. package/src/optimize/ir.ts +5 -5
  73. package/src/parser.ts +573 -225
  74. package/src/plan.ts +4 -3
  75. package/src/print.ts +274 -0
  76. package/src/resolve.ts +305 -0
  77. package/src/semantics.ts +1 -1
  78. package/src/version.ts +4 -0
  79. package/src/walk.ts +180 -0
@@ -0,0 +1,330 @@
1
+ // Select-alias resolution (SEMANTICS §14). `where` may reference the same body's
2
+ // `select` aliases, and since 0.17 a `select` item may reference the items to
3
+ // its left; the parser keeps the surface form (so the tree can be printed back
4
+ // and reflected on) and only VALIDATES the references, and this module performs
5
+ // the substitution — a pure rewrite the entry points (`run`, `execute`, `oqx`,
6
+ // `runQuery`) apply once before evaluation, so the engine and any pushdown
7
+ // planner see an ordinary `where` and `select` over row fields. Rules:
8
+ // • an alias shadows a same-named row field inside `where` and in the items
9
+ // after it;
10
+ // • an alias's own name inside its own expression is the row field
11
+ // (`name: name.upper()` is not recursive), but a chain of aliases that
12
+ // comes back to one being resolved (`a: b, b: a`) is a cycle → error;
13
+ // • a `select` item may name only the items to its LEFT; a reference to an
14
+ // item to its right is an error (it is a cycle when that item refers back);
15
+ // • an alias whose value is a `collect`/`first`/`single { … }` block may
16
+ // stand alone as a where leaf (a collection in predicate position means
17
+ // non-empty) but not appear inside a `where` expression; in a later `select`
18
+ // item it inlines as a value-position directive (`boss.name`);
19
+ // • nested blocks (consumer bodies, follow blocks, bracket lookups) are their
20
+ // own scopes and are not rewritten against this body's select — each body
21
+ // rewrites against its own.
22
+ //
23
+ // Resolution is NOT idempotent (`name: name.upper() … where name` resolves to
24
+ // `name.upper()`, whose `name` would be substituted again), so it must run
25
+ // exactly once: the entry points do it, `Engine.run` evaluates the query as
26
+ // given. Untouched nodes are returned by reference, so a cached query keeps the
27
+ // identity of every block the rewrite did not reach.
28
+ import { OqxError } from "./errors.js";
29
+ const failPlain = (message) => {
30
+ throw new OqxError(message, "parse");
31
+ };
32
+ /** Resolve every `where` and `select` of a query (its own and every nested
33
+ * block's) against the `select` of the same body. Pure: returns a new tree
34
+ * sharing every node the rewrite did not touch. Throws an `OqxError` (stage
35
+ * `parse`) for an alias cycle, a forward reference, or a block alias used
36
+ * inside a `where` expression — the same conditions the parser rejects, so a
37
+ * parsed query never throws here. */
38
+ export function resolveAliases(node) {
39
+ return resolveBody(node, failPlain);
40
+ }
41
+ function resolveBody(node, fail) {
42
+ // `where` is validated and substituted against the raw select first: its
43
+ // cycle report follows the where's own path (`c → a → b → c`), as pinned.
44
+ const where = node.where === null ? null : resolveWhere(node.select, node.where, fail);
45
+ const where2 = where === null ? null : resolveNestedWhere(where, fail);
46
+ const select = resolveSelect(node.select, fail);
47
+ const follow = node.follow === null ? null : resolveFollow(node.follow, fail);
48
+ const from = mapSame(node.from, (e) => resolveExpr(e, fail));
49
+ const orderBy = node.orderBy === null ? null : mapSame(node.orderBy, (o) => {
50
+ const expr = resolveExpr(o.expr, fail);
51
+ return expr === o.expr ? o : { ...o, expr };
52
+ });
53
+ const limit = node.limit === null ? null : resolveExpr(node.limit, fail);
54
+ const offset = node.offset === null ? null : resolveExpr(node.offset, fail);
55
+ const source = node.kind === "query" ? resolveExpr(node.source, fail) : null;
56
+ const same = where2 === node.where && select === node.select && follow === node.follow && from === node.from
57
+ && orderBy === node.orderBy && limit === node.limit && offset === node.offset
58
+ && (node.kind !== "query" || source === node.source);
59
+ if (same)
60
+ return node;
61
+ const out = { ...node, where: where2, select, follow, from, orderBy, limit, offset };
62
+ if (node.kind === "query")
63
+ out.source = source;
64
+ return out;
65
+ }
66
+ function resolveOp(op, fail) {
67
+ const receiver = resolveExpr(op.receiver, fail);
68
+ const sub = resolveBody(op.sub, fail);
69
+ return sub === op.sub && receiver === op.receiver ? op : { ...op, receiver, sub };
70
+ }
71
+ function resolveFollow(f, fail) {
72
+ const destinations = mapSame(f.destinations, (d) => (d.kind === "op" ? resolveOp(d, fail) : resolveExpr(d, fail)));
73
+ const where = f.where === null ? null : resolveExpr(f.where, fail);
74
+ const frontier = f.frontier === null ? null : resolveExpr(f.frontier, fail);
75
+ const by = f.by === null ? null : resolveExpr(f.by, fail);
76
+ if (destinations === f.destinations && where === f.where && frontier === f.frontier && by === f.by)
77
+ return f;
78
+ return { ...f, destinations, where, frontier, by };
79
+ }
80
+ // Nested blocks inside a where tree are their own scopes: resolve each against
81
+ // its own select (a scalar leaf may hold a value-position directive).
82
+ function resolveNestedWhere(w, fail) {
83
+ switch (w.kind) {
84
+ case "and":
85
+ case "or": {
86
+ const parts = mapSame(w.parts, (p) => resolveNestedWhere(p, fail));
87
+ return parts === w.parts ? w : { ...w, parts };
88
+ }
89
+ case "not": {
90
+ const expr = resolveNestedWhere(w.expr, fail);
91
+ return expr === w.expr ? w : { ...w, expr };
92
+ }
93
+ case "scalar": {
94
+ const expr = resolveExpr(w.expr, fail);
95
+ return expr === w.expr ? w : { ...w, expr };
96
+ }
97
+ case "op": return resolveOp(w, fail);
98
+ }
99
+ }
100
+ /** Resolve the nested blocks (value-position directives) inside an expression,
101
+ * each against its own select; the expression's own idents are left alone. */
102
+ function resolveExpr(e, fail) {
103
+ return mapExpr(e, (x) => (x.kind === "op" ? resolveOp(x, fail) : null));
104
+ }
105
+ /** Rebuild `e` bottom-up, letting `f` replace a node (return `null` to keep it;
106
+ * a replaced node's children are not visited — `f` owns them). Untouched nodes
107
+ * are returned by reference. */
108
+ function mapExpr(e, f) {
109
+ const hit = f(e);
110
+ if (hit !== null)
111
+ return hit;
112
+ const go = (x) => mapExpr(x, f);
113
+ switch (e.kind) {
114
+ case "member": {
115
+ const recv = go(e.recv);
116
+ return recv === e.recv ? e : { ...e, recv };
117
+ }
118
+ case "call": {
119
+ const recv = e.recv ? go(e.recv) : null;
120
+ const args = mapSame(e.args, go);
121
+ return recv === e.recv && args === e.args ? e : { ...e, recv, args };
122
+ }
123
+ case "unary":
124
+ case "required": {
125
+ const expr = go(e.expr);
126
+ return expr === e.expr ? e : { ...e, expr };
127
+ }
128
+ case "binary":
129
+ case "logical":
130
+ case "in": {
131
+ const left = go(e.left);
132
+ const right = go(e.right);
133
+ return left === e.left && right === e.right ? e : { ...e, left, right };
134
+ }
135
+ case "range": {
136
+ const lo = e.lo ? go(e.lo) : null;
137
+ const hi = e.hi ? go(e.hi) : null;
138
+ return lo === e.lo && hi === e.hi ? e : { ...e, lo, hi };
139
+ }
140
+ case "op": { // the receiver is read in this scope; the block is its own scope
141
+ const receiver = go(e.receiver);
142
+ return receiver === e.receiver ? e : { ...e, receiver };
143
+ }
144
+ default: return e; // lit, ident, binding, outer
145
+ }
146
+ }
147
+ // An item other items may name: a `collect` item, or a named non-lift field.
148
+ function aliasName(it) {
149
+ if (it.kind === "collect")
150
+ return it.name === "" ? null : it.name;
151
+ return it.lift === 0 && it.name !== "" ? it.name : null;
152
+ }
153
+ // The alias names an item's own expression (the receiver, for a block) mentions
154
+ // as bare identifiers, excluding its own name (the row field).
155
+ function aliasRefs(it, index) {
156
+ const own = aliasName(it);
157
+ const out = [];
158
+ const visit = (e) => {
159
+ mapExpr(e, (x) => {
160
+ if (x.kind === "ident" && x.name !== own && index.has(x.name) && !out.includes(x.name))
161
+ out.push(x.name);
162
+ return null;
163
+ });
164
+ };
165
+ visit(it.kind === "collect" ? it.op.receiver : it.expr);
166
+ return out;
167
+ }
168
+ /** Resolve one body's `select` items left to right (this body only; each item's
169
+ * nested blocks are resolved against their own select). An item's bare
170
+ * identifier that names an item to its left is replaced by that item's resolved
171
+ * value — a block alias inlines as a value-position directive — and the item's
172
+ * own name is the row field. A reference to an item to its right fails: as a
173
+ * cycle when that item refers back, else as a forward reference. Exported for
174
+ * the parser's validation pass. */
175
+ export function resolveSelect(select, fail = failPlain) {
176
+ const index = new Map();
177
+ select.forEach((it, i) => { const n = aliasName(it); if (n !== null)
178
+ index.set(n, i); });
179
+ if (index.size === 0) {
180
+ return mapSame(select, (it) => resolveItemBlocks(it, fail));
181
+ }
182
+ const resolved = new Map();
183
+ let out = null;
184
+ for (let i = 0; i < select.length; i++) {
185
+ const it = select[i];
186
+ const own = aliasName(it);
187
+ const subst = (e) => mapExpr(e, (x) => {
188
+ if (x.kind !== "ident")
189
+ return null;
190
+ if (x.name === own)
191
+ return x;
192
+ const r = resolved.get(x.name);
193
+ if (r)
194
+ return r;
195
+ const j = index.get(x.name);
196
+ if (j === undefined || j <= i)
197
+ return null;
198
+ const back = own === null ? null : cyclePath(select, index, j, own);
199
+ if (back)
200
+ fail(`select aliases form a cycle: ${[own, ...back].join(" → ")} — an alias cannot depend on itself`);
201
+ fail(`select alias '${x.name}' is used before it is defined — a select item may reference only the items to its left`);
202
+ });
203
+ let r;
204
+ if (it.kind === "collect") {
205
+ const receiver = subst(it.op.receiver);
206
+ const op = resolveOp(receiver === it.op.receiver ? it.op : { ...it.op, receiver }, fail);
207
+ r = op === it.op ? it : { ...it, op };
208
+ if (own !== null)
209
+ resolved.set(own, op);
210
+ }
211
+ else {
212
+ const expr = resolveExpr(subst(it.expr), fail);
213
+ r = expr === it.expr ? it : expr.kind === "op"
214
+ ? { kind: "collect", span: it.span, name: it.name, op: expr }
215
+ : { ...it, expr };
216
+ if (own !== null)
217
+ resolved.set(own, expr);
218
+ }
219
+ if (r !== it) {
220
+ out ??= select.slice();
221
+ out[i] = r;
222
+ }
223
+ }
224
+ return out ?? select;
225
+ }
226
+ // The nested blocks of an item, resolved against their own select.
227
+ function resolveItemBlocks(it, fail) {
228
+ if (it.kind === "collect") {
229
+ const op = resolveOp(it.op, fail);
230
+ return op === it.op ? it : { ...it, op };
231
+ }
232
+ const expr = resolveExpr(it.expr, fail);
233
+ return expr === it.expr ? it : { ...it, expr };
234
+ }
235
+ // The alias path from item `from` back to the alias `to`, if the raw reference
236
+ // graph has one (`[b, a]` for `a: b, b: a` from `b` back to `a`).
237
+ function cyclePath(select, index, from, to) {
238
+ const seen = new Set();
239
+ const go = (i, path) => {
240
+ if (seen.has(i))
241
+ return null;
242
+ seen.add(i);
243
+ const it = select[i];
244
+ const name = aliasName(it);
245
+ for (const ref of aliasRefs(it, index)) {
246
+ if (ref === to)
247
+ return [...path, name, to];
248
+ const hit = go(index.get(ref), [...path, name]);
249
+ if (hit)
250
+ return hit;
251
+ }
252
+ return null;
253
+ };
254
+ return go(from, []);
255
+ }
256
+ /** Resolve one body's `where` against its `select` (this body only; nested
257
+ * blocks are left as they are). Exported for the parser's validation pass. */
258
+ export function resolveWhere(select, where, fail = failPlain) {
259
+ if (select.length === 0)
260
+ return where;
261
+ const aliases = new Map();
262
+ for (const it of select) {
263
+ const n = aliasName(it);
264
+ if (n !== null)
265
+ aliases.set(n, it);
266
+ }
267
+ if (aliases.size === 0)
268
+ return where;
269
+ const resolving = [];
270
+ const subst = (e) => mapExpr(e, (x) => {
271
+ if (x.kind !== "ident")
272
+ return null;
273
+ const a = aliases.get(x.name);
274
+ if (!a)
275
+ return null;
276
+ if (resolving[resolving.length - 1] === x.name)
277
+ return x; // its own name inside its own expression: the row field
278
+ if (resolving.includes(x.name)) {
279
+ const cycle = [...resolving.slice(resolving.indexOf(x.name)), x.name].join(" → ");
280
+ fail(`select aliases form a cycle: ${cycle} — an alias used in \`where\` cannot depend on itself`);
281
+ }
282
+ if (a.kind === "collect") {
283
+ fail(`select alias '${x.name}' is a ${a.op.op} { … } block — in \`where\` it can only stand alone as a non-empty test, not inside an expression`);
284
+ }
285
+ resolving.push(x.name);
286
+ const out = subst(a.expr);
287
+ resolving.pop();
288
+ return out;
289
+ });
290
+ const walk = (w) => {
291
+ switch (w.kind) {
292
+ case "and":
293
+ case "or": {
294
+ const parts = mapSame(w.parts, walk);
295
+ return parts === w.parts ? w : { ...w, parts };
296
+ }
297
+ case "not": {
298
+ const expr = walk(w.expr);
299
+ return expr === w.expr ? w : { ...w, expr };
300
+ }
301
+ case "scalar": {
302
+ if (w.expr.kind === "ident") {
303
+ const a = aliases.get(w.expr.name);
304
+ if (a?.kind === "collect")
305
+ return a.op; // a collection in predicate position: non-empty
306
+ }
307
+ const expr = subst(w.expr);
308
+ return expr === w.expr ? w : { ...w, expr };
309
+ }
310
+ case "op": { // the receiver is read in this scope; the block is its own scope
311
+ const receiver = subst(w.receiver);
312
+ return receiver === w.receiver ? w : { ...w, receiver };
313
+ }
314
+ }
315
+ };
316
+ return walk(where);
317
+ }
318
+ // `map` that returns the input array itself when no element changed.
319
+ function mapSame(xs, f) {
320
+ let out = null;
321
+ for (let i = 0; i < xs.length; i++) {
322
+ const y = f(xs[i]);
323
+ if (y !== xs[i]) {
324
+ out ??= xs.slice();
325
+ out[i] = y;
326
+ }
327
+ }
328
+ return out ?? xs;
329
+ }
330
+ //# sourceMappingURL=resolve.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolve.js","sourceRoot":"","sources":["../src/resolve.ts"],"names":[],"mappings":"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"}
package/dist/semantics.js CHANGED
@@ -258,7 +258,7 @@ export function parseRangeString(s) {
258
258
  // converts it explicitly into a collection of ENTRY values, each `{ key, value }`
259
259
  // tagged (non-enumerably, so JSON/deepEqual see a plain record) so the engine
260
260
  // can recognize one: when an entry becomes a query scope, the scope's ROW is
261
- // the property's value (`$value`, bare names) and `$key` is scope metadata.
261
+ // the property's value (`$it`, bare names) and `$key` is scope metadata.
262
262
  // Arrays yield numeric index keys; a Map yields its entries; null/scalars yield
263
263
  // nothing. (Arrays never expose an implicit `$key` — `entries(arr)` is how you
264
264
  // ask for the index.)
@@ -1 +1 @@
1
- {"version":3,"file":"semantics.js","sourceRoot":"","sources":["../src/semantics.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"semantics.js","sourceRoot":"","sources":["../src/semantics.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ /** The OQX language version (`spec/oqx/VERSION`, `major.minor`) this implementation
2
+ * conforms to — distinct from the package's own semver, whose `major.minor` it
3
+ * equals. Stamped on every `toJSON` document. */
4
+ export declare const LANGUAGE_VERSION = "0.18";
5
+ //# sourceMappingURL=version.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AAAA;;iDAEiD;AACjD,eAAO,MAAM,gBAAgB,SAAS,CAAC"}
@@ -0,0 +1,5 @@
1
+ /** The OQX language version (`spec/oqx/VERSION`, `major.minor`) this implementation
2
+ * conforms to — distinct from the package's own semver, whose `major.minor` it
3
+ * equals. Stamped on every `toJSON` document. */
4
+ export const LANGUAGE_VERSION = "0.18";
5
+ //# sourceMappingURL=version.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"version.js","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AAAA;;iDAEiD;AACjD,MAAM,CAAC,MAAM,gBAAgB,GAAG,MAAM,CAAC"}
package/dist/walk.d.ts ADDED
@@ -0,0 +1,54 @@
1
+ import type { AstKind, AstNode, Expr, Query, QueryJson, Subquery } from "./ast.js";
2
+ /** The clause a node sits in, for `visit`/`transform` contexts. `source` is the
3
+ * root collection (`from <source>` or the directive receiver); `from` the further
4
+ * re-projections; `follow` the `Follow` node itself and `follow.*` its parts.
5
+ * The root node has no clause (`null`). */
6
+ export type Clause = "source" | "from" | "where" | "select" | "orderBy" | "limit" | "offset" | "follow" | "follow.destination" | "follow.where" | "follow.frontier" | "follow.by";
7
+ /** Where a visited node sits. `depth` is the scope depth at which the node is
8
+ * evaluated (0 = the root scope: a top-level `source`, `limit`, `offset`; 1 =
9
+ * a top-level row: its `where`, `select`, `order by`, `from` re-projections and
10
+ * `follow`; a block's rows are one deeper than the block's receiver; a follow
11
+ * `where` is one deeper than the frontier row it tests successors of). */
12
+ export interface VisitContext {
13
+ /** The ancestors of the node, root first (empty for the root). */
14
+ readonly path: readonly AstNode[];
15
+ readonly clause: Clause | null;
16
+ readonly depth: number;
17
+ }
18
+ export interface Visitor {
19
+ /** Called before a node's children; return `false` to skip the subtree
20
+ * (`leave` is still called for the node). */
21
+ enter?(node: AstNode, ctx: VisitContext): boolean | void;
22
+ /** Called after a node's children. */
23
+ leave?(node: AstNode, ctx: VisitContext): void;
24
+ }
25
+ /** One child slot of a node kind: the property, the clause it opens (inherited
26
+ * from the parent when absent) and how much deeper its scope is. */
27
+ export interface ChildKey {
28
+ readonly key: string;
29
+ readonly clause?: Clause;
30
+ readonly depth?: number;
31
+ }
32
+ /** The child-key table: every node kind's children, in canonical source order.
33
+ * A slot's value is a node, an array of nodes, or `null`. */
34
+ export declare const CHILDREN: {
35
+ readonly [K in AstKind]: readonly ChildKey[];
36
+ };
37
+ /** Walk a tree depth-first in canonical source order. */
38
+ export declare function visit(root: AstNode, visitor: Visitor): void;
39
+ /** Rebuild a query (or block body) with every expression mapped through `f`,
40
+ * children first (so `f` sees an expression whose operands are already mapped).
41
+ * Nodes `f` returns unchanged, and every ancestor whose children did not change,
42
+ * are kept by reference — spans and identity of untouched nodes survive. */
43
+ export declare function transform<T extends Query | Subquery>(root: T, f: (expr: Expr, ctx: VisitContext) => Expr): T;
44
+ /** The tree with every `span` removed, for shape comparisons (the fixtures and
45
+ * the round-trip law compare stripped trees). A deep copy of plain data. */
46
+ export type Stripped<T> = T extends readonly (infer U)[] ? Stripped<U>[] : T extends object ? {
47
+ [K in keyof T as K extends "span" ? never : K]: Stripped<T[K]>;
48
+ } : T;
49
+ export declare function stripSpans<T>(node: T): Stripped<T>;
50
+ /** The query as the JSON document both implementations exchange: the tree
51
+ * (already plain data) stamped with the language version it was produced under
52
+ * (`{ "oqx": "0.16", "kind": "query", … }`). */
53
+ export declare function toJSON(query: Query): QueryJson;
54
+ //# sourceMappingURL=walk.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"walk.d.ts","sourceRoot":"","sources":["../src/walk.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAInF;;;2CAG2C;AAC3C,MAAM,MAAM,MAAM,GACd,QAAQ,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,GAAG,SAAS,GAAG,OAAO,GAAG,QAAQ,GACvE,QAAQ,GAAG,oBAAoB,GAAG,cAAc,GAAG,iBAAiB,GAAG,WAAW,CAAC;AAEvF;;;;0EAI0E;AAC1E,MAAM,WAAW,YAAY;IAC3B,kEAAkE;IAClE,QAAQ,CAAC,IAAI,EAAE,SAAS,OAAO,EAAE,CAAC;IAClC,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,OAAO;IACtB;iDAC6C;IAC7C,KAAK,CAAC,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,YAAY,GAAG,OAAO,GAAG,IAAI,CAAC;IACzD,sCAAsC;IACtC,KAAK,CAAC,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,YAAY,GAAG,IAAI,CAAC;CAChD;AAED;oEACoE;AACpE,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;CACzB;AAED;6DAC6D;AAC7D,eAAO,MAAM,QAAQ,EAAE;IAAE,QAAQ,EAAE,CAAC,IAAI,OAAO,GAAG,SAAS,QAAQ,EAAE;CA8CpE,CAAC;AAQF,yDAAyD;AACzD,wBAAgB,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI,CAoB3D;AAED;;;4EAG4E;AAC5E,wBAAgB,SAAS,CAAC,CAAC,SAAS,KAAK,GAAG,QAAQ,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,YAAY,KAAK,IAAI,GAAG,CAAC,CAuB5G;AAED;4EAC4E;AAC5E,MAAM,MAAM,QAAQ,CAAC,CAAC,IACpB,CAAC,SAAS,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,GAAG,QAAQ,CAAC,CAAC,CAAC,EAAE,GAC5C,CAAC,SAAS,MAAM,GAAG;KAAG,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,SAAS,MAAM,GAAG,KAAK,GAAG,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CAAE,GACrF,CAAC,CAAC;AAEN,wBAAgB,UAAU,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAWlD;AAED;;gDAEgD;AAChD,wBAAgB,MAAM,CAAC,KAAK,EAAE,KAAK,GAAG,SAAS,CAE9C"}
package/dist/walk.js ADDED
@@ -0,0 +1,139 @@
1
+ // Generic traversal over the AST (spec/oqx/AST.md §5): `visit` (enter/leave with
2
+ // a path, the enclosing clause and the scope depth), `transform` (rebuild a
3
+ // query with every expression mapped), `stripSpans`, `toJSON`. All three walks
4
+ // are driven by ONE child-key table per node kind — `CHILDREN` — so a future
5
+ // field is added in one place and every tool sees it.
6
+ import { isExpr } from "./ast.js";
7
+ import { LANGUAGE_VERSION } from "./version.js";
8
+ /** The child-key table: every node kind's children, in canonical source order.
9
+ * A slot's value is a node, an array of nodes, or `null`. */
10
+ export const CHILDREN = {
11
+ query: [
12
+ { key: "select", clause: "select", depth: 1 },
13
+ { key: "source", clause: "source" },
14
+ { key: "from", clause: "from", depth: 1 },
15
+ { key: "where", clause: "where", depth: 1 },
16
+ { key: "follow", clause: "follow", depth: 1 },
17
+ { key: "orderBy", clause: "orderBy", depth: 1 },
18
+ { key: "limit", clause: "limit" },
19
+ { key: "offset", clause: "offset" },
20
+ ],
21
+ subquery: [
22
+ { key: "select", clause: "select" },
23
+ { key: "from", clause: "from" },
24
+ { key: "where", clause: "where" },
25
+ { key: "follow", clause: "follow" },
26
+ { key: "orderBy", clause: "orderBy" },
27
+ { key: "limit", clause: "limit" },
28
+ { key: "offset", clause: "offset" },
29
+ ],
30
+ op: [{ key: "receiver" }, { key: "sub", depth: 1 }],
31
+ follow: [
32
+ { key: "destinations", clause: "follow.destination" },
33
+ { key: "where", clause: "follow.where", depth: 1 },
34
+ { key: "frontier", clause: "follow.frontier" },
35
+ { key: "by", clause: "follow.by" },
36
+ ],
37
+ order: [{ key: "expr" }],
38
+ field: [{ key: "expr" }],
39
+ collect: [{ key: "op" }],
40
+ and: [{ key: "parts" }],
41
+ or: [{ key: "parts" }],
42
+ not: [{ key: "expr" }],
43
+ scalar: [{ key: "expr" }],
44
+ lit: [],
45
+ ident: [],
46
+ outer: [],
47
+ binding: [],
48
+ member: [{ key: "recv" }],
49
+ call: [{ key: "recv" }, { key: "args" }],
50
+ unary: [{ key: "expr" }],
51
+ required: [{ key: "expr" }],
52
+ binary: [{ key: "left" }, { key: "right" }],
53
+ logical: [{ key: "left" }, { key: "right" }],
54
+ in: [{ key: "left" }, { key: "right" }],
55
+ range: [{ key: "lo" }, { key: "hi" }],
56
+ };
57
+ function slot(node, key) {
58
+ return node[key] ?? null;
59
+ }
60
+ /** Walk a tree depth-first in canonical source order. */
61
+ export function visit(root, visitor) {
62
+ const path = [];
63
+ const go = (node, clause, depth) => {
64
+ const ctx = { path: path.slice(), clause, depth };
65
+ const descend = visitor.enter?.(node, ctx) !== false;
66
+ if (descend) {
67
+ path.push(node);
68
+ for (const child of CHILDREN[node.kind]) {
69
+ const v = slot(node, child.key);
70
+ if (v === null)
71
+ continue;
72
+ const c = child.clause ?? clause;
73
+ const d = depth + (child.depth ?? 0);
74
+ if (Array.isArray(v))
75
+ for (const x of v)
76
+ go(x, c, d);
77
+ else
78
+ go(v, c, d);
79
+ }
80
+ path.pop();
81
+ }
82
+ visitor.leave?.(node, ctx);
83
+ };
84
+ go(root, null, 0);
85
+ }
86
+ /** Rebuild a query (or block body) with every expression mapped through `f`,
87
+ * children first (so `f` sees an expression whose operands are already mapped).
88
+ * Nodes `f` returns unchanged, and every ancestor whose children did not change,
89
+ * are kept by reference — spans and identity of untouched nodes survive. */
90
+ export function transform(root, f) {
91
+ const path = [];
92
+ const go = (node, clause, depth) => {
93
+ const ctx = { path: path.slice(), clause, depth };
94
+ path.push(node);
95
+ let out = node;
96
+ for (const child of CHILDREN[node.kind]) {
97
+ const v = slot(node, child.key);
98
+ if (v === null)
99
+ continue;
100
+ const c = child.clause ?? clause;
101
+ const d = depth + (child.depth ?? 0);
102
+ let next;
103
+ if (Array.isArray(v)) {
104
+ let changed = false;
105
+ const mapped = v.map((x) => { const y = go(x, c, d); if (y !== x)
106
+ changed = true; return y; });
107
+ next = changed ? mapped : v;
108
+ }
109
+ else
110
+ next = go(v, c, d);
111
+ if (next !== v)
112
+ out = { ...out, [child.key]: next };
113
+ }
114
+ path.pop();
115
+ return isExpr(out) ? f(out, ctx) : out;
116
+ };
117
+ return go(root, null, 0);
118
+ }
119
+ export function stripSpans(node) {
120
+ if (Array.isArray(node))
121
+ return node.map(stripSpans);
122
+ if (node !== null && typeof node === "object") {
123
+ const out = {};
124
+ for (const [k, v] of Object.entries(node)) {
125
+ if (k === "span")
126
+ continue;
127
+ out[k] = stripSpans(v);
128
+ }
129
+ return out;
130
+ }
131
+ return node;
132
+ }
133
+ /** The query as the JSON document both implementations exchange: the tree
134
+ * (already plain data) stamped with the language version it was produced under
135
+ * (`{ "oqx": "0.16", "kind": "query", … }`). */
136
+ export function toJSON(query) {
137
+ return { oqx: LANGUAGE_VERSION, ...query };
138
+ }
139
+ //# sourceMappingURL=walk.js.map