grafeo-ogm 2.4.6 → 2.4.8

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 (189) hide show
  1. package/CHANGELOG.md +83 -0
  2. package/README.md +77 -31
  3. package/dist/cjs/cli/commands/db-push.d.ts.map +1 -1
  4. package/dist/cjs/cli/commands/db-push.js +74 -8
  5. package/dist/cjs/cli/commands/db-push.js.map +1 -1
  6. package/dist/cjs/cli/commands/db-seed.d.ts.map +1 -1
  7. package/dist/cjs/cli/commands/db-seed.js +10 -1
  8. package/dist/cjs/cli/commands/db-seed.js.map +1 -1
  9. package/dist/cjs/cli/introspect.d.ts +2 -2
  10. package/dist/cjs/cli/introspect.d.ts.map +1 -1
  11. package/dist/cjs/cli/introspect.js +70 -3
  12. package/dist/cjs/cli/introspect.js.map +1 -1
  13. package/dist/cjs/cli/push-planner.d.ts +61 -2
  14. package/dist/cjs/cli/push-planner.d.ts.map +1 -1
  15. package/dist/cjs/cli/push-planner.js +182 -17
  16. package/dist/cjs/cli/push-planner.js.map +1 -1
  17. package/dist/cjs/compilers/fulltext.compiler.d.ts.map +1 -1
  18. package/dist/cjs/compilers/fulltext.compiler.js +5 -1
  19. package/dist/cjs/compilers/fulltext.compiler.js.map +1 -1
  20. package/dist/cjs/compilers/mutation.compiler.d.ts +107 -1
  21. package/dist/cjs/compilers/mutation.compiler.d.ts.map +1 -1
  22. package/dist/cjs/compilers/mutation.compiler.js +647 -380
  23. package/dist/cjs/compilers/mutation.compiler.js.map +1 -1
  24. package/dist/cjs/compilers/select-normalizer.d.ts.map +1 -1
  25. package/dist/cjs/compilers/select-normalizer.js +12 -1
  26. package/dist/cjs/compilers/select-normalizer.js.map +1 -1
  27. package/dist/cjs/compilers/selection.compiler.d.ts +40 -0
  28. package/dist/cjs/compilers/selection.compiler.d.ts.map +1 -1
  29. package/dist/cjs/compilers/selection.compiler.js +123 -21
  30. package/dist/cjs/compilers/selection.compiler.js.map +1 -1
  31. package/dist/cjs/compilers/where.compiler.d.ts.map +1 -1
  32. package/dist/cjs/compilers/where.compiler.js +36 -15
  33. package/dist/cjs/compilers/where.compiler.js.map +1 -1
  34. package/dist/cjs/execution/executor.d.ts +34 -9
  35. package/dist/cjs/execution/executor.d.ts.map +1 -1
  36. package/dist/cjs/execution/executor.js +42 -5
  37. package/dist/cjs/execution/executor.js.map +1 -1
  38. package/dist/cjs/execution/result-mapper.d.ts.map +1 -1
  39. package/dist/cjs/execution/result-mapper.js +4 -2
  40. package/dist/cjs/execution/result-mapper.js.map +1 -1
  41. package/dist/cjs/generator/generate-types.d.ts.map +1 -1
  42. package/dist/cjs/generator/generate-types.js +76 -0
  43. package/dist/cjs/generator/generate-types.js.map +1 -1
  44. package/dist/cjs/generator/type-emitters/aggregation-emitter.d.ts.map +1 -1
  45. package/dist/cjs/generator/type-emitters/aggregation-emitter.js +19 -7
  46. package/dist/cjs/generator/type-emitters/aggregation-emitter.js.map +1 -1
  47. package/dist/cjs/generator/type-emitters/input-emitter.js +13 -4
  48. package/dist/cjs/generator/type-emitters/input-emitter.js.map +1 -1
  49. package/dist/cjs/generator/type-emitters/model-map-emitter.d.ts +1 -0
  50. package/dist/cjs/generator/type-emitters/model-map-emitter.d.ts.map +1 -1
  51. package/dist/cjs/generator/type-emitters/model-map-emitter.js +5 -20
  52. package/dist/cjs/generator/type-emitters/model-map-emitter.js.map +1 -1
  53. package/dist/cjs/generator/type-emitters/node-type-emitter.d.ts +3 -0
  54. package/dist/cjs/generator/type-emitters/node-type-emitter.d.ts.map +1 -1
  55. package/dist/cjs/generator/type-emitters/node-type-emitter.js +6 -11
  56. package/dist/cjs/generator/type-emitters/node-type-emitter.js.map +1 -1
  57. package/dist/cjs/generator/type-emitters/select-fields-emitter.js +21 -2
  58. package/dist/cjs/generator/type-emitters/select-fields-emitter.js.map +1 -1
  59. package/dist/cjs/generator/type-emitters/where-emitter.js +3 -3
  60. package/dist/cjs/generator/type-emitters/where-emitter.js.map +1 -1
  61. package/dist/cjs/index.d.ts +1 -1
  62. package/dist/cjs/index.d.ts.map +1 -1
  63. package/dist/cjs/interface-model.d.ts.map +1 -1
  64. package/dist/cjs/interface-model.js +6 -0
  65. package/dist/cjs/interface-model.js.map +1 -1
  66. package/dist/cjs/model.d.ts.map +1 -1
  67. package/dist/cjs/model.js +6 -0
  68. package/dist/cjs/model.js.map +1 -1
  69. package/dist/cjs/ogm.d.ts +22 -2
  70. package/dist/cjs/ogm.d.ts.map +1 -1
  71. package/dist/cjs/ogm.js +42 -5
  72. package/dist/cjs/ogm.js.map +1 -1
  73. package/dist/cjs/policy/nested-writes.d.ts.map +1 -1
  74. package/dist/cjs/policy/nested-writes.js +40 -20
  75. package/dist/cjs/policy/nested-writes.js.map +1 -1
  76. package/dist/cjs/schema/parser.d.ts.map +1 -1
  77. package/dist/cjs/schema/parser.js +94 -16
  78. package/dist/cjs/schema/parser.js.map +1 -1
  79. package/dist/cjs/schema/types.d.ts +1 -1
  80. package/dist/cjs/schema/types.d.ts.map +1 -1
  81. package/dist/cjs/testing/cypher-assert.d.ts.map +1 -1
  82. package/dist/cjs/testing/cypher-assert.js +25 -2
  83. package/dist/cjs/testing/cypher-assert.js.map +1 -1
  84. package/dist/cjs/testing/neo4j-record-factory.d.ts +25 -2
  85. package/dist/cjs/testing/neo4j-record-factory.d.ts.map +1 -1
  86. package/dist/cjs/testing/neo4j-record-factory.js +82 -3
  87. package/dist/cjs/testing/neo4j-record-factory.js.map +1 -1
  88. package/dist/cjs/utils/cypher-field-projection.d.ts +31 -3
  89. package/dist/cjs/utils/cypher-field-projection.d.ts.map +1 -1
  90. package/dist/cjs/utils/cypher-field-projection.js +59 -7
  91. package/dist/cjs/utils/cypher-field-projection.js.map +1 -1
  92. package/dist/cjs/utils/write-coercion.d.ts +18 -0
  93. package/dist/cjs/utils/write-coercion.d.ts.map +1 -1
  94. package/dist/cjs/utils/write-coercion.js +74 -1
  95. package/dist/cjs/utils/write-coercion.js.map +1 -1
  96. package/dist/esm/cli/commands/db-push.d.ts.map +1 -1
  97. package/dist/esm/cli/commands/db-push.js +74 -8
  98. package/dist/esm/cli/commands/db-push.js.map +1 -1
  99. package/dist/esm/cli/commands/db-seed.d.ts.map +1 -1
  100. package/dist/esm/cli/commands/db-seed.js +10 -1
  101. package/dist/esm/cli/commands/db-seed.js.map +1 -1
  102. package/dist/esm/cli/introspect.d.ts +2 -2
  103. package/dist/esm/cli/introspect.d.ts.map +1 -1
  104. package/dist/esm/cli/introspect.js +70 -3
  105. package/dist/esm/cli/introspect.js.map +1 -1
  106. package/dist/esm/cli/push-planner.d.ts +61 -2
  107. package/dist/esm/cli/push-planner.d.ts.map +1 -1
  108. package/dist/esm/cli/push-planner.js +183 -18
  109. package/dist/esm/cli/push-planner.js.map +1 -1
  110. package/dist/esm/compilers/fulltext.compiler.d.ts.map +1 -1
  111. package/dist/esm/compilers/fulltext.compiler.js +5 -1
  112. package/dist/esm/compilers/fulltext.compiler.js.map +1 -1
  113. package/dist/esm/compilers/mutation.compiler.d.ts +107 -1
  114. package/dist/esm/compilers/mutation.compiler.d.ts.map +1 -1
  115. package/dist/esm/compilers/mutation.compiler.js +644 -380
  116. package/dist/esm/compilers/mutation.compiler.js.map +1 -1
  117. package/dist/esm/compilers/select-normalizer.d.ts.map +1 -1
  118. package/dist/esm/compilers/select-normalizer.js +12 -1
  119. package/dist/esm/compilers/select-normalizer.js.map +1 -1
  120. package/dist/esm/compilers/selection.compiler.d.ts +40 -0
  121. package/dist/esm/compilers/selection.compiler.d.ts.map +1 -1
  122. package/dist/esm/compilers/selection.compiler.js +123 -21
  123. package/dist/esm/compilers/selection.compiler.js.map +1 -1
  124. package/dist/esm/compilers/where.compiler.d.ts.map +1 -1
  125. package/dist/esm/compilers/where.compiler.js +37 -16
  126. package/dist/esm/compilers/where.compiler.js.map +1 -1
  127. package/dist/esm/execution/executor.d.ts +34 -9
  128. package/dist/esm/execution/executor.d.ts.map +1 -1
  129. package/dist/esm/execution/executor.js +41 -5
  130. package/dist/esm/execution/executor.js.map +1 -1
  131. package/dist/esm/execution/result-mapper.d.ts.map +1 -1
  132. package/dist/esm/execution/result-mapper.js +4 -2
  133. package/dist/esm/execution/result-mapper.js.map +1 -1
  134. package/dist/esm/generator/generate-types.d.ts.map +1 -1
  135. package/dist/esm/generator/generate-types.js +76 -0
  136. package/dist/esm/generator/generate-types.js.map +1 -1
  137. package/dist/esm/generator/type-emitters/aggregation-emitter.d.ts.map +1 -1
  138. package/dist/esm/generator/type-emitters/aggregation-emitter.js +19 -7
  139. package/dist/esm/generator/type-emitters/aggregation-emitter.js.map +1 -1
  140. package/dist/esm/generator/type-emitters/input-emitter.js +13 -4
  141. package/dist/esm/generator/type-emitters/input-emitter.js.map +1 -1
  142. package/dist/esm/generator/type-emitters/model-map-emitter.d.ts +1 -0
  143. package/dist/esm/generator/type-emitters/model-map-emitter.d.ts.map +1 -1
  144. package/dist/esm/generator/type-emitters/model-map-emitter.js +5 -20
  145. package/dist/esm/generator/type-emitters/model-map-emitter.js.map +1 -1
  146. package/dist/esm/generator/type-emitters/node-type-emitter.d.ts +3 -0
  147. package/dist/esm/generator/type-emitters/node-type-emitter.d.ts.map +1 -1
  148. package/dist/esm/generator/type-emitters/node-type-emitter.js +6 -11
  149. package/dist/esm/generator/type-emitters/node-type-emitter.js.map +1 -1
  150. package/dist/esm/generator/type-emitters/select-fields-emitter.js +21 -2
  151. package/dist/esm/generator/type-emitters/select-fields-emitter.js.map +1 -1
  152. package/dist/esm/generator/type-emitters/where-emitter.js +3 -3
  153. package/dist/esm/generator/type-emitters/where-emitter.js.map +1 -1
  154. package/dist/esm/index.d.ts +1 -1
  155. package/dist/esm/index.d.ts.map +1 -1
  156. package/dist/esm/interface-model.d.ts.map +1 -1
  157. package/dist/esm/interface-model.js +6 -0
  158. package/dist/esm/interface-model.js.map +1 -1
  159. package/dist/esm/model.d.ts.map +1 -1
  160. package/dist/esm/model.js +6 -0
  161. package/dist/esm/model.js.map +1 -1
  162. package/dist/esm/ogm.d.ts +22 -2
  163. package/dist/esm/ogm.d.ts.map +1 -1
  164. package/dist/esm/ogm.js +43 -6
  165. package/dist/esm/ogm.js.map +1 -1
  166. package/dist/esm/policy/nested-writes.d.ts.map +1 -1
  167. package/dist/esm/policy/nested-writes.js +40 -20
  168. package/dist/esm/policy/nested-writes.js.map +1 -1
  169. package/dist/esm/schema/parser.d.ts.map +1 -1
  170. package/dist/esm/schema/parser.js +94 -16
  171. package/dist/esm/schema/parser.js.map +1 -1
  172. package/dist/esm/schema/types.d.ts +1 -1
  173. package/dist/esm/schema/types.d.ts.map +1 -1
  174. package/dist/esm/testing/cypher-assert.d.ts.map +1 -1
  175. package/dist/esm/testing/cypher-assert.js +25 -2
  176. package/dist/esm/testing/cypher-assert.js.map +1 -1
  177. package/dist/esm/testing/neo4j-record-factory.d.ts +25 -2
  178. package/dist/esm/testing/neo4j-record-factory.d.ts.map +1 -1
  179. package/dist/esm/testing/neo4j-record-factory.js +82 -3
  180. package/dist/esm/testing/neo4j-record-factory.js.map +1 -1
  181. package/dist/esm/utils/cypher-field-projection.d.ts +31 -3
  182. package/dist/esm/utils/cypher-field-projection.d.ts.map +1 -1
  183. package/dist/esm/utils/cypher-field-projection.js +58 -7
  184. package/dist/esm/utils/cypher-field-projection.js.map +1 -1
  185. package/dist/esm/utils/write-coercion.d.ts +18 -0
  186. package/dist/esm/utils/write-coercion.d.ts.map +1 -1
  187. package/dist/esm/utils/write-coercion.js +73 -1
  188. package/dist/esm/utils/write-coercion.js.map +1 -1
  189. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"nested-writes.d.ts","sourceRoot":"","sources":["../../../src/policy/nested-writes.ts"],"names":[],"mappings":"AA0BA,OAAO,KAAK,EACV,cAAc,EAEd,cAAc,EACf,MAAM,iBAAiB,CAAC;AAGzB,OAAO,EAGL,KAAK,SAAS,EACd,KAAK,mBAAmB,EACzB,MAAM,SAAS,CAAC;AAKjB;;;;;;;;;;;;GAYG;AACH,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,mBAAmB,GAAG,IAAI,EAClC,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,aAAa,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GAC7C,IAAI,CAkBN;AAED;;;;;;GAMG;AACH,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,mBAAmB,GAAG,IAAI,EAClC,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,SAAS,EACpB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,GACzC,IAAI,CAcN;AAED;;;GAGG;AACH,wBAAgB,0BAA0B,CACxC,MAAM,EAAE,cAAc,EACtB,OAAO,EAAE,cAAc,EACvB,MAAM,EAAE,aAAa,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EAC9C,MAAM,EAAE,mBAAmB,GAAG,IAAI,GACjC,IAAI,CAIN;AAED;;;GAGG;AACH,wBAAgB,0BAA0B,CACxC,MAAM,EAAE,cAAc,EACtB,OAAO,EAAE,cAAc,EACvB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,EAC3C,MAAM,EAAE,mBAAmB,GAAG,IAAI,GACjC,IAAI,CAGN"}
1
+ {"version":3,"file":"nested-writes.d.ts","sourceRoot":"","sources":["../../../src/policy/nested-writes.ts"],"names":[],"mappings":"AAiCA,OAAO,KAAK,EACV,cAAc,EAEd,cAAc,EACf,MAAM,iBAAiB,CAAC;AAIzB,OAAO,EAGL,KAAK,SAAS,EACd,KAAK,mBAAmB,EACzB,MAAM,SAAS,CAAC;AAKjB;;;;;;;;;;;;GAYG;AACH,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,mBAAmB,GAAG,IAAI,EAClC,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,aAAa,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GAC7C,IAAI,CAkBN;AAED;;;;;;GAMG;AACH,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,mBAAmB,GAAG,IAAI,EAClC,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,SAAS,EACpB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,GACzC,IAAI,CAcN;AAED;;;GAGG;AACH,wBAAgB,0BAA0B,CACxC,MAAM,EAAE,cAAc,EACtB,OAAO,EAAE,cAAc,EACvB,MAAM,EAAE,aAAa,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EAC9C,MAAM,EAAE,mBAAmB,GAAG,IAAI,GACjC,IAAI,CAIN;AAED;;;GAGG;AACH,wBAAgB,0BAA0B,CACxC,MAAM,EAAE,cAAc,EACtB,OAAO,EAAE,cAAc,EACvB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,EAC3C,MAAM,EAAE,mBAAmB,GAAG,IAAI,GACjC,IAAI,CAGN"}
@@ -26,10 +26,14 @@ exports.assertNestedUpdatesAllowed = assertNestedUpdatesAllowed;
26
26
  * relationship → `{ create, update, … }` (single item or array), union
27
27
  * targets keyed by member name, `create` items as `{ node, edge }` or a
28
28
  * bare node, `update` as `{ node, edge }` or a bare node. Interface
29
- * targets are skipped, as they are by the compiler (it emits no nested
30
- * create / update for them).
29
+ * targets are walked like unions when keyed by implementer, and in the
30
+ * flat shape a create checks the implementer it names while an update
31
+ * checks EVERY implementer it may reach (v2.4.8 — pre-2.4.8 interface
32
+ * targets were skipped, as the compiler then emitted no write for them).
31
33
  */
34
+ const mutation_compiler_1 = require("../compilers/mutation.compiler");
32
35
  const errors_1 = require("../errors");
36
+ const utils_1 = require("../schema/utils");
33
37
  const validation_1 = require("../utils/validation");
34
38
  const errors_2 = require("./errors");
35
39
  const types_1 = require("./types");
@@ -139,7 +143,10 @@ function walkUpdate(schema, nodeDef, update, bundle, depth) {
139
143
  // Same node-spec resolution as the compiler's nested update.
140
144
  const spec = item.update;
141
145
  const nodeUpdate = (spec.node ?? (spec.edge ? {} : spec));
142
- evaluateWriteRestrictives(targetBundle(bundle, targetDef.typeName, 'update'), targetDef.typeName, 'update', nodeUpdate);
146
+ // A flat interface update may write any implementer: each one's
147
+ // write restrictives must accept it.
148
+ for (const typeName of concreteTypes(schema, targetDef))
149
+ evaluateWriteRestrictives(targetBundle(bundle, typeName, 'update'), typeName, 'update', nodeUpdate);
143
150
  if ((0, validation_1.isPlainObject)(nodeUpdate))
144
151
  walkUpdate(schema, targetDef, nodeUpdate, bundle, depth + 1);
145
152
  }
@@ -147,37 +154,50 @@ function walkUpdate(schema, nodeDef, update, bundle, depth) {
147
154
  }
148
155
  }
149
156
  function checkCreates(schema, targetDef, creates, bundle, depth) {
157
+ const abstract = (0, mutation_compiler_1.abstractTarget)(targetDef.typeName, schema);
150
158
  for (const item of asArray(creates)) {
151
159
  if (!(0, validation_1.isPlainObject)(item))
152
160
  continue;
153
161
  // Same node-spec resolution as the compiler's nested create.
154
- const nodeSpec = (item.node ?? item);
155
- evaluateCreatePolicies(targetBundle(bundle, targetDef.typeName, 'create'), targetDef.typeName, [nodeSpec]);
162
+ let nodeSpec = (item.node ?? item);
163
+ let createDef = targetDef;
164
+ if (abstract) {
165
+ // A flat interface create names its implementer: check THAT type.
166
+ const [member, memberSpec] = (0, mutation_compiler_1.unwrapAbstractCreateNode)(nodeSpec, abstract, targetDef.typeName);
167
+ createDef = schema.nodes.get(member);
168
+ nodeSpec = memberSpec;
169
+ }
170
+ evaluateCreatePolicies(targetBundle(bundle, createDef.typeName, 'create'), createDef.typeName, [nodeSpec]);
156
171
  if ((0, validation_1.isPlainObject)(nodeSpec))
157
- walkCreate(schema, targetDef, nodeSpec, bundle, depth + 1);
172
+ walkCreate(schema, createDef, nodeSpec, bundle, depth + 1);
158
173
  }
159
174
  }
160
175
  /**
161
- * Concrete targets of a relationship paired with their slice of the
162
- * input: the whole value for a node target, one entry per member key
163
- * for a union target, none for an interface target.
176
+ * Targets of a relationship paired with their slice of the input: the
177
+ * whole value for a node target, one entry per member key for a union or
178
+ * interface target keyed by member, and the interface itself for a flat
179
+ * interface input (its creates name their implementer; see checkCreates).
180
+ * The shape rules are the compiler's (`perMemberEntries`).
164
181
  */
165
182
  function relationshipTargets(schema, relDef, value) {
166
183
  const nodeDef = schema.nodes.get(relDef.target);
167
184
  if (nodeDef)
168
185
  return [[nodeDef, value]];
169
- const members = schema.unions?.get(relDef.target);
170
- if (!members || !(0, validation_1.isPlainObject)(value))
186
+ const abstract = (0, mutation_compiler_1.abstractTarget)(relDef.target, schema);
187
+ if (!abstract)
171
188
  return [];
172
- const targets = [];
173
- for (const [memberKey, memberValue] of Object.entries(value)) {
174
- const memberDef = members.includes(memberKey)
175
- ? schema.nodes.get(memberKey)
176
- : undefined;
177
- if (memberDef && memberValue != null)
178
- targets.push([memberDef, memberValue]);
179
- }
180
- return targets;
189
+ const entries = (0, mutation_compiler_1.perMemberEntries)(value, abstract, relDef.fieldName);
190
+ if (entries)
191
+ return entries.map(([member, memberValue]) => [
192
+ schema.nodes.get(member),
193
+ memberValue,
194
+ ]);
195
+ const ifaceDef = (0, utils_1.resolveTargetDef)(relDef.target, schema);
196
+ return ifaceDef ? [[ifaceDef, value]] : [];
197
+ }
198
+ /** The concrete type(s) a write on `targetDef` can reach. */
199
+ function concreteTypes(schema, targetDef) {
200
+ return ((0, mutation_compiler_1.abstractTarget)(targetDef.typeName, schema)?.members ?? [targetDef.typeName]);
181
201
  }
182
202
  /** The target type's bundle for `op`; a type without policies is open. */
183
203
  function targetBundle(bundle, typeName, op) {
@@ -1 +1 @@
1
- {"version":3,"file":"nested-writes.js","sourceRoot":"","sources":["../../../src/policy/nested-writes.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"nested-writes.js","sourceRoot":"","sources":["../../../src/policy/nested-writes.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../../src/schema/parser.ts"],"names":[],"mappings":"AAqBA,OAAO,KAAK,EACV,cAAc,EAOf,MAAM,SAAS,CAAC;AAKjB;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAG9C;AAqUD;;GAEG;AACH,wBAAgB,WAAW,CAAC,YAAY,EAAE,MAAM,GAAG,cAAc,CA8IhE"}
1
+ {"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../../src/schema/parser.ts"],"names":[],"mappings":"AAsBA,OAAO,KAAK,EACV,cAAc,EAOf,MAAM,SAAS,CAAC;AAKjB;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAG9C;AAiXD;;GAEG;AACH,wBAAgB,WAAW,CAAC,YAAY,EAAE,MAAM,GAAG,cAAc,CAgJhE"}
@@ -82,8 +82,26 @@ function getDirectiveArgValue(directive, argName) {
82
82
  return undefined;
83
83
  return arg.value;
84
84
  }
85
+ /**
86
+ * String encoding of a scalar `@default` value (`'true'`, `'5'`, `'RED'`),
87
+ * or `undefined` for kinds that have no scalar encoding (lists, objects,
88
+ * null, variables).
89
+ */
90
+ function scalarDefaultString(val) {
91
+ switch (val.kind) {
92
+ case graphql_1.Kind.STRING:
93
+ case graphql_1.Kind.ENUM:
94
+ case graphql_1.Kind.INT:
95
+ case graphql_1.Kind.FLOAT:
96
+ return val.value;
97
+ case graphql_1.Kind.BOOLEAN:
98
+ return String(val.value);
99
+ default:
100
+ return undefined;
101
+ }
102
+ }
85
103
  /** Parse a field definition into either a PropertyDefinition or RelationshipDefinition */
86
- function parseField(field, enumNames) {
104
+ function parseField(field, enumNames, ownerName) {
87
105
  const { typeName, isArray, isRequired, isListItemRequired } = unwrapType(field.type);
88
106
  const relationshipDirective = getDirective(field, 'relationship');
89
107
  const declareRelDirective = getDirective(field, 'declareRelationship');
@@ -95,10 +113,17 @@ function parseField(field, enumNames) {
95
113
  if (!relType || !direction)
96
114
  // Malformed directive, skip
97
115
  return {};
116
+ // Through v2.4.7 any value was cast to 'IN' | 'OUT' unchecked. Reads
117
+ // treat anything but 'IN' as OUT while writes treat anything but 'OUT'
118
+ // as IN, so e.g. `direction: "out"` wrote every edge reversed and the
119
+ // reads then could not see them. Reject at parse time instead.
120
+ if (direction !== 'IN' && direction !== 'OUT')
121
+ throw new errors_1.OGMError(`Invalid @relationship direction "${direction}" on ${ownerName}.${field.name.value}: ` +
122
+ `direction must be exactly "IN" or "OUT" (case-sensitive).`);
98
123
  const rel = {
99
124
  fieldName: field.name.value,
100
125
  type: relType,
101
- direction: direction,
126
+ direction,
102
127
  target: typeName,
103
128
  isArray,
104
129
  isRequired,
@@ -128,17 +153,24 @@ function parseField(field, enumNames) {
128
153
  let defaultValue;
129
154
  if (defaultDirective) {
130
155
  const val = getDirectiveArgValue(defaultDirective, 'value');
131
- if (val)
132
- if (val.kind === graphql_1.Kind.STRING)
133
- defaultValue = val.value;
134
- else if (val.kind === graphql_1.Kind.BOOLEAN)
135
- defaultValue = String(val.value);
136
- else if (val.kind === graphql_1.Kind.ENUM)
137
- defaultValue = val.value;
138
- else if (val.kind === graphql_1.Kind.INT)
139
- defaultValue = val.value;
140
- else if (val.kind === graphql_1.Kind.FLOAT)
141
- defaultValue = val.value;
156
+ if (val && val.kind === graphql_1.Kind.LIST) {
157
+ // Through v2.4.7 there was no LIST branch: a list default parsed as
158
+ // `undefined` and creates silently wrote nothing. Elements use the
159
+ // same string encoding as scalar defaults (converted by type at
160
+ // write time, see resolveDefaultWriteValue).
161
+ const where = `${ownerName}.${field.name.value}`;
162
+ if (!isArray)
163
+ throw new errors_1.OGMError(`Invalid @default on ${where}: a list @default was given but the field is not a list type.`);
164
+ defaultValue = val.values.map((el) => {
165
+ const scalar = scalarDefaultString(el);
166
+ if (scalar === undefined)
167
+ throw new errors_1.OGMError(`Invalid @default on ${where}: list defaults may ` +
168
+ `only contain String, Int, Float, Boolean or enum values.`);
169
+ return scalar;
170
+ });
171
+ }
172
+ else if (val)
173
+ defaultValue = scalarDefaultString(val);
142
174
  }
143
175
  // Determine if this is truly a scalar property
144
176
  // A non-scalar, non-enum type without @relationship is unusual but we treat it as a property
@@ -299,7 +331,7 @@ function parseSchema(schemaSource) {
299
331
  const properties = new Map();
300
332
  const relationships = new Map();
301
333
  for (const field of intDef.fields ?? []) {
302
- const parsed = parseField(field, enumNames);
334
+ const parsed = parseField(field, enumNames, intDef.name.value);
303
335
  if (parsed.property)
304
336
  properties.set(parsed.property.name, parsed.property);
305
337
  if (parsed.relationship)
@@ -324,7 +356,7 @@ function parseSchema(schemaSource) {
324
356
  if (relPropsTypeNames.has(typeName)) {
325
357
  const properties = new Map();
326
358
  for (const field of objDef.fields ?? []) {
327
- const parsed = parseField(field, enumNames);
359
+ const parsed = parseField(field, enumNames, typeName);
328
360
  if (parsed.property)
329
361
  properties.set(parsed.property.name, parsed.property);
330
362
  }
@@ -340,7 +372,7 @@ function parseSchema(schemaSource) {
340
372
  const properties = new Map();
341
373
  const relationships = new Map();
342
374
  for (const field of objDef.fields ?? []) {
343
- const parsed = parseField(field, enumNames);
375
+ const parsed = parseField(field, enumNames, typeName);
344
376
  if (parsed.property)
345
377
  properties.set(parsed.property.name, parsed.property);
346
378
  if (parsed.relationship)
@@ -382,6 +414,52 @@ function parseSchema(schemaSource) {
382
414
  };
383
415
  metadata.nodes.set(typeName, nodeDef);
384
416
  }
417
+ resolveDeclaredRelationships(metadata);
385
418
  return metadata;
386
419
  }
420
+ /**
421
+ * Fill in `@declareRelationship` interface relationships from the
422
+ * implementors' `@relationship` directives. Through v2.4.7 they kept
423
+ * `type: ''`, so every InterfaceModel operator on them (`actors_SOME`,
424
+ * `actorsConnection`, selecting `actors { ... }`) threw
425
+ * `Invalid identifier ""`. The InterfaceModel matches the shared interface
426
+ * label, so one type/direction/properties must hold for every implementor;
427
+ * if they disagree there is no single correct pattern and the schema is
428
+ * rejected. Interfaces with no implementors are left as declared.
429
+ */
430
+ function resolveDeclaredRelationships(metadata) {
431
+ for (const iface of metadata.interfaces.values())
432
+ for (const rel of iface.relationships.values()) {
433
+ if (rel.type !== '')
434
+ continue;
435
+ const where = `${iface.name}.${rel.fieldName}`;
436
+ let first;
437
+ for (const implName of iface.implementedBy) {
438
+ const implRel = metadata.nodes
439
+ .get(implName)
440
+ ?.relationships.get(rel.fieldName);
441
+ if (!implRel)
442
+ throw new errors_1.OGMError(`Cannot resolve @declareRelationship ${where}: implementor ` +
443
+ `${implName}.${rel.fieldName} has no @relationship directive.`);
444
+ if (!first) {
445
+ first = { owner: implName, rel: implRel };
446
+ continue;
447
+ }
448
+ const fields = ['type', 'direction', 'properties'];
449
+ for (const key of fields)
450
+ if (implRel[key] !== first.rel[key])
451
+ throw new errors_1.OGMError(`Cannot resolve @declareRelationship ${where}: ` +
452
+ `${first.owner}.${rel.fieldName} and ${implName}.${rel.fieldName} ` +
453
+ `declare a different ${key} (${JSON.stringify(first.rel[key] ?? null)} vs ` +
454
+ `${JSON.stringify(implRel[key] ?? null)}). Every implementor must use ` +
455
+ `the same type, direction and properties.`);
456
+ }
457
+ if (!first)
458
+ continue;
459
+ rel.type = first.rel.type;
460
+ rel.direction = first.rel.direction;
461
+ if (first.rel.properties !== undefined)
462
+ rel.properties = first.rel.properties;
463
+ }
464
+ }
387
465
  //# sourceMappingURL=parser.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"parser.js","sourceRoot":"","sources":["../../../src/schema/parser.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"parser.js","sourceRoot":"","sources":["../../../src/schema/parser.ts"],"names":[],"mappings":"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"}
@@ -21,7 +21,7 @@ export interface PropertyDefinition {
21
21
  cypherStatement?: string;
22
22
  cypherColumnName?: string;
23
23
  directives: string[];
24
- defaultValue?: string;
24
+ defaultValue?: string | string[];
25
25
  }
26
26
  export interface RelationshipDefinition {
27
27
  fieldName: string;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/schema/types.ts"],"names":[],"mappings":"AAAA,0DAA0D;AAC1D,MAAM,MAAM,UAAU,GAClB,MAAM,GACN,MAAM,GACN,OAAO,GACP,IAAI,GACJ,UAAU,EAAE,GACZ;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,CAAA;CAAE,CAAC;AAElC,6BAA6B;AAC7B,MAAM,WAAW,UAAU;IACzB,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,GAAG,UAAU,GAAG,UAAU,EAAE,CAAC;CACvD;AACD,MAAM,WAAW,aAAa;IAC5B,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,GAAG,aAAa,GAAG,aAAa,EAAE,CAAC;CAC7D;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;IACjB,kBAAkB,EAAE,OAAO,CAAC;IAC5B,WAAW,EAAE,OAAO,CAAC;IACrB,QAAQ,EAAE,OAAO,CAAC;IAClB,QAAQ,EAAE,OAAO,CAAC;IAClB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,sBAAsB;IACrC,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,IAAI,GAAG,KAAK,CAAC;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,MAAM,WAAW,WAAW;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;IAC5C,aAAa,EAAE,GAAG,CAAC,MAAM,EAAE,sBAAsB,CAAC,CAAC;IACnD,eAAe,EAAE,aAAa,EAAE,CAAC;IACjC,aAAa,CAAC,EAAE,WAAW,EAAE,CAAC;IAC9B,oBAAoB,EAAE,MAAM,EAAE,CAAC;CAChC;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;IAC5C,aAAa,EAAE,GAAG,CAAC,MAAM,EAAE,sBAAsB,CAAC,CAAC;IACnD,aAAa,EAAE,MAAM,EAAE,CAAC;CACzB;AAED,MAAM,WAAW,gCAAgC;IAC/C,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;IAC5C,eAAe,CAAC,EAAE,aAAa,EAAE,CAAC;CACnC;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IACnC,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;IAC7C,sBAAsB,EAAE,GAAG,CAAC,MAAM,EAAE,gCAAgC,CAAC,CAAC;IACtE,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IAC7B,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;CAC/B"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/schema/types.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"cypher-assert.d.ts","sourceRoot":"","sources":["../../../src/testing/cypher-assert.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,qBAAa,YAAY;IACvB;;;;;OAKG;IACH,MAAM,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;IAkBxC;;;OAGG;IACH,MAAM,CAAC,uBAAuB,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI;IAStE;;;;;OAKG;IACH,MAAM,CAAC,oBAAoB,CACzB,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,MAAM,GACd,IAAI;IAYP;;OAEG;IACH,MAAM,CAAC,uBAAuB,CAC5B,MAAM,EAAE,MAAM,EACd,mBAAmB,EAAE,MAAM,EAC3B,OAAO,CAAC,EAAE,MAAM,GACf,IAAI;IAQP;;;OAGG;IACH,MAAM,CAAC,YAAY,CACjB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAChC,IAAI;CAeR"}
1
+ {"version":3,"file":"cypher-assert.d.ts","sourceRoot":"","sources":["../../../src/testing/cypher-assert.ts"],"names":[],"mappings":"AAuBA;;;GAGG;AACH,qBAAa,YAAY;IACvB;;;;;OAKG;IACH,MAAM,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;IAkBxC;;;OAGG;IACH,MAAM,CAAC,uBAAuB,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI;IAStE;;;;;OAKG;IACH,MAAM,CAAC,oBAAoB,CACzB,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,MAAM,GACd,IAAI;IAYP;;OAEG;IACH,MAAM,CAAC,uBAAuB,CAC5B,MAAM,EAAE,MAAM,EACd,mBAAmB,EAAE,MAAM,EAC3B,OAAO,CAAC,EAAE,MAAM,GACf,IAAI;IAQP;;;OAGG;IACH,MAAM,CAAC,YAAY,CACjB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAChC,IAAI;CAeR"}
@@ -1,6 +1,29 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.CypherAssert = void 0;
4
+ /**
5
+ * JSON with object keys sorted at every depth and bigints written as
6
+ * `{"$bigint":"<digits>"}`, so two values compare equal regardless of key
7
+ * order and a bigint never equals the number or string with its digits.
8
+ *
9
+ * Every pair that JSON.stringify called equal before v2.4.8 is still equal:
10
+ * this only sorts keys and gives bigint (which used to throw a TypeError)
11
+ * an encoding. A neo4j Integer stays `{"high":…,"low":…}`, so it equals an
12
+ * Integer of the same value and not a plain number.
13
+ */
14
+ function canonicalJson(value) {
15
+ return JSON.stringify(value, (_key, v) => {
16
+ if (typeof v === 'bigint')
17
+ return { $bigint: v.toString() };
18
+ if (v && typeof v === 'object' && !Array.isArray(v)) {
19
+ const sorted = {};
20
+ for (const k of Object.keys(v).sort())
21
+ sorted[k] = v[k];
22
+ return sorted;
23
+ }
24
+ return v;
25
+ });
26
+ }
4
27
  /**
5
28
  * Structural Cypher comparison utility that normalizes whitespace
6
29
  * and parameter names for deterministic test assertions.
@@ -61,8 +84,8 @@ class CypherAssert {
61
84
  for (const key of Object.keys(expected)) {
62
85
  if (!(key in actual))
63
86
  throw new Error(`Missing param key '${key}' in actual params: ${JSON.stringify(actual)}`);
64
- const actualVal = JSON.stringify(actual[key]);
65
- const expectedVal = JSON.stringify(expected[key]);
87
+ const actualVal = canonicalJson(actual[key]);
88
+ const expectedVal = canonicalJson(expected[key]);
66
89
  if (actualVal !== expectedVal)
67
90
  throw new Error(`Param '${key}' mismatch:\n Actual: ${actualVal}\n Expected: ${expectedVal}`);
68
91
  }
@@ -1 +1 @@
1
- {"version":3,"file":"cypher-assert.js","sourceRoot":"","sources":["../../../src/testing/cypher-assert.ts"],"names":[],"mappings":";;;AAAA;;;GAGG;AACH,MAAa,YAAY;IACvB;;;;;OAKG;IACH,MAAM,CAAC,SAAS,CAAC,MAAc;QAC7B,MAAM,SAAS,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;QAErD,MAAM,IAAI,GAAG,IAAI,GAAG,EAAkB,CAAC;QACvC,IAAI,OAAO,GAAG,CAAC,CAAC;QAEhB,MAAM,UAAU,GAAG,SAAS,CAAC,OAAO,CAClC,2BAA2B,EAC3B,CAAC,KAAK,EAAE,EAAE;YACR,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;gBAAE,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,OAAO,EAAE,EAAE,CAAC,CAAC;YAExD,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,CAAE,CAAC;QAC1B,CAAC,CACF,CAAC;QAEF,OAAO,UAAU,CAAC;IACpB,CAAC;IAED;;;OAGG;IACH,MAAM,CAAC,uBAAuB,CAAC,MAAc,EAAE,QAAgB;QAC7D,MAAM,gBAAgB,GAAG,YAAY,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QACxD,MAAM,kBAAkB,GAAG,YAAY,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QAC5D,IAAI,gBAAgB,KAAK,kBAAkB;YACzC,MAAM,IAAI,KAAK,CACb,iCAAiC,gBAAgB,iBAAiB,kBAAkB,EAAE,CACvF,CAAC;IACN,CAAC;IAED;;;;;OAKG;IACH,MAAM,CAAC,oBAAoB,CACzB,MAAc,EACd,UAAkB,EAClB,OAAe;QAEf,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC;YAC1D,MAAM,IAAI,KAAK,CACb,mCAAmC,UAAU,SAAS,MAAM,EAAE,CAC/D,CAAC;QAEJ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC;YAC3B,MAAM,IAAI,KAAK,CACb,oCAAoC,OAAO,SAAS,MAAM,EAAE,CAC7D,CAAC;IACN,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,uBAAuB,CAC5B,MAAc,EACd,mBAA2B,EAC3B,OAAgB;QAEhB,MAAM,gBAAgB,GAAG,OAAO,IAAI,mBAAmB,CAAC;QACxD,IAAI,MAAM,CAAC,QAAQ,CAAC,gBAAgB,CAAC;YACnC,MAAM,IAAI,KAAK,CACb,yCAAyC,gBAAgB,SAAS,MAAM,EAAE,CAC3E,CAAC;IACN,CAAC;IAED;;;OAGG;IACH,MAAM,CAAC,YAAY,CACjB,MAA+B,EAC/B,QAAiC;QAEjC,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;YACxC,IAAI,CAAC,CAAC,GAAG,IAAI,MAAM,CAAC;gBAClB,MAAM,IAAI,KAAK,CACb,sBAAsB,GAAG,uBAAuB,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CACzE,CAAC;YAEJ,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;YAC9C,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;YAClD,IAAI,SAAS,KAAK,WAAW;gBAC3B,MAAM,IAAI,KAAK,CACb,UAAU,GAAG,4BAA4B,SAAS,iBAAiB,WAAW,EAAE,CACjF,CAAC;QACN,CAAC;IACH,CAAC;CACF;AAjGD,oCAiGC"}
1
+ {"version":3,"file":"cypher-assert.js","sourceRoot":"","sources":["../../../src/testing/cypher-assert.ts"],"names":[],"mappings":"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"}
@@ -14,12 +14,35 @@ export declare class Neo4jRecordFactory {
14
14
  */
15
15
  static integer(value: number): Integer;
16
16
  /**
17
- * Create a Neo4j DateTime value from an ISO string.
17
+ * Create a Neo4j DateTime value from an ISO string, as the driver would
18
+ * return `datetime(isoString)`: the wall-clock fields and the offset are
19
+ * kept as written (`10:00+02:00` stays `10:00+02:00`), all nine fractional
20
+ * digits are kept, and a `[Area/City]` zone id is carried over.
21
+ *
22
+ * Field values are plain numbers (what the driver returns with
23
+ * `disableLosslessIntegers`), so `toString()` matches the driver's.
24
+ *
25
+ * Before v2.4.8 the value was converted to UTC with the offset dropped,
26
+ * and the fraction was cut to milliseconds.
18
27
  */
19
28
  static dateTime(isoString: string): unknown;
29
+ /** The pre-v2.4.8 parse: through `Date`, in UTC, millisecond precision. */
30
+ private static legacyDateTime;
20
31
  /**
21
32
  * Create a mock Neo4j Node.
33
+ *
34
+ * `properties` are stored as given. The driver returns an Int property as
35
+ * an Integer, so pass `Neo4jRecordFactory.integer(n)` where a test needs
36
+ * that; a JS number is never converted, because it may stand for a Float.
37
+ *
38
+ * `options.identity` and `options.elementId` (v2.4.8) give mock nodes
39
+ * distinct ids; without them every node has identity 0 and elementId "0".
40
+ * A given identity alone yields elementId `String(identity)`, as the
41
+ * driver does for a 4.x server.
22
42
  */
23
- static node(labels: string[], properties: Record<string, unknown>): unknown;
43
+ static node(labels: string[], properties: Record<string, unknown>, options?: {
44
+ identity?: number | Integer;
45
+ elementId?: string;
46
+ }): unknown;
24
47
  }
25
48
  //# sourceMappingURL=neo4j-record-factory.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"neo4j-record-factory.d.ts","sourceRoot":"","sources":["../../../src/testing/neo4j-record-factory.ts"],"names":[],"mappings":"AAAA,OAAc,EAAE,OAAO,EAAE,MAAM,IAAI,WAAW,EAAE,MAAM,cAAc,CAAC;AAErE;;GAEG;AACH,qBAAa,kBAAkB;IAC7B;;;;OAIG;IACH,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,WAAW;IAMzD;;OAEG;IACH,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IAItC;;OAEG;IACH,MAAM,CAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IAc3C;;OAEG;IACH,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO;CAG5E"}
1
+ {"version":3,"file":"neo4j-record-factory.d.ts","sourceRoot":"","sources":["../../../src/testing/neo4j-record-factory.ts"],"names":[],"mappings":"AAAA,OAAc,EAAE,OAAO,EAAE,MAAM,IAAI,WAAW,EAAE,MAAM,cAAc,CAAC;AAoDrE;;GAEG;AACH,qBAAa,kBAAkB;IAC7B;;;;OAIG;IACH,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,WAAW;IAMzD;;OAEG;IACH,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IAItC;;;;;;;;;;;OAWG;IACH,MAAM,CAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IAoC3C,2EAA2E;IAC3E,OAAO,CAAC,MAAM,CAAC,cAAc;IAc7B;;;;;;;;;;;OAWG;IACH,MAAM,CAAC,IAAI,CACT,MAAM,EAAE,MAAM,EAAE,EAChB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACnC,OAAO,GAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAO,GAChE,OAAO;CASX"}
@@ -5,6 +5,47 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.Neo4jRecordFactory = void 0;
7
7
  const neo4j_driver_1 = __importDefault(require("neo4j-driver"));
8
+ /**
9
+ * ISO-8601 date-time as Neo4j's `datetime()` accepts it: a date, an
10
+ * optional time with up to nine fractional digits, an optional offset
11
+ * (`Z`, `±HH`, `±HHMM`, `±HH:MM`) and an optional `[Area/City]` zone id.
12
+ */
13
+ const ISO_DATE_TIME = /^([+-]?\d{4,})-(\d{2})-(\d{2})(?:[T ](\d{2}):(\d{2})(?::(\d{2})(?:[.,](\d{1,9}))?)?)?(Z|[+-]\d{2}(?::?\d{2})?)?(?:\[([^\]]+)\])?$/i;
14
+ function parseOffsetSeconds(offset) {
15
+ if (offset.toUpperCase() === 'Z')
16
+ return 0;
17
+ const sign = offset[0] === '-' ? -1 : 1;
18
+ const digits = offset.slice(1).replace(':', '');
19
+ const hours = Number(digits.slice(0, 2));
20
+ const minutes = digits.length > 2 ? Number(digits.slice(2, 4)) : 0;
21
+ return sign * (hours * 3600 + minutes * 60);
22
+ }
23
+ /**
24
+ * Offset of `timeZone` at the given wall-clock time, in seconds. Two passes
25
+ * so a wall time near a DST transition lands on the offset in force then.
26
+ */
27
+ function zoneOffsetSeconds(timeZone, wallClockAsUtcMs) {
28
+ const fmt = new Intl.DateTimeFormat('en-US', {
29
+ timeZone,
30
+ hourCycle: 'h23',
31
+ year: 'numeric',
32
+ month: '2-digit',
33
+ day: '2-digit',
34
+ hour: '2-digit',
35
+ minute: '2-digit',
36
+ second: '2-digit',
37
+ });
38
+ const offsetAt = (instantMs) => {
39
+ const p = {};
40
+ for (const part of fmt.formatToParts(new Date(instantMs)))
41
+ if (part.type !== 'literal')
42
+ p[part.type] = Number(part.value);
43
+ const asUtc = Date.UTC(p.year, p.month - 1, p.day, p.hour, p.minute, p.second);
44
+ return Math.round((asUtc - Math.floor(instantMs / 1000) * 1000) / 1000);
45
+ };
46
+ const first = offsetAt(wallClockAsUtcMs);
47
+ return offsetAt(wallClockAsUtcMs - first * 1000);
48
+ }
8
49
  /**
9
50
  * Factory for creating mock Neo4j Record objects for testing.
10
51
  */
@@ -26,17 +67,55 @@ class Neo4jRecordFactory {
26
67
  return neo4j_driver_1.default.int(value);
27
68
  }
28
69
  /**
29
- * Create a Neo4j DateTime value from an ISO string.
70
+ * Create a Neo4j DateTime value from an ISO string, as the driver would
71
+ * return `datetime(isoString)`: the wall-clock fields and the offset are
72
+ * kept as written (`10:00+02:00` stays `10:00+02:00`), all nine fractional
73
+ * digits are kept, and a `[Area/City]` zone id is carried over.
74
+ *
75
+ * Field values are plain numbers (what the driver returns with
76
+ * `disableLosslessIntegers`), so `toString()` matches the driver's.
77
+ *
78
+ * Before v2.4.8 the value was converted to UTC with the offset dropped,
79
+ * and the fraction was cut to milliseconds.
30
80
  */
31
81
  static dateTime(isoString) {
82
+ const m = ISO_DATE_TIME.exec(isoString.trim());
83
+ // Strings without an offset or zone id keep the pre-v2.4.8 parse.
84
+ if (!m || (m[8] === undefined && m[9] === undefined))
85
+ return Neo4jRecordFactory.legacyDateTime(isoString);
86
+ const [, y, mo, d, h, mi, s, frac, offset, zoneId] = m;
87
+ const year = Number(y);
88
+ const month = Number(mo);
89
+ const day = Number(d);
90
+ const hour = Number(h ?? 0);
91
+ const minute = Number(mi ?? 0);
92
+ const second = Number(s ?? 0);
93
+ const nanosecond = frac ? Number(frac.padEnd(9, '0')) : 0;
94
+ const offsetSeconds = offset !== undefined
95
+ ? parseOffsetSeconds(offset)
96
+ : zoneOffsetSeconds(zoneId, Date.UTC(year, month - 1, day, hour, minute, second));
97
+ return new neo4j_driver_1.default.types.DateTime(year, month, day, hour, minute, second, nanosecond, offsetSeconds, zoneId);
98
+ }
99
+ /** The pre-v2.4.8 parse: through `Date`, in UTC, millisecond precision. */
100
+ static legacyDateTime(isoString) {
32
101
  const d = new Date(isoString);
33
102
  return new neo4j_driver_1.default.types.DateTime(d.getUTCFullYear(), d.getUTCMonth() + 1, d.getUTCDate(), d.getUTCHours(), d.getUTCMinutes(), d.getUTCSeconds(), d.getUTCMilliseconds() * 1000000, 0);
34
103
  }
35
104
  /**
36
105
  * Create a mock Neo4j Node.
106
+ *
107
+ * `properties` are stored as given. The driver returns an Int property as
108
+ * an Integer, so pass `Neo4jRecordFactory.integer(n)` where a test needs
109
+ * that; a JS number is never converted, because it may stand for a Float.
110
+ *
111
+ * `options.identity` and `options.elementId` (v2.4.8) give mock nodes
112
+ * distinct ids; without them every node has identity 0 and elementId "0".
113
+ * A given identity alone yields elementId `String(identity)`, as the
114
+ * driver does for a 4.x server.
37
115
  */
38
- static node(labels, properties) {
39
- return new neo4j_driver_1.default.types.Node(neo4j_driver_1.default.int(0), labels, properties);
116
+ static node(labels, properties, options = {}) {
117
+ const identity = neo4j_driver_1.default.int(options.identity ?? 0);
118
+ return new neo4j_driver_1.default.types.Node(identity, labels, properties, options.elementId ?? identity.toString());
40
119
  }
41
120
  }
42
121
  exports.Neo4jRecordFactory = Neo4jRecordFactory;
@@ -1 +1 @@
1
- {"version":3,"file":"neo4j-record-factory.js","sourceRoot":"","sources":["../../../src/testing/neo4j-record-factory.ts"],"names":[],"mappings":";;;;;;AAAA,gEAAqE;AAErE;;GAEG;AACH,MAAa,kBAAkB;IAC7B;;;;OAIG;IACH,MAAM,CAAC,MAAM,CAAC,IAA6B;QACzC,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC/B,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QACxC,OAAO,IAAI,sBAAK,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAA2B,CAAC;IACxE,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,OAAO,CAAC,KAAa;QAC1B,OAAO,sBAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAC1B,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,QAAQ,CAAC,SAAiB;QAC/B,MAAM,CAAC,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC;QAC9B,OAAO,IAAI,sBAAK,CAAC,KAAK,CAAC,QAAQ,CAC7B,CAAC,CAAC,cAAc,EAAE,EAClB,CAAC,CAAC,WAAW,EAAE,GAAG,CAAC,EACnB,CAAC,CAAC,UAAU,EAAE,EACd,CAAC,CAAC,WAAW,EAAE,EACf,CAAC,CAAC,aAAa,EAAE,EACjB,CAAC,CAAC,aAAa,EAAE,EACjB,CAAC,CAAC,kBAAkB,EAAE,GAAG,OAAS,EAClC,CAAC,CACF,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,IAAI,CAAC,MAAgB,EAAE,UAAmC;QAC/D,OAAO,IAAI,sBAAK,CAAC,KAAK,CAAC,IAAI,CAAC,sBAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;IAChE,CAAC;CACF;AA1CD,gDA0CC"}
1
+ {"version":3,"file":"neo4j-record-factory.js","sourceRoot":"","sources":["../../../src/testing/neo4j-record-factory.ts"],"names":[],"mappings":"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"}