@eddeee888/gcg-typescript-resolver-files 0.2.0 → 0.3.0
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/README.md +2 -0
- package/package.json +5 -5
- package/src/addVirtualTypesFileToTsMorphProject/addVirtualTypesFileToTsMorphProject.d.ts +8 -0
- package/src/addVirtualTypesFileToTsMorphProject/addVirtualTypesFileToTsMorphProject.js +35 -0
- package/src/addVirtualTypesFileToTsMorphProject/addVirtualTypesFileToTsMorphProject.js.map +1 -0
- package/src/addVirtualTypesFileToTsMorphProject/index.d.ts +1 -0
- package/src/addVirtualTypesFileToTsMorphProject/index.js +5 -0
- package/src/addVirtualTypesFileToTsMorphProject/index.js.map +1 -0
- package/src/generateResolverFiles/addResolverMainFile.js +2 -1
- package/src/generateResolverFiles/addResolverMainFile.js.map +1 -1
- package/src/generateResolverFiles/ensureObjectTypeResolversAreGenerated.d.ts +6 -0
- package/src/generateResolverFiles/ensureObjectTypeResolversAreGenerated.js +80 -0
- package/src/generateResolverFiles/ensureObjectTypeResolversAreGenerated.js.map +1 -0
- package/src/generateResolverFiles/generateResolverFiles.js +3 -3
- package/src/generateResolverFiles/generateResolverFiles.js.map +1 -1
- package/src/generateResolverFiles/getVariableStatementWithExpectedIdentifier.d.ts +6 -0
- package/src/generateResolverFiles/getVariableStatementWithExpectedIdentifier.js +27 -0
- package/src/generateResolverFiles/getVariableStatementWithExpectedIdentifier.js.map +1 -0
- package/src/generateResolverFiles/handleGraphQLObjectType.js +8 -6
- package/src/generateResolverFiles/handleGraphQLObjectType.js.map +1 -1
- package/src/generateResolverFiles/handleGraphQLRootObjectTypeField.d.ts +2 -1
- package/src/generateResolverFiles/handleGraphQLRootObjectTypeField.js +4 -4
- package/src/generateResolverFiles/handleGraphQLRootObjectTypeField.js.map +1 -1
- package/src/generateResolverFiles/handleGraphQLScalarType.js +4 -5
- package/src/generateResolverFiles/handleGraphQLScalarType.js.map +1 -1
- package/src/generateResolverFiles/handleGraphQLUninionType.js +4 -5
- package/src/generateResolverFiles/handleGraphQLUninionType.js.map +1 -1
- package/src/generateResolverFiles/postProcessFiles.d.ts +8 -0
- package/src/generateResolverFiles/postProcessFiles.js +72 -0
- package/src/generateResolverFiles/postProcessFiles.js.map +1 -0
- package/src/generateResolverFiles/types.d.ts +31 -7
- package/src/generateResolverFiles/visitNamedType.d.ts +1 -1
- package/src/generateResolverFiles/visitNamedType.js +12 -9
- package/src/generateResolverFiles/visitNamedType.js.map +1 -1
- package/src/getGraphQLObjectTypeResolversToGenerate/getGraphQLObjectTypeResolversToGenerate.d.ts +11 -0
- package/src/getGraphQLObjectTypeResolversToGenerate/getGraphQLObjectTypeResolversToGenerate.js +70 -0
- package/src/getGraphQLObjectTypeResolversToGenerate/getGraphQLObjectTypeResolversToGenerate.js.map +1 -0
- package/src/getGraphQLObjectTypeResolversToGenerate/index.d.ts +1 -0
- package/src/getGraphQLObjectTypeResolversToGenerate/index.js +5 -0
- package/src/getGraphQLObjectTypeResolversToGenerate/index.js.map +1 -0
- package/src/getPluginsConfig/getPluginsConfig.d.ts +7 -1
- package/src/getPluginsConfig/getPluginsConfig.js +14 -6
- package/src/getPluginsConfig/getPluginsConfig.js.map +1 -1
- package/src/parseTypeMappers/collectTypeMappersFromSourceFile.d.ts +3 -2
- package/src/parseTypeMappers/collectTypeMappersFromSourceFile.js +38 -8
- package/src/parseTypeMappers/collectTypeMappersFromSourceFile.js.map +1 -1
- package/src/parseTypeMappers/parseTypeMappers.d.ts +6 -1
- package/src/parseTypeMappers/parseTypeMappers.js +9 -7
- package/src/parseTypeMappers/parseTypeMappers.js.map +1 -1
- package/src/preset.d.ts +2 -1
- package/src/preset.js +66 -28
- package/src/preset.js.map +1 -1
- package/src/utils/getNodePropertyMap.d.ts +9 -0
- package/src/utils/getNodePropertyMap.js +49 -0
- package/src/utils/getNodePropertyMap.js.map +1 -0
- package/src/utils/index.d.ts +1 -0
- package/src/utils/index.js +1 -0
- package/src/utils/index.js.map +1 -1
- package/src/validatePresetConfig/validatePresetConfig.d.ts +6 -1
- package/src/validatePresetConfig/validatePresetConfig.js +29 -10
- package/src/validatePresetConfig/validatePresetConfig.js.map +1 -1
- package/src/generateResolverFiles/fixExistingResolvers.d.ts +0 -2
- package/src/generateResolverFiles/fixExistingResolvers.js +0 -62
- package/src/generateResolverFiles/fixExistingResolvers.js.map +0 -1
|
@@ -6,7 +6,7 @@ export interface VisitNamedTypeParams {
|
|
|
6
6
|
resolverName: string;
|
|
7
7
|
belongsToRootObject: RootObjectType | null;
|
|
8
8
|
visitor: {
|
|
9
|
-
RootObjectTypeField: GraphQLTypeHandler
|
|
9
|
+
RootObjectTypeField: GraphQLTypeHandler<RootObjectType>;
|
|
10
10
|
ObjectType: GraphQLTypeHandler;
|
|
11
11
|
ScalarType: GraphQLTypeHandler;
|
|
12
12
|
UnionType: GraphQLTypeHandler;
|
|
@@ -23,16 +23,19 @@ const visitNamedType = ({ namedType, resolverName, belongsToRootObject, location
|
|
|
23
23
|
}
|
|
24
24
|
// Generate resolver files based on its type
|
|
25
25
|
const visitorHandlerParams = validateAndPrepareForGraphQLTypeHandler({ resolverName, normalizedResolverName, outputDir, belongsToRootObject }, ctx);
|
|
26
|
-
if (
|
|
27
|
-
|
|
28
|
-
? visitor['RootObjectTypeField'](visitorHandlerParams, ctx)
|
|
29
|
-
: visitor['ObjectType'](visitorHandlerParams, ctx);
|
|
26
|
+
if (visitorHandlerParams.belongsToRootObject) {
|
|
27
|
+
visitor['RootObjectTypeField'](visitorHandlerParams, ctx);
|
|
30
28
|
}
|
|
31
|
-
else
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
29
|
+
else {
|
|
30
|
+
if ((0, graphql_1.isObjectType)(namedType)) {
|
|
31
|
+
visitor['ObjectType'](visitorHandlerParams, ctx);
|
|
32
|
+
}
|
|
33
|
+
else if ((0, graphql_1.isUnionType)(namedType)) {
|
|
34
|
+
visitor['UnionType'](visitorHandlerParams, ctx);
|
|
35
|
+
}
|
|
36
|
+
else if ((0, graphql_1.isScalarType)(namedType)) {
|
|
37
|
+
visitor['ScalarType'](visitorHandlerParams, ctx);
|
|
38
|
+
}
|
|
36
39
|
}
|
|
37
40
|
};
|
|
38
41
|
exports.visitNamedType = visitNamedType;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"visitNamedType.js","sourceRoot":"","sources":["../../../../../packages/typescript-resolver-files/src/generateResolverFiles/visitNamedType.ts"],"names":[],"mappings":";;;AAAA,6BAA6B;AAC7B,qCAMiB;AACjB,oCAIkB;AAMlB,2EAAwE;AAejE,MAAM,cAAc,GAAG,CAC5B,EACE,SAAS,EACT,YAAY,EACZ,mBAAmB,EACnB,QAAQ,EACR,OAAO,GACc,EACvB,GAAiC,EAC3B,EAAE;IACR,MAAM,sBAAsB,GAAG,qBAAqB,CAClD,YAAY,EACZ,mBAAmB,CACpB,CAAC;IAEF,MAAM,4BAA4B,GAChC,GAAG,CAAC,MAAM,CAAC,iBAAiB,CAAC,sBAAsB,CAAC,CAAC;IACvD,IAAI,4BAA4B,EAAE;QAChC,mCAAmC;QACnC,IAAA,qDAAyB,EACvB;YACE,sBAAsB;YACtB,kBAAkB,EAAE,4BAA4B;SACjD,EACD,GAAG,CACJ,CAAC;QAEF,OAAO;KACR;IAED,kDAAkD;IAClD,MAAM,SAAS,GAAG,yBAAyB,CACzC,mBAAmB,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,EAAE,EAChD,GAAG,EACH,QAAQ,CACT,CAAC;IACF,IAAI,CAAC,SAAS,EAAE;QACd,OAAO;KACR;IAED,4CAA4C;IAC5C,MAAM,oBAAoB,GAAG,uCAAuC,CAClE,EAAE,YAAY,EAAE,sBAAsB,EAAE,SAAS,EAAE,mBAAmB,EAAE,EACxE,GAAG,CACJ,CAAC;IAEF,IAAI,
|
|
1
|
+
{"version":3,"file":"visitNamedType.js","sourceRoot":"","sources":["../../../../../packages/typescript-resolver-files/src/generateResolverFiles/visitNamedType.ts"],"names":[],"mappings":"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"}
|
package/src/getGraphQLObjectTypeResolversToGenerate/getGraphQLObjectTypeResolversToGenerate.d.ts
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { type SourceFile } from 'ts-morph';
|
|
2
|
+
import type { TypeMappersMap } from '../parseTypeMappers';
|
|
3
|
+
export declare type GraphQLObjectTypeResolversToGenerate = Record<string, Record<string, {
|
|
4
|
+
resolverName: string;
|
|
5
|
+
resolverDeclaration: string;
|
|
6
|
+
}>>;
|
|
7
|
+
export declare const getGraphQLObjectTypeResolversToGenerate: ({ typesSourceFile, userDefinedSchemaTypeMap, typeMappersMap, }: {
|
|
8
|
+
typesSourceFile: SourceFile;
|
|
9
|
+
typeMappersMap: TypeMappersMap;
|
|
10
|
+
userDefinedSchemaTypeMap: Record<string, true>;
|
|
11
|
+
}) => GraphQLObjectTypeResolversToGenerate;
|
package/src/getGraphQLObjectTypeResolversToGenerate/getGraphQLObjectTypeResolversToGenerate.js
ADDED
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getGraphQLObjectTypeResolversToGenerate = void 0;
|
|
4
|
+
const ts_morph_1 = require("ts-morph");
|
|
5
|
+
const utils_1 = require("../utils");
|
|
6
|
+
const getGraphQLObjectTypeResolversToGenerate = ({ typesSourceFile, userDefinedSchemaTypeMap, typeMappersMap, }) => {
|
|
7
|
+
const typeMappersEntries = Object.entries(typeMappersMap);
|
|
8
|
+
if (typeMappersEntries.length === 0) {
|
|
9
|
+
return {};
|
|
10
|
+
}
|
|
11
|
+
// 1. Get property map of all schema types
|
|
12
|
+
const schemaTypePropertyMap = {};
|
|
13
|
+
const populateSchemaTypePropertyMap = (node) => {
|
|
14
|
+
const identifier = node.getNameNode();
|
|
15
|
+
const identifierName = identifier.getText();
|
|
16
|
+
if (userDefinedSchemaTypeMap[identifierName]) {
|
|
17
|
+
schemaTypePropertyMap[identifierName] = (0, utils_1.getNodePropertyMap)(node);
|
|
18
|
+
}
|
|
19
|
+
};
|
|
20
|
+
typesSourceFile
|
|
21
|
+
.getDescendantsOfKind(ts_morph_1.SyntaxKind.TypeAliasDeclaration)
|
|
22
|
+
.forEach(populateSchemaTypePropertyMap);
|
|
23
|
+
typesSourceFile
|
|
24
|
+
.getDescendantsOfKind(ts_morph_1.SyntaxKind.InterfaceDeclaration)
|
|
25
|
+
.forEach(populateSchemaTypePropertyMap);
|
|
26
|
+
// 3. Find resolvers to generate and add reason
|
|
27
|
+
const result = {};
|
|
28
|
+
typeMappersEntries.forEach(([_, { schemaType, typeMapperName, typeMapperPropertyMap }]) => {
|
|
29
|
+
const matchedSchemaTypePropertyMap = schemaTypePropertyMap[schemaType];
|
|
30
|
+
if (matchedSchemaTypePropertyMap) {
|
|
31
|
+
Object.values(matchedSchemaTypePropertyMap).forEach((schemaTypeProperty) => {
|
|
32
|
+
const typeMapperProperty = typeMapperPropertyMap[schemaTypeProperty.name];
|
|
33
|
+
const typeMapperPropertyIdentifier = `${typeMapperName}.${schemaTypeProperty.name}`;
|
|
34
|
+
const schemaTypePropertyIdentifier = `${schemaType}.${schemaTypeProperty.name}`;
|
|
35
|
+
if (schemaTypeProperty.name === '__typename') {
|
|
36
|
+
return;
|
|
37
|
+
}
|
|
38
|
+
result[schemaType] = result[schemaType] || {};
|
|
39
|
+
// If mapper does not have a field in schema type, report
|
|
40
|
+
if (!typeMapperProperty) {
|
|
41
|
+
result[schemaType][schemaTypeProperty.name] = {
|
|
42
|
+
resolverName: schemaTypeProperty.name,
|
|
43
|
+
resolverDeclaration: `() => { /* ${schemaTypePropertyIdentifier} resolver is required because ${schemaTypePropertyIdentifier} exists but ${typeMapperPropertyIdentifier} does not */ }`,
|
|
44
|
+
};
|
|
45
|
+
return;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* FIXME: there's currently no way to check if a type is assignable to another type
|
|
49
|
+
* https://github.com/dsherret/ts-morph/issues/357
|
|
50
|
+
* https://github.com/microsoft/TypeScript/issues/9879
|
|
51
|
+
*
|
|
52
|
+
* Therefore, the workaround now is to generate all resolvers with matching names, then use TS diagnostics to see if there's error when trying to merge the two keys
|
|
53
|
+
*
|
|
54
|
+
* Note: this happens only when mappers are used
|
|
55
|
+
*/
|
|
56
|
+
result[schemaType][schemaTypeProperty.name] = {
|
|
57
|
+
resolverName: schemaTypeProperty.name,
|
|
58
|
+
resolverDeclaration: `({ ${schemaTypeProperty.name} }) => {
|
|
59
|
+
/* ${schemaTypePropertyIdentifier} resolver is required because ${schemaTypePropertyIdentifier} and ${typeMapperPropertyIdentifier} are not compatible */
|
|
60
|
+
return ${schemaTypeProperty.name}
|
|
61
|
+
}`,
|
|
62
|
+
};
|
|
63
|
+
return;
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
});
|
|
67
|
+
return result;
|
|
68
|
+
};
|
|
69
|
+
exports.getGraphQLObjectTypeResolversToGenerate = getGraphQLObjectTypeResolversToGenerate;
|
|
70
|
+
//# sourceMappingURL=getGraphQLObjectTypeResolversToGenerate.js.map
|
package/src/getGraphQLObjectTypeResolversToGenerate/getGraphQLObjectTypeResolversToGenerate.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getGraphQLObjectTypeResolversToGenerate.js","sourceRoot":"","sources":["../../../../../packages/typescript-resolver-files/src/getGraphQLObjectTypeResolversToGenerate/getGraphQLObjectTypeResolversToGenerate.ts"],"names":[],"mappings":";;;AAAA,uCAKkB;AAElB,oCAAoE;AAO7D,MAAM,uCAAuC,GAAG,CAAC,EACtD,eAAe,EACf,wBAAwB,EACxB,cAAc,GAKf,EAAwC,EAAE;IACzC,MAAM,kBAAkB,GAAG,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;IAC1D,IAAI,kBAAkB,CAAC,MAAM,KAAK,CAAC,EAAE;QACnC,OAAO,EAAE,CAAC;KACX;IAED,0CAA0C;IAC1C,MAAM,qBAAqB,GAAoC,EAAE,CAAC;IAElE,MAAM,6BAA6B,GAAG,CACpC,IAAiD,EAC3C,EAAE;QACR,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QACtC,MAAM,cAAc,GAAG,UAAU,CAAC,OAAO,EAAE,CAAC;QAC5C,IAAI,wBAAwB,CAAC,cAAc,CAAC,EAAE;YAC5C,qBAAqB,CAAC,cAAc,CAAC,GAAG,IAAA,0BAAkB,EAAC,IAAI,CAAC,CAAC;SAClE;IACH,CAAC,CAAC;IACF,eAAe;SACZ,oBAAoB,CAAC,qBAAU,CAAC,oBAAoB,CAAC;SACrD,OAAO,CAAC,6BAA6B,CAAC,CAAC;IAE1C,eAAe;SACZ,oBAAoB,CAAC,qBAAU,CAAC,oBAAoB,CAAC;SACrD,OAAO,CAAC,6BAA6B,CAAC,CAAC;IAE1C,+CAA+C;IAC/C,MAAM,MAAM,GAAyC,EAAE,CAAC;IACxD,kBAAkB,CAAC,OAAO,CACxB,CAAC,CAAC,CAAC,EAAE,EAAE,UAAU,EAAE,cAAc,EAAE,qBAAqB,EAAE,CAAC,EAAE,EAAE;QAC7D,MAAM,4BAA4B,GAAG,qBAAqB,CAAC,UAAU,CAAC,CAAC;QACvE,IAAI,4BAA4B,EAAE;YAChC,MAAM,CAAC,MAAM,CAAC,4BAA4B,CAAC,CAAC,OAAO,CACjD,CAAC,kBAAkB,EAAE,EAAE;gBACrB,MAAM,kBAAkB,GACtB,qBAAqB,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;gBACjD,MAAM,4BAA4B,GAAG,GAAG,cAAc,IAAI,kBAAkB,CAAC,IAAI,EAAE,CAAC;gBACpF,MAAM,4BAA4B,GAAG,GAAG,UAAU,IAAI,kBAAkB,CAAC,IAAI,EAAE,CAAC;gBAEhF,IAAI,kBAAkB,CAAC,IAAI,KAAK,YAAY,EAAE;oBAC5C,OAAO;iBACR;gBAED,MAAM,CAAC,UAAU,CAAC,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;gBAE9C,yDAAyD;gBACzD,IAAI,CAAC,kBAAkB,EAAE;oBACvB,MAAM,CAAC,UAAU,CAAC,CAAC,kBAAkB,CAAC,IAAI,CAAC,GAAG;wBAC5C,YAAY,EAAE,kBAAkB,CAAC,IAAI;wBACrC,mBAAmB,EAAE,cAAc,4BAA4B,iCAAiC,4BAA4B,eAAe,4BAA4B,gBAAgB;qBACxL,CAAC;oBACF,OAAO;iBACR;gBAED;;;;;;;;mBAQG;gBACH,MAAM,CAAC,UAAU,CAAC,CAAC,kBAAkB,CAAC,IAAI,CAAC,GAAG;oBAC5C,YAAY,EAAE,kBAAkB,CAAC,IAAI;oBACrC,mBAAmB,EAAE,MAAM,kBAAkB,CAAC,IAAI;qBAC3C,4BAA4B,iCAAiC,4BAA4B,QAAQ,4BAA4B;yBACzH,kBAAkB,CAAC,IAAI;gBAChC;iBACH,CAAC;gBAEF,OAAO;YACT,CAAC,CACF,CAAC;SACH;IACH,CAAC,CACF,CAAC;IAEF,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AAvFW,QAAA,uCAAuC,2CAuFlD"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './getGraphQLObjectTypeResolversToGenerate';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../packages/typescript-resolver-files/src/getGraphQLObjectTypeResolversToGenerate/index.ts"],"names":[],"mappings":";;;AAAA,oFAA0D"}
|
|
@@ -8,6 +8,12 @@ interface GetPluginsConfigParams {
|
|
|
8
8
|
whitelistedModules: string[];
|
|
9
9
|
blacklistedModules: string[];
|
|
10
10
|
}
|
|
11
|
-
declare type GetPluginsConfigResult =
|
|
11
|
+
declare type GetPluginsConfigResult = {
|
|
12
|
+
userDefinedSchemaTypeMap: Record<string, true>;
|
|
13
|
+
pluginsConfig: Record<'defaultScalarTypesMap' | 'defaultScalarExternalResolvers' | 'defaultTypeMappers', Record<string, string>>;
|
|
14
|
+
};
|
|
15
|
+
/**
|
|
16
|
+
* TODO: rename to parseGraphQLSchema
|
|
17
|
+
*/
|
|
12
18
|
export declare const getPluginsConfig: ({ schemaAst, sourceMap, typeMappersMap, whitelistedModules, blacklistedModules, }: GetPluginsConfigParams) => GetPluginsConfigResult;
|
|
13
19
|
export {};
|
|
@@ -4,6 +4,9 @@ exports.getPluginsConfig = void 0;
|
|
|
4
4
|
const graphql_1 = require("graphql");
|
|
5
5
|
const graphql_scalars_1 = require("graphql-scalars");
|
|
6
6
|
const utils_1 = require("../utils");
|
|
7
|
+
/**
|
|
8
|
+
* TODO: rename to parseGraphQLSchema
|
|
9
|
+
*/
|
|
7
10
|
const getPluginsConfig = ({ schemaAst, sourceMap, typeMappersMap, whitelistedModules, blacklistedModules, }) => {
|
|
8
11
|
return Object.entries(schemaAst.getTypeMap()).reduce((res, [schemaType, namedType]) => {
|
|
9
12
|
var _a;
|
|
@@ -23,17 +26,22 @@ const getPluginsConfig = ({ schemaAst, sourceMap, typeMappersMap, whitelistedMod
|
|
|
23
26
|
handleScalarType(schemaType, res);
|
|
24
27
|
}
|
|
25
28
|
if (!(0, utils_1.isRootObjectType)(schemaType) && (0, graphql_1.isObjectType)(namedType)) {
|
|
29
|
+
res.userDefinedSchemaTypeMap[schemaType] = true;
|
|
30
|
+
// Wire up `mappers` config
|
|
26
31
|
const typeMapperDetails = typeMappersMap[schemaType];
|
|
27
32
|
if (typeMapperDetails) {
|
|
28
|
-
res.defaultTypeMappers[typeMapperDetails.schemaType] =
|
|
33
|
+
res.pluginsConfig.defaultTypeMappers[typeMapperDetails.schemaType] =
|
|
29
34
|
typeMapperDetails.configImportPath;
|
|
30
35
|
}
|
|
31
36
|
}
|
|
32
37
|
return res;
|
|
33
38
|
}, {
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
39
|
+
userDefinedSchemaTypeMap: {},
|
|
40
|
+
pluginsConfig: {
|
|
41
|
+
defaultScalarTypesMap: {},
|
|
42
|
+
defaultScalarExternalResolvers: {},
|
|
43
|
+
defaultTypeMappers: {},
|
|
44
|
+
},
|
|
37
45
|
});
|
|
38
46
|
};
|
|
39
47
|
exports.getPluginsConfig = getPluginsConfig;
|
|
@@ -44,9 +52,9 @@ const handleScalarType = (schemaType, result) => {
|
|
|
44
52
|
}
|
|
45
53
|
if (scalarResolver.extensions.codegenScalarType &&
|
|
46
54
|
typeof scalarResolver.extensions.codegenScalarType === 'string') {
|
|
47
|
-
result.defaultScalarTypesMap[schemaType] =
|
|
55
|
+
result.pluginsConfig.defaultScalarTypesMap[schemaType] =
|
|
48
56
|
scalarResolver.extensions.codegenScalarType;
|
|
49
57
|
}
|
|
50
|
-
result.defaultScalarExternalResolvers[schemaType] = `~graphql-scalars#${scalarResolver.name}Resolver`;
|
|
58
|
+
result.pluginsConfig.defaultScalarExternalResolvers[schemaType] = `~graphql-scalars#${scalarResolver.name}Resolver`;
|
|
51
59
|
};
|
|
52
60
|
//# sourceMappingURL=getPluginsConfig.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getPluginsConfig.js","sourceRoot":"","sources":["../../../../../packages/typescript-resolver-files/src/getPluginsConfig/getPluginsConfig.ts"],"names":[],"mappings":";;;AAAA,qCAAoE;AACpE,qDAA+D;AAG/D,oCAIkB;
|
|
1
|
+
{"version":3,"file":"getPluginsConfig.js","sourceRoot":"","sources":["../../../../../packages/typescript-resolver-files/src/getPluginsConfig/getPluginsConfig.ts"],"names":[],"mappings":";;;AAAA,qCAAoE;AACpE,qDAA+D;AAG/D,oCAIkB;AAoBlB;;GAEG;AACI,MAAM,gBAAgB,GAAG,CAAC,EAC/B,SAAS,EACT,SAAS,EACT,cAAc,EACd,kBAAkB,EAClB,kBAAkB,GACK,EAA0B,EAAE;IACnD,OAAO,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,UAAU,EAAE,CAAC,CAAC,MAAM,CAClD,CAAC,GAAG,EAAE,CAAC,UAAU,EAAE,SAAS,CAAC,EAAE,EAAE;;QAC/B,IAAI,IAAA,yBAAiB,EAAC,SAAS,CAAC,EAAE;YAChC,OAAO,GAAG,CAAC;SACZ;QAED,MAAM,YAAY,GAAG,IAAA,yCAAiC,EAAC;YACrD,QAAQ,EAAE,MAAA,SAAS,CAAC,OAAO,0CAAE,GAAG;YAChC,SAAS;YACT,kBAAkB;YAClB,kBAAkB;SACnB,CAAC,CAAC;QACH,IAAI,CAAC,YAAY,EAAE;YACjB,OAAO,GAAG,CAAC;SACZ;QAED,IAAI,IAAA,sBAAY,EAAC,SAAS,CAAC,EAAE;YAC3B,gBAAgB,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;SACnC;QAED,IAAI,CAAC,IAAA,wBAAgB,EAAC,UAAU,CAAC,IAAI,IAAA,sBAAY,EAAC,SAAS,CAAC,EAAE;YAC5D,GAAG,CAAC,wBAAwB,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC;YAEhD,2BAA2B;YAC3B,MAAM,iBAAiB,GAAG,cAAc,CAAC,UAAU,CAAC,CAAC;YACrD,IAAI,iBAAiB,EAAE;gBACrB,GAAG,CAAC,aAAa,CAAC,kBAAkB,CAAC,iBAAiB,CAAC,UAAU,CAAC;oBAChE,iBAAiB,CAAC,gBAAgB,CAAC;aACtC;SACF;QAED,OAAO,GAAG,CAAC;IACb,CAAC,EACD;QACE,wBAAwB,EAAE,EAAE;QAC5B,aAAa,EAAE;YACb,qBAAqB,EAAE,EAAE;YACzB,8BAA8B,EAAE,EAAE;YAClC,kBAAkB,EAAE,EAAE;SACvB;KACF,CACF,CAAC;AACJ,CAAC,CAAC;AAjDW,QAAA,gBAAgB,oBAiD3B;AAEF,MAAM,gBAAgB,GAAG,CACvB,UAAkB,EAClB,MAA8B,EACxB,EAAE;IACR,MAAM,cAAc,GAAG,2BAAe,CAAC,UAAU,CAAC,CAAC;IACnD,IAAI,CAAC,cAAc,EAAE;QACnB,OAAO;KACR;IAED,IACE,cAAc,CAAC,UAAU,CAAC,iBAAiB;QAC3C,OAAO,cAAc,CAAC,UAAU,CAAC,iBAAiB,KAAK,QAAQ,EAC/D;QACA,MAAM,CAAC,aAAa,CAAC,qBAAqB,CAAC,UAAU,CAAC;YACpD,cAAc,CAAC,UAAU,CAAC,iBAAiB,CAAC;KAC/C;IAED,MAAM,CAAC,aAAa,CAAC,8BAA8B,CACjD,UAAU,CACX,GAAG,oBAAoB,cAAc,CAAC,IAAI,UAAU,CAAC;AACxD,CAAC,CAAC"}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
import type
|
|
1
|
+
import { type SourceFile } from 'ts-morph';
|
|
2
2
|
import type { TypeMappersMap } from './parseTypeMappers';
|
|
3
|
-
export declare const collectTypeMappersFromSourceFile: ({ typeMappersSourceFile, typeMappersSuffix, resolverTypesPath, }: {
|
|
3
|
+
export declare const collectTypeMappersFromSourceFile: ({ typeMappersSourceFile, typeMappersSuffix, resolverTypesPath, shouldCollectPropertyMap, }: {
|
|
4
4
|
typeMappersSourceFile: SourceFile;
|
|
5
5
|
typeMappersSuffix: string;
|
|
6
6
|
resolverTypesPath: string;
|
|
7
|
+
shouldCollectPropertyMap: boolean;
|
|
7
8
|
}, result: TypeMappersMap) => void;
|
|
@@ -2,18 +2,21 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.collectTypeMappersFromSourceFile = void 0;
|
|
4
4
|
const path = require("path");
|
|
5
|
+
const ts_morph_1 = require("ts-morph");
|
|
5
6
|
const utils_1 = require("../utils");
|
|
6
|
-
const collectTypeMappersFromSourceFile = ({ typeMappersSourceFile, typeMappersSuffix, resolverTypesPath, }, result) => {
|
|
7
|
+
const collectTypeMappersFromSourceFile = ({ typeMappersSourceFile, typeMappersSuffix, resolverTypesPath, shouldCollectPropertyMap, }, result) => {
|
|
7
8
|
// Look for interfaces with exported keywords
|
|
8
9
|
typeMappersSourceFile.getInterfaces().forEach((interfaceDeclaration) => {
|
|
9
10
|
if (!interfaceDeclaration.hasExportKeyword()) {
|
|
10
11
|
return;
|
|
11
12
|
}
|
|
12
13
|
addTypeMapperDetailsIfValid({
|
|
13
|
-
|
|
14
|
+
declarationNode: interfaceDeclaration,
|
|
15
|
+
identifierNode: interfaceDeclaration.getNameNode(),
|
|
14
16
|
typeMappersSuffix,
|
|
15
17
|
typeMappersFilePath: typeMappersSourceFile.getFilePath(),
|
|
16
18
|
resolverTypesPath,
|
|
19
|
+
shouldCollectPropertyMap,
|
|
17
20
|
}, result);
|
|
18
21
|
});
|
|
19
22
|
// Look for exported types with exported keywords
|
|
@@ -21,35 +24,41 @@ const collectTypeMappersFromSourceFile = ({ typeMappersSourceFile, typeMappersSu
|
|
|
21
24
|
if (!typeAlias.hasExportKeyword()) {
|
|
22
25
|
return;
|
|
23
26
|
}
|
|
27
|
+
const identifierNode = typeAlias.getNameNode();
|
|
24
28
|
addTypeMapperDetailsIfValid({
|
|
25
|
-
|
|
29
|
+
declarationNode: typeAlias,
|
|
30
|
+
identifierNode,
|
|
26
31
|
typeMappersSuffix,
|
|
27
32
|
typeMappersFilePath: typeMappersSourceFile.getFilePath(),
|
|
28
33
|
resolverTypesPath,
|
|
34
|
+
shouldCollectPropertyMap,
|
|
29
35
|
}, result);
|
|
30
36
|
});
|
|
31
37
|
// Look for named exports e.g.
|
|
32
38
|
// - export { something } from 'module';
|
|
33
39
|
// - export type { something } from 'module';
|
|
34
|
-
// - export { something, somethingelse }'
|
|
40
|
+
// - export { something, somethingelse as somethingelse2 }'
|
|
35
41
|
typeMappersSourceFile.getExportDeclarations().forEach((exportDeclaration) => {
|
|
36
42
|
exportDeclaration.getNamedExports().forEach((namedExport) => {
|
|
37
|
-
let
|
|
43
|
+
let identifierNode = namedExport.getNameNode();
|
|
38
44
|
const aliasNode = namedExport.getAliasNode();
|
|
39
45
|
if (aliasNode) {
|
|
40
|
-
|
|
46
|
+
identifierNode = aliasNode;
|
|
41
47
|
}
|
|
42
48
|
addTypeMapperDetailsIfValid({
|
|
43
|
-
|
|
49
|
+
declarationNode: null,
|
|
50
|
+
identifierNode,
|
|
44
51
|
typeMappersSuffix,
|
|
45
52
|
typeMappersFilePath: typeMappersSourceFile.getFilePath(),
|
|
46
53
|
resolverTypesPath,
|
|
54
|
+
shouldCollectPropertyMap,
|
|
47
55
|
}, result);
|
|
48
56
|
});
|
|
49
57
|
});
|
|
50
58
|
};
|
|
51
59
|
exports.collectTypeMappersFromSourceFile = collectTypeMappersFromSourceFile;
|
|
52
|
-
const addTypeMapperDetailsIfValid = ({
|
|
60
|
+
const addTypeMapperDetailsIfValid = ({ declarationNode, identifierNode, typeMappersSuffix, typeMappersFilePath, resolverTypesPath, shouldCollectPropertyMap, }, result) => {
|
|
61
|
+
const identifierName = identifierNode.getText();
|
|
53
62
|
if (!identifierName.endsWith(typeMappersSuffix)) {
|
|
54
63
|
return;
|
|
55
64
|
}
|
|
@@ -63,10 +72,31 @@ const addTypeMapperDetailsIfValid = ({ identifierName, typeMappersSuffix, typeMa
|
|
|
63
72
|
if (result[schemaType]) {
|
|
64
73
|
throw new Error(`GraphQL type "${schemaType}" has duplicated "${identifierName}" mappers:\n - ${configImportPath}\n - ${result[schemaType].configImportPath}`);
|
|
65
74
|
}
|
|
75
|
+
let typeMapperPropertyMap = {};
|
|
76
|
+
if (shouldCollectPropertyMap) {
|
|
77
|
+
const originalDeclarationNode = getOriginalDeclarationNode(declarationNode, identifierNode);
|
|
78
|
+
typeMapperPropertyMap = (0, utils_1.getNodePropertyMap)(originalDeclarationNode);
|
|
79
|
+
}
|
|
66
80
|
result[schemaType] = {
|
|
67
81
|
schemaType,
|
|
68
82
|
typeMapperName: identifierName,
|
|
83
|
+
typeMapperPropertyMap,
|
|
69
84
|
configImportPath,
|
|
70
85
|
};
|
|
71
86
|
};
|
|
87
|
+
const getOriginalDeclarationNode = (declarationNode, identifierNode) => {
|
|
88
|
+
if (!declarationNode) {
|
|
89
|
+
return identifierNode.getDefinitionNodes()[0];
|
|
90
|
+
}
|
|
91
|
+
// InterfaceDeclaration
|
|
92
|
+
if (declarationNode.isKind(ts_morph_1.SyntaxKind.InterfaceDeclaration)) {
|
|
93
|
+
return declarationNode;
|
|
94
|
+
}
|
|
95
|
+
// TypeAliasDeclaration
|
|
96
|
+
const typeNode = declarationNode.getTypeNodeOrThrow();
|
|
97
|
+
const node = ts_morph_1.Node.isTypeReference(typeNode) // If type alias is a reference, go to definition using `getDefinitionNodes`
|
|
98
|
+
? identifierNode.getDefinitionNodes()[0]
|
|
99
|
+
: declarationNode;
|
|
100
|
+
return node;
|
|
101
|
+
};
|
|
72
102
|
//# sourceMappingURL=collectTypeMappersFromSourceFile.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"collectTypeMappersFromSourceFile.js","sourceRoot":"","sources":["../../../../../packages/typescript-resolver-files/src/parseTypeMappers/collectTypeMappersFromSourceFile.ts"],"names":[],"mappings":";;;AAAA,6BAA6B;
|
|
1
|
+
{"version":3,"file":"collectTypeMappersFromSourceFile.js","sourceRoot":"","sources":["../../../../../packages/typescript-resolver-files/src/parseTypeMappers/collectTypeMappersFromSourceFile.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,14 +1,19 @@
|
|
|
1
|
+
import { Project } from 'ts-morph';
|
|
1
2
|
import type { ParseSourcesResult } from '../parseSources';
|
|
3
|
+
import type { NodePropertyMap } from '../utils';
|
|
2
4
|
export interface ParseTypeMappersParams {
|
|
3
5
|
sourceMap: ParseSourcesResult['sourceMap'];
|
|
4
6
|
resolverTypesPath: string;
|
|
5
7
|
typeMappersFileExtension: string;
|
|
6
8
|
typeMappersSuffix: string;
|
|
9
|
+
tsMorphProject: Project;
|
|
10
|
+
shouldCollectPropertyMap: boolean;
|
|
7
11
|
}
|
|
8
12
|
export interface TypeMapperDetails {
|
|
9
13
|
schemaType: string;
|
|
10
14
|
typeMapperName: string;
|
|
15
|
+
typeMapperPropertyMap: NodePropertyMap;
|
|
11
16
|
configImportPath: string;
|
|
12
17
|
}
|
|
13
18
|
export declare type TypeMappersMap = Record<string, TypeMapperDetails>;
|
|
14
|
-
export declare const parseTypeMappers: ({ sourceMap, resolverTypesPath, typeMappersFileExtension, typeMappersSuffix, }: ParseTypeMappersParams) => TypeMappersMap;
|
|
19
|
+
export declare const parseTypeMappers: ({ sourceMap, resolverTypesPath, typeMappersFileExtension, typeMappersSuffix, tsMorphProject, shouldCollectPropertyMap, }: ParseTypeMappersParams) => TypeMappersMap;
|
|
@@ -2,18 +2,20 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.parseTypeMappers = void 0;
|
|
4
4
|
const path = require("path");
|
|
5
|
-
const fs = require("fs");
|
|
6
|
-
const ts_morph_1 = require("ts-morph");
|
|
7
5
|
const collectTypeMappersFromSourceFile_1 = require("./collectTypeMappersFromSourceFile");
|
|
8
|
-
const parseTypeMappers = ({ sourceMap, resolverTypesPath, typeMappersFileExtension, typeMappersSuffix, }) => {
|
|
6
|
+
const parseTypeMappers = ({ sourceMap, resolverTypesPath, typeMappersFileExtension, typeMappersSuffix, tsMorphProject, shouldCollectPropertyMap, }) => {
|
|
9
7
|
const result = Object.entries(sourceMap).reduce((res, [_, { sourcePath }]) => {
|
|
10
8
|
const typeMapperFilePath = path.join(sourcePath.dir, `${sourcePath.name}${typeMappersFileExtension}`);
|
|
11
|
-
|
|
9
|
+
const typeMappersSourceFile = tsMorphProject.addSourceFileAtPathIfExists(typeMapperFilePath);
|
|
10
|
+
if (!typeMappersSourceFile) {
|
|
12
11
|
return res;
|
|
13
12
|
}
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
13
|
+
(0, collectTypeMappersFromSourceFile_1.collectTypeMappersFromSourceFile)({
|
|
14
|
+
typeMappersSourceFile,
|
|
15
|
+
typeMappersSuffix,
|
|
16
|
+
resolverTypesPath,
|
|
17
|
+
shouldCollectPropertyMap,
|
|
18
|
+
}, res);
|
|
17
19
|
return res;
|
|
18
20
|
}, {});
|
|
19
21
|
return result;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parseTypeMappers.js","sourceRoot":"","sources":["../../../../../packages/typescript-resolver-files/src/parseTypeMappers/parseTypeMappers.ts"],"names":[],"mappings":";;;AAAA,6BAA6B;
|
|
1
|
+
{"version":3,"file":"parseTypeMappers.js","sourceRoot":"","sources":["../../../../../packages/typescript-resolver-files/src/parseTypeMappers/parseTypeMappers.ts"],"names":[],"mappings":";;;AAAA,6BAA6B;AAI7B,yFAAsF;AAoB/E,MAAM,gBAAgB,GAAG,CAAC,EAC/B,SAAS,EACT,iBAAiB,EACjB,wBAAwB,EACxB,iBAAiB,EACjB,cAAc,EACd,wBAAwB,GACD,EAAkB,EAAE;IAC3C,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,MAAM,CAC7C,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,EAAE;QAC3B,MAAM,kBAAkB,GAAG,IAAI,CAAC,IAAI,CAClC,UAAU,CAAC,GAAG,EACd,GAAG,UAAU,CAAC,IAAI,GAAG,wBAAwB,EAAE,CAChD,CAAC;QAEF,MAAM,qBAAqB,GACzB,cAAc,CAAC,2BAA2B,CAAC,kBAAkB,CAAC,CAAC;QAEjE,IAAI,CAAC,qBAAqB,EAAE;YAC1B,OAAO,GAAG,CAAC;SACZ;QAED,IAAA,mEAAgC,EAC9B;YACE,qBAAqB;YACrB,iBAAiB;YACjB,iBAAiB;YACjB,wBAAwB;SACzB,EACD,GAAG,CACJ,CAAC;QAEF,OAAO,GAAG,CAAC;IACb,CAAC,EACD,EAAE,CACH,CAAC;IACF,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AArCW,QAAA,gBAAgB,oBAqC3B"}
|
package/src/preset.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
-
import type
|
|
1
|
+
import { type Types } from '@graphql-codegen/plugin-helpers';
|
|
2
2
|
import { RawPresetConfig } from './validatePresetConfig';
|
|
3
|
+
export declare const presetName = "@eddeee888/gcg-typescript-resolver-files";
|
|
3
4
|
export declare const preset: Types.OutputPreset<RawPresetConfig>;
|
package/src/preset.js
CHANGED
|
@@ -1,18 +1,24 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.preset = void 0;
|
|
3
|
+
exports.preset = exports.presetName = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
4
5
|
const path = require("path");
|
|
5
6
|
const addPlugin = require("@graphql-codegen/add");
|
|
6
7
|
const typeScriptPlugin = require("@graphql-codegen/typescript");
|
|
7
8
|
const typeScriptResolversPlugin = require("@graphql-codegen/typescript-resolvers");
|
|
9
|
+
const plugin_helpers_1 = require("@graphql-codegen/plugin-helpers");
|
|
10
|
+
const ts_morph_1 = require("ts-morph");
|
|
8
11
|
const parseSources_1 = require("./parseSources");
|
|
9
12
|
const getPluginsConfig_1 = require("./getPluginsConfig");
|
|
10
13
|
const generateResolverFiles_1 = require("./generateResolverFiles");
|
|
11
14
|
const generateTypeDefsContent_1 = require("./generateTypeDefsContent");
|
|
15
|
+
const getGraphQLObjectTypeResolversToGenerate_1 = require("./getGraphQLObjectTypeResolversToGenerate");
|
|
16
|
+
const addVirtualTypesFileToTsMorphProject_1 = require("./addVirtualTypesFileToTsMorphProject");
|
|
12
17
|
const parseTypeMappers_1 = require("./parseTypeMappers");
|
|
13
18
|
const validatePresetConfig_1 = require("./validatePresetConfig");
|
|
19
|
+
exports.presetName = '@eddeee888/gcg-typescript-resolver-files';
|
|
14
20
|
exports.preset = {
|
|
15
|
-
buildGeneratesSection: ({ schema, schemaAst, presetConfig: rawPresetConfig, baseOutputDir, }) => {
|
|
21
|
+
buildGeneratesSection: ({ schema, schemaAst, presetConfig: rawPresetConfig, baseOutputDir, profiler = (0, plugin_helpers_1.createNoopProfiler)(), }) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
16
22
|
if (!schemaAst) {
|
|
17
23
|
throw new Error('Missing schemaAst');
|
|
18
24
|
}
|
|
@@ -20,24 +26,46 @@ exports.preset = {
|
|
|
20
26
|
if (!Array.isArray(sources) || sources.length === 0) {
|
|
21
27
|
throw new Error('Empty Sources. Make sure schema files are parsed correctly.');
|
|
22
28
|
}
|
|
23
|
-
const { resolverTypesPath: relativeResolverTypesPathFromBaseOutputDir, resolverRelativeTargetDir, mappersFileExtension: typeMappersFileExtension, mappersSuffix: typeMappersSuffix, resolverMainFile, typeDefsFilePath, mode, whitelistedModules, blacklistedModules, externalResolvers, typesPluginsConfig, } = (0, validatePresetConfig_1.validatePresetConfig)(rawPresetConfig);
|
|
29
|
+
const { resolverTypesPath: relativeResolverTypesPathFromBaseOutputDir, resolverRelativeTargetDir, mappersFileExtension: typeMappersFileExtension, mappersSuffix: typeMappersSuffix, resolverMainFile, typeDefsFilePath, mode, whitelistedModules, blacklistedModules, externalResolvers, typesPluginsConfig, tsMorphProjectOptions, fixObjectTypeResolvers, } = (0, validatePresetConfig_1.validatePresetConfig)(rawPresetConfig);
|
|
24
30
|
const resolverTypesPath = path.join(baseOutputDir, relativeResolverTypesPathFromBaseOutputDir);
|
|
25
31
|
const { sourceMap, mergedSDL } = (0, parseSources_1.parseSources)(sources);
|
|
26
|
-
const
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
+
const tsMorphProject = yield profiler.run(() => tslib_1.__awaiter(void 0, void 0, void 0, function* () { return new ts_morph_1.Project(tsMorphProjectOptions); }), createProfilerRunName('Initialising ts-morph project'));
|
|
33
|
+
const typeMappersMap = yield profiler.run(() => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
34
|
+
return (0, parseTypeMappers_1.parseTypeMappers)({
|
|
35
|
+
sourceMap,
|
|
36
|
+
resolverTypesPath,
|
|
37
|
+
typeMappersFileExtension,
|
|
38
|
+
typeMappersSuffix,
|
|
39
|
+
tsMorphProject,
|
|
40
|
+
shouldCollectPropertyMap: fixObjectTypeResolvers !== 'disabled',
|
|
41
|
+
});
|
|
42
|
+
}), createProfilerRunName('parseTypeMappers'));
|
|
32
43
|
const generatesSection = [];
|
|
33
44
|
// typescript and typescript-resolvers plugins config
|
|
34
|
-
const { defaultScalarTypesMap, defaultScalarExternalResolvers, defaultTypeMappers, } = (0, getPluginsConfig_1.getPluginsConfig)({
|
|
45
|
+
const { userDefinedSchemaTypeMap, pluginsConfig: { defaultScalarTypesMap, defaultScalarExternalResolvers, defaultTypeMappers, }, } = (0, getPluginsConfig_1.getPluginsConfig)({
|
|
35
46
|
schemaAst,
|
|
36
47
|
sourceMap,
|
|
37
48
|
typeMappersMap,
|
|
38
49
|
whitelistedModules,
|
|
39
50
|
blacklistedModules,
|
|
40
51
|
});
|
|
52
|
+
const resolverTypesConfig = Object.assign(Object.assign({ enumsAsTypes: true, nonOptionalTypename: true }, typesPluginsConfig), { scalars: Object.assign(Object.assign({}, defaultScalarTypesMap), typesPluginsConfig.scalars), mappers: Object.assign(Object.assign({}, defaultTypeMappers), typesPluginsConfig.mappers) });
|
|
53
|
+
// typesSourceFile is the virtual `types.generated.ts`
|
|
54
|
+
// This is useful when we need to do static analysis as most types come from this file
|
|
55
|
+
// e.g. comparing mappers field type vs schema object field type
|
|
56
|
+
const typesSourceFile = yield profiler.run(() => (0, addVirtualTypesFileToTsMorphProject_1.addVirtualTypesFileToTsMorphProject)({
|
|
57
|
+
tsMorphProject,
|
|
58
|
+
schemaAst,
|
|
59
|
+
resolverTypesConfig,
|
|
60
|
+
resolverTypesPath,
|
|
61
|
+
}), createProfilerRunName('addVirtualTypesFileToTsMorphProject'));
|
|
62
|
+
const graphQLObjectTypeResolversToGenerate = yield profiler.run(() => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
63
|
+
return (0, getGraphQLObjectTypeResolversToGenerate_1.getGraphQLObjectTypeResolversToGenerate)({
|
|
64
|
+
typesSourceFile,
|
|
65
|
+
userDefinedSchemaTypeMap,
|
|
66
|
+
typeMappersMap,
|
|
67
|
+
});
|
|
68
|
+
}), createProfilerRunName('graphQLObjectTypeResolversToGenerate'));
|
|
41
69
|
const resolverTypesFile = {
|
|
42
70
|
filename: resolverTypesPath,
|
|
43
71
|
pluginMap: {
|
|
@@ -45,19 +73,20 @@ exports.preset = {
|
|
|
45
73
|
'typescript-resolvers': typeScriptResolversPlugin,
|
|
46
74
|
},
|
|
47
75
|
plugins: [{ typescript: {} }, { ['typescript-resolvers']: {} }],
|
|
48
|
-
config:
|
|
76
|
+
config: resolverTypesConfig,
|
|
49
77
|
schema,
|
|
50
78
|
documents: [],
|
|
51
79
|
};
|
|
52
80
|
generatesSection.push(resolverTypesFile);
|
|
53
81
|
// typeDefs
|
|
54
82
|
if (typeDefsFilePath) {
|
|
83
|
+
const typeDefsContent = yield profiler.run(() => tslib_1.__awaiter(void 0, void 0, void 0, function* () { return (0, generateTypeDefsContent_1.generateTypeDefsContent)({ mergedSDL }); }), createProfilerRunName('generateTypeDefsContent'));
|
|
55
84
|
const typeDefsFile = {
|
|
56
85
|
filename: path.join(baseOutputDir, typeDefsFilePath),
|
|
57
86
|
pluginMap: { add: addPlugin },
|
|
58
87
|
plugins: [
|
|
59
88
|
{
|
|
60
|
-
add: { content:
|
|
89
|
+
add: { content: typeDefsContent },
|
|
61
90
|
},
|
|
62
91
|
],
|
|
63
92
|
config: {},
|
|
@@ -71,21 +100,29 @@ exports.preset = {
|
|
|
71
100
|
files: {},
|
|
72
101
|
externalImports: {},
|
|
73
102
|
};
|
|
74
|
-
(0,
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
103
|
+
yield profiler.run(() => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
104
|
+
return (0, generateResolverFiles_1.generateResolverFiles)({
|
|
105
|
+
config: {
|
|
106
|
+
schema: schemaAst,
|
|
107
|
+
sourceMap,
|
|
108
|
+
baseOutputDir,
|
|
109
|
+
resolverTypesPath,
|
|
110
|
+
resolverRelativeTargetDir,
|
|
111
|
+
resolverMainFile,
|
|
112
|
+
graphQLObjectTypeResolversToGenerate,
|
|
113
|
+
tsMorph: {
|
|
114
|
+
project: tsMorphProject,
|
|
115
|
+
typesSourceFile,
|
|
116
|
+
},
|
|
117
|
+
fixObjectTypeResolvers,
|
|
118
|
+
mode,
|
|
119
|
+
whitelistedModules,
|
|
120
|
+
blacklistedModules,
|
|
121
|
+
externalResolvers: Object.assign(Object.assign({}, defaultScalarExternalResolvers), externalResolvers),
|
|
122
|
+
},
|
|
123
|
+
result,
|
|
124
|
+
});
|
|
125
|
+
}), createProfilerRunName('generateResolverFiles'));
|
|
89
126
|
const resolverFilesGenerateOptions = Object.entries(result.files).map(([filename, { content }]) => ({
|
|
90
127
|
filename,
|
|
91
128
|
pluginMap: { add: addPlugin },
|
|
@@ -95,6 +132,7 @@ exports.preset = {
|
|
|
95
132
|
documents: [],
|
|
96
133
|
}));
|
|
97
134
|
return [...resolverFilesGenerateOptions, ...generatesSection];
|
|
98
|
-
},
|
|
135
|
+
}),
|
|
99
136
|
};
|
|
137
|
+
const createProfilerRunName = (traceName) => `[${exports.presetName}]: ${traceName}`;
|
|
100
138
|
//# sourceMappingURL=preset.js.map
|
package/src/preset.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"preset.js","sourceRoot":"","sources":["../../../../packages/typescript-resolver-files/src/preset.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"preset.js","sourceRoot":"","sources":["../../../../packages/typescript-resolver-files/src/preset.ts"],"names":[],"mappings":"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"}
|