@_linked/core 2.0.1 → 2.2.0-next.20260313111019

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 (95) hide show
  1. package/CHANGELOG.md +33 -198
  2. package/README.md +147 -21
  3. package/lib/cjs/expressions/Expr.d.ts +58 -0
  4. package/lib/cjs/expressions/Expr.js +217 -0
  5. package/lib/cjs/expressions/Expr.js.map +1 -0
  6. package/lib/cjs/expressions/ExpressionMethods.d.ts +81 -0
  7. package/lib/cjs/expressions/ExpressionMethods.js +3 -0
  8. package/lib/cjs/expressions/ExpressionMethods.js.map +1 -0
  9. package/lib/cjs/expressions/ExpressionNode.d.ts +95 -0
  10. package/lib/cjs/expressions/ExpressionNode.js +349 -0
  11. package/lib/cjs/expressions/ExpressionNode.js.map +1 -0
  12. package/lib/cjs/index.d.ts +4 -0
  13. package/lib/cjs/index.js +6 -1
  14. package/lib/cjs/index.js.map +1 -1
  15. package/lib/cjs/queries/FieldSet.d.ts +3 -0
  16. package/lib/cjs/queries/FieldSet.js +16 -0
  17. package/lib/cjs/queries/FieldSet.js.map +1 -1
  18. package/lib/cjs/queries/IRCanonicalize.d.ts +2 -2
  19. package/lib/cjs/queries/IRCanonicalize.js +4 -0
  20. package/lib/cjs/queries/IRCanonicalize.js.map +1 -1
  21. package/lib/cjs/queries/IRDesugar.d.ts +11 -2
  22. package/lib/cjs/queries/IRDesugar.js +14 -0
  23. package/lib/cjs/queries/IRDesugar.js.map +1 -1
  24. package/lib/cjs/queries/IRLower.d.ts +9 -0
  25. package/lib/cjs/queries/IRLower.js +42 -60
  26. package/lib/cjs/queries/IRLower.js.map +1 -1
  27. package/lib/cjs/queries/IRMutation.d.ts +11 -1
  28. package/lib/cjs/queries/IRMutation.js +45 -21
  29. package/lib/cjs/queries/IRMutation.js.map +1 -1
  30. package/lib/cjs/queries/IntermediateRepresentation.d.ts +9 -2
  31. package/lib/cjs/queries/MutationQuery.js +16 -2
  32. package/lib/cjs/queries/MutationQuery.js.map +1 -1
  33. package/lib/cjs/queries/QueryFactory.d.ts +2 -1
  34. package/lib/cjs/queries/QueryFactory.js.map +1 -1
  35. package/lib/cjs/queries/SelectQuery.d.ts +6 -2
  36. package/lib/cjs/queries/SelectQuery.js +51 -7
  37. package/lib/cjs/queries/SelectQuery.js.map +1 -1
  38. package/lib/cjs/queries/UpdateBuilder.d.ts +2 -0
  39. package/lib/cjs/queries/UpdateBuilder.js +0 -1
  40. package/lib/cjs/queries/UpdateBuilder.js.map +1 -1
  41. package/lib/cjs/shapes/Shape.d.ts +2 -0
  42. package/lib/cjs/shapes/Shape.js +0 -8
  43. package/lib/cjs/shapes/Shape.js.map +1 -1
  44. package/lib/cjs/sparql/irToAlgebra.js +99 -9
  45. package/lib/cjs/sparql/irToAlgebra.js.map +1 -1
  46. package/lib/cjs/test-helpers/query-fixtures.d.ts +64 -1624
  47. package/lib/cjs/test-helpers/query-fixtures.js +65 -17
  48. package/lib/cjs/test-helpers/query-fixtures.js.map +1 -1
  49. package/lib/esm/expressions/Expr.d.ts +58 -0
  50. package/lib/esm/expressions/Expr.js +214 -0
  51. package/lib/esm/expressions/Expr.js.map +1 -0
  52. package/lib/esm/expressions/ExpressionMethods.d.ts +81 -0
  53. package/lib/esm/expressions/ExpressionMethods.js +2 -0
  54. package/lib/esm/expressions/ExpressionMethods.js.map +1 -0
  55. package/lib/esm/expressions/ExpressionNode.d.ts +95 -0
  56. package/lib/esm/expressions/ExpressionNode.js +341 -0
  57. package/lib/esm/expressions/ExpressionNode.js.map +1 -0
  58. package/lib/esm/index.d.ts +4 -0
  59. package/lib/esm/index.js +3 -0
  60. package/lib/esm/index.js.map +1 -1
  61. package/lib/esm/queries/FieldSet.d.ts +3 -0
  62. package/lib/esm/queries/FieldSet.js +16 -0
  63. package/lib/esm/queries/FieldSet.js.map +1 -1
  64. package/lib/esm/queries/IRCanonicalize.d.ts +2 -2
  65. package/lib/esm/queries/IRCanonicalize.js +4 -0
  66. package/lib/esm/queries/IRCanonicalize.js.map +1 -1
  67. package/lib/esm/queries/IRDesugar.d.ts +11 -2
  68. package/lib/esm/queries/IRDesugar.js +14 -0
  69. package/lib/esm/queries/IRDesugar.js.map +1 -1
  70. package/lib/esm/queries/IRLower.d.ts +9 -0
  71. package/lib/esm/queries/IRLower.js +41 -60
  72. package/lib/esm/queries/IRLower.js.map +1 -1
  73. package/lib/esm/queries/IRMutation.d.ts +11 -1
  74. package/lib/esm/queries/IRMutation.js +44 -21
  75. package/lib/esm/queries/IRMutation.js.map +1 -1
  76. package/lib/esm/queries/IntermediateRepresentation.d.ts +9 -2
  77. package/lib/esm/queries/MutationQuery.js +16 -2
  78. package/lib/esm/queries/MutationQuery.js.map +1 -1
  79. package/lib/esm/queries/QueryFactory.d.ts +2 -1
  80. package/lib/esm/queries/QueryFactory.js.map +1 -1
  81. package/lib/esm/queries/SelectQuery.d.ts +6 -2
  82. package/lib/esm/queries/SelectQuery.js +51 -7
  83. package/lib/esm/queries/SelectQuery.js.map +1 -1
  84. package/lib/esm/queries/UpdateBuilder.d.ts +2 -0
  85. package/lib/esm/queries/UpdateBuilder.js +0 -1
  86. package/lib/esm/queries/UpdateBuilder.js.map +1 -1
  87. package/lib/esm/shapes/Shape.d.ts +2 -0
  88. package/lib/esm/shapes/Shape.js +0 -8
  89. package/lib/esm/shapes/Shape.js.map +1 -1
  90. package/lib/esm/sparql/irToAlgebra.js +99 -9
  91. package/lib/esm/sparql/irToAlgebra.js.map +1 -1
  92. package/lib/esm/test-helpers/query-fixtures.d.ts +64 -1624
  93. package/lib/esm/test-helpers/query-fixtures.js +65 -17
  94. package/lib/esm/test-helpers/query-fixtures.js.map +1 -1
  95. package/package.json +3 -3
@@ -0,0 +1,217 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Expr = void 0;
4
+ const ExpressionNode_js_1 = require("./ExpressionNode.js");
5
+ function wrap(input) {
6
+ return input instanceof ExpressionNode_js_1.ExpressionNode
7
+ ? input
8
+ : new ExpressionNode_js_1.ExpressionNode((0, ExpressionNode_js_1.toIRExpression)(input));
9
+ }
10
+ exports.Expr = {
11
+ // ---------------------------------------------------------------------------
12
+ // Arithmetic
13
+ // ---------------------------------------------------------------------------
14
+ plus(a, b) {
15
+ return wrap(a).plus(b);
16
+ },
17
+ minus(a, b) {
18
+ return wrap(a).minus(b);
19
+ },
20
+ times(a, b) {
21
+ return wrap(a).times(b);
22
+ },
23
+ divide(a, b) {
24
+ return wrap(a).divide(b);
25
+ },
26
+ abs(a) {
27
+ return wrap(a).abs();
28
+ },
29
+ round(a) {
30
+ return wrap(a).round();
31
+ },
32
+ ceil(a) {
33
+ return wrap(a).ceil();
34
+ },
35
+ floor(a) {
36
+ return wrap(a).floor();
37
+ },
38
+ power(a, b) {
39
+ return wrap(a).power(b);
40
+ },
41
+ // ---------------------------------------------------------------------------
42
+ // Comparison (short names only)
43
+ // ---------------------------------------------------------------------------
44
+ eq(a, b) {
45
+ return wrap(a).eq(b);
46
+ },
47
+ neq(a, b) {
48
+ return wrap(a).neq(b);
49
+ },
50
+ gt(a, b) {
51
+ return wrap(a).gt(b);
52
+ },
53
+ gte(a, b) {
54
+ return wrap(a).gte(b);
55
+ },
56
+ lt(a, b) {
57
+ return wrap(a).lt(b);
58
+ },
59
+ lte(a, b) {
60
+ return wrap(a).lte(b);
61
+ },
62
+ // ---------------------------------------------------------------------------
63
+ // String
64
+ // ---------------------------------------------------------------------------
65
+ concat(...parts) {
66
+ if (parts.length < 2) {
67
+ throw new Error('Expr.concat() requires at least 2 arguments');
68
+ }
69
+ const [first, ...rest] = parts;
70
+ return new ExpressionNode_js_1.ExpressionNode({
71
+ kind: 'function_expr',
72
+ name: 'CONCAT',
73
+ args: parts.map(ExpressionNode_js_1.toIRExpression),
74
+ });
75
+ },
76
+ contains(a, b) {
77
+ return wrap(a).contains(b);
78
+ },
79
+ startsWith(a, b) {
80
+ return wrap(a).startsWith(b);
81
+ },
82
+ endsWith(a, b) {
83
+ return wrap(a).endsWith(b);
84
+ },
85
+ substr(a, start, len) {
86
+ return wrap(a).substr(start, len);
87
+ },
88
+ before(a, b) {
89
+ return wrap(a).before(b);
90
+ },
91
+ after(a, b) {
92
+ return wrap(a).after(b);
93
+ },
94
+ replace(a, pat, rep, flags) {
95
+ return wrap(a).replace(pat, rep, flags);
96
+ },
97
+ ucase(a) {
98
+ return wrap(a).ucase();
99
+ },
100
+ lcase(a) {
101
+ return wrap(a).lcase();
102
+ },
103
+ strlen(a) {
104
+ return wrap(a).strlen();
105
+ },
106
+ encodeForUri(a) {
107
+ return wrap(a).encodeForUri();
108
+ },
109
+ regex(a, pat, flags) {
110
+ return wrap(a).matches(pat, flags);
111
+ },
112
+ // ---------------------------------------------------------------------------
113
+ // Date/Time
114
+ // ---------------------------------------------------------------------------
115
+ now() {
116
+ return new ExpressionNode_js_1.ExpressionNode({ kind: 'function_expr', name: 'NOW', args: [] });
117
+ },
118
+ year(a) {
119
+ return wrap(a).year();
120
+ },
121
+ month(a) {
122
+ return wrap(a).month();
123
+ },
124
+ day(a) {
125
+ return wrap(a).day();
126
+ },
127
+ hours(a) {
128
+ return wrap(a).hours();
129
+ },
130
+ minutes(a) {
131
+ return wrap(a).minutes();
132
+ },
133
+ seconds(a) {
134
+ return wrap(a).seconds();
135
+ },
136
+ timezone(a) {
137
+ return wrap(a).timezone();
138
+ },
139
+ tz(a) {
140
+ return wrap(a).tz();
141
+ },
142
+ // ---------------------------------------------------------------------------
143
+ // Logical
144
+ // ---------------------------------------------------------------------------
145
+ and(a, b) {
146
+ return wrap(a).and(b);
147
+ },
148
+ or(a, b) {
149
+ return wrap(a).or(b);
150
+ },
151
+ not(a) {
152
+ return wrap(a).not();
153
+ },
154
+ // ---------------------------------------------------------------------------
155
+ // Null-handling / Conditional
156
+ // ---------------------------------------------------------------------------
157
+ firstDefined(...args) {
158
+ if (args.length < 2) {
159
+ throw new Error('Expr.firstDefined() requires at least 2 arguments');
160
+ }
161
+ return new ExpressionNode_js_1.ExpressionNode({
162
+ kind: 'function_expr',
163
+ name: 'COALESCE',
164
+ args: args.map(ExpressionNode_js_1.toIRExpression),
165
+ });
166
+ },
167
+ ifThen(cond, thenVal, elseVal) {
168
+ return new ExpressionNode_js_1.ExpressionNode({
169
+ kind: 'function_expr',
170
+ name: 'IF',
171
+ args: [(0, ExpressionNode_js_1.toIRExpression)(cond), (0, ExpressionNode_js_1.toIRExpression)(thenVal), (0, ExpressionNode_js_1.toIRExpression)(elseVal)],
172
+ });
173
+ },
174
+ bound(a) {
175
+ return wrap(a).isDefined();
176
+ },
177
+ // ---------------------------------------------------------------------------
178
+ // RDF introspection
179
+ // ---------------------------------------------------------------------------
180
+ lang(a) {
181
+ return wrap(a).lang();
182
+ },
183
+ datatype(a) {
184
+ return wrap(a).datatype();
185
+ },
186
+ str(a) {
187
+ return wrap(a).str();
188
+ },
189
+ iri(a) {
190
+ return wrap(a).iri();
191
+ },
192
+ isIri(a) {
193
+ return wrap(a).isIri();
194
+ },
195
+ isLiteral(a) {
196
+ return wrap(a).isLiteral();
197
+ },
198
+ isBlank(a) {
199
+ return wrap(a).isBlank();
200
+ },
201
+ isNumeric(a) {
202
+ return wrap(a).isNumeric();
203
+ },
204
+ // ---------------------------------------------------------------------------
205
+ // Hash
206
+ // ---------------------------------------------------------------------------
207
+ md5(a) {
208
+ return wrap(a).md5();
209
+ },
210
+ sha256(a) {
211
+ return wrap(a).sha256();
212
+ },
213
+ sha512(a) {
214
+ return wrap(a).sha512();
215
+ },
216
+ };
217
+ //# sourceMappingURL=Expr.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Expr.js","sourceRoot":"","sources":["../../../src/expressions/Expr.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,81 @@
1
+ import { ExpressionInput, ExpressionNode } from './ExpressionNode.js';
2
+ import { Shape } from '../shapes/Shape.js';
3
+ import { ShapeSet } from '../collections/ShapeSet.js';
4
+ export interface BaseExpressionMethods {
5
+ eq(v: ExpressionInput): ExpressionNode;
6
+ equals(v: ExpressionInput): ExpressionNode;
7
+ neq(v: ExpressionInput): ExpressionNode;
8
+ notEquals(v: ExpressionInput): ExpressionNode;
9
+ isDefined(): ExpressionNode;
10
+ isNotDefined(): ExpressionNode;
11
+ defaultTo(fallback: ExpressionInput): ExpressionNode;
12
+ str(): ExpressionNode;
13
+ }
14
+ export interface NumericExpressionMethods extends BaseExpressionMethods {
15
+ plus(n: ExpressionInput): ExpressionNode;
16
+ minus(n: ExpressionInput): ExpressionNode;
17
+ times(n: ExpressionInput): ExpressionNode;
18
+ divide(n: ExpressionInput): ExpressionNode;
19
+ abs(): ExpressionNode;
20
+ round(): ExpressionNode;
21
+ ceil(): ExpressionNode;
22
+ floor(): ExpressionNode;
23
+ power(n: number): ExpressionNode;
24
+ gt(v: ExpressionInput): ExpressionNode;
25
+ greaterThan(v: ExpressionInput): ExpressionNode;
26
+ gte(v: ExpressionInput): ExpressionNode;
27
+ greaterThanOrEqual(v: ExpressionInput): ExpressionNode;
28
+ lt(v: ExpressionInput): ExpressionNode;
29
+ lessThan(v: ExpressionInput): ExpressionNode;
30
+ lte(v: ExpressionInput): ExpressionNode;
31
+ lessThanOrEqual(v: ExpressionInput): ExpressionNode;
32
+ }
33
+ export interface StringExpressionMethods extends BaseExpressionMethods {
34
+ concat(...parts: ExpressionInput[]): ExpressionNode;
35
+ contains(s: ExpressionInput): ExpressionNode;
36
+ startsWith(s: ExpressionInput): ExpressionNode;
37
+ endsWith(s: ExpressionInput): ExpressionNode;
38
+ substr(start: number, len?: number): ExpressionNode;
39
+ before(s: ExpressionInput): ExpressionNode;
40
+ after(s: ExpressionInput): ExpressionNode;
41
+ replace(pat: string, rep: string, flags?: string): ExpressionNode;
42
+ ucase(): ExpressionNode;
43
+ lcase(): ExpressionNode;
44
+ strlen(): ExpressionNode;
45
+ encodeForUri(): ExpressionNode;
46
+ matches(pat: string, flags?: string): ExpressionNode;
47
+ gt(v: ExpressionInput): ExpressionNode;
48
+ lt(v: ExpressionInput): ExpressionNode;
49
+ gte(v: ExpressionInput): ExpressionNode;
50
+ lte(v: ExpressionInput): ExpressionNode;
51
+ }
52
+ export interface DateExpressionMethods extends BaseExpressionMethods {
53
+ year(): ExpressionNode;
54
+ month(): ExpressionNode;
55
+ day(): ExpressionNode;
56
+ hours(): ExpressionNode;
57
+ minutes(): ExpressionNode;
58
+ seconds(): ExpressionNode;
59
+ timezone(): ExpressionNode;
60
+ tz(): ExpressionNode;
61
+ gt(v: ExpressionInput): ExpressionNode;
62
+ lt(v: ExpressionInput): ExpressionNode;
63
+ gte(v: ExpressionInput): ExpressionNode;
64
+ lte(v: ExpressionInput): ExpressionNode;
65
+ }
66
+ export interface BooleanExpressionMethods extends BaseExpressionMethods {
67
+ and(expr: ExpressionInput): ExpressionNode;
68
+ or(expr: ExpressionInput): ExpressionNode;
69
+ not(): ExpressionNode;
70
+ }
71
+ type DataKeys<S> = {
72
+ [K in keyof S]: K extends 'node' | 'nodeShape' | 'namedNode' | 'targetClass' | 'toString' | 'id' | 'uri' | '__queryContextId' ? never : S[K] extends (...args: any[]) => any ? never : K;
73
+ }[keyof S];
74
+ type ToExpressionProxy<T> = T extends number ? number & NumericExpressionMethods : T extends string ? string & StringExpressionMethods : T extends Date ? Date & DateExpressionMethods : T extends boolean ? boolean & BooleanExpressionMethods : T extends Shape ? ExpressionUpdateProxy<T> : T;
75
+ export type ExpressionUpdateProxy<S> = {
76
+ readonly [P in DataKeys<S>]: S[P] extends ShapeSet<any> ? never : ToExpressionProxy<S[P]>;
77
+ };
78
+ export type ExpressionUpdateResult<S> = {
79
+ [P in DataKeys<S>]?: S[P] extends Shape ? never : S[P] extends ShapeSet<any> ? never : S[P] | ExpressionNode;
80
+ };
81
+ export {};
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=ExpressionMethods.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ExpressionMethods.js","sourceRoot":"","sources":["../../../src/expressions/ExpressionMethods.ts"],"names":[],"mappings":""}
@@ -0,0 +1,95 @@
1
+ import type { IRExpression } from '../queries/IntermediateRepresentation.js';
2
+ export type ExpressionInput = ExpressionNode | string | number | boolean | Date;
3
+ /**
4
+ * Map from placeholder sourceAlias → PropertyShape ID segments.
5
+ * Used to track unresolved property references from proxy tracing
6
+ * that need to be resolved during IR lowering.
7
+ */
8
+ export type PropertyRefMap = ReadonlyMap<string, readonly string[]>;
9
+ export declare function toIRExpression(input: ExpressionInput): IRExpression;
10
+ export declare class ExpressionNode {
11
+ readonly ir: IRExpression;
12
+ /** Property reference map for unresolved proxy-traced property references. */
13
+ readonly _refs: PropertyRefMap;
14
+ constructor(ir: IRExpression, refs?: PropertyRefMap);
15
+ /** Create a derived node that merges refs from this and other inputs. */
16
+ private _derive;
17
+ /** Create a derived node with no additional inputs. */
18
+ private _wrap;
19
+ plus(n: ExpressionInput): ExpressionNode;
20
+ minus(n: ExpressionInput): ExpressionNode;
21
+ times(n: ExpressionInput): ExpressionNode;
22
+ divide(n: ExpressionInput): ExpressionNode;
23
+ abs(): ExpressionNode;
24
+ round(): ExpressionNode;
25
+ ceil(): ExpressionNode;
26
+ floor(): ExpressionNode;
27
+ power(n: number): ExpressionNode;
28
+ eq(v: ExpressionInput): ExpressionNode;
29
+ equals(v: ExpressionInput): ExpressionNode;
30
+ neq(v: ExpressionInput): ExpressionNode;
31
+ notEquals(v: ExpressionInput): ExpressionNode;
32
+ gt(v: ExpressionInput): ExpressionNode;
33
+ greaterThan(v: ExpressionInput): ExpressionNode;
34
+ gte(v: ExpressionInput): ExpressionNode;
35
+ greaterThanOrEqual(v: ExpressionInput): ExpressionNode;
36
+ lt(v: ExpressionInput): ExpressionNode;
37
+ lessThan(v: ExpressionInput): ExpressionNode;
38
+ lte(v: ExpressionInput): ExpressionNode;
39
+ lessThanOrEqual(v: ExpressionInput): ExpressionNode;
40
+ concat(...parts: ExpressionInput[]): ExpressionNode;
41
+ contains(s: ExpressionInput): ExpressionNode;
42
+ startsWith(s: ExpressionInput): ExpressionNode;
43
+ endsWith(s: ExpressionInput): ExpressionNode;
44
+ substr(start: number, len?: number): ExpressionNode;
45
+ before(s: ExpressionInput): ExpressionNode;
46
+ after(s: ExpressionInput): ExpressionNode;
47
+ replace(pat: string, rep: string, flags?: string): ExpressionNode;
48
+ ucase(): ExpressionNode;
49
+ lcase(): ExpressionNode;
50
+ strlen(): ExpressionNode;
51
+ encodeForUri(): ExpressionNode;
52
+ matches(pat: string, flags?: string): ExpressionNode;
53
+ year(): ExpressionNode;
54
+ month(): ExpressionNode;
55
+ day(): ExpressionNode;
56
+ hours(): ExpressionNode;
57
+ minutes(): ExpressionNode;
58
+ seconds(): ExpressionNode;
59
+ timezone(): ExpressionNode;
60
+ tz(): ExpressionNode;
61
+ and(expr: ExpressionInput): ExpressionNode;
62
+ or(expr: ExpressionInput): ExpressionNode;
63
+ not(): ExpressionNode;
64
+ isDefined(): ExpressionNode;
65
+ isNotDefined(): ExpressionNode;
66
+ defaultTo(fallback: ExpressionInput): ExpressionNode;
67
+ lang(): ExpressionNode;
68
+ datatype(): ExpressionNode;
69
+ str(): ExpressionNode;
70
+ iri(): ExpressionNode;
71
+ isIri(): ExpressionNode;
72
+ isLiteral(): ExpressionNode;
73
+ isBlank(): ExpressionNode;
74
+ isNumeric(): ExpressionNode;
75
+ md5(): ExpressionNode;
76
+ sha256(): ExpressionNode;
77
+ sha512(): ExpressionNode;
78
+ }
79
+ /**
80
+ * Create an ExpressionNode from a proxy-traced property access.
81
+ * Uses a placeholder sourceAlias that gets resolved during IR lowering.
82
+ *
83
+ * The segments array maps to a property path (e.g. ['bestFriend', 'name']).
84
+ * Only the last segment becomes the property_expr's .property; earlier segments
85
+ * are stored in the refs map and resolved as traversals during lowering.
86
+ */
87
+ export declare function tracedPropertyExpression(segmentIds: readonly string[]): ExpressionNode;
88
+ /**
89
+ * Resolve unresolved property references in an IRExpression tree.
90
+ * Walks the tree and replaces placeholder sourceAlias values with
91
+ * real aliases resolved via pathOptions.
92
+ */
93
+ export declare function resolveExpressionRefs(expr: IRExpression, refs: PropertyRefMap, rootAlias: string, resolveTraversal: (fromAlias: string, propertyShapeId: string) => string): IRExpression;
94
+ /** Check if a value is an ExpressionNode. */
95
+ export declare function isExpressionNode(value: unknown): value is ExpressionNode;