@eddeee888/gcg-typescript-resolver-files 0.0.1 → 0.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +13 -0
- package/README.md +10 -10
- package/package.json +2 -1
- package/src/index.d.ts +1 -1
- package/src/index.js +3 -4
- package/src/index.js.map +1 -1
- package/src/preset.d.ts +11 -0
- package/src/preset.js +76 -0
- package/src/preset.js.map +1 -0
- package/src/run/addExternalResolverImport.d.ts +7 -0
- package/src/run/addExternalResolverImport.js +99 -0
- package/src/run/addExternalResolverImport.js.map +1 -0
- package/src/run/addResolversMainFile.d.ts +2 -8
- package/src/run/addResolversMainFile.js +77 -20
- package/src/run/addResolversMainFile.js.map +1 -1
- package/src/run/fixExistingResolvers.d.ts +2 -2
- package/src/run/fixExistingResolvers.js +5 -5
- package/src/run/fixExistingResolvers.js.map +1 -1
- package/src/run/handleGraphQLObjectType.d.ts +1 -2
- package/src/run/handleGraphQLObjectType.js +10 -15
- package/src/run/handleGraphQLObjectType.js.map +1 -1
- package/src/run/handleGraphQLRootObjectTypeField.d.ts +2 -0
- package/src/run/handleGraphQLRootObjectTypeField.js +25 -0
- package/src/run/handleGraphQLRootObjectTypeField.js.map +1 -0
- package/src/run/handleGraphQLScalarType.d.ts +2 -0
- package/src/run/handleGraphQLScalarType.js +26 -0
- package/src/run/handleGraphQLScalarType.js.map +1 -0
- package/src/run/handleGraphQLUninionType.d.ts +1 -2
- package/src/run/handleGraphQLUninionType.js +10 -14
- package/src/run/handleGraphQLUninionType.js.map +1 -1
- package/src/run/run.d.ts +2 -2
- package/src/run/run.js +43 -29
- package/src/run/run.js.map +1 -1
- package/src/run/visitNamedType.d.ts +15 -0
- package/src/run/visitNamedType.js +102 -0
- package/src/run/visitNamedType.js.map +1 -0
- package/src/types.d.ts +43 -16
- package/src/utils.d.ts +3 -2
- package/src/utils.js +34 -12
- package/src/utils.js.map +1 -1
- package/src/plugin.d.ts +0 -18
- package/src/plugin.js +0 -64
- package/src/plugin.js.map +0 -1
- package/src/run/handleGraphQLRootObjectType.d.ts +0 -3
- package/src/run/handleGraphQLRootObjectType.js +0 -44
- package/src/run/handleGraphQLRootObjectType.js.map +0 -1
- package/src/run/parseLocation.d.ts +0 -7
- package/src/run/parseLocation.js +0 -37
- package/src/run/parseLocation.js.map +0 -1
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.handleGraphQLScalarType = void 0;
|
|
4
|
+
const utils_1 = require("../utils");
|
|
5
|
+
const graphQLScalarType = 'GraphQLScalarType';
|
|
6
|
+
const handleGraphQLScalarType = ({ fieldFilePath, resolverName, normalizedResolverName }, { result }) => {
|
|
7
|
+
const resolverVariableStatement = `export const ${resolverName}: ${graphQLScalarType} = { /* Implement ${resolverName} scalar logic here */ };`;
|
|
8
|
+
result.files[fieldFilePath] = {
|
|
9
|
+
__filetype: 'resolver',
|
|
10
|
+
content: `
|
|
11
|
+
${(0, utils_1.printImportLine)({
|
|
12
|
+
isTypeImport: true,
|
|
13
|
+
module: 'graphql',
|
|
14
|
+
namedImports: [graphQLScalarType],
|
|
15
|
+
})}
|
|
16
|
+
${resolverVariableStatement}`,
|
|
17
|
+
mainImportIdentifier: resolverName,
|
|
18
|
+
meta: {
|
|
19
|
+
belongsToRootObject: null,
|
|
20
|
+
normalizedResolverName,
|
|
21
|
+
resolverVariableStatement,
|
|
22
|
+
},
|
|
23
|
+
};
|
|
24
|
+
};
|
|
25
|
+
exports.handleGraphQLScalarType = handleGraphQLScalarType;
|
|
26
|
+
//# sourceMappingURL=handleGraphQLScalarType.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"handleGraphQLScalarType.js","sourceRoot":"","sources":["../../../../../packages/typescript-resolver-files/src/run/handleGraphQLScalarType.ts"],"names":[],"mappings":";;;AACA,oCAA2C;AAE3C,MAAM,iBAAiB,GAAG,mBAAmB,CAAC;AAEvC,MAAM,uBAAuB,GAAuB,CACzD,EAAE,aAAa,EAAE,YAAY,EAAE,sBAAsB,EAAE,EACvD,EAAE,MAAM,EAAE,EACV,EAAE;IACF,MAAM,yBAAyB,GAAG,gBAAgB,YAAY,KAAK,iBAAiB,qBAAqB,YAAY,0BAA0B,CAAC;IAEhJ,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,GAAG;QAC5B,UAAU,EAAE,UAAU;QACtB,OAAO,EAAE;MACP,IAAA,uBAAe,EAAC;YAChB,YAAY,EAAE,IAAI;YAClB,MAAM,EAAE,SAAS;YACjB,YAAY,EAAE,CAAC,iBAAiB,CAAC;SAClC,CAAC;MACA,yBAAyB,EAAE;QAC7B,oBAAoB,EAAE,YAAY;QAClC,IAAI,EAAE;YACJ,mBAAmB,EAAE,IAAI;YACzB,sBAAsB;YACtB,yBAAyB;SAC1B;KACF,CAAC;AACJ,CAAC,CAAC;AAtBW,QAAA,uBAAuB,2BAsBlC"}
|
|
@@ -1,26 +1,22 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.handleGraphQLUninionType = void 0;
|
|
4
|
-
const path = require("path");
|
|
5
4
|
const utils_1 = require("../utils");
|
|
6
|
-
const handleGraphQLUninionType = ({
|
|
7
|
-
const
|
|
8
|
-
const fieldFilePath = path.join(outputDir, `${typeName}.ts`);
|
|
9
|
-
if (result.files[fieldFilePath]) {
|
|
10
|
-
throw new Error(`Unexpected duplication in field filename. Type: ${typeName}, file: ${fieldFilePath}`);
|
|
11
|
-
}
|
|
12
|
-
result.dirs[outputDir] = true;
|
|
13
|
-
const resolverTypeName = `${typeName}Resolvers`; // Generated type from typescript-resolvers plugin
|
|
14
|
-
const relativePathToResolverTypes = (0, utils_1.relativeModulePath)(outputDir, resolverTypesPath);
|
|
15
|
-
const pathToResolverModule = (0, utils_1.printImportModule)(relativePathToResolverTypes);
|
|
16
|
-
const resolverVariableStatement = `export const ${typeName}: ${resolverTypeName} = { __resolveType: (parent) => parent.__typename };`;
|
|
5
|
+
const handleGraphQLUninionType = ({ fieldFilePath, resolverName, normalizedResolverName, resolversTypeMeta }, { result }) => {
|
|
6
|
+
const resolverVariableStatement = `export const ${resolverName}: ${resolversTypeMeta.typeString} = { __resolveType: (parent) => parent.__typename };`;
|
|
17
7
|
result.files[fieldFilePath] = {
|
|
18
8
|
__filetype: 'resolver',
|
|
19
|
-
content: `
|
|
9
|
+
content: `
|
|
10
|
+
${(0, utils_1.printImportLine)({
|
|
11
|
+
isTypeImport: true,
|
|
12
|
+
module: resolversTypeMeta.module,
|
|
13
|
+
namedImports: [resolversTypeMeta.typeNamedImport],
|
|
14
|
+
})}
|
|
20
15
|
${resolverVariableStatement}`,
|
|
21
|
-
mainImportIdentifier:
|
|
16
|
+
mainImportIdentifier: resolverName,
|
|
22
17
|
meta: {
|
|
23
18
|
belongsToRootObject: null,
|
|
19
|
+
normalizedResolverName,
|
|
24
20
|
resolverVariableStatement,
|
|
25
21
|
},
|
|
26
22
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handleGraphQLUninionType.js","sourceRoot":"","sources":["../../../../../packages/typescript-resolver-files/src/run/handleGraphQLUninionType.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"handleGraphQLUninionType.js","sourceRoot":"","sources":["../../../../../packages/typescript-resolver-files/src/run/handleGraphQLUninionType.ts"],"names":[],"mappings":";;;AACA,oCAA2C;AAEpC,MAAM,wBAAwB,GAAuB,CAC1D,EAAE,aAAa,EAAE,YAAY,EAAE,sBAAsB,EAAE,iBAAiB,EAAE,EAC1E,EAAE,MAAM,EAAE,EACV,EAAE;IACF,MAAM,yBAAyB,GAAG,gBAAgB,YAAY,KAAK,iBAAiB,CAAC,UAAU,sDAAsD,CAAC;IAEtJ,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,GAAG;QAC5B,UAAU,EAAE,UAAU;QACtB,OAAO,EAAE;MACP,IAAA,uBAAe,EAAC;YAChB,YAAY,EAAE,IAAI;YAClB,MAAM,EAAE,iBAAiB,CAAC,MAAM;YAChC,YAAY,EAAE,CAAC,iBAAiB,CAAC,eAAe,CAAC;SAClD,CAAC;MACA,yBAAyB,EAAE;QAC7B,oBAAoB,EAAE,YAAY;QAClC,IAAI,EAAE;YACJ,mBAAmB,EAAE,IAAI;YACzB,sBAAsB;YACtB,yBAAyB;SAC1B;KACF,CAAC;AACJ,CAAC,CAAC;AAtBW,QAAA,wBAAwB,4BAsBnC"}
|
package/src/run/run.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
export declare const run: (
|
|
1
|
+
import type { RunContext } from '../types';
|
|
2
|
+
export declare const run: (ctx: RunContext) => void;
|
package/src/run/run.js
CHANGED
|
@@ -3,44 +3,58 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.run = void 0;
|
|
4
4
|
const graphql_1 = require("graphql");
|
|
5
5
|
const utils_1 = require("../utils");
|
|
6
|
-
const handleGraphQLRootObjectType_1 = require("./handleGraphQLRootObjectType");
|
|
7
|
-
const handleGraphQLObjectType_1 = require("./handleGraphQLObjectType");
|
|
8
|
-
const handleGraphQLUninionType_1 = require("./handleGraphQLUninionType");
|
|
9
6
|
const addResolversMainFile_1 = require("./addResolversMainFile");
|
|
10
7
|
const fixExistingResolvers_1 = require("./fixExistingResolvers");
|
|
11
|
-
const
|
|
12
|
-
const
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
8
|
+
const handleGraphQLRootObjectTypeField_1 = require("./handleGraphQLRootObjectTypeField");
|
|
9
|
+
const handleGraphQLObjectType_1 = require("./handleGraphQLObjectType");
|
|
10
|
+
const handleGraphQLUninionType_1 = require("./handleGraphQLUninionType");
|
|
11
|
+
const handleGraphQLScalarType_1 = require("./handleGraphQLScalarType");
|
|
12
|
+
const visitNamedType_1 = require("./visitNamedType");
|
|
13
|
+
const run = (ctx) => {
|
|
14
|
+
Object.entries(ctx.config.schema.getTypeMap()).forEach(([schemaType, namedType]) => {
|
|
15
|
+
const isPredefinedScalar = (0, graphql_1.isSpecifiedScalarType)(namedType);
|
|
16
|
+
const isIntrospection = (0, graphql_1.isIntrospectionType)(namedType);
|
|
17
|
+
// Ignore certain types:
|
|
18
|
+
// 1. introspection types i.e. with `__` prefixes
|
|
19
|
+
// 2. base scalars e.g. Boolean, Int, etc.
|
|
20
|
+
// 3. Other natives (mostly base scalars) which was not defined in the schema i.e. no `astNode`
|
|
21
|
+
if (isPredefinedScalar || isIntrospection || !namedType.astNode) {
|
|
20
22
|
return;
|
|
21
23
|
}
|
|
24
|
+
//
|
|
25
|
+
// "Visitor" pattern
|
|
26
|
+
//
|
|
27
|
+
const visitor = {
|
|
28
|
+
RootObjectTypeField: handleGraphQLRootObjectTypeField_1.handleGraphQLRootObjectTypeField,
|
|
29
|
+
ObjectType: handleGraphQLObjectType_1.handleGraphQLObjectType,
|
|
30
|
+
UnionType: handleGraphQLUninionType_1.handleGraphQLUninionType,
|
|
31
|
+
ScalarType: handleGraphQLScalarType_1.handleGraphQLScalarType,
|
|
32
|
+
};
|
|
22
33
|
if ((0, graphql_1.isObjectType)(namedType) && (0, utils_1.isRootObjectType)(schemaType)) {
|
|
23
|
-
(
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
if (!locationInfo.isInWhitelistedModule) {
|
|
35
|
-
return;
|
|
36
|
-
}
|
|
37
|
-
(0, handleGraphQLUninionType_1.handleGraphQLUninionType)({ type: namedType, outputDir: locationInfo.pathToLocation }, config, result);
|
|
34
|
+
Object.entries(namedType.getFields()).forEach(([fieldName, fieldNode]) => {
|
|
35
|
+
var _a;
|
|
36
|
+
return (0, visitNamedType_1.visitNamedType)({
|
|
37
|
+
namedType,
|
|
38
|
+
resolverName: fieldName,
|
|
39
|
+
belongsToRootObject: schemaType,
|
|
40
|
+
location: (_a = fieldNode.astNode) === null || _a === void 0 ? void 0 : _a.loc,
|
|
41
|
+
visitor,
|
|
42
|
+
}, ctx);
|
|
43
|
+
});
|
|
44
|
+
return;
|
|
38
45
|
}
|
|
46
|
+
(0, visitNamedType_1.visitNamedType)({
|
|
47
|
+
namedType,
|
|
48
|
+
resolverName: namedType.name,
|
|
49
|
+
belongsToRootObject: null,
|
|
50
|
+
location: namedType.astNode.loc,
|
|
51
|
+
visitor,
|
|
52
|
+
}, ctx);
|
|
39
53
|
});
|
|
40
54
|
// Check to see which resolver file exists already
|
|
41
|
-
(0, fixExistingResolvers_1.fixExistingResolvers)(
|
|
55
|
+
(0, fixExistingResolvers_1.fixExistingResolvers)(ctx);
|
|
42
56
|
// Put all resolvers into a barrel file (or main file)
|
|
43
|
-
(0, addResolversMainFile_1.addResolversMainFile)(
|
|
57
|
+
(0, addResolversMainFile_1.addResolversMainFile)(ctx);
|
|
44
58
|
};
|
|
45
59
|
exports.run = run;
|
|
46
60
|
//# sourceMappingURL=run.js.map
|
package/src/run/run.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run.js","sourceRoot":"","sources":["../../../../../packages/typescript-resolver-files/src/run/run.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"run.js","sourceRoot":"","sources":["../../../../../packages/typescript-resolver-files/src/run/run.ts"],"names":[],"mappings":";;;AAAA,qCAIiB;AAEjB,oCAA4C;AAC5C,iEAA8D;AAC9D,iEAA8D;AAC9D,yFAAsF;AACtF,uEAAoE;AACpE,yEAAsE;AACtE,uEAAoE;AACpE,qDAAwE;AAEjE,MAAM,GAAG,GAAG,CAAC,GAAe,EAAQ,EAAE;IAC3C,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC,OAAO,CACpD,CAAC,CAAC,UAAU,EAAE,SAAS,CAAC,EAAE,EAAE;QAC1B,MAAM,kBAAkB,GAAG,IAAA,+BAAqB,EAAC,SAAS,CAAC,CAAC;QAC5D,MAAM,eAAe,GAAG,IAAA,6BAAmB,EAAC,SAAS,CAAC,CAAC;QAEvD,wBAAwB;QACxB,iDAAiD;QACjD,0CAA0C;QAC1C,+FAA+F;QAC/F,IAAI,kBAAkB,IAAI,eAAe,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE;YAC/D,OAAO;SACR;QAED,EAAE;QACF,oBAAoB;QACpB,EAAE;QACF,MAAM,OAAO,GAAoC;YAC/C,mBAAmB,EAAE,mEAAgC;YACrD,UAAU,EAAE,iDAAuB;YACnC,SAAS,EAAE,mDAAwB;YACnC,UAAU,EAAE,iDAAuB;SACpC,CAAC;QAEF,IAAI,IAAA,sBAAY,EAAC,SAAS,CAAC,IAAI,IAAA,wBAAgB,EAAC,UAAU,CAAC,EAAE;YAC3D,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC,CAAC,OAAO,CAC3C,CAAC,CAAC,SAAS,EAAE,SAAS,CAAC,EAAE,EAAE;;gBACzB,OAAA,IAAA,+BAAc,EACZ;oBACE,SAAS;oBACT,YAAY,EAAE,SAAS;oBACvB,mBAAmB,EAAE,UAAU;oBAC/B,QAAQ,EAAE,MAAA,SAAS,CAAC,OAAO,0CAAE,GAAG;oBAChC,OAAO;iBACR,EACD,GAAG,CACJ,CAAA;aAAA,CACJ,CAAC;YACF,OAAO;SACR;QAED,IAAA,+BAAc,EACZ;YACE,SAAS;YACT,YAAY,EAAE,SAAS,CAAC,IAAI;YAC5B,mBAAmB,EAAE,IAAI;YACzB,QAAQ,EAAE,SAAS,CAAC,OAAO,CAAC,GAAG;YAC/B,OAAO;SACR,EACD,GAAG,CACJ,CAAC;IACJ,CAAC,CACF,CAAC;IAEF,kDAAkD;IAClD,IAAA,2CAAoB,EAAC,GAAG,CAAC,CAAC;IAE1B,sDAAsD;IACtD,IAAA,2CAAoB,EAAC,GAAG,CAAC,CAAC;AAC5B,CAAC,CAAC;AA3DW,QAAA,GAAG,OA2Dd"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { GraphQLNamedType, Location } from 'graphql';
|
|
2
|
+
import { GraphQLTypeHandler, RootObjectType, RunContext } from '../types';
|
|
3
|
+
export interface VisitNamedTypeParams {
|
|
4
|
+
namedType: GraphQLNamedType;
|
|
5
|
+
resolverName: string;
|
|
6
|
+
belongsToRootObject: RootObjectType | null;
|
|
7
|
+
visitor: {
|
|
8
|
+
RootObjectTypeField: GraphQLTypeHandler;
|
|
9
|
+
ObjectType: GraphQLTypeHandler;
|
|
10
|
+
ScalarType: GraphQLTypeHandler;
|
|
11
|
+
UnionType: GraphQLTypeHandler;
|
|
12
|
+
};
|
|
13
|
+
location?: Location;
|
|
14
|
+
}
|
|
15
|
+
export declare const visitNamedType: ({ namedType, resolverName, belongsToRootObject, location, visitor, }: VisitNamedTypeParams, ctx: RunContext) => void;
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.visitNamedType = void 0;
|
|
4
|
+
const path = require("path");
|
|
5
|
+
const graphql_1 = require("graphql");
|
|
6
|
+
const utils_1 = require("../utils");
|
|
7
|
+
const addExternalResolverImport_1 = require("./addExternalResolverImport");
|
|
8
|
+
const visitNamedType = ({ namedType, resolverName, belongsToRootObject, location, visitor, }, ctx) => {
|
|
9
|
+
const normalizedResolverName = normalizeResolverName(resolverName, belongsToRootObject);
|
|
10
|
+
const externalResolverImportSyntax = ctx.config.externalResolvers[normalizedResolverName];
|
|
11
|
+
if (externalResolverImportSyntax) {
|
|
12
|
+
// If has external resolver, use it
|
|
13
|
+
(0, addExternalResolverImport_1.addExternalResolverImport)({
|
|
14
|
+
normalizedResolverName,
|
|
15
|
+
configImportSyntax: externalResolverImportSyntax,
|
|
16
|
+
}, ctx);
|
|
17
|
+
return;
|
|
18
|
+
}
|
|
19
|
+
// Check to see if need to generate resolver files
|
|
20
|
+
const outputDir = parseLocation(belongsToRootObject ? [belongsToRootObject] : [], ctx, location);
|
|
21
|
+
if (!outputDir) {
|
|
22
|
+
return;
|
|
23
|
+
}
|
|
24
|
+
// Generate resolver files based on its type
|
|
25
|
+
const visitorHandlerParams = validateAndPrepareForGraphQLTypeHandler({ resolverName, normalizedResolverName, outputDir, belongsToRootObject }, ctx);
|
|
26
|
+
if ((0, graphql_1.isObjectType)(namedType)) {
|
|
27
|
+
belongsToRootObject
|
|
28
|
+
? visitor['RootObjectTypeField'](visitorHandlerParams, ctx)
|
|
29
|
+
: visitor['ObjectType'](visitorHandlerParams, ctx);
|
|
30
|
+
}
|
|
31
|
+
else if ((0, graphql_1.isUnionType)(namedType)) {
|
|
32
|
+
visitor['UnionType'](visitorHandlerParams, ctx);
|
|
33
|
+
}
|
|
34
|
+
else if ((0, graphql_1.isScalarType)(namedType)) {
|
|
35
|
+
visitor['ScalarType'](visitorHandlerParams, ctx);
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
exports.visitNamedType = visitNamedType;
|
|
39
|
+
const parseLocation = (nestedDirs, { config: { mode, sourcesMap, whitelistedModules, baseOutputDir, relativeTargetDir, }, }, location) => {
|
|
40
|
+
if (!location) {
|
|
41
|
+
throw new Error('Location is invalid');
|
|
42
|
+
}
|
|
43
|
+
// If mode is "merged", there's only one module:
|
|
44
|
+
// - always generate a.k.a it's always whitelisted
|
|
45
|
+
// - put them together at degsinated relativeTargetDir
|
|
46
|
+
if (mode === 'merged') {
|
|
47
|
+
return path.join(baseOutputDir, relativeTargetDir, ...nestedDirs);
|
|
48
|
+
}
|
|
49
|
+
// 2. mode is "modules", each module is the folder containing the schema files
|
|
50
|
+
// This means one or multiple schema files can add up to one module
|
|
51
|
+
const sourceFilename = location.source.name;
|
|
52
|
+
const sourceFile = sourcesMap[sourceFilename];
|
|
53
|
+
if (!sourceFile) {
|
|
54
|
+
throw new Error(`Unable to find ${sourceFilename} in sourcesMap`);
|
|
55
|
+
}
|
|
56
|
+
const isInWhitelistedModule =
|
|
57
|
+
// whitelistedModules is empty a.k.a. all are whitelisted
|
|
58
|
+
whitelistedModules.length === 0
|
|
59
|
+
? true
|
|
60
|
+
: whitelistedModules.includes(sourceFile.moduleName);
|
|
61
|
+
return isInWhitelistedModule
|
|
62
|
+
? path.join(baseOutputDir, sourceFile.moduleName, relativeTargetDir, ...nestedDirs)
|
|
63
|
+
: undefined;
|
|
64
|
+
};
|
|
65
|
+
const validateAndPrepareForGraphQLTypeHandler = ({ resolverName, normalizedResolverName, outputDir, belongsToRootObject, }, { config, result }) => {
|
|
66
|
+
const fieldFilePath = path.join(outputDir, `${resolverName}.ts`);
|
|
67
|
+
if (result.files[fieldFilePath]) {
|
|
68
|
+
throw new Error(`Unexpected duplication in field filename. Type: ${resolverName}, file: ${fieldFilePath}`);
|
|
69
|
+
}
|
|
70
|
+
// resolverTypeName are generated from typescript-resolvers plugin
|
|
71
|
+
const resolversTypeMetaModule = (0, utils_1.relativeModulePath)(outputDir, config.resolverTypesPath);
|
|
72
|
+
const resolversTypeMeta = belongsToRootObject
|
|
73
|
+
? {
|
|
74
|
+
typeNamedImport: `${belongsToRootObject}Resolvers`,
|
|
75
|
+
module: resolversTypeMetaModule,
|
|
76
|
+
typeString: `${belongsToRootObject}Resolvers['${resolverName}']`,
|
|
77
|
+
}
|
|
78
|
+
: {
|
|
79
|
+
typeNamedImport: `${resolverName}Resolvers`,
|
|
80
|
+
module: resolversTypeMetaModule,
|
|
81
|
+
typeString: `${resolverName}Resolvers`,
|
|
82
|
+
};
|
|
83
|
+
return {
|
|
84
|
+
fieldFilePath,
|
|
85
|
+
resolverName,
|
|
86
|
+
belongsToRootObject,
|
|
87
|
+
normalizedResolverName,
|
|
88
|
+
resolversTypeMeta,
|
|
89
|
+
};
|
|
90
|
+
};
|
|
91
|
+
/**
|
|
92
|
+
* Function to get format resolver name based on its definition in the schema
|
|
93
|
+
* - Root object type resolver e.g Query.me, Mutation.updateUser
|
|
94
|
+
* - Object type e.g. User, Profile
|
|
95
|
+
*/
|
|
96
|
+
const normalizeResolverName = (name, rootObject) => {
|
|
97
|
+
if (!rootObject) {
|
|
98
|
+
return name;
|
|
99
|
+
}
|
|
100
|
+
return `${rootObject}.${name}`;
|
|
101
|
+
};
|
|
102
|
+
//# sourceMappingURL=visitNamedType.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"visitNamedType.js","sourceRoot":"","sources":["../../../../../packages/typescript-resolver-files/src/run/visitNamedType.ts"],"names":[],"mappings":"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"}
|
package/src/types.d.ts
CHANGED
|
@@ -13,29 +13,56 @@ export interface ResolverFile extends BaseVirtualFile {
|
|
|
13
13
|
meta: {
|
|
14
14
|
belongsToRootObject: RootObjectType | null;
|
|
15
15
|
resolverVariableStatement: string;
|
|
16
|
+
normalizedResolverName: string;
|
|
16
17
|
};
|
|
17
18
|
}
|
|
18
19
|
export declare type SourcesMap = Record<string, {
|
|
19
20
|
source: Source;
|
|
20
21
|
moduleName: string;
|
|
21
22
|
}>;
|
|
22
|
-
export interface
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
whitelistedModules: string[];
|
|
23
|
+
export interface ImportLineMeta {
|
|
24
|
+
isTypeImport: boolean;
|
|
25
|
+
module: string;
|
|
26
|
+
namedImports: (string | {
|
|
27
|
+
propertyName: string;
|
|
28
|
+
identifierName: string;
|
|
29
|
+
})[];
|
|
30
|
+
defaultImport?: string;
|
|
31
31
|
}
|
|
32
|
-
export interface
|
|
33
|
-
|
|
34
|
-
|
|
32
|
+
export interface RunContext {
|
|
33
|
+
config: {
|
|
34
|
+
schema: GraphQLSchema;
|
|
35
|
+
sourcesMap: SourcesMap;
|
|
36
|
+
baseOutputDir: string;
|
|
37
|
+
resolverTypesPath: string;
|
|
38
|
+
relativeTargetDir: string;
|
|
39
|
+
mainFile: string;
|
|
40
|
+
mode: 'merged' | 'modules';
|
|
41
|
+
whitelistedModules: string[];
|
|
42
|
+
externalResolvers: Record<string, string>;
|
|
43
|
+
};
|
|
44
|
+
result: {
|
|
45
|
+
files: Record<string, StandardFile | ResolverFile>;
|
|
46
|
+
externalImports: Record<string, {
|
|
47
|
+
importLineMeta: ImportLineMeta;
|
|
48
|
+
identifierUsages: {
|
|
49
|
+
identifierName: string;
|
|
50
|
+
normalizedResolverName: string;
|
|
51
|
+
}[];
|
|
52
|
+
}>;
|
|
53
|
+
};
|
|
35
54
|
}
|
|
36
55
|
export declare type RootObjectType = 'Query' | 'Mutation' | 'Subscription';
|
|
37
|
-
export
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
56
|
+
export interface GraphQLTypeHandlerParams {
|
|
57
|
+
fieldFilePath: string;
|
|
58
|
+
resolverName: string;
|
|
59
|
+
belongsToRootObject: RootObjectType | null;
|
|
60
|
+
normalizedResolverName: string;
|
|
61
|
+
resolversTypeMeta: {
|
|
62
|
+
typeNamedImport: `${string}Resolvers`;
|
|
63
|
+
module: string;
|
|
64
|
+
typeString: `${string}Resolvers` | `${RootObjectType}Resolvers['${string}']`;
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
export declare type GraphQLTypeHandler = (params: GraphQLTypeHandlerParams, ctx: RunContext) => void;
|
|
41
68
|
export {};
|
package/src/utils.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { Source } from '@graphql-tools/utils';
|
|
2
|
-
import type { RootObjectType, SourcesMap } from './types';
|
|
3
|
-
export declare const printImportModule: (moduleName: string) => string;
|
|
2
|
+
import type { ImportLineMeta, RootObjectType, SourcesMap } from './types';
|
|
4
3
|
export declare const isRootObjectType: (typeName: string) => typeName is RootObjectType;
|
|
5
4
|
export declare const relativeModulePath: (from: string, to: string) => string;
|
|
5
|
+
export declare const normalizeRelativePath: (path: string) => string;
|
|
6
6
|
export declare function parseSources(sources: Source[]): SourcesMap;
|
|
7
|
+
export declare function printImportLine({ isTypeImport, module, namedImports, defaultImport, }: ImportLineMeta): string;
|
package/src/utils.js
CHANGED
|
@@ -1,26 +1,23 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.parseSources = exports.
|
|
3
|
+
exports.printImportLine = exports.parseSources = exports.normalizeRelativePath = exports.relativeModulePath = exports.isRootObjectType = void 0;
|
|
4
4
|
const path = require("path");
|
|
5
|
-
const printImportModule = (moduleName) => {
|
|
6
|
-
if (moduleName.endsWith('.ts')) {
|
|
7
|
-
return moduleName.split('.').slice(0, -1).join('.');
|
|
8
|
-
}
|
|
9
|
-
return moduleName;
|
|
10
|
-
};
|
|
11
|
-
exports.printImportModule = printImportModule;
|
|
12
5
|
const isRootObjectType = (typeName) => typeName === 'Query' ||
|
|
13
6
|
typeName === 'Mutation' ||
|
|
14
7
|
typeName === 'Subscription';
|
|
15
8
|
exports.isRootObjectType = isRootObjectType;
|
|
16
9
|
const relativeModulePath = (from, to) => {
|
|
17
10
|
const rawPath = path.relative(from, to);
|
|
18
|
-
|
|
19
|
-
return `./${rawPath}`;
|
|
20
|
-
}
|
|
21
|
-
return rawPath;
|
|
11
|
+
return (0, exports.normalizeRelativePath)(rawPath);
|
|
22
12
|
};
|
|
23
13
|
exports.relativeModulePath = relativeModulePath;
|
|
14
|
+
const normalizeRelativePath = (path) => {
|
|
15
|
+
if (!path.startsWith('../') || !path.startsWith('./')) {
|
|
16
|
+
return `./${path}`;
|
|
17
|
+
}
|
|
18
|
+
return path;
|
|
19
|
+
};
|
|
20
|
+
exports.normalizeRelativePath = normalizeRelativePath;
|
|
24
21
|
function parseSources(sources) {
|
|
25
22
|
const sourcesMap = {};
|
|
26
23
|
sources.forEach((source) => {
|
|
@@ -39,4 +36,29 @@ function parseSources(sources) {
|
|
|
39
36
|
return sourcesMap;
|
|
40
37
|
}
|
|
41
38
|
exports.parseSources = parseSources;
|
|
39
|
+
function printImportLine({ isTypeImport, module, namedImports, defaultImport, }) {
|
|
40
|
+
const typeImportKeyword = isTypeImport ? 'type' : '';
|
|
41
|
+
const hasDefaultImport = Boolean(defaultImport);
|
|
42
|
+
const hasNamedImports = namedImports.length > 0;
|
|
43
|
+
const namedImportsString = hasNamedImports
|
|
44
|
+
? `{ ${namedImports.map(printNamedImportSpecifier).join(',')} }`
|
|
45
|
+
: '';
|
|
46
|
+
return `import ${typeImportKeyword} ${defaultImport || ''} ${hasDefaultImport && hasNamedImports ? ',' : ''} ${namedImportsString} from '${normalizeModuleExtensionForImport(module)}';`;
|
|
47
|
+
}
|
|
48
|
+
exports.printImportLine = printImportLine;
|
|
49
|
+
const normalizeModuleExtensionForImport = (module) => {
|
|
50
|
+
if (module.endsWith('.ts')) {
|
|
51
|
+
return module.split('.').slice(0, -1).join('.');
|
|
52
|
+
}
|
|
53
|
+
return module;
|
|
54
|
+
};
|
|
55
|
+
const printNamedImportSpecifier = (namedImport) => {
|
|
56
|
+
if (typeof namedImport === 'string') {
|
|
57
|
+
return namedImport;
|
|
58
|
+
}
|
|
59
|
+
if (namedImport.propertyName === namedImport.identifierName) {
|
|
60
|
+
return namedImport.identifierName;
|
|
61
|
+
}
|
|
62
|
+
return `${namedImport.propertyName} as ${namedImport.identifierName}`;
|
|
63
|
+
};
|
|
42
64
|
//# sourceMappingURL=utils.js.map
|
package/src/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../packages/typescript-resolver-files/src/utils.ts"],"names":[],"mappings":";;;AAAA,6BAA6B;AAItB,MAAM,
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../packages/typescript-resolver-files/src/utils.ts"],"names":[],"mappings":"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"}
|
package/src/plugin.d.ts
DELETED
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import { PluginFunction, PluginValidateFn } from '@graphql-codegen/plugin-helpers';
|
|
2
|
-
interface PluginConfig {
|
|
3
|
-
resolverTypesPath: string;
|
|
4
|
-
relativeTargetDir?: string;
|
|
5
|
-
mainFile?: string;
|
|
6
|
-
mode?: 'merged' | 'modules';
|
|
7
|
-
whitelistedModules?: string[];
|
|
8
|
-
}
|
|
9
|
-
export declare const plugin: PluginFunction<PluginConfig>;
|
|
10
|
-
interface RawPluginConfig {
|
|
11
|
-
resolverTypesPath?: string;
|
|
12
|
-
relativeTargetDir?: string;
|
|
13
|
-
mainFile?: string;
|
|
14
|
-
mode?: string;
|
|
15
|
-
whitelistedModules?: string[];
|
|
16
|
-
}
|
|
17
|
-
export declare const validate: PluginValidateFn<RawPluginConfig>;
|
|
18
|
-
export {};
|
package/src/plugin.js
DELETED
|
@@ -1,64 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.validate = exports.plugin = void 0;
|
|
4
|
-
const tslib_1 = require("tslib");
|
|
5
|
-
const path = require("path");
|
|
6
|
-
const promises_1 = require("fs/promises");
|
|
7
|
-
const run_1 = require("./run");
|
|
8
|
-
const utils_1 = require("./utils");
|
|
9
|
-
const pluginName = '@eddeee888/gcg-typescript-resolver-files';
|
|
10
|
-
const configDefaultMode = 'modules';
|
|
11
|
-
const plugin = (schema, _documents, config, info) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
12
|
-
// TODO: check if there's a better way to handle output dir
|
|
13
|
-
const baseOutputDir = info === null || info === void 0 ? void 0 : info.outputFile;
|
|
14
|
-
if (!baseOutputDir) {
|
|
15
|
-
throw new Error('Output folder is invalid');
|
|
16
|
-
}
|
|
17
|
-
const sources = schema.extensions.extendedSources;
|
|
18
|
-
if (!Array.isArray(sources) || sources.length === 0) {
|
|
19
|
-
throw new Error('Empty Sources. Make sure schema files are parsed correctly.');
|
|
20
|
-
}
|
|
21
|
-
const sourcesMap = (0, utils_1.parseSources)(sources);
|
|
22
|
-
const { resolverTypesPath: relativeResolverTypesPathFromBaseOutputDir, relativeTargetDir = '', mainFile = 'index.ts', mode = configDefaultMode, whitelistedModules = [], } = config;
|
|
23
|
-
const resolverTypesPath = path.join(baseOutputDir, relativeResolverTypesPathFromBaseOutputDir);
|
|
24
|
-
const result = {
|
|
25
|
-
dirs: {},
|
|
26
|
-
files: {},
|
|
27
|
-
};
|
|
28
|
-
(0, run_1.run)({
|
|
29
|
-
schema,
|
|
30
|
-
sourcesMap,
|
|
31
|
-
baseOutputDir,
|
|
32
|
-
resolverTypesPath,
|
|
33
|
-
relativeTargetDir,
|
|
34
|
-
mainFile,
|
|
35
|
-
mode,
|
|
36
|
-
whitelistedModules,
|
|
37
|
-
}, result);
|
|
38
|
-
// Write dirs and files
|
|
39
|
-
yield Promise.all(Object.keys(result.dirs).map((dir) => tslib_1.__awaiter(void 0, void 0, void 0, function* () { return yield (0, promises_1.mkdir)(dir, { recursive: true }); })));
|
|
40
|
-
yield Promise.all(Object.entries(result.files).map(([filePath, file]) => tslib_1.__awaiter(void 0, void 0, void 0, function* () { return yield (0, promises_1.writeFile)(filePath, file.content); })));
|
|
41
|
-
return { content: '' };
|
|
42
|
-
});
|
|
43
|
-
exports.plugin = plugin;
|
|
44
|
-
const validate = (_schema, _documents, { resolverTypesPath, mainFile, mode = configDefaultMode, whitelistedModules }) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
45
|
-
if (!resolverTypesPath) {
|
|
46
|
-
throw new Error(`Validation Error - ${pluginName} - config.resolverTypesPath is required`);
|
|
47
|
-
}
|
|
48
|
-
if (mainFile && path.extname(mainFile) === '') {
|
|
49
|
-
throw new Error(`Validation Error - ${pluginName} - config.mainFile must be a valid file name`);
|
|
50
|
-
}
|
|
51
|
-
if (mode !== 'merged' && mode !== 'modules') {
|
|
52
|
-
throw new Error(`Validation Error - ${pluginName} - config.mode must be "merged" or "modules" (default is "modules")`);
|
|
53
|
-
}
|
|
54
|
-
if (whitelistedModules) {
|
|
55
|
-
if (!Array.isArray(whitelistedModules)) {
|
|
56
|
-
throw new Error(`Validation Error - ${pluginName} - config.whitelistedModules must be an array if provided`);
|
|
57
|
-
}
|
|
58
|
-
if (mode !== 'modules') {
|
|
59
|
-
throw new Error(`Validation Error - ${pluginName} - config.whitelistedModules can only be used with config.mode == "modules"`);
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
});
|
|
63
|
-
exports.validate = validate;
|
|
64
|
-
//# sourceMappingURL=plugin.js.map
|
package/src/plugin.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"plugin.js","sourceRoot":"","sources":["../../../../packages/typescript-resolver-files/src/plugin.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.handleGraphQLRootObjectType = void 0;
|
|
4
|
-
const path = require("path");
|
|
5
|
-
const utils_1 = require("../utils");
|
|
6
|
-
const parseLocation_1 = require("./parseLocation");
|
|
7
|
-
const handleGraphQLRootObjectType = ({ type }, runConfig, result) => {
|
|
8
|
-
const typeName = type.name;
|
|
9
|
-
if (!(0, utils_1.isRootObjectType)(typeName)) {
|
|
10
|
-
return;
|
|
11
|
-
}
|
|
12
|
-
const fields = type.getFields();
|
|
13
|
-
Object.entries(fields).forEach(([fieldName, fieldNode]) => {
|
|
14
|
-
var _a;
|
|
15
|
-
const locationInfo = (0, parseLocation_1.parseLocation)(runConfig, (_a = fieldNode.astNode) === null || _a === void 0 ? void 0 : _a.loc);
|
|
16
|
-
if (!locationInfo.isInWhitelistedModule) {
|
|
17
|
-
return;
|
|
18
|
-
}
|
|
19
|
-
const outputDir = path.join(locationInfo.pathToLocation, typeName);
|
|
20
|
-
result.dirs[outputDir] = true;
|
|
21
|
-
const fieldFilePath = path.join(outputDir, `${fieldName}.ts`);
|
|
22
|
-
if (result.files[fieldFilePath]) {
|
|
23
|
-
throw new Error(`Unexpected duplication in field filename. Type: ${typeName}, file: ${fieldFilePath}`);
|
|
24
|
-
}
|
|
25
|
-
const resolverTypeName = `${typeName}Resolvers`; // Generated type from typescript-resolvers plugin
|
|
26
|
-
const relativePathToResolverTypes = (0, utils_1.relativeModulePath)(outputDir, runConfig.resolverTypesPath);
|
|
27
|
-
const pathToResolverModule = (0, utils_1.printImportModule)(relativePathToResolverTypes);
|
|
28
|
-
const resolverVariableStatement = `export const ${fieldName}: ${resolverTypeName}['${fieldName}'] = async (_parent, _arg, _ctx) => {
|
|
29
|
-
/* Implement ${typeName}.${fieldName} resolver logic here */
|
|
30
|
-
};`;
|
|
31
|
-
result.files[fieldFilePath] = {
|
|
32
|
-
__filetype: 'resolver',
|
|
33
|
-
content: `import type { ${resolverTypeName} } from '${pathToResolverModule}';
|
|
34
|
-
${resolverVariableStatement}`,
|
|
35
|
-
mainImportIdentifier: fieldName,
|
|
36
|
-
meta: {
|
|
37
|
-
belongsToRootObject: typeName,
|
|
38
|
-
resolverVariableStatement,
|
|
39
|
-
},
|
|
40
|
-
};
|
|
41
|
-
});
|
|
42
|
-
};
|
|
43
|
-
exports.handleGraphQLRootObjectType = handleGraphQLRootObjectType;
|
|
44
|
-
//# sourceMappingURL=handleGraphQLRootObjectType.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"handleGraphQLRootObjectType.js","sourceRoot":"","sources":["../../../../../packages/typescript-resolver-files/src/run/handleGraphQLRootObjectType.ts"],"names":[],"mappings":";;;AAAA,6BAA6B;AAG7B,oCAIkB;AAClB,mDAAgD;AAEzC,MAAM,2BAA2B,GAGpC,CAAC,EAAE,IAAI,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE;IAClC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC;IAC3B,IAAI,CAAC,IAAA,wBAAgB,EAAC,QAAQ,CAAC,EAAE;QAC/B,OAAO;KACR;IAED,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;IAEhC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,EAAE,SAAS,CAAC,EAAE,EAAE;;QACxD,MAAM,YAAY,GAAG,IAAA,6BAAa,EAAC,SAAS,EAAE,MAAA,SAAS,CAAC,OAAO,0CAAE,GAAG,CAAC,CAAC;QACtE,IAAI,CAAC,YAAY,CAAC,qBAAqB,EAAE;YACvC,OAAO;SACR;QAED,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAC;QACnE,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC;QAE9B,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,SAAS,KAAK,CAAC,CAAC;QAC9D,IAAI,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,EAAE;YAC/B,MAAM,IAAI,KAAK,CACb,mDAAmD,QAAQ,WAAW,aAAa,EAAE,CACtF,CAAC;SACH;QAED,MAAM,gBAAgB,GAAG,GAAG,QAAQ,WAAW,CAAC,CAAC,kDAAkD;QACnG,MAAM,2BAA2B,GAAG,IAAA,0BAAkB,EACpD,SAAS,EACT,SAAS,CAAC,iBAAiB,CAC5B,CAAC;QACF,MAAM,oBAAoB,GAAG,IAAA,yBAAiB,EAAC,2BAA2B,CAAC,CAAC;QAC5E,MAAM,yBAAyB,GAAG,gBAAgB,SAAS,KAAK,gBAAgB,KAAK,SAAS;qBAC7E,QAAQ,IAAI,SAAS;OACnC,CAAC;QAEJ,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,GAAG;YAC5B,UAAU,EAAE,UAAU;YACtB,OAAO,EAAE,iBAAiB,gBAAgB,YAAY,oBAAoB;QACxE,yBAAyB,EAAE;YAC7B,oBAAoB,EAAE,SAAS;YAC/B,IAAI,EAAE;gBACJ,mBAAmB,EAAE,QAAQ;gBAC7B,yBAAyB;aAC1B;SACF,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AAhDW,QAAA,2BAA2B,+BAgDtC"}
|