@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 +2 -1
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +1 -0
- package/dist/errors.js.map +1 -1
- package/dist/model/RWProject.d.ts +10 -0
- package/dist/model/RWProject.d.ts.map +1 -1
- package/dist/model/RWProject.js +39 -0
- package/dist/model/RWProject.js.map +1 -1
- package/dist/model/RWRoute.d.ts +28 -2
- package/dist/model/RWRoute.d.ts.map +1 -1
- package/dist/model/RWRoute.js +140 -26
- package/dist/model/RWRoute.js.map +1 -1
- package/dist/model/util/pageMutationUsage.d.ts +18 -0
- package/dist/model/util/pageMutationUsage.d.ts.map +1 -0
- package/dist/model/util/pageMutationUsage.js +256 -0
- package/dist/model/util/pageMutationUsage.js.map +1 -0
- package/package.json +2 -2
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
|
package/dist/errors.d.ts.map
CHANGED
|
@@ -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;
|
|
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
|
package/dist/errors.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,CAAN,IAAY,
|
|
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;
|
|
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"}
|
package/dist/model/RWProject.js
CHANGED
|
@@ -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":";;;;;;AAAA,OAAO,EAAE,MAAM,SAAS,CAAA;AACxB,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAC3C,OAAO,IAAI,MAAM,WAAW,CAAA;AAK5B,OAAO,EACL,QAAQ,EACR,eAAe,EACf,aAAa,EACb,gBAAgB,GACjB,MAAM,yBAAyB,CAAA;AAEhC,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AACtC,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAA;AAC/C,OAAO,EACL,wBAAwB,EACxB,cAAc,EACd,gBAAgB,EAChB,QAAQ,GACT,MAAM,cAAc,CAAA;AACrB,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAEtC,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;
|
|
1
|
+
{"version":3,"file":"RWProject.js","sourceRoot":"","sources":["../../src/model/RWProject.ts"],"names":[],"mappings":"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"}
|
package/dist/model/RWRoute.d.ts
CHANGED
|
@@ -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 |
|
|
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<
|
|
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":"
|
|
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"}
|
package/dist/model/RWRoute.js
CHANGED
|
@@ -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
|
-
|
|
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
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
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
|
-
|
|
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
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
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.
|
|
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.
|
|
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",
|