@eddeee888/gcg-typescript-resolver-files 0.17.0 → 0.18.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 (287) hide show
  1. package/CHANGELOG.md +816 -0
  2. package/DEVELOPMENT.md +49 -0
  3. package/LICENSE +21 -0
  4. package/README.md +3 -3
  5. package/{src → dist}/addVirtualTypesFileToTsMorphProject/addVirtualTypesFileToTsMorphProject.d.ts +2 -2
  6. package/{src → dist}/addVirtualTypesFileToTsMorphProject/addVirtualTypesFileToTsMorphProject.js +11 -17
  7. package/dist/addVirtualTypesFileToTsMorphProject/index.d.ts +1 -0
  8. package/dist/addVirtualTypesFileToTsMorphProject/index.js +1 -0
  9. package/{src → dist}/defineConfig.d.ts +1 -1
  10. package/{src → dist}/defineConfig.js +4 -10
  11. package/{src → dist}/generateResolverFiles/addExternalResolverImport.d.ts +1 -1
  12. package/{src → dist}/generateResolverFiles/addExternalResolverImport.js +3 -8
  13. package/{src → dist}/generateResolverFiles/addObjectTypeResolversPropertyAssignmentNodesIfNotImplemented.d.ts +1 -1
  14. package/{src → dist}/generateResolverFiles/addObjectTypeResolversPropertyAssignmentNodesIfNotImplemented.js +9 -14
  15. package/{src → dist}/generateResolverFiles/addResolverMainFiles.d.ts +1 -1
  16. package/{src → dist}/generateResolverFiles/addResolverMainFiles.js +11 -17
  17. package/{src → dist}/generateResolverFiles/ensureEnumTypeResolversAreGenerated.d.ts +1 -1
  18. package/{src → dist}/generateResolverFiles/ensureEnumTypeResolversAreGenerated.js +6 -11
  19. package/{src → dist}/generateResolverFiles/generateResolverFiles.d.ts +1 -1
  20. package/dist/generateResolverFiles/generateResolverFiles.js +87 -0
  21. package/{src → dist}/generateResolverFiles/getImportStatementWithExpectedNamedImport.d.ts +1 -1
  22. package/dist/generateResolverFiles/getImportStatementWithExpectedNamedImport.js +14 -0
  23. package/{src → dist}/generateResolverFiles/getVariableStatementWithExpectedIdentifier.d.ts +1 -1
  24. package/{src → dist}/generateResolverFiles/getVariableStatementWithExpectedIdentifier.js +1 -6
  25. package/{src → dist}/generateResolverFiles/handleGraphQLEnumType.d.ts +1 -1
  26. package/{src → dist}/generateResolverFiles/handleGraphQLEnumType.js +6 -11
  27. package/{src → dist}/generateResolverFiles/handleGraphQLInterfaceType.d.ts +1 -1
  28. package/{src → dist}/generateResolverFiles/handleGraphQLInterfaceType.js +6 -11
  29. package/{src → dist}/generateResolverFiles/handleGraphQLObjectType.d.ts +1 -1
  30. package/{src → dist}/generateResolverFiles/handleGraphQLObjectType.js +8 -14
  31. package/dist/generateResolverFiles/handleGraphQLRootObjectTypeField.d.ts +3 -0
  32. package/{src → dist}/generateResolverFiles/handleGraphQLRootObjectTypeField.js +8 -13
  33. package/{src → dist}/generateResolverFiles/handleGraphQLScalarType.d.ts +1 -1
  34. package/{src → dist}/generateResolverFiles/handleGraphQLScalarType.js +6 -11
  35. package/{src → dist}/generateResolverFiles/handleGraphQLUnionType.d.ts +1 -1
  36. package/{src → dist}/generateResolverFiles/handleGraphQLUnionType.js +5 -10
  37. package/dist/generateResolverFiles/index.d.ts +2 -0
  38. package/dist/generateResolverFiles/index.js +1 -0
  39. package/{src → dist}/generateResolverFiles/postProcessFiles.d.ts +1 -1
  40. package/{src → dist}/generateResolverFiles/postProcessFiles.js +24 -26
  41. package/{src → dist}/generateResolverFiles/types.d.ts +6 -6
  42. package/dist/generateResolverFiles/types.js +1 -0
  43. package/{src → dist}/generateResolverFiles/visitNamedType.d.ts +2 -2
  44. package/{src → dist}/generateResolverFiles/visitNamedType.js +3 -8
  45. package/dist/generateTypeDefsFiles/generateTypeDefsContent.js +7 -0
  46. package/{src → dist}/generateTypeDefsFiles/generateTypeDefsFiles.d.ts +3 -3
  47. package/{src → dist}/generateTypeDefsFiles/generateTypeDefsFiles.js +7 -13
  48. package/dist/generateTypeDefsFiles/index.d.ts +1 -0
  49. package/dist/generateTypeDefsFiles/index.js +1 -0
  50. package/{src → dist}/getGraphQLObjectTypeResolversToGenerate/getGraphQLObjectTypeResolversToGenerate.d.ts +3 -3
  51. package/{src → dist}/getGraphQLObjectTypeResolversToGenerate/getGraphQLObjectTypeResolversToGenerate.js +17 -22
  52. package/{src → dist}/getGraphQLObjectTypeResolversToGenerate/getNodePropertyMap.js +5 -10
  53. package/dist/getGraphQLObjectTypeResolversToGenerate/index.d.ts +1 -0
  54. package/dist/getGraphQLObjectTypeResolversToGenerate/index.js +1 -0
  55. package/dist/index.d.ts +3 -0
  56. package/dist/index.js +3 -0
  57. package/dist/normalizeAddConfigPath/index.d.ts +1 -0
  58. package/dist/normalizeAddConfigPath/index.js +1 -0
  59. package/{src → dist}/normalizeAddConfigPath/normalizeAddConfigPath.d.ts +1 -1
  60. package/{src → dist}/normalizeAddConfigPath/normalizeAddConfigPath.js +2 -8
  61. package/{src → dist}/parseGraphQLSchema/index.d.ts +2 -2
  62. package/dist/parseGraphQLSchema/index.js +1 -0
  63. package/{src → dist}/parseGraphQLSchema/normalizeResolverName.d.ts +1 -1
  64. package/{src → dist}/parseGraphQLSchema/normalizeResolverName.js +1 -6
  65. package/{src → dist}/parseGraphQLSchema/parseGraphQLSchema.d.ts +5 -5
  66. package/{src → dist}/parseGraphQLSchema/parseGraphQLSchema.js +43 -50
  67. package/{src → dist}/parseGraphQLSchema/parseLocationForOutputDir.d.ts +2 -2
  68. package/{src → dist}/parseGraphQLSchema/parseLocationForOutputDir.js +4 -10
  69. package/dist/parseSources/index.d.ts +1 -0
  70. package/dist/parseSources/index.js +1 -0
  71. package/{src → dist}/parseSources/parseSources.d.ts +1 -1
  72. package/{src → dist}/parseSources/parseSources.js +2 -7
  73. package/{src → dist}/parseTypeMappers/collectTypeMappersFromSourceFile.d.ts +2 -2
  74. package/{src → dist}/parseTypeMappers/collectTypeMappersFromSourceFile.js +15 -21
  75. package/dist/parseTypeMappers/index.d.ts +1 -0
  76. package/dist/parseTypeMappers/index.js +1 -0
  77. package/{src → dist}/parseTypeMappers/parseTypeMappers.d.ts +2 -2
  78. package/dist/parseTypeMappers/parseTypeMappers.js +20 -0
  79. package/{src → dist}/preset.d.ts +1 -1
  80. package/dist/preset.js +214 -0
  81. package/dist/tsconfig.lib.tsbuildinfo +1 -0
  82. package/dist/utils/cwd.js +7 -0
  83. package/dist/utils/fmt.js +15 -0
  84. package/dist/utils/index.d.ts +12 -0
  85. package/dist/utils/index.js +12 -0
  86. package/{src → dist}/utils/isMatchResolverNamePattern.js +3 -9
  87. package/dist/utils/isNativeNamedType.js +13 -0
  88. package/dist/utils/isRootObjectType.js +3 -0
  89. package/{src → dist}/utils/isWhitelistedModule.js +1 -6
  90. package/{src → dist}/utils/logger.d.ts +1 -1
  91. package/dist/utils/logger.js +13 -0
  92. package/dist/utils/normalizeImportExtension.js +9 -0
  93. package/dist/utils/normalizeRelativePath.js +6 -0
  94. package/{src → dist}/utils/parseLocationForWhitelistedModule.d.ts +1 -1
  95. package/dist/utils/parseLocationForWhitelistedModule.js +17 -0
  96. package/{src → dist}/utils/printImportLine.d.ts +1 -1
  97. package/{src → dist}/utils/printImportLine.js +3 -7
  98. package/dist/utils/relativeModulePath.js +6 -0
  99. package/dist/validateAndMergeParsedConfigs/index.d.ts +1 -0
  100. package/dist/validateAndMergeParsedConfigs/index.js +1 -0
  101. package/{src → dist}/validateAndMergeParsedConfigs/validateAndMergeParsedConfigs.d.ts +2 -2
  102. package/{src → dist}/validateAndMergeParsedConfigs/validateAndMergeParsedConfigs.js +16 -13
  103. package/dist/validatePresetConfig/index.d.ts +1 -0
  104. package/dist/validatePresetConfig/index.js +1 -0
  105. package/{src → dist}/validatePresetConfig/validatePresetConfig.d.ts +2 -2
  106. package/{src → dist}/validatePresetConfig/validatePresetConfig.js +29 -36
  107. package/eslint.config.mjs +22 -0
  108. package/package.json +19 -12
  109. package/project.json +8 -0
  110. package/src/addVirtualTypesFileToTsMorphProject/addVirtualTypesFileToTsMorphProject.ts +109 -0
  111. package/src/addVirtualTypesFileToTsMorphProject/index.ts +1 -0
  112. package/src/defineConfig.spec.ts +76 -0
  113. package/src/defineConfig.ts +37 -0
  114. package/src/generateResolverFiles/addExternalResolverImport.ts +185 -0
  115. package/src/generateResolverFiles/addObjectTypeResolversPropertyAssignmentNodesIfNotImplemented.spec.ts +1174 -0
  116. package/src/generateResolverFiles/addObjectTypeResolversPropertyAssignmentNodesIfNotImplemented.ts +144 -0
  117. package/src/generateResolverFiles/addResolverMainFiles.ts +343 -0
  118. package/src/generateResolverFiles/ensureEnumTypeResolversAreGenerated.ts +51 -0
  119. package/src/generateResolverFiles/generateResolverFiles.ts +148 -0
  120. package/src/generateResolverFiles/getImportStatementWithExpectedNamedImport.spec.ts +127 -0
  121. package/src/generateResolverFiles/getImportStatementWithExpectedNamedImport.ts +25 -0
  122. package/src/generateResolverFiles/getVariableStatementWithExpectedIdentifier.spec.ts +147 -0
  123. package/src/generateResolverFiles/getVariableStatementWithExpectedIdentifier.ts +34 -0
  124. package/src/generateResolverFiles/handleGraphQLEnumType.ts +100 -0
  125. package/src/generateResolverFiles/handleGraphQLInterfaceType.ts +70 -0
  126. package/src/generateResolverFiles/handleGraphQLObjectType.ts +171 -0
  127. package/src/generateResolverFiles/handleGraphQLRootObjectTypeField.ts +105 -0
  128. package/src/generateResolverFiles/handleGraphQLScalarType.ts +81 -0
  129. package/src/generateResolverFiles/handleGraphQLUnionType.ts +68 -0
  130. package/src/generateResolverFiles/index.ts +2 -0
  131. package/src/generateResolverFiles/postProcessFiles.ts +287 -0
  132. package/src/generateResolverFiles/types.ts +203 -0
  133. package/src/generateResolverFiles/visitNamedType.ts +66 -0
  134. package/src/generateTypeDefsFiles/generateTypeDefsContent.ts +15 -0
  135. package/src/generateTypeDefsFiles/generateTypeDefsFiles.ts +100 -0
  136. package/src/generateTypeDefsFiles/index.ts +1 -0
  137. package/src/getGraphQLObjectTypeResolversToGenerate/getGraphQLObjectTypeResolversToGenerate.ts +361 -0
  138. package/src/getGraphQLObjectTypeResolversToGenerate/getNodePropertyMap.spec.ts +115 -0
  139. package/src/getGraphQLObjectTypeResolversToGenerate/getNodePropertyMap.ts +88 -0
  140. package/src/getGraphQLObjectTypeResolversToGenerate/index.ts +1 -0
  141. package/src/index.ts +3 -0
  142. package/src/normalizeAddConfigPath/index.ts +1 -0
  143. package/src/normalizeAddConfigPath/normalizeAddConfigPath.ts +29 -0
  144. package/src/parseGraphQLSchema/index.ts +2 -0
  145. package/src/parseGraphQLSchema/normalizeResolverName.ts +28 -0
  146. package/src/parseGraphQLSchema/parseGraphQLSchema.ts +531 -0
  147. package/src/parseGraphQLSchema/parseLocationForOutputDir.ts +76 -0
  148. package/src/parseSources/index.ts +1 -0
  149. package/src/parseSources/parseSources.ts +83 -0
  150. package/src/parseTypeMappers/collectTypeMappersFromSourceFile.spec.ts +789 -0
  151. package/src/parseTypeMappers/collectTypeMappersFromSourceFile.ts +197 -0
  152. package/src/parseTypeMappers/index.ts +1 -0
  153. package/src/parseTypeMappers/parseTypeMappers.ts +75 -0
  154. package/src/preset.ts +317 -0
  155. package/src/utils/cwd.ts +8 -0
  156. package/src/utils/fmt.ts +16 -0
  157. package/src/utils/index.ts +12 -0
  158. package/src/utils/isMatchResolverNamePattern.ts +27 -0
  159. package/src/utils/isNativeNamedType.ts +21 -0
  160. package/src/utils/isRootObjectType.ts +8 -0
  161. package/src/utils/isWhitelistedModule.spec.ts +71 -0
  162. package/src/utils/isWhitelistedModule.ts +21 -0
  163. package/src/utils/logger.ts +14 -0
  164. package/src/utils/normalizeImportExtension.spec.ts +42 -0
  165. package/src/utils/normalizeImportExtension.ts +16 -0
  166. package/src/utils/normalizeRelativePath.ts +6 -0
  167. package/src/utils/parseLocationForWhitelistedModule.spec.ts +130 -0
  168. package/src/utils/parseLocationForWhitelistedModule.ts +38 -0
  169. package/src/utils/printImportLine.spec.ts +150 -0
  170. package/src/utils/printImportLine.ts +78 -0
  171. package/src/utils/relativeModulePath.ts +7 -0
  172. package/src/validateAndMergeParsedConfigs/index.ts +1 -0
  173. package/src/validateAndMergeParsedConfigs/validateAndMergeParsedConfigs.spec.ts +211 -0
  174. package/src/validateAndMergeParsedConfigs/validateAndMergeParsedConfigs.ts +92 -0
  175. package/src/validatePresetConfig/index.ts +1 -0
  176. package/src/validatePresetConfig/validatePresetConfig.spec.ts +706 -0
  177. package/src/validatePresetConfig/validatePresetConfig.ts +571 -0
  178. package/tsconfig.json +14 -0
  179. package/tsconfig.lib.json +18 -0
  180. package/tsconfig.spec.json +20 -0
  181. package/vite.config.ts +24 -0
  182. package/src/addVirtualTypesFileToTsMorphProject/addVirtualTypesFileToTsMorphProject.js.map +0 -1
  183. package/src/addVirtualTypesFileToTsMorphProject/index.d.ts +0 -1
  184. package/src/addVirtualTypesFileToTsMorphProject/index.js +0 -5
  185. package/src/addVirtualTypesFileToTsMorphProject/index.js.map +0 -1
  186. package/src/defineConfig.js.map +0 -1
  187. package/src/generateResolverFiles/addExternalResolverImport.js.map +0 -1
  188. package/src/generateResolverFiles/addObjectTypeResolversPropertyAssignmentNodesIfNotImplemented.js.map +0 -1
  189. package/src/generateResolverFiles/addResolverMainFiles.js.map +0 -1
  190. package/src/generateResolverFiles/ensureEnumTypeResolversAreGenerated.js.map +0 -1
  191. package/src/generateResolverFiles/generateResolverFiles.js +0 -54
  192. package/src/generateResolverFiles/generateResolverFiles.js.map +0 -1
  193. package/src/generateResolverFiles/getImportStatementWithExpectedNamedImport.js +0 -20
  194. package/src/generateResolverFiles/getImportStatementWithExpectedNamedImport.js.map +0 -1
  195. package/src/generateResolverFiles/getVariableStatementWithExpectedIdentifier.js.map +0 -1
  196. package/src/generateResolverFiles/handleGraphQLEnumType.js.map +0 -1
  197. package/src/generateResolverFiles/handleGraphQLInterfaceType.js.map +0 -1
  198. package/src/generateResolverFiles/handleGraphQLObjectType.js.map +0 -1
  199. package/src/generateResolverFiles/handleGraphQLRootObjectTypeField.d.ts +0 -3
  200. package/src/generateResolverFiles/handleGraphQLRootObjectTypeField.js.map +0 -1
  201. package/src/generateResolverFiles/handleGraphQLScalarType.js.map +0 -1
  202. package/src/generateResolverFiles/handleGraphQLUnionType.js.map +0 -1
  203. package/src/generateResolverFiles/index.d.ts +0 -2
  204. package/src/generateResolverFiles/index.js +0 -6
  205. package/src/generateResolverFiles/index.js.map +0 -1
  206. package/src/generateResolverFiles/postProcessFiles.js.map +0 -1
  207. package/src/generateResolverFiles/types.js +0 -3
  208. package/src/generateResolverFiles/types.js.map +0 -1
  209. package/src/generateResolverFiles/visitNamedType.js.map +0 -1
  210. package/src/generateTypeDefsFiles/generateTypeDefsContent.js +0 -12
  211. package/src/generateTypeDefsFiles/generateTypeDefsContent.js.map +0 -1
  212. package/src/generateTypeDefsFiles/generateTypeDefsFiles.js.map +0 -1
  213. package/src/generateTypeDefsFiles/index.d.ts +0 -1
  214. package/src/generateTypeDefsFiles/index.js +0 -5
  215. package/src/generateTypeDefsFiles/index.js.map +0 -1
  216. package/src/getGraphQLObjectTypeResolversToGenerate/getGraphQLObjectTypeResolversToGenerate.js.map +0 -1
  217. package/src/getGraphQLObjectTypeResolversToGenerate/getNodePropertyMap.js.map +0 -1
  218. package/src/getGraphQLObjectTypeResolversToGenerate/index.d.ts +0 -1
  219. package/src/getGraphQLObjectTypeResolversToGenerate/index.js +0 -5
  220. package/src/getGraphQLObjectTypeResolversToGenerate/index.js.map +0 -1
  221. package/src/index.d.ts +0 -3
  222. package/src/index.js +0 -10
  223. package/src/index.js.map +0 -1
  224. package/src/normalizeAddConfigPath/index.d.ts +0 -1
  225. package/src/normalizeAddConfigPath/index.js +0 -5
  226. package/src/normalizeAddConfigPath/index.js.map +0 -1
  227. package/src/normalizeAddConfigPath/normalizeAddConfigPath.js.map +0 -1
  228. package/src/parseGraphQLSchema/index.js +0 -5
  229. package/src/parseGraphQLSchema/index.js.map +0 -1
  230. package/src/parseGraphQLSchema/normalizeResolverName.js.map +0 -1
  231. package/src/parseGraphQLSchema/parseGraphQLSchema.js.map +0 -1
  232. package/src/parseGraphQLSchema/parseLocationForOutputDir.js.map +0 -1
  233. package/src/parseSources/index.d.ts +0 -1
  234. package/src/parseSources/index.js +0 -5
  235. package/src/parseSources/index.js.map +0 -1
  236. package/src/parseSources/parseSources.js.map +0 -1
  237. package/src/parseTypeMappers/collectTypeMappersFromSourceFile.js.map +0 -1
  238. package/src/parseTypeMappers/index.d.ts +0 -1
  239. package/src/parseTypeMappers/index.js +0 -5
  240. package/src/parseTypeMappers/index.js.map +0 -1
  241. package/src/parseTypeMappers/parseTypeMappers.js +0 -26
  242. package/src/parseTypeMappers/parseTypeMappers.js.map +0 -1
  243. package/src/preset.js +0 -214
  244. package/src/preset.js.map +0 -1
  245. package/src/utils/cwd.js +0 -13
  246. package/src/utils/cwd.js.map +0 -1
  247. package/src/utils/fmt.js +0 -19
  248. package/src/utils/fmt.js.map +0 -1
  249. package/src/utils/index.d.ts +0 -12
  250. package/src/utils/index.js +0 -16
  251. package/src/utils/index.js.map +0 -1
  252. package/src/utils/isMatchResolverNamePattern.js.map +0 -1
  253. package/src/utils/isNativeNamedType.js +0 -18
  254. package/src/utils/isNativeNamedType.js.map +0 -1
  255. package/src/utils/isRootObjectType.js +0 -8
  256. package/src/utils/isRootObjectType.js.map +0 -1
  257. package/src/utils/isWhitelistedModule.js.map +0 -1
  258. package/src/utils/logger.js +0 -17
  259. package/src/utils/logger.js.map +0 -1
  260. package/src/utils/normalizeImportExtension.js +0 -13
  261. package/src/utils/normalizeImportExtension.js.map +0 -1
  262. package/src/utils/normalizeRelativePath.js +0 -11
  263. package/src/utils/normalizeRelativePath.js.map +0 -1
  264. package/src/utils/parseLocationForWhitelistedModule.js +0 -22
  265. package/src/utils/parseLocationForWhitelistedModule.js.map +0 -1
  266. package/src/utils/printImportLine.js.map +0 -1
  267. package/src/utils/relativeModulePath.js +0 -12
  268. package/src/utils/relativeModulePath.js.map +0 -1
  269. package/src/validateAndMergeParsedConfigs/index.d.ts +0 -1
  270. package/src/validateAndMergeParsedConfigs/index.js +0 -5
  271. package/src/validateAndMergeParsedConfigs/index.js.map +0 -1
  272. package/src/validateAndMergeParsedConfigs/validateAndMergeParsedConfigs.js.map +0 -1
  273. package/src/validatePresetConfig/index.d.ts +0 -1
  274. package/src/validatePresetConfig/index.js +0 -5
  275. package/src/validatePresetConfig/index.js.map +0 -1
  276. package/src/validatePresetConfig/validatePresetConfig.js.map +0 -1
  277. /package/{src → dist}/generateTypeDefsFiles/generateTypeDefsContent.d.ts +0 -0
  278. /package/{src → dist}/getGraphQLObjectTypeResolversToGenerate/getNodePropertyMap.d.ts +0 -0
  279. /package/{src → dist}/utils/cwd.d.ts +0 -0
  280. /package/{src → dist}/utils/fmt.d.ts +0 -0
  281. /package/{src → dist}/utils/isMatchResolverNamePattern.d.ts +0 -0
  282. /package/{src → dist}/utils/isNativeNamedType.d.ts +0 -0
  283. /package/{src → dist}/utils/isRootObjectType.d.ts +0 -0
  284. /package/{src → dist}/utils/isWhitelistedModule.d.ts +0 -0
  285. /package/{src → dist}/utils/normalizeImportExtension.d.ts +0 -0
  286. /package/{src → dist}/utils/normalizeRelativePath.d.ts +0 -0
  287. /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}`;