@_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.
Files changed (246) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/lib/esm/queries/IRPipeline.d.ts +7 -1
  3. package/lib/esm/queries/IRPipeline.js +20 -6
  4. package/lib/esm/queries/IRPipeline.js.map +1 -1
  5. package/lib/esm/queries/queryDispatch.js +12 -2
  6. package/lib/esm/queries/queryDispatch.js.map +1 -1
  7. package/package.json +10 -13
  8. package/lib/cjs/collections/CoreSet.d.ts +0 -47
  9. package/lib/cjs/collections/CoreSet.js +0 -136
  10. package/lib/cjs/collections/CoreSet.js.map +0 -1
  11. package/lib/cjs/collections/ShapeSet.d.ts +0 -6
  12. package/lib/cjs/collections/ShapeSet.js +0 -20
  13. package/lib/cjs/collections/ShapeSet.js.map +0 -1
  14. package/lib/cjs/expressions/Expr.d.ts +0 -29
  15. package/lib/cjs/expressions/Expr.js +0 -80
  16. package/lib/cjs/expressions/Expr.js.map +0 -1
  17. package/lib/cjs/expressions/ExpressionMethods.d.ts +0 -85
  18. package/lib/cjs/expressions/ExpressionMethods.js +0 -3
  19. package/lib/cjs/expressions/ExpressionMethods.js.map +0 -1
  20. package/lib/cjs/expressions/ExpressionNode.d.ts +0 -144
  21. package/lib/cjs/expressions/ExpressionNode.js +0 -432
  22. package/lib/cjs/expressions/ExpressionNode.js.map +0 -1
  23. package/lib/cjs/index.d.ts +0 -29
  24. package/lib/cjs/index.js +0 -65
  25. package/lib/cjs/index.js.map +0 -1
  26. package/lib/cjs/interfaces/ICoreIterable.d.ts +0 -14
  27. package/lib/cjs/interfaces/ICoreIterable.js +0 -3
  28. package/lib/cjs/interfaces/ICoreIterable.js.map +0 -1
  29. package/lib/cjs/interfaces/IDataset.d.ts +0 -26
  30. package/lib/cjs/interfaces/IDataset.js +0 -3
  31. package/lib/cjs/interfaces/IDataset.js.map +0 -1
  32. package/lib/cjs/interfaces/IFileStore.d.ts +0 -16
  33. package/lib/cjs/interfaces/IFileStore.js +0 -3
  34. package/lib/cjs/interfaces/IFileStore.js.map +0 -1
  35. package/lib/cjs/ontologies/linked-core.d.ts +0 -15
  36. package/lib/cjs/ontologies/linked-core.js +0 -38
  37. package/lib/cjs/ontologies/linked-core.js.map +0 -1
  38. package/lib/cjs/ontologies/npm.d.ts +0 -6
  39. package/lib/cjs/ontologies/npm.js +0 -15
  40. package/lib/cjs/ontologies/npm.js.map +0 -1
  41. package/lib/cjs/ontologies/owl.d.ts +0 -14
  42. package/lib/cjs/ontologies/owl.js +0 -21
  43. package/lib/cjs/ontologies/owl.js.map +0 -1
  44. package/lib/cjs/ontologies/rdf.d.ts +0 -13
  45. package/lib/cjs/ontologies/rdf.js +0 -27
  46. package/lib/cjs/ontologies/rdf.js.map +0 -1
  47. package/lib/cjs/ontologies/rdfs.d.ts +0 -16
  48. package/lib/cjs/ontologies/rdfs.js +0 -33
  49. package/lib/cjs/ontologies/rdfs.js.map +0 -1
  50. package/lib/cjs/ontologies/shacl.d.ts +0 -103
  51. package/lib/cjs/ontologies/shacl.js +0 -152
  52. package/lib/cjs/ontologies/shacl.js.map +0 -1
  53. package/lib/cjs/ontologies/xsd.d.ts +0 -19
  54. package/lib/cjs/ontologies/xsd.js +0 -41
  55. package/lib/cjs/ontologies/xsd.js.map +0 -1
  56. package/lib/cjs/package.d.ts +0 -4
  57. package/lib/cjs/package.js +0 -6
  58. package/lib/cjs/package.js.map +0 -1
  59. package/lib/cjs/package.json +0 -9
  60. package/lib/cjs/paths/PropertyPathExpr.d.ts +0 -38
  61. package/lib/cjs/paths/PropertyPathExpr.js +0 -221
  62. package/lib/cjs/paths/PropertyPathExpr.js.map +0 -1
  63. package/lib/cjs/paths/normalizePropertyPath.d.ts +0 -23
  64. package/lib/cjs/paths/normalizePropertyPath.js +0 -75
  65. package/lib/cjs/paths/normalizePropertyPath.js.map +0 -1
  66. package/lib/cjs/paths/pathExprToSparql.d.ts +0 -14
  67. package/lib/cjs/paths/pathExprToSparql.js +0 -136
  68. package/lib/cjs/paths/pathExprToSparql.js.map +0 -1
  69. package/lib/cjs/queries/ContextRef.d.ts +0 -32
  70. package/lib/cjs/queries/ContextRef.js +0 -69
  71. package/lib/cjs/queries/ContextRef.js.map +0 -1
  72. package/lib/cjs/queries/CreateBuilder.d.ts +0 -59
  73. package/lib/cjs/queries/CreateBuilder.js +0 -138
  74. package/lib/cjs/queries/CreateBuilder.js.map +0 -1
  75. package/lib/cjs/queries/CreateQuery.d.ts +0 -20
  76. package/lib/cjs/queries/CreateQuery.js +0 -3
  77. package/lib/cjs/queries/CreateQuery.js.map +0 -1
  78. package/lib/cjs/queries/DeleteBuilder.d.ts +0 -56
  79. package/lib/cjs/queries/DeleteBuilder.js +0 -172
  80. package/lib/cjs/queries/DeleteBuilder.js.map +0 -1
  81. package/lib/cjs/queries/DeleteQuery.d.ts +0 -37
  82. package/lib/cjs/queries/DeleteQuery.js +0 -3
  83. package/lib/cjs/queries/DeleteQuery.js.map +0 -1
  84. package/lib/cjs/queries/DslJsonExpression.d.ts +0 -68
  85. package/lib/cjs/queries/DslJsonExpression.js +0 -427
  86. package/lib/cjs/queries/DslJsonExpression.js.map +0 -1
  87. package/lib/cjs/queries/FieldSet.d.ts +0 -310
  88. package/lib/cjs/queries/FieldSet.js +0 -802
  89. package/lib/cjs/queries/FieldSet.js.map +0 -1
  90. package/lib/cjs/queries/IRAliasScope.d.ts +0 -20
  91. package/lib/cjs/queries/IRAliasScope.js +0 -52
  92. package/lib/cjs/queries/IRAliasScope.js.map +0 -1
  93. package/lib/cjs/queries/IRCanonicalize.d.ts +0 -19
  94. package/lib/cjs/queries/IRCanonicalize.js +0 -19
  95. package/lib/cjs/queries/IRCanonicalize.js.map +0 -1
  96. package/lib/cjs/queries/IRDesugar.d.ts +0 -123
  97. package/lib/cjs/queries/IRDesugar.js +0 -261
  98. package/lib/cjs/queries/IRDesugar.js.map +0 -1
  99. package/lib/cjs/queries/IRLower.d.ts +0 -25
  100. package/lib/cjs/queries/IRLower.js +0 -398
  101. package/lib/cjs/queries/IRLower.js.map +0 -1
  102. package/lib/cjs/queries/IRMutation.d.ts +0 -53
  103. package/lib/cjs/queries/IRMutation.js +0 -130
  104. package/lib/cjs/queries/IRMutation.js.map +0 -1
  105. package/lib/cjs/queries/IRPipeline.d.ts +0 -8
  106. package/lib/cjs/queries/IRPipeline.js +0 -25
  107. package/lib/cjs/queries/IRPipeline.js.map +0 -1
  108. package/lib/cjs/queries/IRProjection.d.ts +0 -39
  109. package/lib/cjs/queries/IRProjection.js +0 -105
  110. package/lib/cjs/queries/IRProjection.js.map +0 -1
  111. package/lib/cjs/queries/IntermediateRepresentation.d.ts +0 -282
  112. package/lib/cjs/queries/IntermediateRepresentation.js +0 -3
  113. package/lib/cjs/queries/IntermediateRepresentation.js.map +0 -1
  114. package/lib/cjs/queries/MutationQuery.d.ts +0 -50
  115. package/lib/cjs/queries/MutationQuery.js +0 -334
  116. package/lib/cjs/queries/MutationQuery.js.map +0 -1
  117. package/lib/cjs/queries/MutationSerialization.d.ts +0 -102
  118. package/lib/cjs/queries/MutationSerialization.js +0 -207
  119. package/lib/cjs/queries/MutationSerialization.js.map +0 -1
  120. package/lib/cjs/queries/MutationThenable.d.ts +0 -18
  121. package/lib/cjs/queries/MutationThenable.js +0 -32
  122. package/lib/cjs/queries/MutationThenable.js.map +0 -1
  123. package/lib/cjs/queries/PropertyPath.d.ts +0 -38
  124. package/lib/cjs/queries/PropertyPath.js +0 -82
  125. package/lib/cjs/queries/PropertyPath.js.map +0 -1
  126. package/lib/cjs/queries/ProxiedPathBuilder.d.ts +0 -14
  127. package/lib/cjs/queries/ProxiedPathBuilder.js +0 -29
  128. package/lib/cjs/queries/ProxiedPathBuilder.js.map +0 -1
  129. package/lib/cjs/queries/QueryBuilder.d.ts +0 -193
  130. package/lib/cjs/queries/QueryBuilder.js +0 -519
  131. package/lib/cjs/queries/QueryBuilder.js.map +0 -1
  132. package/lib/cjs/queries/QueryBuilderSerialization.d.ts +0 -31
  133. package/lib/cjs/queries/QueryBuilderSerialization.js +0 -68
  134. package/lib/cjs/queries/QueryBuilderSerialization.js.map +0 -1
  135. package/lib/cjs/queries/QueryContext.d.ts +0 -50
  136. package/lib/cjs/queries/QueryContext.js +0 -147
  137. package/lib/cjs/queries/QueryContext.js.map +0 -1
  138. package/lib/cjs/queries/QueryFactory.d.ts +0 -80
  139. package/lib/cjs/queries/QueryFactory.js +0 -21
  140. package/lib/cjs/queries/QueryFactory.js.map +0 -1
  141. package/lib/cjs/queries/SelectQuery.d.ts +0 -302
  142. package/lib/cjs/queries/SelectQuery.js +0 -761
  143. package/lib/cjs/queries/SelectQuery.js.map +0 -1
  144. package/lib/cjs/queries/UpdateBuilder.d.ts +0 -69
  145. package/lib/cjs/queries/UpdateBuilder.js +0 -199
  146. package/lib/cjs/queries/UpdateBuilder.js.map +0 -1
  147. package/lib/cjs/queries/UpdateQuery.d.ts +0 -18
  148. package/lib/cjs/queries/UpdateQuery.js +0 -3
  149. package/lib/cjs/queries/UpdateQuery.js.map +0 -1
  150. package/lib/cjs/queries/fromJSON.d.ts +0 -16
  151. package/lib/cjs/queries/fromJSON.js +0 -41
  152. package/lib/cjs/queries/fromJSON.js.map +0 -1
  153. package/lib/cjs/queries/lower.d.ts +0 -28
  154. package/lib/cjs/queries/lower.js +0 -114
  155. package/lib/cjs/queries/lower.js.map +0 -1
  156. package/lib/cjs/queries/lowerMutationJSON.d.ts +0 -25
  157. package/lib/cjs/queries/lowerMutationJSON.js +0 -173
  158. package/lib/cjs/queries/lowerMutationJSON.js.map +0 -1
  159. package/lib/cjs/queries/mutationLowerSpec.d.ts +0 -32
  160. package/lib/cjs/queries/mutationLowerSpec.js +0 -8
  161. package/lib/cjs/queries/mutationLowerSpec.js.map +0 -1
  162. package/lib/cjs/queries/queryDispatch.d.ts +0 -33
  163. package/lib/cjs/queries/queryDispatch.js +0 -33
  164. package/lib/cjs/queries/queryDispatch.js.map +0 -1
  165. package/lib/cjs/queries/resolveShape.d.ts +0 -10
  166. package/lib/cjs/queries/resolveShape.js +0 -23
  167. package/lib/cjs/queries/resolveShape.js.map +0 -1
  168. package/lib/cjs/queries/wireVersion.d.ts +0 -7
  169. package/lib/cjs/queries/wireVersion.js +0 -25
  170. package/lib/cjs/queries/wireVersion.js.map +0 -1
  171. package/lib/cjs/shapes/List.d.ts +0 -35
  172. package/lib/cjs/shapes/List.js +0 -72
  173. package/lib/cjs/shapes/List.js.map +0 -1
  174. package/lib/cjs/shapes/PathNode.d.ts +0 -20
  175. package/lib/cjs/shapes/PathNode.js +0 -68
  176. package/lib/cjs/shapes/PathNode.js.map +0 -1
  177. package/lib/cjs/shapes/SHACL.d.ts +0 -300
  178. package/lib/cjs/shapes/SHACL.js +0 -612
  179. package/lib/cjs/shapes/SHACL.js.map +0 -1
  180. package/lib/cjs/shapes/Shape.d.ts +0 -74
  181. package/lib/cjs/shapes/Shape.js +0 -124
  182. package/lib/cjs/shapes/Shape.js.map +0 -1
  183. package/lib/cjs/shapes/serializePathToNodeData.d.ts +0 -24
  184. package/lib/cjs/shapes/serializePathToNodeData.js +0 -67
  185. package/lib/cjs/shapes/serializePathToNodeData.js.map +0 -1
  186. package/lib/cjs/shapes/syncShapes.d.ts +0 -38
  187. package/lib/cjs/shapes/syncShapes.js +0 -214
  188. package/lib/cjs/shapes/syncShapes.js.map +0 -1
  189. package/lib/cjs/sparql/SparqlAlgebra.d.ts +0 -190
  190. package/lib/cjs/sparql/SparqlAlgebra.js +0 -4
  191. package/lib/cjs/sparql/SparqlAlgebra.js.map +0 -1
  192. package/lib/cjs/sparql/SparqlDataset.d.ts +0 -60
  193. package/lib/cjs/sparql/SparqlDataset.js +0 -117
  194. package/lib/cjs/sparql/SparqlDataset.js.map +0 -1
  195. package/lib/cjs/sparql/algebraToString.d.ts +0 -13
  196. package/lib/cjs/sparql/algebraToString.js +0 -385
  197. package/lib/cjs/sparql/algebraToString.js.map +0 -1
  198. package/lib/cjs/sparql/index.d.ts +0 -9
  199. package/lib/cjs/sparql/index.js +0 -41
  200. package/lib/cjs/sparql/index.js.map +0 -1
  201. package/lib/cjs/sparql/irToAlgebra.d.ts +0 -79
  202. package/lib/cjs/sparql/irToAlgebra.js +0 -2042
  203. package/lib/cjs/sparql/irToAlgebra.js.map +0 -1
  204. package/lib/cjs/sparql/resultMapping.d.ts +0 -36
  205. package/lib/cjs/sparql/resultMapping.js +0 -563
  206. package/lib/cjs/sparql/resultMapping.js.map +0 -1
  207. package/lib/cjs/sparql/sparqlUtils.d.ts +0 -53
  208. package/lib/cjs/sparql/sparqlUtils.js +0 -154
  209. package/lib/cjs/sparql/sparqlUtils.js.map +0 -1
  210. package/lib/cjs/utils/LinkedErrorLogging.d.ts +0 -13
  211. package/lib/cjs/utils/LinkedErrorLogging.js +0 -22
  212. package/lib/cjs/utils/LinkedErrorLogging.js.map +0 -1
  213. package/lib/cjs/utils/LinkedFileStorage.d.ts +0 -23
  214. package/lib/cjs/utils/LinkedFileStorage.js +0 -62
  215. package/lib/cjs/utils/LinkedFileStorage.js.map +0 -1
  216. package/lib/cjs/utils/LinkedStorage.d.ts +0 -40
  217. package/lib/cjs/utils/LinkedStorage.js +0 -148
  218. package/lib/cjs/utils/LinkedStorage.js.map +0 -1
  219. package/lib/cjs/utils/NameSpace.d.ts +0 -2
  220. package/lib/cjs/utils/NameSpace.js +0 -8
  221. package/lib/cjs/utils/NameSpace.js.map +0 -1
  222. package/lib/cjs/utils/NodeReference.d.ts +0 -30
  223. package/lib/cjs/utils/NodeReference.js +0 -54
  224. package/lib/cjs/utils/NodeReference.js.map +0 -1
  225. package/lib/cjs/utils/Package.d.ts +0 -153
  226. package/lib/cjs/utils/Package.js +0 -419
  227. package/lib/cjs/utils/Package.js.map +0 -1
  228. package/lib/cjs/utils/Prefix.d.ts +0 -22
  229. package/lib/cjs/utils/Prefix.js +0 -104
  230. package/lib/cjs/utils/Prefix.js.map +0 -1
  231. package/lib/cjs/utils/ShapeClass.d.ts +0 -30
  232. package/lib/cjs/utils/ShapeClass.js +0 -180
  233. package/lib/cjs/utils/ShapeClass.js.map +0 -1
  234. package/lib/cjs/utils/URI.d.ts +0 -18
  235. package/lib/cjs/utils/URI.js +0 -42
  236. package/lib/cjs/utils/URI.js.map +0 -1
  237. package/lib/cjs/utils/cached.d.ts +0 -14
  238. package/lib/cjs/utils/cached.js +0 -71
  239. package/lib/cjs/utils/cached.js.map +0 -1
  240. package/lib/cjs/utils/loadStores.d.ts +0 -34
  241. package/lib/cjs/utils/loadStores.js +0 -105
  242. package/lib/cjs/utils/loadStores.js.map +0 -1
  243. package/lib/cjs/utils/parseDatasetsConfig.d.ts +0 -49
  244. package/lib/cjs/utils/parseDatasetsConfig.js +0 -110
  245. package/lib/cjs/utils/parseDatasetsConfig.js.map +0 -1
  246. 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"}