@_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
@@ -1,602 +0,0 @@
1
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
- return c > 3 && r && Object.defineProperty(target, key, r), r;
6
- };
7
- var __metadata = (this && this.__metadata) || function (k, v) {
8
- if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
- };
10
- import { linkedShape } from '../package';
11
- import { literalProperty, objectProperty } from '../shapes/SHACL';
12
- import { Shape } from '../shapes/Shape';
13
- import { Expr } from '../expressions/Expr';
14
- import { xsd } from '../ontologies/xsd';
15
- import { ShapeSet } from '../collections/ShapeSet';
16
- import { getQueryContext } from '../queries/QueryContext';
17
- import { DeleteBuilder } from '../queries/DeleteBuilder';
18
- const tmpPropBase = 'linked://tmp/props/';
19
- const tmpTypeBase = 'linked://tmp/types/';
20
- export const tmpEntityBase = 'linked://tmp/entities/';
21
- const prop = (suffix) => ({
22
- id: `${tmpPropBase}${suffix}`,
23
- });
24
- const type = (suffix) => ({
25
- id: `${tmpTypeBase}${suffix}`,
26
- });
27
- const entity = (suffix) => ({
28
- id: `${tmpEntityBase}${suffix}`,
29
- });
30
- export const name = prop('name');
31
- export const hobby = prop('hobby');
32
- export const nickName = prop('nickName');
33
- export const bestFriend = prop('bestFriend');
34
- export const hasFriend = prop('hasFriend');
35
- export const birthDate = prop('birthDate');
36
- export const isRealPerson = prop('isRealPerson');
37
- export const hasPet = prop('hasPet');
38
- export const guardDogLevel = prop('guardDogLevel');
39
- export const pluralTestProp = prop('pluralTestProp');
40
- export const personClass = type('Person');
41
- export const employeeClass = type('Employee');
42
- export const petClass = type('Pet');
43
- export const dogClass = type('Dog');
44
- export const employeeName = prop('employeeName');
45
- export const employeeDepartment = prop('employeeDepartment');
46
- let Pet = class Pet extends Shape {
47
- get bestFriend() {
48
- return null;
49
- }
50
- };
51
- Pet.targetClass = petClass;
52
- __decorate([
53
- objectProperty({ path: bestFriend, maxCount: 1, shape: Pet }),
54
- __metadata("design:type", Pet),
55
- __metadata("design:paramtypes", [])
56
- ], Pet.prototype, "bestFriend", null);
57
- Pet = __decorate([
58
- linkedShape
59
- ], Pet);
60
- export { Pet };
61
- let Dog = class Dog extends Pet {
62
- get guardDogLevel() {
63
- return null;
64
- }
65
- };
66
- Dog.targetClass = dogClass;
67
- __decorate([
68
- literalProperty({ path: guardDogLevel, maxCount: 1, datatype: xsd.integer }),
69
- __metadata("design:type", Number),
70
- __metadata("design:paramtypes", [])
71
- ], Dog.prototype, "guardDogLevel", null);
72
- Dog = __decorate([
73
- linkedShape
74
- ], Dog);
75
- export { Dog };
76
- let Person = class Person extends Shape {
77
- get name() {
78
- return '';
79
- }
80
- get hobby() {
81
- return '';
82
- }
83
- get nickNames() {
84
- return [];
85
- }
86
- get birthDate() {
87
- return null;
88
- }
89
- get isRealPerson() {
90
- return null;
91
- }
92
- get bestFriend() {
93
- return null;
94
- }
95
- get friends() {
96
- return null;
97
- }
98
- get pets() {
99
- return null;
100
- }
101
- get firstPet() {
102
- return null;
103
- }
104
- get pluralTestProp() {
105
- return null;
106
- }
107
- };
108
- Person.targetClass = personClass;
109
- __decorate([
110
- literalProperty({ path: name, maxCount: 1 }),
111
- __metadata("design:type", String),
112
- __metadata("design:paramtypes", [])
113
- ], Person.prototype, "name", null);
114
- __decorate([
115
- literalProperty({ path: hobby, maxCount: 1 }),
116
- __metadata("design:type", String),
117
- __metadata("design:paramtypes", [])
118
- ], Person.prototype, "hobby", null);
119
- __decorate([
120
- literalProperty({ path: nickName }),
121
- __metadata("design:type", Array),
122
- __metadata("design:paramtypes", [])
123
- ], Person.prototype, "nickNames", null);
124
- __decorate([
125
- literalProperty({ path: birthDate, datatype: xsd.dateTime, maxCount: 1 }),
126
- __metadata("design:type", Date),
127
- __metadata("design:paramtypes", [])
128
- ], Person.prototype, "birthDate", null);
129
- __decorate([
130
- literalProperty({ path: isRealPerson, datatype: xsd.boolean, maxCount: 1 }),
131
- __metadata("design:type", Boolean),
132
- __metadata("design:paramtypes", [])
133
- ], Person.prototype, "isRealPerson", null);
134
- __decorate([
135
- objectProperty({ path: bestFriend, maxCount: 1, shape: Person }),
136
- __metadata("design:type", Person),
137
- __metadata("design:paramtypes", [])
138
- ], Person.prototype, "bestFriend", null);
139
- __decorate([
140
- objectProperty({ path: hasFriend, shape: Person }),
141
- __metadata("design:type", ShapeSet),
142
- __metadata("design:paramtypes", [])
143
- ], Person.prototype, "friends", null);
144
- __decorate([
145
- objectProperty({ path: hasPet, shape: Pet }),
146
- __metadata("design:type", ShapeSet),
147
- __metadata("design:paramtypes", [])
148
- ], Person.prototype, "pets", null);
149
- __decorate([
150
- objectProperty({ path: hasPet, maxCount: 1, shape: Pet }),
151
- __metadata("design:type", Pet),
152
- __metadata("design:paramtypes", [])
153
- ], Person.prototype, "firstPet", null);
154
- __decorate([
155
- objectProperty({ path: pluralTestProp, shape: Person }),
156
- __metadata("design:type", ShapeSet),
157
- __metadata("design:paramtypes", [])
158
- ], Person.prototype, "pluralTestProp", null);
159
- Person = __decorate([
160
- linkedShape
161
- ], Person);
162
- export { Person };
163
- export const metricClass = type('Metric');
164
- export const metricScore = prop('metricScore');
165
- export const metricRating = prop('metricRating');
166
- export const metricViews = prop('metricViews');
167
- export const metricCount = prop('metricCount');
168
- export const metricJoinedOn = prop('metricJoinedOn');
169
- export const metricScores = prop('metricScores');
170
- /**
171
- * Datatype-coverage shape: one single-valued field per numeric/date xsd type,
172
- * plus a multi-valued numeric field (scores) for array coercion/dedup/ordering.
173
- */
174
- let Metric = class Metric extends Shape {
175
- get score() {
176
- return null;
177
- }
178
- get rating() {
179
- return null;
180
- }
181
- get views() {
182
- return null;
183
- }
184
- get count() {
185
- return null;
186
- }
187
- get joinedOn() {
188
- return null;
189
- }
190
- get scores() {
191
- return [];
192
- }
193
- };
194
- Metric.targetClass = metricClass;
195
- __decorate([
196
- literalProperty({ path: metricScore, maxCount: 1, datatype: xsd.decimal }),
197
- __metadata("design:type", Number),
198
- __metadata("design:paramtypes", [])
199
- ], Metric.prototype, "score", null);
200
- __decorate([
201
- literalProperty({ path: metricRating, maxCount: 1, datatype: xsd.double }),
202
- __metadata("design:type", Number),
203
- __metadata("design:paramtypes", [])
204
- ], Metric.prototype, "rating", null);
205
- __decorate([
206
- literalProperty({ path: metricViews, maxCount: 1, datatype: xsd.long }),
207
- __metadata("design:type", Number),
208
- __metadata("design:paramtypes", [])
209
- ], Metric.prototype, "views", null);
210
- __decorate([
211
- literalProperty({ path: metricCount, maxCount: 1, datatype: xsd.integer }),
212
- __metadata("design:type", Number),
213
- __metadata("design:paramtypes", [])
214
- ], Metric.prototype, "count", null);
215
- __decorate([
216
- literalProperty({ path: metricJoinedOn, maxCount: 1, datatype: xsd.date }),
217
- __metadata("design:type", Date),
218
- __metadata("design:paramtypes", [])
219
- ], Metric.prototype, "joinedOn", null);
220
- __decorate([
221
- literalProperty({ path: metricScores, datatype: xsd.decimal }),
222
- __metadata("design:type", Array),
223
- __metadata("design:paramtypes", [])
224
- ], Metric.prototype, "scores", null);
225
- Metric = __decorate([
226
- linkedShape
227
- ], Metric);
228
- export { Metric };
229
- /**
230
- * Property-path coverage shape. Uses complex decorator paths (sequence,
231
- * alternative, inverse, transitive) so Shape.select(...) lowers them end-to-end.
232
- * Paths use explicit raw IRIs; seed data is keyed on those same IRIs.
233
- */
234
- const PP = 'linked://pp/';
235
- export const pathNodeClass = { id: `${PP}Node` };
236
- let PathNode = class PathNode extends Shape {
237
- // sequence: knows / name → the name of who this node knows
238
- get friendName() {
239
- return '';
240
- }
241
- // alternative: email | phone
242
- get contact() {
243
- return [];
244
- }
245
- // inverse + sequence: ^knows / name → name of who knows this node
246
- get knownByName() {
247
- return '';
248
- }
249
- // transitive sequence: manages+ / name → names of all transitive reports
250
- get reportNames() {
251
- return [];
252
- }
253
- // zeroOrMore: knows* / name → self + all transitively-known names
254
- get knowsChainNames() {
255
- return [];
256
- }
257
- // zeroOrOne: knows? / name → self + directly-known name
258
- get maybeKnownNames() {
259
- return [];
260
- }
261
- };
262
- PathNode.targetClass = pathNodeClass;
263
- __decorate([
264
- literalProperty({ path: { seq: [{ id: `${PP}knows` }, { id: `${PP}name` }] }, maxCount: 1 }),
265
- __metadata("design:type", String),
266
- __metadata("design:paramtypes", [])
267
- ], PathNode.prototype, "friendName", null);
268
- __decorate([
269
- literalProperty({ path: { alt: [{ id: `${PP}email` }, { id: `${PP}phone` }] } }),
270
- __metadata("design:type", Array),
271
- __metadata("design:paramtypes", [])
272
- ], PathNode.prototype, "contact", null);
273
- __decorate([
274
- literalProperty({ path: { seq: [{ inv: { id: `${PP}knows` } }, { id: `${PP}name` }] }, maxCount: 1 }),
275
- __metadata("design:type", String),
276
- __metadata("design:paramtypes", [])
277
- ], PathNode.prototype, "knownByName", null);
278
- __decorate([
279
- literalProperty({ path: { seq: [{ oneOrMore: { id: `${PP}manages` } }, { id: `${PP}name` }] } }),
280
- __metadata("design:type", Array),
281
- __metadata("design:paramtypes", [])
282
- ], PathNode.prototype, "reportNames", null);
283
- __decorate([
284
- literalProperty({ path: { seq: [{ zeroOrMore: { id: `${PP}knows` } }, { id: `${PP}name` }] } }),
285
- __metadata("design:type", Array),
286
- __metadata("design:paramtypes", [])
287
- ], PathNode.prototype, "knowsChainNames", null);
288
- __decorate([
289
- literalProperty({ path: { seq: [{ zeroOrOne: { id: `${PP}knows` } }, { id: `${PP}name` }] } }),
290
- __metadata("design:type", Array),
291
- __metadata("design:paramtypes", [])
292
- ], PathNode.prototype, "maybeKnownNames", null);
293
- PathNode = __decorate([
294
- linkedShape
295
- ], PathNode);
296
- export { PathNode };
297
- let Employee = class Employee extends Person {
298
- get name() {
299
- return '';
300
- }
301
- get bestFriend() {
302
- return null;
303
- }
304
- get department() {
305
- return '';
306
- }
307
- };
308
- Employee.targetClass = employeeClass;
309
- __decorate([
310
- literalProperty({ path: employeeName, maxCount: 1 }),
311
- __metadata("design:type", String),
312
- __metadata("design:paramtypes", [])
313
- ], Employee.prototype, "name", null);
314
- __decorate([
315
- objectProperty({ path: bestFriend, maxCount: 1, shape: Employee }),
316
- __metadata("design:type", Employee),
317
- __metadata("design:paramtypes", [])
318
- ], Employee.prototype, "bestFriend", null);
319
- __decorate([
320
- literalProperty({ path: employeeDepartment, maxCount: 1 }),
321
- __metadata("design:type", String),
322
- __metadata("design:paramtypes", [])
323
- ], Employee.prototype, "department", null);
324
- Employee = __decorate([
325
- linkedShape
326
- ], Employee);
327
- export { Employee };
328
- import { QueryBuilder } from '../queries/QueryBuilder';
329
- import { FieldSet } from '../queries/FieldSet';
330
- const componentLike = { query: Person.select((p) => ({ name: p.name })) };
331
- const componentFieldSet = FieldSet.for(Person.shape, ['name']);
332
- const componentLikeWithFieldSet = { query: componentFieldSet, fields: componentFieldSet };
333
- const updateSimple = { hobby: 'Chess' };
334
- const updateOverwriteSet = { friends: [entity('p2')] };
335
- const updateUnsetSingleUndefined = { hobby: undefined };
336
- const updateUnsetSingleNull = { hobby: null };
337
- const updateOverwriteNested = {
338
- bestFriend: { name: 'Bestie' },
339
- };
340
- const updatePassIdReferences = {
341
- bestFriend: entity('p2'),
342
- };
343
- const updateAddRemoveMulti = {
344
- friends: { add: [entity('p2')], remove: [entity('p3')] },
345
- };
346
- const updateRemoveMulti = {
347
- friends: { remove: [entity('p2')] },
348
- };
349
- const updateAddRemoveSame = {
350
- friends: { add: [entity('p2')], remove: [entity('p3')] },
351
- };
352
- const updateUnsetMultiUndefined = { friends: undefined };
353
- const updateNestedWithPredefinedId = {
354
- bestFriend: { id: `${tmpEntityBase}p3-best-friend`, name: 'Bestie' },
355
- };
356
- const updateBirthDate = {
357
- birthDate: new Date('2020-01-01'),
358
- };
359
- export const queryFactories = {
360
- selectName: () => Person.select((p) => p.name),
361
- selectFriends: () => Person.select((p) => p.friends),
362
- selectBirthDate: () => Person.select((p) => p.birthDate),
363
- selectIsRealPerson: () => Person.select((p) => p.isRealPerson),
364
- selectById: () => Person.select((p) => p.name).for(entity('p1')),
365
- selectByIdReference: () => Person.select((p) => p.name).for(entity('p1')),
366
- selectNonExisting: () => Person.select((p) => p.name).for({ id: 'https://does.not/exist' }),
367
- selectUndefinedOnly: () => Person.select((p) => [p.hobby, p.bestFriend]).for(entity('p3')),
368
- selectFriendsName: () => Person.select((p) => p.friends.name),
369
- selectNestedFriendsName: () => Person.select((p) => p.friends.friends.name),
370
- selectMultiplePaths: () => Person.select((p) => [p.name, p.friends, p.bestFriend.name]),
371
- selectBestFriendName: () => Person.select((p) => p.bestFriend.name),
372
- selectBestFriendOnly: () => Person.select((p) => p.bestFriend),
373
- selectDeepNested: () => Person.select((p) => p.friends.bestFriend.bestFriend.name),
374
- whereFriendsNameEquals: () => Person.select((p) => p.friends.where((f) => f.name.equals('Moa'))),
375
- whereFriendsNameEqualsChained: () => Person.select((p) => p.friends.where((f) => f.name.equals('Moa')).name),
376
- whereBestFriendEquals: () => Person.select().where((p) => p.bestFriend.equals(entity('p3'))),
377
- whereHobbyEquals: () => Person.select((p) => p.hobby.where((h) => h.equals('Jogging'))),
378
- whereAnd: () => Person.select((p) => p.friends.where((f) => f.name.equals('Moa').and(f.hobby.equals('Jogging')))),
379
- whereOr: () => Person.select((p) => p.friends.where((f) => f.name.equals('Jinx').or(f.hobby.equals('Jogging')))),
380
- selectAllProperties: () => Person.selectAll(),
381
- selectAll: () => Person.select(),
382
- selectWhereNameSemmy: () => Person.select().where((p) => p.name.equals('Semmy')),
383
- whereAndOrAnd: () => Person.select((p) => p.friends.where((f) => f.name.equals('Jinx').or(f.hobby.equals('Jogging')).and(f.name.equals('Moa')))),
384
- whereAndOrAndNested: () => Person.select((p) => p.friends.where((f) => f.name.equals('Jinx').or(f.hobby.equals('Jogging').and(f.name.equals('Moa'))))),
385
- whereSomeImplicit: () => Person.select().where((p) => p.friends.name.equals('Moa')),
386
- whereSomeExplicit: () => Person.select().where((p) => p.friends.some((f) => f.name.equals('Moa'))),
387
- whereEvery: () => Person.select().where((p) => p.friends.every((f) => f.name.equals('Moa').or(f.name.equals('Jinx')))),
388
- whereNone: () => Person.select((p) => p.name).where((p) => p.friends.none((f) => f.hobby.equals('Chess'))),
389
- whereSomeNot: () => Person.select((p) => p.name).where((p) => p.friends.some((f) => f.hobby.equals('Chess')).not()),
390
- whereEqualsNot: () => Person.select((p) => p.name).where((p) => p.name.equals('Alice').not()),
391
- whereNoneAndEquals: () => Person.select((p) => p.name).where((p) => p.friends.none((f) => f.hobby.equals('Chess')).and(p.name.equals('Bob'))),
392
- whereNeq: () => Person.select((p) => p.name).where(((p) => p.name.neq('Alice'))),
393
- // Unbound-tolerant functions in a where-filter: their arguments must not be
394
- // inner-joined, or the fallback/untaken branch can never match
395
- whereExprDefaultTo: () => Person.select().where(((p) => p.hobby.defaultTo('none').equals('none'))),
396
- whereExprIfThen: () => Person.select().where(((p) => Expr.ifThen(p.name.equals('Quinn'), 'quinn', p.hobby.str()).equals('quinn'))),
397
- whereExprNot: () => Person.select((p) => p.name).where((p) => Expr.not(p.name.equals('Alice').and(p.hobby.equals('Chess')))),
398
- whereSequences: () => Person.select().where((p) => p.friends
399
- .some((f) => f.name.equals('Jinx'))
400
- .and(p.name.equals('Semmy'))),
401
- outerWhere: () => Person.select((p) => p.friends).where((p) => p.name.equals('Semmy')),
402
- whereWithContext: () => Person.select((p) => p.name).where((p) => p.bestFriend.equals(getQueryContext('user'))),
403
- whereWithContextPath: () => Person.select((p) => p.name).where((p) => {
404
- const userName = getQueryContext('user').name;
405
- return p.friends.some((f) => f.name.equals(userName));
406
- }),
407
- countFriends: () => Person.select((p) => p.friends.size()),
408
- countNestedFriends: () => Person.select((p) => p.friends.friends.size()),
409
- countLabel: () => Person.select((p) => p.friends.select((f) => ({ numFriends: f.friends.size() }))),
410
- nestedObjectProperty: () => Person.select((p) => p.friends.bestFriend),
411
- nestedObjectPropertySingle: () => Person.select((p) => p.friends.bestFriend),
412
- subSelectSingleProp: () => Person.select((p) => p.bestFriend.select((f) => ({ name: f.name }))),
413
- subSelectPluralCustom: () => Person.select((p) => p.friends.select((f) => ({ name: f.name, hobby: f.hobby }))),
414
- doubleNestedSubSelect: () => Person.select((p) => p.friends.select((p2) => p2.bestFriend.select((p3) => ({ name: p3.name })))),
415
- subSelectAllProperties: () => Person.select((p) => p.friends.selectAll()),
416
- subSelectAllPropertiesSingle: () => Person.select((p) => p.bestFriend.selectAll()),
417
- subSelectAllPrimitives: () => Person.select((p) => p.bestFriend.select((f) => [f.name, f.birthDate, f.isRealPerson])),
418
- customResultEqualsBoolean: () => Person.select((p) => ({ isBestFriend: p.bestFriend.equals(entity('p3')) })),
419
- customResultNumFriends: () => Person.select((p) => ({ numFriends: p.friends.size() })),
420
- countEquals: () => Person.select().where((p) => p.friends.size().equals(2)),
421
- subSelectArray: () => Person.select((p) => p.friends.select((f) => [f.name, f.hobby])),
422
- selectShapeSetAs: () => Person.select((p) => p.pets.as(Dog).guardDogLevel),
423
- selectNonExistingMultiple: () => Person.select((p) => [p.bestFriend, p.friends]),
424
- selectShapeAs: () => Person.select((p) => p.firstPet.as(Dog).guardDogLevel),
425
- selectOne: () => Person.select((p) => p.name).where((p) => p.equals(entity('p1'))).one(),
426
- nestedQueries2: () => Person.select((p) => [
427
- p.friends.select((p2) => [
428
- p2.firstPet,
429
- p2.bestFriend.select((p3) => ({ name: p3.name })),
430
- ]),
431
- ]),
432
- pluralFilteredNestedSubSelect: () => Person.select((p) => p.pluralTestProp
433
- .where((pp) => pp.name.equals('Moa'))
434
- .select((pp) => [
435
- pp.name,
436
- pp.friends.select((f) => [f.name, f.hobby]),
437
- ])),
438
- // A filtered sub-select nested INSIDE another filtered sub-select
439
- nestedFilteredSubSelects: () => Person.select((p) => p.pluralTestProp
440
- .where((pp) => pp.name.equals('Moa'))
441
- .select((pp) => [
442
- pp.name,
443
- pp.friends
444
- .where((f) => f.name.equals('Jinx'))
445
- .select((f) => [f.name, f.hobby]),
446
- ])),
447
- selectDuplicatePaths: () => Person.select((p) => [
448
- p.bestFriend.name,
449
- p.bestFriend.hobby,
450
- p.bestFriend.isRealPerson,
451
- ]),
452
- outerWhereLimit: () => Person.select((p) => p.name)
453
- .where((p) => p.name.equals('Semmy').or(p.name.equals('Moa')))
454
- .limit(1),
455
- outerWhereDifferentPropsOr: () => Person.select((p) => [p.name, p.hobby])
456
- .where((p) => p.name.equals('Jinx').or(p.hobby.equals('Jogging'))),
457
- sortByAsc: () => Person.select((p) => p.name).orderBy((p) => p.name),
458
- sortByDesc: () => Person.select((p) => p.name).orderBy((p) => p.name, 'DESC'),
459
- updateSimple: (() => Person.update(updateSimple).for(entity('p1'))),
460
- createSimple: (() => Person.create({ name: 'Test Create', hobby: 'Chess' })),
461
- createWithFriends: (() => Person.create({
462
- name: 'Test Create',
463
- friends: [entity('p2'), { name: 'New Friend' }],
464
- })),
465
- createWithFixedId: (() => Person.create({
466
- __id: `${tmpEntityBase}fixed-id`,
467
- name: 'Fixed',
468
- bestFriend: entity('fixed-id-2'),
469
- })),
470
- deleteSingle: () => Person.delete(entity('to-delete')),
471
- deleteSingleRef: () => Person.delete(entity('to-delete')),
472
- deleteMultiple: () => Person.delete([entity('to-delete-1'), entity('to-delete-2')]),
473
- deleteMultipleFull: () => Person.delete([entity('to-delete-1'), entity('to-delete-2')]),
474
- updateOverwriteSet: (() => Person.update(updateOverwriteSet).for(entity('p1'))),
475
- updateUnsetSingleUndefined: (() => Person.update(updateUnsetSingleUndefined).for(entity('p1'))),
476
- updateUnsetSingleNull: (() => Person.update(updateUnsetSingleNull).for(entity('p1'))),
477
- updateOverwriteNested: (() => Person.update(updateOverwriteNested).for(entity('p1'))),
478
- updatePassIdReferences: (() => Person.update(updatePassIdReferences).for(entity('p1'))),
479
- updateAddRemoveMulti: (() => Person.update(updateAddRemoveMulti).for(entity('p1'))),
480
- updateRemoveMulti: (() => Person.update(updateRemoveMulti).for(entity('p1'))),
481
- updateAddRemoveSame: (() => Person.update(updateAddRemoveSame).for(entity('p1'))),
482
- updateUnsetMultiUndefined: (() => Person.update(updateUnsetMultiUndefined).for(entity('p1'))),
483
- updateNestedWithPredefinedId: (() => Person.update(updateNestedWithPredefinedId).for(entity('p1'))),
484
- updateBirthDate: (() => Person.update(updateBirthDate).for(entity('p1'))),
485
- preloadBestFriend: () => Person.select((p) => p.bestFriend.preloadFor(componentLike)),
486
- preloadBestFriendWithFieldSet: () => Person.select((p) => p.bestFriend.preloadFor(componentLikeWithFieldSet)),
487
- queryBuilderPreload: () => QueryBuilder.from(Person).select((p) => [p.name]).preload('bestFriend', componentLike),
488
- selectAllEmployeeProperties: () => Employee.selectAll(),
489
- // --- Deep nesting boundary tests (Phase 12 validation) ---
490
- // Triple-nested sub-selects: 3 levels of .select()
491
- tripleNestedSubSelect: () => Person.select((p) => p.friends.select((f) => f.bestFriend.select((bf) => bf.friends.select((ff) => ({ name: ff.name, hobby: ff.hobby }))))),
492
- // Double nested: singular → plural
493
- doubleNestedSingularPlural: () => Person.select((p) => p.bestFriend.select((bf) => bf.friends.select((f) => ({ name: f.name, hobby: f.hobby })))),
494
- // Double nested: plural → singular
495
- doubleNestedPluralSingular: () => Person.select((p) => p.friends.select((f) => f.bestFriend.select((bf) => ({ name: bf.name, isReal: bf.isRealPerson })))),
496
- // Sub-select returning array of paths (not custom object)
497
- subSelectArrayOfPaths: () => Person.select((p) => p.friends.select((f) => [f.name, f.hobby, f.birthDate])),
498
- // Sub-select on singular returning array of paths
499
- subSelectSingularArrayPaths: () => Person.select((p) => p.bestFriend.select((bf) => [bf.name, bf.hobby, bf.isRealPerson])),
500
- // Sub-select with count in custom object
501
- subSelectWithCount: () => Person.select((p) => p.friends.select((f) => ({
502
- name: f.name,
503
- numFriends: f.friends.size(),
504
- }))),
505
- // Mixed: plain path + sub-select in array
506
- mixedPathAndSubSelect: () => Person.select((p) => [
507
- p.name,
508
- p.friends.select((f) => ({ name: f.name, hobby: f.hobby })),
509
- ]),
510
- // Multiple sub-selects in array
511
- multipleSubSelectsInArray: () => Person.select((p) => [
512
- p.friends.select((f) => ({ name: f.name })),
513
- p.bestFriend.select((bf) => ({ hobby: bf.hobby })),
514
- ]),
515
- // Sub-select + one() unwrap
516
- subSelectWithOne: () => Person.select((p) => p.friends.select((f) => ({ name: f.name, hobby: f.hobby })))
517
- .where((p) => p.equals(entity('p1')))
518
- .one(),
519
- // selectAll() on sub-select plural
520
- subSelectAllPlural: () => Person.select((p) => p.friends.selectAll()),
521
- // selectAll() on sub-select singular
522
- subSelectAllSingular: () => Person.select((p) => p.bestFriend.selectAll()),
523
- // Employee sub-select (inheritance)
524
- employeeSubSelect: () => Employee.select((e) => e.bestFriend.select((bf) => ({ name: bf.name, dept: bf.department }))),
525
- // --- MINUS pattern tests ---
526
- // Exclude by shape type
527
- minusShape: () => Person.select((p) => p.name).minus(Employee),
528
- // Exclude by condition
529
- minusCondition: () => Person.select((p) => p.name).minus((p) => p.hobby.equals('Chess')),
530
- // Chained MINUS — two separate MINUS blocks
531
- minusChained: () => Person.select((p) => p.name).minus(Employee).minus((p) => p.hobby.equals('Chess')),
532
- // MINUS multi-property — exclude where ALL listed properties exist
533
- minusMultiProperty: () => Person.select((p) => p.name).minus((p) => [p.hobby, p.nickNames]),
534
- // MINUS nested path — exclude where nested property path exists
535
- minusNestedPath: () => Person.select((p) => p.name).minus((p) => [p.bestFriend.name]),
536
- // MINUS mixed — flat + nested in one call
537
- minusMixed: () => Person.select((p) => p.name).minus((p) => [p.hobby, p.bestFriend.name]),
538
- // MINUS single property existence (no array, returns raw QBO)
539
- minusSingleProperty: () => Person.select((p) => p.name).minus((p) => p.hobby),
540
- // --- Bulk delete tests ---
541
- // Delete all instances of a shape
542
- deleteAll: () => Person.deleteAll(),
543
- // Delete with where condition
544
- deleteWhere: () => Person.deleteWhere((p) => p.hobby.equals('Chess')),
545
- // Builder-chain equivalents for equivalence testing
546
- deleteAllBuilder: () => DeleteBuilder.from(Person).all(),
547
- deleteWhereBuilder: () => DeleteBuilder.from(Person).where((p) => p.hobby.equals('Chess')),
548
- // --- Conditional update tests ---
549
- // Update all instances
550
- updateForAll: () => Person.update({ hobby: 'Chess' }).forAll(),
551
- // Update with where condition
552
- updateWhere: () => Person.update({ hobby: 'Archived' }).where((p) => p.hobby.equals('Chess')),
553
- // --- Computed expression tests ---
554
- // Simple expression: string length
555
- exprStrlen: () => Person.select((p) => p.name.strlen()),
556
- // Expression with custom key
557
- exprCustomKey: () => Person.select((p) => ({ nameLen: p.name.strlen() })),
558
- // Expression on nested path
559
- exprNestedPath: () => Person.select((p) => p.bestFriend.name.ucase()),
560
- // Multiple expressions in array
561
- exprMultiple: () => Person.select((p) => [
562
- p.name,
563
- p.name.strlen(),
564
- ]),
565
- // --- Mutation expression tests ---
566
- // Functional callback update with expression
567
- updateExprCallback: () => Dog.update((p) => ({ guardDogLevel: p.guardDogLevel.plus(1) })).for(entity('d1')),
568
- // Expression in update with Expr.now()
569
- updateExprNow: () => {
570
- const { Expr } = require('../expressions/Expr');
571
- return Person.update({ birthDate: Expr.now() }).for(entity('p1'));
572
- },
573
- // --- Traversal expression mutation tests ---
574
- // Multi-segment expression ref: p.bestFriend.name.ucase()
575
- updateExprTraversal: () => Person.update((p) => ({ hobby: p.bestFriend.name.ucase() })).for(entity('p1')),
576
- // Shared traversal: two fields referencing same intermediate (p.bestFriend)
577
- updateExprSharedTraversal: () => Person.update((p) => ({
578
- name: p.bestFriend.name.ucase(),
579
- hobby: p.bestFriend.hobby.lcase(),
580
- })).for(entity('p1')),
581
- // --- Expression-based WHERE filter tests (Phase 8) ---
582
- // Expression WHERE: STRLEN filter
583
- whereExprStrlen: () => Person.select((p) => ({ name: p.name })).where(((p) => p.name.strlen().gt(5))),
584
- // Expression WHERE: arithmetic
585
- whereExprArithmetic: () => Person.select((p) => ({ name: p.name })).where(((p) => p.name.strlen().plus(10).lt(100))),
586
- // Expression WHERE: AND chaining on ExpressionNode
587
- whereExprAndChain: () => Person.select((p) => ({ name: p.name })).where(((p) => p.name.strlen().gt(5).and(p.name.strlen().lt(20)))),
588
- // Expression WHERE: mixed Evaluation .and() with ExpressionNode
589
- whereExprMixed: () => Person.select((p) => ({ name: p.name })).where((p) => p.name.equals('Bob').and(p.name.strlen().gt(3))),
590
- // Expression WHERE on UpdateBuilder
591
- whereExprUpdateBuilder: () => Person.update({ hobby: 'Archived' }).where(((p) => p.name.strlen().gt(3))),
592
- // Expression WHERE on DeleteBuilder
593
- whereExprDeleteBuilder: () => DeleteBuilder.from(Person).where(((p) => p.name.strlen().gt(3))),
594
- // Expression WHERE with nested path traversal
595
- whereExprNestedPath: () => Person.select((p) => ({ name: p.name })).where(((p) => p.bestFriend.name.strlen().gt(3))),
596
- // Expression WHERE combined with expression projection
597
- whereExprWithProjection: () => Person.select((p) => ({
598
- name: p.name,
599
- nameLen: p.name.strlen(),
600
- })).where(((p) => p.name.strlen().gt(2))),
601
- };
602
- //# sourceMappingURL=query-fixtures.js.map