@_linked/core 2.12.0 → 2.13.0-next.20260706164859
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 +6 -0
- package/lib/esm/queries/IRPipeline.d.ts +7 -1
- package/lib/esm/queries/IRPipeline.js +20 -6
- package/lib/esm/queries/IRPipeline.js.map +1 -1
- package/lib/esm/queries/queryDispatch.js +12 -2
- package/lib/esm/queries/queryDispatch.js.map +1 -1
- package/package.json +10 -13
- package/lib/cjs/collections/CoreSet.d.ts +0 -47
- package/lib/cjs/collections/CoreSet.js +0 -136
- package/lib/cjs/collections/CoreSet.js.map +0 -1
- package/lib/cjs/collections/ShapeSet.d.ts +0 -6
- package/lib/cjs/collections/ShapeSet.js +0 -20
- package/lib/cjs/collections/ShapeSet.js.map +0 -1
- package/lib/cjs/expressions/Expr.d.ts +0 -29
- package/lib/cjs/expressions/Expr.js +0 -80
- package/lib/cjs/expressions/Expr.js.map +0 -1
- package/lib/cjs/expressions/ExpressionMethods.d.ts +0 -85
- package/lib/cjs/expressions/ExpressionMethods.js +0 -3
- package/lib/cjs/expressions/ExpressionMethods.js.map +0 -1
- package/lib/cjs/expressions/ExpressionNode.d.ts +0 -144
- package/lib/cjs/expressions/ExpressionNode.js +0 -432
- package/lib/cjs/expressions/ExpressionNode.js.map +0 -1
- package/lib/cjs/index.d.ts +0 -29
- package/lib/cjs/index.js +0 -65
- package/lib/cjs/index.js.map +0 -1
- package/lib/cjs/interfaces/ICoreIterable.d.ts +0 -14
- package/lib/cjs/interfaces/ICoreIterable.js +0 -3
- package/lib/cjs/interfaces/ICoreIterable.js.map +0 -1
- package/lib/cjs/interfaces/IDataset.d.ts +0 -26
- package/lib/cjs/interfaces/IDataset.js +0 -3
- package/lib/cjs/interfaces/IDataset.js.map +0 -1
- package/lib/cjs/interfaces/IFileStore.d.ts +0 -16
- package/lib/cjs/interfaces/IFileStore.js +0 -3
- package/lib/cjs/interfaces/IFileStore.js.map +0 -1
- package/lib/cjs/ontologies/linked-core.d.ts +0 -15
- package/lib/cjs/ontologies/linked-core.js +0 -38
- package/lib/cjs/ontologies/linked-core.js.map +0 -1
- package/lib/cjs/ontologies/npm.d.ts +0 -6
- package/lib/cjs/ontologies/npm.js +0 -15
- package/lib/cjs/ontologies/npm.js.map +0 -1
- package/lib/cjs/ontologies/owl.d.ts +0 -14
- package/lib/cjs/ontologies/owl.js +0 -21
- package/lib/cjs/ontologies/owl.js.map +0 -1
- package/lib/cjs/ontologies/rdf.d.ts +0 -13
- package/lib/cjs/ontologies/rdf.js +0 -27
- package/lib/cjs/ontologies/rdf.js.map +0 -1
- package/lib/cjs/ontologies/rdfs.d.ts +0 -16
- package/lib/cjs/ontologies/rdfs.js +0 -33
- package/lib/cjs/ontologies/rdfs.js.map +0 -1
- package/lib/cjs/ontologies/shacl.d.ts +0 -103
- package/lib/cjs/ontologies/shacl.js +0 -152
- package/lib/cjs/ontologies/shacl.js.map +0 -1
- package/lib/cjs/ontologies/xsd.d.ts +0 -19
- package/lib/cjs/ontologies/xsd.js +0 -41
- package/lib/cjs/ontologies/xsd.js.map +0 -1
- package/lib/cjs/package.d.ts +0 -4
- package/lib/cjs/package.js +0 -6
- package/lib/cjs/package.js.map +0 -1
- package/lib/cjs/package.json +0 -9
- package/lib/cjs/paths/PropertyPathExpr.d.ts +0 -38
- package/lib/cjs/paths/PropertyPathExpr.js +0 -221
- package/lib/cjs/paths/PropertyPathExpr.js.map +0 -1
- package/lib/cjs/paths/normalizePropertyPath.d.ts +0 -23
- package/lib/cjs/paths/normalizePropertyPath.js +0 -75
- package/lib/cjs/paths/normalizePropertyPath.js.map +0 -1
- package/lib/cjs/paths/pathExprToSparql.d.ts +0 -14
- package/lib/cjs/paths/pathExprToSparql.js +0 -136
- package/lib/cjs/paths/pathExprToSparql.js.map +0 -1
- package/lib/cjs/queries/ContextRef.d.ts +0 -32
- package/lib/cjs/queries/ContextRef.js +0 -69
- package/lib/cjs/queries/ContextRef.js.map +0 -1
- package/lib/cjs/queries/CreateBuilder.d.ts +0 -59
- package/lib/cjs/queries/CreateBuilder.js +0 -138
- package/lib/cjs/queries/CreateBuilder.js.map +0 -1
- package/lib/cjs/queries/CreateQuery.d.ts +0 -20
- package/lib/cjs/queries/CreateQuery.js +0 -3
- package/lib/cjs/queries/CreateQuery.js.map +0 -1
- package/lib/cjs/queries/DeleteBuilder.d.ts +0 -56
- package/lib/cjs/queries/DeleteBuilder.js +0 -172
- package/lib/cjs/queries/DeleteBuilder.js.map +0 -1
- package/lib/cjs/queries/DeleteQuery.d.ts +0 -37
- package/lib/cjs/queries/DeleteQuery.js +0 -3
- package/lib/cjs/queries/DeleteQuery.js.map +0 -1
- package/lib/cjs/queries/DslJsonExpression.d.ts +0 -68
- package/lib/cjs/queries/DslJsonExpression.js +0 -427
- package/lib/cjs/queries/DslJsonExpression.js.map +0 -1
- package/lib/cjs/queries/FieldSet.d.ts +0 -310
- package/lib/cjs/queries/FieldSet.js +0 -802
- package/lib/cjs/queries/FieldSet.js.map +0 -1
- package/lib/cjs/queries/IRAliasScope.d.ts +0 -20
- package/lib/cjs/queries/IRAliasScope.js +0 -52
- package/lib/cjs/queries/IRAliasScope.js.map +0 -1
- package/lib/cjs/queries/IRCanonicalize.d.ts +0 -19
- package/lib/cjs/queries/IRCanonicalize.js +0 -19
- package/lib/cjs/queries/IRCanonicalize.js.map +0 -1
- package/lib/cjs/queries/IRDesugar.d.ts +0 -123
- package/lib/cjs/queries/IRDesugar.js +0 -261
- package/lib/cjs/queries/IRDesugar.js.map +0 -1
- package/lib/cjs/queries/IRLower.d.ts +0 -25
- package/lib/cjs/queries/IRLower.js +0 -398
- package/lib/cjs/queries/IRLower.js.map +0 -1
- package/lib/cjs/queries/IRMutation.d.ts +0 -53
- package/lib/cjs/queries/IRMutation.js +0 -130
- package/lib/cjs/queries/IRMutation.js.map +0 -1
- package/lib/cjs/queries/IRPipeline.d.ts +0 -8
- package/lib/cjs/queries/IRPipeline.js +0 -25
- package/lib/cjs/queries/IRPipeline.js.map +0 -1
- package/lib/cjs/queries/IRProjection.d.ts +0 -39
- package/lib/cjs/queries/IRProjection.js +0 -105
- package/lib/cjs/queries/IRProjection.js.map +0 -1
- package/lib/cjs/queries/IntermediateRepresentation.d.ts +0 -282
- package/lib/cjs/queries/IntermediateRepresentation.js +0 -3
- package/lib/cjs/queries/IntermediateRepresentation.js.map +0 -1
- package/lib/cjs/queries/MutationQuery.d.ts +0 -50
- package/lib/cjs/queries/MutationQuery.js +0 -334
- package/lib/cjs/queries/MutationQuery.js.map +0 -1
- package/lib/cjs/queries/MutationSerialization.d.ts +0 -102
- package/lib/cjs/queries/MutationSerialization.js +0 -207
- package/lib/cjs/queries/MutationSerialization.js.map +0 -1
- package/lib/cjs/queries/MutationThenable.d.ts +0 -18
- package/lib/cjs/queries/MutationThenable.js +0 -32
- package/lib/cjs/queries/MutationThenable.js.map +0 -1
- package/lib/cjs/queries/PropertyPath.d.ts +0 -38
- package/lib/cjs/queries/PropertyPath.js +0 -82
- package/lib/cjs/queries/PropertyPath.js.map +0 -1
- package/lib/cjs/queries/ProxiedPathBuilder.d.ts +0 -14
- package/lib/cjs/queries/ProxiedPathBuilder.js +0 -29
- package/lib/cjs/queries/ProxiedPathBuilder.js.map +0 -1
- package/lib/cjs/queries/QueryBuilder.d.ts +0 -193
- package/lib/cjs/queries/QueryBuilder.js +0 -519
- package/lib/cjs/queries/QueryBuilder.js.map +0 -1
- package/lib/cjs/queries/QueryBuilderSerialization.d.ts +0 -31
- package/lib/cjs/queries/QueryBuilderSerialization.js +0 -68
- package/lib/cjs/queries/QueryBuilderSerialization.js.map +0 -1
- package/lib/cjs/queries/QueryContext.d.ts +0 -50
- package/lib/cjs/queries/QueryContext.js +0 -147
- package/lib/cjs/queries/QueryContext.js.map +0 -1
- package/lib/cjs/queries/QueryFactory.d.ts +0 -80
- package/lib/cjs/queries/QueryFactory.js +0 -21
- package/lib/cjs/queries/QueryFactory.js.map +0 -1
- package/lib/cjs/queries/SelectQuery.d.ts +0 -302
- package/lib/cjs/queries/SelectQuery.js +0 -761
- package/lib/cjs/queries/SelectQuery.js.map +0 -1
- package/lib/cjs/queries/UpdateBuilder.d.ts +0 -69
- package/lib/cjs/queries/UpdateBuilder.js +0 -199
- package/lib/cjs/queries/UpdateBuilder.js.map +0 -1
- package/lib/cjs/queries/UpdateQuery.d.ts +0 -18
- package/lib/cjs/queries/UpdateQuery.js +0 -3
- package/lib/cjs/queries/UpdateQuery.js.map +0 -1
- package/lib/cjs/queries/fromJSON.d.ts +0 -16
- package/lib/cjs/queries/fromJSON.js +0 -41
- package/lib/cjs/queries/fromJSON.js.map +0 -1
- package/lib/cjs/queries/lower.d.ts +0 -28
- package/lib/cjs/queries/lower.js +0 -114
- package/lib/cjs/queries/lower.js.map +0 -1
- package/lib/cjs/queries/lowerMutationJSON.d.ts +0 -25
- package/lib/cjs/queries/lowerMutationJSON.js +0 -173
- package/lib/cjs/queries/lowerMutationJSON.js.map +0 -1
- package/lib/cjs/queries/mutationLowerSpec.d.ts +0 -32
- package/lib/cjs/queries/mutationLowerSpec.js +0 -8
- package/lib/cjs/queries/mutationLowerSpec.js.map +0 -1
- package/lib/cjs/queries/queryDispatch.d.ts +0 -33
- package/lib/cjs/queries/queryDispatch.js +0 -33
- package/lib/cjs/queries/queryDispatch.js.map +0 -1
- package/lib/cjs/queries/resolveShape.d.ts +0 -10
- package/lib/cjs/queries/resolveShape.js +0 -23
- package/lib/cjs/queries/resolveShape.js.map +0 -1
- package/lib/cjs/queries/wireVersion.d.ts +0 -7
- package/lib/cjs/queries/wireVersion.js +0 -25
- package/lib/cjs/queries/wireVersion.js.map +0 -1
- package/lib/cjs/shapes/List.d.ts +0 -35
- package/lib/cjs/shapes/List.js +0 -72
- package/lib/cjs/shapes/List.js.map +0 -1
- package/lib/cjs/shapes/PathNode.d.ts +0 -20
- package/lib/cjs/shapes/PathNode.js +0 -68
- package/lib/cjs/shapes/PathNode.js.map +0 -1
- package/lib/cjs/shapes/SHACL.d.ts +0 -300
- package/lib/cjs/shapes/SHACL.js +0 -612
- package/lib/cjs/shapes/SHACL.js.map +0 -1
- package/lib/cjs/shapes/Shape.d.ts +0 -74
- package/lib/cjs/shapes/Shape.js +0 -124
- package/lib/cjs/shapes/Shape.js.map +0 -1
- package/lib/cjs/shapes/serializePathToNodeData.d.ts +0 -24
- package/lib/cjs/shapes/serializePathToNodeData.js +0 -67
- package/lib/cjs/shapes/serializePathToNodeData.js.map +0 -1
- package/lib/cjs/shapes/syncShapes.d.ts +0 -38
- package/lib/cjs/shapes/syncShapes.js +0 -214
- package/lib/cjs/shapes/syncShapes.js.map +0 -1
- package/lib/cjs/sparql/SparqlAlgebra.d.ts +0 -190
- package/lib/cjs/sparql/SparqlAlgebra.js +0 -4
- package/lib/cjs/sparql/SparqlAlgebra.js.map +0 -1
- package/lib/cjs/sparql/SparqlDataset.d.ts +0 -60
- package/lib/cjs/sparql/SparqlDataset.js +0 -117
- package/lib/cjs/sparql/SparqlDataset.js.map +0 -1
- package/lib/cjs/sparql/algebraToString.d.ts +0 -13
- package/lib/cjs/sparql/algebraToString.js +0 -385
- package/lib/cjs/sparql/algebraToString.js.map +0 -1
- package/lib/cjs/sparql/index.d.ts +0 -9
- package/lib/cjs/sparql/index.js +0 -41
- package/lib/cjs/sparql/index.js.map +0 -1
- package/lib/cjs/sparql/irToAlgebra.d.ts +0 -79
- package/lib/cjs/sparql/irToAlgebra.js +0 -2042
- package/lib/cjs/sparql/irToAlgebra.js.map +0 -1
- package/lib/cjs/sparql/resultMapping.d.ts +0 -36
- package/lib/cjs/sparql/resultMapping.js +0 -563
- package/lib/cjs/sparql/resultMapping.js.map +0 -1
- package/lib/cjs/sparql/sparqlUtils.d.ts +0 -53
- package/lib/cjs/sparql/sparqlUtils.js +0 -154
- package/lib/cjs/sparql/sparqlUtils.js.map +0 -1
- package/lib/cjs/utils/LinkedErrorLogging.d.ts +0 -13
- package/lib/cjs/utils/LinkedErrorLogging.js +0 -22
- package/lib/cjs/utils/LinkedErrorLogging.js.map +0 -1
- package/lib/cjs/utils/LinkedFileStorage.d.ts +0 -23
- package/lib/cjs/utils/LinkedFileStorage.js +0 -62
- package/lib/cjs/utils/LinkedFileStorage.js.map +0 -1
- package/lib/cjs/utils/LinkedStorage.d.ts +0 -40
- package/lib/cjs/utils/LinkedStorage.js +0 -148
- package/lib/cjs/utils/LinkedStorage.js.map +0 -1
- package/lib/cjs/utils/NameSpace.d.ts +0 -2
- package/lib/cjs/utils/NameSpace.js +0 -8
- package/lib/cjs/utils/NameSpace.js.map +0 -1
- package/lib/cjs/utils/NodeReference.d.ts +0 -30
- package/lib/cjs/utils/NodeReference.js +0 -54
- package/lib/cjs/utils/NodeReference.js.map +0 -1
- package/lib/cjs/utils/Package.d.ts +0 -153
- package/lib/cjs/utils/Package.js +0 -419
- package/lib/cjs/utils/Package.js.map +0 -1
- package/lib/cjs/utils/Prefix.d.ts +0 -22
- package/lib/cjs/utils/Prefix.js +0 -104
- package/lib/cjs/utils/Prefix.js.map +0 -1
- package/lib/cjs/utils/ShapeClass.d.ts +0 -30
- package/lib/cjs/utils/ShapeClass.js +0 -180
- package/lib/cjs/utils/ShapeClass.js.map +0 -1
- package/lib/cjs/utils/URI.d.ts +0 -18
- package/lib/cjs/utils/URI.js +0 -42
- package/lib/cjs/utils/URI.js.map +0 -1
- package/lib/cjs/utils/cached.d.ts +0 -14
- package/lib/cjs/utils/cached.js +0 -71
- package/lib/cjs/utils/cached.js.map +0 -1
- package/lib/cjs/utils/loadStores.d.ts +0 -34
- package/lib/cjs/utils/loadStores.js +0 -105
- package/lib/cjs/utils/loadStores.js.map +0 -1
- package/lib/cjs/utils/parseDatasetsConfig.d.ts +0 -49
- package/lib/cjs/utils/parseDatasetsConfig.js +0 -110
- package/lib/cjs/utils/parseDatasetsConfig.js.map +0 -1
- package/lib/esm/package.json +0 -9
|
@@ -1,398 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.lowerWhereToIR = exports.lowerSelectQuery = void 0;
|
|
4
|
-
exports.createTraversalResolver = createTraversalResolver;
|
|
5
|
-
const ExpressionNode_js_1 = require("../expressions/ExpressionNode.js");
|
|
6
|
-
const ContextRef_js_1 = require("./ContextRef.js");
|
|
7
|
-
const IRProjection_js_1 = require("./IRProjection.js");
|
|
8
|
-
const IRAliasScope_js_1 = require("./IRAliasScope.js");
|
|
9
|
-
/**
|
|
10
|
-
* Creates a memoized traversal resolver that deduplicates (fromAlias, propertyShapeId)
|
|
11
|
-
* pairs, generates unique aliases, and accumulates the resulting patterns.
|
|
12
|
-
* Used by both select-query lowering and mutation expression resolution.
|
|
13
|
-
*/
|
|
14
|
-
function createTraversalResolver(generateAlias, createPattern) {
|
|
15
|
-
const patterns = [];
|
|
16
|
-
const seen = new Map();
|
|
17
|
-
const resolve = (fromAlias, propertyShapeId) => {
|
|
18
|
-
const key = `${fromAlias}:${propertyShapeId}`;
|
|
19
|
-
if (seen.has(key))
|
|
20
|
-
return seen.get(key);
|
|
21
|
-
const toAlias = generateAlias();
|
|
22
|
-
seen.set(key, toAlias);
|
|
23
|
-
patterns.push(createPattern(fromAlias, toAlias, propertyShapeId));
|
|
24
|
-
return toAlias;
|
|
25
|
-
};
|
|
26
|
-
return { resolve, patterns };
|
|
27
|
-
}
|
|
28
|
-
class LoweringContext {
|
|
29
|
-
constructor() {
|
|
30
|
-
this.counter = 0;
|
|
31
|
-
this.patterns = [];
|
|
32
|
-
this.traverseMap = new Map();
|
|
33
|
-
this.filterMap = new Map();
|
|
34
|
-
this.innerPaginationMap = new Map();
|
|
35
|
-
this.rootAlias = this.nextAlias();
|
|
36
|
-
}
|
|
37
|
-
nextAlias() {
|
|
38
|
-
return `a${this.counter++}`;
|
|
39
|
-
}
|
|
40
|
-
getOrCreateTraversal(fromAlias, propertyShapeId, pathExpr, maxCount) {
|
|
41
|
-
const key = `${fromAlias}:${propertyShapeId}`;
|
|
42
|
-
const existing = this.traverseMap.get(key);
|
|
43
|
-
if (existing)
|
|
44
|
-
return existing;
|
|
45
|
-
const toAlias = this.nextAlias();
|
|
46
|
-
const pattern = {
|
|
47
|
-
kind: 'traverse',
|
|
48
|
-
from: fromAlias,
|
|
49
|
-
to: toAlias,
|
|
50
|
-
property: propertyShapeId,
|
|
51
|
-
};
|
|
52
|
-
if (pathExpr) {
|
|
53
|
-
pattern.pathExpr = pathExpr;
|
|
54
|
-
}
|
|
55
|
-
if (typeof maxCount === 'number') {
|
|
56
|
-
pattern.maxCount = maxCount;
|
|
57
|
-
}
|
|
58
|
-
this.patterns.push(pattern);
|
|
59
|
-
this.traverseMap.set(key, toAlias);
|
|
60
|
-
return toAlias;
|
|
61
|
-
}
|
|
62
|
-
generateAlias() {
|
|
63
|
-
return this.nextAlias();
|
|
64
|
-
}
|
|
65
|
-
/**
|
|
66
|
-
* Attaches an inline where filter to the traverse pattern targeting `toAlias`.
|
|
67
|
-
* The filter will be merged into the pattern when `getPatterns()` is called.
|
|
68
|
-
*/
|
|
69
|
-
attachFilter(toAlias, filter) {
|
|
70
|
-
this.filterMap.set(toAlias, filter);
|
|
71
|
-
}
|
|
72
|
-
/**
|
|
73
|
-
* Attaches inner LIMIT/OFFSET/ORDER BY (from a nested select) to the traverse
|
|
74
|
-
* pattern targeting `toAlias`. Merged into the pattern in `getPatterns()`.
|
|
75
|
-
*/
|
|
76
|
-
attachInnerPagination(toAlias, pagination) {
|
|
77
|
-
this.innerPaginationMap.set(toAlias, pagination);
|
|
78
|
-
}
|
|
79
|
-
getPatterns() {
|
|
80
|
-
return this.patterns.map((p) => {
|
|
81
|
-
if (p.kind !== 'traverse')
|
|
82
|
-
return p;
|
|
83
|
-
let pattern = p;
|
|
84
|
-
if (this.filterMap.has(p.to)) {
|
|
85
|
-
pattern = Object.assign(Object.assign({}, pattern), { filter: this.filterMap.get(p.to) });
|
|
86
|
-
}
|
|
87
|
-
const pagination = this.innerPaginationMap.get(p.to);
|
|
88
|
-
if (pagination) {
|
|
89
|
-
pattern = Object.assign(Object.assign(Object.assign(Object.assign({}, pattern), (typeof pagination.limit === 'number' ? { innerLimit: pagination.limit } : {})), (typeof pagination.offset === 'number' ? { innerOffset: pagination.offset } : {})), (pagination.orderBy ? { innerOrderBy: pagination.orderBy } : {}));
|
|
90
|
-
}
|
|
91
|
-
return pattern;
|
|
92
|
-
});
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
const lowerPath = (path, options) => (0, IRProjection_js_1.lowerSelectionPathExpression)(path, options);
|
|
96
|
-
/**
|
|
97
|
-
* Resolve any `{@ctx}` context references carried in a lowered expression tree —
|
|
98
|
-
* whether it came from a where-clause filter OR a projected (expression-select)
|
|
99
|
-
* value.
|
|
100
|
-
*
|
|
101
|
-
* A context reference (`.equals(getQueryContext('user'))`) is carried through build +
|
|
102
|
-
* the wire as a *name* (`reference_expr.contextName` / `context_property_expr.contextName`),
|
|
103
|
-
* never a baked id. Here — at lowering — it is resolved against the live context map into
|
|
104
|
-
* the concrete IRI; an unresolved one throws `UnresolvedContextError` (SELECT callers
|
|
105
|
-
* short-circuit to null before lowering, so a query is never lowered with an unresolved
|
|
106
|
-
* context in practice). This must be applied to every expression that can reach the SPARQL
|
|
107
|
-
* algebra, not just where-filters.
|
|
108
|
-
*/
|
|
109
|
-
const resolveContextRefs = (expr) => {
|
|
110
|
-
switch (expr.kind) {
|
|
111
|
-
case 'reference_expr':
|
|
112
|
-
if (expr.contextName) {
|
|
113
|
-
return { kind: 'reference_expr', value: (0, ContextRef_js_1.resolveContextId)(expr.contextName, true) };
|
|
114
|
-
}
|
|
115
|
-
return expr;
|
|
116
|
-
case 'context_property_expr':
|
|
117
|
-
if (expr.contextName) {
|
|
118
|
-
return { kind: 'context_property_expr', contextIri: (0, ContextRef_js_1.resolveContextId)(expr.contextName, true), property: expr.property };
|
|
119
|
-
}
|
|
120
|
-
return expr;
|
|
121
|
-
case 'binary_expr':
|
|
122
|
-
return Object.assign(Object.assign({}, expr), { left: resolveContextRefs(expr.left), right: resolveContextRefs(expr.right) });
|
|
123
|
-
case 'in_expr':
|
|
124
|
-
return Object.assign(Object.assign({}, expr), { value: resolveContextRefs(expr.value), source: { list: expr.source.list.map(resolveContextRefs) } });
|
|
125
|
-
case 'logical_expr':
|
|
126
|
-
return Object.assign(Object.assign({}, expr), { expressions: expr.expressions.map(resolveContextRefs) });
|
|
127
|
-
case 'not_expr':
|
|
128
|
-
return Object.assign(Object.assign({}, expr), { expression: resolveContextRefs(expr.expression) });
|
|
129
|
-
case 'function_expr':
|
|
130
|
-
case 'aggregate_expr':
|
|
131
|
-
return Object.assign(Object.assign({}, expr), { args: expr.args.map(resolveContextRefs) });
|
|
132
|
-
case 'exists_expr':
|
|
133
|
-
return expr.filter ? Object.assign(Object.assign({}, expr), { filter: resolveContextRefs(expr.filter) }) : expr;
|
|
134
|
-
default:
|
|
135
|
-
return expr;
|
|
136
|
-
}
|
|
137
|
-
};
|
|
138
|
-
const lowerWhere = (where, ctx, options) => {
|
|
139
|
-
switch (where.kind) {
|
|
140
|
-
case 'where_expression': {
|
|
141
|
-
// ExpressionNode-based WHERE — resolve refs and return IRExpression directly
|
|
142
|
-
const exprWhere = where;
|
|
143
|
-
return resolveContextRefs((0, ExpressionNode_js_1.resolveExpressionRefs)(exprWhere.expressionNode.ir, exprWhere.expressionNode._refs, options.rootAlias, options.resolveTraversal));
|
|
144
|
-
}
|
|
145
|
-
case 'where_exists_condition': {
|
|
146
|
-
// ExistsCondition-based WHERE (from .some()/.every()/.none())
|
|
147
|
-
const existsWhere = where;
|
|
148
|
-
return resolveContextRefs(lowerExistsCondition(existsWhere.existsCondition, ctx, options));
|
|
149
|
-
}
|
|
150
|
-
default:
|
|
151
|
-
const _exhaustive = where;
|
|
152
|
-
throw new Error(`Unknown canonical where kind: ${_exhaustive.kind}`);
|
|
153
|
-
}
|
|
154
|
-
};
|
|
155
|
-
/**
|
|
156
|
-
* Lower an ExistsCondition to IRExistsExpression with proper traversal patterns.
|
|
157
|
-
*/
|
|
158
|
-
const lowerExistsCondition = (condition, ctx, options) => {
|
|
159
|
-
// Build traversal patterns for the collection path
|
|
160
|
-
const { resolve: existsResolve, patterns: traversals } = createTraversalResolver(() => ctx.generateAlias(), (from, to, property) => ({ kind: 'traverse', from, to, property }));
|
|
161
|
-
// Walk the path segments to create traversal patterns
|
|
162
|
-
let currentAlias = options.rootAlias;
|
|
163
|
-
for (const segmentId of condition.pathSegmentIds) {
|
|
164
|
-
currentAlias = existsResolve(currentAlias, segmentId);
|
|
165
|
-
}
|
|
166
|
-
// Resolve the inner predicate's property refs against the EXISTS scope
|
|
167
|
-
const filter = (0, ExpressionNode_js_1.resolveExpressionRefs)(condition.predicate.ir, condition.predicate._refs, currentAlias, existsResolve);
|
|
168
|
-
let existsExpr = {
|
|
169
|
-
kind: 'exists_expr',
|
|
170
|
-
pattern: traversals.length === 1
|
|
171
|
-
? traversals[0]
|
|
172
|
-
: { kind: 'join', patterns: traversals },
|
|
173
|
-
filter,
|
|
174
|
-
};
|
|
175
|
-
// Wrap in NOT if negated (.none() or outer NOT of .every())
|
|
176
|
-
if (condition.negated) {
|
|
177
|
-
existsExpr = { kind: 'not_expr', expression: existsExpr };
|
|
178
|
-
}
|
|
179
|
-
// Handle .and()/.or() chaining
|
|
180
|
-
if (condition.chain.length > 0) {
|
|
181
|
-
let result = existsExpr;
|
|
182
|
-
for (const link of condition.chain) {
|
|
183
|
-
let rightExpr;
|
|
184
|
-
if (link.condition instanceof ExpressionNode_js_1.ExistsCondition) {
|
|
185
|
-
rightExpr = lowerExistsCondition(link.condition, ctx, options);
|
|
186
|
-
}
|
|
187
|
-
else {
|
|
188
|
-
rightExpr = (0, ExpressionNode_js_1.resolveExpressionRefs)(link.condition.ir, link.condition._refs, options.rootAlias, options.resolveTraversal);
|
|
189
|
-
}
|
|
190
|
-
result = {
|
|
191
|
-
kind: 'logical_expr',
|
|
192
|
-
operator: link.op,
|
|
193
|
-
expressions: [result, rightExpr],
|
|
194
|
-
};
|
|
195
|
-
}
|
|
196
|
-
return result;
|
|
197
|
-
}
|
|
198
|
-
return existsExpr;
|
|
199
|
-
};
|
|
200
|
-
const combineWithParentPath = (parentPath, path) => ({
|
|
201
|
-
kind: 'selection_path',
|
|
202
|
-
steps: [...parentPath, ...path.steps],
|
|
203
|
-
});
|
|
204
|
-
/**
|
|
205
|
-
* Lowers a canonical desugared select query into the final IRSelectQuery.
|
|
206
|
-
* Introduces aliases, graph patterns (shape scans, traversals), and
|
|
207
|
-
* converts selection paths and where-clauses into IR expressions.
|
|
208
|
-
*/
|
|
209
|
-
const lowerSelectQuery = (canonical) => {
|
|
210
|
-
const ctx = new LoweringContext();
|
|
211
|
-
const pathOptions = {
|
|
212
|
-
rootAlias: ctx.rootAlias,
|
|
213
|
-
resolveTraversal: (fromAlias, propertyShapeId, pathExpr, maxCount) => ctx.getOrCreateTraversal(fromAlias, propertyShapeId, pathExpr, maxCount),
|
|
214
|
-
};
|
|
215
|
-
const root = {
|
|
216
|
-
kind: 'shape_scan',
|
|
217
|
-
shape: canonical.shapeId || '',
|
|
218
|
-
alias: ctx.rootAlias,
|
|
219
|
-
};
|
|
220
|
-
const aliasAfterPath = (steps) => {
|
|
221
|
-
let currentAlias = pathOptions.rootAlias;
|
|
222
|
-
for (const step of steps) {
|
|
223
|
-
if (step.kind === 'property_step') {
|
|
224
|
-
currentAlias = pathOptions.resolveTraversal(currentAlias, step.propertyShapeId, step.pathExpr, step.maxCount);
|
|
225
|
-
}
|
|
226
|
-
}
|
|
227
|
-
return currentAlias;
|
|
228
|
-
};
|
|
229
|
-
const collectProjectionSeeds = (selection, key, parentPath = []) => {
|
|
230
|
-
var _a;
|
|
231
|
-
if (selection.kind === 'selection_path') {
|
|
232
|
-
return [{
|
|
233
|
-
kind: 'path',
|
|
234
|
-
path: combineWithParentPath(parentPath, selection),
|
|
235
|
-
key,
|
|
236
|
-
}];
|
|
237
|
-
}
|
|
238
|
-
if (selection.kind === 'sub_select') {
|
|
239
|
-
const combinedParentPath = [...parentPath, ...selection.parentPath];
|
|
240
|
-
// Nested-select inner LIMIT/OFFSET/ORDER BY → attach to the root→child
|
|
241
|
-
// traverse (the alias reached by walking combinedParentPath). The serializer
|
|
242
|
-
// wraps that traverse in a SPARQL sub-SELECT. Single-subject is enforced in
|
|
243
|
-
// irToAlgebra; here we only record the intent.
|
|
244
|
-
const hasInnerPagination = typeof selection.innerLimit === 'number' ||
|
|
245
|
-
typeof selection.innerOffset === 'number' ||
|
|
246
|
-
(selection.innerOrderBy && selection.innerOrderBy.length > 0);
|
|
247
|
-
if (hasInnerPagination) {
|
|
248
|
-
const childAlias = aliasAfterPath(combinedParentPath);
|
|
249
|
-
ctx.attachInnerPagination(childAlias, {
|
|
250
|
-
limit: selection.innerLimit,
|
|
251
|
-
offset: selection.innerOffset,
|
|
252
|
-
orderBy: (_a = selection.innerOrderBy) === null || _a === void 0 ? void 0 : _a.map((o) => ({
|
|
253
|
-
property: o.propertyShapeId,
|
|
254
|
-
direction: o.direction,
|
|
255
|
-
})),
|
|
256
|
-
});
|
|
257
|
-
}
|
|
258
|
-
return collectProjectionSeeds(selection.selections, key, combinedParentPath);
|
|
259
|
-
}
|
|
260
|
-
if (selection.kind === 'custom_object_select') {
|
|
261
|
-
return selection.entries.flatMap((entry) => collectProjectionSeeds(entry.value, entry.key, parentPath));
|
|
262
|
-
}
|
|
263
|
-
if (selection.kind === 'multi_selection') {
|
|
264
|
-
return selection.selections.flatMap((nestedSelection) => collectProjectionSeeds(nestedSelection, key, parentPath));
|
|
265
|
-
}
|
|
266
|
-
if (selection.kind === 'expression_select') {
|
|
267
|
-
const exprSelect = selection;
|
|
268
|
-
// Resolve property refs AND any {@ctx} context references — a projected
|
|
269
|
-
// expression (e.g. `select(p => ({flag: p.x.equals(getQueryContext('user'))}))`)
|
|
270
|
-
// reaches the SPARQL algebra just like a where-filter, so its context refs
|
|
271
|
-
// must be resolved here too, not only in lowerWhere.
|
|
272
|
-
const resolved = resolveContextRefs((0, ExpressionNode_js_1.resolveExpressionRefs)(exprSelect.expressionNode.ir, exprSelect.expressionNode._refs, aliasAfterPath(parentPath), pathOptions.resolveTraversal));
|
|
273
|
-
return [{
|
|
274
|
-
kind: 'expression',
|
|
275
|
-
key: key || 'expr',
|
|
276
|
-
expression: resolved,
|
|
277
|
-
}];
|
|
278
|
-
}
|
|
279
|
-
return [];
|
|
280
|
-
};
|
|
281
|
-
const projectionSeeds = canonical.selections.flatMap((selection) => collectProjectionSeeds(selection));
|
|
282
|
-
const projectionScope = new IRAliasScope_js_1.IRAliasScope('projection');
|
|
283
|
-
projectionScope.registerAlias(ctx.rootAlias, 'root');
|
|
284
|
-
const projection = [];
|
|
285
|
-
const resultMapEntries = [];
|
|
286
|
-
// Inline filter handler: when a property step has `.where()`, canonicalize
|
|
287
|
-
// and lower the where predicate, then attach it to the traverse pattern.
|
|
288
|
-
const inlineFilterHandler = (traverseAlias, where) => {
|
|
289
|
-
const filterExpr = lowerWhere(where, ctx, {
|
|
290
|
-
rootAlias: traverseAlias,
|
|
291
|
-
resolveTraversal: pathOptions.resolveTraversal,
|
|
292
|
-
});
|
|
293
|
-
ctx.attachFilter(traverseAlias, filterExpr);
|
|
294
|
-
};
|
|
295
|
-
for (const seed of projectionSeeds) {
|
|
296
|
-
const key = seed.kind === 'path'
|
|
297
|
-
? (seed.key || (0, IRProjection_js_1.projectionKeyFromPath)(seed.path))
|
|
298
|
-
: seed.key;
|
|
299
|
-
const alias = projectionScope.generateAlias(key).alias;
|
|
300
|
-
projection.push({
|
|
301
|
-
alias,
|
|
302
|
-
expression: seed.kind === 'path'
|
|
303
|
-
? (0, IRProjection_js_1.lowerSelectionPathExpression)(seed.path, pathOptions, inlineFilterHandler)
|
|
304
|
-
: seed.expression,
|
|
305
|
-
});
|
|
306
|
-
resultMapEntries.push({
|
|
307
|
-
key,
|
|
308
|
-
alias,
|
|
309
|
-
});
|
|
310
|
-
}
|
|
311
|
-
const where = canonical.where ? lowerWhere(canonical.where, ctx, pathOptions) : undefined;
|
|
312
|
-
const orderBy = canonical.sortBy
|
|
313
|
-
? canonical.sortBy.paths.map((path, i) => ({
|
|
314
|
-
expression: lowerPath(path, pathOptions),
|
|
315
|
-
direction: canonical.sortBy.directions[i],
|
|
316
|
-
}))
|
|
317
|
-
: undefined;
|
|
318
|
-
// Lower MINUS entries → IRMinusPattern objects
|
|
319
|
-
const minusPatterns = [];
|
|
320
|
-
if (canonical.minusEntries) {
|
|
321
|
-
for (const entry of canonical.minusEntries) {
|
|
322
|
-
if (entry.shapeId) {
|
|
323
|
-
// Shape exclusion: MINUS { ?a0 a <Shape> }
|
|
324
|
-
minusPatterns.push({
|
|
325
|
-
kind: 'minus',
|
|
326
|
-
pattern: { kind: 'shape_scan', shape: entry.shapeId, alias: ctx.rootAlias },
|
|
327
|
-
});
|
|
328
|
-
}
|
|
329
|
-
else if (entry.propertyPaths && entry.propertyPaths.length > 0) {
|
|
330
|
-
// Property existence exclusion: MINUS { ?a0 <prop1> ?m0 . ?a0 <prop2> ?m1 . }
|
|
331
|
-
// Supports nested paths: ?a0 <bestFriend> ?m0 . ?m0 <name> ?m1 .
|
|
332
|
-
const traversals = [];
|
|
333
|
-
for (const path of entry.propertyPaths) {
|
|
334
|
-
let currentAlias = ctx.rootAlias;
|
|
335
|
-
for (const segment of path) {
|
|
336
|
-
const toAlias = ctx.generateAlias();
|
|
337
|
-
traversals.push({
|
|
338
|
-
kind: 'traverse',
|
|
339
|
-
from: currentAlias,
|
|
340
|
-
to: toAlias,
|
|
341
|
-
property: segment.propertyShapeId,
|
|
342
|
-
});
|
|
343
|
-
currentAlias = toAlias;
|
|
344
|
-
}
|
|
345
|
-
}
|
|
346
|
-
const innerPattern = traversals.length === 1
|
|
347
|
-
? traversals[0]
|
|
348
|
-
: { kind: 'join', patterns: traversals };
|
|
349
|
-
minusPatterns.push({ kind: 'minus', pattern: innerPattern });
|
|
350
|
-
}
|
|
351
|
-
else if (entry.where) {
|
|
352
|
-
// Condition-based exclusion: MINUS { ?a0 <prop> ?val . FILTER(...) }
|
|
353
|
-
const { resolve: minusResolveTraversal, patterns: minusTraversals } = createTraversalResolver(() => ctx.generateAlias(), (from, to, property) => ({ kind: 'traverse', from, to, property }));
|
|
354
|
-
const minusOptions = {
|
|
355
|
-
rootAlias: ctx.rootAlias,
|
|
356
|
-
resolveTraversal: minusResolveTraversal,
|
|
357
|
-
};
|
|
358
|
-
const filter = lowerWhere(entry.where, ctx, minusOptions);
|
|
359
|
-
const innerPattern = minusTraversals.length === 1
|
|
360
|
-
? minusTraversals[0]
|
|
361
|
-
: minusTraversals.length > 1
|
|
362
|
-
? { kind: 'join', patterns: minusTraversals }
|
|
363
|
-
: { kind: 'shape_scan', shape: canonical.shapeId || '', alias: ctx.rootAlias };
|
|
364
|
-
minusPatterns.push({ kind: 'minus', pattern: innerPattern, filter });
|
|
365
|
-
}
|
|
366
|
-
}
|
|
367
|
-
}
|
|
368
|
-
return {
|
|
369
|
-
kind: 'select',
|
|
370
|
-
root,
|
|
371
|
-
patterns: [...ctx.getPatterns(), ...minusPatterns],
|
|
372
|
-
projection,
|
|
373
|
-
where,
|
|
374
|
-
orderBy,
|
|
375
|
-
limit: canonical.limit,
|
|
376
|
-
offset: canonical.offset,
|
|
377
|
-
subjectId: canonical.subjectId,
|
|
378
|
-
subjectIds: canonical.subjectIds,
|
|
379
|
-
singleResult: canonical.singleResult,
|
|
380
|
-
resultMap: resultMapEntries,
|
|
381
|
-
};
|
|
382
|
-
};
|
|
383
|
-
exports.lowerSelectQuery = lowerSelectQuery;
|
|
384
|
-
/**
|
|
385
|
-
* Standalone WHERE lowering — converts a CanonicalWhereExpression to IR expression + patterns.
|
|
386
|
-
* Used by mutation builders (DeleteBuilder, UpdateBuilder) that don't go through the select pipeline.
|
|
387
|
-
*/
|
|
388
|
-
const lowerWhereToIR = (where, rootAlias = 'a0') => {
|
|
389
|
-
let counter = 1; // start at 1 since a0 is the root
|
|
390
|
-
const ctx = {
|
|
391
|
-
generateAlias: () => `a${counter++}`,
|
|
392
|
-
};
|
|
393
|
-
const { resolve, patterns: traversals } = createTraversalResolver(() => ctx.generateAlias(), (from, to, property) => ({ kind: 'traverse', from, to, property }));
|
|
394
|
-
const expr = lowerWhere(where, ctx, { rootAlias, resolveTraversal: resolve });
|
|
395
|
-
return { where: expr, wherePatterns: traversals };
|
|
396
|
-
};
|
|
397
|
-
exports.lowerWhereToIR = lowerWhereToIR;
|
|
398
|
-
//# sourceMappingURL=IRLower.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"IRLower.js","sourceRoot":"","sources":["../../../src/queries/IRLower.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
import type { NodeShape } from '../shapes/SHACL.js';
|
|
2
|
-
import { type NodeDescriptionValue, NodeReferenceValue } from './QueryFactory.js';
|
|
3
|
-
import type { IRCreateMutation, IRDeleteMutation, IRDeleteAllMutation, IRDeleteWhereMutation, IRUpdateWhereMutation, IRUpdateMutation, IRExpression, IRGraphPattern, IRTraversalPattern } from './IntermediateRepresentation.js';
|
|
4
|
-
type CreateMutationInput = {
|
|
5
|
-
shape: NodeShape;
|
|
6
|
-
description: NodeDescriptionValue;
|
|
7
|
-
};
|
|
8
|
-
type UpdateMutationInput = {
|
|
9
|
-
id: string;
|
|
10
|
-
shape: NodeShape;
|
|
11
|
-
updates: NodeDescriptionValue;
|
|
12
|
-
};
|
|
13
|
-
type DeleteMutationInput = {
|
|
14
|
-
shape: NodeShape;
|
|
15
|
-
ids: NodeReferenceValue[];
|
|
16
|
-
};
|
|
17
|
-
export type TraversalCollector = {
|
|
18
|
-
resolve: (fromAlias: string, propertyShapeId: string) => string;
|
|
19
|
-
patterns: IRTraversalPattern[];
|
|
20
|
-
};
|
|
21
|
-
/**
|
|
22
|
-
* Create a traversal collector for mutation expressions. Uses `__trav_N__` alias
|
|
23
|
-
* prefixes to avoid collision with query aliases (a0, a1...) and the mutation
|
|
24
|
-
* subject placeholder. Delegates to the shared createTraversalResolver factory.
|
|
25
|
-
*/
|
|
26
|
-
export declare function createTraversalCollector(): TraversalCollector;
|
|
27
|
-
/** Builds an IRCreateMutation from a create factory's internal description. */
|
|
28
|
-
export declare const buildCanonicalCreateMutationIR: (query: CreateMutationInput) => IRCreateMutation;
|
|
29
|
-
/** Builds an IRUpdateMutation from an update factory's internal description. */
|
|
30
|
-
export declare const buildCanonicalUpdateMutationIR: (query: UpdateMutationInput) => IRUpdateMutation;
|
|
31
|
-
/** Builds an IRDeleteMutation from a delete factory's internal description. */
|
|
32
|
-
export declare const buildCanonicalDeleteMutationIR: (query: DeleteMutationInput) => IRDeleteMutation;
|
|
33
|
-
type DeleteAllMutationInput = {
|
|
34
|
-
shape: NodeShape;
|
|
35
|
-
};
|
|
36
|
-
/** Builds an IRDeleteAllMutation — delete all instances of a shape type. */
|
|
37
|
-
export declare const buildCanonicalDeleteAllMutationIR: (query: DeleteAllMutationInput) => IRDeleteAllMutation;
|
|
38
|
-
type DeleteWhereMutationInput = {
|
|
39
|
-
shape: NodeShape;
|
|
40
|
-
where: IRExpression;
|
|
41
|
-
wherePatterns: IRGraphPattern[];
|
|
42
|
-
};
|
|
43
|
-
/** Builds an IRDeleteWhereMutation — delete instances matching a condition. */
|
|
44
|
-
export declare const buildCanonicalDeleteWhereMutationIR: (query: DeleteWhereMutationInput) => IRDeleteWhereMutation;
|
|
45
|
-
type UpdateWhereMutationInput = {
|
|
46
|
-
shape: NodeShape;
|
|
47
|
-
updates: NodeDescriptionValue;
|
|
48
|
-
where?: IRExpression;
|
|
49
|
-
wherePatterns?: IRGraphPattern[];
|
|
50
|
-
};
|
|
51
|
-
/** Builds an IRUpdateWhereMutation — update instances matching a condition or all. */
|
|
52
|
-
export declare const buildCanonicalUpdateWhereMutationIR: (query: UpdateWhereMutationInput) => IRUpdateWhereMutation;
|
|
53
|
-
export {};
|
|
@@ -1,130 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.buildCanonicalUpdateWhereMutationIR = exports.buildCanonicalDeleteWhereMutationIR = exports.buildCanonicalDeleteAllMutationIR = exports.buildCanonicalDeleteMutationIR = exports.buildCanonicalUpdateMutationIR = exports.buildCanonicalCreateMutationIR = void 0;
|
|
4
|
-
exports.createTraversalCollector = createTraversalCollector;
|
|
5
|
-
const QueryFactory_js_1 = require("./QueryFactory.js");
|
|
6
|
-
const ExpressionNode_js_1 = require("../expressions/ExpressionNode.js");
|
|
7
|
-
const IRLower_js_1 = require("./IRLower.js");
|
|
8
|
-
const toNodeReference = (value) => ({
|
|
9
|
-
id: value.id,
|
|
10
|
-
});
|
|
11
|
-
const toSetModification = (value) => {
|
|
12
|
-
return {
|
|
13
|
-
add: value.$add
|
|
14
|
-
? value.$add.map((item) => toFieldValue(item))
|
|
15
|
-
: undefined,
|
|
16
|
-
remove: value.$remove ? value.$remove.map((item) => toNodeReference(item)) : undefined,
|
|
17
|
-
};
|
|
18
|
-
};
|
|
19
|
-
/** Alias used as the mutation subject for expression ref resolution. */
|
|
20
|
-
const MUTATION_SUBJECT_ALIAS = '__mutation_subject__';
|
|
21
|
-
/**
|
|
22
|
-
* Create a traversal collector for mutation expressions. Uses `__trav_N__` alias
|
|
23
|
-
* prefixes to avoid collision with query aliases (a0, a1...) and the mutation
|
|
24
|
-
* subject placeholder. Delegates to the shared createTraversalResolver factory.
|
|
25
|
-
*/
|
|
26
|
-
function createTraversalCollector() {
|
|
27
|
-
let counter = 0;
|
|
28
|
-
return (0, IRLower_js_1.createTraversalResolver)(() => `__trav_${counter++}__`, (from, to, property) => ({ from, property, to }));
|
|
29
|
-
}
|
|
30
|
-
const toSingleFieldValue = (value, collector) => {
|
|
31
|
-
if (value === undefined) {
|
|
32
|
-
return undefined;
|
|
33
|
-
}
|
|
34
|
-
// ExpressionNode → resolve refs and extract IRExpression
|
|
35
|
-
if ((0, ExpressionNode_js_1.isExpressionNode)(value)) {
|
|
36
|
-
return (0, ExpressionNode_js_1.resolveExpressionRefs)(value.ir, value._refs, MUTATION_SUBJECT_ALIAS,
|
|
37
|
-
// In mutation context, all property segments are on the subject entity.
|
|
38
|
-
// For single-segment refs (e.g. p.age), the property_expr already has the property as its .property.
|
|
39
|
-
// For multi-segment refs (e.g. p.bestFriend.name), this creates intermediate traversals.
|
|
40
|
-
collector
|
|
41
|
-
? collector.resolve
|
|
42
|
-
: (_fromAlias, _propertyShapeId) => {
|
|
43
|
-
// No collector provided — multi-segment traversals cannot be resolved.
|
|
44
|
-
return MUTATION_SUBJECT_ALIAS;
|
|
45
|
-
});
|
|
46
|
-
}
|
|
47
|
-
if (typeof value === 'string' ||
|
|
48
|
-
typeof value === 'number' ||
|
|
49
|
-
typeof value === 'boolean' ||
|
|
50
|
-
value instanceof Date) {
|
|
51
|
-
return value;
|
|
52
|
-
}
|
|
53
|
-
if ('id' in value) {
|
|
54
|
-
return toNodeReference(value);
|
|
55
|
-
}
|
|
56
|
-
return toNodeData(value);
|
|
57
|
-
};
|
|
58
|
-
const toFieldValue = (value, collector) => {
|
|
59
|
-
if (Array.isArray(value)) {
|
|
60
|
-
return value.map((item) => toSingleFieldValue(item, collector));
|
|
61
|
-
}
|
|
62
|
-
if ((0, QueryFactory_js_1.isSetModificationValue)(value)) {
|
|
63
|
-
return toSetModification(value);
|
|
64
|
-
}
|
|
65
|
-
return toSingleFieldValue(value, collector);
|
|
66
|
-
};
|
|
67
|
-
const toFieldUpdate = (field, collector) => {
|
|
68
|
-
return {
|
|
69
|
-
property: field.prop.id,
|
|
70
|
-
value: toFieldValue(field.val, collector),
|
|
71
|
-
};
|
|
72
|
-
};
|
|
73
|
-
const toNodeData = (description, collector) => {
|
|
74
|
-
return Object.assign({ shape: description.shape.id, fields: description.fields.map((f) => toFieldUpdate(f, collector)) }, (description.__id ? { id: description.__id } : {}));
|
|
75
|
-
};
|
|
76
|
-
/** Builds an IRCreateMutation from a create factory's internal description. */
|
|
77
|
-
const buildCanonicalCreateMutationIR = (query) => {
|
|
78
|
-
return {
|
|
79
|
-
kind: 'create',
|
|
80
|
-
shape: query.shape.id,
|
|
81
|
-
data: toNodeData(query.description),
|
|
82
|
-
};
|
|
83
|
-
};
|
|
84
|
-
exports.buildCanonicalCreateMutationIR = buildCanonicalCreateMutationIR;
|
|
85
|
-
/** Builds an IRUpdateMutation from an update factory's internal description. */
|
|
86
|
-
const buildCanonicalUpdateMutationIR = (query) => {
|
|
87
|
-
const collector = createTraversalCollector();
|
|
88
|
-
const data = toNodeData(query.updates, collector);
|
|
89
|
-
return Object.assign({ kind: 'update', shape: query.shape.id, id: query.id, data }, (collector.patterns.length > 0
|
|
90
|
-
? { traversalPatterns: collector.patterns }
|
|
91
|
-
: {}));
|
|
92
|
-
};
|
|
93
|
-
exports.buildCanonicalUpdateMutationIR = buildCanonicalUpdateMutationIR;
|
|
94
|
-
/** Builds an IRDeleteMutation from a delete factory's internal description. */
|
|
95
|
-
const buildCanonicalDeleteMutationIR = (query) => {
|
|
96
|
-
return {
|
|
97
|
-
kind: 'delete',
|
|
98
|
-
shape: query.shape.id,
|
|
99
|
-
ids: query.ids.map((id) => ({ id: id.id })),
|
|
100
|
-
};
|
|
101
|
-
};
|
|
102
|
-
exports.buildCanonicalDeleteMutationIR = buildCanonicalDeleteMutationIR;
|
|
103
|
-
/** Builds an IRDeleteAllMutation — delete all instances of a shape type. */
|
|
104
|
-
const buildCanonicalDeleteAllMutationIR = (query) => {
|
|
105
|
-
return {
|
|
106
|
-
kind: 'delete_all',
|
|
107
|
-
shape: query.shape.id,
|
|
108
|
-
};
|
|
109
|
-
};
|
|
110
|
-
exports.buildCanonicalDeleteAllMutationIR = buildCanonicalDeleteAllMutationIR;
|
|
111
|
-
/** Builds an IRDeleteWhereMutation — delete instances matching a condition. */
|
|
112
|
-
const buildCanonicalDeleteWhereMutationIR = (query) => {
|
|
113
|
-
return {
|
|
114
|
-
kind: 'delete_where',
|
|
115
|
-
shape: query.shape.id,
|
|
116
|
-
where: query.where,
|
|
117
|
-
wherePatterns: query.wherePatterns,
|
|
118
|
-
};
|
|
119
|
-
};
|
|
120
|
-
exports.buildCanonicalDeleteWhereMutationIR = buildCanonicalDeleteWhereMutationIR;
|
|
121
|
-
/** Builds an IRUpdateWhereMutation — update instances matching a condition or all. */
|
|
122
|
-
const buildCanonicalUpdateWhereMutationIR = (query) => {
|
|
123
|
-
const collector = createTraversalCollector();
|
|
124
|
-
const data = toNodeData(query.updates, collector);
|
|
125
|
-
return Object.assign({ kind: 'update_where', shape: query.shape.id, data, where: query.where, wherePatterns: query.wherePatterns }, (collector.patterns.length > 0
|
|
126
|
-
? { traversalPatterns: collector.patterns }
|
|
127
|
-
: {}));
|
|
128
|
-
};
|
|
129
|
-
exports.buildCanonicalUpdateWhereMutationIR = buildCanonicalUpdateWhereMutationIR;
|
|
130
|
-
//# sourceMappingURL=IRMutation.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"IRMutation.js","sourceRoot":"","sources":["../../../src/queries/IRMutation.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import { type RawSelectInput } from './IRDesugar.js';
|
|
2
|
-
import type { IRSelectQuery } from './IntermediateRepresentation.js';
|
|
3
|
-
/**
|
|
4
|
-
* Runs the full select pipeline: desugar → canonicalize → lower.
|
|
5
|
-
* Accepts either a RawSelectInput (from a query factory) or an already-built
|
|
6
|
-
* IRSelectQuery (returned as-is).
|
|
7
|
-
*/
|
|
8
|
-
export declare const buildSelectQuery: (query: RawSelectInput | IRSelectQuery) => IRSelectQuery;
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.buildSelectQuery = void 0;
|
|
4
|
-
const IRDesugar_js_1 = require("./IRDesugar.js");
|
|
5
|
-
const IRCanonicalize_js_1 = require("./IRCanonicalize.js");
|
|
6
|
-
const IRLower_js_1 = require("./IRLower.js");
|
|
7
|
-
const isIRSelectQuery = (query) => !!query &&
|
|
8
|
-
typeof query === 'object' &&
|
|
9
|
-
'kind' in query &&
|
|
10
|
-
query.kind === 'select';
|
|
11
|
-
/**
|
|
12
|
-
* Runs the full select pipeline: desugar → canonicalize → lower.
|
|
13
|
-
* Accepts either a RawSelectInput (from a query factory) or an already-built
|
|
14
|
-
* IRSelectQuery (returned as-is).
|
|
15
|
-
*/
|
|
16
|
-
const buildSelectQuery = (query) => {
|
|
17
|
-
if (isIRSelectQuery(query)) {
|
|
18
|
-
return query;
|
|
19
|
-
}
|
|
20
|
-
const desugared = (0, IRDesugar_js_1.desugarSelectQuery)(query);
|
|
21
|
-
const canonical = (0, IRCanonicalize_js_1.canonicalizeDesugaredSelectQuery)(desugared);
|
|
22
|
-
return (0, IRLower_js_1.lowerSelectQuery)(canonical);
|
|
23
|
-
};
|
|
24
|
-
exports.buildSelectQuery = buildSelectQuery;
|
|
25
|
-
//# sourceMappingURL=IRPipeline.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"IRPipeline.js","sourceRoot":"","sources":["../../../src/queries/IRPipeline.ts"],"names":[],"mappings":";;;AAAA,iDAAuE;AACvE,2DAAqE;AACrE,6CAA8C;AAG9C,MAAM,eAAe,GAAG,CAAC,KAAc,EAA0B,EAAE,CACjE,CAAC,CAAC,KAAK;IACP,OAAO,KAAK,KAAK,QAAQ;IACzB,MAAM,IAAI,KAAK;IACd,KAAuB,CAAC,IAAI,KAAK,QAAQ,CAAC;AAE7C;;;;GAIG;AACI,MAAM,gBAAgB,GAAG,CAAC,KAAqC,EAAiB,EAAE;IACvF,IAAI,eAAe,CAAC,KAAK,CAAC,EAAE,CAAC;QAC3B,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,SAAS,GAAG,IAAA,iCAAkB,EAAC,KAAuB,CAAC,CAAC;IAC9D,MAAM,SAAS,GAAG,IAAA,oDAAgC,EAAC,SAAS,CAAC,CAAC;IAC9D,OAAO,IAAA,6BAAgB,EAAC,SAAS,CAAC,CAAC;AACrC,CAAC,CAAC;AARW,QAAA,gBAAgB,oBAQ3B"}
|