@eddeee888/gcg-typescript-resolver-files 0.17.0 → 0.18.1

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 (210) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +3 -3
  3. package/{src → dist}/addVirtualTypesFileToTsMorphProject/addVirtualTypesFileToTsMorphProject.d.ts +2 -2
  4. package/{src → dist}/addVirtualTypesFileToTsMorphProject/addVirtualTypesFileToTsMorphProject.js +11 -17
  5. package/dist/addVirtualTypesFileToTsMorphProject/index.d.ts +1 -0
  6. package/dist/addVirtualTypesFileToTsMorphProject/index.js +1 -0
  7. package/{src → dist}/defineConfig.d.ts +1 -1
  8. package/{src → dist}/defineConfig.js +4 -10
  9. package/{src → dist}/generateResolverFiles/addExternalResolverImport.d.ts +1 -1
  10. package/{src → dist}/generateResolverFiles/addExternalResolverImport.js +3 -8
  11. package/{src → dist}/generateResolverFiles/addObjectTypeResolversPropertyAssignmentNodesIfNotImplemented.d.ts +1 -1
  12. package/{src → dist}/generateResolverFiles/addObjectTypeResolversPropertyAssignmentNodesIfNotImplemented.js +9 -14
  13. package/{src → dist}/generateResolverFiles/addResolverMainFiles.d.ts +1 -1
  14. package/{src → dist}/generateResolverFiles/addResolverMainFiles.js +11 -17
  15. package/{src → dist}/generateResolverFiles/ensureEnumTypeResolversAreGenerated.d.ts +1 -1
  16. package/{src → dist}/generateResolverFiles/ensureEnumTypeResolversAreGenerated.js +6 -11
  17. package/{src → dist}/generateResolverFiles/generateResolverFiles.d.ts +1 -1
  18. package/dist/generateResolverFiles/generateResolverFiles.js +87 -0
  19. package/{src → dist}/generateResolverFiles/getImportStatementWithExpectedNamedImport.d.ts +1 -1
  20. package/dist/generateResolverFiles/getImportStatementWithExpectedNamedImport.js +14 -0
  21. package/{src → dist}/generateResolverFiles/getVariableStatementWithExpectedIdentifier.d.ts +1 -1
  22. package/{src → dist}/generateResolverFiles/getVariableStatementWithExpectedIdentifier.js +1 -6
  23. package/{src → dist}/generateResolverFiles/handleGraphQLEnumType.d.ts +1 -1
  24. package/{src → dist}/generateResolverFiles/handleGraphQLEnumType.js +6 -11
  25. package/{src → dist}/generateResolverFiles/handleGraphQLInterfaceType.d.ts +1 -1
  26. package/{src → dist}/generateResolverFiles/handleGraphQLInterfaceType.js +6 -11
  27. package/{src → dist}/generateResolverFiles/handleGraphQLObjectType.d.ts +1 -1
  28. package/{src → dist}/generateResolverFiles/handleGraphQLObjectType.js +8 -14
  29. package/dist/generateResolverFiles/handleGraphQLRootObjectTypeField.d.ts +3 -0
  30. package/{src → dist}/generateResolverFiles/handleGraphQLRootObjectTypeField.js +8 -13
  31. package/{src → dist}/generateResolverFiles/handleGraphQLScalarType.d.ts +1 -1
  32. package/{src → dist}/generateResolverFiles/handleGraphQLScalarType.js +6 -11
  33. package/{src → dist}/generateResolverFiles/handleGraphQLUnionType.d.ts +1 -1
  34. package/{src → dist}/generateResolverFiles/handleGraphQLUnionType.js +5 -10
  35. package/dist/generateResolverFiles/index.d.ts +2 -0
  36. package/dist/generateResolverFiles/index.js +1 -0
  37. package/{src → dist}/generateResolverFiles/postProcessFiles.d.ts +1 -1
  38. package/{src → dist}/generateResolverFiles/postProcessFiles.js +24 -26
  39. package/{src → dist}/generateResolverFiles/types.d.ts +6 -6
  40. package/dist/generateResolverFiles/types.js +1 -0
  41. package/{src → dist}/generateResolverFiles/visitNamedType.d.ts +2 -2
  42. package/{src → dist}/generateResolverFiles/visitNamedType.js +3 -8
  43. package/dist/generateTypeDefsFiles/generateTypeDefsContent.js +7 -0
  44. package/{src → dist}/generateTypeDefsFiles/generateTypeDefsFiles.d.ts +3 -3
  45. package/{src → dist}/generateTypeDefsFiles/generateTypeDefsFiles.js +7 -13
  46. package/dist/generateTypeDefsFiles/index.d.ts +1 -0
  47. package/dist/generateTypeDefsFiles/index.js +1 -0
  48. package/{src → dist}/getGraphQLObjectTypeResolversToGenerate/getGraphQLObjectTypeResolversToGenerate.d.ts +3 -3
  49. package/{src → dist}/getGraphQLObjectTypeResolversToGenerate/getGraphQLObjectTypeResolversToGenerate.js +17 -22
  50. package/{src → dist}/getGraphQLObjectTypeResolversToGenerate/getNodePropertyMap.js +5 -10
  51. package/dist/getGraphQLObjectTypeResolversToGenerate/index.d.ts +1 -0
  52. package/dist/getGraphQLObjectTypeResolversToGenerate/index.js +1 -0
  53. package/dist/index.d.ts +3 -0
  54. package/dist/index.js +3 -0
  55. package/dist/normalizeAddConfigPath/index.d.ts +1 -0
  56. package/dist/normalizeAddConfigPath/index.js +1 -0
  57. package/{src → dist}/normalizeAddConfigPath/normalizeAddConfigPath.d.ts +1 -1
  58. package/{src → dist}/normalizeAddConfigPath/normalizeAddConfigPath.js +2 -8
  59. package/{src → dist}/parseGraphQLSchema/index.d.ts +2 -2
  60. package/dist/parseGraphQLSchema/index.js +1 -0
  61. package/{src → dist}/parseGraphQLSchema/normalizeResolverName.d.ts +1 -1
  62. package/{src → dist}/parseGraphQLSchema/normalizeResolverName.js +1 -6
  63. package/{src → dist}/parseGraphQLSchema/parseGraphQLSchema.d.ts +5 -5
  64. package/{src → dist}/parseGraphQLSchema/parseGraphQLSchema.js +43 -50
  65. package/{src → dist}/parseGraphQLSchema/parseLocationForOutputDir.d.ts +2 -2
  66. package/{src → dist}/parseGraphQLSchema/parseLocationForOutputDir.js +4 -10
  67. package/dist/parseSources/index.d.ts +1 -0
  68. package/dist/parseSources/index.js +1 -0
  69. package/{src → dist}/parseSources/parseSources.d.ts +1 -1
  70. package/{src → dist}/parseSources/parseSources.js +2 -7
  71. package/{src → dist}/parseTypeMappers/collectTypeMappersFromSourceFile.d.ts +2 -2
  72. package/{src → dist}/parseTypeMappers/collectTypeMappersFromSourceFile.js +15 -21
  73. package/dist/parseTypeMappers/index.d.ts +1 -0
  74. package/dist/parseTypeMappers/index.js +1 -0
  75. package/{src → dist}/parseTypeMappers/parseTypeMappers.d.ts +2 -2
  76. package/dist/parseTypeMappers/parseTypeMappers.js +20 -0
  77. package/{src → dist}/preset.d.ts +1 -1
  78. package/dist/preset.js +214 -0
  79. package/dist/utils/cwd.js +7 -0
  80. package/dist/utils/fmt.js +15 -0
  81. package/dist/utils/index.d.ts +12 -0
  82. package/dist/utils/index.js +12 -0
  83. package/{src → dist}/utils/isMatchResolverNamePattern.js +3 -9
  84. package/dist/utils/isNativeNamedType.js +13 -0
  85. package/dist/utils/isRootObjectType.js +3 -0
  86. package/{src → dist}/utils/isWhitelistedModule.js +1 -6
  87. package/{src → dist}/utils/logger.d.ts +1 -1
  88. package/dist/utils/logger.js +13 -0
  89. package/dist/utils/normalizeImportExtension.js +9 -0
  90. package/dist/utils/normalizeRelativePath.js +6 -0
  91. package/{src → dist}/utils/parseLocationForWhitelistedModule.d.ts +1 -1
  92. package/dist/utils/parseLocationForWhitelistedModule.js +17 -0
  93. package/{src → dist}/utils/printImportLine.d.ts +1 -1
  94. package/{src → dist}/utils/printImportLine.js +3 -7
  95. package/dist/utils/relativeModulePath.js +6 -0
  96. package/dist/validateAndMergeParsedConfigs/index.d.ts +1 -0
  97. package/dist/validateAndMergeParsedConfigs/index.js +1 -0
  98. package/{src → dist}/validateAndMergeParsedConfigs/validateAndMergeParsedConfigs.d.ts +2 -2
  99. package/{src → dist}/validateAndMergeParsedConfigs/validateAndMergeParsedConfigs.js +16 -13
  100. package/dist/validatePresetConfig/index.d.ts +1 -0
  101. package/dist/validatePresetConfig/index.js +1 -0
  102. package/{src → dist}/validatePresetConfig/validatePresetConfig.d.ts +2 -2
  103. package/{src → dist}/validatePresetConfig/validatePresetConfig.js +29 -36
  104. package/package.json +22 -11
  105. package/src/addVirtualTypesFileToTsMorphProject/addVirtualTypesFileToTsMorphProject.js.map +0 -1
  106. package/src/addVirtualTypesFileToTsMorphProject/index.d.ts +0 -1
  107. package/src/addVirtualTypesFileToTsMorphProject/index.js +0 -5
  108. package/src/addVirtualTypesFileToTsMorphProject/index.js.map +0 -1
  109. package/src/defineConfig.js.map +0 -1
  110. package/src/generateResolverFiles/addExternalResolverImport.js.map +0 -1
  111. package/src/generateResolverFiles/addObjectTypeResolversPropertyAssignmentNodesIfNotImplemented.js.map +0 -1
  112. package/src/generateResolverFiles/addResolverMainFiles.js.map +0 -1
  113. package/src/generateResolverFiles/ensureEnumTypeResolversAreGenerated.js.map +0 -1
  114. package/src/generateResolverFiles/generateResolverFiles.js +0 -54
  115. package/src/generateResolverFiles/generateResolverFiles.js.map +0 -1
  116. package/src/generateResolverFiles/getImportStatementWithExpectedNamedImport.js +0 -20
  117. package/src/generateResolverFiles/getImportStatementWithExpectedNamedImport.js.map +0 -1
  118. package/src/generateResolverFiles/getVariableStatementWithExpectedIdentifier.js.map +0 -1
  119. package/src/generateResolverFiles/handleGraphQLEnumType.js.map +0 -1
  120. package/src/generateResolverFiles/handleGraphQLInterfaceType.js.map +0 -1
  121. package/src/generateResolverFiles/handleGraphQLObjectType.js.map +0 -1
  122. package/src/generateResolverFiles/handleGraphQLRootObjectTypeField.d.ts +0 -3
  123. package/src/generateResolverFiles/handleGraphQLRootObjectTypeField.js.map +0 -1
  124. package/src/generateResolverFiles/handleGraphQLScalarType.js.map +0 -1
  125. package/src/generateResolverFiles/handleGraphQLUnionType.js.map +0 -1
  126. package/src/generateResolverFiles/index.d.ts +0 -2
  127. package/src/generateResolverFiles/index.js +0 -6
  128. package/src/generateResolverFiles/index.js.map +0 -1
  129. package/src/generateResolverFiles/postProcessFiles.js.map +0 -1
  130. package/src/generateResolverFiles/types.js +0 -3
  131. package/src/generateResolverFiles/types.js.map +0 -1
  132. package/src/generateResolverFiles/visitNamedType.js.map +0 -1
  133. package/src/generateTypeDefsFiles/generateTypeDefsContent.js +0 -12
  134. package/src/generateTypeDefsFiles/generateTypeDefsContent.js.map +0 -1
  135. package/src/generateTypeDefsFiles/generateTypeDefsFiles.js.map +0 -1
  136. package/src/generateTypeDefsFiles/index.d.ts +0 -1
  137. package/src/generateTypeDefsFiles/index.js +0 -5
  138. package/src/generateTypeDefsFiles/index.js.map +0 -1
  139. package/src/getGraphQLObjectTypeResolversToGenerate/getGraphQLObjectTypeResolversToGenerate.js.map +0 -1
  140. package/src/getGraphQLObjectTypeResolversToGenerate/getNodePropertyMap.js.map +0 -1
  141. package/src/getGraphQLObjectTypeResolversToGenerate/index.d.ts +0 -1
  142. package/src/getGraphQLObjectTypeResolversToGenerate/index.js +0 -5
  143. package/src/getGraphQLObjectTypeResolversToGenerate/index.js.map +0 -1
  144. package/src/index.d.ts +0 -3
  145. package/src/index.js +0 -10
  146. package/src/index.js.map +0 -1
  147. package/src/normalizeAddConfigPath/index.d.ts +0 -1
  148. package/src/normalizeAddConfigPath/index.js +0 -5
  149. package/src/normalizeAddConfigPath/index.js.map +0 -1
  150. package/src/normalizeAddConfigPath/normalizeAddConfigPath.js.map +0 -1
  151. package/src/parseGraphQLSchema/index.js +0 -5
  152. package/src/parseGraphQLSchema/index.js.map +0 -1
  153. package/src/parseGraphQLSchema/normalizeResolverName.js.map +0 -1
  154. package/src/parseGraphQLSchema/parseGraphQLSchema.js.map +0 -1
  155. package/src/parseGraphQLSchema/parseLocationForOutputDir.js.map +0 -1
  156. package/src/parseSources/index.d.ts +0 -1
  157. package/src/parseSources/index.js +0 -5
  158. package/src/parseSources/index.js.map +0 -1
  159. package/src/parseSources/parseSources.js.map +0 -1
  160. package/src/parseTypeMappers/collectTypeMappersFromSourceFile.js.map +0 -1
  161. package/src/parseTypeMappers/index.d.ts +0 -1
  162. package/src/parseTypeMappers/index.js +0 -5
  163. package/src/parseTypeMappers/index.js.map +0 -1
  164. package/src/parseTypeMappers/parseTypeMappers.js +0 -26
  165. package/src/parseTypeMappers/parseTypeMappers.js.map +0 -1
  166. package/src/preset.js +0 -214
  167. package/src/preset.js.map +0 -1
  168. package/src/utils/cwd.js +0 -13
  169. package/src/utils/cwd.js.map +0 -1
  170. package/src/utils/fmt.js +0 -19
  171. package/src/utils/fmt.js.map +0 -1
  172. package/src/utils/index.d.ts +0 -12
  173. package/src/utils/index.js +0 -16
  174. package/src/utils/index.js.map +0 -1
  175. package/src/utils/isMatchResolverNamePattern.js.map +0 -1
  176. package/src/utils/isNativeNamedType.js +0 -18
  177. package/src/utils/isNativeNamedType.js.map +0 -1
  178. package/src/utils/isRootObjectType.js +0 -8
  179. package/src/utils/isRootObjectType.js.map +0 -1
  180. package/src/utils/isWhitelistedModule.js.map +0 -1
  181. package/src/utils/logger.js +0 -17
  182. package/src/utils/logger.js.map +0 -1
  183. package/src/utils/normalizeImportExtension.js +0 -13
  184. package/src/utils/normalizeImportExtension.js.map +0 -1
  185. package/src/utils/normalizeRelativePath.js +0 -11
  186. package/src/utils/normalizeRelativePath.js.map +0 -1
  187. package/src/utils/parseLocationForWhitelistedModule.js +0 -22
  188. package/src/utils/parseLocationForWhitelistedModule.js.map +0 -1
  189. package/src/utils/printImportLine.js.map +0 -1
  190. package/src/utils/relativeModulePath.js +0 -12
  191. package/src/utils/relativeModulePath.js.map +0 -1
  192. package/src/validateAndMergeParsedConfigs/index.d.ts +0 -1
  193. package/src/validateAndMergeParsedConfigs/index.js +0 -5
  194. package/src/validateAndMergeParsedConfigs/index.js.map +0 -1
  195. package/src/validateAndMergeParsedConfigs/validateAndMergeParsedConfigs.js.map +0 -1
  196. package/src/validatePresetConfig/index.d.ts +0 -1
  197. package/src/validatePresetConfig/index.js +0 -5
  198. package/src/validatePresetConfig/index.js.map +0 -1
  199. package/src/validatePresetConfig/validatePresetConfig.js.map +0 -1
  200. /package/{src → dist}/generateTypeDefsFiles/generateTypeDefsContent.d.ts +0 -0
  201. /package/{src → dist}/getGraphQLObjectTypeResolversToGenerate/getNodePropertyMap.d.ts +0 -0
  202. /package/{src → dist}/utils/cwd.d.ts +0 -0
  203. /package/{src → dist}/utils/fmt.d.ts +0 -0
  204. /package/{src → dist}/utils/isMatchResolverNamePattern.d.ts +0 -0
  205. /package/{src → dist}/utils/isNativeNamedType.d.ts +0 -0
  206. /package/{src → dist}/utils/isRootObjectType.d.ts +0 -0
  207. /package/{src → dist}/utils/isWhitelistedModule.d.ts +0 -0
  208. /package/{src → dist}/utils/normalizeImportExtension.d.ts +0 -0
  209. /package/{src → dist}/utils/normalizeRelativePath.d.ts +0 -0
  210. /package/{src → dist}/utils/relativeModulePath.d.ts +0 -0
@@ -1,24 +1,20 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.collectTypeMappersFromSourceFile = void 0;
4
- const tslib_1 = require("tslib");
5
- const path = tslib_1.__importStar(require("path"));
6
- const ts_morph_1 = require("ts-morph");
7
- const utils_1 = require("../utils");
8
- const collectTypeMappersFromSourceFile = ({ typeMappersSourceFile, typeMappersSuffix, resolverTypesPath, emitLegacyCommonJSImports, importExtension, }, result) => {
1
+ import * as path from 'path';
2
+ import { SyntaxKind } from 'ts-morph';
3
+ import { normalizeRelativePath, normalizeImportExtension, } from '../utils/index.js';
4
+ export const collectTypeMappersFromSourceFile = ({ typeMappersSourceFile, typeMappersSuffix, resolverTypesPath, emitLegacyCommonJSImports, importExtension, }, result) => {
9
5
  // Look for interfaces with exported keywords
10
6
  typeMappersSourceFile.getInterfaces().forEach((interfaceDeclaration) => {
11
7
  if (!interfaceDeclaration.hasExportKeyword()) {
12
8
  return;
13
9
  }
14
10
  addTypeMapperDetailsIfValid({
15
- kind: ts_morph_1.SyntaxKind.InterfaceDeclaration,
11
+ kind: SyntaxKind.InterfaceDeclaration,
16
12
  identifierNode: interfaceDeclaration.getNameNode(),
17
13
  typeMappersSuffix,
18
14
  typeMappersFilePath: typeMappersSourceFile.getFilePath(),
19
15
  resolverTypesPath,
20
16
  emitLegacyCommonJSImports,
21
- importExtension
17
+ importExtension,
22
18
  }, result);
23
19
  });
24
20
  // Look for exported types with exported keywords
@@ -28,13 +24,13 @@ const collectTypeMappersFromSourceFile = ({ typeMappersSourceFile, typeMappersSu
28
24
  }
29
25
  const identifierNode = typeAlias.getNameNode();
30
26
  addTypeMapperDetailsIfValid({
31
- kind: ts_morph_1.SyntaxKind.TypeAliasDeclaration,
27
+ kind: SyntaxKind.TypeAliasDeclaration,
32
28
  identifierNode,
33
29
  typeMappersSuffix,
34
30
  typeMappersFilePath: typeMappersSourceFile.getFilePath(),
35
31
  resolverTypesPath,
36
32
  emitLegacyCommonJSImports,
37
- importExtension
33
+ importExtension,
38
34
  }, result);
39
35
  });
40
36
  // Look for named exports e.g.
@@ -49,13 +45,13 @@ const collectTypeMappersFromSourceFile = ({ typeMappersSourceFile, typeMappersSu
49
45
  identifierNode = aliasNode;
50
46
  }
51
47
  addTypeMapperDetailsIfValid({
52
- kind: ts_morph_1.SyntaxKind.ExportSpecifier,
48
+ kind: SyntaxKind.ExportSpecifier,
53
49
  identifierNode,
54
50
  typeMappersSuffix,
55
51
  typeMappersFilePath: typeMappersSourceFile.getFilePath(),
56
52
  resolverTypesPath,
57
53
  emitLegacyCommonJSImports,
58
- importExtension
54
+ importExtension,
59
55
  }, result);
60
56
  });
61
57
  });
@@ -69,18 +65,17 @@ const collectTypeMappersFromSourceFile = ({ typeMappersSourceFile, typeMappersSu
69
65
  return;
70
66
  }
71
67
  addTypeMapperDetailsIfValid({
72
- kind: ts_morph_1.SyntaxKind.ClassDeclaration,
68
+ kind: SyntaxKind.ClassDeclaration,
73
69
  identifierNode,
74
70
  typeMappersSuffix,
75
71
  typeMappersFilePath: typeMappersSourceFile.getFilePath(),
76
72
  resolverTypesPath,
77
73
  emitLegacyCommonJSImports,
78
- importExtension
74
+ importExtension,
79
75
  }, result);
80
76
  });
81
77
  };
82
- exports.collectTypeMappersFromSourceFile = collectTypeMappersFromSourceFile;
83
- const addTypeMapperDetailsIfValid = ({ kind, identifierNode, typeMappersSuffix, typeMappersFilePath, resolverTypesPath, emitLegacyCommonJSImports, importExtension }, result) => {
78
+ const addTypeMapperDetailsIfValid = ({ kind, identifierNode, typeMappersSuffix, typeMappersFilePath, resolverTypesPath, emitLegacyCommonJSImports, importExtension, }, result) => {
84
79
  const identifierName = identifierNode.getText();
85
80
  if (!identifierName.endsWith(typeMappersSuffix)) {
86
81
  return;
@@ -101,8 +96,8 @@ const addTypeMapperDetailsIfValid = ({ kind, identifierNode, typeMappersSuffix,
101
96
  .split(path.sep)
102
97
  .join(path.posix.sep);
103
98
  const parsedRelativePathFromResolverTypesToSourceFile = path.parse(relativePath);
104
- const relativeImportPathFromResolverTypesToSourceFile = (0, utils_1.normalizeRelativePath)(path.posix.join(parsedRelativePathFromResolverTypesToSourceFile.dir, parsedRelativePathFromResolverTypesToSourceFile.name));
105
- const fileExtension = (0, utils_1.normalizeImportExtension)(importExtension, emitLegacyCommonJSImports);
99
+ const relativeImportPathFromResolverTypesToSourceFile = normalizeRelativePath(path.posix.join(parsedRelativePathFromResolverTypesToSourceFile.dir, parsedRelativePathFromResolverTypesToSourceFile.name));
100
+ const fileExtension = normalizeImportExtension(importExtension, emitLegacyCommonJSImports);
106
101
  const configImportPath = `${relativeImportPathFromResolverTypesToSourceFile}${fileExtension}#${identifierName}`;
107
102
  if (result[schemaType]) {
108
103
  throw new Error(`GraphQL type "${schemaType}" has duplicated "${identifierName}" mappers:\n - ${configImportPath}\n - ${result[schemaType].configImportPath}`);
@@ -117,4 +112,3 @@ const addTypeMapperDetailsIfValid = ({ kind, identifierNode, typeMappersSuffix,
117
112
  configImportPath,
118
113
  };
119
114
  };
120
- //# sourceMappingURL=collectTypeMappersFromSourceFile.js.map
@@ -0,0 +1 @@
1
+ export * from './parseTypeMappers.js';
@@ -0,0 +1 @@
1
+ export * from './parseTypeMappers.js';
@@ -1,6 +1,6 @@
1
1
  import type { Project, SyntaxKind } from 'ts-morph';
2
- import type { ParseSourcesResult } from '../parseSources';
3
- import type { ImportExtension } from '../utils';
2
+ import type { ParseSourcesResult } from '../parseSources/index.js';
3
+ import type { ImportExtension } from '../utils/index.js';
4
4
  export interface ParseTypeMappersParams {
5
5
  sourceMap: ParseSourcesResult['sourceMap'];
6
6
  resolverTypesPath: string;
@@ -0,0 +1,20 @@
1
+ import * as path from 'path';
2
+ import { collectTypeMappersFromSourceFile } from './collectTypeMappersFromSourceFile.js';
3
+ export const parseTypeMappers = ({ sourceMap, resolverTypesPath, typeMappersRelativeTargetDir, typeMappersFileExtension, typeMappersSuffix, tsMorphProject, emitLegacyCommonJSImports, importExtension, }) => {
4
+ const result = Object.entries(sourceMap).reduce((res, [_, { sourcePath }]) => {
5
+ const typeMapperFilePath = path.posix.join(sourcePath.dir, typeMappersRelativeTargetDir, `${sourcePath.name}${typeMappersFileExtension}`);
6
+ const typeMappersSourceFile = tsMorphProject.addSourceFileAtPathIfExists(typeMapperFilePath);
7
+ if (!typeMappersSourceFile) {
8
+ return res;
9
+ }
10
+ collectTypeMappersFromSourceFile({
11
+ typeMappersSourceFile,
12
+ typeMappersSuffix,
13
+ resolverTypesPath,
14
+ emitLegacyCommonJSImports,
15
+ importExtension,
16
+ }, res);
17
+ return res;
18
+ }, {});
19
+ return result;
20
+ };
@@ -1,4 +1,4 @@
1
1
  import { type Types } from '@graphql-codegen/plugin-helpers';
2
- import { type RawPresetConfig } from './validatePresetConfig';
2
+ import { type RawPresetConfig } from './validatePresetConfig/index.js';
3
3
  export declare const presetName = "@eddeee888/gcg-typescript-resolver-files";
4
4
  export declare const preset: Types.OutputPreset<RawPresetConfig>;
package/dist/preset.js ADDED
@@ -0,0 +1,214 @@
1
+ import * as path from 'path';
2
+ import * as addPlugin from '@graphql-codegen/add';
3
+ import * as schemaAstPlugin from '@graphql-codegen/schema-ast';
4
+ import * as typeScriptPlugin from '@graphql-codegen/typescript';
5
+ import { plugin as typeScriptResolversPlugin } from '@graphql-codegen/typescript-resolvers';
6
+ import { createNoopProfiler, } from '@graphql-codegen/plugin-helpers';
7
+ import { Project } from 'ts-morph';
8
+ import { defineConfig as defineServerConfig } from '@eddeee888/gcg-server-config';
9
+ import { parseSources } from './parseSources/index.js';
10
+ import { parseGraphQLSchema } from './parseGraphQLSchema/index.js';
11
+ import { generateResolverFiles, } from './generateResolverFiles/index.js';
12
+ import { generateTypeDefsFiles } from './generateTypeDefsFiles/index.js';
13
+ import { getGraphQLObjectTypeResolversToGenerate } from './getGraphQLObjectTypeResolversToGenerate/index.js';
14
+ import { addVirtualTypesFileToTsMorphProject } from './addVirtualTypesFileToTsMorphProject/index.js';
15
+ import { parseTypeMappers } from './parseTypeMappers/index.js';
16
+ import { validatePresetConfig, } from './validatePresetConfig/index.js';
17
+ import { validateAndMergeParsedConfigs } from './validateAndMergeParsedConfigs/index.js';
18
+ import { normalizeAddConfigPath } from './normalizeAddConfigPath/index.js';
19
+ import { logger } from './utils/index.js';
20
+ export const presetName = '@eddeee888/gcg-typescript-resolver-files';
21
+ export const preset = {
22
+ buildGeneratesSection: async ({ schema, schemaAst, presetConfig: rawPresetConfig, baseOutputDir, config: baseConfig, profiler = createNoopProfiler(), }) => {
23
+ if (!schemaAst) {
24
+ throw new Error('Missing schemaAst');
25
+ }
26
+ const sources = schemaAst.extensions.extendedSources;
27
+ if (!Array.isArray(sources) || sources.length === 0) {
28
+ throw new Error('Empty Sources. Make sure schema files are parsed correctly.');
29
+ }
30
+ const { add, resolverTypesPath: relativeResolverTypesPathFromBaseOutputDir, resolverRelativeTargetDir, mappersRelativeTargetDir: typeMappersRelativeTargetDir, mappersFileExtension: typeMappersFileExtension, mappersSuffix: typeMappersSuffix, resolverMainFile, resolverMainFileMode, resolverGeneration, typeDefsFilePath, typeDefsFileMode, mergeSchema, moduleNamingMode, scalarsModule, scalarsOverrides, mode, whitelistedModules, blacklistedModules, externalResolvers, typesPluginsConfig, tsMorphProjectOptions, fixObjectTypeResolvers, emitLegacyCommonJSImports, importExtension, } = validatePresetConfig(rawPresetConfig, baseConfig);
31
+ const resolverTypesPath = path.posix.join(baseOutputDir, relativeResolverTypesPathFromBaseOutputDir);
32
+ const normalizedAdd = normalizeAddConfigPath({ add, baseOutputDir });
33
+ const { sourceMap } = parseSources({
34
+ sources,
35
+ baseOutputDir,
36
+ moduleNamingMode,
37
+ });
38
+ const tsMorphProject = await profiler.run(async () => new Project(tsMorphProjectOptions), createProfilerRunName('Initialising ts-morph project'));
39
+ const typeMappersMap = await profiler.run(async () => parseTypeMappers({
40
+ sourceMap,
41
+ resolverTypesPath,
42
+ typeMappersRelativeTargetDir,
43
+ typeMappersFileExtension,
44
+ typeMappersSuffix,
45
+ tsMorphProject,
46
+ emitLegacyCommonJSImports,
47
+ importExtension,
48
+ }), createProfilerRunName('parseTypeMappers'));
49
+ const generatesSection = [];
50
+ const parsedGraphQLSchemaMeta = await profiler.run(async () => parseGraphQLSchema({
51
+ schemaAst,
52
+ sourceMap,
53
+ resolverTypesPath,
54
+ scalarsModule,
55
+ scalarsOverrides,
56
+ typeMappersMap,
57
+ mode,
58
+ baseOutputDir,
59
+ resolverRelativeTargetDir,
60
+ whitelistedModules,
61
+ blacklistedModules,
62
+ }), createProfilerRunName('parseGraphQLSchema'));
63
+ const mergedConfig = validateAndMergeParsedConfigs({
64
+ unmanagedNonScalarResolvers: externalResolvers,
65
+ parsedGraphQLSchemaMeta,
66
+ });
67
+ // typescript and typescript-resolvers plugins config
68
+ const resolverTypesConfig = defineServerConfig({
69
+ optionalResolveType: true,
70
+ resolversNonOptionalTypename: {
71
+ unionMember: true,
72
+ interfaceImplementingType: true,
73
+ },
74
+ namingConvention: 'keep',
75
+ emitLegacyCommonJSImports,
76
+ ...typesPluginsConfig,
77
+ scalars: mergedConfig.scalarTypes,
78
+ mappers: {
79
+ ...mergedConfig.typeMappers,
80
+ ...typesPluginsConfig.mappers,
81
+ },
82
+ });
83
+ // typesSourceFile is the virtual `types.generated.ts`
84
+ // This is useful when we need to do static analysis as most types come from this file
85
+ // e.g. comparing mappers field type vs schema object field type
86
+ const { typesSourceFile, meta: generatedTypesFileMeta } = await profiler.run(() => addVirtualTypesFileToTsMorphProject({
87
+ tsMorphProject,
88
+ schemaAst,
89
+ resolverTypesConfig,
90
+ resolverTypesPath,
91
+ addConfig: normalizedAdd?.[resolverTypesPath],
92
+ }), createProfilerRunName('addVirtualTypesFileToTsMorphProject'));
93
+ const graphQLObjectTypeResolversToGenerate = await profiler.run(async () => fixObjectTypeResolvers.object === 'disabled'
94
+ ? {}
95
+ : getGraphQLObjectTypeResolversToGenerate({
96
+ mode: fixObjectTypeResolvers.object,
97
+ tsMorphProject,
98
+ typesSourceFile,
99
+ userDefinedSchemaObjectTypeMap: mergedConfig.userDefinedSchemaTypeMap.object,
100
+ typeMappersMap,
101
+ generatedTypesFileMeta,
102
+ }), createProfilerRunName('getGraphQLObjectTypeResolversToGenerate'));
103
+ const resolverTypesFilePlugins = [
104
+ { typescript: {} },
105
+ { ['typescript-resolvers']: {} },
106
+ ];
107
+ if (normalizedAdd?.[resolverTypesPath]) {
108
+ resolverTypesFilePlugins.push({
109
+ add: normalizedAdd[resolverTypesPath],
110
+ });
111
+ }
112
+ const resolverTypesFile = {
113
+ filename: resolverTypesPath,
114
+ pluginMap: {
115
+ typescript: typeScriptPlugin,
116
+ 'typescript-resolvers': { plugin: typeScriptResolversPlugin },
117
+ add: addPlugin,
118
+ },
119
+ plugins: resolverTypesFilePlugins,
120
+ config: resolverTypesConfig,
121
+ schema,
122
+ documents: [],
123
+ };
124
+ generatesSection.push(resolverTypesFile);
125
+ // typeDefs
126
+ if (typeDefsFilePath) {
127
+ const typeDefsFiles = await profiler.run(async () => {
128
+ return generateTypeDefsFiles({
129
+ baseOutputDir,
130
+ typeDefsFilePath,
131
+ typeDefsFileMode,
132
+ sourceMap,
133
+ whitelistedModules,
134
+ blacklistedModules,
135
+ });
136
+ }, createProfilerRunName('generateTypeDefsFiles'));
137
+ Object.entries(typeDefsFiles).forEach(([filename, meta]) => {
138
+ const typeDefsFile = {
139
+ filename: filename,
140
+ pluginMap: { add: addPlugin },
141
+ plugins: [{ add: { content: meta.content } }],
142
+ config: {},
143
+ schema,
144
+ documents: [],
145
+ };
146
+ generatesSection.push(typeDefsFile);
147
+ });
148
+ }
149
+ // merge schema
150
+ if (mergeSchema) {
151
+ generatesSection.push({
152
+ filename: path.posix.join(baseOutputDir, mergeSchema.path),
153
+ pluginMap: { ['schema-ast']: schemaAstPlugin },
154
+ plugins: [{ ['schema-ast']: {} }],
155
+ schema,
156
+ documents: [],
157
+ config: mergeSchema.config,
158
+ });
159
+ }
160
+ // resolver files
161
+ const result = {
162
+ files: {},
163
+ externalImports: {},
164
+ };
165
+ await profiler.run(async () => generateResolverFiles({
166
+ config: {
167
+ baseOutputDir,
168
+ resolverTypesPath,
169
+ resolverRelativeTargetDir,
170
+ resolverMainFile,
171
+ resolverMainFileMode,
172
+ resolverGeneration,
173
+ typeMappersMap,
174
+ parsedGraphQLSchemaMeta,
175
+ graphQLObjectTypeResolversToGenerate,
176
+ tsMorph: {
177
+ project: tsMorphProject,
178
+ typesSourceFile,
179
+ },
180
+ fixObjectTypeResolvers,
181
+ unmanagedResolvers: {
182
+ ...mergedConfig.unmanagedResolvers,
183
+ },
184
+ emitLegacyCommonJSImports,
185
+ importExtension,
186
+ generatedTypesFileMeta,
187
+ },
188
+ result,
189
+ }), createProfilerRunName('generateResolverFiles'));
190
+ const resultFilesArray = Object.entries(result.files);
191
+ const resolverFilesGenerateOptions = resultFilesArray
192
+ .filter(([_, file]) => {
193
+ // Only generate files that are:
194
+ // 1. `virtual` - because file doesn't exist yet
195
+ // 2. on `filesystem` and with `contentUpdated` - because file content has been updated, so we want to apply the changes
196
+ return (file.filesystem.type === 'virtual' ||
197
+ (file.filesystem.type === 'filesystem' &&
198
+ file.filesystem.contentUpdated === true));
199
+ })
200
+ .map(([filename, { content }]) => {
201
+ return {
202
+ filename,
203
+ pluginMap: { add: addPlugin },
204
+ plugins: [{ add: { content } }],
205
+ config: {},
206
+ schema,
207
+ documents: [],
208
+ };
209
+ });
210
+ logger.debug(`Applying changes to ${resolverFilesGenerateOptions.length}/${resultFilesArray.length} files. (${resultFilesArray.length - resolverFilesGenerateOptions.length} skipped files because they are already on filesystem and are not updated)`);
211
+ return [...resolverFilesGenerateOptions, ...generatesSection];
212
+ },
213
+ };
214
+ const createProfilerRunName = (traceName) => `[${presetName}]: ${traceName}`;
@@ -0,0 +1,7 @@
1
+ import * as path from 'path';
2
+ /**
3
+ * It is process.cwd() but normalised for all OS
4
+ */
5
+ export const cwd = () => {
6
+ return process.cwd().split(path.sep).join(path.posix.sep);
7
+ };
@@ -0,0 +1,15 @@
1
+ import { presetName } from '../preset.js';
2
+ /**
3
+ * Shared message formatter
4
+ */
5
+ export const fmt = {
6
+ error: (input, type) => {
7
+ return `[${presetName}] \x1b[31mERROR:\x1b[0m ${type} - ${input}`;
8
+ },
9
+ warn: (input) => {
10
+ return `[${presetName}] \x1b[33mWARN:\x1b[0m ${input}`;
11
+ },
12
+ debug: (input) => {
13
+ return `[${presetName}] \x1b[35mDEBUG:\x1b[0m ${input}`;
14
+ },
15
+ };
@@ -0,0 +1,12 @@
1
+ export * from './cwd.js';
2
+ export * from './logger.js';
3
+ export * from './fmt.js';
4
+ export * from './parseLocationForWhitelistedModule.js';
5
+ export * from './isNativeNamedType.js';
6
+ export * from './isRootObjectType.js';
7
+ export * from './isWhitelistedModule.js';
8
+ export * from './printImportLine.js';
9
+ export * from './normalizeRelativePath.js';
10
+ export * from './relativeModulePath.js';
11
+ export * from './isMatchResolverNamePattern.js';
12
+ export * from './normalizeImportExtension.js';
@@ -0,0 +1,12 @@
1
+ export * from './cwd.js';
2
+ export * from './logger.js';
3
+ export * from './fmt.js';
4
+ export * from './parseLocationForWhitelistedModule.js';
5
+ export * from './isNativeNamedType.js';
6
+ export * from './isRootObjectType.js';
7
+ export * from './isWhitelistedModule.js';
8
+ export * from './printImportLine.js';
9
+ export * from './normalizeRelativePath.js';
10
+ export * from './relativeModulePath.js';
11
+ export * from './isMatchResolverNamePattern.js';
12
+ export * from './normalizeImportExtension.js';
@@ -1,15 +1,11 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.isMatchResolverNamePattern = void 0;
4
- const tslib_1 = require("tslib");
5
- const micromatch_1 = tslib_1.__importDefault(require("micromatch"));
1
+ import micromatch from 'micromatch';
6
2
  /**
7
3
  * @description Wrapper function to return true if `value` matches on of the `pattern`s
8
4
  */
9
- const isMatchResolverNamePattern = ({ pattern, value, }) => {
5
+ export const isMatchResolverNamePattern = ({ pattern, value, }) => {
10
6
  const normalizedPatterns = typeof pattern === 'string' ? [pattern] : pattern;
11
7
  const nonEmptyNormalizedPatterns = normalizedPatterns.filter(Boolean);
12
- const matchedValues = (0, micromatch_1.default)([value], nonEmptyNormalizedPatterns, {
8
+ const matchedValues = micromatch([value], nonEmptyNormalizedPatterns, {
13
9
  // `micromatch` mainly matches filesystems whilst we want this function
14
10
  // to match object-like path pattern e.g.
15
11
  // - `book.Query.books`
@@ -20,5 +16,3 @@ const isMatchResolverNamePattern = ({ pattern, value, }) => {
20
16
  });
21
17
  return matchedValues.length > 0;
22
18
  };
23
- exports.isMatchResolverNamePattern = isMatchResolverNamePattern;
24
- //# sourceMappingURL=isMatchResolverNamePattern.js.map
@@ -0,0 +1,13 @@
1
+ import { isIntrospectionType, isSpecifiedScalarType, } from 'graphql';
2
+ export const isNativeNamedType = (namedType) => {
3
+ // "Native" NamedType in this context means the following:
4
+ // 1. introspection types i.e. with `__` prefixes
5
+ // 2. base scalars e.g. Boolean, Int, etc.
6
+ // 3. Other natives (mostly base scalars) which was not defined in the schema i.e. no `astNode`
7
+ if (isSpecifiedScalarType(namedType) ||
8
+ isIntrospectionType(namedType) ||
9
+ !namedType.astNode) {
10
+ return true;
11
+ }
12
+ return false;
13
+ };
@@ -0,0 +1,3 @@
1
+ export const isRootObjectType = (typeName) => typeName === 'Query' ||
2
+ typeName === 'Mutation' ||
3
+ typeName === 'Subscription';
@@ -1,7 +1,4 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.isWhitelistedModule = void 0;
4
- const isWhitelistedModule = ({ moduleName, whitelistedModules, blacklistedModules, }) => {
1
+ export const isWhitelistedModule = ({ moduleName, whitelistedModules, blacklistedModules, }) => {
5
2
  if (blacklistedModules.includes(moduleName)) {
6
3
  return false;
7
4
  }
@@ -12,5 +9,3 @@ const isWhitelistedModule = ({ moduleName, whitelistedModules, blacklistedModule
12
9
  : whitelistedModules.includes(moduleName);
13
10
  return isInWhitelistedModule;
14
11
  };
15
- exports.isWhitelistedModule = isWhitelistedModule;
16
- //# sourceMappingURL=isWhitelistedModule.js.map
@@ -1,4 +1,4 @@
1
- import { fmt } from './fmt';
1
+ import { fmt } from './fmt.js';
2
2
  export declare const logger: {
3
3
  debug: (input: string) => void;
4
4
  warn: (input: string) => void;
@@ -0,0 +1,13 @@
1
+ import { presetName } from '../preset.js';
2
+ import { fmt } from './fmt.js';
3
+ export const logger = {
4
+ debug: (...args) => {
5
+ const debugEnvVar = process.env.DEBUG || '';
6
+ if (debugEnvVar.includes(presetName)) {
7
+ console.debug(`\x1b[34m${fmt.debug(...args)}`);
8
+ }
9
+ },
10
+ warn: (...args) => {
11
+ console.warn(`\x1b[34m${fmt.warn(...args)}`);
12
+ },
13
+ };
@@ -0,0 +1,9 @@
1
+ export function normalizeImportExtension(importExtension, emitLegacyCommonJSImports) {
2
+ if (importExtension !== undefined) {
3
+ return importExtension;
4
+ }
5
+ if (emitLegacyCommonJSImports !== undefined) {
6
+ return emitLegacyCommonJSImports ? '' : '.js';
7
+ }
8
+ return '';
9
+ }
@@ -0,0 +1,6 @@
1
+ export const normalizeRelativePath = (path) => {
2
+ if (!path.startsWith('../') || !path.startsWith('./')) {
3
+ return `./${path}`;
4
+ }
5
+ return path;
6
+ };
@@ -1,5 +1,5 @@
1
1
  import type { Location } from 'graphql';
2
- import type { ParseSourcesResult, ParsedSource } from '../parseSources';
2
+ import type { ParseSourcesResult, ParsedSource } from '../parseSources/index.js';
3
3
  export interface ParseLocationForWhitelistedModule {
4
4
  location: Location | undefined;
5
5
  sourceMap: ParseSourcesResult['sourceMap'];
@@ -0,0 +1,17 @@
1
+ import { isWhitelistedModule } from './isWhitelistedModule.js';
2
+ export const parseLocationForWhitelistedModule = ({ location, sourceMap, whitelistedModules, blacklistedModules, }) => {
3
+ if (!location) {
4
+ throw new Error('Location is invalid');
5
+ }
6
+ const sourceFilename = location.source.name;
7
+ const sourceFile = sourceMap[sourceFilename];
8
+ if (!sourceFile) {
9
+ throw new Error(`Unable to find ${sourceFilename} in sourceMap`);
10
+ }
11
+ const isWhitelisted = isWhitelistedModule({
12
+ moduleName: sourceFile.moduleName,
13
+ whitelistedModules,
14
+ blacklistedModules,
15
+ });
16
+ return isWhitelisted ? sourceFile : undefined;
17
+ };
@@ -1,4 +1,4 @@
1
- import { type ImportExtension } from "./normalizeImportExtension";
1
+ import { type ImportExtension } from './normalizeImportExtension.js';
2
2
  export interface ImportLineMeta {
3
3
  isTypeImport: boolean;
4
4
  module: string;
@@ -1,8 +1,5 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.printImportLine = printImportLine;
4
- const normalizeImportExtension_1 = require("./normalizeImportExtension");
5
- function printImportLine({ isTypeImport, module, moduleType, namedImports, defaultImport, emitLegacyCommonJSImports, importExtension, }) {
1
+ import { normalizeImportExtension, } from './normalizeImportExtension.js';
2
+ export function printImportLine({ isTypeImport, module, moduleType, namedImports, defaultImport, emitLegacyCommonJSImports, importExtension, }) {
6
3
  const typeImportKeyword = isTypeImport ? 'type' : '';
7
4
  const hasDefaultImport = Boolean(defaultImport);
8
5
  const hasNamedImports = namedImports.length > 0;
@@ -13,7 +10,7 @@ function printImportLine({ isTypeImport, module, moduleType, namedImports, defau
13
10
  if (moduleType !== 'preserve') {
14
11
  const isFile = moduleType === 'file';
15
12
  if (isFile) {
16
- fileExt = (0, normalizeImportExtension_1.normalizeImportExtension)(importExtension, emitLegacyCommonJSImports);
13
+ fileExt = normalizeImportExtension(importExtension, emitLegacyCommonJSImports);
17
14
  }
18
15
  }
19
16
  return `import ${typeImportKeyword} ${defaultImport || ''} ${hasDefaultImport && hasNamedImports ? ',' : ''} ${namedImportsString} from '${normalizeModuleExtensionForImport(module)}${fileExt}';`;
@@ -33,4 +30,3 @@ const printNamedImportSpecifier = (namedImport) => {
33
30
  }
34
31
  return `${namedImport.propertyName} as ${namedImport.identifierName}`;
35
32
  };
36
- //# sourceMappingURL=printImportLine.js.map
@@ -0,0 +1,6 @@
1
+ import * as path from 'path';
2
+ import { normalizeRelativePath } from './normalizeRelativePath.js';
3
+ export const relativeModulePath = (from, to) => {
4
+ const rawPath = path.posix.relative(from, to);
5
+ return normalizeRelativePath(rawPath);
6
+ };
@@ -0,0 +1 @@
1
+ export * from './validateAndMergeParsedConfigs.js';
@@ -0,0 +1 @@
1
+ export * from './validateAndMergeParsedConfigs.js';
@@ -1,5 +1,5 @@
1
- import type { ParsedGraphQLSchemaMeta } from '../parseGraphQLSchema';
2
- import type { ParsedPresetConfig, ScalarsOverridesType } from '../validatePresetConfig';
1
+ import type { ParsedGraphQLSchemaMeta } from '../parseGraphQLSchema/index.js';
2
+ import type { ParsedPresetConfig, ScalarsOverridesType } from '../validatePresetConfig/index.js';
3
3
  interface MergedConfig {
4
4
  userDefinedSchemaTypeMap: ParsedGraphQLSchemaMeta['userDefinedSchemaTypeMap'];
5
5
  scalarTypes: Record<string, ScalarsOverridesType>;
@@ -1,19 +1,15 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.validateAndMergeParsedConfigs = void 0;
4
- const utils_1 = require("../utils");
1
+ import { fmt } from '../utils/index.js';
5
2
  /**
6
3
  * validateAndMergeParsedConfigs is used to make sure all parsed configs do not incorrectly override each other.
7
4
  * Use this to ensure there's only one way of doing something. e.g.
8
5
  * - scalarsOverrides must be used over externalResolvers to override scalars
9
6
  */
10
- const validateAndMergeParsedConfigs = ({ unmanagedNonScalarResolvers, parsedGraphQLSchemaMeta: { userDefinedSchemaTypeMap, pluginsConfig: { scalarsModuleResolvers, unmanagedScalarResolvers, defaultScalarTypesMap, defaultTypeMappers, }, }, }) => {
7
+ export const validateAndMergeParsedConfigs = ({ unmanagedNonScalarResolvers, parsedGraphQLSchemaMeta: { userDefinedSchemaTypeMap, pluginsConfig: { scalarsModuleResolvers, unmanagedScalarResolvers, defaultScalarTypesMap, defaultTypeMappers, }, }, }) => {
11
8
  Object.keys(scalarsModuleResolvers).forEach((schemaType) => {
12
- var _a;
13
9
  if (
14
10
  // If the scalar is defined on the filesystem, it means user wants to use their custom definition.
15
11
  // This means we should use it, instead of importing it from scalar module
16
- (_a = userDefinedSchemaTypeMap.scalar[schemaType]) === null || _a === void 0 ? void 0 : _a.resolverFile.isOnFilesystem) {
12
+ userDefinedSchemaTypeMap.scalar[schemaType]?.resolverFile.isOnFilesystem) {
17
13
  delete scalarsModuleResolvers[schemaType];
18
14
  }
19
15
  });
@@ -27,15 +23,22 @@ const validateAndMergeParsedConfigs = ({ unmanagedNonScalarResolvers, parsedGrap
27
23
  }, {});
28
24
  Object.keys(unmanagedNonScalarResolvers).forEach((schemaType) => {
29
25
  if (userDefinedSchemaTypeMap.scalar[schemaType]) {
30
- throw new Error(utils_1.fmt.error(`Scalar "${schemaType}" found in presetConfig.externalResolvers. Use presetConfig.scalarsOverrides to override scalar implementation and type. Remove "${schemaType}" from presetConfig.externalResolvers.`, 'Validation'));
26
+ throw new Error(fmt.error(`Scalar "${schemaType}" found in presetConfig.externalResolvers. Use presetConfig.scalarsOverrides to override scalar implementation and type. Remove "${schemaType}" from presetConfig.externalResolvers.`, 'Validation'));
31
27
  }
32
28
  });
33
29
  return {
34
30
  userDefinedSchemaTypeMap,
35
- scalarTypes: Object.assign({}, defaultScalarTypesMap),
36
- typeMappers: Object.assign(Object.assign({}, schemaEnumTypeMappers), defaultTypeMappers),
37
- unmanagedResolvers: Object.assign(Object.assign(Object.assign({}, unmanagedNonScalarResolvers), scalarsModuleResolvers), unmanagedScalarResolvers),
31
+ scalarTypes: {
32
+ ...defaultScalarTypesMap,
33
+ },
34
+ typeMappers: {
35
+ ...schemaEnumTypeMappers,
36
+ ...defaultTypeMappers,
37
+ },
38
+ unmanagedResolvers: {
39
+ ...unmanagedNonScalarResolvers,
40
+ ...scalarsModuleResolvers,
41
+ ...unmanagedScalarResolvers,
42
+ },
38
43
  };
39
44
  };
40
- exports.validateAndMergeParsedConfigs = validateAndMergeParsedConfigs;
41
- //# sourceMappingURL=validateAndMergeParsedConfigs.js.map