@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.
Files changed (66) hide show
  1. package/README.md +34 -0
  2. package/package.json +8 -8
  3. package/src/addVirtualTypesFileToTsMorphProject/addVirtualTypesFileToTsMorphProject.js +7 -6
  4. package/src/addVirtualTypesFileToTsMorphProject/addVirtualTypesFileToTsMorphProject.js.map +1 -1
  5. package/src/generateResolverFiles/addObjectTypeResolversPropertyAssignmentNodesIfNotImplemented.d.ts +17 -0
  6. package/src/generateResolverFiles/addObjectTypeResolversPropertyAssignmentNodesIfNotImplemented.js +58 -0
  7. package/src/generateResolverFiles/addObjectTypeResolversPropertyAssignmentNodesIfNotImplemented.js.map +1 -0
  8. package/src/generateResolverFiles/addResolverMainFiles.js +6 -0
  9. package/src/generateResolverFiles/addResolverMainFiles.js.map +1 -1
  10. package/src/generateResolverFiles/ensureEnumTypeResolversAreGenerated.js +1 -0
  11. package/src/generateResolverFiles/ensureEnumTypeResolversAreGenerated.js.map +1 -1
  12. package/src/generateResolverFiles/generateResolverFiles.js +1 -1
  13. package/src/generateResolverFiles/generateResolverFiles.js.map +1 -1
  14. package/src/generateResolverFiles/getVariableStatementWithExpectedIdentifier.d.ts +0 -1
  15. package/src/generateResolverFiles/getVariableStatementWithExpectedIdentifier.js +0 -20
  16. package/src/generateResolverFiles/getVariableStatementWithExpectedIdentifier.js.map +1 -1
  17. package/src/generateResolverFiles/handleGraphQLEnumType.js +6 -2
  18. package/src/generateResolverFiles/handleGraphQLEnumType.js.map +1 -1
  19. package/src/generateResolverFiles/handleGraphQLInterfaceType.js +4 -0
  20. package/src/generateResolverFiles/handleGraphQLInterfaceType.js.map +1 -1
  21. package/src/generateResolverFiles/handleGraphQLObjectType.d.ts +0 -1
  22. package/src/generateResolverFiles/handleGraphQLObjectType.js +34 -11
  23. package/src/generateResolverFiles/handleGraphQLObjectType.js.map +1 -1
  24. package/src/generateResolverFiles/handleGraphQLRootObjectTypeField.js +4 -0
  25. package/src/generateResolverFiles/handleGraphQLRootObjectTypeField.js.map +1 -1
  26. package/src/generateResolverFiles/handleGraphQLScalarType.js +4 -0
  27. package/src/generateResolverFiles/handleGraphQLScalarType.js.map +1 -1
  28. package/src/generateResolverFiles/handleGraphQLUnionType.js +4 -0
  29. package/src/generateResolverFiles/handleGraphQLUnionType.js.map +1 -1
  30. package/src/generateResolverFiles/postProcessFiles.js +111 -24
  31. package/src/generateResolverFiles/postProcessFiles.js.map +1 -1
  32. package/src/generateResolverFiles/types.d.ts +6 -0
  33. package/src/generateResolverFiles/visitNamedType.js +1 -0
  34. package/src/generateResolverFiles/visitNamedType.js.map +1 -1
  35. package/src/generateTypeDefsFiles/generateTypeDefsFiles.js +6 -0
  36. package/src/generateTypeDefsFiles/generateTypeDefsFiles.js.map +1 -1
  37. package/src/getGraphQLObjectTypeResolversToGenerate/getGraphQLObjectTypeResolversToGenerate.d.ts +3 -1
  38. package/src/getGraphQLObjectTypeResolversToGenerate/getGraphQLObjectTypeResolversToGenerate.js +136 -41
  39. package/src/getGraphQLObjectTypeResolversToGenerate/getGraphQLObjectTypeResolversToGenerate.js.map +1 -1
  40. package/src/{utils → getGraphQLObjectTypeResolversToGenerate}/getNodePropertyMap.d.ts +6 -3
  41. package/src/{utils → getGraphQLObjectTypeResolversToGenerate}/getNodePropertyMap.js +14 -5
  42. package/src/getGraphQLObjectTypeResolversToGenerate/getNodePropertyMap.js.map +1 -0
  43. package/src/parseGraphQLSchema/parseGraphQLSchema.d.ts +1 -3
  44. package/src/parseGraphQLSchema/parseGraphQLSchema.js +3 -10
  45. package/src/parseGraphQLSchema/parseGraphQLSchema.js.map +1 -1
  46. package/src/parseSources/parseSources.d.ts +6 -1
  47. package/src/parseSources/parseSources.js +15 -3
  48. package/src/parseSources/parseSources.js.map +1 -1
  49. package/src/parseTypeMappers/collectTypeMappersFromSourceFile.d.ts +2 -4
  50. package/src/parseTypeMappers/collectTypeMappersFromSourceFile.js +11 -39
  51. package/src/parseTypeMappers/collectTypeMappersFromSourceFile.js.map +1 -1
  52. package/src/parseTypeMappers/parseTypeMappers.d.ts +8 -6
  53. package/src/parseTypeMappers/parseTypeMappers.js +2 -4
  54. package/src/parseTypeMappers/parseTypeMappers.js.map +1 -1
  55. package/src/preset.js +44 -23
  56. package/src/preset.js.map +1 -1
  57. package/src/utils/index.d.ts +0 -1
  58. package/src/utils/index.js +0 -1
  59. package/src/utils/index.js.map +1 -1
  60. package/src/validatePresetConfig/validatePresetConfig.d.ts +6 -1
  61. package/src/validatePresetConfig/validatePresetConfig.js +28 -4
  62. package/src/validatePresetConfig/validatePresetConfig.js.map +1 -1
  63. package/src/generateResolverFiles/ensureObjectTypeResolversAreGenerated.d.ts +0 -6
  64. package/src/generateResolverFiles/ensureObjectTypeResolversAreGenerated.js +0 -80
  65. package/src/generateResolverFiles/ensureObjectTypeResolversAreGenerated.js.map +0 -1
  66. 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 ensureObjectTypeResolversAreGenerated_1 = require("./ensureObjectTypeResolversAreGenerated");
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, ensureCorrectResolverType } = ensureExportedResolver(sourceFile, resolverFile);
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, ensureObjectTypeResolversAreGenerated_1.ensureObjectTypeResolversAreGenerated)(sourceFile, resolverFile);
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
- const { variableStatement, isExported, ensureCorrectResolverType } = (0, getVariableStatementWithExpectedIdentifier_1.getVariableStatementWithExpectedIdentifier)(sourceFile, resolverFile);
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
- return {
79
- addedVariableStatement: true,
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":"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"}
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;KACF,EACD,GAAG,CACJ,CAAC;AACJ,CAAC,CAAC;AAzDW,QAAA,cAAc,kBAyDzB"}
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;AA1DW,QAAA,qBAAqB,yBA0DhC;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"}
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"}
@@ -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, typeMappersMap, }: {
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;
@@ -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 utils_1 = require("../utils");
6
- const getGraphQLObjectTypeResolversToGenerate = ({ tsMorphProject, typesSourceFile, userDefinedSchemaObjectTypeMap, typeMappersMap, }) => {
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 schemaTypePropertyMap = {};
13
- const populateSchemaTypePropertyMap = (node) => {
34
+ const schemaResolversTypePropertyMap = {};
35
+ const populateSchemaTypeResolversPropertyMap = (node) => {
14
36
  const identifier = node.getNameNode();
15
37
  const identifierName = identifier.getText();
16
- if (userDefinedSchemaObjectTypeMap[identifierName]) {
17
- schemaTypePropertyMap[identifierName] = (0, utils_1.getNodePropertyMap)({
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(populateSchemaTypePropertyMap);
48
+ .forEach(populateSchemaTypeResolversPropertyMap);
26
49
  typesSourceFile
27
50
  .getDescendantsOfKind(ts_morph_1.SyntaxKind.InterfaceDeclaration)
28
- .forEach(populateSchemaTypePropertyMap);
51
+ .forEach(populateSchemaTypeResolversPropertyMap);
29
52
  // 3. Find resolvers to generate and add reason
30
53
  const result = {};
31
- typeMappersEntries.forEach(([_, { schemaType, typeMapperName, typeMapperPropertyMap }]) => {
32
- const matchedSchemaTypePropertyMap = schemaTypePropertyMap[schemaType];
33
- if (matchedSchemaTypePropertyMap) {
34
- Object.values(matchedSchemaTypePropertyMap).forEach((schemaTypeProperty) => {
35
- const typeMapperProperty = typeMapperPropertyMap[schemaTypeProperty.name];
36
- const typeMapperPropertyIdentifier = `${typeMapperName}.${schemaTypeProperty.name}`;
37
- const schemaTypePropertyIdentifier = `${schemaType}.${schemaTypeProperty.name}`;
38
- if (schemaTypeProperty.name === '__typename') {
39
- return;
40
- }
41
- result[schemaType] = result[schemaType] || {};
42
- // If mapper does not have a field in schema type, report
43
- if (!typeMapperProperty) {
44
- result[schemaType][schemaTypeProperty.name] = {
45
- resolverName: schemaTypeProperty.name,
46
- resolverDeclaration: `async (_parent, _arg, _ctx) => { /* ${schemaTypePropertyIdentifier} resolver is required because ${schemaTypePropertyIdentifier} exists but ${typeMapperPropertyIdentifier} does not */ }`,
47
- };
48
- return;
49
- }
50
- /**
51
- * FIXME: there's currently no way to check if a type is assignable to another type
52
- * https://github.com/dsherret/ts-morph/issues/357
53
- * https://github.com/microsoft/TypeScript/issues/9879
54
- *
55
- * 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
56
- *
57
- * Note: this happens only when mappers are used
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: `({ ${schemaTypeProperty.name} }, _arg, _ctx) => {
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
- return;
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
@@ -1 +1 @@
1
- {"version":3,"file":"getGraphQLObjectTypeResolversToGenerate.js","sourceRoot":"","sources":["../../../../../packages/typescript-resolver-files/src/getGraphQLObjectTypeResolversToGenerate/getGraphQLObjectTypeResolversToGenerate.ts"],"names":[],"mappings":";;;AAAA,uCAMkB;AAElB,oCAAoE;AAQ7D,MAAM,uCAAuC,GAAG,CAAC,EACtD,cAAc,EACd,eAAe,EACf,8BAA8B,EAC9B,cAAc,GAMf,EAAwC,EAAE;IACzC,MAAM,kBAAkB,GAAG,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;IAC1D,IAAI,kBAAkB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACpC,OAAO,EAAE,CAAC;IACZ,CAAC;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,8BAA8B,CAAC,cAAc,CAAC,EAAE,CAAC;YACnD,qBAAqB,CAAC,cAAc,CAAC,GAAG,IAAA,0BAAkB,EAAC;gBACzD,cAAc;gBACd,IAAI;aACL,CAAC,CAAC;QACL,CAAC;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,CAAC;YACjC,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,CAAC;oBAC7C,OAAO;gBACT,CAAC;gBAED,MAAM,CAAC,UAAU,CAAC,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;gBAE9C,yDAAyD;gBACzD,IAAI,CAAC,kBAAkB,EAAE,CAAC;oBACxB,MAAM,CAAC,UAAU,CAAC,CAAC,kBAAkB,CAAC,IAAI,CAAC,GAAG;wBAC5C,YAAY,EAAE,kBAAkB,CAAC,IAAI;wBACrC,mBAAmB,EAAE,uCAAuC,4BAA4B,iCAAiC,4BAA4B,eAAe,4BAA4B,gBAAgB;qBACjN,CAAC;oBACF,OAAO;gBACT,CAAC;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;QACJ,CAAC;IACH,CAAC,CACF,CAAC;IAEF,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AA5FW,QAAA,uCAAuC,2CA4FlD"}
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
- export type NodePropertyMap = Record<string, {
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((property) => property.getName());
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, propertyName) => {
26
- res[propertyName] = {
27
- name: propertyName,
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(prop.getName());
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, federationEnabled, }: ParseGraphQLSchemaParams) => Promise<ParsedGraphQLSchemaMeta>;
63
+ export declare const parseGraphQLSchema: ({ schemaAst, sourceMap, resolverTypesPath, typeMappersMap, scalarsModule, scalarsOverrides, mode, baseOutputDir, resolverRelativeTargetDir, whitelistedModules, blacklistedModules, }: ParseGraphQLSchemaParams) => Promise<ParsedGraphQLSchemaMeta>;
66
64
  export {};