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