@cedarjs/structure 6.0.0-canary.2879 → 6.0.0-canary.2881
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 +12 -1
- package/dist/model/RWRoute.d.ts.map +1 -1
- package/dist/model/RWRoute.js +65 -1
- 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 {
|
|
@@ -52,7 +53,17 @@ export declare class RWRoute extends BaseNode {
|
|
|
52
53
|
get path_literal_node(): tsm.StringLiteral | undefined;
|
|
53
54
|
get isNotFound(): boolean;
|
|
54
55
|
get redirect(): string | undefined;
|
|
55
|
-
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();
|
|
56
67
|
private get hasPathCollision();
|
|
57
68
|
private getBoolAttr;
|
|
58
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;
|
|
@@ -261,6 +263,65 @@ export class RWRoute extends BaseNode {
|
|
|
261
263
|
if (this.isNotFound && this.path) {
|
|
262
264
|
yield err(this.path_literal_node, "The 'Not Found' page cannot have a path");
|
|
263
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
|
+
}
|
|
264
325
|
}
|
|
265
326
|
get hasPathCollision() {
|
|
266
327
|
if (!this.path) {
|
|
@@ -384,6 +445,9 @@ __decorate([
|
|
|
384
445
|
__decorate([
|
|
385
446
|
lazy()
|
|
386
447
|
], RWRoute.prototype, "redirect", null);
|
|
448
|
+
__decorate([
|
|
449
|
+
lazy()
|
|
450
|
+
], RWRoute.prototype, "unprotectedAuthMutationUsages", null);
|
|
387
451
|
__decorate([
|
|
388
452
|
lazy()
|
|
389
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-canary.
|
|
3
|
+
"version": "6.0.0-canary.2881",
|
|
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-canary.
|
|
57
|
+
"@cedarjs/project-config": "6.0.0-canary.2881",
|
|
58
58
|
"@prisma/internals": "7.8.0",
|
|
59
59
|
"@types/line-column": "1.0.2",
|
|
60
60
|
"camelcase": "6.3.0",
|