@_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,427 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.segmentsToPath = segmentsToPath;
4
- exports.pathToSegmentIds = pathToSegmentIds;
5
- exports.encodeValueExpr = encodeValueExpr;
6
- exports.decodeValueExpr = decodeValueExpr;
7
- exports.encodeCondition = encodeCondition;
8
- exports.decodeCondition = decodeCondition;
9
- const ExpressionNode_js_1 = require("../expressions/ExpressionNode.js");
10
- const PropertyPath_js_1 = require("./PropertyPath.js");
11
- const COMPARISON_OPS = new Set([
12
- '=',
13
- '!=',
14
- '>',
15
- '>=',
16
- '<',
17
- '<=',
18
- ]);
19
- // Word-operator aliases accepted on input (LLM/human-friendly). Symbols remain
20
- // the canonical/emitted form — these normalize to a symbol on decode.
21
- const OP_ALIASES = {
22
- equals: '=',
23
- notEquals: '!=',
24
- gt: '>',
25
- gte: '>=',
26
- lt: '<',
27
- lte: '<=',
28
- };
29
- const COMBINATORS = new Set(['and', 'or', 'not']);
30
- // ---------------------------------------------------------------------------
31
- // Path helpers
32
- // ---------------------------------------------------------------------------
33
- /** PropertyShape id = `{shapeId}/{label}` (SHACL.ts), so the label is the last segment. */
34
- function labelOf(segmentIri) {
35
- const i = segmentIri.lastIndexOf('/');
36
- return i >= 0 ? segmentIri.slice(i + 1) : segmentIri;
37
- }
38
- /** Property-shape IRIs → a dotted label path. */
39
- function segmentsToPath(segmentIds) {
40
- return segmentIds.map(labelOf).join('.');
41
- }
42
- /** A dotted label path → its property-shape IRIs, resolved against `shape`. */
43
- function pathToSegmentIds(shape, path) {
44
- return (0, PropertyPath_js_1.walkPropertyPath)(shape, path).segments.map((s) => s.id);
45
- }
46
- // ---------------------------------------------------------------------------
47
- // refs merging
48
- // ---------------------------------------------------------------------------
49
- function mergeRefs(into, from) {
50
- for (const [k, v] of from)
51
- into.set(k, v);
52
- }
53
- // ---------------------------------------------------------------------------
54
- // VALUE tier
55
- // ---------------------------------------------------------------------------
56
- /** Encode an IR expression used as a value/operand into a DSL-JSON value. */
57
- function encodeValueExpr(ir, refs) {
58
- switch (ir.kind) {
59
- case 'literal_expr': {
60
- const v = ir.value;
61
- if (v instanceof Date)
62
- return { '@date': v.toISOString() };
63
- return v;
64
- }
65
- case 'reference_expr':
66
- if (ir.contextName !== undefined)
67
- return { '@ctx': ir.contextName };
68
- return { '@id': ir.value };
69
- case 'context_property_expr':
70
- return { '@ctx': ir.contextName, '@path': labelOf(ir.property) };
71
- case 'property_expr': {
72
- const segs = refs.get(ir.sourceAlias);
73
- return { '@path': segs ? segmentsToPath(segs) : labelOf(ir.property) };
74
- }
75
- case 'alias_expr': {
76
- const segs = refs.get(ir.alias);
77
- // A bare alias_expr as a value is the node at the end of the traversal.
78
- return { '@path': segs ? segmentsToPath(segs) : ir.alias };
79
- }
80
- case 'in_expr':
81
- return [
82
- ir.negated ? 'not-in' : 'in',
83
- encodeValueExpr(ir.value, refs),
84
- ...ir.source.list.map((e) => encodeValueExpr(e, refs)),
85
- ];
86
- case 'binary_expr':
87
- return [
88
- ir.operator,
89
- encodeValueExpr(ir.left, refs),
90
- encodeValueExpr(ir.right, refs),
91
- ];
92
- case 'logical_expr':
93
- return [ir.operator, ...ir.expressions.map((e) => encodeValueExpr(e, refs))];
94
- case 'not_expr':
95
- return ['not', encodeValueExpr(ir.expression, refs)];
96
- case 'function_expr':
97
- return [ir.name, ...ir.args.map((a) => encodeValueExpr(a, refs))];
98
- case 'aggregate_expr':
99
- return [ir.name, ...ir.args.map((a) => encodeValueExpr(a, refs))];
100
- default:
101
- throw new Error(`Cannot encode expression of kind '${ir.kind}'`);
102
- }
103
- }
104
- // Bound S-expr decode recursion so a deeply-nested expression from `fromJSON()`
105
- // cannot exhaust the stack (RangeError DoS). Real expressions nest a handful of
106
- // levels; 128 is far beyond any legitimate query.
107
- const MAX_EXPR_DEPTH = 128;
108
- let _exprDepth = 0;
109
- /** Decode a DSL-JSON value back into an IR expression + its placeholder refs. */
110
- function decodeValueExpr(json, shape) {
111
- if (++_exprDepth > MAX_EXPR_DEPTH) {
112
- _exprDepth = 0;
113
- throw new Error('DSL-JSON expression nested too deeply');
114
- }
115
- try {
116
- return decodeValueExprInner(json, shape);
117
- }
118
- finally {
119
- _exprDepth--;
120
- }
121
- }
122
- function decodeValueExprInner(json, shape) {
123
- // S-expr array
124
- if (Array.isArray(json)) {
125
- const [head, ...operands] = json;
126
- const refs = new Map();
127
- const args = operands.map((o) => {
128
- const { ir, refs: r } = decodeValueExpr(o, shape);
129
- mergeRefs(refs, r);
130
- return ir;
131
- });
132
- return { ir: headToIR(head, args), refs };
133
- }
134
- // Objects: recognized value-objects
135
- if (json !== null && typeof json === 'object') {
136
- const o = json;
137
- if ('@id' in o) {
138
- return { ir: { kind: 'reference_expr', value: o['@id'] }, refs: new Map() };
139
- }
140
- if ('@ctx' in o) {
141
- if (typeof o['@path'] === 'string') {
142
- const property = pathToSegmentIds(shape, o['@path']).pop();
143
- return {
144
- ir: { kind: 'context_property_expr', contextName: o['@ctx'], property },
145
- refs: new Map(),
146
- };
147
- }
148
- return { ir: { kind: 'reference_expr', contextName: o['@ctx'] }, refs: new Map() };
149
- }
150
- if ('@date' in o) {
151
- return { ir: { kind: 'literal_expr', value: new Date(o['@date']) }, refs: new Map() };
152
- }
153
- if ('@path' in o) {
154
- return propertyOrAlias(shape, o['@path']);
155
- }
156
- if ('@list' in o) {
157
- throw new Error('A {@list} value is only valid as an in/nin operand');
158
- }
159
- }
160
- // bare scalar literal
161
- return { ir: { kind: 'literal_expr', value: json }, refs: new Map() };
162
- }
163
- /**
164
- * Resolve a dotted path to its expression node:
165
- * - empty path `""` → `alias_expr` (the bare subject, e.g. `p.equals(x)`);
166
- * - any non-empty path → `property_expr` (a property access, relation or not —
167
- * `p.bestFriend.equals(x)` compares the property value, no traversal).
168
- */
169
- function propertyOrAlias(shape, path) {
170
- const node = path === ''
171
- ? (0, ExpressionNode_js_1.tracedAliasExpression)([])
172
- : (0, ExpressionNode_js_1.tracedPropertyExpression)(pathToSegmentIds(shape, path));
173
- return { ir: node.ir, refs: node._refs };
174
- }
175
- /** Build an IR node from an S-expr head symbol/name + decoded args. */
176
- function headToIR(head, args) {
177
- if (head === 'and' || head === 'or') {
178
- return { kind: 'logical_expr', operator: head, expressions: args };
179
- }
180
- if (head === 'not') {
181
- return { kind: 'not_expr', expression: args[0] };
182
- }
183
- if (head === 'in' || head === 'not-in') {
184
- return { kind: 'in_expr', negated: head === 'not-in', value: args[0], source: { list: args.slice(1) } };
185
- }
186
- if (COMPARISON_OPS.has(head) || '+-*/'.includes(head)) {
187
- return { kind: 'binary_expr', operator: head, left: args[0], right: args[1] };
188
- }
189
- if (AGGREGATES.has(head)) {
190
- return { kind: 'aggregate_expr', name: head, args };
191
- }
192
- // default: a named function (verbatim IR function name, e.g. STRLEN)
193
- return { kind: 'function_expr', name: head, args };
194
- }
195
- const AGGREGATES = new Set(['count', 'sum', 'avg', 'min', 'max']);
196
- // ---------------------------------------------------------------------------
197
- // CONDITION tier
198
- // ---------------------------------------------------------------------------
199
- /** Encode a where-clause node (boolean) into a DSL-JSON condition. */
200
- function encodeCondition(node, shape) {
201
- if (node instanceof ExpressionNode_js_1.ExistsCondition) {
202
- return encodeExists(node, shape);
203
- }
204
- return encodeBoolExpr(node.ir, node._refs, shape);
205
- }
206
- function encodeExists(ec, shape) {
207
- const rel = segmentsToPath(ec.pathSegmentIds);
208
- let quantifier;
209
- let predIr = ec.predicate.ir;
210
- const predRefs = ec.predicate._refs;
211
- if (!ec.negated) {
212
- quantifier = 'some';
213
- }
214
- else if (predIr.kind === 'not_expr') {
215
- // every(fn) was built as NOT EXISTS(NOT fn) — unwrap the inner predicate.
216
- quantifier = 'every';
217
- predIr = predIr.expression;
218
- }
219
- else {
220
- quantifier = 'none';
221
- }
222
- let base = {
223
- [`${rel}.${quantifier}`]: encodeBoolExpr(predIr, predRefs, shape),
224
- };
225
- // Fold any chained and/or conditions into nested logical combinators.
226
- for (const { op, condition } of ec.chain) {
227
- const c = encodeCondition(condition instanceof ExpressionNode_js_1.ExistsCondition ? condition : condition, shape);
228
- base = { [op]: [base, c] };
229
- }
230
- return base;
231
- }
232
- /** Encode a boolean IR expression into a DSL-JSON condition (path-keyed where possible). */
233
- function encodeBoolExpr(ir, refs, shape) {
234
- if (ir.kind === 'logical_expr') {
235
- const parts = ir.expressions.map((e) => encodeBoolExpr(e, refs, shape));
236
- if (ir.operator === 'and') {
237
- const merged = tryMergeAnd(parts);
238
- if (merged)
239
- return merged;
240
- }
241
- return { [ir.operator]: parts };
242
- }
243
- if (ir.kind === 'not_expr') {
244
- return { not: encodeBoolExpr(ir.expression, refs, shape) };
245
- }
246
- if (ir.kind === 'in_expr') {
247
- const key = pathKeyOf(ir.value, refs);
248
- if (key !== null) {
249
- const list = ir.source.list.map((e) => encodeValueExpr(e, refs));
250
- return { [key]: { [ir.negated ? 'notOneOf' : 'oneOf']: list } };
251
- }
252
- }
253
- if (ir.kind === 'binary_expr' && COMPARISON_OPS.has(ir.operator)) {
254
- const key = pathKeyOf(ir.left, refs);
255
- if (key !== null) {
256
- const value = encodeValueExpr(ir.right, refs);
257
- if (ir.operator === '=')
258
- return { [key]: value };
259
- return { [key]: { [ir.operator]: value } };
260
- }
261
- }
262
- // Fallback: S-expr (boolean expression that isn't a simple path-keyed shape).
263
- return encodeValueExpr(ir, refs);
264
- }
265
- /** A path key for a left operand that is a single property/alias/context property. */
266
- function pathKeyOf(ir, refs) {
267
- if (ir.kind === 'property_expr') {
268
- const segs = refs.get(ir.sourceAlias);
269
- return segs ? segmentsToPath(segs) : labelOf(ir.property);
270
- }
271
- if (ir.kind === 'alias_expr') {
272
- const segs = refs.get(ir.alias);
273
- return segs ? segmentsToPath(segs) : null;
274
- }
275
- if (ir.kind === 'context_property_expr') {
276
- return null; // a context property on the LHS is uncommon; use S-expr
277
- }
278
- return null;
279
- }
280
- /** Merge AND conjuncts into one path-keyed object iff all are distinct single-key path conditions. */
281
- function tryMergeAnd(parts) {
282
- const out = {};
283
- for (const p of parts) {
284
- if (Array.isArray(p) || typeof p !== 'object' || p === null)
285
- return null;
286
- const keys = Object.keys(p);
287
- if (keys.length !== 1)
288
- return null;
289
- const k = keys[0];
290
- if (COMBINATORS.has(k) || k in out)
291
- return null;
292
- out[k] = p[k];
293
- }
294
- return out;
295
- }
296
- /** Decode a DSL-JSON condition into a runtime WherePath (`{expressionNode}` | `{existsCondition}`). */
297
- function decodeCondition(json, shape) {
298
- const node = decodeConditionNode(json, shape);
299
- return node instanceof ExpressionNode_js_1.ExistsCondition
300
- ? { existsCondition: node }
301
- : { expressionNode: node };
302
- }
303
- function decodeConditionNode(json, shape) {
304
- // S-expr fallback
305
- if (Array.isArray(json)) {
306
- const { ir, refs } = decodeValueExpr(json, shape);
307
- return new ExpressionNode_js_1.ExpressionNode(ir, refs);
308
- }
309
- const o = json;
310
- const keys = Object.keys(o);
311
- // Combinators
312
- if (keys.length === 1 && COMBINATORS.has(keys[0])) {
313
- const k = keys[0];
314
- if (k === 'not') {
315
- const inner = decodeConditionNode(o.not, shape);
316
- if (inner instanceof ExpressionNode_js_1.ExistsCondition)
317
- return inner.not();
318
- return new ExpressionNode_js_1.ExpressionNode({ kind: 'not_expr', expression: inner.ir }, inner._refs);
319
- }
320
- // and / or
321
- const elems = o[k].map((c) => decodeConditionNode(c, shape));
322
- // An exists-chain: first operand is an ExistsCondition → fold the rest as its chain.
323
- if (elems[0] instanceof ExpressionNode_js_1.ExistsCondition) {
324
- let ec = elems[0];
325
- for (let i = 1; i < elems.length; i++) {
326
- ec = (k === 'and' ? ec.and(elems[i]) : ec.or(elems[i]));
327
- }
328
- return ec;
329
- }
330
- const refs = new Map();
331
- const expressions = elems.map((e) => {
332
- mergeRefs(refs, e._refs);
333
- return e.ir;
334
- });
335
- return new ExpressionNode_js_1.ExpressionNode({ kind: 'logical_expr', operator: k, expressions }, refs);
336
- }
337
- // Single quantifier key: "rel.some" | "rel.every" | "rel.none"
338
- if (keys.length === 1) {
339
- const q = matchQuantifier(keys[0]);
340
- if (q) {
341
- const predicate = expressionNodeFromCondition(o[keys[0]], shape);
342
- const segmentIds = pathToSegmentIds(shape, q.rel);
343
- if (q.kind === 'some')
344
- return new ExpressionNode_js_1.ExistsCondition(segmentIds, predicate, false);
345
- if (q.kind === 'none')
346
- return new ExpressionNode_js_1.ExistsCondition(segmentIds, predicate, true);
347
- // every(fn) = NOT EXISTS(NOT fn)
348
- return new ExpressionNode_js_1.ExistsCondition(segmentIds, new ExpressionNode_js_1.ExpressionNode({ kind: 'not_expr', expression: predicate.ir }, predicate._refs), true);
349
- }
350
- }
351
- // Path-keyed condition(s): one or more `path: value|opMap` → AND of comparisons.
352
- const refs = new Map();
353
- const comparisons = [];
354
- for (const key of keys) {
355
- const left = propertyOrAlias(shape, key);
356
- mergeRefs(refs, left.refs);
357
- const v = o[key];
358
- for (const cmp of comparisonsFor(left.ir, v, shape, refs))
359
- comparisons.push(cmp);
360
- }
361
- const ir = comparisons.length === 1
362
- ? comparisons[0]
363
- : { kind: 'logical_expr', operator: 'and', expressions: comparisons };
364
- return new ExpressionNode_js_1.ExpressionNode(ir, refs);
365
- }
366
- function comparisonsFor(left, value, shape, refs) {
367
- // Membership: { "oneOf": [...] } / { "notOneOf": [...] } → IN / NOT IN.
368
- if (value && typeof value === 'object' && !Array.isArray(value)) {
369
- const o = value;
370
- if (Array.isArray(o.oneOf) || Array.isArray(o.notOneOf)) {
371
- const negated = Array.isArray(o.notOneOf);
372
- const listRaw = (negated ? o.notOneOf : o.oneOf);
373
- const list = listRaw.map((el) => {
374
- const r = decodeValueExpr(el, shape);
375
- mergeRefs(refs, r.refs);
376
- return r.ir;
377
- });
378
- return [{ kind: 'in_expr', negated, value: left, source: { list } }];
379
- }
380
- }
381
- // operator map: { ">": 18, "<": 65 } (symbols) or { "gt": 18 } (word aliases)
382
- if (isOpMap(value)) {
383
- return Object.entries(value).map(([op, v]) => {
384
- var _a;
385
- const r = decodeValueExpr(v, shape);
386
- mergeRefs(refs, r.refs);
387
- const operator = ((_a = OP_ALIASES[op]) !== null && _a !== void 0 ? _a : op);
388
- return { kind: 'binary_expr', operator, left, right: r.ir };
389
- });
390
- }
391
- // implicit equals
392
- const r = decodeValueExpr(value, shape);
393
- mergeRefs(refs, r.refs);
394
- return [{ kind: 'binary_expr', operator: '=', left, right: r.ir }];
395
- }
396
- /** An object whose keys are all operator symbols (not a recognized value-object). */
397
- function isOpMap(value) {
398
- if (Array.isArray(value) || value === null || typeof value !== 'object')
399
- return false;
400
- const keys = Object.keys(value);
401
- if (keys.length === 0)
402
- return false;
403
- if (keys.some((k) => k === '@id' || k === '@ctx' || k === '@path' || k === '@date' || k === '@list')) {
404
- return false;
405
- }
406
- // Comparison operators (symbols) or their word aliases (`equals`/`gt`/…) form
407
- // an op-map. `in`/`nin` are handled separately (oneOf/notOneOf, see decode).
408
- return keys.every((k) => COMPARISON_OPS.has(k) || k in OP_ALIASES);
409
- }
410
- function matchQuantifier(key) {
411
- for (const kind of ['some', 'every', 'none']) {
412
- if (key.endsWith(`.${kind}`)) {
413
- return { rel: key.slice(0, -(kind.length + 1)), kind };
414
- }
415
- }
416
- return null;
417
- }
418
- /** A quantifier predicate decodes to an ExpressionNode (its inner boolean). */
419
- function expressionNodeFromCondition(json, shape) {
420
- const node = decodeConditionNode(json, shape);
421
- if (node instanceof ExpressionNode_js_1.ExistsCondition) {
422
- // Nested exists as a predicate is uncommon; wrap is not representable here.
423
- throw new Error('Nested exists inside a quantifier predicate is not supported');
424
- }
425
- return node;
426
- }
427
- //# sourceMappingURL=DslJsonExpression.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"DslJsonExpression.js","sourceRoot":"","sources":["../../../src/queries/DslJsonExpression.ts"],"names":[],"mappings":"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"}