@cedarjs/structure 6.0.0-rc.241 → 6.0.0-rc.260

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.
package/dist/errors.d.ts CHANGED
@@ -6,6 +6,7 @@ export declare enum RWError {
6
6
  SERVICE_NOT_IMPLEMENTED = "SERVICE_NOT_IMPLEMENTED",
7
7
  NOTFOUND_PAGE_NOT_DEFINED = "NOTFOUND_PAGE_NOT_DEFINED",
8
8
  INVALID_ROUTE_PATH_SYNTAX = "INVALID_ROUTE_PATH_SYNTAX",
9
- SCHEMA_NOT_DEFINED = "SCHEMA_NOT_DEFINED"
9
+ SCHEMA_NOT_DEFINED = "SCHEMA_NOT_DEFINED",
10
+ UNPROTECTED_ROUTE_USES_AUTH_GATED_MUTATION = "UNPROTECTED_ROUTE_USES_AUTH_GATED_MUTATION"
10
11
  }
11
12
  //# sourceMappingURL=errors.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,oBAAY,OAAO;IACjB,uBAAuB,4BAA4B;IACnD,yBAAyB,8BAA8B;IAEvD,yBAAyB,8BAA8B;IACvD,kBAAkB,uBAAuB;CAC1C"}
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,oBAAY,OAAO;IACjB,uBAAuB,4BAA4B;IACnD,yBAAyB,8BAA8B;IAEvD,yBAAyB,8BAA8B;IACvD,kBAAkB,uBAAuB;IACzC,0CAA0C,+CAA+C;CAC1F"}
package/dist/errors.js CHANGED
@@ -9,5 +9,6 @@ export var RWError;
9
9
  // this error should be broken down into more specialized errors: syntax error, duplicate parameters
10
10
  RWError["INVALID_ROUTE_PATH_SYNTAX"] = "INVALID_ROUTE_PATH_SYNTAX";
11
11
  RWError["SCHEMA_NOT_DEFINED"] = "SCHEMA_NOT_DEFINED";
12
+ RWError["UNPROTECTED_ROUTE_USES_AUTH_GATED_MUTATION"] = "UNPROTECTED_ROUTE_USES_AUTH_GATED_MUTATION";
12
13
  })(RWError || (RWError = {}));
13
14
  //# sourceMappingURL=errors.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,CAAN,IAAY,OAMX;AAND,WAAY,OAAO;IACjB,8DAAmD,CAAA;IACnD,kEAAuD,CAAA;IACvD,oGAAoG;IACpG,kEAAuD,CAAA;IACvD,oDAAyC,CAAA;AAC3C,CAAC,EANW,OAAO,KAAP,OAAO,QAMlB"}
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,CAAN,IAAY,OAOX;AAPD,WAAY,OAAO;IACjB,8DAAmD,CAAA;IACnD,kEAAuD,CAAA;IACvD,oGAAoG;IACpG,kEAAuD,CAAA;IACvD,oDAAyC,CAAA;IACzC,oGAAyF,CAAA;AAC3F,CAAC,EAPW,OAAO,KAAP,OAAO,QAOlB"}
@@ -48,5 +48,15 @@ export declare class RWProject extends BaseNode {
48
48
  **/
49
49
  get cells(): RWCell[];
50
50
  get envHelper(): RWEnvHelper;
51
+ /**
52
+ * Maps GraphQL `Mutation` root field name -> the (project-root-relative)
53
+ * path of the SDL file that declares it with a literal `@requireAuth`
54
+ * directive.
55
+ *
56
+ * Used by `RWRoute` to warn when an unprotected route's page uses one of
57
+ * these mutations. Only literal `@requireAuth` is considered - custom
58
+ * directives (and `@skipAuth`) are intentionally ignored.
59
+ */
60
+ get requireAuthMutationFields(): Map<string, string>;
51
61
  }
52
62
  //# sourceMappingURL=RWProject.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"RWProject.d.ts","sourceRoot":"","sources":["../../src/model/RWProject.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAA;AAUpD,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAUtC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAC5C,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AACxC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACpC,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AACxC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAClC,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC1C,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAUpC;;;GAGG;AACH,qBAAa,SAAU,SAAQ,QAAQ;IACrC,MAAM,YAAY;IAElB,IAAY,EAAE,WAEb;IAED,QAAQ;IAaR;;OAEG;IACH,IAAY,UAAU,4CAErB;IAED;;OAEG;IACH,IAAY,mBAAmB,IAAI,OAAO,CAKzC;IAGa,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAC;IAWhD,oBAAoB;IAQlC,IAAY,SAAS,IAAI,MAAM,CAE9B;IAEO,OAAO,KAAK,eAAe,GAMlC;IAED,IAAY,KAAK,IAAI,MAAM,EAAE,CAI5B;IAED,IAAY,MAAM,aAEjB;IACD,SAAS,iBAER;IAGD,gBAAgB,CAAC,IAAI,EAAE,MAAM;IAO7B,IAAY,2BAA2B,WAOtC;IAED,IAAY,QAAQ,gBAMnB;IAED,IAAY,IAAI,YAIf;IAED,IAAY,OAAO,IAAI,QAAQ,EAAE,CAMhC;IAED,IAAY,SAAS,IAAI,UAAU,EAAE,CAKpC;IAED,IAAY,UAAU,IAAI,WAAW,EAAE,CAYtC;IAED,IAAY,KAAK,aAEhB;IAGD,IAAY,KAAK,aAEhB;IAED;;;QAGI;IACJ,IAAY,KAAK,IAAI,MAAM,EAAE,CAI5B;IAED,IAAY,SAAS,IAAI,WAAW,CAEnC;CACF"}
1
+ {"version":3,"file":"RWProject.d.ts","sourceRoot":"","sources":["../../src/model/RWProject.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAA;AAUpD,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAUtC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAC5C,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AACxC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACpC,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AACxC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAElC,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC1C,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAUpC;;;GAGG;AACH,qBAAa,SAAU,SAAQ,QAAQ;IACrC,MAAM,YAAY;IAElB,IAAY,EAAE,WAEb;IAED,QAAQ;IAaR;;OAEG;IACH,IAAY,UAAU,4CAErB;IAED;;OAEG;IACH,IAAY,mBAAmB,IAAI,OAAO,CAKzC;IAGa,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAC;IAWhD,oBAAoB;IAQlC,IAAY,SAAS,IAAI,MAAM,CAE9B;IAEO,OAAO,KAAK,eAAe,GAMlC;IAED,IAAY,KAAK,IAAI,MAAM,EAAE,CAI5B;IAED,IAAY,MAAM,aAEjB;IACD,SAAS,iBAER;IAGD,gBAAgB,CAAC,IAAI,EAAE,MAAM;IAO7B,IAAY,2BAA2B,WAOtC;IAED,IAAY,QAAQ,gBAMnB;IAED,IAAY,IAAI,YAIf;IAED,IAAY,OAAO,IAAI,QAAQ,EAAE,CAMhC;IAED,IAAY,SAAS,IAAI,UAAU,EAAE,CAKpC;IAED,IAAY,UAAU,IAAI,WAAW,EAAE,CAYtC;IAED,IAAY,KAAK,aAEhB;IAGD,IAAY,KAAK,aAEhB;IAED;;;QAGI;IACJ,IAAY,KAAK,IAAI,MAAM,EAAE,CAI5B;IAED,IAAY,SAAS,IAAI,WAAW,CAEnC;IAED;;;;;;;;OAQG;IACH,IAAY,yBAAyB,IAAI,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAmC3D;CACF"}
@@ -163,6 +163,42 @@ export class RWProject extends BaseNode {
163
163
  get envHelper() {
164
164
  return new RWEnvHelper(this);
165
165
  }
166
+ /**
167
+ * Maps GraphQL `Mutation` root field name -> the (project-root-relative)
168
+ * path of the SDL file that declares it with a literal `@requireAuth`
169
+ * directive.
170
+ *
171
+ * Used by `RWRoute` to warn when an unprotected route's page uses one of
172
+ * these mutations. Only literal `@requireAuth` is considered - custom
173
+ * directives (and `@skipAuth`) are intentionally ignored.
174
+ */
175
+ get requireAuthMutationFields() {
176
+ const result = new Map();
177
+ for (const sdl of this.sdls) {
178
+ // `implementableFields` parses the SDL's GraphQL schema string, which
179
+ // can throw for a malformed/in-progress schema. Isolate that per SDL
180
+ // file so one bad file doesn't hide `@requireAuth` fields declared in
181
+ // otherwise-valid SDL files.
182
+ let fields;
183
+ try {
184
+ fields = sdl.implementableFields;
185
+ }
186
+ catch {
187
+ continue;
188
+ }
189
+ for (const field of fields) {
190
+ if (field.objectTypeDef.name.value !== 'Mutation') {
191
+ continue;
192
+ }
193
+ const hasRequireAuth = (field.field.directives ?? []).some((directive) => directive.name.value === 'requireAuth');
194
+ if (!hasRequireAuth) {
195
+ continue;
196
+ }
197
+ result.set(field.name, path.relative(this.pathHelper.base, sdl.filePath));
198
+ }
199
+ }
200
+ return result;
201
+ }
166
202
  }
167
203
  __decorate([
168
204
  lazy()
@@ -221,4 +257,7 @@ __decorate([
221
257
  __decorate([
222
258
  lazy()
223
259
  ], RWProject.prototype, "envHelper", null);
260
+ __decorate([
261
+ lazy()
262
+ ], RWProject.prototype, "requireAuthMutationFields", null);
224
263
  //# sourceMappingURL=RWProject.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"RWProject.js","sourceRoot":"","sources":["../../src/model/RWProject.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"RWProject.js","sourceRoot":"","sources":["../../src/model/RWProject.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  import * as tsm from 'ts-morph';
2
2
  import { BaseNode } from '../nodes.js';
3
+ import type { ExtendedDiagnostic } from '../x/diagnostics.js';
3
4
  import type { Location } from '../x/Location.js';
4
5
  import type { RWRouter } from './RWRouter.js';
5
6
  export declare class RWRoute extends BaseNode {
@@ -15,9 +16,24 @@ export declare class RWRoute extends BaseNode {
15
16
  jsxNode: tsm.JsxSelfClosingElement, parent: RWRouter);
16
17
  get id(): string;
17
18
  get location(): Location;
19
+ /**
20
+ * All enclosing `<Private>` / `<PrivateSet>` JSX elements, walking up from
21
+ * this route's `<Route>` tag to (but not including) the `<Router>` tag.
22
+ * Ordered innermost-first, so `privateAncestors[0]` (if present) is the
23
+ * nearest wrapper. A route can be nested inside a plain `<Set>` that is
24
+ * itself inside a `<PrivateSet>`, so we can't just look at the immediate
25
+ * JSX parent.
26
+ */
27
+ private get privateAncestors();
18
28
  get isPrivate(): boolean;
19
29
  get unauthenticated(): string | undefined;
20
- get roles(): string | any[] | undefined;
30
+ get roles(): string | string[] | undefined;
31
+ /**
32
+ * Reads the `roles` attribute off a `<Private>`/`<PrivateSet>` opening
33
+ * element, handling the string literal, quasi-JSON string
34
+ * (e.g. `"['a','b']"`), and JSX array-literal expression forms.
35
+ */
36
+ private getRolesAttr;
21
37
  get hasParameters(): boolean;
22
38
  get hasPrerender(): boolean;
23
39
  /**
@@ -37,7 +53,17 @@ export declare class RWRoute extends BaseNode {
37
53
  get path_literal_node(): tsm.StringLiteral | undefined;
38
54
  get isNotFound(): boolean;
39
55
  get redirect(): string | undefined;
40
- diagnostics(): Generator<import("../x/diagnostics.js").ExtendedDiagnostic, void, unknown>;
56
+ diagnostics(): Generator<ExtendedDiagnostic, void, unknown>;
57
+ /**
58
+ * For an unprotected route (not wrapped in `<Private>`/`<PrivateSet>`),
59
+ * transitively walks the page's imports to find any GraphQL mutations
60
+ * that are marked `@requireAuth` in the api-side SDL.
61
+ *
62
+ * This is a best-effort static analysis (see `pageMutationUsage.ts`), so
63
+ * any internal failure degrades to "no warning" rather than surfacing a
64
+ * crash diagnostic - this check must never break the other diagnostics.
65
+ */
66
+ private get unprotectedAuthMutationUsages();
41
67
  private get hasPathCollision();
42
68
  private getBoolAttr;
43
69
  private getStringAttr;
@@ -1 +1 @@
1
- {"version":3,"file":"RWRoute.d.ts","sourceRoot":"","sources":["../../src/model/RWRoute.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,GAAG,MAAM,UAAU,CAAA;AAG/B,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAItC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAEhD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAE7C,qBAAa,OAAQ,SAAQ,QAAQ;IAEjC;;OAEG;IACI,OAAO,EAAE,GAAG,CAAC,qBAAqB;IAClC,MAAM,EAAE,QAAQ;;IAJvB;;OAEG;IACI,OAAO,EAAE,GAAG,CAAC,qBAAqB,EAClC,MAAM,EAAE,QAAQ;IAKzB,IAAY,EAAE,WAIb;IAED,IAAY,QAAQ,IAAI,QAAQ,CAE/B;IAED,IAAY,SAAS,YAOpB;IAED,IAAY,eAAe,uBAoB1B;IAED,IACI,KAAK,+BA0DR;IAED,IAAY,aAAa,IAAI,OAAO,CAMnC;IAED,IAAY,YAAY,YAEvB;IAED;;OAEG;IAEH,IAAY,IAAI,6CAOf;IACD;;OAEG;IACK,OAAO,KAAK,eAAe,GAelC;IACD,IAAY,mBAAmB,IAAI,MAAM,GAAG,SAAS,CAEpD;IACD,IAAY,IAAI,IAAI,MAAM,GAAG,SAAS,CAErC;IACD,IAAY,iBAAiB,IAAI,MAAM,GAAG,SAAS,CAWlD;IACD,IAAY,IAAI,IAAI,MAAM,GAAG,SAAS,CAErC;IAED,IAAY,SAAS,IAAI,OAAO,CAE/B;IAGD,IAAY,UAAU,IAAI,MAAM,GAAG,SAAS,CAE3C;IAED,IAAY,iBAAiB,kCAY5B;IAED,IAAY,UAAU,IAAI,OAAO,CAEhC;IAED,IAAY,QAAQ,uBAEnB;IAEA,WAAW;IA8BJ,OAAO,KAAK,gBAAgB,GAsBnC;IAED,OAAO,CAAC,WAAW;IAgCnB,OAAO,CAAC,aAAa;CAatB"}
1
+ {"version":3,"file":"RWRoute.d.ts","sourceRoot":"","sources":["../../src/model/RWRoute.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,GAAG,MAAM,UAAU,CAAA;AAG/B,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAGtC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAA;AAM7D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAEhD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAe7C,qBAAa,OAAQ,SAAQ,QAAQ;IAEjC;;OAEG;IACI,OAAO,EAAE,GAAG,CAAC,qBAAqB;IAClC,MAAM,EAAE,QAAQ;;IAJvB;;OAEG;IACI,OAAO,EAAE,GAAG,CAAC,qBAAqB,EAClC,MAAM,EAAE,QAAQ;IAKzB,IAAY,EAAE,WAIb;IAED,IAAY,QAAQ,IAAI,QAAQ,CAE/B;IAED;;;;;;;OAOG;IACK,OAAO,KAAK,gBAAgB,GAyBnC;IAED,IAAY,SAAS,YAEpB;IAED,IAAY,eAAe,uBAiB1B;IAED,IACI,KAAK,kCA0BR;IAED;;;;OAIG;IACH,OAAO,CAAC,YAAY;IAuDpB,IAAY,aAAa,IAAI,OAAO,CAMnC;IAED,IAAY,YAAY,YAEvB;IAED;;OAEG;IAEH,IAAY,IAAI,6CAOf;IACD;;OAEG;IACK,OAAO,KAAK,eAAe,GAelC;IACD,IAAY,mBAAmB,IAAI,MAAM,GAAG,SAAS,CAEpD;IACD,IAAY,IAAI,IAAI,MAAM,GAAG,SAAS,CAErC;IACD,IAAY,iBAAiB,IAAI,MAAM,GAAG,SAAS,CAWlD;IACD,IAAY,IAAI,IAAI,MAAM,GAAG,SAAS,CAErC;IAED,IAAY,SAAS,IAAI,OAAO,CAE/B;IAGD,IAAY,UAAU,IAAI,MAAM,GAAG,SAAS,CAE3C;IAED,IAAY,iBAAiB,kCAY5B;IAED,IAAY,UAAU,IAAI,OAAO,CAEhC;IAED,IAAY,QAAQ,uBAEnB;IAEA,WAAW;IAgDZ;;;;;;;;OAQG;IAEH,OAAO,KAAK,6BAA6B,GA2CxC;IAEO,OAAO,KAAK,gBAAgB,GAsBnC;IAED,OAAO,CAAC,WAAW;IAgCnB,OAAO,CAAC,aAAa;CAatB"}
@@ -4,12 +4,14 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
4
4
  else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
5
  return c > 3 && r && Object.defineProperty(target, key, r), r;
6
6
  };
7
+ import path from 'node:path';
7
8
  import * as tsm from 'ts-morph';
8
9
  import { RWError } from '../errors.js';
9
10
  import { BaseNode } from '../nodes.js';
10
11
  import { validateRoutePath } from '../util.js';
11
12
  import { lazy } from '../x/decorators.js';
12
- import { err, LocationLike_toLocation } from '../x/diagnostics.js';
13
+ import { err, DiagnosticSeverity, LocationLike_toLocation, } from '../x/diagnostics.js';
14
+ import { getMutationFieldsUsedTransitively } from './util/pageMutationUsage.js';
13
15
  export class RWRoute extends BaseNode {
14
16
  jsxNode;
15
17
  parent;
@@ -30,41 +32,88 @@ export class RWRoute extends BaseNode {
30
32
  get location() {
31
33
  return LocationLike_toLocation(this.jsxNode);
32
34
  }
35
+ /**
36
+ * All enclosing `<Private>` / `<PrivateSet>` JSX elements, walking up from
37
+ * this route's `<Route>` tag to (but not including) the `<Router>` tag.
38
+ * Ordered innermost-first, so `privateAncestors[0]` (if present) is the
39
+ * nearest wrapper. A route can be nested inside a plain `<Set>` that is
40
+ * itself inside a `<PrivateSet>`, so we can't just look at the immediate
41
+ * JSX parent.
42
+ */
43
+ get privateAncestors() {
44
+ const ancestors = [];
45
+ let current = this.jsxNode;
46
+ let parentElement = current.getParentIfKind(tsm.SyntaxKind.JsxElement);
47
+ while (parentElement) {
48
+ const tagName = parentElement
49
+ .getOpeningElement()
50
+ .getTagNameNode()
51
+ .getText();
52
+ // Don't walk past the <Router> tag
53
+ if (tagName === 'Router') {
54
+ break;
55
+ }
56
+ if (tagName === 'Private' || tagName === 'PrivateSet') {
57
+ ancestors.push(parentElement);
58
+ }
59
+ current = parentElement;
60
+ parentElement = current.getParentIfKind(tsm.SyntaxKind.JsxElement);
61
+ }
62
+ return ancestors;
63
+ }
33
64
  get isPrivate() {
34
- const tagText = this.jsxNode
35
- .getParentIfKind(tsm.SyntaxKind.JsxElement)
36
- ?.getOpeningElement()
37
- ?.getTagNameNode()
38
- ?.getText();
39
- return tagText === 'Private' || tagText === 'PrivateSet';
65
+ return this.privateAncestors.length > 0;
40
66
  }
41
67
  get unauthenticated() {
42
- if (!this.isPrivate) {
43
- return undefined;
44
- }
45
- const a = this.jsxNode
46
- .getParentIfKind(tsm.SyntaxKind.JsxElement)
47
- ?.getOpeningElement()
48
- .getAttribute('unauthenticated');
49
- if (!a) {
50
- return undefined;
51
- }
52
- if (tsm.Node.isJsxAttribute(a)) {
53
- const init = a.getInitializer();
54
- if (tsm.Node.isStringLiteral(init)) {
55
- return init.getLiteralValue();
68
+ // Use the innermost Private/PrivateSet ancestor that carries the
69
+ // attribute
70
+ for (const ancestor of this.privateAncestors) {
71
+ const a = ancestor.getOpeningElement().getAttribute('unauthenticated');
72
+ if (!a) {
73
+ continue;
56
74
  }
75
+ if (tsm.Node.isJsxAttribute(a)) {
76
+ const init = a.getInitializer();
77
+ if (tsm.Node.isStringLiteral(init)) {
78
+ return init.getLiteralValue();
79
+ }
80
+ }
81
+ return undefined;
57
82
  }
58
83
  return undefined;
59
84
  }
60
85
  get roles() {
61
- if (!this.isPrivate) {
86
+ // Each Private/PrivateSet wrapper independently guards the route, so the
87
+ // effective requirement is the union of roles across all of them
88
+ const rolesPerAncestor = this.privateAncestors
89
+ .map((ancestor) => this.getRolesAttr(ancestor.getOpeningElement()))
90
+ .filter((val) => val !== undefined);
91
+ if (rolesPerAncestor.length === 0) {
62
92
  return undefined;
63
93
  }
64
- const a = this.jsxNode
65
- .getParentIfKind(tsm.SyntaxKind.JsxElement)
66
- ?.getOpeningElement()
67
- .getAttribute('roles');
94
+ // Preserve today's single-wrapper behavior (and its return shape)
95
+ // exactly when there's only one ancestor with roles
96
+ if (rolesPerAncestor.length === 1) {
97
+ return rolesPerAncestor[0];
98
+ }
99
+ const union = new Set();
100
+ for (const roles of rolesPerAncestor) {
101
+ if (Array.isArray(roles)) {
102
+ roles.forEach((role) => union.add(role));
103
+ }
104
+ else {
105
+ union.add(roles);
106
+ }
107
+ }
108
+ return [...union];
109
+ }
110
+ /**
111
+ * Reads the `roles` attribute off a `<Private>`/`<PrivateSet>` opening
112
+ * element, handling the string literal, quasi-JSON string
113
+ * (e.g. `"['a','b']"`), and JSX array-literal expression forms.
114
+ */
115
+ getRolesAttr(openingElement) {
116
+ const a = openingElement.getAttribute('roles');
68
117
  if (!a) {
69
118
  return undefined;
70
119
  }
@@ -214,6 +263,65 @@ export class RWRoute extends BaseNode {
214
263
  if (this.isNotFound && this.path) {
215
264
  yield err(this.path_literal_node, "The 'Not Found' page cannot have a path");
216
265
  }
266
+ for (const warning of this.unprotectedAuthMutationUsages) {
267
+ const { uri, range } = this.location;
268
+ const routeLabel = this.name ?? this.path ?? '(unnamed route)';
269
+ const diagnostic = {
270
+ uri,
271
+ diagnostic: {
272
+ range,
273
+ message: `Route '${routeLabel}' is not wrapped in <PrivateSet>, but its ` +
274
+ `page uses the mutation '${warning.fieldName}', which is ` +
275
+ `marked @requireAuth in ${warning.sdlFilePath} (found in ` +
276
+ `${warning.componentFilePath})`,
277
+ severity: DiagnosticSeverity.Warning,
278
+ code: RWError.UNPROTECTED_ROUTE_USES_AUTH_GATED_MUTATION,
279
+ },
280
+ };
281
+ yield diagnostic;
282
+ }
283
+ }
284
+ /**
285
+ * For an unprotected route (not wrapped in `<Private>`/`<PrivateSet>`),
286
+ * transitively walks the page's imports to find any GraphQL mutations
287
+ * that are marked `@requireAuth` in the api-side SDL.
288
+ *
289
+ * This is a best-effort static analysis (see `pageMutationUsage.ts`), so
290
+ * any internal failure degrades to "no warning" rather than surfacing a
291
+ * crash diagnostic - this check must never break the other diagnostics.
292
+ */
293
+ get unprotectedAuthMutationUsages() {
294
+ if (this.isPrivate) {
295
+ return [];
296
+ }
297
+ const page = this.page;
298
+ if (!page) {
299
+ return [];
300
+ }
301
+ try {
302
+ const project = this.parent.parent;
303
+ const requireAuthFields = project.requireAuthMutationFields;
304
+ if (requireAuthFields.size === 0) {
305
+ return [];
306
+ }
307
+ const usedMutations = getMutationFieldsUsedTransitively(project, page.filePath);
308
+ const warnings = [];
309
+ for (const [fieldName, componentFilePath] of usedMutations) {
310
+ const sdlFilePath = requireAuthFields.get(fieldName);
311
+ if (!sdlFilePath) {
312
+ continue;
313
+ }
314
+ warnings.push({
315
+ fieldName,
316
+ sdlFilePath,
317
+ componentFilePath: path.relative(project.pathHelper.base, componentFilePath),
318
+ });
319
+ }
320
+ return warnings;
321
+ }
322
+ catch {
323
+ return [];
324
+ }
217
325
  }
218
326
  get hasPathCollision() {
219
327
  if (!this.path) {
@@ -286,6 +394,9 @@ __decorate([
286
394
  __decorate([
287
395
  lazy()
288
396
  ], RWRoute.prototype, "location", null);
397
+ __decorate([
398
+ lazy()
399
+ ], RWRoute.prototype, "privateAncestors", null);
289
400
  __decorate([
290
401
  lazy()
291
402
  ], RWRoute.prototype, "isPrivate", null);
@@ -334,6 +445,9 @@ __decorate([
334
445
  __decorate([
335
446
  lazy()
336
447
  ], RWRoute.prototype, "redirect", null);
448
+ __decorate([
449
+ lazy()
450
+ ], RWRoute.prototype, "unprotectedAuthMutationUsages", null);
337
451
  __decorate([
338
452
  lazy()
339
453
  ], RWRoute.prototype, "hasPathCollision", null);
@@ -1 +1 @@
1
- {"version":3,"file":"RWRoute.js","sourceRoot":"","sources":["../../src/model/RWRoute.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"RWRoute.js","sourceRoot":"","sources":["../../src/model/RWRoute.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ import type { RWProject } from '../RWProject.js';
2
+ /**
3
+ * Transitively walks the static imports reachable from `entryFilePath`
4
+ * (typically a page's file path) and collects the names of GraphQL mutation
5
+ * root fields used anywhere in that import graph, via `gql`/`graphql`
6
+ * tagged template literals.
7
+ *
8
+ * This is a best-effort, syntactic analysis: it does not resolve TypeScript
9
+ * path aliases beyond the `src/` -> `web/src/` convention, does not follow
10
+ * re-exports (`export * from './x'`), and skips any GraphQL document it
11
+ * can't parse (e.g. ones mangled by interpolation).
12
+ *
13
+ * @returns a map of mutation root field name -> the first file path (inside
14
+ * `web/src`) in which a `gql`/`graphql` document using that mutation was
15
+ * found.
16
+ */
17
+ export declare function getMutationFieldsUsedTransitively(project: RWProject, entryFilePath: string): Map<string, string>;
18
+ //# sourceMappingURL=pageMutationUsage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pageMutationUsage.d.ts","sourceRoot":"","sources":["../../../src/model/util/pageMutationUsage.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAoBhD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,iCAAiC,CAC/C,OAAO,EAAE,SAAS,EAClB,aAAa,EAAE,MAAM,GACpB,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAiCrB"}
@@ -0,0 +1,256 @@
1
+ import fs from 'node:fs';
2
+ import path from 'node:path';
3
+ import { Kind, OperationTypeNode, parse as parseGraphQL } from 'graphql';
4
+ import * as tsm from 'ts-morph';
5
+ import { createTSMSourceFile_cached } from '../../x/ts-morph.js';
6
+ /**
7
+ * File extensions (in resolution order) tried when an import specifier
8
+ * doesn't include one, mirroring typical Metro/webpack/vite resolution.
9
+ */
10
+ const RESOLVE_EXTENSIONS = ['.tsx', '.ts', '.jsx', '.js'];
11
+ /**
12
+ * Per-project cache of "mutation root field names found directly in this
13
+ * file" (i.e. not counting fields found in imported files). Many pages
14
+ * share the same components (e.g. a shared `<Form>` or layout), so caching
15
+ * per file - rather than per page - avoids re-parsing the same file many
16
+ * times when checking many routes.
17
+ */
18
+ const fileMutationFieldsCache = new WeakMap();
19
+ /**
20
+ * Transitively walks the static imports reachable from `entryFilePath`
21
+ * (typically a page's file path) and collects the names of GraphQL mutation
22
+ * root fields used anywhere in that import graph, via `gql`/`graphql`
23
+ * tagged template literals.
24
+ *
25
+ * This is a best-effort, syntactic analysis: it does not resolve TypeScript
26
+ * path aliases beyond the `src/` -> `web/src/` convention, does not follow
27
+ * re-exports (`export * from './x'`), and skips any GraphQL document it
28
+ * can't parse (e.g. ones mangled by interpolation).
29
+ *
30
+ * @returns a map of mutation root field name -> the first file path (inside
31
+ * `web/src`) in which a `gql`/`graphql` document using that mutation was
32
+ * found.
33
+ */
34
+ export function getMutationFieldsUsedTransitively(project, entryFilePath) {
35
+ const usedIn = new Map();
36
+ const visited = new Set();
37
+ const queue = [path.normalize(entryFilePath)];
38
+ while (queue.length > 0) {
39
+ const filePath = queue.shift();
40
+ if (!filePath) {
41
+ break;
42
+ }
43
+ if (visited.has(filePath)) {
44
+ continue;
45
+ }
46
+ visited.add(filePath);
47
+ for (const fieldName of getMutationFieldNamesForFile(project, filePath)) {
48
+ if (!usedIn.has(fieldName)) {
49
+ usedIn.set(fieldName, filePath);
50
+ }
51
+ }
52
+ for (const importedFilePath of resolveImportedFilePaths(project, filePath)) {
53
+ if (!visited.has(importedFilePath)) {
54
+ queue.push(importedFilePath);
55
+ }
56
+ }
57
+ }
58
+ return usedIn;
59
+ }
60
+ /**
61
+ * Returns (and caches at the project level) the mutation root field names
62
+ * used directly within `filePath`, i.e. not counting any imported files.
63
+ */
64
+ function getMutationFieldNamesForFile(project, filePath) {
65
+ let cache = fileMutationFieldsCache.get(project);
66
+ if (!cache) {
67
+ cache = new Map();
68
+ fileMutationFieldsCache.set(project, cache);
69
+ }
70
+ const cached = cache.get(filePath);
71
+ if (cached) {
72
+ return cached;
73
+ }
74
+ const fieldNames = extractMutationFieldNames(filePath);
75
+ cache.set(filePath, fieldNames);
76
+ return fieldNames;
77
+ }
78
+ /**
79
+ * Parses `filePath` and extracts the top-level selection-set field names of
80
+ * every `mutation` operation defined in a `gql`/`graphql` tagged template
81
+ * literal within it.
82
+ */
83
+ function extractMutationFieldNames(filePath) {
84
+ const fieldNames = new Set();
85
+ const sf = readSourceFile(filePath);
86
+ if (!sf) {
87
+ return fieldNames;
88
+ }
89
+ for (const tagged of sf.getDescendantsOfKind(tsm.SyntaxKind.TaggedTemplateExpression)) {
90
+ const tag = tagged.getTag();
91
+ if (!tsm.Node.isIdentifier(tag)) {
92
+ continue;
93
+ }
94
+ if (tag.getText() !== 'gql' && tag.getText() !== 'graphql') {
95
+ continue;
96
+ }
97
+ const documentText = TemplateLiteral_toStaticText(tagged.getTemplate());
98
+ if (!documentText) {
99
+ continue;
100
+ }
101
+ try {
102
+ const document = parseGraphQL(documentText);
103
+ for (const definition of document.definitions) {
104
+ if (definition.kind !== Kind.OPERATION_DEFINITION ||
105
+ definition.operation !== OperationTypeNode.MUTATION) {
106
+ continue;
107
+ }
108
+ for (const selection of definition.selectionSet.selections) {
109
+ if (selection.kind === Kind.FIELD) {
110
+ fieldNames.add(selection.name.value);
111
+ }
112
+ }
113
+ }
114
+ }
115
+ catch {
116
+ // Best-effort: skip documents we can't parse (e.g. ones mangled by
117
+ // interpolation) rather than failing the whole analysis.
118
+ continue;
119
+ }
120
+ }
121
+ return fieldNames;
122
+ }
123
+ /**
124
+ * Extracts the static text of a template literal. For templates with
125
+ * substitutions (e.g. an interpolated fragment), the quasi (non-interpolated)
126
+ * parts are concatenated, which is good enough to preserve the operation's
127
+ * field structure even though the interpolated content itself is dropped.
128
+ */
129
+ function TemplateLiteral_toStaticText(template) {
130
+ if (tsm.Node.isNoSubstitutionTemplateLiteral(template)) {
131
+ return template.getLiteralText();
132
+ }
133
+ if (tsm.Node.isTemplateExpression(template)) {
134
+ let text = template.getHead().getLiteralText();
135
+ for (const span of template.getTemplateSpans()) {
136
+ text += span.getLiteral().getLiteralText();
137
+ }
138
+ return text;
139
+ }
140
+ return undefined;
141
+ }
142
+ /**
143
+ * Resolves the file paths of every `ImportDeclaration` module specifier in
144
+ * `filePath` that points inside `web/src`. Import specifiers pointing to npm
145
+ * packages, the api side, or anything else outside `web/src` are skipped.
146
+ */
147
+ function resolveImportedFilePaths(project, filePath) {
148
+ const sf = readSourceFile(filePath);
149
+ if (!sf) {
150
+ return [];
151
+ }
152
+ const resolved = [];
153
+ for (const importDecl of sf.getDescendantsOfKind(tsm.SyntaxKind.ImportDeclaration)) {
154
+ const specifier = importDecl.getModuleSpecifierValue();
155
+ const resolvedPath = resolveModuleSpecifier(project, filePath, specifier);
156
+ if (resolvedPath) {
157
+ resolved.push(resolvedPath);
158
+ }
159
+ }
160
+ return resolved;
161
+ }
162
+ /**
163
+ * Resolves a single import specifier to an absolute file path inside
164
+ * `web/src`, or `undefined` if it's not a relative import / `src/`-aliased
165
+ * import, or if it doesn't resolve to a file inside `web/src` (e.g. an npm
166
+ * package, or an api-side import).
167
+ */
168
+ function resolveModuleSpecifier(project, fromFilePath, specifier) {
169
+ const webSrc = project.pathHelper.web.src;
170
+ let basePath;
171
+ if (specifier.startsWith('.')) {
172
+ basePath = path.resolve(path.dirname(fromFilePath), specifier);
173
+ }
174
+ else if (specifier === 'src' || specifier.startsWith('src/')) {
175
+ basePath = path.join(webSrc, specifier.slice('src'.length));
176
+ }
177
+ else {
178
+ // Not a relative or `src/`-aliased import (e.g. an npm package, or an
179
+ // absolute import into the api side) - nothing to resolve.
180
+ return undefined;
181
+ }
182
+ const resolvedPath = resolveWithExtensions(basePath);
183
+ if (!resolvedPath) {
184
+ return undefined;
185
+ }
186
+ const relativeToWebSrc = path.relative(webSrc, resolvedPath);
187
+ if (relativeToWebSrc.startsWith('..') || path.isAbsolute(relativeToWebSrc)) {
188
+ // Resolves outside web/src (e.g. reaching into the api side)
189
+ return undefined;
190
+ }
191
+ return resolvedPath;
192
+ }
193
+ /**
194
+ * Tries `basePath` as-is, then with each of `RESOLVE_EXTENSIONS`, then as a
195
+ * directory index file with each of `RESOLVE_EXTENSIONS`.
196
+ */
197
+ function resolveWithExtensions(basePath) {
198
+ if (isFile(basePath)) {
199
+ return basePath;
200
+ }
201
+ // An ESM-style specifier (e.g. `./Foo.js`) refers to the TS source
202
+ // (`./Foo.tsx`), not a literal `.js` file.
203
+ const jsExtMatch = /\.(js|jsx)$/.exec(basePath);
204
+ if (jsExtMatch) {
205
+ const withoutExt = basePath.slice(0, -jsExtMatch[0].length);
206
+ for (const ext of RESOLVE_EXTENSIONS) {
207
+ const candidate = withoutExt + ext;
208
+ if (isFile(candidate)) {
209
+ return candidate;
210
+ }
211
+ }
212
+ }
213
+ for (const ext of RESOLVE_EXTENSIONS) {
214
+ const candidate = basePath + ext;
215
+ if (isFile(candidate)) {
216
+ return candidate;
217
+ }
218
+ }
219
+ for (const ext of RESOLVE_EXTENSIONS) {
220
+ const candidate = path.join(basePath, 'index' + ext);
221
+ if (isFile(candidate)) {
222
+ return candidate;
223
+ }
224
+ }
225
+ return undefined;
226
+ }
227
+ function isFile(filePath) {
228
+ try {
229
+ return fs.statSync(filePath).isFile();
230
+ }
231
+ catch {
232
+ return false;
233
+ }
234
+ }
235
+ /**
236
+ * Reads and parses `filePath` with ts-morph, going through the same cached
237
+ * in-memory source-file infrastructure the rest of the model uses (see
238
+ * `FileNode.sf`). Returns `undefined` (rather than throwing) for files that
239
+ * don't exist or fail to parse, since this analysis must degrade gracefully.
240
+ */
241
+ function readSourceFile(filePath) {
242
+ let text;
243
+ try {
244
+ text = fs.readFileSync(filePath, 'utf8');
245
+ }
246
+ catch {
247
+ return undefined;
248
+ }
249
+ try {
250
+ return createTSMSourceFile_cached(filePath, text);
251
+ }
252
+ catch {
253
+ return undefined;
254
+ }
255
+ }
256
+ //# sourceMappingURL=pageMutationUsage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pageMutationUsage.js","sourceRoot":"","sources":["../../../src/model/util/pageMutationUsage.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cedarjs/structure",
3
- "version": "6.0.0-rc.241",
3
+ "version": "6.0.0-rc.260",
4
4
  "description": "noun: the arrangement of and relations between the parts or elements of something complex",
5
5
  "repository": {
6
6
  "type": "git",
@@ -54,7 +54,7 @@
54
54
  "test:watch": "vitest watch"
55
55
  },
56
56
  "dependencies": {
57
- "@cedarjs/project-config": "6.0.0-rc.241",
57
+ "@cedarjs/project-config": "6.0.0-rc.260",
58
58
  "@prisma/internals": "7.8.0",
59
59
  "@types/line-column": "1.0.2",
60
60
  "camelcase": "6.3.0",