@eddeee888/gcg-typescript-resolver-files 0.10.4 → 0.12.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 +34 -0
- package/package.json +8 -8
- package/src/addVirtualTypesFileToTsMorphProject/addVirtualTypesFileToTsMorphProject.js +7 -6
- package/src/addVirtualTypesFileToTsMorphProject/addVirtualTypesFileToTsMorphProject.js.map +1 -1
- package/src/generateResolverFiles/addObjectTypeResolversPropertyAssignmentNodesIfNotImplemented.d.ts +17 -0
- package/src/generateResolverFiles/addObjectTypeResolversPropertyAssignmentNodesIfNotImplemented.js +58 -0
- package/src/generateResolverFiles/addObjectTypeResolversPropertyAssignmentNodesIfNotImplemented.js.map +1 -0
- package/src/generateResolverFiles/addResolverMainFiles.js +6 -0
- package/src/generateResolverFiles/addResolverMainFiles.js.map +1 -1
- package/src/generateResolverFiles/ensureEnumTypeResolversAreGenerated.js +1 -0
- package/src/generateResolverFiles/ensureEnumTypeResolversAreGenerated.js.map +1 -1
- package/src/generateResolverFiles/generateResolverFiles.js +1 -1
- package/src/generateResolverFiles/generateResolverFiles.js.map +1 -1
- package/src/generateResolverFiles/getVariableStatementWithExpectedIdentifier.d.ts +0 -1
- package/src/generateResolverFiles/getVariableStatementWithExpectedIdentifier.js +0 -20
- package/src/generateResolverFiles/getVariableStatementWithExpectedIdentifier.js.map +1 -1
- package/src/generateResolverFiles/handleGraphQLEnumType.js +6 -2
- package/src/generateResolverFiles/handleGraphQLEnumType.js.map +1 -1
- package/src/generateResolverFiles/handleGraphQLInterfaceType.js +4 -0
- package/src/generateResolverFiles/handleGraphQLInterfaceType.js.map +1 -1
- package/src/generateResolverFiles/handleGraphQLObjectType.d.ts +0 -1
- package/src/generateResolverFiles/handleGraphQLObjectType.js +34 -11
- package/src/generateResolverFiles/handleGraphQLObjectType.js.map +1 -1
- package/src/generateResolverFiles/handleGraphQLRootObjectTypeField.js +4 -0
- package/src/generateResolverFiles/handleGraphQLRootObjectTypeField.js.map +1 -1
- package/src/generateResolverFiles/handleGraphQLScalarType.js +4 -0
- package/src/generateResolverFiles/handleGraphQLScalarType.js.map +1 -1
- package/src/generateResolverFiles/handleGraphQLUnionType.js +4 -0
- package/src/generateResolverFiles/handleGraphQLUnionType.js.map +1 -1
- package/src/generateResolverFiles/postProcessFiles.js +111 -24
- package/src/generateResolverFiles/postProcessFiles.js.map +1 -1
- package/src/generateResolverFiles/types.d.ts +6 -0
- package/src/generateResolverFiles/visitNamedType.js +1 -0
- package/src/generateResolverFiles/visitNamedType.js.map +1 -1
- package/src/generateTypeDefsFiles/generateTypeDefsFiles.js +6 -0
- package/src/generateTypeDefsFiles/generateTypeDefsFiles.js.map +1 -1
- package/src/getGraphQLObjectTypeResolversToGenerate/getGraphQLObjectTypeResolversToGenerate.d.ts +3 -1
- package/src/getGraphQLObjectTypeResolversToGenerate/getGraphQLObjectTypeResolversToGenerate.js +136 -41
- package/src/getGraphQLObjectTypeResolversToGenerate/getGraphQLObjectTypeResolversToGenerate.js.map +1 -1
- package/src/{utils → getGraphQLObjectTypeResolversToGenerate}/getNodePropertyMap.d.ts +6 -3
- package/src/{utils → getGraphQLObjectTypeResolversToGenerate}/getNodePropertyMap.js +14 -5
- package/src/getGraphQLObjectTypeResolversToGenerate/getNodePropertyMap.js.map +1 -0
- package/src/parseGraphQLSchema/parseGraphQLSchema.d.ts +1 -3
- package/src/parseGraphQLSchema/parseGraphQLSchema.js +3 -10
- package/src/parseGraphQLSchema/parseGraphQLSchema.js.map +1 -1
- package/src/parseSources/parseSources.d.ts +6 -1
- package/src/parseSources/parseSources.js +15 -3
- package/src/parseSources/parseSources.js.map +1 -1
- package/src/parseTypeMappers/collectTypeMappersFromSourceFile.d.ts +2 -4
- package/src/parseTypeMappers/collectTypeMappersFromSourceFile.js +11 -39
- package/src/parseTypeMappers/collectTypeMappersFromSourceFile.js.map +1 -1
- package/src/parseTypeMappers/parseTypeMappers.d.ts +8 -6
- package/src/parseTypeMappers/parseTypeMappers.js +2 -4
- package/src/parseTypeMappers/parseTypeMappers.js.map +1 -1
- package/src/preset.js +44 -23
- package/src/preset.js.map +1 -1
- package/src/utils/index.d.ts +0 -1
- package/src/utils/index.js +0 -1
- package/src/utils/index.js.map +1 -1
- package/src/validatePresetConfig/validatePresetConfig.d.ts +6 -1
- package/src/validatePresetConfig/validatePresetConfig.js +28 -4
- package/src/validatePresetConfig/validatePresetConfig.js.map +1 -1
- package/src/generateResolverFiles/ensureObjectTypeResolversAreGenerated.d.ts +0 -6
- package/src/generateResolverFiles/ensureObjectTypeResolversAreGenerated.js +0 -80
- package/src/generateResolverFiles/ensureObjectTypeResolversAreGenerated.js.map +0 -1
- package/src/utils/getNodePropertyMap.js.map +0 -1
|
@@ -5,7 +5,7 @@ const tslib_1 = require("tslib");
|
|
|
5
5
|
const path = tslib_1.__importStar(require("path"));
|
|
6
6
|
const utils_1 = require("../utils");
|
|
7
7
|
const getVariableStatementWithExpectedIdentifier_1 = require("./getVariableStatementWithExpectedIdentifier");
|
|
8
|
-
const
|
|
8
|
+
const addObjectTypeResolversPropertyAssignmentNodesIfNotImplemented_1 = require("./addObjectTypeResolversPropertyAssignmentNodesIfNotImplemented");
|
|
9
9
|
const ensureEnumTypeResolversAreGenerated_1 = require("./ensureEnumTypeResolversAreGenerated");
|
|
10
10
|
const getImportStatementWithExpectedNamedImport_1 = require("./getImportStatementWithExpectedNamedImport");
|
|
11
11
|
/**
|
|
@@ -16,12 +16,17 @@ const getImportStatementWithExpectedNamedImport_1 = require("./getImportStatemen
|
|
|
16
16
|
*/
|
|
17
17
|
const postProcessFiles = ({ config: { tsMorph: { project }, fixObjectTypeResolvers, }, result, }) => {
|
|
18
18
|
const sourceFilesToProcess = [];
|
|
19
|
+
// 1. Load resolver files into ts-morph project so we can run static analysis
|
|
19
20
|
Object.entries(result.files).forEach(([filePath, file]) => {
|
|
20
21
|
if (file.__filetype === 'file') {
|
|
21
22
|
return;
|
|
22
23
|
}
|
|
23
24
|
const existingSourceFile = project.addSourceFileAtPathIfExists(filePath);
|
|
24
25
|
if (existingSourceFile) {
|
|
26
|
+
file.filesystem = {
|
|
27
|
+
type: 'filesystem',
|
|
28
|
+
contentUpdated: false,
|
|
29
|
+
};
|
|
25
30
|
sourceFilesToProcess.push({
|
|
26
31
|
sourceFile: existingSourceFile,
|
|
27
32
|
resolverFile: file,
|
|
@@ -37,17 +42,12 @@ const postProcessFiles = ({ config: { tsMorph: { project }, fixObjectTypeResolve
|
|
|
37
42
|
});
|
|
38
43
|
}
|
|
39
44
|
});
|
|
45
|
+
// `addedPropertyAssignmentNodes` is used to store added property assignments in object types
|
|
46
|
+
// these property assigments are to be removed if there's no TypeScript error
|
|
47
|
+
const addedPropertyAssignmentNodes = {};
|
|
40
48
|
sourceFilesToProcess.forEach(({ sourceFile, resolverFile }) => {
|
|
41
49
|
const normalizedRelativePath = path.posix.relative((0, utils_1.cwd)(), sourceFile.getFilePath());
|
|
42
|
-
const { addedVariableStatement
|
|
43
|
-
// For non-scalarResolver, ensure correct type is imported
|
|
44
|
-
// For scalarResolver, we don't need to add type to the variable statement for a few reasons:
|
|
45
|
-
// - For cases when we need to create a new GraphQLScalarType, it infer the type from `new GraphQLScalarType`
|
|
46
|
-
// - For cases when there's custom user logic, it's up to the user to import the correct type or call `new GraphQLScalarType` by themselves
|
|
47
|
-
if (resolverFile.__filetype !== 'scalarResolver' &&
|
|
48
|
-
ensureCorrectResolverType) {
|
|
49
|
-
ensureCorrectResolverType();
|
|
50
|
-
}
|
|
50
|
+
const { addedVariableStatement } = ensureExportedResolver(sourceFile, resolverFile);
|
|
51
51
|
if (resolverFile.__filetype !== 'scalarResolver' ||
|
|
52
52
|
// For scalarResolver, only add `import { GraphQLScalarType } ...` if variable statement was added.
|
|
53
53
|
// This is because user could have used custom scalar. If so, we don't want to add unnecessary import
|
|
@@ -56,7 +56,11 @@ const postProcessFiles = ({ config: { tsMorph: { project }, fixObjectTypeResolve
|
|
|
56
56
|
}
|
|
57
57
|
if (fixObjectTypeResolvers.object === 'smart' &&
|
|
58
58
|
resolverFile.__filetype === 'objectType') {
|
|
59
|
-
(0,
|
|
59
|
+
(0, addObjectTypeResolversPropertyAssignmentNodesIfNotImplemented_1.addObjectTypeResolversPropertyAssignmentNodesIfNotImplemented)({
|
|
60
|
+
addedPropertyAssignmentNodes,
|
|
61
|
+
sourceFile,
|
|
62
|
+
resolverFile,
|
|
63
|
+
});
|
|
60
64
|
}
|
|
61
65
|
if (fixObjectTypeResolvers.enum === 'smart' &&
|
|
62
66
|
resolverFile.__filetype === 'enumResolver') {
|
|
@@ -65,20 +69,107 @@ const postProcessFiles = ({ config: { tsMorph: { project }, fixObjectTypeResolve
|
|
|
65
69
|
// Overwrite existing files with fixes
|
|
66
70
|
result.files[normalizedRelativePath] = Object.assign(Object.assign({}, resolverFile), { content: sourceFile.getText() });
|
|
67
71
|
});
|
|
72
|
+
// 3. ensure object type's added property assignments are removed if there's no related TypeScript error
|
|
73
|
+
// We do this only once at the project level instead of sourceFile level to speed up the process
|
|
74
|
+
if (fixObjectTypeResolvers.object === 'smart') {
|
|
75
|
+
project.getPreEmitDiagnostics().forEach((d) => {
|
|
76
|
+
var _a;
|
|
77
|
+
const filename = (_a = d.getSourceFile()) === null || _a === void 0 ? void 0 : _a.getFilePath().toString();
|
|
78
|
+
if (!filename || !addedPropertyAssignmentNodes[filename]) {
|
|
79
|
+
return;
|
|
80
|
+
}
|
|
81
|
+
const lineNumberWithError = d.getLineNumber();
|
|
82
|
+
// If erroring on a recently added line, do not remove as user needs to implement it
|
|
83
|
+
if (lineNumberWithError &&
|
|
84
|
+
addedPropertyAssignmentNodes[filename][lineNumberWithError]) {
|
|
85
|
+
addedPropertyAssignmentNodes[filename][lineNumberWithError].__toBeRemoved = false;
|
|
86
|
+
}
|
|
87
|
+
});
|
|
88
|
+
Object.values(addedPropertyAssignmentNodes).forEach((addedNodes) => {
|
|
89
|
+
Object.values(addedNodes).forEach(({ node, resolverFile, __toBeRemoved }) => {
|
|
90
|
+
if (__toBeRemoved) {
|
|
91
|
+
node.remove();
|
|
92
|
+
}
|
|
93
|
+
else {
|
|
94
|
+
// If found a property assignment that cannot be removed i.e. incompatible types between mapper vs schema types
|
|
95
|
+
// Then we must mark the content as updated to be added to generate list
|
|
96
|
+
resolverFile.filesystem.contentUpdated = true;
|
|
97
|
+
}
|
|
98
|
+
});
|
|
99
|
+
});
|
|
100
|
+
}
|
|
101
|
+
// 4. Apply to result files the updated content done in step 2. and 3. above
|
|
102
|
+
sourceFilesToProcess.forEach(({ sourceFile, resolverFile }) => {
|
|
103
|
+
const normalizedRelativePath = path.posix.relative((0, utils_1.cwd)(), sourceFile.getFilePath());
|
|
104
|
+
// Overwrite existing files with fixes
|
|
105
|
+
result.files[normalizedRelativePath] = Object.assign(Object.assign({}, resolverFile), { content: sourceFile.getText() });
|
|
106
|
+
});
|
|
68
107
|
};
|
|
69
108
|
exports.postProcessFiles = postProcessFiles;
|
|
70
109
|
/**
|
|
71
110
|
* Ensure correctly named resolvers are exported
|
|
72
111
|
*/
|
|
73
112
|
const ensureExportedResolver = (sourceFile, resolverFile) => {
|
|
74
|
-
|
|
113
|
+
var _a;
|
|
114
|
+
const { variableStatement, isExported } = (0, getVariableStatementWithExpectedIdentifier_1.getVariableStatementWithExpectedIdentifier)(sourceFile, resolverFile);
|
|
115
|
+
/**
|
|
116
|
+
* If we found the variable statement replace its type with the expected resolver type string
|
|
117
|
+
*
|
|
118
|
+
* This is because we change the type of the resolver in some cases:
|
|
119
|
+
* 1. When `extend type <Object>` is used, we might change its original type to the picked version
|
|
120
|
+
* e.g. `Book` might become `Pick<Book, 'title' | 'author'>`
|
|
121
|
+
*/
|
|
122
|
+
let ensureCorrectResolverType = undefined;
|
|
123
|
+
if (variableStatement && ((_a = resolverFile.meta.resolverType) === null || _a === void 0 ? void 0 : _a.final)) {
|
|
124
|
+
const variableDeclaration = variableStatement
|
|
125
|
+
.getDeclarationList()
|
|
126
|
+
.getDeclarations()[0];
|
|
127
|
+
const typeNode = variableDeclaration === null || variableDeclaration === void 0 ? void 0 : variableDeclaration.getTypeNode();
|
|
128
|
+
ensureCorrectResolverType = typeNode
|
|
129
|
+
? () => {
|
|
130
|
+
const trimTypeString = (value) => value.replace(/[\n\r\s]/g, '');
|
|
131
|
+
const trimmedOriginalTypeString = trimTypeString(typeNode.getText());
|
|
132
|
+
typeNode.replaceWithText(resolverFile.meta.resolverType.final);
|
|
133
|
+
// If the formatted type is the semantically the same but formatted differently from `resolverType.final`
|
|
134
|
+
// e.g.
|
|
135
|
+
// ```
|
|
136
|
+
// Pick<
|
|
137
|
+
// BookResolvers,
|
|
138
|
+
// | 'title'
|
|
139
|
+
// | 'author'
|
|
140
|
+
// >`
|
|
141
|
+
// vs
|
|
142
|
+
// `Pick<Book, 'author' | 'title'>`
|
|
143
|
+
// ```
|
|
144
|
+
const newTypeStringVariants = 'otherVariants' in resolverFile.meta.resolverType
|
|
145
|
+
? [
|
|
146
|
+
resolverFile.meta.resolverType.final,
|
|
147
|
+
...resolverFile.meta.resolverType.otherVariants,
|
|
148
|
+
]
|
|
149
|
+
: [resolverFile.meta.resolverType.final];
|
|
150
|
+
const trimmedNewTypeStringVariants = newTypeStringVariants.map(trimTypeString);
|
|
151
|
+
if (!trimmedNewTypeStringVariants.find((newText) => newText === trimmedOriginalTypeString)) {
|
|
152
|
+
resolverFile.filesystem.contentUpdated = true;
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
: () => {
|
|
156
|
+
variableDeclaration.setType(resolverFile.meta.resolverType.final);
|
|
157
|
+
resolverFile.filesystem.contentUpdated = true;
|
|
158
|
+
};
|
|
159
|
+
}
|
|
160
|
+
// For non-scalarResolver, ensure correct type is imported
|
|
161
|
+
// For scalarResolver, we don't need to add type to the variable statement for a few reasons:
|
|
162
|
+
// - For cases when we need to create a new GraphQLScalarType, it infer the type from `new GraphQLScalarType`
|
|
163
|
+
// - For cases when there's custom user logic, it's up to the user to import the correct type or call `new GraphQLScalarType` by themselves
|
|
164
|
+
if (resolverFile.__filetype !== 'scalarResolver' &&
|
|
165
|
+
ensureCorrectResolverType) {
|
|
166
|
+
ensureCorrectResolverType();
|
|
167
|
+
}
|
|
75
168
|
if (!variableStatement) {
|
|
76
169
|
// Did not find variable statement with expected identifier, add it to the end with a warning
|
|
77
170
|
sourceFile.addStatements(resolverFile.meta.variableStatement);
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
ensureCorrectResolverType,
|
|
81
|
-
};
|
|
171
|
+
resolverFile.filesystem.contentUpdated = true;
|
|
172
|
+
return { addedVariableStatement: true };
|
|
82
173
|
}
|
|
83
174
|
else if (variableStatement && !isExported) {
|
|
84
175
|
// If has identifier but not exported
|
|
@@ -88,17 +179,12 @@ const ensureExportedResolver = (sourceFile, resolverFile) => {
|
|
|
88
179
|
.get(resolverFile.mainImportIdentifier));
|
|
89
180
|
if (!isExpectedIdentifierExported) {
|
|
90
181
|
variableStatement.setIsExported(true);
|
|
182
|
+
resolverFile.filesystem.contentUpdated = true;
|
|
91
183
|
}
|
|
92
184
|
// else, if identifier's been exported do nothing
|
|
93
|
-
return {
|
|
94
|
-
addedVariableStatement: false,
|
|
95
|
-
ensureCorrectResolverType,
|
|
96
|
-
};
|
|
185
|
+
return { addedVariableStatement: false };
|
|
97
186
|
}
|
|
98
|
-
return {
|
|
99
|
-
addedVariableStatement: false,
|
|
100
|
-
ensureCorrectResolverType,
|
|
101
|
-
};
|
|
187
|
+
return { addedVariableStatement: false };
|
|
102
188
|
};
|
|
103
189
|
/**
|
|
104
190
|
* Ensure correctly imported resolves type generated by typescript-resolvers plugin
|
|
@@ -107,6 +193,7 @@ const ensureImportedType = (sourceFile, resolverFile) => {
|
|
|
107
193
|
const { importDeclaration } = (0, getImportStatementWithExpectedNamedImport_1.getImportStatementWithExpectedNamedImport)(sourceFile, resolverFile);
|
|
108
194
|
if (!importDeclaration) {
|
|
109
195
|
sourceFile.insertStatements(0, resolverFile.meta.resolverTypeImportDeclaration);
|
|
196
|
+
resolverFile.filesystem.contentUpdated = true;
|
|
110
197
|
}
|
|
111
198
|
};
|
|
112
199
|
//# sourceMappingURL=postProcessFiles.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"postProcessFiles.js","sourceRoot":"","sources":["../../../../../packages/typescript-resolver-files/src/generateResolverFiles/postProcessFiles.ts"],"names":[],"mappings":";;;;AACA,mDAA6B;AAC7B,oCAA+B;AAE/B,6GAA0G;AAC1G,
|
|
1
|
+
{"version":3,"file":"postProcessFiles.js","sourceRoot":"","sources":["../../../../../packages/typescript-resolver-files/src/generateResolverFiles/postProcessFiles.ts"],"names":[],"mappings":"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"}
|
|
@@ -11,6 +11,10 @@ export type GeneratedTypesFileMeta = {
|
|
|
11
11
|
};
|
|
12
12
|
interface BaseVirtualFile {
|
|
13
13
|
__filetype: string;
|
|
14
|
+
filesystem: {
|
|
15
|
+
type: 'virtual' | 'filesystem';
|
|
16
|
+
contentUpdated: boolean;
|
|
17
|
+
};
|
|
14
18
|
content: string;
|
|
15
19
|
mainImportIdentifier: string;
|
|
16
20
|
}
|
|
@@ -100,6 +104,7 @@ export interface ObjectTypeFile extends BaseVirtualFile {
|
|
|
100
104
|
resolverType: {
|
|
101
105
|
baseImport: string;
|
|
102
106
|
final: string;
|
|
107
|
+
otherVariants: string[];
|
|
103
108
|
};
|
|
104
109
|
normalizedResolverName: NormalizedResolverName;
|
|
105
110
|
resolversToGenerate?: GraphQLObjectTypeResolversToGenerate[number];
|
|
@@ -153,6 +158,7 @@ export interface GraphQLTypeHandlerParams<BelongsToRootObject = null> {
|
|
|
153
158
|
moduleType: ImportLineMeta['moduleType'];
|
|
154
159
|
typeString: string;
|
|
155
160
|
};
|
|
161
|
+
generatedTypesFileMeta: GeneratedTypesFileMeta;
|
|
156
162
|
}
|
|
157
163
|
export type GraphQLTypeHandler<BelongsToRootObject = null, ExtraParams = Record<string, unknown>> = (params: GraphQLTypeHandlerParams<BelongsToRootObject> & ExtraParams, ctx: GenerateResolverFilesContext) => void;
|
|
158
164
|
export {};
|
|
@@ -30,6 +30,7 @@ const visitNamedType = ({ moduleName, relativePathFromBaseToModule, normalizedRe
|
|
|
30
30
|
typeNamedImport: typeNamedImport(ctx.config.generatedTypesFileMeta),
|
|
31
31
|
typeString: typeString(ctx.config.generatedTypesFileMeta),
|
|
32
32
|
},
|
|
33
|
+
generatedTypesFileMeta: ctx.config.generatedTypesFileMeta,
|
|
33
34
|
}, ctx);
|
|
34
35
|
};
|
|
35
36
|
exports.visitNamedType = visitNamedType;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"visitNamedType.js","sourceRoot":"","sources":["../../../../../packages/typescript-resolver-files/src/generateResolverFiles/visitNamedType.ts"],"names":[],"mappings":";;;AACA,2EAAwE;AAGjE,MAAM,cAAc,GAAG,CAC5B,EACE,UAAU,EACV,4BAA4B,EAC5B,sBAAsB,EACtB,YAAY,EACZ,+BAA+B,EAC/B,eAAe,EACf,UAAU,EACV,mBAAmB,EACnB,OAAO,GAIR,EACD,GAAiC,EAC3B,EAAE;IACR,MAAM,8BAA8B,GAClC,GAAG,CAAC,MAAM,CAAC,kBAAkB,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC;IAC7D,IAAI,8BAA8B,EAAE,CAAC;QACnC,IAAA,qDAAyB,EACvB;YACE,UAAU;YACV,4BAA4B;YAC5B,sBAAsB,EAAE,sBAAsB,CAAC,IAAI;YACnD,kBAAkB,EAAE,8BAA8B;SACnD,EACD,GAAG,CACJ,CAAC;QAEF,OAAO;IACT,CAAC;IAED,IAAI,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC;QACxC,MAAM,IAAI,KAAK,CACb,mDAAmD,YAAY,CAAC,IAAI,WAAW,YAAY,CAAC,IAAI,EAAE,CACnG,CAAC;IACJ,CAAC;IAED,OAAO,CACL;QACE,mBAAmB;QACnB,aAAa,EAAE,YAAY,CAAC,IAAI;QAChC,yBAAyB,EAAE,YAAY,CAAC,cAAc;QACtD,UAAU;QACV,sBAAsB;QACtB,4BAA4B;QAC5B,YAAY,EAAE,YAAY,CAAC,IAAI;QAC/B,iBAAiB,EAAE;YACjB,MAAM,EAAE,+BAA+B;YACvC,UAAU,EAAE,MAAM;YAClB,eAAe,EAAE,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC,sBAAsB,CAAC;YACnE,UAAU,EAAE,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,sBAAsB,CAAC;SAC1D;
|
|
1
|
+
{"version":3,"file":"visitNamedType.js","sourceRoot":"","sources":["../../../../../packages/typescript-resolver-files/src/generateResolverFiles/visitNamedType.ts"],"names":[],"mappings":";;;AACA,2EAAwE;AAGjE,MAAM,cAAc,GAAG,CAC5B,EACE,UAAU,EACV,4BAA4B,EAC5B,sBAAsB,EACtB,YAAY,EACZ,+BAA+B,EAC/B,eAAe,EACf,UAAU,EACV,mBAAmB,EACnB,OAAO,GAIR,EACD,GAAiC,EAC3B,EAAE;IACR,MAAM,8BAA8B,GAClC,GAAG,CAAC,MAAM,CAAC,kBAAkB,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC;IAC7D,IAAI,8BAA8B,EAAE,CAAC;QACnC,IAAA,qDAAyB,EACvB;YACE,UAAU;YACV,4BAA4B;YAC5B,sBAAsB,EAAE,sBAAsB,CAAC,IAAI;YACnD,kBAAkB,EAAE,8BAA8B;SACnD,EACD,GAAG,CACJ,CAAC;QAEF,OAAO;IACT,CAAC;IAED,IAAI,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC;QACxC,MAAM,IAAI,KAAK,CACb,mDAAmD,YAAY,CAAC,IAAI,WAAW,YAAY,CAAC,IAAI,EAAE,CACnG,CAAC;IACJ,CAAC;IAED,OAAO,CACL;QACE,mBAAmB;QACnB,aAAa,EAAE,YAAY,CAAC,IAAI;QAChC,yBAAyB,EAAE,YAAY,CAAC,cAAc;QACtD,UAAU;QACV,sBAAsB;QACtB,4BAA4B;QAC5B,YAAY,EAAE,YAAY,CAAC,IAAI;QAC/B,iBAAiB,EAAE;YACjB,MAAM,EAAE,+BAA+B;YACvC,UAAU,EAAE,MAAM;YAClB,eAAe,EAAE,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC,sBAAsB,CAAC;YACnE,UAAU,EAAE,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,sBAAsB,CAAC;SAC1D;QACD,sBAAsB,EAAE,GAAG,CAAC,MAAM,CAAC,sBAAsB;KAC1D,EACD,GAAG,CACJ,CAAC;AACJ,CAAC,CAAC;AA1DW,QAAA,cAAc,kBA0DzB"}
|
|
@@ -46,6 +46,12 @@ const generateTypeDefsFiles = ({ baseOutputDir, typeDefsFilePath, typeDefsFileMo
|
|
|
46
46
|
Object.entries(filesContent).forEach(([filePath, content]) => {
|
|
47
47
|
result[filePath] = {
|
|
48
48
|
__filetype: 'file',
|
|
49
|
+
// TODO: this is virtual so it will always re-generate
|
|
50
|
+
// In the future, if no schema file changes, then we don't need to re-generate this file
|
|
51
|
+
filesystem: {
|
|
52
|
+
type: 'virtual',
|
|
53
|
+
contentUpdated: false,
|
|
54
|
+
},
|
|
49
55
|
content: (0, generateTypeDefsContent_1.generateTypeDefsContent)({ mergedSDL: content }),
|
|
50
56
|
mainImportIdentifier: 'typeDefs',
|
|
51
57
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generateTypeDefsFiles.js","sourceRoot":"","sources":["../../../../../packages/typescript-resolver-files/src/generateTypeDefsFiles/generateTypeDefsFiles.ts"],"names":[],"mappings":";;;;AAAA,mDAA6B;AAG7B,oCAAoD;AAEpD,uEAAoE;AAW7D,MAAM,qBAAqB,GAAG,CAAC,EACpC,aAAa,EACb,gBAAgB,EAChB,gBAAgB,EAChB,SAAS,EACT,kBAAkB,EAClB,kBAAkB,GACU,EAAgC,EAAE;IAC9D,MAAM,YAAY,GAA2B,EAAE,CAAC;IAChD,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,EAAE,EAAE;QACtE,MAAM,aAAa,GAAG,IAAA,2BAAmB,EAAC;YACxC,UAAU;YACV,kBAAkB;YAClB,kBAAkB;SACnB,CAAC,CAAC;QAEH,IAAI,gBAAgB,KAAK,QAAQ,EAAE,CAAC;YAClC,eAAe,CAAC;gBACd,YAAY;gBACZ,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,EAAE,gBAAgB,CAAC;gBAC1D,MAAM,EAAE,MAAM,CAAC,MAAM;aACtB,CAAC,CAAC;YACH,OAAO;QACT,CAAC;QAED,IAAI,aAAa,IAAI,gBAAgB,KAAK,mBAAmB,EAAE,CAAC;YAC9D,eAAe,CAAC;gBACd,YAAY;gBACZ,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,EAAE,gBAAgB,CAAC;gBAC1D,MAAM,EAAE,MAAM,CAAC,MAAM;aACtB,CAAC,CAAC;YACH,OAAO;QACT,CAAC;QAED,IAAI,aAAa,IAAI,gBAAgB,KAAK,SAAS,EAAE,CAAC;YACpD,sFAAsF;YACtF,2CAA2C;YAC3C,mFAAmF;YACnF,MAAM,qBAAqB,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAA,WAAG,GAAE,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC;YACzE,eAAe,CAAC;gBACd,YAAY;gBACZ,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,qBAAqB,EAAE,gBAAgB,CAAC;gBAClE,MAAM,EAAE,MAAM,CAAC,MAAM;aACtB,CAAC,CAAC;YACH,OAAO;QACT,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,MAAM,MAAM,GAAiC,EAAE,CAAC;IAChD,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,EAAE,OAAO,CAAC,EAAE,EAAE;QAC3D,MAAM,CAAC,QAAQ,CAAC,GAAG;YACjB,UAAU,EAAE,MAAM;YAClB,OAAO,EAAE,IAAA,iDAAuB,EAAC,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC;YACxD,oBAAoB,EAAE,UAAU;SACjC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"generateTypeDefsFiles.js","sourceRoot":"","sources":["../../../../../packages/typescript-resolver-files/src/generateTypeDefsFiles/generateTypeDefsFiles.ts"],"names":[],"mappings":";;;;AAAA,mDAA6B;AAG7B,oCAAoD;AAEpD,uEAAoE;AAW7D,MAAM,qBAAqB,GAAG,CAAC,EACpC,aAAa,EACb,gBAAgB,EAChB,gBAAgB,EAChB,SAAS,EACT,kBAAkB,EAClB,kBAAkB,GACU,EAAgC,EAAE;IAC9D,MAAM,YAAY,GAA2B,EAAE,CAAC;IAChD,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,EAAE,EAAE;QACtE,MAAM,aAAa,GAAG,IAAA,2BAAmB,EAAC;YACxC,UAAU;YACV,kBAAkB;YAClB,kBAAkB;SACnB,CAAC,CAAC;QAEH,IAAI,gBAAgB,KAAK,QAAQ,EAAE,CAAC;YAClC,eAAe,CAAC;gBACd,YAAY;gBACZ,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,EAAE,gBAAgB,CAAC;gBAC1D,MAAM,EAAE,MAAM,CAAC,MAAM;aACtB,CAAC,CAAC;YACH,OAAO;QACT,CAAC;QAED,IAAI,aAAa,IAAI,gBAAgB,KAAK,mBAAmB,EAAE,CAAC;YAC9D,eAAe,CAAC;gBACd,YAAY;gBACZ,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,EAAE,gBAAgB,CAAC;gBAC1D,MAAM,EAAE,MAAM,CAAC,MAAM;aACtB,CAAC,CAAC;YACH,OAAO;QACT,CAAC;QAED,IAAI,aAAa,IAAI,gBAAgB,KAAK,SAAS,EAAE,CAAC;YACpD,sFAAsF;YACtF,2CAA2C;YAC3C,mFAAmF;YACnF,MAAM,qBAAqB,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAA,WAAG,GAAE,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC;YACzE,eAAe,CAAC;gBACd,YAAY;gBACZ,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,qBAAqB,EAAE,gBAAgB,CAAC;gBAClE,MAAM,EAAE,MAAM,CAAC,MAAM;aACtB,CAAC,CAAC;YACH,OAAO;QACT,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,MAAM,MAAM,GAAiC,EAAE,CAAC;IAChD,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,EAAE,OAAO,CAAC,EAAE,EAAE;QAC3D,MAAM,CAAC,QAAQ,CAAC,GAAG;YACjB,UAAU,EAAE,MAAM;YAClB,sDAAsD;YACtD,wFAAwF;YACxF,UAAU,EAAE;gBACV,IAAI,EAAE,SAAS;gBACf,cAAc,EAAE,KAAK;aACtB;YACD,OAAO,EAAE,IAAA,iDAAuB,EAAC,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC;YACxD,oBAAoB,EAAE,UAAU;SACjC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AAhEW,QAAA,qBAAqB,yBAgEhC;AAEF,MAAM,eAAe,GAAG,CAAC,EACvB,MAAM,EACN,QAAQ,EACR,YAAY,GAKb,EAAQ,EAAE;IACT,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO;IACT,CAAC;IAED,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC5B,YAAY,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC;IAC9B,CAAC;IACD,YAAY,CAAC,QAAQ,CAAC,IAAI,GAAG,MAAM,IAAI,CAAC;AAC1C,CAAC,CAAC"}
|
package/src/getGraphQLObjectTypeResolversToGenerate/getGraphQLObjectTypeResolversToGenerate.d.ts
CHANGED
|
@@ -1,13 +1,15 @@
|
|
|
1
1
|
import { type SourceFile, type Project } from 'ts-morph';
|
|
2
2
|
import type { TypeMappersMap } from '../parseTypeMappers';
|
|
3
3
|
import type { ParsedGraphQLSchemaMeta } from '../parseGraphQLSchema';
|
|
4
|
+
import type { GeneratedTypesFileMeta } from '../generateResolverFiles';
|
|
4
5
|
export type GraphQLObjectTypeResolversToGenerate = Record<string, Record<string, {
|
|
5
6
|
resolverName: string;
|
|
6
7
|
resolverDeclaration: string;
|
|
7
8
|
}>>;
|
|
8
|
-
export declare const getGraphQLObjectTypeResolversToGenerate: ({ tsMorphProject, typesSourceFile, userDefinedSchemaObjectTypeMap,
|
|
9
|
+
export declare const getGraphQLObjectTypeResolversToGenerate: ({ tsMorphProject, typesSourceFile, typeMappersMap, userDefinedSchemaObjectTypeMap, generatedTypesFileMeta, }: {
|
|
9
10
|
tsMorphProject: Project;
|
|
10
11
|
typesSourceFile: SourceFile;
|
|
11
12
|
typeMappersMap: TypeMappersMap;
|
|
12
13
|
userDefinedSchemaObjectTypeMap: ParsedGraphQLSchemaMeta["userDefinedSchemaTypeMap"]["object"];
|
|
14
|
+
generatedTypesFileMeta: GeneratedTypesFileMeta;
|
|
13
15
|
}) => GraphQLObjectTypeResolversToGenerate;
|
package/src/getGraphQLObjectTypeResolversToGenerate/getGraphQLObjectTypeResolversToGenerate.js
CHANGED
|
@@ -2,19 +2,42 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.getGraphQLObjectTypeResolversToGenerate = void 0;
|
|
4
4
|
const ts_morph_1 = require("ts-morph");
|
|
5
|
-
const
|
|
6
|
-
const getGraphQLObjectTypeResolversToGenerate = ({ tsMorphProject, typesSourceFile, userDefinedSchemaObjectTypeMap,
|
|
5
|
+
const getNodePropertyMap_1 = require("./getNodePropertyMap");
|
|
6
|
+
const getGraphQLObjectTypeResolversToGenerate = ({ tsMorphProject, typesSourceFile, typeMappersMap, userDefinedSchemaObjectTypeMap, generatedTypesFileMeta, }) => {
|
|
7
7
|
const typeMappersEntries = Object.entries(typeMappersMap);
|
|
8
8
|
if (typeMappersEntries.length === 0) {
|
|
9
9
|
return {};
|
|
10
10
|
}
|
|
11
|
+
/**
|
|
12
|
+
* `generatedTypesFileMeta.generatedResolverTypes.userDefined` is `schemaType` -> `generatedResolverTypes`
|
|
13
|
+
* We will be parsing `types.generated.ts` file for the `generatedResolverTypes`
|
|
14
|
+
* So, we need to invert `generatedTypesFileMeta.generatedResolverTypes.userDefined` to get `generatedResolverTypes` -> `schemaType`
|
|
15
|
+
* e.g.
|
|
16
|
+
*
|
|
17
|
+
* generatedTypesFileMeta.generatedResolverTypes.userDefined = {
|
|
18
|
+
* User: {
|
|
19
|
+
* name: 'UserResolvers'
|
|
20
|
+
* }
|
|
21
|
+
* }
|
|
22
|
+
*
|
|
23
|
+
* after transformation:
|
|
24
|
+
*
|
|
25
|
+
* generatedSchemaTypeNameMap = {
|
|
26
|
+
* UserResolvers: 'User'
|
|
27
|
+
* }
|
|
28
|
+
*/
|
|
29
|
+
const generatedSchemaTypeNameMap = Object.entries(generatedTypesFileMeta.generatedResolverTypes.userDefined).reduce((res, [schemaType, generatedSchemaTypeName]) => {
|
|
30
|
+
res[generatedSchemaTypeName.name] = schemaType;
|
|
31
|
+
return res;
|
|
32
|
+
}, {});
|
|
11
33
|
// 1. Get property map of all schema types
|
|
12
|
-
const
|
|
13
|
-
const
|
|
34
|
+
const schemaResolversTypePropertyMap = {};
|
|
35
|
+
const populateSchemaTypeResolversPropertyMap = (node) => {
|
|
14
36
|
const identifier = node.getNameNode();
|
|
15
37
|
const identifierName = identifier.getText();
|
|
16
|
-
|
|
17
|
-
|
|
38
|
+
const schemaType = generatedSchemaTypeNameMap[identifierName];
|
|
39
|
+
if (schemaType && userDefinedSchemaObjectTypeMap[schemaType]) {
|
|
40
|
+
schemaResolversTypePropertyMap[schemaType] = (0, getNodePropertyMap_1.getNodePropertyMap)({
|
|
18
41
|
tsMorphProject,
|
|
19
42
|
node,
|
|
20
43
|
});
|
|
@@ -22,52 +45,124 @@ const getGraphQLObjectTypeResolversToGenerate = ({ tsMorphProject, typesSourceFi
|
|
|
22
45
|
};
|
|
23
46
|
typesSourceFile
|
|
24
47
|
.getDescendantsOfKind(ts_morph_1.SyntaxKind.TypeAliasDeclaration)
|
|
25
|
-
.forEach(
|
|
48
|
+
.forEach(populateSchemaTypeResolversPropertyMap);
|
|
26
49
|
typesSourceFile
|
|
27
50
|
.getDescendantsOfKind(ts_morph_1.SyntaxKind.InterfaceDeclaration)
|
|
28
|
-
.forEach(
|
|
51
|
+
.forEach(populateSchemaTypeResolversPropertyMap);
|
|
29
52
|
// 3. Find resolvers to generate and add reason
|
|
30
53
|
const result = {};
|
|
31
|
-
typeMappersEntries.forEach(([_, { schemaType,
|
|
32
|
-
const matchedSchemaTypePropertyMap =
|
|
33
|
-
if (matchedSchemaTypePropertyMap) {
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
54
|
+
typeMappersEntries.forEach(([_, { schemaType, mapper }]) => {
|
|
55
|
+
const matchedSchemaTypePropertyMap = schemaResolversTypePropertyMap[schemaType];
|
|
56
|
+
if (!matchedSchemaTypePropertyMap) {
|
|
57
|
+
return;
|
|
58
|
+
}
|
|
59
|
+
const originalDeclarationNode = mustGetMapperOriginalDeclarationNode({
|
|
60
|
+
tsMorphProject,
|
|
61
|
+
mapper,
|
|
62
|
+
});
|
|
63
|
+
const typeMapperPropertyMap = (0, getNodePropertyMap_1.getNodePropertyMap)({
|
|
64
|
+
tsMorphProject,
|
|
65
|
+
node: originalDeclarationNode,
|
|
66
|
+
});
|
|
67
|
+
Object.values(matchedSchemaTypePropertyMap).forEach((schemaTypeProperty) => {
|
|
68
|
+
const typeMapperProperty = typeMapperPropertyMap[schemaTypeProperty.name];
|
|
69
|
+
const typeMapperPropertyIdentifier = `${mapper.name}.${schemaTypeProperty.name}`;
|
|
70
|
+
const schemaTypePropertyIdentifier = `${schemaType}.${schemaTypeProperty.name}`;
|
|
71
|
+
// Generated resolvers types may have one or more of these meta resolvers
|
|
72
|
+
// A mapper would most likely never have these resolvers, so we skip them
|
|
73
|
+
// Otherwise, these resolvers will always be generated
|
|
74
|
+
const metaResolvers = {
|
|
75
|
+
__isTypeOf: true,
|
|
76
|
+
__resolveReference: true,
|
|
77
|
+
};
|
|
78
|
+
if (metaResolvers[schemaTypeProperty.name]) {
|
|
79
|
+
return;
|
|
80
|
+
}
|
|
81
|
+
result[schemaType] = result[schemaType] || {};
|
|
82
|
+
// If mapper does not have a field in schema type, add missing resolver
|
|
83
|
+
if (!typeMapperProperty) {
|
|
59
84
|
result[schemaType][schemaTypeProperty.name] = {
|
|
60
85
|
resolverName: schemaTypeProperty.name,
|
|
61
|
-
resolverDeclaration: `({ ${
|
|
86
|
+
resolverDeclaration: `async (_parent, _arg, _ctx) => { /* ${schemaTypePropertyIdentifier} resolver is required because ${schemaTypePropertyIdentifier} exists but ${typeMapperPropertyIdentifier} does not */ }`,
|
|
87
|
+
};
|
|
88
|
+
return;
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* FIXME: TypeScript's `isTypeAssignableTo` should be used to check if the mapper type vs resolver return type is compatible.
|
|
92
|
+
* The current challenge is to:
|
|
93
|
+
* - Switch from using the schema type to resolver return type e.g. `User` -> `UserResolver`
|
|
94
|
+
* - Take the ReturnType of the resolver function type e.g. `Resolver<ResolversTypes['UserRole'], ParentType, ContextType>`
|
|
95
|
+
*
|
|
96
|
+
* For now, the workaround now is to generate all resolvers with matching names,
|
|
97
|
+
* then use TS diagnostics to see if there's error when trying to merge the two keys.
|
|
98
|
+
*
|
|
99
|
+
* Note: this happens only when mappers are used
|
|
100
|
+
*/
|
|
101
|
+
result[schemaType][schemaTypeProperty.name] = {
|
|
102
|
+
resolverName: schemaTypeProperty.name,
|
|
103
|
+
resolverDeclaration: `({ ${schemaTypeProperty.name} }, _arg, _ctx) => {
|
|
62
104
|
/* ${schemaTypePropertyIdentifier} resolver is required because ${schemaTypePropertyIdentifier} and ${typeMapperPropertyIdentifier} are not compatible */
|
|
63
105
|
return ${schemaTypeProperty.name}
|
|
64
106
|
}`,
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
}
|
|
107
|
+
};
|
|
108
|
+
return;
|
|
109
|
+
});
|
|
69
110
|
});
|
|
70
111
|
return result;
|
|
71
112
|
};
|
|
72
113
|
exports.getGraphQLObjectTypeResolversToGenerate = getGraphQLObjectTypeResolversToGenerate;
|
|
114
|
+
const mustGetMapperOriginalDeclarationNode = ({ tsMorphProject, mapper, }) => {
|
|
115
|
+
const typeMapperFile = tsMorphProject.getSourceFile(mapper.filename);
|
|
116
|
+
if (!typeMapperFile) {
|
|
117
|
+
throw new Error(`Unable to find ${typeMapperFile} file after parsing. This shouldn't happen.`);
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Finding `firstDescendantThatIsMapper` here is a bit of the duplicated traversing logic in `collectTypeMappersFromSourceFile`.
|
|
121
|
+
* However, in `collectTypeMappersFromSourceFile`, we find the mappers details.
|
|
122
|
+
* And here, we actually do look for the mapper nodes and run analysis on it.
|
|
123
|
+
*
|
|
124
|
+
* Previously, we were parsing the node property map in `collectTypeMappersFromSourceFile`
|
|
125
|
+
* but for some reason `isAssignableTo` has issue comparing types, so we have to move the static analysis here for now.
|
|
126
|
+
*/
|
|
127
|
+
const firstDescendantThatIsMapper = (() => {
|
|
128
|
+
for (const descendant of typeMapperFile.getDescendants()) {
|
|
129
|
+
const typedNode = descendant.isKind(mapper.kind);
|
|
130
|
+
if (typedNode) {
|
|
131
|
+
let identifierNode = descendant.getNameNode();
|
|
132
|
+
if (descendant.isKind(ts_morph_1.SyntaxKind.ExportSpecifier)) {
|
|
133
|
+
const aliasNode = descendant.getAliasNode();
|
|
134
|
+
if (aliasNode) {
|
|
135
|
+
identifierNode = aliasNode;
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
if ((identifierNode === null || identifierNode === void 0 ? void 0 : identifierNode.getText()) === mapper.name) {
|
|
139
|
+
return {
|
|
140
|
+
declarationNode: descendant,
|
|
141
|
+
identifierNode,
|
|
142
|
+
};
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
return;
|
|
147
|
+
})();
|
|
148
|
+
if (!firstDescendantThatIsMapper) {
|
|
149
|
+
throw new Error(`Unable to find ${mapper.name} node after parsing. This shouldn't happen.`);
|
|
150
|
+
}
|
|
151
|
+
return getOriginalDeclarationNode(firstDescendantThatIsMapper);
|
|
152
|
+
};
|
|
153
|
+
const getOriginalDeclarationNode = ({ declarationNode, identifierNode, }) => {
|
|
154
|
+
if (declarationNode.isKind(ts_morph_1.SyntaxKind.ExportSpecifier) ||
|
|
155
|
+
declarationNode.isKind(ts_morph_1.SyntaxKind.ClassDeclaration)) {
|
|
156
|
+
return identifierNode.getDefinitionNodes()[0];
|
|
157
|
+
}
|
|
158
|
+
// InterfaceDeclaration
|
|
159
|
+
if (declarationNode.isKind(ts_morph_1.SyntaxKind.InterfaceDeclaration)) {
|
|
160
|
+
return declarationNode;
|
|
161
|
+
}
|
|
162
|
+
// TypeAliasDeclaration
|
|
163
|
+
const typeNode = declarationNode.getTypeNodeOrThrow();
|
|
164
|
+
return ts_morph_1.Node.isTypeReference(typeNode)
|
|
165
|
+
? identifierNode.getDefinitionNodes()[0] // If type alias is a reference, go to definition using `getDefinitionNodes`
|
|
166
|
+
: declarationNode;
|
|
167
|
+
};
|
|
73
168
|
//# sourceMappingURL=getGraphQLObjectTypeResolversToGenerate.js.map
|
package/src/getGraphQLObjectTypeResolversToGenerate/getGraphQLObjectTypeResolversToGenerate.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getGraphQLObjectTypeResolversToGenerate.js","sourceRoot":"","sources":["../../../../../packages/typescript-resolver-files/src/getGraphQLObjectTypeResolversToGenerate/getGraphQLObjectTypeResolversToGenerate.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"getGraphQLObjectTypeResolversToGenerate.js","sourceRoot":"","sources":["../../../../../packages/typescript-resolver-files/src/getGraphQLObjectTypeResolversToGenerate/getGraphQLObjectTypeResolversToGenerate.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,9 @@
|
|
|
1
|
-
import { type Project, type Node } from 'ts-morph';
|
|
2
|
-
|
|
1
|
+
import { type Project, type Node, type Type } from 'ts-morph';
|
|
2
|
+
type NodePropertyMapValue = {
|
|
3
|
+
type: Type;
|
|
3
4
|
name: string;
|
|
4
|
-
}
|
|
5
|
+
};
|
|
6
|
+
export type NodePropertyMap = Record<string, NodePropertyMapValue>;
|
|
5
7
|
/**
|
|
6
8
|
* Function to get properties of a Node in a map
|
|
7
9
|
* If unable to find, returns empty object
|
|
@@ -10,3 +12,4 @@ export declare const getNodePropertyMap: ({ node, tsMorphProject, }: {
|
|
|
10
12
|
node: Node | undefined;
|
|
11
13
|
tsMorphProject: Project;
|
|
12
14
|
}) => NodePropertyMap;
|
|
15
|
+
export {};
|
|
@@ -20,11 +20,17 @@ const getNodePropertyMap = ({ node, tsMorphProject, }) => {
|
|
|
20
20
|
return typeChecker
|
|
21
21
|
.getTypeAtLocation(node)
|
|
22
22
|
.getProperties()
|
|
23
|
-
.map((
|
|
23
|
+
.map((prop) => {
|
|
24
|
+
return {
|
|
25
|
+
type: prop.getDeclarations()[0].getType(),
|
|
26
|
+
name: prop.getName(),
|
|
27
|
+
};
|
|
28
|
+
});
|
|
24
29
|
})();
|
|
25
|
-
const nodePropertyMap = properties.reduce((res,
|
|
26
|
-
res[
|
|
27
|
-
|
|
30
|
+
const nodePropertyMap = properties.reduce((res, { type, name }) => {
|
|
31
|
+
res[name] = {
|
|
32
|
+
type,
|
|
33
|
+
name,
|
|
28
34
|
};
|
|
29
35
|
return res;
|
|
30
36
|
}, {});
|
|
@@ -49,7 +55,10 @@ const collectClassNodeProperties = (classNode, result) => {
|
|
|
49
55
|
// getter is skipped
|
|
50
56
|
return;
|
|
51
57
|
}
|
|
52
|
-
result.push(
|
|
58
|
+
result.push({
|
|
59
|
+
type: prop.getType(),
|
|
60
|
+
name: prop.getName(),
|
|
61
|
+
});
|
|
53
62
|
});
|
|
54
63
|
};
|
|
55
64
|
//# sourceMappingURL=getNodePropertyMap.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getNodePropertyMap.js","sourceRoot":"","sources":["../../../../../packages/typescript-resolver-files/src/getGraphQLObjectTypeResolversToGenerate/getNodePropertyMap.ts"],"names":[],"mappings":";;;AAAA,uCAMkB;AAKlB;;;GAGG;AACI,MAAM,kBAAkB,GAAG,CAAC,EACjC,IAAI,EACJ,cAAc,GAIf,EAAmB,EAAE;IACpB,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,WAAW,GAAG,cAAc,CAAC,cAAc,EAAE,CAAC;IAEpD,MAAM,UAAU,GAAG,CAAC,GAA2B,EAAE;QAC/C,IAAI,IAAI,CAAC,MAAM,CAAC,qBAAU,CAAC,gBAAgB,CAAC,EAAE,CAAC;YAC7C,MAAM,MAAM,GAA2B,EAAE,CAAC;YAC1C,0BAA0B,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;YACzC,OAAO,MAAM,CAAC;QAChB,CAAC;QAED,OAAO,WAAW;aACf,iBAAiB,CAAC,IAAI,CAAC;aACvB,aAAa,EAAE;aACf,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;YACZ,OAAO;gBACL,IAAI,EAAE,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE;gBACzC,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE;aACrB,CAAC;QACJ,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,EAAE,CAAC;IAEL,MAAM,eAAe,GAAG,UAAU,CAAC,MAAM,CACvC,CAAC,GAAG,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE;QACtB,GAAG,CAAC,IAAI,CAAC,GAAG;YACV,IAAI;YACJ,IAAI;SACL,CAAC;QACF,OAAO,GAAG,CAAC;IACb,CAAC,EACD,EAAE,CACH,CAAC;IAEF,OAAO,eAAe,CAAC;AACzB,CAAC,CAAC;AA3CW,QAAA,kBAAkB,sBA2C7B;AAEF,MAAM,0BAA0B,GAAG,CACjC,SAA2B,EAC3B,MAA8B,EACxB,EAAE;IACR,MAAM,SAAS,GAAG,SAAS,CAAC,YAAY,EAAE,CAAC;IAC3C,IAAI,SAAS,EAAE,CAAC;QACd,0BAA0B,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;IAChD,CAAC;IAED,SAAS,CAAC,qBAAqB,EAAE,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;QACjD,IACE,IAAI,CAAC,WAAW,CAAC,qBAAU,CAAC,cAAc,CAAC;YAC3C,IAAI,CAAC,WAAW,CAAC,qBAAU,CAAC,gBAAgB,CAAC,EAC7C,CAAC;YACD,OAAO;QACT,CAAC;QACD,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YACnC,uCAAuC;YACvC,OAAO;QACT,CAAC;QACD,IAAI,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC;YAC7C,oBAAoB;YACpB,OAAO;QACT,CAAC;QACD,MAAM,CAAC,IAAI,CAAC;YACV,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE;YACpB,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE;SACrB,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC"}
|
|
@@ -16,7 +16,6 @@ interface ParseGraphQLSchemaParams {
|
|
|
16
16
|
resolverRelativeTargetDir: string;
|
|
17
17
|
whitelistedModules: ParsedPresetConfig['whitelistedModules'];
|
|
18
18
|
blacklistedModules: ParsedPresetConfig['blacklistedModules'];
|
|
19
|
-
federationEnabled: boolean;
|
|
20
19
|
}
|
|
21
20
|
export interface ResolverDetails {
|
|
22
21
|
schemaType: string;
|
|
@@ -34,7 +33,6 @@ export interface ResolverDetails {
|
|
|
34
33
|
}
|
|
35
34
|
type ObjectResolverDetails = ResolverDetails & {
|
|
36
35
|
fieldsToPick: string[];
|
|
37
|
-
pickReferenceResolver: boolean;
|
|
38
36
|
};
|
|
39
37
|
type EnumResolverDetails = ResolverDetails & {
|
|
40
38
|
allowedValues: string[];
|
|
@@ -62,5 +60,5 @@ export interface ParsedGraphQLSchemaMeta {
|
|
|
62
60
|
defaultTypeMappers: Record<string, string>;
|
|
63
61
|
};
|
|
64
62
|
}
|
|
65
|
-
export declare const parseGraphQLSchema: ({ schemaAst, sourceMap, resolverTypesPath, typeMappersMap, scalarsModule, scalarsOverrides, mode, baseOutputDir, resolverRelativeTargetDir, whitelistedModules, blacklistedModules,
|
|
63
|
+
export declare const parseGraphQLSchema: ({ schemaAst, sourceMap, resolverTypesPath, typeMappersMap, scalarsModule, scalarsOverrides, mode, baseOutputDir, resolverRelativeTargetDir, whitelistedModules, blacklistedModules, }: ParseGraphQLSchemaParams) => Promise<ParsedGraphQLSchemaMeta>;
|
|
66
64
|
export {};
|