@eddeee888/gcg-typescript-resolver-files 0.2.1 → 0.4.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 +191 -30
- 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/defineConfig.d.ts +5 -0
- package/src/defineConfig.js +19 -0
- package/src/defineConfig.js.map +1 -0
- package/src/generateResolverFiles/addExternalResolverImport.d.ts +1 -0
- package/src/generateResolverFiles/addExternalResolverImport.js +1 -0
- package/src/generateResolverFiles/addExternalResolverImport.js.map +1 -1
- package/src/generateResolverFiles/addResolverMainFile.d.ts +4 -1
- package/src/generateResolverFiles/addResolverMainFile.js +71 -50
- 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 +6 -2
- package/src/generateResolverFiles/handleGraphQLObjectType.js.map +1 -1
- package/src/generateResolverFiles/handleGraphQLRootObjectTypeField.js +9 -2
- package/src/generateResolverFiles/handleGraphQLRootObjectTypeField.js.map +1 -1
- package/src/generateResolverFiles/handleGraphQLScalarType.js +2 -1
- package/src/generateResolverFiles/handleGraphQLScalarType.js.map +1 -1
- package/src/generateResolverFiles/handleGraphQLUninionType.js +2 -1
- package/src/generateResolverFiles/handleGraphQLUninionType.js.map +1 -1
- package/src/generateResolverFiles/postProcessFiles.d.ts +8 -0
- package/src/generateResolverFiles/postProcessFiles.js +73 -0
- package/src/generateResolverFiles/postProcessFiles.js.map +1 -0
- package/src/generateResolverFiles/types.d.ts +19 -3
- package/src/generateResolverFiles/visitNamedType.js +28 -11
- package/src/generateResolverFiles/visitNamedType.js.map +1 -1
- package/src/generateTypeDefsFiles/generateTypeDefsContent.js.map +1 -0
- package/src/generateTypeDefsFiles/generateTypeDefsFiles.d.ts +13 -0
- package/src/generateTypeDefsFiles/generateTypeDefsFiles.js +60 -0
- package/src/generateTypeDefsFiles/generateTypeDefsFiles.js.map +1 -0
- package/src/generateTypeDefsFiles/index.d.ts +1 -0
- package/src/{generateTypeDefsContent → generateTypeDefsFiles}/index.js +1 -1
- package/src/{generateTypeDefsContent → generateTypeDefsFiles}/index.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/index.d.ts +1 -0
- package/src/index.js +3 -1
- package/src/index.js.map +1 -1
- package/src/parseGraphQLSchema/index.d.ts +1 -0
- package/src/{getPluginsConfig → parseGraphQLSchema}/index.js +1 -1
- package/src/parseGraphQLSchema/index.js.map +1 -0
- package/src/parseGraphQLSchema/parseGraphQLSchema.d.ts +16 -0
- package/src/{getPluginsConfig/getPluginsConfig.js → parseGraphQLSchema/parseGraphQLSchema.js} +15 -10
- package/src/parseGraphQLSchema/parseGraphQLSchema.js.map +1 -0
- package/src/parseSources/parseSources.d.ts +0 -1
- package/src/parseSources/parseSources.js +2 -3
- package/src/parseSources/parseSources.js.map +1 -1
- package/src/parseTypeMappers/collectTypeMappersFromSourceFile.d.ts +3 -2
- package/src/parseTypeMappers/collectTypeMappersFromSourceFile.js +51 -10
- package/src/parseTypeMappers/collectTypeMappersFromSourceFile.js.map +1 -1
- package/src/parseTypeMappers/parseTypeMappers.d.ts +7 -2
- package/src/parseTypeMappers/parseTypeMappers.js +10 -8
- package/src/parseTypeMappers/parseTypeMappers.js.map +1 -1
- package/src/preset.d.ts +2 -1
- package/src/preset.js +90 -44
- package/src/preset.js.map +1 -1
- package/src/utils/cwd.d.ts +4 -0
- package/src/utils/cwd.js +12 -0
- package/src/utils/cwd.js.map +1 -0
- package/src/utils/getNodePropertyMap.d.ts +9 -0
- package/src/utils/getNodePropertyMap.js +57 -0
- package/src/utils/getNodePropertyMap.js.map +1 -0
- package/src/utils/index.d.ts +5 -2
- package/src/utils/index.js +5 -16
- package/src/utils/index.js.map +1 -1
- package/src/utils/isRootObjectType.d.ts +1 -1
- package/src/utils/isWhitelistedModule.d.ts +5 -0
- package/src/utils/isWhitelistedModule.js +16 -0
- package/src/utils/isWhitelistedModule.js.map +1 -0
- package/src/utils/normalizeRelativePath.d.ts +1 -0
- package/src/utils/normalizeRelativePath.js +11 -0
- package/src/utils/normalizeRelativePath.js.map +1 -0
- package/src/utils/parseLocationForWhitelistedModule.js +7 -9
- package/src/utils/parseLocationForWhitelistedModule.js.map +1 -1
- package/src/utils/relativeModulePath.d.ts +1 -0
- package/src/utils/relativeModulePath.js +11 -0
- package/src/utils/relativeModulePath.js.map +1 -0
- package/src/validatePresetConfig/validatePresetConfig.d.ts +23 -4
- package/src/validatePresetConfig/validatePresetConfig.js +57 -17
- 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
- package/src/generateTypeDefsContent/generateTypeDefsContent.js.map +0 -1
- package/src/generateTypeDefsContent/index.d.ts +0 -1
- package/src/getPluginsConfig/getPluginsConfig.d.ts +0 -13
- package/src/getPluginsConfig/getPluginsConfig.js.map +0 -1
- package/src/getPluginsConfig/index.d.ts +0 -1
- package/src/getPluginsConfig/index.js.map +0 -1
- /package/src/{generateTypeDefsContent → generateTypeDefsFiles}/generateTypeDefsContent.d.ts +0 -0
- /package/src/{generateTypeDefsContent → generateTypeDefsFiles}/generateTypeDefsContent.js +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"addResolverMainFile.js","sourceRoot":"","sources":["../../../../../packages/typescript-resolver-files/src/generateResolverFiles/addResolverMainFile.ts"],"names":[],"mappings":";;;AAAA,6BAA6B;AAC7B,oCAKkB;
|
|
1
|
+
{"version":3,"file":"addResolverMainFile.js","sourceRoot":"","sources":["../../../../../packages/typescript-resolver-files/src/generateResolverFiles/addResolverMainFile.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { type SourceFile } from 'ts-morph';
|
|
2
|
+
import type { ObjectTypeFile } from './types';
|
|
3
|
+
/**
|
|
4
|
+
* Ensure objectTypeResolver files have all the resolvers due to mismatched types
|
|
5
|
+
*/
|
|
6
|
+
export declare const ensureObjectTypeResolversAreGenerated: (sourceFile: SourceFile, resolverFile: ObjectTypeFile) => void;
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ensureObjectTypeResolversAreGenerated = void 0;
|
|
4
|
+
const ts_morph_1 = require("ts-morph");
|
|
5
|
+
const getVariableStatementWithExpectedIdentifier_1 = require("./getVariableStatementWithExpectedIdentifier");
|
|
6
|
+
/**
|
|
7
|
+
* Ensure objectTypeResolver files have all the resolvers due to mismatched types
|
|
8
|
+
*/
|
|
9
|
+
const ensureObjectTypeResolversAreGenerated = (sourceFile, resolverFile) => {
|
|
10
|
+
const resolversToGenerate = resolverFile.meta.resolversToGenerate || {};
|
|
11
|
+
if (!Object.keys(resolversToGenerate).length) {
|
|
12
|
+
return;
|
|
13
|
+
}
|
|
14
|
+
const { variableStatement } = (0, getVariableStatementWithExpectedIdentifier_1.getVariableStatementWithExpectedIdentifier)(sourceFile, resolverFile);
|
|
15
|
+
if (!variableStatement) {
|
|
16
|
+
throw new Error('Missing variableStatement in ensureObjectTypeResolversAreGenerated.');
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* FIXME: TS API does not expose `.isAssignable(Type, Type)` so we cannot use it to compare a field's type in schema type vs mapper type
|
|
20
|
+
*
|
|
21
|
+
* In this workaround, we try to put the type together and use TS's diagnostic tool to see if there's error:
|
|
22
|
+
* 1. If there's error, it means the mapper field cannot be safely mapped to schema field using GraphQL's default behaviour i.e. there will be runtime error
|
|
23
|
+
* In this case, we leave the resolver function as-is. There should be an error message from the parsing phrase explaining the types cannot be mapped.
|
|
24
|
+
* 2. If there's no error, it means we can safely remove the resolver and let GraphQL handle the mapping.
|
|
25
|
+
*
|
|
26
|
+
* Note: this only looks at fields that's not declared by the user. If it's already declared, we assume TS will report naturally if there's an error.
|
|
27
|
+
*/
|
|
28
|
+
// 1. Check to see which generated to-be-generated resolvers are implemented
|
|
29
|
+
const resolversData = Object.assign({}, resolversToGenerate);
|
|
30
|
+
variableStatement
|
|
31
|
+
.getDescendantsOfKind(ts_morph_1.SyntaxKind.PropertyAssignment)
|
|
32
|
+
.forEach((propertyAssignment) => {
|
|
33
|
+
const resolverName = propertyAssignment.getName();
|
|
34
|
+
if (resolversData[resolverName]) {
|
|
35
|
+
resolversData[resolverName].implemented = true;
|
|
36
|
+
}
|
|
37
|
+
});
|
|
38
|
+
variableStatement
|
|
39
|
+
.getDescendantsOfKind(ts_morph_1.SyntaxKind.MethodDeclaration)
|
|
40
|
+
.forEach((methodDeclaration) => {
|
|
41
|
+
const resolverName = methodDeclaration.getName();
|
|
42
|
+
if (resolversData[resolverName]) {
|
|
43
|
+
resolversData[resolverName].implemented = true;
|
|
44
|
+
}
|
|
45
|
+
});
|
|
46
|
+
// 2. Add missing resolver properties if they haven't been implemented
|
|
47
|
+
const addedPropertyAssignmentNodes = [];
|
|
48
|
+
Object.values(resolversData).forEach(({ resolverName, resolverDeclaration, implemented }) => {
|
|
49
|
+
if (!implemented) {
|
|
50
|
+
const addedNode = variableStatement
|
|
51
|
+
.getDescendantsOfKind(ts_morph_1.SyntaxKind.ObjectLiteralExpression)[0]
|
|
52
|
+
.addPropertyAssignment({
|
|
53
|
+
name: resolverName,
|
|
54
|
+
initializer: resolverDeclaration,
|
|
55
|
+
});
|
|
56
|
+
addedPropertyAssignmentNodes[addedNode.getStartLineNumber()] = {
|
|
57
|
+
node: addedNode,
|
|
58
|
+
__toBeRemoved: true,
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
});
|
|
62
|
+
// 3. Check to see if there's error at the newly added properties:
|
|
63
|
+
// a. If there's error, leave it as user needs to manually map mapper type to schema type
|
|
64
|
+
// b. If there's no error, remove the node because GraphQL default mapping behaviour should work
|
|
65
|
+
sourceFile.getPreEmitDiagnostics().forEach((d) => {
|
|
66
|
+
const lineNumberWithError = d.getLineNumber();
|
|
67
|
+
// If erroring on a recently added line, do not remove as user needs to implement it
|
|
68
|
+
if (lineNumberWithError &&
|
|
69
|
+
addedPropertyAssignmentNodes[lineNumberWithError]) {
|
|
70
|
+
addedPropertyAssignmentNodes[lineNumberWithError].__toBeRemoved = false;
|
|
71
|
+
}
|
|
72
|
+
});
|
|
73
|
+
Object.values(addedPropertyAssignmentNodes).forEach(({ node, __toBeRemoved }) => {
|
|
74
|
+
if (__toBeRemoved) {
|
|
75
|
+
node.remove();
|
|
76
|
+
}
|
|
77
|
+
});
|
|
78
|
+
};
|
|
79
|
+
exports.ensureObjectTypeResolversAreGenerated = ensureObjectTypeResolversAreGenerated;
|
|
80
|
+
//# sourceMappingURL=ensureObjectTypeResolversAreGenerated.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ensureObjectTypeResolversAreGenerated.js","sourceRoot":"","sources":["../../../../../packages/typescript-resolver-files/src/generateResolverFiles/ensureObjectTypeResolversAreGenerated.ts"],"names":[],"mappings":";;;AAAA,uCAA2E;AAE3E,6GAA0G;AAE1G;;GAEG;AACI,MAAM,qCAAqC,GAAG,CACnD,UAAsB,EACtB,YAA4B,EACtB,EAAE;IACR,MAAM,mBAAmB,GAAG,YAAY,CAAC,IAAI,CAAC,mBAAmB,IAAI,EAAE,CAAC;IACxE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,MAAM,EAAE;QAC5C,OAAO;KACR;IAED,MAAM,EAAE,iBAAiB,EAAE,GAAG,IAAA,uFAA0C,EACtE,UAAU,EACV,YAAY,CACb,CAAC;IAEF,IAAI,CAAC,iBAAiB,EAAE;QACtB,MAAM,IAAI,KAAK,CACb,qEAAqE,CACtE,CAAC;KACH;IAED;;;;;;;;;OASG;IAEH,4EAA4E;IAC5E,MAAM,aAAa,qBAOV,mBAAmB,CAAE,CAAC;IAE/B,iBAAiB;SACd,oBAAoB,CAAC,qBAAU,CAAC,kBAAkB,CAAC;SACnD,OAAO,CAAC,CAAC,kBAAkB,EAAE,EAAE;QAC9B,MAAM,YAAY,GAAG,kBAAkB,CAAC,OAAO,EAAE,CAAC;QAClD,IAAI,aAAa,CAAC,YAAY,CAAC,EAAE;YAC/B,aAAa,CAAC,YAAY,CAAC,CAAC,WAAW,GAAG,IAAI,CAAC;SAChD;IACH,CAAC,CAAC,CAAC;IAEL,iBAAiB;SACd,oBAAoB,CAAC,qBAAU,CAAC,iBAAiB,CAAC;SAClD,OAAO,CAAC,CAAC,iBAAiB,EAAE,EAAE;QAC7B,MAAM,YAAY,GAAG,iBAAiB,CAAC,OAAO,EAAE,CAAC;QACjD,IAAI,aAAa,CAAC,YAAY,CAAC,EAAE;YAC/B,aAAa,CAAC,YAAY,CAAC,CAAC,WAAW,GAAG,IAAI,CAAC;SAChD;IACH,CAAC,CAAC,CAAC;IAEL,sEAAsE;IACtE,MAAM,4BAA4B,GAG9B,EAAE,CAAC;IACP,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,OAAO,CAClC,CAAC,EAAE,YAAY,EAAE,mBAAmB,EAAE,WAAW,EAAE,EAAE,EAAE;QACrD,IAAI,CAAC,WAAW,EAAE;YAChB,MAAM,SAAS,GAAG,iBAAiB;iBAChC,oBAAoB,CAAC,qBAAU,CAAC,uBAAuB,CAAC,CAAC,CAAC,CAAC;iBAC3D,qBAAqB,CAAC;gBACrB,IAAI,EAAE,YAAY;gBAClB,WAAW,EAAE,mBAAmB;aACjC,CAAC,CAAC;YAEL,4BAA4B,CAAC,SAAS,CAAC,kBAAkB,EAAE,CAAC,GAAG;gBAC7D,IAAI,EAAE,SAAS;gBACf,aAAa,EAAE,IAAI;aACpB,CAAC;SACH;IACH,CAAC,CACF,CAAC;IAEF,kEAAkE;IAClE,4FAA4F;IAC5F,mGAAmG;IACnG,UAAU,CAAC,qBAAqB,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;QAC/C,MAAM,mBAAmB,GAAG,CAAC,CAAC,aAAa,EAAE,CAAC;QAC9C,oFAAoF;QACpF,IACE,mBAAmB;YACnB,4BAA4B,CAAC,mBAAmB,CAAC,EACjD;YACA,4BAA4B,CAAC,mBAAmB,CAAC,CAAC,aAAa,GAAG,KAAK,CAAC;SACzE;IACH,CAAC,CAAC,CAAC;IACH,MAAM,CAAC,MAAM,CAAC,4BAA4B,CAAC,CAAC,OAAO,CACjD,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,EAAE,EAAE;QAC1B,IAAI,aAAa,EAAE;YACjB,IAAI,CAAC,MAAM,EAAE,CAAC;SACf;IACH,CAAC,CACF,CAAC;AACJ,CAAC,CAAC;AAtGW,QAAA,qCAAqC,yCAsGhD"}
|
|
@@ -4,7 +4,7 @@ exports.generateResolverFiles = void 0;
|
|
|
4
4
|
const graphql_1 = require("graphql");
|
|
5
5
|
const utils_1 = require("../utils");
|
|
6
6
|
const addResolverMainFile_1 = require("./addResolverMainFile");
|
|
7
|
-
const
|
|
7
|
+
const postProcessFiles_1 = require("./postProcessFiles");
|
|
8
8
|
const handleGraphQLRootObjectTypeField_1 = require("./handleGraphQLRootObjectTypeField");
|
|
9
9
|
const handleGraphQLObjectType_1 = require("./handleGraphQLObjectType");
|
|
10
10
|
const handleGraphQLUninionType_1 = require("./handleGraphQLUninionType");
|
|
@@ -46,8 +46,8 @@ const generateResolverFiles = (ctx) => {
|
|
|
46
46
|
visitor,
|
|
47
47
|
}, ctx);
|
|
48
48
|
});
|
|
49
|
-
//
|
|
50
|
-
(0,
|
|
49
|
+
// Post process generated files (could be existing files or files to be generated)
|
|
50
|
+
(0, postProcessFiles_1.postProcessFiles)(ctx);
|
|
51
51
|
// Put all resolvers into a barrel file (or main file)
|
|
52
52
|
(0, addResolverMainFile_1.addResolverMainFile)(ctx);
|
|
53
53
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generateResolverFiles.js","sourceRoot":"","sources":["../../../../../packages/typescript-resolver-files/src/generateResolverFiles/generateResolverFiles.ts"],"names":[],"mappings":";;;AAAA,qCAAuC;AACvC,oCAA+D;AAC/D,+DAA4D;AAC5D,
|
|
1
|
+
{"version":3,"file":"generateResolverFiles.js","sourceRoot":"","sources":["../../../../../packages/typescript-resolver-files/src/generateResolverFiles/generateResolverFiles.ts"],"names":[],"mappings":";;;AAAA,qCAAuC;AACvC,oCAA+D;AAC/D,+DAA4D;AAC5D,yDAAsD;AACtD,yFAAsF;AACtF,uEAAoE;AACpE,yEAAsE;AACtE,uEAAoE;AACpE,qDAAwE;AAGjE,MAAM,qBAAqB,GAAG,CACnC,GAAiC,EAC3B,EAAE;IACR,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,IAAI,IAAA,yBAAiB,EAAC,SAAS,CAAC,EAAE;YAChC,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,wBAAgB,EAAC,UAAU,CAAC,IAAI,IAAA,sBAAY,EAAC,SAAS,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,MAAA,SAAS,CAAC,OAAO,0CAAE,GAAG;YAChC,OAAO;SACR,EACD,GAAG,CACJ,CAAC;IACJ,CAAC,CACF,CAAC;IAEF,kFAAkF;IAClF,IAAA,mCAAgB,EAAC,GAAG,CAAC,CAAC;IAEtB,sDAAsD;IACtD,IAAA,yCAAmB,EAAC,GAAG,CAAC,CAAC;AAC3B,CAAC,CAAC;AAtDW,QAAA,qBAAqB,yBAsDhC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { SourceFile, VariableStatement } from 'ts-morph';
|
|
2
|
+
import type { ResolverFile } from './types';
|
|
3
|
+
export declare const getVariableStatementWithExpectedIdentifier: (sourceFile: SourceFile, resolverFile: ResolverFile) => {
|
|
4
|
+
variableStatement: VariableStatement | undefined;
|
|
5
|
+
isExported: boolean;
|
|
6
|
+
};
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getVariableStatementWithExpectedIdentifier = void 0;
|
|
4
|
+
const getVariableStatementWithExpectedIdentifier = (sourceFile, resolverFile) => {
|
|
5
|
+
let isExported = false;
|
|
6
|
+
const variableStatementWithExpectedIdentifier = sourceFile.getVariableStatement((statement) => {
|
|
7
|
+
let hasExpectedIdentifier = false;
|
|
8
|
+
statement
|
|
9
|
+
.getDeclarationList()
|
|
10
|
+
.getDeclarations()
|
|
11
|
+
.forEach((declarationNode) => {
|
|
12
|
+
if (declarationNode.getName() === resolverFile.mainImportIdentifier) {
|
|
13
|
+
hasExpectedIdentifier = true;
|
|
14
|
+
if (statement.isExported()) {
|
|
15
|
+
isExported = true;
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
});
|
|
19
|
+
return hasExpectedIdentifier;
|
|
20
|
+
});
|
|
21
|
+
return {
|
|
22
|
+
variableStatement: variableStatementWithExpectedIdentifier,
|
|
23
|
+
isExported,
|
|
24
|
+
};
|
|
25
|
+
};
|
|
26
|
+
exports.getVariableStatementWithExpectedIdentifier = getVariableStatementWithExpectedIdentifier;
|
|
27
|
+
//# sourceMappingURL=getVariableStatementWithExpectedIdentifier.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getVariableStatementWithExpectedIdentifier.js","sourceRoot":"","sources":["../../../../../packages/typescript-resolver-files/src/generateResolverFiles/getVariableStatementWithExpectedIdentifier.ts"],"names":[],"mappings":";;;AAGO,MAAM,0CAA0C,GAAG,CACxD,UAAsB,EACtB,YAA0B,EAI1B,EAAE;IACF,IAAI,UAAU,GAAG,KAAK,CAAC;IACvB,MAAM,uCAAuC,GAC3C,UAAU,CAAC,oBAAoB,CAAC,CAAC,SAAS,EAAE,EAAE;QAC5C,IAAI,qBAAqB,GAAG,KAAK,CAAC;QAClC,SAAS;aACN,kBAAkB,EAAE;aACpB,eAAe,EAAE;aACjB,OAAO,CAAC,CAAC,eAAe,EAAE,EAAE;YAC3B,IAAI,eAAe,CAAC,OAAO,EAAE,KAAK,YAAY,CAAC,oBAAoB,EAAE;gBACnE,qBAAqB,GAAG,IAAI,CAAC;gBAC7B,IAAI,SAAS,CAAC,UAAU,EAAE,EAAE;oBAC1B,UAAU,GAAG,IAAI,CAAC;iBACnB;aACF;QACH,CAAC,CAAC,CAAC;QACL,OAAO,qBAAqB,CAAC;IAC/B,CAAC,CAAC,CAAC;IAEL,OAAO;QACL,iBAAiB,EAAE,uCAAuC;QAC1D,UAAU;KACX,CAAC;AACJ,CAAC,CAAC;AA7BW,QAAA,0CAA0C,8CA6BrD"}
|
|
@@ -2,8 +2,10 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.handleGraphQLObjectType = void 0;
|
|
4
4
|
const utils_1 = require("../utils");
|
|
5
|
-
const handleGraphQLObjectType = ({ fieldFilePath, resolverName, normalizedResolverName, resolversTypeMeta }, { result }) => {
|
|
6
|
-
const variableStatement = `export const ${resolverName}: ${resolversTypeMeta.typeString} = {
|
|
5
|
+
const handleGraphQLObjectType = ({ fieldFilePath, resolverName, normalizedResolverName, resolversTypeMeta, moduleName, }, { result, config: { graphQLObjectTypeResolversToGenerate } }) => {
|
|
6
|
+
const variableStatement = `export const ${resolverName}: ${resolversTypeMeta.typeString} = {
|
|
7
|
+
/* Implement ${resolverName} resolver logic here */
|
|
8
|
+
};`;
|
|
7
9
|
result.files[fieldFilePath] = {
|
|
8
10
|
__filetype: 'objectType',
|
|
9
11
|
content: `
|
|
@@ -15,8 +17,10 @@ const handleGraphQLObjectType = ({ fieldFilePath, resolverName, normalizedResolv
|
|
|
15
17
|
${variableStatement}`,
|
|
16
18
|
mainImportIdentifier: resolverName,
|
|
17
19
|
meta: {
|
|
20
|
+
moduleName,
|
|
18
21
|
normalizedResolverName,
|
|
19
22
|
variableStatement,
|
|
23
|
+
resolversToGenerate: graphQLObjectTypeResolversToGenerate[resolverName], // Array of all resolvers that may need type checking
|
|
20
24
|
},
|
|
21
25
|
};
|
|
22
26
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handleGraphQLObjectType.js","sourceRoot":"","sources":["../../../../../packages/typescript-resolver-files/src/generateResolverFiles/handleGraphQLObjectType.ts"],"names":[],"mappings":";;;AACA,oCAA2C;AAEpC,MAAM,uBAAuB,GAAuB,CACzD,
|
|
1
|
+
{"version":3,"file":"handleGraphQLObjectType.js","sourceRoot":"","sources":["../../../../../packages/typescript-resolver-files/src/generateResolverFiles/handleGraphQLObjectType.ts"],"names":[],"mappings":";;;AACA,oCAA2C;AAEpC,MAAM,uBAAuB,GAAuB,CACzD,EACE,aAAa,EACb,YAAY,EACZ,sBAAsB,EACtB,iBAAiB,EACjB,UAAU,GACX,EACD,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,oCAAoC,EAAE,EAAE,EAC5D,EAAE;IACF,MAAM,iBAAiB,GAAG,gBAAgB,YAAY,KAAK,iBAAiB,CAAC,UAAU;mBACtE,YAAY;KAC1B,CAAC;IAEJ,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,GAAG;QAC5B,UAAU,EAAE,YAAY;QACxB,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,iBAAiB,EAAE;QACrB,oBAAoB,EAAE,YAAY;QAClC,IAAI,EAAE;YACJ,UAAU;YACV,sBAAsB;YACtB,iBAAiB;YACjB,mBAAmB,EAAE,oCAAoC,CAAC,YAAY,CAAC,EAAE,qDAAqD;SAC/H;KACF,CAAC;AACJ,CAAC,CAAC;AA/BW,QAAA,uBAAuB,2BA+BlC"}
|
|
@@ -2,8 +2,14 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.handleGraphQLRootObjectTypeField = void 0;
|
|
4
4
|
const utils_1 = require("../utils");
|
|
5
|
-
const handleGraphQLRootObjectTypeField = ({ fieldFilePath, resolverName, belongsToRootObject, normalizedResolverName, resolversTypeMeta, }, { result }) => {
|
|
6
|
-
const
|
|
5
|
+
const handleGraphQLRootObjectTypeField = ({ fieldFilePath, resolverName, belongsToRootObject, normalizedResolverName, resolversTypeMeta, moduleName, }, { result }) => {
|
|
6
|
+
const suggestion = `/* Implement ${normalizedResolverName} resolver logic here */`;
|
|
7
|
+
let variableStatement = `export const ${resolverName}: NonNullable<${resolversTypeMeta.typeString}> = async (_parent, _arg, _ctx) => { ${suggestion} };`;
|
|
8
|
+
if (belongsToRootObject === 'Subscription') {
|
|
9
|
+
variableStatement = `export const ${resolverName}: NonNullable<${resolversTypeMeta.typeString}> = {
|
|
10
|
+
subscribe: async (_parent, _arg, _ctx) => { ${suggestion} },
|
|
11
|
+
}`;
|
|
12
|
+
}
|
|
7
13
|
result.files[fieldFilePath] = {
|
|
8
14
|
__filetype: 'rootObjectTypeFieldResolver',
|
|
9
15
|
content: `
|
|
@@ -15,6 +21,7 @@ const handleGraphQLRootObjectTypeField = ({ fieldFilePath, resolverName, belongs
|
|
|
15
21
|
${variableStatement}`,
|
|
16
22
|
mainImportIdentifier: resolverName,
|
|
17
23
|
meta: {
|
|
24
|
+
moduleName,
|
|
18
25
|
belongsToRootObject,
|
|
19
26
|
variableStatement,
|
|
20
27
|
normalizedResolverName,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handleGraphQLRootObjectTypeField.js","sourceRoot":"","sources":["../../../../../packages/typescript-resolver-files/src/generateResolverFiles/handleGraphQLRootObjectTypeField.ts"],"names":[],"mappings":";;;AAAA,oCAAgE;AAGzD,MAAM,gCAAgC,GAEzC,CACF,EACE,aAAa,EACb,YAAY,EACZ,mBAAmB,EACnB,sBAAsB,EACtB,iBAAiB,
|
|
1
|
+
{"version":3,"file":"handleGraphQLRootObjectTypeField.js","sourceRoot":"","sources":["../../../../../packages/typescript-resolver-files/src/generateResolverFiles/handleGraphQLRootObjectTypeField.ts"],"names":[],"mappings":";;;AAAA,oCAAgE;AAGzD,MAAM,gCAAgC,GAEzC,CACF,EACE,aAAa,EACb,YAAY,EACZ,mBAAmB,EACnB,sBAAsB,EACtB,iBAAiB,EACjB,UAAU,GACX,EACD,EAAE,MAAM,EAAE,EACV,EAAE;IACF,MAAM,UAAU,GAAG,gBAAgB,sBAAsB,yBAAyB,CAAC;IAEnF,IAAI,iBAAiB,GAAG,gBAAgB,YAAY,iBAAiB,iBAAiB,CAAC,UAAU,wCAAwC,UAAU,KAAK,CAAC;IACzJ,IAAI,mBAAmB,KAAK,cAAc,EAAE;QAC1C,iBAAiB,GAAG,gBAAgB,YAAY,iBAAiB,iBAAiB,CAAC,UAAU;oDAC7C,UAAU;MACxD,CAAC;KACJ;IAED,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,GAAG;QAC5B,UAAU,EAAE,6BAA6B;QACzC,OAAO,EAAE;UACH,IAAA,uBAAe,EAAC;YAChB,YAAY,EAAE,IAAI;YAClB,MAAM,EAAE,iBAAiB,CAAC,MAAM;YAChC,YAAY,EAAE,CAAC,iBAAiB,CAAC,eAAe,CAAC;SAClD,CAAC;UACA,iBAAiB,EAAE;QACzB,oBAAoB,EAAE,YAAY;QAClC,IAAI,EAAE;YACJ,UAAU;YACV,mBAAmB;YACnB,iBAAiB;YACjB,sBAAsB;SACvB;KACF,CAAC;AACJ,CAAC,CAAC;AAvCW,QAAA,gCAAgC,oCAuC3C"}
|
|
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.handleGraphQLScalarType = void 0;
|
|
4
4
|
const utils_1 = require("../utils");
|
|
5
5
|
const graphQLScalarType = 'GraphQLScalarType';
|
|
6
|
-
const handleGraphQLScalarType = ({ fieldFilePath, resolverName, normalizedResolverName }, { result }) => {
|
|
6
|
+
const handleGraphQLScalarType = ({ fieldFilePath, resolverName, normalizedResolverName, moduleName }, { result }) => {
|
|
7
7
|
const variableStatement = `export const ${resolverName}: ${graphQLScalarType} = { /* Implement ${resolverName} scalar logic here */ };`;
|
|
8
8
|
result.files[fieldFilePath] = {
|
|
9
9
|
__filetype: 'generalResolver',
|
|
@@ -16,6 +16,7 @@ const handleGraphQLScalarType = ({ fieldFilePath, resolverName, normalizedResolv
|
|
|
16
16
|
${variableStatement}`,
|
|
17
17
|
mainImportIdentifier: resolverName,
|
|
18
18
|
meta: {
|
|
19
|
+
moduleName,
|
|
19
20
|
normalizedResolverName,
|
|
20
21
|
variableStatement,
|
|
21
22
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handleGraphQLScalarType.js","sourceRoot":"","sources":["../../../../../packages/typescript-resolver-files/src/generateResolverFiles/handleGraphQLScalarType.ts"],"names":[],"mappings":";;;AAAA,oCAA2C;AAG3C,MAAM,iBAAiB,GAAG,mBAAmB,CAAC;AAEvC,MAAM,uBAAuB,GAAuB,CACzD,EAAE,aAAa,EAAE,YAAY,EAAE,sBAAsB,EAAE,
|
|
1
|
+
{"version":3,"file":"handleGraphQLScalarType.js","sourceRoot":"","sources":["../../../../../packages/typescript-resolver-files/src/generateResolverFiles/handleGraphQLScalarType.ts"],"names":[],"mappings":";;;AAAA,oCAA2C;AAG3C,MAAM,iBAAiB,GAAG,mBAAmB,CAAC;AAEvC,MAAM,uBAAuB,GAAuB,CACzD,EAAE,aAAa,EAAE,YAAY,EAAE,sBAAsB,EAAE,UAAU,EAAE,EACnE,EAAE,MAAM,EAAE,EACV,EAAE;IACF,MAAM,iBAAiB,GAAG,gBAAgB,YAAY,KAAK,iBAAiB,qBAAqB,YAAY,0BAA0B,CAAC;IAExI,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,GAAG;QAC5B,UAAU,EAAE,iBAAiB;QAC7B,OAAO,EAAE;MACP,IAAA,uBAAe,EAAC;YAChB,YAAY,EAAE,IAAI;YAClB,MAAM,EAAE,SAAS;YACjB,YAAY,EAAE,CAAC,iBAAiB,CAAC;SAClC,CAAC;MACA,iBAAiB,EAAE;QACrB,oBAAoB,EAAE,YAAY;QAClC,IAAI,EAAE;YACJ,UAAU;YACV,sBAAsB;YACtB,iBAAiB;SAClB;KACF,CAAC;AACJ,CAAC,CAAC;AAtBW,QAAA,uBAAuB,2BAsBlC"}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.handleGraphQLUninionType = void 0;
|
|
4
4
|
const utils_1 = require("../utils");
|
|
5
|
-
const handleGraphQLUninionType = ({ fieldFilePath, resolverName, normalizedResolverName, resolversTypeMeta }, { result }) => {
|
|
5
|
+
const handleGraphQLUninionType = ({ fieldFilePath, resolverName, normalizedResolverName, resolversTypeMeta, moduleName, }, { result }) => {
|
|
6
6
|
const variableStatement = `export const ${resolverName}: ${resolversTypeMeta.typeString} = { __resolveType: (parent) => parent.__typename };`;
|
|
7
7
|
result.files[fieldFilePath] = {
|
|
8
8
|
__filetype: 'generalResolver',
|
|
@@ -15,6 +15,7 @@ const handleGraphQLUninionType = ({ fieldFilePath, resolverName, normalizedResol
|
|
|
15
15
|
${variableStatement}`,
|
|
16
16
|
mainImportIdentifier: resolverName,
|
|
17
17
|
meta: {
|
|
18
|
+
moduleName,
|
|
18
19
|
normalizedResolverName,
|
|
19
20
|
variableStatement,
|
|
20
21
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handleGraphQLUninionType.js","sourceRoot":"","sources":["../../../../../packages/typescript-resolver-files/src/generateResolverFiles/handleGraphQLUninionType.ts"],"names":[],"mappings":";;;AAAA,oCAA2C;AAGpC,MAAM,wBAAwB,GAAuB,CAC1D,
|
|
1
|
+
{"version":3,"file":"handleGraphQLUninionType.js","sourceRoot":"","sources":["../../../../../packages/typescript-resolver-files/src/generateResolverFiles/handleGraphQLUninionType.ts"],"names":[],"mappings":";;;AAAA,oCAA2C;AAGpC,MAAM,wBAAwB,GAAuB,CAC1D,EACE,aAAa,EACb,YAAY,EACZ,sBAAsB,EACtB,iBAAiB,EACjB,UAAU,GACX,EACD,EAAE,MAAM,EAAE,EACV,EAAE;IACF,MAAM,iBAAiB,GAAG,gBAAgB,YAAY,KAAK,iBAAiB,CAAC,UAAU,sDAAsD,CAAC;IAE9I,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,GAAG;QAC5B,UAAU,EAAE,iBAAiB;QAC7B,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,iBAAiB,EAAE;QACrB,oBAAoB,EAAE,YAAY;QAClC,IAAI,EAAE;YACJ,UAAU;YACV,sBAAsB;YACtB,iBAAiB;SAClB;KACF,CAAC;AACJ,CAAC,CAAC;AA5BW,QAAA,wBAAwB,4BA4BnC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { GenerateResolverFilesContext } from './types';
|
|
2
|
+
/**
|
|
3
|
+
* postProcessFiles does static analysis on existing files OR to-be-generated files
|
|
4
|
+
* e.g.
|
|
5
|
+
* - Make sure correct variables are exported
|
|
6
|
+
* - Make sure object types have field resolvers if mapper type's field cannot be used as schema type's field
|
|
7
|
+
*/
|
|
8
|
+
export declare const postProcessFiles: ({ config: { tsMorph: { project }, fixObjectTypeResolvers, }, result, }: GenerateResolverFilesContext) => void;
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.postProcessFiles = void 0;
|
|
4
|
+
const path = require("path");
|
|
5
|
+
const utils_1 = require("../utils");
|
|
6
|
+
const getVariableStatementWithExpectedIdentifier_1 = require("./getVariableStatementWithExpectedIdentifier");
|
|
7
|
+
const ensureObjectTypeResolversAreGenerated_1 = require("./ensureObjectTypeResolversAreGenerated");
|
|
8
|
+
/**
|
|
9
|
+
* postProcessFiles does static analysis on existing files OR to-be-generated files
|
|
10
|
+
* e.g.
|
|
11
|
+
* - Make sure correct variables are exported
|
|
12
|
+
* - Make sure object types have field resolvers if mapper type's field cannot be used as schema type's field
|
|
13
|
+
*/
|
|
14
|
+
const postProcessFiles = ({ config: { tsMorph: { project }, fixObjectTypeResolvers, }, result, }) => {
|
|
15
|
+
const sourceFilesToProcess = [];
|
|
16
|
+
Object.entries(result.files).forEach(([filePath, file]) => {
|
|
17
|
+
if (file.__filetype === 'file') {
|
|
18
|
+
return;
|
|
19
|
+
}
|
|
20
|
+
const existingSourceFile = project.addSourceFileAtPathIfExists(filePath);
|
|
21
|
+
if (existingSourceFile) {
|
|
22
|
+
sourceFilesToProcess.push({
|
|
23
|
+
sourceFile: existingSourceFile,
|
|
24
|
+
resolverFile: file,
|
|
25
|
+
});
|
|
26
|
+
return;
|
|
27
|
+
}
|
|
28
|
+
// If cannot find existing source files, load files that need post-processing into sourceFilesToProcess
|
|
29
|
+
if (file.__filetype === 'objectType') {
|
|
30
|
+
const virtualSourceFile = project.createSourceFile(filePath, file.content);
|
|
31
|
+
sourceFilesToProcess.push({
|
|
32
|
+
sourceFile: virtualSourceFile,
|
|
33
|
+
resolverFile: file,
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
});
|
|
37
|
+
sourceFilesToProcess.forEach(({ sourceFile, resolverFile }) => {
|
|
38
|
+
const normalizedRelativePath = path.posix.relative((0, utils_1.cwd)(), sourceFile.getFilePath());
|
|
39
|
+
// TODO: Check missing import
|
|
40
|
+
// ...
|
|
41
|
+
ensureExportedResolver(sourceFile, resolverFile);
|
|
42
|
+
if (fixObjectTypeResolvers === 'smart' &&
|
|
43
|
+
resolverFile.__filetype === 'objectType') {
|
|
44
|
+
(0, ensureObjectTypeResolversAreGenerated_1.ensureObjectTypeResolversAreGenerated)(sourceFile, resolverFile);
|
|
45
|
+
}
|
|
46
|
+
// Overwrite existing files with fixes
|
|
47
|
+
result.files[normalizedRelativePath] = Object.assign(Object.assign({}, resolverFile), { content: sourceFile.getText() });
|
|
48
|
+
});
|
|
49
|
+
};
|
|
50
|
+
exports.postProcessFiles = postProcessFiles;
|
|
51
|
+
/**
|
|
52
|
+
* Ensure correctly named resolvers are exported
|
|
53
|
+
*/
|
|
54
|
+
const ensureExportedResolver = (sourceFile, resolverFile) => {
|
|
55
|
+
const { variableStatement, isExported } = (0, getVariableStatementWithExpectedIdentifier_1.getVariableStatementWithExpectedIdentifier)(sourceFile, resolverFile);
|
|
56
|
+
if (!variableStatement) {
|
|
57
|
+
// Did not find variable statement with expected identifier, add it to the end with a warning
|
|
58
|
+
sourceFile.addStatements('/* WARNING: The following resolver was missing from this file. Make sure it is properly implemented or there could be runtime errors. */');
|
|
59
|
+
sourceFile.addStatements(resolverFile.meta.variableStatement);
|
|
60
|
+
}
|
|
61
|
+
else if (variableStatement && !isExported) {
|
|
62
|
+
// If has identifier but not exported
|
|
63
|
+
// Add export keyword to statement
|
|
64
|
+
const isExpectedIdentifierExported = Boolean(sourceFile
|
|
65
|
+
.getExportedDeclarations()
|
|
66
|
+
.get(resolverFile.mainImportIdentifier));
|
|
67
|
+
if (!isExpectedIdentifierExported) {
|
|
68
|
+
variableStatement.setIsExported(true);
|
|
69
|
+
}
|
|
70
|
+
// else, if identifier's been exported do nothing
|
|
71
|
+
}
|
|
72
|
+
};
|
|
73
|
+
//# sourceMappingURL=postProcessFiles.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"postProcessFiles.js","sourceRoot":"","sources":["../../../../../packages/typescript-resolver-files/src/generateResolverFiles/postProcessFiles.ts"],"names":[],"mappings":";;;AACA,6BAA6B;AAC7B,oCAA+B;AAE/B,6GAA0G;AAC1G,mGAAgG;AAEhG;;;;;GAKG;AACI,MAAM,gBAAgB,GAAG,CAAC,EAC/B,MAAM,EAAE,EACN,OAAO,EAAE,EAAE,OAAO,EAAE,EACpB,sBAAsB,GACvB,EACD,MAAM,GACuB,EAAQ,EAAE;IACvC,MAAM,oBAAoB,GAGpB,EAAE,CAAC;IACT,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,EAAE,IAAI,CAAC,EAAE,EAAE;QACxD,IAAI,IAAI,CAAC,UAAU,KAAK,MAAM,EAAE;YAC9B,OAAO;SACR;QAED,MAAM,kBAAkB,GAAG,OAAO,CAAC,2BAA2B,CAAC,QAAQ,CAAC,CAAC;QACzE,IAAI,kBAAkB,EAAE;YACtB,oBAAoB,CAAC,IAAI,CAAC;gBACxB,UAAU,EAAE,kBAAkB;gBAC9B,YAAY,EAAE,IAAI;aACnB,CAAC,CAAC;YACH,OAAO;SACR;QAED,uGAAuG;QACvG,IAAI,IAAI,CAAC,UAAU,KAAK,YAAY,EAAE;YACpC,MAAM,iBAAiB,GAAG,OAAO,CAAC,gBAAgB,CAChD,QAAQ,EACR,IAAI,CAAC,OAAO,CACb,CAAC;YACF,oBAAoB,CAAC,IAAI,CAAC;gBACxB,UAAU,EAAE,iBAAiB;gBAC7B,YAAY,EAAE,IAAI;aACnB,CAAC,CAAC;SACJ;IACH,CAAC,CAAC,CAAC;IAEH,oBAAoB,CAAC,OAAO,CAAC,CAAC,EAAE,UAAU,EAAE,YAAY,EAAE,EAAE,EAAE;QAC5D,MAAM,sBAAsB,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAChD,IAAA,WAAG,GAAE,EACL,UAAU,CAAC,WAAW,EAAE,CACzB,CAAC;QAEF,6BAA6B;QAC7B,MAAM;QAEN,sBAAsB,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;QACjD,IACE,sBAAsB,KAAK,OAAO;YAClC,YAAY,CAAC,UAAU,KAAK,YAAY,EACxC;YACA,IAAA,6EAAqC,EAAC,UAAU,EAAE,YAAY,CAAC,CAAC;SACjE;QAED,sCAAsC;QACtC,MAAM,CAAC,KAAK,CAAC,sBAAsB,CAAC,mCAC/B,YAAY,KACf,OAAO,EAAE,UAAU,CAAC,OAAO,EAAE,GAC9B,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AA7DW,QAAA,gBAAgB,oBA6D3B;AAEF;;GAEG;AACH,MAAM,sBAAsB,GAAG,CAC7B,UAAsB,EACtB,YAA0B,EACpB,EAAE;IACR,MAAM,EAAE,iBAAiB,EAAE,UAAU,EAAE,GACrC,IAAA,uFAA0C,EAAC,UAAU,EAAE,YAAY,CAAC,CAAC;IAEvE,IAAI,CAAC,iBAAiB,EAAE;QACtB,6FAA6F;QAC7F,UAAU,CAAC,aAAa,CACtB,0IAA0I,CAC3I,CAAC;QACF,UAAU,CAAC,aAAa,CAAC,YAAY,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;KAC/D;SAAM,IAAI,iBAAiB,IAAI,CAAC,UAAU,EAAE;QAC3C,qCAAqC;QACrC,kCAAkC;QAClC,MAAM,4BAA4B,GAAG,OAAO,CAC1C,UAAU;aACP,uBAAuB,EAAE;aACzB,GAAG,CAAC,YAAY,CAAC,oBAAoB,CAAC,CAC1C,CAAC;QACF,IAAI,CAAC,4BAA4B,EAAE;YACjC,iBAAiB,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;SACvC;QACD,iDAAiD;KAClD;AACH,CAAC,CAAC"}
|
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
import type { GraphQLSchema } from 'graphql';
|
|
2
|
+
import { type SourceFile, Project } from 'ts-morph';
|
|
3
|
+
import type { GraphQLObjectTypeResolversToGenerate } from '../getGraphQLObjectTypeResolversToGenerate';
|
|
2
4
|
import type { ParseSourcesResult } from '../parseSources';
|
|
3
5
|
import type { ImportLineMeta, RootObjectType } from '../utils';
|
|
6
|
+
import type { ParsedPresetConfig } from '../validatePresetConfig';
|
|
4
7
|
interface BaseVirtualFile {
|
|
5
8
|
__filetype: string;
|
|
6
9
|
content: string;
|
|
@@ -12,6 +15,7 @@ export interface StandardFile extends BaseVirtualFile {
|
|
|
12
15
|
export interface GeneralResolverFile extends BaseVirtualFile {
|
|
13
16
|
__filetype: 'generalResolver';
|
|
14
17
|
meta: {
|
|
18
|
+
moduleName: string;
|
|
15
19
|
variableStatement: string;
|
|
16
20
|
normalizedResolverName: string;
|
|
17
21
|
};
|
|
@@ -19,6 +23,7 @@ export interface GeneralResolverFile extends BaseVirtualFile {
|
|
|
19
23
|
export interface RootObjectTypeFieldResolverFile extends BaseVirtualFile {
|
|
20
24
|
__filetype: 'rootObjectTypeFieldResolver';
|
|
21
25
|
meta: {
|
|
26
|
+
moduleName: string;
|
|
22
27
|
belongsToRootObject: RootObjectType;
|
|
23
28
|
variableStatement: string;
|
|
24
29
|
normalizedResolverName: string;
|
|
@@ -27,11 +32,13 @@ export interface RootObjectTypeFieldResolverFile extends BaseVirtualFile {
|
|
|
27
32
|
export interface ObjectTypeFile extends BaseVirtualFile {
|
|
28
33
|
__filetype: 'objectType';
|
|
29
34
|
meta: {
|
|
35
|
+
moduleName: string;
|
|
30
36
|
variableStatement: string;
|
|
31
37
|
normalizedResolverName: string;
|
|
38
|
+
resolversToGenerate?: GraphQLObjectTypeResolversToGenerate[number];
|
|
32
39
|
};
|
|
33
40
|
}
|
|
34
|
-
export
|
|
41
|
+
export type ResolverFile = GeneralResolverFile | RootObjectTypeFieldResolverFile | ObjectTypeFile;
|
|
35
42
|
export interface GenerateResolverFilesContext {
|
|
36
43
|
config: {
|
|
37
44
|
schema: GraphQLSchema;
|
|
@@ -40,14 +47,22 @@ export interface GenerateResolverFilesContext {
|
|
|
40
47
|
resolverTypesPath: string;
|
|
41
48
|
resolverRelativeTargetDir: string;
|
|
42
49
|
resolverMainFile: string;
|
|
43
|
-
|
|
50
|
+
resolverMainFileMode: ParsedPresetConfig['resolverMainFileMode'];
|
|
51
|
+
mode: ParsedPresetConfig['mode'];
|
|
44
52
|
whitelistedModules: string[];
|
|
45
53
|
blacklistedModules: string[];
|
|
46
54
|
externalResolvers: Record<string, string>;
|
|
55
|
+
tsMorph: {
|
|
56
|
+
project: Project;
|
|
57
|
+
typesSourceFile: SourceFile;
|
|
58
|
+
};
|
|
59
|
+
graphQLObjectTypeResolversToGenerate: GraphQLObjectTypeResolversToGenerate;
|
|
60
|
+
fixObjectTypeResolvers: ParsedPresetConfig['fixObjectTypeResolvers'];
|
|
47
61
|
};
|
|
48
62
|
result: {
|
|
49
63
|
files: Record<string, StandardFile | ResolverFile>;
|
|
50
64
|
externalImports: Record<string, {
|
|
65
|
+
moduleName: string;
|
|
51
66
|
importLineMeta: ImportLineMeta;
|
|
52
67
|
identifierUsages: {
|
|
53
68
|
identifierName: string;
|
|
@@ -57,6 +72,7 @@ export interface GenerateResolverFilesContext {
|
|
|
57
72
|
};
|
|
58
73
|
}
|
|
59
74
|
export interface GraphQLTypeHandlerParams<BelongsToRootObject = null> {
|
|
75
|
+
moduleName: string;
|
|
60
76
|
fieldFilePath: string;
|
|
61
77
|
resolverName: string;
|
|
62
78
|
belongsToRootObject: BelongsToRootObject;
|
|
@@ -67,5 +83,5 @@ export interface GraphQLTypeHandlerParams<BelongsToRootObject = null> {
|
|
|
67
83
|
typeString: `${string}Resolvers` | `${RootObjectType}Resolvers['${string}']`;
|
|
68
84
|
};
|
|
69
85
|
}
|
|
70
|
-
export
|
|
86
|
+
export type GraphQLTypeHandler<BelongsToRootObject = null> = (params: GraphQLTypeHandlerParams<BelongsToRootObject>, ctx: GenerateResolverFilesContext) => void;
|
|
71
87
|
export {};
|
|
@@ -7,22 +7,31 @@ const utils_1 = require("../utils");
|
|
|
7
7
|
const addExternalResolverImport_1 = require("./addExternalResolverImport");
|
|
8
8
|
const visitNamedType = ({ namedType, resolverName, belongsToRootObject, location, visitor, }, ctx) => {
|
|
9
9
|
const normalizedResolverName = normalizeResolverName(resolverName, belongsToRootObject);
|
|
10
|
+
// Check to see if need to generate resolver files
|
|
11
|
+
const parsedDetails = parseLocationForOutputDir(belongsToRootObject ? [belongsToRootObject] : [], ctx, location);
|
|
12
|
+
if (!parsedDetails) {
|
|
13
|
+
// No `parsedDetails` means the location is NOT whitelisted, ignore.
|
|
14
|
+
return;
|
|
15
|
+
}
|
|
16
|
+
const { moduleName, outputDir } = parsedDetails;
|
|
10
17
|
const externalResolverImportSyntax = ctx.config.externalResolvers[normalizedResolverName];
|
|
11
18
|
if (externalResolverImportSyntax) {
|
|
12
19
|
// If has external resolver, use it
|
|
13
20
|
(0, addExternalResolverImport_1.addExternalResolverImport)({
|
|
21
|
+
moduleName,
|
|
14
22
|
normalizedResolverName,
|
|
15
23
|
configImportSyntax: externalResolverImportSyntax,
|
|
16
24
|
}, ctx);
|
|
17
25
|
return;
|
|
18
26
|
}
|
|
19
|
-
// Check to see if need to generate resolver files
|
|
20
|
-
const outputDir = parseLocationForOutputDir(belongsToRootObject ? [belongsToRootObject] : [], ctx, location);
|
|
21
|
-
if (!outputDir) {
|
|
22
|
-
return;
|
|
23
|
-
}
|
|
24
27
|
// Generate resolver files based on its type
|
|
25
|
-
const visitorHandlerParams = validateAndPrepareForGraphQLTypeHandler({
|
|
28
|
+
const visitorHandlerParams = validateAndPrepareForGraphQLTypeHandler({
|
|
29
|
+
resolverName,
|
|
30
|
+
normalizedResolverName,
|
|
31
|
+
outputDir,
|
|
32
|
+
belongsToRootObject,
|
|
33
|
+
moduleName,
|
|
34
|
+
}, ctx);
|
|
26
35
|
if (visitorHandlerParams.belongsToRootObject) {
|
|
27
36
|
visitor['RootObjectTypeField'](visitorHandlerParams, ctx);
|
|
28
37
|
}
|
|
@@ -46,9 +55,13 @@ exports.visitNamedType = visitNamedType;
|
|
|
46
55
|
const parseLocationForOutputDir = (nestedDirs, { config: { mode, sourceMap, whitelistedModules, blacklistedModules, baseOutputDir, resolverRelativeTargetDir, }, }, location) => {
|
|
47
56
|
// If mode is "merged", there's only one module:
|
|
48
57
|
// - always generate a.k.a it's always whitelisted
|
|
49
|
-
// - put them together at
|
|
58
|
+
// - put them together at designated relativeTargetDir
|
|
59
|
+
// - moduleName='' i.e. no module
|
|
50
60
|
if (mode === 'merged') {
|
|
51
|
-
return
|
|
61
|
+
return {
|
|
62
|
+
outputDir: path.posix.join(baseOutputDir, resolverRelativeTargetDir, ...nestedDirs),
|
|
63
|
+
moduleName: '',
|
|
64
|
+
};
|
|
52
65
|
}
|
|
53
66
|
// 2. mode is "modules", each module is the folder containing the schema files
|
|
54
67
|
// This means one or multiple schema files can add up to one module
|
|
@@ -59,11 +72,14 @@ const parseLocationForOutputDir = (nestedDirs, { config: { mode, sourceMap, whit
|
|
|
59
72
|
blacklistedModules,
|
|
60
73
|
});
|
|
61
74
|
return parsedSource
|
|
62
|
-
?
|
|
75
|
+
? {
|
|
76
|
+
outputDir: path.posix.join(baseOutputDir, parsedSource.moduleName, resolverRelativeTargetDir, ...nestedDirs),
|
|
77
|
+
moduleName: parsedSource.moduleName,
|
|
78
|
+
}
|
|
63
79
|
: undefined;
|
|
64
80
|
};
|
|
65
|
-
const validateAndPrepareForGraphQLTypeHandler = ({ resolverName, normalizedResolverName, outputDir, belongsToRootObject, }, { config, result }) => {
|
|
66
|
-
const fieldFilePath = path.join(outputDir, `${resolverName}.ts`);
|
|
81
|
+
const validateAndPrepareForGraphQLTypeHandler = ({ resolverName, normalizedResolverName, outputDir, belongsToRootObject, moduleName, }, { config, result }) => {
|
|
82
|
+
const fieldFilePath = path.posix.join(outputDir, `${resolverName}.ts`);
|
|
67
83
|
if (result.files[fieldFilePath]) {
|
|
68
84
|
throw new Error(`Unexpected duplication in field filename. Type: ${resolverName}, file: ${fieldFilePath}`);
|
|
69
85
|
}
|
|
@@ -86,6 +102,7 @@ const validateAndPrepareForGraphQLTypeHandler = ({ resolverName, normalizedResol
|
|
|
86
102
|
belongsToRootObject,
|
|
87
103
|
normalizedResolverName,
|
|
88
104
|
resolversTypeMeta,
|
|
105
|
+
moduleName,
|
|
89
106
|
};
|
|
90
107
|
};
|
|
91
108
|
/**
|
|
@@ -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,
|
|
1
|
+
{"version":3,"file":"visitNamedType.js","sourceRoot":"","sources":["../../../../../packages/typescript-resolver-files/src/generateResolverFiles/visitNamedType.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generateTypeDefsContent.js","sourceRoot":"","sources":["../../../../../packages/typescript-resolver-files/src/generateTypeDefsFiles/generateTypeDefsContent.ts"],"names":[],"mappings":";;;AAAA,qCAAgC;AAMzB,MAAM,uBAAuB,GAAG,CAAC,EACtC,SAAS,GACqB,EAAU,EAAE;IAC1C,MAAM,YAAY,GAAG,IAAA,eAAK,EAAC,SAAS,CAAC,CAAC;IACtC,MAAM,kBAAkB,GAAG,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;IAExD,OAAO;4BACmB,kBAAkB,6BAA6B,CAAC;AAC5E,CAAC,CAAC;AARW,QAAA,uBAAuB,2BAQlC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { StandardFile } from '../generateResolverFiles';
|
|
2
|
+
import type { ParseSourcesResult } from '../parseSources';
|
|
3
|
+
import { TypeDefsFileMode } from '../validatePresetConfig';
|
|
4
|
+
interface GenerateTypeDefsFilesParams {
|
|
5
|
+
baseOutputDir: string;
|
|
6
|
+
typeDefsFilePath: string;
|
|
7
|
+
typeDefsFileMode: TypeDefsFileMode;
|
|
8
|
+
sourceMap: ParseSourcesResult['sourceMap'];
|
|
9
|
+
whitelistedModules: string[];
|
|
10
|
+
blacklistedModules: string[];
|
|
11
|
+
}
|
|
12
|
+
export declare const generateTypeDefsFiles: ({ baseOutputDir, typeDefsFilePath, typeDefsFileMode, sourceMap, blacklistedModules, whitelistedModules, }: GenerateTypeDefsFilesParams) => Record<string, StandardFile>;
|
|
13
|
+
export {};
|