grafeo-ogm 2.2.0 → 2.3.1

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 (59) hide show
  1. package/CHANGELOG.md +93 -0
  2. package/README.md +49 -1
  3. package/dist/cjs/compilers/mutation.compiler.d.ts +94 -31
  4. package/dist/cjs/compilers/mutation.compiler.d.ts.map +1 -1
  5. package/dist/cjs/compilers/mutation.compiler.js +381 -343
  6. package/dist/cjs/compilers/mutation.compiler.js.map +1 -1
  7. package/dist/cjs/compilers/selection.compiler.d.ts +1 -1
  8. package/dist/cjs/compilers/selection.compiler.d.ts.map +1 -1
  9. package/dist/cjs/compilers/selection.compiler.js +33 -39
  10. package/dist/cjs/compilers/selection.compiler.js.map +1 -1
  11. package/dist/cjs/compilers/where.compiler.d.ts +124 -1
  12. package/dist/cjs/compilers/where.compiler.d.ts.map +1 -1
  13. package/dist/cjs/compilers/where.compiler.js +371 -102
  14. package/dist/cjs/compilers/where.compiler.js.map +1 -1
  15. package/dist/cjs/interface-model.d.ts +20 -10
  16. package/dist/cjs/interface-model.d.ts.map +1 -1
  17. package/dist/cjs/interface-model.js +47 -104
  18. package/dist/cjs/interface-model.js.map +1 -1
  19. package/dist/cjs/model.d.ts +15 -29
  20. package/dist/cjs/model.d.ts.map +1 -1
  21. package/dist/cjs/model.js +66 -145
  22. package/dist/cjs/model.js.map +1 -1
  23. package/dist/cjs/policy/nested-writes.d.ts +35 -0
  24. package/dist/cjs/policy/nested-writes.d.ts.map +1 -0
  25. package/dist/cjs/policy/nested-writes.js +199 -0
  26. package/dist/cjs/policy/nested-writes.js.map +1 -0
  27. package/dist/cjs/policy/types.d.ts +18 -0
  28. package/dist/cjs/policy/types.d.ts.map +1 -1
  29. package/dist/cjs/policy/types.js +24 -0
  30. package/dist/cjs/policy/types.js.map +1 -1
  31. package/dist/esm/compilers/mutation.compiler.d.ts +94 -31
  32. package/dist/esm/compilers/mutation.compiler.d.ts.map +1 -1
  33. package/dist/esm/compilers/mutation.compiler.js +381 -344
  34. package/dist/esm/compilers/mutation.compiler.js.map +1 -1
  35. package/dist/esm/compilers/selection.compiler.d.ts +1 -1
  36. package/dist/esm/compilers/selection.compiler.d.ts.map +1 -1
  37. package/dist/esm/compilers/selection.compiler.js +33 -39
  38. package/dist/esm/compilers/selection.compiler.js.map +1 -1
  39. package/dist/esm/compilers/where.compiler.d.ts +124 -1
  40. package/dist/esm/compilers/where.compiler.d.ts.map +1 -1
  41. package/dist/esm/compilers/where.compiler.js +371 -104
  42. package/dist/esm/compilers/where.compiler.js.map +1 -1
  43. package/dist/esm/interface-model.d.ts +20 -10
  44. package/dist/esm/interface-model.d.ts.map +1 -1
  45. package/dist/esm/interface-model.js +47 -104
  46. package/dist/esm/interface-model.js.map +1 -1
  47. package/dist/esm/model.d.ts +15 -29
  48. package/dist/esm/model.d.ts.map +1 -1
  49. package/dist/esm/model.js +67 -146
  50. package/dist/esm/model.js.map +1 -1
  51. package/dist/esm/policy/nested-writes.d.ts +35 -0
  52. package/dist/esm/policy/nested-writes.d.ts.map +1 -0
  53. package/dist/esm/policy/nested-writes.js +193 -0
  54. package/dist/esm/policy/nested-writes.js.map +1 -0
  55. package/dist/esm/policy/types.d.ts +18 -0
  56. package/dist/esm/policy/types.d.ts.map +1 -1
  57. package/dist/esm/policy/types.js +23 -0
  58. package/dist/esm/policy/types.js.map +1 -1
  59. package/package.json +1 -1
@@ -0,0 +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"}
@@ -0,0 +1,199 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.evaluateCreatePolicies = evaluateCreatePolicies;
4
+ exports.evaluateWriteRestrictives = evaluateWriteRestrictives;
5
+ exports.assertNestedCreatesAllowed = assertNestedCreatesAllowed;
6
+ exports.assertNestedUpdatesAllowed = assertNestedUpdatesAllowed;
7
+ /**
8
+ * Application-layer policy checks for create / update input (v2.3.0),
9
+ * shared by the ROOT write and every NESTED write reached through its
10
+ * relationships. A nested write enforces exactly what the equivalent
11
+ * direct write on the target type would:
12
+ *
13
+ * - nested `create` → the target's `create` permissives (default-deny)
14
+ * and write restrictives (WITH CHECK) on the node input, as
15
+ * `Model.create` does;
16
+ * - nested `update` → the target's `update` write restrictives on the
17
+ * node input, as `Model.update` does. Its row filter (and
18
+ * `onDeny: 'throw'`) is enforced in the compiled MATCH by the
19
+ * mutation compiler.
20
+ *
21
+ * Pre-2.3.0 only the root type was checked, so a nested `create` / `update`
22
+ * wrote into protected types with none of their write policies applied.
23
+ *
24
+ * Runs BEFORE compile, so a rejected nested write never reaches the
25
+ * database. The walk mirrors the mutation compiler's input shapes:
26
+ * relationship → `{ create, update, … }` (single item or array), union
27
+ * targets keyed by member name, `create` items as `{ node, edge }` or a
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).
31
+ */
32
+ const errors_1 = require("../errors");
33
+ const validation_1 = require("../utils/validation");
34
+ const errors_2 = require("./errors");
35
+ const types_1 = require("./types");
36
+ /** Guards against pathological (e.g. cyclic) input objects. */
37
+ const MAX_NESTED_WRITE_DEPTH = 32;
38
+ /**
39
+ * Evaluate `'create'` policies in JS for `inputs` of `typeName`.
40
+ *
41
+ * - Override → all input is allowed.
42
+ * - Permissive → at least one (whose `appliesWhen` matches) must exist;
43
+ * create cannot fall back to default-deny silent-empty.
44
+ * - Restrictive → `when(ctx, input)` must return exactly `true` for every
45
+ * input (v1.8.7 — explicit positive consent).
46
+ *
47
+ * A permissive's `when(ctx)` where-partial is a SHAPE hint only — it is
48
+ * not compiled against the input. Restrictive `when(ctx, input)` is the
49
+ * canonical "WITH CHECK" hook.
50
+ */
51
+ function evaluateCreatePolicies(bundle, typeName, inputs) {
52
+ if (!bundle || bundle.resolved.overridden)
53
+ return;
54
+ if (bundle.resolved.permissives.length === 0)
55
+ throw new errors_2.PolicyDeniedError({
56
+ typeName,
57
+ operation: 'create',
58
+ reason: 'no-permissive-matched',
59
+ ...(bundle.defaults.onDeny === 'throw'
60
+ ? {}
61
+ : {
62
+ detail: 'create operations cannot rely on default-deny silent-empty; at least one permissive must apply.',
63
+ }),
64
+ });
65
+ for (const input of inputs)
66
+ evaluateWriteRestrictives(bundle, typeName, 'create', input);
67
+ }
68
+ /**
69
+ * Evaluate WRITE-side restrictives (create/update) at the application
70
+ * layer. Each `WriteRestrictive` is invoked once with `(ctx, input)`;
71
+ * anything but an explicit `true` rejects with `PolicyDeniedError`.
72
+ * ReadRestrictives are not consumed here — they filter rows via the
73
+ * compiled WHERE clause.
74
+ */
75
+ function evaluateWriteRestrictives(bundle, typeName, operation, input) {
76
+ if (!bundle || bundle.resolved.overridden)
77
+ return;
78
+ for (const r of bundle.resolved.restrictives) {
79
+ if (!(0, types_1.isWriteRestrictive)(r))
80
+ continue;
81
+ // Compile-time gate: `appliesWhen` returning false drops the policy.
82
+ if (r.appliesWhen && !r.appliesWhen(bundle.ctx))
83
+ continue;
84
+ if (r.when(bundle.ctx, input ?? {}) !== true)
85
+ throw new errors_2.PolicyDeniedError({
86
+ typeName,
87
+ operation,
88
+ reason: 'restrictive-rejected-input',
89
+ policyName: r.name,
90
+ });
91
+ }
92
+ }
93
+ /**
94
+ * Check every nested `create` / `update` inside create inputs of
95
+ * `nodeDef` (the root's own checks are the caller's).
96
+ */
97
+ function assertNestedCreatesAllowed(schema, nodeDef, inputs, bundle) {
98
+ if (!bundle)
99
+ return;
100
+ for (const input of inputs)
101
+ if ((0, validation_1.isPlainObject)(input))
102
+ walkCreate(schema, nodeDef, input, bundle, 0);
103
+ }
104
+ /**
105
+ * Check every nested `create` / `update` inside an update input of
106
+ * `nodeDef` (the root's own checks are the caller's).
107
+ */
108
+ function assertNestedUpdatesAllowed(schema, nodeDef, update, bundle) {
109
+ if (!bundle || !(0, validation_1.isPlainObject)(update))
110
+ return;
111
+ walkUpdate(schema, nodeDef, update, bundle, 0);
112
+ }
113
+ /** A create node spec: its relationship keys may carry nested creates. */
114
+ function walkCreate(schema, nodeDef, nodeSpec, bundle, depth) {
115
+ assertDepth(depth);
116
+ for (const [key, value] of Object.entries(nodeSpec)) {
117
+ const relDef = nodeDef.relationships.get(key);
118
+ if (!relDef || !(0, validation_1.isPlainObject)(value))
119
+ continue;
120
+ for (const [targetDef, relInput] of relationshipTargets(schema, relDef, value))
121
+ if ((0, validation_1.isPlainObject)(relInput))
122
+ checkCreates(schema, targetDef, relInput.create, bundle, depth);
123
+ }
124
+ }
125
+ /** An update spec: its relationship keys carry nested operation items. */
126
+ function walkUpdate(schema, nodeDef, update, bundle, depth) {
127
+ assertDepth(depth);
128
+ for (const [key, value] of Object.entries(update)) {
129
+ const relDef = nodeDef.relationships.get(key);
130
+ if (!relDef || value == null)
131
+ continue;
132
+ for (const [targetDef, items] of relationshipTargets(schema, relDef, value))
133
+ for (const item of asArray(items)) {
134
+ if (!(0, validation_1.isPlainObject)(item))
135
+ continue;
136
+ if (item.create)
137
+ checkCreates(schema, targetDef, item.create, bundle, depth);
138
+ if ((0, validation_1.isPlainObject)(item.update)) {
139
+ // Same node-spec resolution as the compiler's nested update.
140
+ const spec = item.update;
141
+ const nodeUpdate = (spec.node ?? (spec.edge ? {} : spec));
142
+ evaluateWriteRestrictives(targetBundle(bundle, targetDef.typeName, 'update'), targetDef.typeName, 'update', nodeUpdate);
143
+ if ((0, validation_1.isPlainObject)(nodeUpdate))
144
+ walkUpdate(schema, targetDef, nodeUpdate, bundle, depth + 1);
145
+ }
146
+ }
147
+ }
148
+ }
149
+ function checkCreates(schema, targetDef, creates, bundle, depth) {
150
+ for (const item of asArray(creates)) {
151
+ if (!(0, validation_1.isPlainObject)(item))
152
+ continue;
153
+ // 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]);
156
+ if ((0, validation_1.isPlainObject)(nodeSpec))
157
+ walkCreate(schema, targetDef, nodeSpec, bundle, depth + 1);
158
+ }
159
+ }
160
+ /**
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.
164
+ */
165
+ function relationshipTargets(schema, relDef, value) {
166
+ const nodeDef = schema.nodes.get(relDef.target);
167
+ if (nodeDef)
168
+ return [[nodeDef, value]];
169
+ const members = schema.unions?.get(relDef.target);
170
+ if (!members || !(0, validation_1.isPlainObject)(value))
171
+ 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;
181
+ }
182
+ /** The target type's bundle for `op`; a type without policies is open. */
183
+ function targetBundle(bundle, typeName, op) {
184
+ return {
185
+ ...bundle,
186
+ operation: op,
187
+ resolved: bundle.resolveForType(typeName, op) ?? types_1.NO_ROOT_POLICY,
188
+ };
189
+ }
190
+ function asArray(value) {
191
+ if (value == null)
192
+ return [];
193
+ return Array.isArray(value) ? value : [value];
194
+ }
195
+ function assertDepth(depth) {
196
+ if (depth > MAX_NESTED_WRITE_DEPTH)
197
+ throw new errors_1.OGMError(`Nested write input exceeds the maximum depth of ${MAX_NESTED_WRITE_DEPTH}.`);
198
+ }
199
+ //# sourceMappingURL=nested-writes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nested-writes.js","sourceRoot":"","sources":["../../../src/policy/nested-writes.ts"],"names":[],"mappings":"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"}
@@ -167,6 +167,24 @@ export interface ResolvedPolicies<C extends PolicyContext = PolicyContext> {
167
167
  /** Names of policies that fired (for audit logging). */
168
168
  evaluated: ReadonlyArray<string>;
169
169
  }
170
+ /**
171
+ * Resolution used for a ROOT type that has no policy for the operation,
172
+ * when a policy context is bound anyway (v2.3.0). Binding it — instead of
173
+ * dropping the whole bundle — keeps `resolveForType` reachable, so the
174
+ * policies of every TARGET type reached through relationships (nested
175
+ * selection, traversal filters, nested writes) stay enforced; a type
176
+ * without policies must not be a gateway around its neighbours'.
177
+ *
178
+ * `overridden: true` carries exactly its documented operational meaning
179
+ * here ("emit no root clause"): every root-level consumer treats it like
180
+ * the absence of a bundle, and no target-policy consumer reads it.
181
+ *
182
+ * Compare by identity (`resolved === NO_ROOT_POLICY`) to ask "did the
183
+ * root resolve anything for this operation?" — e.g. `aggregate`'s
184
+ * fallback to `read` policies. A real override resolution is a different
185
+ * object and must NOT be mistaken for it.
186
+ */
187
+ export declare const NO_ROOT_POLICY: ResolvedPolicies;
170
188
  /**
171
189
  * One operation-matching policy as seen by
172
190
  * `PolicyResolver.resolveDetailed()`. Unlike `ResolvedPolicies`, nothing
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/policy/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/policy/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH;;;;GAIG;AACH,MAAM,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAEpD;;;GAGG;AACH,MAAM,MAAM,SAAS,GACjB,MAAM,GACN,QAAQ,GACR,QAAQ,GACR,QAAQ,GACR,WAAW,GACX,OAAO,CAAC;AAEZ,MAAM,MAAM,mBAAmB,GAAG,SAAS,GAAG,GAAG,CAAC;AAElD;;;;;GAKG;AACH,MAAM,WAAW,cAAc,CAAC,CAAC,SAAS,aAAa,GAAG,aAAa;IACrE,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAC1B,QAAQ,CAAC,UAAU,EAAE,aAAa,CAAC,mBAAmB,CAAC,CAAC;IACxD,QAAQ,CAAC,IAAI,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,OAAO,CAAC;IACnC,gEAAgE;IAChE,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,gBAAgB,CAC/B,CAAC,SAAS,aAAa,GAAG,aAAa,EACvC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAE3D,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC;IAC5B,QAAQ,CAAC,UAAU,EAAE,aAAa,CAAC,mBAAmB,CAAC,CAAC;IACxD,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,OAAO,CAAC;IAC3C,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC;IAC9B,QAAQ,CAAC,MAAM,CAAC,EAAE;QAChB,QAAQ,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE;YAAE,IAAI,EAAE,MAAM,CAAA;SAAE,KAAK,MAAM,CAAC;QACtD,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KAC7C,CAAC;IACF,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;;;GAIG;AACH,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,QAAQ,GAAG,WAAW,GAAG,OAAO,CAAC;AAEtE;;;;;;;;;GASG;AACH,MAAM,MAAM,cAAc,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAEjD;;;;;GAKG;AACH,MAAM,WAAW,qBAAqB,CACpC,CAAC,SAAS,aAAa,GAAG,aAAa,EACvC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAE3D,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC;IAC7B,QAAQ,CAAC,UAAU,EAAE,aAAa,CAAC,aAAa,CAAC,CAAC;IAClD,oEAAoE;IACpE,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,OAAO,CAAC;IAC3C,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC;IACxC,QAAQ,CAAC,MAAM,CAAC,EAAE;QAChB,QAAQ,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE;YAAE,IAAI,EAAE,MAAM,CAAA;SAAE,KAAK,MAAM,CAAC;QACtD,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KAC7C,CAAC;IACF,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,sBAAsB,CACrC,CAAC,SAAS,aAAa,GAAG,aAAa,EACvC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAE3D,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC;IAC7B,QAAQ,CAAC,UAAU,EAAE,aAAa,CAAC,cAAc,CAAC,CAAC;IACnD,wEAAwE;IACxE,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,OAAO,CAAC;IAC3C;;;;;;OAMG;IACH,QAAQ,CAAC,IAAI,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,KAAK,OAAO,CAAC;IAC7C,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;;;;;;;;;GAUG;AACH,MAAM,MAAM,iBAAiB,CAC3B,CAAC,SAAS,aAAa,GAAG,aAAa,EACvC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC3D,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,IACzD,qBAAqB,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,sBAAsB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAE/D,MAAM,MAAM,MAAM,CAAC,CAAC,SAAS,aAAa,GAAG,aAAa,IACtD,cAAc,CAAC,CAAC,CAAC,GACjB,gBAAgB,CAAC,CAAC,CAAC,GACnB,iBAAiB,CAAC,CAAC,CAAC,CAAC;AAEzB;;;;;;;;GAQG;AACH,MAAM,MAAM,eAAe,CACzB,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC3D,CAAC,SAAS,aAAa,GAAG,aAAa,IACrC;KACD,CAAC,IAAI,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;CACnD,GAAG;IACF,CAAC,QAAQ,EAAE,MAAM,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC;CAC1D,CAAC;AAEF,MAAM,WAAW,cAAc;IAC7B,gEAAgE;IAChE,MAAM,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC;IAC3B,2EAA2E;IAC3E,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AA0CD,wBAAgB,QAAQ,CAAC,CAAC,SAAS,aAAa,GAAG,aAAa,EAC9D,IAAI,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,GACpC,cAAc,CAAC,CAAC,CAAC,CAQnB;AAED,wBAAgB,UAAU,CACxB,CAAC,SAAS,aAAa,GAAG,aAAa,EACvC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC3D,IAAI,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC,GAAG,gBAAgB,CAAC,CAAC,EAAE,CAAC,CAAC,CAkBpE;AAwCD,wBAAgB,WAAW,CACzB,CAAC,SAAS,aAAa,GAAG,aAAa,EACvC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAE3D,IAAI,EAAE,IAAI,CAAC,sBAAsB,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC,GAC/C,sBAAsB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAChC,wBAAgB,WAAW,CACzB,CAAC,SAAS,aAAa,GAAG,aAAa,EACvC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC3D,IAAI,EAAE,IAAI,CAAC,qBAAqB,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC,GAAG,qBAAqB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAsDhF,wBAAgB,iBAAiB,CAAC,CAAC,SAAS,aAAa,EACvD,CAAC,EAAE,iBAAiB,CAAC,CAAC,CAAC,GACtB,CAAC,IAAI,qBAAqB,CAAC,CAAC,CAAC,CAI/B;AAED,wBAAgB,kBAAkB,CAAC,CAAC,SAAS,aAAa,EACxD,CAAC,EAAE,iBAAiB,CAAC,CAAC,CAAC,GACtB,CAAC,IAAI,sBAAsB,CAAC,CAAC,CAAC,CAIhC;AAED;;;;GAIG;AACH,MAAM,WAAW,gBAAgB,CAAC,CAAC,SAAS,aAAa,GAAG,aAAa;IACvE,yEAAyE;IACzE,UAAU,EAAE,OAAO,CAAC;IACpB,WAAW,EAAE,aAAa,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC;IAChD,YAAY,EAAE,aAAa,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC;IAClD,wDAAwD;IACxD,SAAS,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;CAClC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,cAAc,EAAE,gBAK3B,CAAC;AAEH;;;;;;GAMG;AACH,MAAM,WAAW,cAAc,CAAC,CAAC,SAAS,aAAa,GAAG,aAAa;IACrE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;IAC3B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;IACjC,mEAAmE;IACnE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,yEAAyE;IACzE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,iEAAiE;IACjE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,gEAAgE;IAChE,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB;;;OAGG;IACH,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,8DAA8D;IAC9D,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;CAC3B;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,MAAM,mBAAmB,GAC3B,MAAM,GACN,MAAM,GACN,MAAM,GACN,SAAS,GACT,aAAa,GACb,SAAS,CAAC;AAEd,wDAAwD;AACxD,MAAM,WAAW,uBAAuB;IACtC,iEAAiE;IACjE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,gEAAgE;IAChE,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,UAAU,GAAG,YAAY,GAAG,aAAa,CAAC;IACzD,kEAAkE;IAClE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,gEAAgE;IAChE,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,OAAO,EAAE,mBAAmB,CAAC;CACvC;AAED;;;;GAIG;AACH,MAAM,WAAW,iBAAiB,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAC5D,6DAA6D;IAC7D,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;IACjB,2DAA2D;IAC3D,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,oDAAoD;IACpD,QAAQ,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC;;;OAGG;IACH,QAAQ,CAAC,iBAAiB,EAAE,OAAO,CAAC;IACpC,uEAAuE;IACvE,QAAQ,CAAC,kBAAkB,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IACnD,+DAA+D;IAC/D,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC,uBAAuB,CAAC,CAAC;CAC3D;AAED;;;;GAIG;AACH,MAAM,WAAW,kBAAkB,CAAC,CAAC,SAAS,aAAa,GAAG,aAAa;IACzE,mEAAmE;IACnE,QAAQ,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;CACpD;AAED;;;;GAIG;AACH,MAAM,WAAW,mBAAmB,CAAC,CAAC,SAAS,aAAa,GAAG,aAAa;IAC1E,GAAG,EAAE,CAAC,CAAC;IACP,QAAQ,EAAE,gBAAgB,CAAC,CAAC,CAAC,CAAC;IAC9B,SAAS,EAAE,SAAS,CAAC;IACrB;;;;;OAKG;IACH,cAAc,EAAE,CACd,QAAQ,EAAE,MAAM,EAChB,EAAE,EAAE,SAAS,KACV,gBAAgB,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;IAChC,0DAA0D;IAC1D,QAAQ,EAAE,cAAc,CAAC;CAC1B"}
@@ -6,6 +6,7 @@
6
6
  * role-aware sugar on top.
7
7
  */
8
8
  Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.NO_ROOT_POLICY = void 0;
9
10
  exports.override = override;
10
11
  exports.permissive = permissive;
11
12
  exports.restrictive = restrictive;
@@ -127,4 +128,27 @@ function isWriteRestrictive(p) {
127
128
  return true;
128
129
  return false;
129
130
  }
131
+ /**
132
+ * Resolution used for a ROOT type that has no policy for the operation,
133
+ * when a policy context is bound anyway (v2.3.0). Binding it — instead of
134
+ * dropping the whole bundle — keeps `resolveForType` reachable, so the
135
+ * policies of every TARGET type reached through relationships (nested
136
+ * selection, traversal filters, nested writes) stay enforced; a type
137
+ * without policies must not be a gateway around its neighbours'.
138
+ *
139
+ * `overridden: true` carries exactly its documented operational meaning
140
+ * here ("emit no root clause"): every root-level consumer treats it like
141
+ * the absence of a bundle, and no target-policy consumer reads it.
142
+ *
143
+ * Compare by identity (`resolved === NO_ROOT_POLICY`) to ask "did the
144
+ * root resolve anything for this operation?" — e.g. `aggregate`'s
145
+ * fallback to `read` policies. A real override resolution is a different
146
+ * object and must NOT be mistaken for it.
147
+ */
148
+ exports.NO_ROOT_POLICY = Object.freeze({
149
+ overridden: true,
150
+ permissives: Object.freeze([]),
151
+ restrictives: Object.freeze([]),
152
+ evaluated: Object.freeze([]),
153
+ });
130
154
  //# sourceMappingURL=types.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/policy/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/policy/types.ts"],"names":[],"mappings":"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"}
@@ -55,6 +55,34 @@ export declare class MutationCompiler {
55
55
  */
56
56
  private buildTargetPolicyPredicate;
57
57
  private getPolicyWhereCompiler;
58
+ /**
59
+ * Compile a nested-write `where` (connect, disconnect, nested update,
60
+ * nested/cascade delete) against `targetVar` through `WhereCompiler` —
61
+ * the single where implementation (v2.3.0: the mutation compiler's
62
+ * parallel builder was removed after repeatedly drifting from it).
63
+ * Operators, null semantics, abstract relationship targets and —
64
+ * crucially — traversal-policy enforcement are identical to a direct
65
+ * `where`: a relationship filter inside it AND-stitches the traversed
66
+ * type's `read` policy. The target's OWN operation policy is added
67
+ * separately by `buildTargetPolicyPredicate`, so the root here is bound
68
+ * as `NO_ROOT_POLICY`.
69
+ *
70
+ * Returns `''` for an absent or empty where.
71
+ */
72
+ private compileTargetWhere;
73
+ /**
74
+ * The bulk-connect UNWIND fast path compiles each where key against the
75
+ * ROW's own value (`connItem.where.node.<key>`), which `WhereCompiler`
76
+ * cannot express. It is therefore restricted to the one shape where
77
+ * that is exact: every item's where is `{ node: { … } }` or bare
78
+ * properties, holding only declared, stored scalar properties of the
79
+ * target (registered operators allowed) with NON-NULL values — no
80
+ * `AND`/`OR`/`NOT`/`node_NOT`, no relationship traversal, no `@cypher`
81
+ * field. Every predicate it emits is then a scalar comparison against a
82
+ * concrete row value, so it can only narrow matches, never fail open.
83
+ * Anything else takes the per-item path through `WhereCompiler`.
84
+ */
85
+ private isConnectFastPathEligible;
58
86
  /**
59
87
  * Surface a logical operator that contributed zero effective conditions.
60
88
  * Mirrors WhereCompiler.warnEmptyLogical — fires only on the anomalous
@@ -68,7 +96,20 @@ export declare class MutationCompiler {
68
96
  * Generate CREATE Cypher for one or more nodes.
69
97
  * Handles scalar properties, nested relationship creates, and connects.
70
98
  */
71
- compileCreate(inputs: Record<string, unknown>[], nodeDef: NodeDefinition, labels?: string[]): MutationResult;
99
+ compileCreate(inputs: Record<string, unknown>[], nodeDef: NodeDefinition, labels?: string[],
100
+ /**
101
+ * The caller's `create` bundle (v2.3.0). Its `resolveForType` gates
102
+ * every connect target in the nested input by the TARGET type's `read`
103
+ * policy — pre-2.3.0 the create path threaded no policy at all.
104
+ */
105
+ policyContext?: PolicyContextBundle,
106
+ /**
107
+ * Shared `param<N>` counter; continue it into the RETURN selection so
108
+ * nested-filter params never collide with the selection's.
109
+ */
110
+ paramCounter?: {
111
+ count: number;
112
+ }): MutationResult;
72
113
  /**
73
114
  * Generate UPDATE Cypher (SET properties + connect/disconnect).
74
115
  */
@@ -95,12 +136,45 @@ export declare class MutationCompiler {
95
136
  }): MutationResult;
96
137
  /**
97
138
  * Generate DELETE Cypher with optional cascade.
139
+ *
140
+ * v2.3.0 — each cascaded relationship honours its per-item `where` and
141
+ * is gated by the TARGET type's `delete` policy (`buildNestedDelete`).
142
+ * Pre-2.3.0 the cascade iterated only the relationship KEYS: the
143
+ * documented `{ where }` was ignored, so every related node — shared
144
+ * ones included — was deleted, with no policy check.
98
145
  */
99
146
  compileDelete(nodeDef: NodeDefinition, whereResult: {
100
147
  cypher: string;
101
148
  params: Record<string, unknown>;
102
149
  preludes?: string[];
103
- }, deleteInput?: Record<string, unknown>): MutationResult;
150
+ }, deleteInput?: Record<string, unknown>,
151
+ /** The caller's `delete` bundle; gates each cascade target. */
152
+ policyContext?: PolicyContextBundle,
153
+ /** Shared `param<N>` counter, continued from the root WHERE. */
154
+ paramCounter?: {
155
+ count: number;
156
+ }): MutationResult;
157
+ /**
158
+ * Nested / cascade delete of ONE relationship's targets (v2.3.0), shared
159
+ * by `compileDelete` (`Model.delete`'s `delete` input) and delete-inside-
160
+ * `update`. One subquery per spec item:
161
+ *
162
+ * <withClause>
163
+ * CALL {
164
+ * <withClause>
165
+ * MATCH (src)-[:REL]->(t)
166
+ * WHERE <item.where via WhereCompiler> AND <target `delete` policy>
167
+ * DETACH DELETE t
168
+ * RETURN count(*) AS _del_<tag>_<i>
169
+ * }
170
+ *
171
+ * `spec` is one item or an array (singular vs list relationships);
172
+ * `null` means "no cascade" (GraphQL InputMaybe). `{}` / no `where`
173
+ * deletes every related node the target's `delete` policy permits.
174
+ * A multi-level cascade (`delete` inside an item) and unknown item keys
175
+ * are rejected instead of silently ignored.
176
+ */
177
+ private buildNestedDelete;
104
178
  /**
105
179
  * Generate MERGE (upsert) Cypher with ON CREATE SET / ON MATCH SET.
106
180
  * Scalar properties only — nested relationship ops are not supported.
@@ -157,37 +231,26 @@ export declare class MutationCompiler {
157
231
  * Returns the base property name and the Cypher expression template.
158
232
  */
159
233
  private parseOperatorSuffix;
160
- /**
161
- * Build WHERE conditions for connect/disconnect operations.
162
- * Handles operator suffixes (_IN, _NOT, _NOT_IN, _CONTAINS, etc.),
163
- * NOT blocks, and relationship filters (_SOME, _NONE, _ALL, _SINGLE).
164
- *
165
- * @param targetNodeDef - Optional node definition for the target node.
166
- * Required to resolve relationship filters like `configurations_SOME`.
167
- * When omitted, relationship filters are silently skipped.
168
- */
169
- private buildNodeWhereConditions;
170
- /**
171
- * Build WHERE conditions from a connection-level WHERE spec.
172
- * Handles `node`, `NOT`, `AND`, `OR` at the connection level.
173
- *
174
- * Connection WHERE format: `{ node: {...}, NOT: { node: {...} }, AND: [...], OR: [...] }`
175
- */
176
- private buildConnectionWhereConditions;
177
- /** Counter for unique relationship filter variables within a single WHERE clause. */
178
- private relFilterCounter;
179
- /**
180
- * Try to compile a relationship filter condition (_SOME, _NONE, _ALL, _SINGLE).
181
- * Returns the Cypher expression string or null if the key is not a relationship filter.
182
- */
183
- private tryBuildRelationshipFilter;
184
234
  private buildGeneratedIdClause;
185
- /**
186
- * Check if any item in an array connect spec has relationship filters in its WHERE clause.
187
- * Relationship filters require EXISTS subqueries which can't use UNWIND param references.
188
- */
189
- private arrayConnectHasRelationshipFilters;
190
235
  private extractConnectWhereConditions;
191
236
  private extractEdgeProperties;
192
237
  }
238
+ /**
239
+ * Map a nested-mutation connection where onto an equivalent NODE where on
240
+ * the target, for `WhereCompiler` (v2.3.0). Mutation `where` never supports
241
+ * edge filters, so the two shapes are interchangeable:
242
+ *
243
+ * { node: A } → A
244
+ * { node_NOT: A } → { NOT: A }
245
+ * { NOT: C } → { NOT: map(C) }
246
+ * { AND: [C…] } → { AND: [map(C)…] } (likewise OR; `OR: []`
247
+ * still matches nothing)
248
+ * bare properties → themselves (legacy `{ id: 'x' }` shape)
249
+ *
250
+ * `edge`/`edge_NOT` throw (unsupported in mutations). In a connection-
251
+ * shaped where, any other key throws too — the removed parallel builder
252
+ * silently IGNORED such keys (`{ id: 'x', NOT: {…} }` dropped `id`),
253
+ * widening the match.
254
+ */
255
+ export declare function connectionWhereToNodeWhere(spec: Record<string, unknown>): Record<string, unknown>;
193
256
  //# sourceMappingURL=mutation.compiler.d.ts.map
@@ -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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"}