@_linked/core 2.11.1 → 2.12.0-next.20260706124424

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 (267) hide show
  1. package/CHANGELOG.md +39 -0
  2. package/README.md +3 -3
  3. package/lib/cjs/expressions/Expr.d.ts +22 -51
  4. package/lib/cjs/expressions/Expr.js +24 -176
  5. package/lib/cjs/expressions/Expr.js.map +1 -1
  6. package/lib/cjs/expressions/ExpressionMethods.d.ts +4 -0
  7. package/lib/cjs/expressions/ExpressionNode.d.ts +4 -0
  8. package/lib/cjs/expressions/ExpressionNode.js +13 -0
  9. package/lib/cjs/expressions/ExpressionNode.js.map +1 -1
  10. package/lib/cjs/index.d.ts +2 -2
  11. package/lib/cjs/index.js +6 -138
  12. package/lib/cjs/index.js.map +1 -1
  13. package/lib/cjs/interfaces/ICoreIterable.d.ts +1 -1
  14. package/lib/cjs/package.d.ts +2 -2
  15. package/lib/cjs/queries/ContextRef.d.ts +15 -4
  16. package/lib/cjs/queries/ContextRef.js +15 -4
  17. package/lib/cjs/queries/ContextRef.js.map +1 -1
  18. package/lib/cjs/queries/CreateBuilder.d.ts +3 -5
  19. package/lib/cjs/queries/CreateBuilder.js +4 -16
  20. package/lib/cjs/queries/CreateBuilder.js.map +1 -1
  21. package/lib/cjs/queries/DeleteBuilder.d.ts +3 -5
  22. package/lib/cjs/queries/DeleteBuilder.js +8 -20
  23. package/lib/cjs/queries/DeleteBuilder.js.map +1 -1
  24. package/lib/cjs/queries/DslJsonExpression.d.ts +8 -8
  25. package/lib/cjs/queries/DslJsonExpression.js +84 -26
  26. package/lib/cjs/queries/DslJsonExpression.js.map +1 -1
  27. package/lib/cjs/queries/FieldSet.d.ts +43 -14
  28. package/lib/cjs/queries/FieldSet.js +142 -77
  29. package/lib/cjs/queries/FieldSet.js.map +1 -1
  30. package/lib/cjs/queries/IRCanonicalize.d.ts +5 -9
  31. package/lib/cjs/queries/IRCanonicalize.js +7 -23
  32. package/lib/cjs/queries/IRCanonicalize.js.map +1 -1
  33. package/lib/cjs/queries/IRDesugar.d.ts +2 -1
  34. package/lib/cjs/queries/IRDesugar.js +1 -1
  35. package/lib/cjs/queries/IRDesugar.js.map +1 -1
  36. package/lib/cjs/queries/IRLower.js +7 -7
  37. package/lib/cjs/queries/IRLower.js.map +1 -1
  38. package/lib/cjs/queries/IntermediateRepresentation.d.ts +16 -2
  39. package/lib/cjs/queries/MutationQuery.d.ts +18 -1
  40. package/lib/cjs/queries/MutationQuery.js +83 -3
  41. package/lib/cjs/queries/MutationQuery.js.map +1 -1
  42. package/lib/cjs/queries/MutationSerialization.d.ts +11 -11
  43. package/lib/cjs/queries/MutationSerialization.js +51 -31
  44. package/lib/cjs/queries/MutationSerialization.js.map +1 -1
  45. package/lib/cjs/queries/MutationThenable.d.ts +18 -0
  46. package/lib/cjs/queries/MutationThenable.js +32 -0
  47. package/lib/cjs/queries/MutationThenable.js.map +1 -0
  48. package/lib/cjs/queries/QueryBuilder.d.ts +1 -1
  49. package/lib/cjs/queries/QueryBuilder.js +3 -3
  50. package/lib/cjs/queries/QueryBuilder.js.map +1 -1
  51. package/lib/cjs/queries/QueryBuilderSerialization.js +3 -4
  52. package/lib/cjs/queries/QueryBuilderSerialization.js.map +1 -1
  53. package/lib/cjs/queries/QueryContext.d.ts +1 -1
  54. package/lib/cjs/queries/QueryContext.js +7 -5
  55. package/lib/cjs/queries/QueryContext.js.map +1 -1
  56. package/lib/cjs/queries/QueryFactory.d.ts +0 -7
  57. package/lib/cjs/queries/QueryFactory.js +1 -20
  58. package/lib/cjs/queries/QueryFactory.js.map +1 -1
  59. package/lib/cjs/queries/SelectQuery.d.ts +19 -41
  60. package/lib/cjs/queries/SelectQuery.js +69 -118
  61. package/lib/cjs/queries/SelectQuery.js.map +1 -1
  62. package/lib/cjs/queries/UpdateBuilder.d.ts +3 -5
  63. package/lib/cjs/queries/UpdateBuilder.js +5 -17
  64. package/lib/cjs/queries/UpdateBuilder.js.map +1 -1
  65. package/lib/cjs/queries/lower.js +3 -4
  66. package/lib/cjs/queries/lower.js.map +1 -1
  67. package/lib/cjs/queries/lowerMutationJSON.js +39 -23
  68. package/lib/cjs/queries/lowerMutationJSON.js.map +1 -1
  69. package/lib/cjs/shapes/List.js +2 -9
  70. package/lib/cjs/shapes/List.js.map +1 -1
  71. package/lib/cjs/shapes/PathNode.js +5 -18
  72. package/lib/cjs/shapes/PathNode.js.map +1 -1
  73. package/lib/cjs/shapes/SHACL.d.ts +10 -0
  74. package/lib/cjs/shapes/SHACL.js +41 -0
  75. package/lib/cjs/shapes/SHACL.js.map +1 -1
  76. package/lib/cjs/shapes/Shape.d.ts +1 -1
  77. package/lib/cjs/shapes/Shape.js.map +1 -1
  78. package/lib/cjs/shapes/serializePathToNodeData.js +16 -0
  79. package/lib/cjs/shapes/serializePathToNodeData.js.map +1 -1
  80. package/lib/cjs/shapes/syncShapes.js +15 -0
  81. package/lib/cjs/shapes/syncShapes.js.map +1 -1
  82. package/lib/cjs/sparql/SparqlAlgebra.d.ts +8 -1
  83. package/lib/cjs/sparql/algebraToString.js +57 -11
  84. package/lib/cjs/sparql/algebraToString.js.map +1 -1
  85. package/lib/cjs/sparql/irToAlgebra.js +89 -31
  86. package/lib/cjs/sparql/irToAlgebra.js.map +1 -1
  87. package/lib/cjs/sparql/resultMapping.js +0 -11
  88. package/lib/cjs/sparql/resultMapping.js.map +1 -1
  89. package/lib/cjs/sparql/sparqlUtils.d.ts +21 -0
  90. package/lib/cjs/sparql/sparqlUtils.js +65 -0
  91. package/lib/cjs/sparql/sparqlUtils.js.map +1 -1
  92. package/lib/cjs/utils/LinkedStorage.d.ts +1 -2
  93. package/lib/cjs/utils/LinkedStorage.js +1 -2
  94. package/lib/cjs/utils/LinkedStorage.js.map +1 -1
  95. package/lib/cjs/utils/Package.js +11 -4
  96. package/lib/cjs/utils/Package.js.map +1 -1
  97. package/lib/cjs/utils/Prefix.d.ts +4 -5
  98. package/lib/cjs/utils/Prefix.js +13 -7
  99. package/lib/cjs/utils/Prefix.js.map +1 -1
  100. package/lib/cjs/utils/ShapeClass.d.ts +0 -11
  101. package/lib/cjs/utils/ShapeClass.js +0 -83
  102. package/lib/cjs/utils/ShapeClass.js.map +1 -1
  103. package/lib/cjs/utils/cached.d.ts +3 -0
  104. package/lib/cjs/utils/cached.js +26 -16
  105. package/lib/cjs/utils/cached.js.map +1 -1
  106. package/lib/cjs/utils/loadStores.js +4 -0
  107. package/lib/cjs/utils/loadStores.js.map +1 -1
  108. package/lib/esm/expressions/Expr.d.ts +22 -51
  109. package/lib/esm/expressions/Expr.js +24 -176
  110. package/lib/esm/expressions/Expr.js.map +1 -1
  111. package/lib/esm/expressions/ExpressionMethods.d.ts +4 -0
  112. package/lib/esm/expressions/ExpressionNode.d.ts +4 -0
  113. package/lib/esm/expressions/ExpressionNode.js +13 -0
  114. package/lib/esm/expressions/ExpressionNode.js.map +1 -1
  115. package/lib/esm/index.d.ts +2 -2
  116. package/lib/esm/index.js +3 -103
  117. package/lib/esm/index.js.map +1 -1
  118. package/lib/esm/interfaces/ICoreIterable.d.ts +1 -1
  119. package/lib/esm/package.d.ts +2 -2
  120. package/lib/esm/queries/ContextRef.d.ts +15 -4
  121. package/lib/esm/queries/ContextRef.js +15 -4
  122. package/lib/esm/queries/ContextRef.js.map +1 -1
  123. package/lib/esm/queries/CreateBuilder.d.ts +3 -5
  124. package/lib/esm/queries/CreateBuilder.js +4 -16
  125. package/lib/esm/queries/CreateBuilder.js.map +1 -1
  126. package/lib/esm/queries/DeleteBuilder.d.ts +3 -5
  127. package/lib/esm/queries/DeleteBuilder.js +8 -20
  128. package/lib/esm/queries/DeleteBuilder.js.map +1 -1
  129. package/lib/esm/queries/DslJsonExpression.d.ts +8 -8
  130. package/lib/esm/queries/DslJsonExpression.js +84 -26
  131. package/lib/esm/queries/DslJsonExpression.js.map +1 -1
  132. package/lib/esm/queries/FieldSet.d.ts +43 -14
  133. package/lib/esm/queries/FieldSet.js +142 -77
  134. package/lib/esm/queries/FieldSet.js.map +1 -1
  135. package/lib/esm/queries/IRCanonicalize.d.ts +5 -9
  136. package/lib/esm/queries/IRCanonicalize.js +6 -21
  137. package/lib/esm/queries/IRCanonicalize.js.map +1 -1
  138. package/lib/esm/queries/IRDesugar.d.ts +2 -1
  139. package/lib/esm/queries/IRDesugar.js +1 -1
  140. package/lib/esm/queries/IRDesugar.js.map +1 -1
  141. package/lib/esm/queries/IRLower.js +7 -7
  142. package/lib/esm/queries/IRLower.js.map +1 -1
  143. package/lib/esm/queries/IntermediateRepresentation.d.ts +16 -2
  144. package/lib/esm/queries/MutationQuery.d.ts +18 -1
  145. package/lib/esm/queries/MutationQuery.js +83 -3
  146. package/lib/esm/queries/MutationQuery.js.map +1 -1
  147. package/lib/esm/queries/MutationSerialization.d.ts +11 -11
  148. package/lib/esm/queries/MutationSerialization.js +51 -31
  149. package/lib/esm/queries/MutationSerialization.js.map +1 -1
  150. package/lib/esm/queries/MutationThenable.d.ts +18 -0
  151. package/lib/esm/queries/MutationThenable.js +28 -0
  152. package/lib/esm/queries/MutationThenable.js.map +1 -0
  153. package/lib/esm/queries/QueryBuilder.d.ts +1 -1
  154. package/lib/esm/queries/QueryBuilder.js +3 -3
  155. package/lib/esm/queries/QueryBuilder.js.map +1 -1
  156. package/lib/esm/queries/QueryBuilderSerialization.js +3 -4
  157. package/lib/esm/queries/QueryBuilderSerialization.js.map +1 -1
  158. package/lib/esm/queries/QueryContext.d.ts +1 -1
  159. package/lib/esm/queries/QueryContext.js +7 -5
  160. package/lib/esm/queries/QueryContext.js.map +1 -1
  161. package/lib/esm/queries/QueryFactory.d.ts +0 -7
  162. package/lib/esm/queries/QueryFactory.js +1 -19
  163. package/lib/esm/queries/QueryFactory.js.map +1 -1
  164. package/lib/esm/queries/SelectQuery.d.ts +19 -41
  165. package/lib/esm/queries/SelectQuery.js +69 -118
  166. package/lib/esm/queries/SelectQuery.js.map +1 -1
  167. package/lib/esm/queries/UpdateBuilder.d.ts +3 -5
  168. package/lib/esm/queries/UpdateBuilder.js +5 -17
  169. package/lib/esm/queries/UpdateBuilder.js.map +1 -1
  170. package/lib/esm/queries/lower.js +3 -4
  171. package/lib/esm/queries/lower.js.map +1 -1
  172. package/lib/esm/queries/lowerMutationJSON.js +39 -23
  173. package/lib/esm/queries/lowerMutationJSON.js.map +1 -1
  174. package/lib/esm/shapes/List.js +2 -9
  175. package/lib/esm/shapes/List.js.map +1 -1
  176. package/lib/esm/shapes/PathNode.js +5 -18
  177. package/lib/esm/shapes/PathNode.js.map +1 -1
  178. package/lib/esm/shapes/SHACL.d.ts +10 -0
  179. package/lib/esm/shapes/SHACL.js +41 -0
  180. package/lib/esm/shapes/SHACL.js.map +1 -1
  181. package/lib/esm/shapes/Shape.d.ts +1 -1
  182. package/lib/esm/shapes/Shape.js.map +1 -1
  183. package/lib/esm/shapes/serializePathToNodeData.js +16 -0
  184. package/lib/esm/shapes/serializePathToNodeData.js.map +1 -1
  185. package/lib/esm/shapes/syncShapes.js +15 -0
  186. package/lib/esm/shapes/syncShapes.js.map +1 -1
  187. package/lib/esm/sparql/SparqlAlgebra.d.ts +8 -1
  188. package/lib/esm/sparql/algebraToString.js +58 -12
  189. package/lib/esm/sparql/algebraToString.js.map +1 -1
  190. package/lib/esm/sparql/irToAlgebra.js +89 -31
  191. package/lib/esm/sparql/irToAlgebra.js.map +1 -1
  192. package/lib/esm/sparql/resultMapping.js +0 -11
  193. package/lib/esm/sparql/resultMapping.js.map +1 -1
  194. package/lib/esm/sparql/sparqlUtils.d.ts +21 -0
  195. package/lib/esm/sparql/sparqlUtils.js +62 -0
  196. package/lib/esm/sparql/sparqlUtils.js.map +1 -1
  197. package/lib/esm/utils/LinkedStorage.d.ts +1 -2
  198. package/lib/esm/utils/LinkedStorage.js +1 -2
  199. package/lib/esm/utils/LinkedStorage.js.map +1 -1
  200. package/lib/esm/utils/Package.js +11 -4
  201. package/lib/esm/utils/Package.js.map +1 -1
  202. package/lib/esm/utils/Prefix.d.ts +4 -5
  203. package/lib/esm/utils/Prefix.js +13 -7
  204. package/lib/esm/utils/Prefix.js.map +1 -1
  205. package/lib/esm/utils/ShapeClass.d.ts +0 -11
  206. package/lib/esm/utils/ShapeClass.js +0 -79
  207. package/lib/esm/utils/ShapeClass.js.map +1 -1
  208. package/lib/esm/utils/cached.d.ts +3 -0
  209. package/lib/esm/utils/cached.js +26 -16
  210. package/lib/esm/utils/cached.js.map +1 -1
  211. package/lib/esm/utils/loadStores.js +4 -0
  212. package/lib/esm/utils/loadStores.js.map +1 -1
  213. package/package.json +9 -3
  214. package/lib/cjs/collections/CoreMap.d.ts +0 -37
  215. package/lib/cjs/collections/CoreMap.js +0 -101
  216. package/lib/cjs/collections/CoreMap.js.map +0 -1
  217. package/lib/cjs/paths/serializePathToSHACL.d.ts +0 -22
  218. package/lib/cjs/paths/serializePathToSHACL.js +0 -126
  219. package/lib/cjs/paths/serializePathToSHACL.js.map +0 -1
  220. package/lib/cjs/queries/WhereCondition.d.ts +0 -18
  221. package/lib/cjs/queries/WhereCondition.js +0 -3
  222. package/lib/cjs/queries/WhereCondition.js.map +0 -1
  223. package/lib/cjs/test-helpers/FusekiStore.d.ts +0 -29
  224. package/lib/cjs/test-helpers/FusekiStore.js +0 -85
  225. package/lib/cjs/test-helpers/FusekiStore.js.map +0 -1
  226. package/lib/cjs/test-helpers/fuseki-test-store.d.ts +0 -46
  227. package/lib/cjs/test-helpers/fuseki-test-store.js +0 -244
  228. package/lib/cjs/test-helpers/fuseki-test-store.js.map +0 -1
  229. package/lib/cjs/test-helpers/query-capture-store.d.ts +0 -11
  230. package/lib/cjs/test-helpers/query-capture-store.js +0 -109
  231. package/lib/cjs/test-helpers/query-capture-store.js.map +0 -1
  232. package/lib/cjs/test-helpers/query-fixtures.d.ts +0 -819
  233. package/lib/cjs/test-helpers/query-fixtures.js +0 -605
  234. package/lib/cjs/test-helpers/query-fixtures.js.map +0 -1
  235. package/lib/cjs/test-helpers/test-utils.d.ts +0 -18
  236. package/lib/cjs/test-helpers/test-utils.js +0 -47
  237. package/lib/cjs/test-helpers/test-utils.js.map +0 -1
  238. package/lib/cjs/utils/Types.d.ts +0 -11
  239. package/lib/cjs/utils/Types.js +0 -3
  240. package/lib/cjs/utils/Types.js.map +0 -1
  241. package/lib/esm/collections/CoreMap.d.ts +0 -37
  242. package/lib/esm/collections/CoreMap.js +0 -97
  243. package/lib/esm/collections/CoreMap.js.map +0 -1
  244. package/lib/esm/paths/serializePathToSHACL.d.ts +0 -22
  245. package/lib/esm/paths/serializePathToSHACL.js +0 -122
  246. package/lib/esm/paths/serializePathToSHACL.js.map +0 -1
  247. package/lib/esm/queries/WhereCondition.d.ts +0 -18
  248. package/lib/esm/queries/WhereCondition.js +0 -2
  249. package/lib/esm/queries/WhereCondition.js.map +0 -1
  250. package/lib/esm/test-helpers/FusekiStore.d.ts +0 -29
  251. package/lib/esm/test-helpers/FusekiStore.js +0 -81
  252. package/lib/esm/test-helpers/FusekiStore.js.map +0 -1
  253. package/lib/esm/test-helpers/fuseki-test-store.d.ts +0 -46
  254. package/lib/esm/test-helpers/fuseki-test-store.js +0 -232
  255. package/lib/esm/test-helpers/fuseki-test-store.js.map +0 -1
  256. package/lib/esm/test-helpers/query-capture-store.d.ts +0 -11
  257. package/lib/esm/test-helpers/query-capture-store.js +0 -71
  258. package/lib/esm/test-helpers/query-capture-store.js.map +0 -1
  259. package/lib/esm/test-helpers/query-fixtures.d.ts +0 -819
  260. package/lib/esm/test-helpers/query-fixtures.js +0 -602
  261. package/lib/esm/test-helpers/query-fixtures.js.map +0 -1
  262. package/lib/esm/test-helpers/test-utils.d.ts +0 -18
  263. package/lib/esm/test-helpers/test-utils.js +0 -41
  264. package/lib/esm/test-helpers/test-utils.js.map +0 -1
  265. package/lib/esm/utils/Types.d.ts +0 -11
  266. package/lib/esm/utils/Types.js +0 -2
  267. package/lib/esm/utils/Types.js.map +0 -1
@@ -79,7 +79,21 @@ export type IRMinusPattern = {
79
79
  pattern: IRGraphPattern;
80
80
  filter?: IRExpression;
81
81
  };
82
- export type IRExpression = IRLiteralExpression | IRReferenceExpression | IRAliasExpression | IRPropertyExpression | IRContextPropertyExpression | IRBinaryExpression | IRLogicalExpression | IRNotExpression | IRFunctionExpression | IRAggregateExpression | IRExistsExpression;
82
+ export type IRExpression = IRLiteralExpression | IRReferenceExpression | IRAliasExpression | IRPropertyExpression | IRContextPropertyExpression | IRBinaryExpression | IRLogicalExpression | IRNotExpression | IRFunctionExpression | IRAggregateExpression | IRExistsExpression | IRInExpression;
83
+ /**
84
+ * Membership test — `value IN (…)` / `NOT IN (…)`.
85
+ * `source` is forward-shaped: today only the explicit-`list` arm exists (Rung 1);
86
+ * a `{query}` arm (Rung 2 — membership against a subquery, lowering to EXISTS)
87
+ * can be added without changing the node's identity or the `oneOf`/`notOneOf` DSL.
88
+ */
89
+ export type IRInExpression = {
90
+ kind: 'in_expr';
91
+ negated: boolean;
92
+ value: IRExpression;
93
+ source: {
94
+ list: IRExpression[];
95
+ };
96
+ };
83
97
  export type IRLiteralExpression = {
84
98
  kind: 'literal_expr';
85
99
  value: IRValue;
@@ -89,7 +103,7 @@ export type IRReferenceExpression = {
89
103
  /** The referenced node IRI. Optional only while a `contextName` is unresolved. */
90
104
  value?: string;
91
105
  /**
92
- * A query-context reference (`{$ctx}` on the wire). When set, `value` is filled
106
+ * A query-context reference (`{@ctx}` on the wire). When set, `value` is filled
93
107
  * by `lower()` from the live context map — resolved or thrown there, never baked
94
108
  * at build time. Absent for a plain node reference.
95
109
  */
@@ -14,13 +14,30 @@ export declare class MutationQueryFactory extends QueryFactory {
14
14
  /** Normalize delete ids (strings / `{id}`) to `NodeReferenceValue[]` (IR-free). */
15
15
  normalizeNodeRefs(ids: NodeId[] | NodeId): NodeReferenceValue[];
16
16
  protected convertUpdateObject(obj: any, shape: NodeShape, allowTopLevelId?: boolean): NodeDescriptionValue;
17
- protected isSetModification(obj: any, shape: any): any;
17
+ protected isSetModification(obj: any, shape: any): boolean;
18
18
  protected convertSetModification(obj: SetModification<any>, shape: PropertyShape): SetModificationValue;
19
19
  protected convertSetRemoveValue(obj: UpdatePartial | UpdatePartial[], shape: PropertyShape): NodeReferenceValue[];
20
20
  protected convertSetAddValue(obj: UpdatePartial | UpdatePartial[], shape: PropertyShape): UpdatePartial[];
21
21
  protected convertSingleRemoveValue(value: any, shape: PropertyShape): NodeReferenceValue;
22
22
  protected convertNodeDescription(inputObj: Record<string, unknown>, shape: NodeShape): NodeDescriptionValue;
23
23
  protected createNodePropertyValue(value: any, propShape: PropertyShape): UpdateNodePropertyValue;
24
+ /**
25
+ * Lightweight structural validation of a single property value against its
26
+ * PropertyShape — cardinality (`minCount`/`maxCount`) and node-kind (literal
27
+ * vs relation). This is *structural* only (from metadata already in hand); it
28
+ * does not duplicate datatype/deep validation, which the store performs. It
29
+ * fails fast at the call site with a clear message instead of surfacing a
30
+ * confusing store error later.
31
+ *
32
+ * Skips values whose final shape isn't known here: computed expressions,
33
+ * context refs, `unset` (null/undefined), and set-modifications (`{add,remove}`
34
+ * — the resulting count depends on the node's current state).
35
+ */
36
+ protected validateAgainstShape(value: any, propShape: PropertyShape): void;
37
+ /** True when the property clearly accepts only literal values. */
38
+ private expectsLiteral;
39
+ /** True when the property clearly accepts only nodes (IRIs/blank nodes). */
40
+ private expectsNode;
24
41
  protected convertUpdateValue(value: any, propShape?: PropertyShape, allowArrays?: boolean): PropUpdateValue;
25
42
  protected isNodeReference(obj: any): obj is NodeReferenceValue;
26
43
  protected convertNodeReferences(input: NodeId[] | NodeId): NodeReferenceValue[];
@@ -3,6 +3,7 @@ import { getShapeClass } from '../utils/ShapeClass.js';
3
3
  import { isExpressionNode } from '../expressions/ExpressionNode.js';
4
4
  import { createProxiedPathBuilder } from './ProxiedPathBuilder.js';
5
5
  import { asContextRef } from './QueryContext.js';
6
+ import { shacl } from '../ontologies/shacl.js';
6
7
  export class MutationQueryFactory extends QueryFactory {
7
8
  /**
8
9
  * Normalize raw create/update data into a {@link NodeDescriptionValue} — the
@@ -45,7 +46,11 @@ export class MutationQueryFactory extends QueryFactory {
45
46
  let hasRemove = obj.remove;
46
47
  let numKeysExpected = (hasAdd ? 1 : 0) + (hasRemove ? 1 : 0);
47
48
  let numKeys = Object.getOwnPropertyNames(obj).length;
48
- return hasAdd || (hasRemove && numKeysExpected === numKeys);
49
+ // A set modification is ONLY add/remove keys. Mixing them with other keys
50
+ // (e.g. {add:[…], name:'x'}) must NOT be silently treated as a set mod —
51
+ // that dropped the sibling fields. Require an exact key-count match for
52
+ // both add and remove (mirrors isSetModificationValue).
53
+ return (hasAdd || hasRemove) && numKeysExpected === numKeys;
49
54
  }
50
55
  convertSetModification(obj, shape) {
51
56
  if (!obj.add && !obj.remove) {
@@ -127,12 +132,87 @@ export class MutationQueryFactory extends QueryFactory {
127
132
  return res;
128
133
  }
129
134
  createNodePropertyValue(value, propShape) {
130
- // let value = obj[propShape.label];
135
+ this.validateAgainstShape(value, propShape);
131
136
  return {
132
137
  prop: propShape,
133
138
  val: this.convertUpdateValue(value, propShape),
134
139
  };
135
140
  }
141
+ /**
142
+ * Lightweight structural validation of a single property value against its
143
+ * PropertyShape — cardinality (`minCount`/`maxCount`) and node-kind (literal
144
+ * vs relation). This is *structural* only (from metadata already in hand); it
145
+ * does not duplicate datatype/deep validation, which the store performs. It
146
+ * fails fast at the call site with a clear message instead of surfacing a
147
+ * confusing store error later.
148
+ *
149
+ * Skips values whose final shape isn't known here: computed expressions,
150
+ * context refs, `unset` (null/undefined), and set-modifications (`{add,remove}`
151
+ * — the resulting count depends on the node's current state).
152
+ */
153
+ validateAgainstShape(value, propShape) {
154
+ // A `null` value clears the property. Clearing a required (minCount>=1)
155
+ // property is a cardinality violation — the same as providing zero values —
156
+ // so it is rejected exactly like an empty array (both spellings of "clear
157
+ // it" behave identically).
158
+ if (value === null) {
159
+ if (typeof propShape.minCount === 'number' && propShape.minCount > 0) {
160
+ throw new Error(`Property '${propShape.label || propShape.id}' requires at least ${propShape.minCount} value(s) and cannot be cleared.`);
161
+ }
162
+ return;
163
+ }
164
+ if (value === undefined ||
165
+ isExpressionNode(value) ||
166
+ asContextRef(value) ||
167
+ (typeof value === 'function') ||
168
+ (typeof value === 'object' && this.isSetModification(value, propShape))) {
169
+ return;
170
+ }
171
+ const label = propShape.label || propShape.id;
172
+ const elems = Array.isArray(value) ? value : [value];
173
+ const count = elems.length;
174
+ // --- cardinality ---
175
+ if (typeof propShape.maxCount === 'number' && count > propShape.maxCount) {
176
+ throw new Error(`Property '${label}' allows at most ${propShape.maxCount} value(s), but ${count} were provided.`);
177
+ }
178
+ if (typeof propShape.minCount === 'number' && propShape.minCount > 0 && count < propShape.minCount) {
179
+ throw new Error(`Property '${label}' requires at least ${propShape.minCount} value(s), but ${count} were provided.`);
180
+ }
181
+ // --- node kind: literal vs relation ---
182
+ const expectsLiteral = this.expectsLiteral(propShape);
183
+ const expectsNode = this.expectsNode(propShape);
184
+ if (!expectsLiteral && !expectsNode)
185
+ return; // ambiguous/unspecified kind — don't enforce
186
+ for (const el of elems) {
187
+ if (el === null || el === undefined || isExpressionNode(el) || asContextRef(el))
188
+ continue;
189
+ const isScalar = typeof el === 'string' ||
190
+ typeof el === 'number' ||
191
+ typeof el === 'boolean' ||
192
+ el instanceof Date;
193
+ if (expectsLiteral && !isScalar) {
194
+ throw new Error(`Property '${label}' is a literal property but was given a ${typeof el === 'object' ? 'node/object' : typeof el} value.`);
195
+ }
196
+ if (expectsNode && isScalar) {
197
+ throw new Error(`Property '${label}' is a relation (object) property but was given a literal (${typeof el}). Provide a {id} reference or a nested object.`);
198
+ }
199
+ }
200
+ }
201
+ /** True when the property clearly accepts only literal values. */
202
+ expectsLiteral(ps) {
203
+ if (ps.nodeKind)
204
+ return ps.nodeKind.id === shacl.Literal.id;
205
+ return !!ps.datatype && !ps.valueShape;
206
+ }
207
+ /** True when the property clearly accepts only nodes (IRIs/blank nodes). */
208
+ expectsNode(ps) {
209
+ if (ps.nodeKind) {
210
+ return (ps.nodeKind.id === shacl.IRI.id ||
211
+ ps.nodeKind.id === shacl.BlankNode.id ||
212
+ ps.nodeKind.id === shacl.BlankNodeOrIRI.id);
213
+ }
214
+ return !!ps.valueShape;
215
+ }
136
216
  convertUpdateValue(value, propShape, allowArrays = true) {
137
217
  // ExpressionNode → pass through as-is (will be converted to IRExpression by IRMutation)
138
218
  if (isExpressionNode(value)) {
@@ -140,7 +220,7 @@ export class MutationQueryFactory extends QueryFactory {
140
220
  }
141
221
  // Query-context reference → preserve the live ref (do NOT collapse to {id},
142
222
  // which would read an unresolved `.id` as undefined). Handles both an unset
143
- // PendingQueryContext and a resolved context shape; both serialize as a {$ctx}
223
+ // PendingQueryContext and a resolved context shape; both serialize as a {@ctx}
144
224
  // marker and are resolved — or throw — at lowering time.
145
225
  {
146
226
  const ctx = asContextRef(value);
@@ -1 +1 @@
1
- {"version":3,"file":"MutationQuery.js","sourceRoot":"","sources":["../../../src/queries/MutationQuery.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"MutationQuery.js","sourceRoot":"","sources":["../../../src/queries/MutationQuery.ts"],"names":[],"mappings":"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"}
@@ -11,8 +11,8 @@
11
11
  *
12
12
  * Values use the DSL-JSON grammar (documentation/dsl-json.md): a bare scalar is a
13
13
  * literal; objects tag the kinds `JSON.stringify` can't represent natively
14
- * (`{date}`, `{id}`, `{$ctx}`, `{list}`, `{node}`, `{add,remove}`, `{unset}`);
15
- * and a computed value is an S-expr array via the shared `DslJsonExpression` codec —
14
+ * (`{@date}`, `{@id}`, `{@ctx}`, `{@list}`, `{@add,@remove}`, `{@unset}`); and a
15
+ * computed value is an S-expr array via the shared `DslJsonExpression` codec —
16
16
  * so the wire carries no IR.
17
17
  */
18
18
  import { type NodeDescriptionValue, type PropUpdateValue } from './QueryFactory.js';
@@ -22,23 +22,23 @@ import type { NodeShape, PropertyShape } from '../shapes/SHACL.js';
22
22
  import { type DslJsonValue } from './DslJsonExpression.js';
23
23
  /**
24
24
  * A mutation field value in the DSL-JSON grammar. A bare scalar is a literal; objects
25
- * tag the non-JSON-native kinds; a computed value is an S-expr array (no IR); a
25
+ * tag the non-JSON-native kinds (`@`-sigiled); a computed value is an S-expr array (no IR); a
26
26
  * nested-node create is a bare path-keyed object ({@link MutationNodeDataJSON}),
27
27
  * disambiguated from the tagged forms by having no reserved value-key.
28
28
  */
29
29
  export type MutationValueJSON = string | number | boolean | null | {
30
- date: string;
30
+ '@date': string;
31
31
  } | {
32
- id: string;
32
+ '@id': string;
33
33
  } | {
34
- $ctx: string;
34
+ '@ctx': string;
35
35
  } | {
36
- list: MutationValueJSON[];
36
+ '@list': MutationValueJSON[];
37
37
  } | {
38
- add?: MutationValueJSON[];
39
- remove?: string[];
38
+ '@add'?: MutationValueJSON[];
39
+ '@remove'?: string[];
40
40
  } | {
41
- unset: true;
41
+ '@unset': true;
42
42
  } | MutationNodeDataJSON | DslJsonValue;
43
43
  /**
44
44
  * A node description in **path-keyed** form: `label → value`, plus two reserved
@@ -60,7 +60,7 @@ export type UpdateMutationJSON = {
60
60
  op: 'update';
61
61
  shape: string;
62
62
  mode: 'for' | 'forAll' | 'where';
63
- /** A node id, or a `{$ctx: name}` context reference resolved at lowering. */
63
+ /** A node id, or a `{@ctx: name}` context reference resolved at lowering. */
64
64
  targetId?: string | ContextRefJSON;
65
65
  where?: WherePathJSON;
66
66
  data: MutationNodeDataJSON;
@@ -16,8 +16,8 @@
16
16
  *
17
17
  * Values use the DSL-JSON grammar (documentation/dsl-json.md): a bare scalar is a
18
18
  * literal; objects tag the kinds `JSON.stringify` can't represent natively
19
- * (`{date}`, `{id}`, `{$ctx}`, `{list}`, `{node}`, `{add,remove}`, `{unset}`);
20
- * and a computed value is an S-expr array via the shared `DslJsonExpression` codec —
19
+ * (`{@date}`, `{@id}`, `{@ctx}`, `{@list}`, `{@add,@remove}`, `{@unset}`); and a
20
+ * computed value is an S-expr array via the shared `DslJsonExpression` codec —
21
21
  * so the wire carries no IR.
22
22
  */
23
23
  import { isSetModificationValue, } from './QueryFactory.js';
@@ -40,13 +40,13 @@ export function valueShapeOf(prop) {
40
40
  /** Encode a single (non-array, non-setMod) property value. `prop` gives the nested-node shape. */
41
41
  function encodeSingleValue(value, prop) {
42
42
  if (value === undefined)
43
- return { unset: true };
43
+ return { '@unset': true };
44
44
  if (isExpressionNode(value)) {
45
- // A computed value is an S-expr (or {path}) via the shared codec — no IR.
45
+ // A computed value is an S-expr (or {@path}) via the shared codec — no IR.
46
46
  return encodeValueExpr(value.ir, value._refs);
47
47
  }
48
48
  if (value instanceof Date)
49
- return { date: value.toISOString() };
49
+ return { '@date': value.toISOString() };
50
50
  if (typeof value === 'string' ||
51
51
  typeof value === 'number' ||
52
52
  typeof value === 'boolean') {
@@ -56,31 +56,31 @@ function encodeSingleValue(value, prop) {
56
56
  // Query-context reference — carry the name, resolve at lowering (checked
57
57
  // before the generic `.id` branch since a PendingQueryContext has an `.id` getter).
58
58
  if (value instanceof PendingQueryContext) {
59
- return { $ctx: value.contextName };
59
+ return { '@ctx': value.contextName };
60
60
  }
61
61
  if ('fields' in value) {
62
62
  // Nested-node create — bare path-keyed; expected shape = the relation's value shape.
63
63
  return encodeNodeData(value, valueShapeOf(prop));
64
64
  }
65
65
  if ('id' in value)
66
- return { id: value.id };
66
+ return { '@id': value.id };
67
67
  }
68
68
  throw new Error(`Cannot serialize mutation value: ${JSON.stringify(value)}`);
69
69
  }
70
70
  /** Encode any property value, including arrays and set modifications. */
71
71
  export function encodeValue(value, prop) {
72
72
  if (value === undefined)
73
- return { unset: true };
73
+ return { '@unset': true };
74
74
  if (Array.isArray(value)) {
75
- return { list: value.map((v) => encodeSingleValue(v, prop)) };
75
+ return { '@list': value.map((v) => encodeSingleValue(v, prop)) };
76
76
  }
77
77
  if (isSetModificationValue(value)) {
78
78
  const mod = value;
79
79
  const json = {};
80
80
  if (mod.$add)
81
- json.add = mod.$add.map((v) => encodeValue(v, prop));
81
+ json['@add'] = mod.$add.map((v) => encodeValue(v, prop));
82
82
  if (mod.$remove)
83
- json.remove = mod.$remove.map((r) => r.id);
83
+ json['@remove'] = mod.$remove.map((r) => r.id);
84
84
  return json;
85
85
  }
86
86
  return encodeSingleValue(value, prop);
@@ -105,11 +105,28 @@ export function encodeNodeData(desc, expectedShape) {
105
105
  // =============================================================================
106
106
  // JSON → raw UpdatePartial (for builder rehydration / fromJSON)
107
107
  // =============================================================================
108
+ // Bound the DSL-JSON decode recursion (rehydration path) against a deeply-nested
109
+ // payload exhausting the stack. Mirrors the cap in lowerMutationJSON.
110
+ const MAX_DECODE_DEPTH = 128;
111
+ let _decodeDepth = 0;
108
112
  /**
109
113
  * Decode a DSL-JSON value back to a raw DSL value (the form `.set()` accepts).
110
- * `currentShape` resolves computed `{path}`/S-expr; `prop` gives a nested node's shape.
114
+ * `currentShape` resolves computed `{@path}`/S-expr; `prop` gives a nested node's shape.
115
+ * Depth-guarded wrapper around {@link decodeValueToRawInner}.
111
116
  */
112
117
  function decodeValueToRaw(json, currentShape, prop) {
118
+ if (++_decodeDepth > MAX_DECODE_DEPTH) {
119
+ _decodeDepth = 0;
120
+ throw new Error('DSL-JSON value nested too deeply');
121
+ }
122
+ try {
123
+ return decodeValueToRawInner(json, currentShape, prop);
124
+ }
125
+ finally {
126
+ _decodeDepth--;
127
+ }
128
+ }
129
+ function decodeValueToRawInner(json, currentShape, prop) {
113
130
  var _a;
114
131
  // S-expr computed value
115
132
  if (Array.isArray(json)) {
@@ -121,30 +138,30 @@ function decodeValueToRaw(json, currentShape, prop) {
121
138
  if (typeof json !== 'object')
122
139
  return json; // bare scalar literal
123
140
  const o = json;
124
- if ('unset' in o)
141
+ if ('@unset' in o)
125
142
  return undefined;
126
- if ('date' in o)
127
- return new Date(o.date);
143
+ if ('@date' in o)
144
+ return new Date(o['@date']);
128
145
  // Rehydration path: preserve the live reference so it re-serializes as a
129
- // `{$ctx}` marker and resolves at the rebuilt builder's own lowering.
130
- if ('$ctx' in o)
131
- return new PendingQueryContext(o.$ctx);
132
- if ('id' in o)
133
- return { id: o.id };
134
- if ('list' in o) {
135
- return o.list.map((i) => decodeValueToRaw(i, currentShape, prop));
136
- }
137
- if ('add' in o || 'remove' in o) {
138
- // Raw DSL set-modifications use `add`/`remove` (the normalized form uses $add/$remove).
146
+ // `{@ctx}` marker and resolves at the rebuilt builder's own lowering.
147
+ if ('@ctx' in o)
148
+ return new PendingQueryContext(o['@ctx']);
149
+ if ('@id' in o)
150
+ return { id: o['@id'] };
151
+ if ('@list' in o) {
152
+ return o['@list'].map((i) => decodeValueToRaw(i, currentShape, prop));
153
+ }
154
+ if ('@add' in o || '@remove' in o) {
155
+ // Raw DSL set-modifications use `@add`/`@remove` on the wire.
139
156
  const mod = {};
140
- if (o.add)
141
- mod.add = o.add.map((i) => decodeValueToRaw(i, currentShape, prop));
142
- if (o.remove)
143
- mod.remove = o.remove.map((id) => ({ id }));
157
+ if (o['@add'])
158
+ mod.add = o['@add'].map((i) => decodeValueToRaw(i, currentShape, prop));
159
+ if (o['@remove'])
160
+ mod.remove = o['@remove'].map((id) => ({ id }));
144
161
  return mod;
145
162
  }
146
- // A computed-path value (`{path}`) used as a value.
147
- if ('path' in o) {
163
+ // A computed-path value (`{@path}`) used as a value.
164
+ if ('@path' in o) {
148
165
  const { ir, refs } = decodeValueExpr(json, requireShapeForExpr(currentShape));
149
166
  return new ExpressionNode(ir, refs);
150
167
  }
@@ -173,6 +190,9 @@ export function decodeNodeDataToRaw(json, shape) {
173
190
  for (const [key, val] of Object.entries(json)) {
174
191
  if (key === NODE_ID_KEY || key === NODE_SHAPE_KEY || val === undefined)
175
192
  continue;
193
+ // Skip prototype-polluting keys from untrusted DSL-JSON input.
194
+ if (key === '__proto__' || key === 'constructor' || key === 'prototype')
195
+ continue;
176
196
  const prop = nodeShape === null || nodeShape === void 0 ? void 0 : nodeShape.getPropertyShape(key);
177
197
  obj[key] = decodeValueToRaw(val, nodeShape, prop);
178
198
  }
@@ -1 +1 @@
1
- {"version":3,"file":"MutationSerialization.js","sourceRoot":"","sources":["../../../src/queries/MutationSerialization.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"MutationSerialization.js","sourceRoot":"","sources":["../../../src/queries/MutationSerialization.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;;;;;;;;;;;;;;;GAgBG;AACH,OAAO,EAML,sBAAsB,GACvB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAC,cAAc,EAAE,gBAAgB,EAAC,MAAM,kCAAkC,CAAC;AAGlF,OAAO,EAAC,mBAAmB,EAAC,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAC,aAAa,EAAC,MAAM,wBAAwB,CAAC;AAErD,OAAO,EACL,eAAe,EACf,eAAe,GAEhB,MAAM,wBAAwB,CAAC;AAoChC,qDAAqD;AACrD,MAAM,WAAW,GAAG,MAAM,CAAC;AAC3B,MAAM,cAAc,GAAG,SAAS,CAAC;AA8BjC,gFAAgF;AAChF,cAAc;AACd,gFAAgF;AAEhF,6FAA6F;AAC7F,MAAM,UAAU,YAAY,CAAC,IAAoB;;IAC/C,MAAM,EAAE,GAAG,MAAC,IAA+C,aAA/C,IAAI,uBAAJ,IAAI,CAA6C,UAAU,0CAAE,EAAE,CAAC;IAC5E,OAAO,EAAE,CAAC,CAAC,CAAC,MAAA,aAAa,CAAC,EAAE,CAAC,0CAAE,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;AACnD,CAAC;AAED,kGAAkG;AAClG,SAAS,iBAAiB,CACxB,KAAgC,EAChC,IAAoB;IAEpB,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,EAAC,QAAQ,EAAE,IAAI,EAAC,CAAC;IACjD,IAAI,gBAAgB,CAAC,KAAK,CAAC,EAAE,CAAC;QAC5B,2EAA2E;QAC3E,OAAO,eAAe,CAAC,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,KAAK,CAAsB,CAAC;IACrE,CAAC;IACD,IAAI,KAAK,YAAY,IAAI;QAAE,OAAO,EAAC,OAAO,EAAE,KAAK,CAAC,WAAW,EAAE,EAAC,CAAC;IACjE,IACE,OAAO,KAAK,KAAK,QAAQ;QACzB,OAAO,KAAK,KAAK,QAAQ;QACzB,OAAO,KAAK,KAAK,SAAS,EAC1B,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QACvC,yEAAyE;QACzE,oFAAoF;QACpF,IAAI,KAAK,YAAY,mBAAmB,EAAE,CAAC;YACzC,OAAO,EAAC,MAAM,EAAE,KAAK,CAAC,WAAW,EAAC,CAAC;QACrC,CAAC;QACD,IAAI,QAAQ,IAAI,KAAK,EAAE,CAAC;YACtB,qFAAqF;YACrF,OAAO,cAAc,CAAC,KAA6B,EAAE,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC;QAC3E,CAAC;QACD,IAAI,IAAI,IAAI,KAAK;YAAE,OAAO,EAAC,KAAK,EAAG,KAA4B,CAAC,EAAE,EAAC,CAAC;IACtE,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,oCAAoC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;AAC/E,CAAC;AAED,yEAAyE;AACzE,MAAM,UAAU,WAAW,CACzB,KAAsB,EACtB,IAAoB;IAEpB,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,EAAC,QAAQ,EAAE,IAAI,EAAC,CAAC;IACjD,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,EAAC,OAAO,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAC,CAAC;IACjE,CAAC;IACD,IAAI,sBAAsB,CAAC,KAAK,CAAC,EAAE,CAAC;QAClC,MAAM,GAAG,GAAG,KAA6B,CAAC;QAC1C,MAAM,IAAI,GAAyD,EAAE,CAAC;QACtE,IAAI,GAAG,CAAC,IAAI;YAAE,IAAI,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,CAAoB,EAAE,IAAI,CAAC,CAAC,CAAC;QAC1F,IAAI,GAAG,CAAC,OAAO;YAAE,IAAI,CAAC,SAAS,CAAC,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAChE,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,iBAAiB,CAAC,KAAkC,EAAE,IAAI,CAAC,CAAC;AACrE,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,cAAc,CAC5B,IAA0B,EAC1B,aAAyB;IAEzB,MAAM,IAAI,GAAyB,EAAE,CAAC;IACtC,IAAI,IAAI,CAAC,IAAI;QAAE,IAAI,CAAC,WAAW,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC;IAC7C,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,KAAK,CAAC,EAAE,KAAK,aAAa,CAAC,EAAE,EAAE,CAAC;QACzD,IAAI,CAAC,cAAc,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;IACvC,CAAC;IACD,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;QAC5B,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;IAClD,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,gFAAgF;AAChF,gEAAgE;AAChE,gFAAgF;AAEhF,iFAAiF;AACjF,sEAAsE;AACtE,MAAM,gBAAgB,GAAG,GAAG,CAAC;AAC7B,IAAI,YAAY,GAAG,CAAC,CAAC;AAErB;;;;GAIG;AACH,SAAS,gBAAgB,CACvB,IAAuB,EACvB,YAAmC,EACnC,IAAoB;IAEpB,IAAI,EAAE,YAAY,GAAG,gBAAgB,EAAE,CAAC;QACtC,YAAY,GAAG,CAAC,CAAC;QACjB,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;IACtD,CAAC;IACD,IAAI,CAAC;QACH,OAAO,qBAAqB,CAAC,IAAI,EAAE,YAAY,EAAE,IAAI,CAAC,CAAC;IACzD,CAAC;YAAS,CAAC;QACT,YAAY,EAAE,CAAC;IACjB,CAAC;AACH,CAAC;AAED,SAAS,qBAAqB,CAC5B,IAAuB,EACvB,YAAmC,EACnC,IAAoB;;IAEpB,wBAAwB;IACxB,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QACxB,MAAM,EAAC,EAAE,EAAE,IAAI,EAAC,GAAG,eAAe,CAAC,IAAoB,EAAE,mBAAmB,CAAC,YAAY,CAAC,CAAC,CAAC;QAC5F,OAAO,IAAI,cAAc,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;IACtC,CAAC;IACD,IAAI,IAAI,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IAC/B,IAAI,OAAO,IAAI,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC,CAAC,sBAAsB;IACjE,MAAM,CAAC,GAAG,IAA+B,CAAC;IAC1C,IAAI,QAAQ,IAAI,CAAC;QAAE,OAAO,SAAS,CAAC;IACpC,IAAI,OAAO,IAAI,CAAC;QAAE,OAAO,IAAI,IAAI,CAAC,CAAC,CAAC,OAAO,CAAW,CAAC,CAAC;IACxD,yEAAyE;IACzE,sEAAsE;IACtE,IAAI,MAAM,IAAI,CAAC;QAAE,OAAO,IAAI,mBAAmB,CAAC,CAAC,CAAC,MAAM,CAAW,CAAC,CAAC;IACrE,IAAI,KAAK,IAAI,CAAC;QAAE,OAAO,EAAC,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,EAAC,CAAC;IACtC,IAAI,OAAO,IAAI,CAAC,EAAE,CAAC;QACjB,OAAQ,CAAC,CAAC,OAAO,CAAyB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,gBAAgB,CAAC,CAAC,EAAE,YAAY,EAAE,IAAI,CAAC,CAAC,CAAC;IACjG,CAAC;IACD,IAAI,MAAM,IAAI,CAAC,IAAI,SAAS,IAAI,CAAC,EAAE,CAAC;QAClC,8DAA8D;QAC9D,MAAM,GAAG,GAA+C,EAAE,CAAC;QAC3D,IAAI,CAAC,CAAC,MAAM,CAAC;YAAE,GAAG,CAAC,GAAG,GAAI,CAAC,CAAC,MAAM,CAAyB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,gBAAgB,CAAC,CAAC,EAAE,YAAY,EAAE,IAAI,CAAC,CAAC,CAAC;QAChH,IAAI,CAAC,CAAC,SAAS,CAAC;YAAE,GAAG,CAAC,MAAM,GAAI,CAAC,CAAC,SAAS,CAAc,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAC,EAAE,EAAC,CAAC,CAAC,CAAC;QAC9E,OAAO,GAAG,CAAC;IACb,CAAC;IACD,qDAAqD;IACrD,IAAI,OAAO,IAAI,CAAC,EAAE,CAAC;QACjB,MAAM,EAAC,EAAE,EAAE,IAAI,EAAC,GAAG,eAAe,CAAC,IAAoB,EAAE,mBAAmB,CAAC,YAAY,CAAC,CAAC,CAAC;QAC5F,OAAO,IAAI,cAAc,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;IACtC,CAAC;IACD,mDAAmD;IACnD,OAAO,mBAAmB,CAAC,CAAyB,EAAE,MAAA,YAAY,CAAC,IAAI,CAAC,mCAAI,YAAY,CAAC,CAAC;AAC5F,CAAC;AAED,SAAS,mBAAmB,CAAC,KAA4B;IACvD,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CAAC,yDAAyD,CAAC,CAAC;IAC7E,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,mBAAmB,CACjC,IAA0B,EAC1B,KAAiB;;IAEjB,MAAM,SAAS,GACb,OAAO,IAAI,CAAC,cAAc,CAAC,KAAK,QAAQ;QACtC,CAAC,CAAC,MAAA,MAAA,aAAa,CAAC,IAAI,CAAC,cAAc,CAAW,CAAC,0CAAE,KAAK,mCAAI,KAAK;QAC/D,CAAC,CAAC,KAAK,CAAC;IACZ,MAAM,GAAG,GAA4B,EAAE,CAAC;IACxC,IAAI,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,QAAQ;QAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC;IACtE,KAAK,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QAC9C,IAAI,GAAG,KAAK,WAAW,IAAI,GAAG,KAAK,cAAc,IAAI,GAAG,KAAK,SAAS;YAAE,SAAS;QACjF,+DAA+D;QAC/D,IAAI,GAAG,KAAK,WAAW,IAAI,GAAG,KAAK,aAAa,IAAI,GAAG,KAAK,WAAW;YAAE,SAAS;QAClF,MAAM,IAAI,GAAG,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,gBAAgB,CAAC,GAAG,CAAC,CAAC;QAC9C,GAAG,CAAC,GAAG,CAAC,GAAG,gBAAgB,CAAC,GAAwB,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;IACzE,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Shared thenable base for the mutation builders (Create/Update/Delete).
3
+ *
4
+ * Each builder is a lazy, `await`-able handle: it implements the full
5
+ * `Promise<R>` surface by delegating to its own `exec()`, so `await builder`
6
+ * runs the mutation. This base holds the identical `then`/`catch`/`finally`/
7
+ * `Symbol.toStringTag` wiring; subclasses provide only `exec()` and a `_tag`.
8
+ */
9
+ export declare abstract class MutationThenable<R> implements PromiseLike<R>, Promise<R> {
10
+ /** Execute the mutation. Subclasses implement the dispatch. */
11
+ abstract exec(): Promise<R>;
12
+ /** Class name reported by `Symbol.toStringTag` (stable under minification). */
13
+ protected abstract readonly _tag: string;
14
+ then<TResult1 = R, TResult2 = never>(onfulfilled?: ((value: R) => TResult1 | PromiseLike<TResult1>) | null, onrejected?: ((reason: any) => TResult2 | PromiseLike<TResult2>) | null): Promise<TResult1 | TResult2>;
15
+ catch<TResult = never>(onrejected?: ((reason: any) => TResult | PromiseLike<TResult>) | null): Promise<R | TResult>;
16
+ finally(onfinally?: (() => void) | null): Promise<R>;
17
+ get [Symbol.toStringTag](): string;
18
+ }
@@ -0,0 +1,28 @@
1
+ /*
2
+ * This Source Code Form is subject to the terms of the Mozilla Public
3
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
4
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
5
+ */
6
+ /**
7
+ * Shared thenable base for the mutation builders (Create/Update/Delete).
8
+ *
9
+ * Each builder is a lazy, `await`-able handle: it implements the full
10
+ * `Promise<R>` surface by delegating to its own `exec()`, so `await builder`
11
+ * runs the mutation. This base holds the identical `then`/`catch`/`finally`/
12
+ * `Symbol.toStringTag` wiring; subclasses provide only `exec()` and a `_tag`.
13
+ */
14
+ export class MutationThenable {
15
+ then(onfulfilled, onrejected) {
16
+ return this.exec().then(onfulfilled, onrejected);
17
+ }
18
+ catch(onrejected) {
19
+ return this.then().catch(onrejected);
20
+ }
21
+ finally(onfinally) {
22
+ return this.then().finally(onfinally);
23
+ }
24
+ get [Symbol.toStringTag]() {
25
+ return this._tag;
26
+ }
27
+ }
28
+ //# sourceMappingURL=MutationThenable.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MutationThenable.js","sourceRoot":"","sources":["../../../src/queries/MutationThenable.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;;;;;;GAOG;AACH,MAAM,OAAgB,gBAAgB;IAOpC,IAAI,CACF,WAAqE,EACrE,UAAuE;QAEvE,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;IACnD,CAAC;IAED,KAAK,CACH,UAAqE;QAErE,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;IACvC,CAAC;IAED,OAAO,CAAC,SAA+B;QACrC,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IACxC,CAAC;IAED,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC;QACtB,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;CACF"}
@@ -16,7 +16,7 @@ export type QueryBuilderJSON = {
16
16
  fields?: FieldSetFieldJSON[];
17
17
  limit?: number;
18
18
  offset?: number;
19
- /** A node id, or a `{$ctx: name}` context reference resolved at lowering. */
19
+ /** A node id, or a `{@ctx: name}` context reference resolved at lowering. */
20
20
  subject?: string | ContextRefJSON;
21
21
  subjects?: string[];
22
22
  /** `.one()` — unwrap a single result. */
@@ -356,10 +356,10 @@ export class SelectBuilder {
356
356
  builder = builder.offset(json.offset);
357
357
  }
358
358
  if (json.subject) {
359
- // A `{$ctx}` subject rehydrates as a pending context (preserving the name
359
+ // A `{@ctx}` subject rehydrates as a pending context (preserving the name
360
360
  // so it re-serializes as a context reference and resolves live).
361
361
  const subject = isContextRefJSON(json.subject)
362
- ? new PendingQueryContext(json.subject.$ctx)
362
+ ? new PendingQueryContext(json.subject['@ctx'])
363
363
  : json.subject;
364
364
  builder = builder.for(subject);
365
365
  }
@@ -380,7 +380,7 @@ export class SelectBuilder {
380
380
  if (json.sortBy && json.sortBy.length > 0 && nodeShape) {
381
381
  const sortBy = deserializeSortByPath(nodeShape, json.sortBy);
382
382
  overrides._sortBy = sortBy;
383
- overrides.sortDirection = sortBy.direction;
383
+ overrides.sortDirection = sortBy.directions[0];
384
384
  }
385
385
  // Restore minus entries
386
386
  if (json.minusEntries && json.minusEntries.length > 0 && nodeShape) {