grafeo-ogm 2.5.1 → 2.5.3

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 (112) hide show
  1. package/CHANGELOG.md +52 -0
  2. package/dist/cjs/compilers/mutation.compiler.d.ts +11 -0
  3. package/dist/cjs/compilers/mutation.compiler.d.ts.map +1 -1
  4. package/dist/cjs/compilers/mutation.compiler.js +20 -1
  5. package/dist/cjs/compilers/mutation.compiler.js.map +1 -1
  6. package/dist/cjs/compilers/select-normalizer.d.ts +5 -0
  7. package/dist/cjs/compilers/select-normalizer.d.ts.map +1 -1
  8. package/dist/cjs/compilers/select-normalizer.js +54 -3
  9. package/dist/cjs/compilers/select-normalizer.js.map +1 -1
  10. package/dist/cjs/compilers/selection.compiler.d.ts +33 -0
  11. package/dist/cjs/compilers/selection.compiler.d.ts.map +1 -1
  12. package/dist/cjs/compilers/selection.compiler.js +220 -53
  13. package/dist/cjs/compilers/selection.compiler.js.map +1 -1
  14. package/dist/cjs/compilers/where.compiler.d.ts.map +1 -1
  15. package/dist/cjs/compilers/where.compiler.js +21 -0
  16. package/dist/cjs/compilers/where.compiler.js.map +1 -1
  17. package/dist/cjs/execution/executor.d.ts +7 -2
  18. package/dist/cjs/execution/executor.d.ts.map +1 -1
  19. package/dist/cjs/execution/executor.js +22 -5
  20. package/dist/cjs/execution/executor.js.map +1 -1
  21. package/dist/cjs/generator/generate-types.d.ts.map +1 -1
  22. package/dist/cjs/generator/generate-types.js +19 -2
  23. package/dist/cjs/generator/generate-types.js.map +1 -1
  24. package/dist/cjs/generator/type-emitters/model-map-emitter.d.ts +2 -1
  25. package/dist/cjs/generator/type-emitters/model-map-emitter.d.ts.map +1 -1
  26. package/dist/cjs/generator/type-emitters/model-map-emitter.js +9 -7
  27. package/dist/cjs/generator/type-emitters/model-map-emitter.js.map +1 -1
  28. package/dist/cjs/generator/type-emitters/utility-types.d.ts +13 -1
  29. package/dist/cjs/generator/type-emitters/utility-types.d.ts.map +1 -1
  30. package/dist/cjs/generator/type-emitters/utility-types.js +21 -3
  31. package/dist/cjs/generator/type-emitters/utility-types.js.map +1 -1
  32. package/dist/cjs/interface-model.d.ts.map +1 -1
  33. package/dist/cjs/interface-model.js +5 -1
  34. package/dist/cjs/interface-model.js.map +1 -1
  35. package/dist/cjs/schema/parser.d.ts.map +1 -1
  36. package/dist/cjs/schema/parser.js +7 -2
  37. package/dist/cjs/schema/parser.js.map +1 -1
  38. package/dist/cjs/testing/cypher-assert.d.ts +2 -2
  39. package/dist/cjs/testing/cypher-assert.d.ts.map +1 -1
  40. package/dist/cjs/testing/cypher-assert.js +54 -6
  41. package/dist/cjs/testing/cypher-assert.js.map +1 -1
  42. package/dist/cjs/testing/neo4j-record-factory.d.ts +5 -0
  43. package/dist/cjs/testing/neo4j-record-factory.d.ts.map +1 -1
  44. package/dist/cjs/testing/neo4j-record-factory.js +82 -27
  45. package/dist/cjs/testing/neo4j-record-factory.js.map +1 -1
  46. package/dist/cjs/utils/cypher-field-projection.d.ts +9 -1
  47. package/dist/cjs/utils/cypher-field-projection.d.ts.map +1 -1
  48. package/dist/cjs/utils/cypher-field-projection.js +39 -9
  49. package/dist/cjs/utils/cypher-field-projection.js.map +1 -1
  50. package/dist/cjs/utils/cypher-sort-projection.d.ts +6 -4
  51. package/dist/cjs/utils/cypher-sort-projection.d.ts.map +1 -1
  52. package/dist/cjs/utils/cypher-sort-projection.js +9 -7
  53. package/dist/cjs/utils/cypher-sort-projection.js.map +1 -1
  54. package/dist/cjs/utils/write-coercion.d.ts.map +1 -1
  55. package/dist/cjs/utils/write-coercion.js +12 -1
  56. package/dist/cjs/utils/write-coercion.js.map +1 -1
  57. package/dist/esm/compilers/mutation.compiler.d.ts +11 -0
  58. package/dist/esm/compilers/mutation.compiler.d.ts.map +1 -1
  59. package/dist/esm/compilers/mutation.compiler.js +20 -1
  60. package/dist/esm/compilers/mutation.compiler.js.map +1 -1
  61. package/dist/esm/compilers/select-normalizer.d.ts +5 -0
  62. package/dist/esm/compilers/select-normalizer.d.ts.map +1 -1
  63. package/dist/esm/compilers/select-normalizer.js +54 -3
  64. package/dist/esm/compilers/select-normalizer.js.map +1 -1
  65. package/dist/esm/compilers/selection.compiler.d.ts +33 -0
  66. package/dist/esm/compilers/selection.compiler.d.ts.map +1 -1
  67. package/dist/esm/compilers/selection.compiler.js +221 -54
  68. package/dist/esm/compilers/selection.compiler.js.map +1 -1
  69. package/dist/esm/compilers/where.compiler.d.ts.map +1 -1
  70. package/dist/esm/compilers/where.compiler.js +21 -0
  71. package/dist/esm/compilers/where.compiler.js.map +1 -1
  72. package/dist/esm/execution/executor.d.ts +7 -2
  73. package/dist/esm/execution/executor.d.ts.map +1 -1
  74. package/dist/esm/execution/executor.js +22 -5
  75. package/dist/esm/execution/executor.js.map +1 -1
  76. package/dist/esm/generator/generate-types.d.ts.map +1 -1
  77. package/dist/esm/generator/generate-types.js +20 -3
  78. package/dist/esm/generator/generate-types.js.map +1 -1
  79. package/dist/esm/generator/type-emitters/model-map-emitter.d.ts +2 -1
  80. package/dist/esm/generator/type-emitters/model-map-emitter.d.ts.map +1 -1
  81. package/dist/esm/generator/type-emitters/model-map-emitter.js +9 -7
  82. package/dist/esm/generator/type-emitters/model-map-emitter.js.map +1 -1
  83. package/dist/esm/generator/type-emitters/utility-types.d.ts +13 -1
  84. package/dist/esm/generator/type-emitters/utility-types.d.ts.map +1 -1
  85. package/dist/esm/generator/type-emitters/utility-types.js +19 -3
  86. package/dist/esm/generator/type-emitters/utility-types.js.map +1 -1
  87. package/dist/esm/interface-model.d.ts.map +1 -1
  88. package/dist/esm/interface-model.js +5 -1
  89. package/dist/esm/interface-model.js.map +1 -1
  90. package/dist/esm/schema/parser.d.ts.map +1 -1
  91. package/dist/esm/schema/parser.js +7 -2
  92. package/dist/esm/schema/parser.js.map +1 -1
  93. package/dist/esm/testing/cypher-assert.d.ts +2 -2
  94. package/dist/esm/testing/cypher-assert.d.ts.map +1 -1
  95. package/dist/esm/testing/cypher-assert.js +54 -6
  96. package/dist/esm/testing/cypher-assert.js.map +1 -1
  97. package/dist/esm/testing/neo4j-record-factory.d.ts +5 -0
  98. package/dist/esm/testing/neo4j-record-factory.d.ts.map +1 -1
  99. package/dist/esm/testing/neo4j-record-factory.js +82 -27
  100. package/dist/esm/testing/neo4j-record-factory.js.map +1 -1
  101. package/dist/esm/utils/cypher-field-projection.d.ts +9 -1
  102. package/dist/esm/utils/cypher-field-projection.d.ts.map +1 -1
  103. package/dist/esm/utils/cypher-field-projection.js +39 -9
  104. package/dist/esm/utils/cypher-field-projection.js.map +1 -1
  105. package/dist/esm/utils/cypher-sort-projection.d.ts +6 -4
  106. package/dist/esm/utils/cypher-sort-projection.d.ts.map +1 -1
  107. package/dist/esm/utils/cypher-sort-projection.js +9 -7
  108. package/dist/esm/utils/cypher-sort-projection.js.map +1 -1
  109. package/dist/esm/utils/write-coercion.d.ts.map +1 -1
  110. package/dist/esm/utils/write-coercion.js +12 -1
  111. package/dist/esm/utils/write-coercion.js.map +1 -1
  112. package/package.json +1 -1
@@ -9,8 +9,11 @@ const neo4j_driver_1 = __importDefault(require("neo4j-driver"));
9
9
  * ISO-8601 date-time as Neo4j's `datetime()` accepts it: a date, an
10
10
  * optional time with up to nine fractional digits, an optional offset
11
11
  * (`Z`, `±HH`, `±HHMM`, `±HH:MM`) and an optional `[Area/City]` zone id.
12
+ *
13
+ * v2.5.3 — the basic format (`20240101T100000Z`, no separators) is
14
+ * accepted too, as Neo4j accepts it.
12
15
  */
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;
16
+ const ISO_DATE_TIME = /^(?:([+-]?\d{4,})-(\d{2})-(\d{2})|([+-]?\d{4})(\d{2})(\d{2}))(?:[T ](\d{2}):?(\d{2})(?::?(\d{2})(?:[.,](\d{1,9}))?)?)?(Z|[+-]\d{2}(?::?\d{2})?)?(?:\[([^\]]+)\])?$/i;
14
17
  function parseOffsetSeconds(offset) {
15
18
  if (offset.toUpperCase() === 'Z')
16
19
  return 0;
@@ -18,16 +21,26 @@ function parseOffsetSeconds(offset) {
18
21
  const digits = offset.slice(1).replace(':', '');
19
22
  const hours = Number(digits.slice(0, 2));
20
23
  const minutes = digits.length > 2 ? Number(digits.slice(2, 4)) : 0;
21
- return sign * (hours * 3600 + minutes * 60);
24
+ // v2.5.3 — `-00:00` is offset 0, not -0 (which `toEqual` tells apart
25
+ // from the driver's 0).
26
+ return sign * (hours * 3600 + minutes * 60) || 0;
22
27
  }
23
28
  /**
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.
29
+ * Epoch milliseconds of a wall-clock time read as UTC. v2.5.3 — `Date.UTC`
30
+ * maps years 0–99 to 1900–1999, so the year is set with `setUTCFullYear`.
26
31
  */
27
- function zoneOffsetSeconds(timeZone, wallClockAsUtcMs) {
32
+ function utcMs(year, month, day, hour, minute, second) {
33
+ const d = new Date(0);
34
+ d.setUTCFullYear(year, month - 1, day);
35
+ d.setUTCHours(hour, minute, second, 0);
36
+ return d.getTime();
37
+ }
38
+ /** Offset of `timeZone` at an instant, in whole seconds. */
39
+ function zoneOffsetAt(timeZone, instantMs) {
28
40
  const fmt = new Intl.DateTimeFormat('en-US', {
29
41
  timeZone,
30
42
  hourCycle: 'h23',
43
+ era: 'short',
31
44
  year: 'numeric',
32
45
  month: '2-digit',
33
46
  day: '2-digit',
@@ -35,16 +48,44 @@ function zoneOffsetSeconds(timeZone, wallClockAsUtcMs) {
35
48
  minute: '2-digit',
36
49
  second: '2-digit',
37
50
  });
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);
51
+ const p = {};
52
+ let bc = false;
53
+ for (const part of fmt.formatToParts(new Date(instantMs)))
54
+ if (part.type === 'era')
55
+ bc = part.value.toUpperCase().startsWith('B');
56
+ else if (part.type !== 'literal')
57
+ p[part.type] = Number(part.value);
58
+ // v2.5.3 — `Intl` writes year -1 as "2 BC".
59
+ const year = bc ? 1 - p.year : p.year;
60
+ const asUtc = utcMs(year, p.month, p.day, p.hour, p.minute, p.second);
61
+ return Math.round((asUtc - Math.floor(instantMs / 1000) * 1000) / 1000);
62
+ }
63
+ /**
64
+ * Resolve a wall-clock time in `timeZone` as Neo4j (java.time) does:
65
+ * - a valid wall time keeps its offset;
66
+ * - in a DST overlap the earlier offset (the larger one) wins;
67
+ * - in a DST gap the wall time moves later by the length of the gap.
68
+ *
69
+ * Returns the offset and the (possibly shifted) wall time as UTC ms.
70
+ * Pre-2.5.3 a gap time kept its non-existent wall clock and an overlap in
71
+ * a zone east of UTC took the later offset.
72
+ */
73
+ function resolveZoned(timeZone, wallMs) {
74
+ const DAY = 86400000;
75
+ const first = zoneOffsetAt(timeZone, wallMs);
76
+ const candidates = new Set([
77
+ zoneOffsetAt(timeZone, wallMs - DAY),
78
+ zoneOffsetAt(timeZone, wallMs + DAY),
79
+ first,
80
+ zoneOffsetAt(timeZone, wallMs - first * 1000),
81
+ ]);
82
+ const valid = [...candidates].filter((o) => zoneOffsetAt(timeZone, wallMs - o * 1000) === o);
83
+ if (valid.length > 0)
84
+ return { offsetSeconds: Math.max(...valid), wallMs };
85
+ // Gap: the instant uses the offset before the transition (the smaller).
86
+ const instant = wallMs - Math.min(...candidates) * 1000;
87
+ const offsetSeconds = zoneOffsetAt(timeZone, instant);
88
+ return { offsetSeconds, wallMs: instant + offsetSeconds * 1000 };
48
89
  }
49
90
  /**
50
91
  * Factory for creating mock Neo4j Record objects for testing.
@@ -78,6 +119,11 @@ class Neo4jRecordFactory {
78
119
  * A string with neither an offset nor a zone id is read as UTC, as Neo4j
79
120
  * reads it with its default zone.
80
121
  *
122
+ * With a zone id and no offset, the zone rules apply as in Neo4j
123
+ * (v2.5.3): a wall time inside a DST gap moves later by the gap, an
124
+ * ambiguous one takes the earlier offset, and historical (local mean
125
+ * time) offsets are honoured for any year.
126
+ *
81
127
  * Before v2.4.8 the value was converted to UTC with the offset dropped
82
128
  * and the fraction cut to milliseconds; before v2.5.0 an offset-less
83
129
  * string was read in the machine's local zone.
@@ -88,19 +134,28 @@ class Neo4jRecordFactory {
88
134
  // pre-v2.5.0 parse.
89
135
  if (!m)
90
136
  return Neo4jRecordFactory.legacyDateTime(isoString);
91
- const [, y, mo, d, h, mi, s, frac, offset, zoneId] = m;
92
- const year = Number(y);
93
- const month = Number(mo);
94
- const day = Number(d);
95
- const hour = Number(h ?? 0);
96
- const minute = Number(mi ?? 0);
97
- const second = Number(s ?? 0);
137
+ const [, ey, emo, ed, by, bmo, bd, h, mi, s, frac, offset, zoneId] = m;
138
+ let year = Number(ey ?? by);
139
+ let month = Number(emo ?? bmo);
140
+ let day = Number(ed ?? bd);
141
+ let hour = Number(h ?? 0);
142
+ let minute = Number(mi ?? 0);
143
+ let second = Number(s ?? 0);
98
144
  const nanosecond = frac ? Number(frac.padEnd(9, '0')) : 0;
99
- const offsetSeconds = offset !== undefined
100
- ? parseOffsetSeconds(offset)
101
- : zoneId !== undefined
102
- ? zoneOffsetSeconds(zoneId, Date.UTC(year, month - 1, day, hour, minute, second))
103
- : 0;
145
+ let offsetSeconds = 0;
146
+ if (offset !== undefined)
147
+ offsetSeconds = parseOffsetSeconds(offset);
148
+ else if (zoneId !== undefined) {
149
+ const resolved = resolveZoned(zoneId, utcMs(year, month, day, hour, minute, second));
150
+ offsetSeconds = resolved.offsetSeconds;
151
+ const w = new Date(resolved.wallMs);
152
+ year = w.getUTCFullYear();
153
+ month = w.getUTCMonth() + 1;
154
+ day = w.getUTCDate();
155
+ hour = w.getUTCHours();
156
+ minute = w.getUTCMinutes();
157
+ second = w.getUTCSeconds();
158
+ }
104
159
  return new neo4j_driver_1.default.types.DateTime(year, month, day, hour, minute, second, nanosecond, offsetSeconds, zoneId);
105
160
  }
106
161
  /** The pre-v2.5.0 parse: through `Date`, in UTC, millisecond precision. */
@@ -1 +1 @@
1
- {"version":3,"file":"neo4j-record-factory.js","sourceRoot":"","sources":["../../../src/testing/neo4j-record-factory.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"neo4j-record-factory.js","sourceRoot":"","sources":["../../../src/testing/neo4j-record-factory.ts"],"names":[],"mappings":"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"}
@@ -20,7 +20,15 @@ export declare function buildCypherFieldCall(statement: string, nodeVar: string,
20
20
  * implementer's field selected through an inline fragment on an
21
21
  * abstract type). Other rows still keep their row, with `null`.
22
22
  */
23
- guardLabel?: string): string;
23
+ guardLabel?: string,
24
+ /**
25
+ * v2.5.3 — name the reduced column with this (unique) alias instead of
26
+ * `columnName`. Pre-2.5.3 the CALL returned `AS <columnName>` and the
27
+ * caller renamed it in a following WITH, so a `columnName` equal to a
28
+ * variable already in scope (`n`, `score`, `__typename`) failed the
29
+ * query with "Variable already declared".
30
+ */
31
+ outputAlias?: string): string;
24
32
  /**
25
33
  * Builds an inline `head(COLLECT { ... })` subquery expression for a
26
34
  * `@cypher` scalar field. Used inside contexts where a CALL prelude cannot
@@ -1 +1 @@
1
- {"version":3,"file":"cypher-field-projection.d.ts","sourceRoot":"","sources":["../../../src/utils/cypher-field-projection.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAG1D;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,oBAAoB,CAClC,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM;AAClB;;;;GAIG;AACH,UAAU,CAAC,EAAE,MAAM,GAClB,MAAM,CAgBR;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,0BAA0B,CACxC,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM;AACf;;;GAGG;AACH,UAAU,CAAC,EAAE,MAAM,GAClB,MAAM,CAIR;AASD;;;;;;;;;;GAUG;AACH,wBAAgB,2BAA2B,CACzC,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,GAChB,IAAI,CAQN;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,qBAAa,gBAAgB;IAWzB,sEAAsE;IACtE,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,2DAA2D;IAC3D,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,4DAA4D;IAC5D,OAAO,CAAC,QAAQ,CAAC,cAAc;IAfjC;;;;OAIG;IACH,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA6B;IACrD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAgB;IAC1C,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAgB;;IAG7C,sEAAsE;IACrD,OAAO,EAAE,MAAM;IAChC,2DAA2D;IAC1C,YAAY,GAAE,aAAa,CAAC,MAAM,CAAM;IACzD,4DAA4D;IAC3C,cAAc,GAAE,MAAe;IAKlD;;;;;;OAMG;IACH,QAAQ,CACN,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,kBAAkB;IAC3B;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,GAClB,MAAM;IA6CT,+CAA+C;IAC/C,MAAM,IAAI,OAAO;IAIjB,sEAAsE;IACtE,IAAI,IAAI,MAAM,EAAE;IAIhB,wDAAwD;IACxD,OAAO,IAAI,MAAM,EAAE;IAInB,0CAA0C;IAC1C,UAAU,IAAI,MAAM;CAGrB"}
1
+ {"version":3,"file":"cypher-field-projection.d.ts","sourceRoot":"","sources":["../../../src/utils/cypher-field-projection.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAG1D;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,oBAAoB,CAClC,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM;AAClB;;;;GAIG;AACH,UAAU,CAAC,EAAE,MAAM;AACnB;;;;;;GAMG;AACH,WAAW,CAAC,EAAE,MAAM,GACnB,MAAM,CA0BR;AAQD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,0BAA0B,CACxC,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM;AACf;;;GAGG;AACH,UAAU,CAAC,EAAE,MAAM,GAClB,MAAM,CAIR;AAkBD;;;;;;;;;;GAUG;AACH,wBAAgB,2BAA2B,CACzC,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,GAChB,IAAI,CASN;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,qBAAa,gBAAgB;IAWzB,sEAAsE;IACtE,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,2DAA2D;IAC3D,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,4DAA4D;IAC5D,OAAO,CAAC,QAAQ,CAAC,cAAc;IAfjC;;;;OAIG;IACH,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA6B;IACrD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAgB;IAC1C,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAgB;;IAG7C,sEAAsE;IACrD,OAAO,EAAE,MAAM;IAChC,2DAA2D;IAC1C,YAAY,GAAE,aAAa,CAAC,MAAM,CAAM;IACzD,4DAA4D;IAC3C,cAAc,GAAE,MAAe;IAKlD;;;;;;OAMG;IACH,QAAQ,CACN,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,kBAAkB;IAC3B;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,GAClB,MAAM;IA4CT,+CAA+C;IAC/C,MAAM,IAAI,OAAO;IAIjB,sEAAsE;IACtE,IAAI,IAAI,MAAM,EAAE;IAIhB,wDAAwD;IACxD,OAAO,IAAI,MAAM,EAAE;IAInB,0CAA0C;IAC1C,UAAU,IAAI,MAAM;CAGrB"}
@@ -27,23 +27,46 @@ function buildCypherFieldCall(statement, nodeVar, columnName,
27
27
  * implementer's field selected through an inline fragment on an
28
28
  * abstract type). Other rows still keep their row, with `null`.
29
29
  */
30
- guardLabel) {
30
+ guardLabel,
31
+ /**
32
+ * v2.5.3 — name the reduced column with this (unique) alias instead of
33
+ * `columnName`. Pre-2.5.3 the CALL returned `AS <columnName>` and the
34
+ * caller renamed it in a following WITH, so a `columnName` equal to a
35
+ * variable already in scope (`n`, `score`, `__typename`) failed the
36
+ * query with "Variable already declared".
37
+ */
38
+ outputAlias) {
31
39
  const col = (0, validation_1.escapeIdentifier)(columnName);
40
+ if (outputAlias !== undefined)
41
+ (0, validation_1.assertSafeIdentifier)(outputAlias, '@cypher alias');
42
+ const out = outputAlias ?? col;
43
+ // v2.5.3 — a statement that returns a column named like the node
44
+ // variable (`RETURN this.rank AS n`) would redeclare it when the inner
45
+ // CALL hands its columns back. Rebind the node to a private name first
46
+ // (only then, so every other statement's Cypher is unchanged).
47
+ const shadows = mentionsIdentifier(statement, nodeVar);
48
+ const inner = shadows ? `${nodeVar}__cf_this` : nodeVar;
32
49
  return [
33
50
  `CALL {`,
34
51
  ` WITH ${nodeVar}`,
52
+ ...(shadows ? [` WITH ${nodeVar} AS ${inner}`] : []),
35
53
  ...(guardLabel !== undefined
36
- ? [` WITH ${nodeVar} WHERE ${nodeVar}:${(0, validation_1.escapeIdentifier)(guardLabel)}`]
54
+ ? [` WITH ${inner} WHERE ${inner}:${(0, validation_1.escapeIdentifier)(guardLabel)}`]
37
55
  : []),
38
56
  ` CALL {`,
39
- ` WITH ${nodeVar}`,
40
- ` WITH ${nodeVar} AS this`,
57
+ ` WITH ${inner}`,
58
+ ` WITH ${inner} AS this`,
41
59
  ` ${statement}`,
42
60
  ` }`,
43
- ` RETURN head(collect(${col})) AS ${col}`,
61
+ ` RETURN head(collect(${col})) AS ${out}`,
44
62
  `}`,
45
63
  ].join('\n');
46
64
  }
65
+ /** Whether `name` appears in `cypher` as a standalone identifier token. */
66
+ function mentionsIdentifier(cypher, name) {
67
+ const escaped = name.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
68
+ return new RegExp(`(?<![\\w.$])\`?${escaped}\`?(?![\\w])`).test(cypher);
69
+ }
47
70
  /**
48
71
  * Builds an inline `head(COLLECT { ... })` subquery expression for a
49
72
  * `@cypher` scalar field. Used inside contexts where a CALL prelude cannot
@@ -73,7 +96,14 @@ fieldLabel) {
73
96
  * Cypher's aggregating functions, as a call (`count(`, not the `COUNT {`
74
97
  * subquery expression, which does not aggregate the enclosing query).
75
98
  */
76
- const AGGREGATING_CALL = /\b(?:avg|collect|count|max|min|percentileCont|percentileDisc|stDev|stDevP|sum)\s*\(/i;
99
+ const AGGREGATING_CALL = /(?<![\w.$`])(?:avg|collect|count|max|min|percentileCont|percentileDisc|stDev|stDevP|sum)\s*\(/i;
100
+ /**
101
+ * v2.5.3 — string literals and comments, blanked before the aggregation
102
+ * test: pre-2.5.3 `RETURN 'count(' + this.x AS c` was refused. A name
103
+ * qualified with `.` (`apoc.coll.max(`) is not an aggregating call either
104
+ * (see the lookbehind above).
105
+ */
106
+ const LITERALS_AND_COMMENTS = /'(?:[^'\\]|\\.)*'|"(?:[^"\\]|\\.)*"|`[^`]*`|\/\/[^\n]*|\/\*[\s\S]*?\*\//g;
77
107
  /**
78
108
  * Refuse an aggregating `@cypher` statement where it would be projected
79
109
  * inline (v2.4.8). Neo4j 5 rejects ANY aggregating subquery expression
@@ -86,7 +116,7 @@ const AGGREGATING_CALL = /\b(?:avg|collect|count|max|min|percentileCont|percenti
86
116
  * CALL-prelude projection is unaffected and keeps working.
87
117
  */
88
118
  function assertInlineableCypherField(fieldLabel, statement) {
89
- if (!AGGREGATING_CALL.test(statement))
119
+ if (!AGGREGATING_CALL.test(statement.replace(LITERALS_AND_COMMENTS, "''")))
90
120
  return;
91
121
  throw new errors_1.OGMError(`@cypher field "${fieldLabel}" aggregates in its statement, so it can only be selected at the top level of a query. ` +
92
122
  `Neo4j 5 rejects aggregating subqueries nested inside a projection ("Aggregation column contains implicit grouping expressions"), ` +
@@ -161,8 +191,8 @@ class CypherFieldScope {
161
191
  (0, validation_1.assertSafeIdentifier)(alias, '@cypher alias');
162
192
  const carry = [...this.preserveVars, ...this.carriedAliases];
163
193
  const carryStr = carry.length ? `, ${carry.join(', ')}` : '';
164
- this.callLines.push(buildCypherFieldCall(propDef.cypherStatement, this.nodeVar, columnName, guardLabel));
165
- this.callLines.push(`WITH ${this.nodeVar}${carryStr}, ${(0, validation_1.escapeIdentifier)(columnName)} AS ${alias}`);
194
+ this.callLines.push(buildCypherFieldCall(propDef.cypherStatement, this.nodeVar, columnName, guardLabel, alias));
195
+ this.callLines.push(`WITH ${this.nodeVar}${carryStr}, ${alias}`);
166
196
  this.carriedAliases.push(alias);
167
197
  this.aliases.set(key, alias);
168
198
  return alias;
@@ -1 +1 @@
1
- {"version":3,"file":"cypher-field-projection.js","sourceRoot":"","sources":["../../../src/utils/cypher-field-projection.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cypher-field-projection.js","sourceRoot":"","sources":["../../../src/utils/cypher-field-projection.ts"],"names":[],"mappings":"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"}
@@ -6,11 +6,13 @@ import type { PropertyDefinition } from '../schema/types';
6
6
  * no rows sorts with `null` instead of vanishing, and one returning
7
7
  * several rows sorts once.
8
8
  *
9
- * The caller is expected to follow this CALL with its own `WITH` clause
10
- * to rename the projected column (`<columnName>`) to a unique alias
11
- * (e.g. `__sort_<fieldName>`) and carry forward any prior sort aliases.
9
+ * With `outputAlias` (v2.5.3) the column comes out under that unique
10
+ * alias (e.g. `__sort_<fieldName>`); the caller follows the CALL with its
11
+ * own `WITH` to carry it forward with any prior sort aliases.
12
12
  */
13
- export declare function buildCypherSortProjection(statement: string, nodeVar: string, columnName: string): string;
13
+ export declare function buildCypherSortProjection(statement: string, nodeVar: string, columnName: string,
14
+ /** v2.5.3 — see `buildCypherFieldCall`'s `outputAlias`. */
15
+ outputAlias?: string): string;
14
16
  /**
15
17
  * Compiles a `sort` array (mixed stored-field + `@cypher`-field entries)
16
18
  * into the Cypher fragments needed before and after the `RETURN` clause.
@@ -1 +1 @@
1
- {"version":3,"file":"cypher-sort-projection.d.ts","sourceRoot":"","sources":["../../../src/utils/cypher-sort-projection.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAU1D;;;;;;;;;;GAUG;AACH,wBAAgB,yBAAyB,CACvC,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,GACjB,MAAM,CAER;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE;IACtC,IAAI,EAAE,aAAa,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IAC7C,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,kBAAkB,GAAG,SAAS,CAAC;IAClE,YAAY,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;CACtC,GAAG;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAgDnC;AAED;;;;;;;;;GASG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAE5D"}
1
+ {"version":3,"file":"cypher-sort-projection.d.ts","sourceRoot":"","sources":["../../../src/utils/cypher-sort-projection.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAU1D;;;;;;;;;;GAUG;AACH,wBAAgB,yBAAyB,CACvC,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM;AAClB,2DAA2D;AAC3D,WAAW,CAAC,EAAE,MAAM,GACnB,MAAM,CAQR;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE;IACtC,IAAI,EAAE,aAAa,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IAC7C,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,kBAAkB,GAAG,SAAS,CAAC;IAClE,YAAY,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;CACtC,GAAG;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAmDnC;AAED;;;;;;;;;GASG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAE5D"}
@@ -12,12 +12,14 @@ const validation_1 = require("./validation");
12
12
  * no rows sorts with `null` instead of vanishing, and one returning
13
13
  * several rows sorts once.
14
14
  *
15
- * The caller is expected to follow this CALL with its own `WITH` clause
16
- * to rename the projected column (`<columnName>`) to a unique alias
17
- * (e.g. `__sort_<fieldName>`) and carry forward any prior sort aliases.
15
+ * With `outputAlias` (v2.5.3) the column comes out under that unique
16
+ * alias (e.g. `__sort_<fieldName>`); the caller follows the CALL with its
17
+ * own `WITH` to carry it forward with any prior sort aliases.
18
18
  */
19
- function buildCypherSortProjection(statement, nodeVar, columnName) {
20
- return (0, cypher_field_projection_1.buildCypherFieldCall)(statement, nodeVar, columnName);
19
+ function buildCypherSortProjection(statement, nodeVar, columnName,
20
+ /** v2.5.3 — see `buildCypherFieldCall`'s `outputAlias`. */
21
+ outputAlias) {
22
+ return (0, cypher_field_projection_1.buildCypherFieldCall)(statement, nodeVar, columnName, undefined, outputAlias);
21
23
  }
22
24
  /**
23
25
  * Compiles a `sort` array (mixed stored-field + `@cypher`-field entries)
@@ -62,10 +64,10 @@ function compileSortClause(args) {
62
64
  const alias = `__sort_${field}`;
63
65
  const columnName = propDef.cypherColumnName ?? field;
64
66
  (0, validation_1.assertSafeIdentifier)(columnName, '@cypher columnName');
65
- preLines.push(buildCypherSortProjection(propDef.cypherStatement, nodeVar, columnName));
67
+ preLines.push(buildCypherSortProjection(propDef.cypherStatement, nodeVar, columnName, alias));
66
68
  const carry = [...preserveVars, ...carriedAliases];
67
69
  const carryStr = carry.length ? `, ${carry.join(', ')}` : '';
68
- preLines.push(`WITH ${nodeVar}${carryStr}, ${(0, validation_1.escapeIdentifier)(columnName)} AS ${alias}`);
70
+ preLines.push(`WITH ${nodeVar}${carryStr}, ${alias}`);
69
71
  carriedAliases.push(alias);
70
72
  sortItems.push(`${alias} ${validDirection}`);
71
73
  }
@@ -1 +1 @@
1
- {"version":3,"file":"cypher-sort-projection.js","sourceRoot":"","sources":["../../../src/utils/cypher-sort-projection.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cypher-sort-projection.js","sourceRoot":"","sources":["../../../src/utils/cypher-sort-projection.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"write-coercion.d.ts","sourceRoot":"","sources":["../../../src/utils/write-coercion.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAkI1D;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,OAAO,EACd,OAAO,EAAE,kBAAkB,GAAG,SAAS,GACtC,OAAO,CAWT;AAqCD;;;;;;;;;;;GAWG;AACH,wBAAgB,aAAa,CAC3B,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,OAAO,EACd,OAAO,EAAE,kBAAkB,GAAG,SAAS,GACtC,MAAM,CAWR;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,OAAO,EAAE,EACjB,OAAO,EAAE,kBAAkB,GAAG,SAAS,GACtC,MAAM,CAwBR;AAED;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAC5B,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,OAAO,EACd,OAAO,EAAE,kBAAkB,GAAG,SAAS,EACvC,MAAM,EAAE,MAAM,GACb,MAAM,CA8BR;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,OAAO,EACd,OAAO,EAAE,kBAAkB,GAAG,SAAS,EACvC,MAAM,EAAE,MAAM,GACb,OAAO,CAWT;AAqBD;;;;;;;GAOG;AACH,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAQ7E"}
1
+ {"version":3,"file":"write-coercion.d.ts","sourceRoot":"","sources":["../../../src/utils/write-coercion.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAkI1D;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,OAAO,EACd,OAAO,EAAE,kBAAkB,GAAG,SAAS,GACtC,OAAO,CAWT;AAqCD;;;;;;;;;;;GAWG;AACH,wBAAgB,aAAa,CAC3B,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,OAAO,EACd,OAAO,EAAE,kBAAkB,GAAG,SAAS,GACtC,MAAM,CAWR;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,OAAO,EAAE,EACjB,OAAO,EAAE,kBAAkB,GAAG,SAAS,GACtC,MAAM,CAwBR;AAED;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAC5B,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,OAAO,EACd,OAAO,EAAE,kBAAkB,GAAG,SAAS,EACvC,MAAM,EAAE,MAAM,GACb,MAAM,CA8BR;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,OAAO,EACd,OAAO,EAAE,kBAAkB,GAAG,SAAS,EACvC,MAAM,EAAE,MAAM,GACb,OAAO,CAuBT;AAqBD;;;;;;;GAOG;AACH,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAQ7E"}
@@ -301,7 +301,18 @@ function coerceWhereValue(value, propDef, suffix) {
301
301
  return value;
302
302
  if (!COMPARABLE_SUFFIXES.has(suffix))
303
303
  return value;
304
- const elementWise = suffix === '_IN' || suffix === '_NOT_IN' || propDef.isArray;
304
+ const isIn = suffix === '_IN' || suffix === '_NOT_IN';
305
+ // v2.5.3 — `_IN` / `_NOT_IN` on a LIST field take a list of lists: coerce
306
+ // two levels deep. Pre-2.5.3 the inner lists reached coerceWhereElement,
307
+ // which returns arrays unchanged, so BigInt strings and Dates inside them
308
+ // were bound raw and silently matched nothing.
309
+ if (isIn && propDef.isArray)
310
+ return Array.isArray(value)
311
+ ? value.map((inner) => Array.isArray(inner)
312
+ ? inner.map((element) => coerceWhereElement(element, propDef))
313
+ : inner)
314
+ : value;
315
+ const elementWise = isIn || propDef.isArray;
305
316
  if (elementWise)
306
317
  return Array.isArray(value)
307
318
  ? value.map((element) => coerceWhereElement(element, propDef))
@@ -1 +1 @@
1
- {"version":3,"file":"write-coercion.js","sourceRoot":"","sources":["../../../src/utils/write-coercion.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"write-coercion.js","sourceRoot":"","sources":["../../../src/utils/write-coercion.ts"],"names":[],"mappings":"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"}
@@ -54,6 +54,17 @@ export declare class MutationCompiler {
54
54
  * from the same counter).
55
55
  */
56
56
  private buildTargetPolicyPredicate;
57
+ /**
58
+ * v2.5.2 — a connect / disconnect nested in a connect / disconnect item
59
+ * writes the INTERMEDIATE node's own relationships, which the direct
60
+ * equivalent (`Intermediate.update({ connect | disconnect })`) only allows
61
+ * under its `update` policy. Pre-2.5.2 the intermediate was gated by
62
+ * `read` alone, so a context that could merely see a node could link and
63
+ * unlink its relationships. Inside the item's CALL this filters the row
64
+ * before the nested ops; the outer link / unlink still needs `read` only,
65
+ * and `count(*)` keeps one row per node. No policies → no lines.
66
+ */
67
+ private gateOnUpdate;
57
68
  private getPolicyWhereCompiler;
58
69
  /**
59
70
  * Compile a nested-write `where` (connect, disconnect, nested update,
@@ -1 +1 @@
1
- {"version":3,"file":"mutation.compiler.d.ts","sourceRoot":"","sources":["../../../src/compilers/mutation.compiler.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mutation.compiler.d.ts","sourceRoot":"","sources":["../../../src/compilers/mutation.compiler.ts"],"names":[],"mappings":"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"}
@@ -123,6 +123,20 @@ export class MutationCompiler {
123
123
  mergeParams(params, clause.params);
124
124
  return clause.cypher;
125
125
  }
126
+ /**
127
+ * v2.5.2 — a connect / disconnect nested in a connect / disconnect item
128
+ * writes the INTERMEDIATE node's own relationships, which the direct
129
+ * equivalent (`Intermediate.update({ connect | disconnect })`) only allows
130
+ * under its `update` policy. Pre-2.5.2 the intermediate was gated by
131
+ * `read` alone, so a context that could merely see a node could link and
132
+ * unlink its relationships. Inside the item's CALL this filters the row
133
+ * before the nested ops; the outer link / unlink still needs `read` only,
134
+ * and `count(*)` keeps one row per node. No policies → no lines.
135
+ */
136
+ gateOnUpdate(withClause, targetNodeDef, targetVar, params, policyContext, paramCounter) {
137
+ const predicate = this.buildTargetPolicyPredicate(targetNodeDef, targetVar, params, policyContext, paramCounter, 'update');
138
+ return predicate ? [withClause, `WHERE ${predicate}`] : [];
139
+ }
126
140
  getPolicyWhereCompiler() {
127
141
  // Inherit the logger: since v2.3.0 this compiler also compiles every
128
142
  // nested-write `where`, and its empty-AND/OR warnings must surface.
@@ -696,6 +710,10 @@ export class MutationCompiler {
696
710
  // v2.5.0 — rejected in EVERY item. Pre-2.5.0 only the first item's
697
711
  // relationship fields were; in later items the nested input was
698
712
  // skipped unwritten.
713
+ // v2.5.3 — a `null` relationship field means "no nested write" and
714
+ // is skipped, as upsert does. Pre-2.5.3 it threw.
715
+ if (nodeDef.relationships.has(key) && item[key] === null)
716
+ continue;
699
717
  if (nodeDef.relationships.has(key))
700
718
  throw new OGMError(`createMany does not support relationship fields. Found: "${key}" in data[${index}]. Use create() for nested operations.`);
701
719
  assertSafePropertyName(key, 'createMany property');
@@ -1266,6 +1284,7 @@ export class MutationCompiler {
1266
1284
  throw new OGMError(`A nested "connect" inside a connect on "${relDef.fieldName}" (abstract type "${targetNodeDef.typeName}") ` +
1267
1285
  `must be keyed by the implementing type, e.g. { ${relDef.fieldName}: { Member: [{ where, connect }] } }.`);
1268
1286
  const inner = nestedScope(a.scope.carryVars, connectVar, a.scope.depth, a.edgeParamPrefix);
1287
+ lines.push(...this.gateOnUpdate(inner.withClause, targetNodeDef, connectVar, a.params, a.policyContext, a.paramCounter));
1269
1288
  for (const nestedConnect of Array.isArray(nested) ? nested : [nested]) {
1270
1289
  if (!isPlainObject(nestedConnect))
1271
1290
  throw new OGMError(`A nested "connect" inside a connect on "${relDef.fieldName}" must be an object keyed by relationship.`);
@@ -1317,7 +1336,7 @@ export class MutationCompiler {
1317
1336
  throw new OGMError(`A nested "disconnect" inside a disconnect on "${relDef.fieldName}" (abstract type "${targetNodeDef.typeName}") ` +
1318
1337
  `must be keyed by the implementing type, e.g. { ${relDef.fieldName}: { Member: [{ where, disconnect }] } }.`);
1319
1338
  const inner = nestedScope(carryVars, targetVar, depth, uniqueToken);
1320
- const lines = [];
1339
+ const lines = this.gateOnUpdate(inner.withClause, targetNodeDef, targetVar, params, policyContext, paramCounter);
1321
1340
  for (const nestedDisconnect of Array.isArray(nested) ? nested : [nested]) {
1322
1341
  if (!isPlainObject(nestedDisconnect))
1323
1342
  throw new OGMError(`A nested "disconnect" inside a disconnect on "${relDef.fieldName}" must be an object keyed by relationship.`);