@_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.
- package/CHANGELOG.md +33 -198
- package/README.md +147 -21
- package/lib/cjs/expressions/Expr.d.ts +58 -0
- package/lib/cjs/expressions/Expr.js +217 -0
- package/lib/cjs/expressions/Expr.js.map +1 -0
- package/lib/cjs/expressions/ExpressionMethods.d.ts +81 -0
- package/lib/cjs/expressions/ExpressionMethods.js +3 -0
- package/lib/cjs/expressions/ExpressionMethods.js.map +1 -0
- package/lib/cjs/expressions/ExpressionNode.d.ts +95 -0
- package/lib/cjs/expressions/ExpressionNode.js +349 -0
- package/lib/cjs/expressions/ExpressionNode.js.map +1 -0
- package/lib/cjs/index.d.ts +4 -0
- package/lib/cjs/index.js +6 -1
- package/lib/cjs/index.js.map +1 -1
- package/lib/cjs/queries/FieldSet.d.ts +3 -0
- package/lib/cjs/queries/FieldSet.js +16 -0
- package/lib/cjs/queries/FieldSet.js.map +1 -1
- package/lib/cjs/queries/IRCanonicalize.d.ts +2 -2
- package/lib/cjs/queries/IRCanonicalize.js +4 -0
- package/lib/cjs/queries/IRCanonicalize.js.map +1 -1
- package/lib/cjs/queries/IRDesugar.d.ts +11 -2
- package/lib/cjs/queries/IRDesugar.js +14 -0
- package/lib/cjs/queries/IRDesugar.js.map +1 -1
- package/lib/cjs/queries/IRLower.d.ts +9 -0
- package/lib/cjs/queries/IRLower.js +42 -60
- package/lib/cjs/queries/IRLower.js.map +1 -1
- package/lib/cjs/queries/IRMutation.d.ts +11 -1
- package/lib/cjs/queries/IRMutation.js +45 -21
- package/lib/cjs/queries/IRMutation.js.map +1 -1
- package/lib/cjs/queries/IntermediateRepresentation.d.ts +9 -2
- package/lib/cjs/queries/MutationQuery.js +16 -2
- package/lib/cjs/queries/MutationQuery.js.map +1 -1
- package/lib/cjs/queries/QueryFactory.d.ts +2 -1
- package/lib/cjs/queries/QueryFactory.js.map +1 -1
- package/lib/cjs/queries/SelectQuery.d.ts +6 -2
- package/lib/cjs/queries/SelectQuery.js +51 -7
- package/lib/cjs/queries/SelectQuery.js.map +1 -1
- package/lib/cjs/queries/UpdateBuilder.d.ts +2 -0
- package/lib/cjs/queries/UpdateBuilder.js +0 -1
- package/lib/cjs/queries/UpdateBuilder.js.map +1 -1
- package/lib/cjs/shapes/Shape.d.ts +2 -0
- package/lib/cjs/shapes/Shape.js +0 -8
- package/lib/cjs/shapes/Shape.js.map +1 -1
- package/lib/cjs/sparql/irToAlgebra.js +99 -9
- package/lib/cjs/sparql/irToAlgebra.js.map +1 -1
- package/lib/cjs/test-helpers/query-fixtures.d.ts +64 -1624
- package/lib/cjs/test-helpers/query-fixtures.js +65 -17
- package/lib/cjs/test-helpers/query-fixtures.js.map +1 -1
- package/lib/esm/expressions/Expr.d.ts +58 -0
- package/lib/esm/expressions/Expr.js +214 -0
- package/lib/esm/expressions/Expr.js.map +1 -0
- package/lib/esm/expressions/ExpressionMethods.d.ts +81 -0
- package/lib/esm/expressions/ExpressionMethods.js +2 -0
- package/lib/esm/expressions/ExpressionMethods.js.map +1 -0
- package/lib/esm/expressions/ExpressionNode.d.ts +95 -0
- package/lib/esm/expressions/ExpressionNode.js +341 -0
- package/lib/esm/expressions/ExpressionNode.js.map +1 -0
- package/lib/esm/index.d.ts +4 -0
- package/lib/esm/index.js +3 -0
- package/lib/esm/index.js.map +1 -1
- package/lib/esm/queries/FieldSet.d.ts +3 -0
- package/lib/esm/queries/FieldSet.js +16 -0
- package/lib/esm/queries/FieldSet.js.map +1 -1
- package/lib/esm/queries/IRCanonicalize.d.ts +2 -2
- package/lib/esm/queries/IRCanonicalize.js +4 -0
- package/lib/esm/queries/IRCanonicalize.js.map +1 -1
- package/lib/esm/queries/IRDesugar.d.ts +11 -2
- package/lib/esm/queries/IRDesugar.js +14 -0
- package/lib/esm/queries/IRDesugar.js.map +1 -1
- package/lib/esm/queries/IRLower.d.ts +9 -0
- package/lib/esm/queries/IRLower.js +41 -60
- package/lib/esm/queries/IRLower.js.map +1 -1
- package/lib/esm/queries/IRMutation.d.ts +11 -1
- package/lib/esm/queries/IRMutation.js +44 -21
- package/lib/esm/queries/IRMutation.js.map +1 -1
- package/lib/esm/queries/IntermediateRepresentation.d.ts +9 -2
- package/lib/esm/queries/MutationQuery.js +16 -2
- package/lib/esm/queries/MutationQuery.js.map +1 -1
- package/lib/esm/queries/QueryFactory.d.ts +2 -1
- package/lib/esm/queries/QueryFactory.js.map +1 -1
- package/lib/esm/queries/SelectQuery.d.ts +6 -2
- package/lib/esm/queries/SelectQuery.js +51 -7
- package/lib/esm/queries/SelectQuery.js.map +1 -1
- package/lib/esm/queries/UpdateBuilder.d.ts +2 -0
- package/lib/esm/queries/UpdateBuilder.js +0 -1
- package/lib/esm/queries/UpdateBuilder.js.map +1 -1
- package/lib/esm/shapes/Shape.d.ts +2 -0
- package/lib/esm/shapes/Shape.js +0 -8
- package/lib/esm/shapes/Shape.js.map +1 -1
- package/lib/esm/sparql/irToAlgebra.js +99 -9
- package/lib/esm/sparql/irToAlgebra.js.map +1 -1
- package/lib/esm/test-helpers/query-fixtures.d.ts +64 -1624
- package/lib/esm/test-helpers/query-fixtures.js +65 -17
- package/lib/esm/test-helpers/query-fixtures.js.map +1 -1
- 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 @@
|
|
|
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;
|