@gqlkit-ts/cli 0.0.1 → 0.1.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 (325) hide show
  1. package/LICENSE +21 -0
  2. package/dist/auto-type-generator/auto-type-generator.d.ts +46 -0
  3. package/dist/auto-type-generator/auto-type-generator.d.ts.map +1 -0
  4. package/dist/auto-type-generator/auto-type-generator.js +353 -0
  5. package/dist/auto-type-generator/auto-type-generator.js.map +1 -0
  6. package/dist/auto-type-generator/auto-type-generator.test.d.ts +2 -0
  7. package/dist/auto-type-generator/auto-type-generator.test.d.ts.map +1 -0
  8. package/dist/auto-type-generator/auto-type-generator.test.js +613 -0
  9. package/dist/auto-type-generator/auto-type-generator.test.js.map +1 -0
  10. package/dist/auto-type-generator/index.d.ts +4 -0
  11. package/dist/auto-type-generator/index.d.ts.map +1 -0
  12. package/dist/auto-type-generator/index.js +3 -0
  13. package/dist/auto-type-generator/index.js.map +1 -0
  14. package/dist/auto-type-generator/name-collision-validator.d.ts +17 -0
  15. package/dist/auto-type-generator/name-collision-validator.d.ts.map +1 -0
  16. package/dist/auto-type-generator/name-collision-validator.js +68 -0
  17. package/dist/auto-type-generator/name-collision-validator.js.map +1 -0
  18. package/dist/auto-type-generator/name-collision-validator.test.d.ts +2 -0
  19. package/dist/auto-type-generator/name-collision-validator.test.d.ts.map +1 -0
  20. package/dist/auto-type-generator/name-collision-validator.test.js +358 -0
  21. package/dist/auto-type-generator/name-collision-validator.test.js.map +1 -0
  22. package/dist/auto-type-generator/naming-convention.d.ts +40 -0
  23. package/dist/auto-type-generator/naming-convention.d.ts.map +1 -0
  24. package/dist/auto-type-generator/naming-convention.js +59 -0
  25. package/dist/auto-type-generator/naming-convention.js.map +1 -0
  26. package/dist/auto-type-generator/naming-convention.test.d.ts +2 -0
  27. package/dist/auto-type-generator/naming-convention.test.d.ts.map +1 -0
  28. package/dist/auto-type-generator/naming-convention.test.js +132 -0
  29. package/dist/auto-type-generator/naming-convention.test.js.map +1 -0
  30. package/dist/cli.d.ts +2 -0
  31. package/dist/cli.d.ts.map +1 -0
  32. package/dist/cli.js +11 -0
  33. package/dist/cli.js.map +1 -0
  34. package/dist/commands/gen.d.ts +32 -0
  35. package/dist/commands/gen.d.ts.map +1 -0
  36. package/dist/commands/gen.js +101 -0
  37. package/dist/commands/gen.js.map +1 -0
  38. package/dist/commands/gen.test.d.ts +2 -0
  39. package/dist/commands/gen.test.d.ts.map +1 -0
  40. package/dist/commands/gen.test.js +226 -0
  41. package/dist/commands/gen.test.js.map +1 -0
  42. package/dist/commands/main.d.ts +12 -0
  43. package/dist/commands/main.d.ts.map +1 -0
  44. package/dist/commands/main.js +5 -0
  45. package/dist/commands/main.js.map +1 -0
  46. package/dist/config/define-config.d.ts +26 -0
  47. package/dist/config/define-config.d.ts.map +1 -0
  48. package/dist/config/define-config.js +27 -0
  49. package/dist/config/define-config.js.map +1 -0
  50. package/dist/config/index.d.ts +3 -0
  51. package/dist/config/index.d.ts.map +1 -0
  52. package/dist/config/index.js +2 -0
  53. package/dist/config/index.js.map +1 -0
  54. package/dist/config/types.d.ts +131 -0
  55. package/dist/config/types.d.ts.map +1 -0
  56. package/dist/config/types.js +2 -0
  57. package/dist/config/types.js.map +1 -0
  58. package/dist/config-loader/index.d.ts +3 -0
  59. package/dist/config-loader/index.d.ts.map +1 -0
  60. package/dist/config-loader/index.js +2 -0
  61. package/dist/config-loader/index.js.map +1 -0
  62. package/dist/config-loader/loader.d.ts +50 -0
  63. package/dist/config-loader/loader.d.ts.map +1 -0
  64. package/dist/config-loader/loader.js +78 -0
  65. package/dist/config-loader/loader.js.map +1 -0
  66. package/dist/config-loader/loader.test.d.ts +2 -0
  67. package/dist/config-loader/loader.test.d.ts.map +1 -0
  68. package/dist/config-loader/loader.test.js +123 -0
  69. package/dist/config-loader/loader.test.js.map +1 -0
  70. package/dist/config-loader/validator.d.ts +13 -0
  71. package/dist/config-loader/validator.d.ts.map +1 -0
  72. package/dist/config-loader/validator.js +497 -0
  73. package/dist/config-loader/validator.js.map +1 -0
  74. package/dist/config-loader/validator.test.d.ts +2 -0
  75. package/dist/config-loader/validator.test.d.ts.map +1 -0
  76. package/dist/config-loader/validator.test.js +846 -0
  77. package/dist/config-loader/validator.test.js.map +1 -0
  78. package/dist/gen-orchestrator/golden.test.d.ts +2 -0
  79. package/dist/gen-orchestrator/golden.test.d.ts.map +1 -0
  80. package/dist/gen-orchestrator/golden.test.js +102 -0
  81. package/dist/gen-orchestrator/golden.test.js.map +1 -0
  82. package/dist/gen-orchestrator/hook-executor/hook-executor.d.ts +25 -0
  83. package/dist/gen-orchestrator/hook-executor/hook-executor.d.ts.map +1 -0
  84. package/dist/gen-orchestrator/hook-executor/hook-executor.js +68 -0
  85. package/dist/gen-orchestrator/hook-executor/hook-executor.js.map +1 -0
  86. package/dist/gen-orchestrator/hook-executor/hook-executor.test.d.ts +2 -0
  87. package/dist/gen-orchestrator/hook-executor/hook-executor.test.d.ts.map +1 -0
  88. package/dist/gen-orchestrator/hook-executor/hook-executor.test.js +167 -0
  89. package/dist/gen-orchestrator/hook-executor/hook-executor.test.js.map +1 -0
  90. package/dist/gen-orchestrator/orchestrator.d.ts +30 -0
  91. package/dist/gen-orchestrator/orchestrator.d.ts.map +1 -0
  92. package/dist/gen-orchestrator/orchestrator.js +407 -0
  93. package/dist/gen-orchestrator/orchestrator.js.map +1 -0
  94. package/dist/gen-orchestrator/reporter/diagnostic-reporter.d.ts +9 -0
  95. package/dist/gen-orchestrator/reporter/diagnostic-reporter.d.ts.map +1 -0
  96. package/dist/gen-orchestrator/reporter/diagnostic-reporter.js +32 -0
  97. package/dist/gen-orchestrator/reporter/diagnostic-reporter.js.map +1 -0
  98. package/dist/gen-orchestrator/reporter/progress-reporter.d.ts +19 -0
  99. package/dist/gen-orchestrator/reporter/progress-reporter.d.ts.map +1 -0
  100. package/dist/gen-orchestrator/reporter/progress-reporter.js +38 -0
  101. package/dist/gen-orchestrator/reporter/progress-reporter.js.map +1 -0
  102. package/dist/gen-orchestrator/reporter/progress-reporter.test.d.ts +2 -0
  103. package/dist/gen-orchestrator/reporter/progress-reporter.test.d.ts.map +1 -0
  104. package/dist/gen-orchestrator/reporter/progress-reporter.test.js +74 -0
  105. package/dist/gen-orchestrator/reporter/progress-reporter.test.js.map +1 -0
  106. package/dist/gen-orchestrator/writer/file-writer.d.ts +13 -0
  107. package/dist/gen-orchestrator/writer/file-writer.d.ts.map +1 -0
  108. package/dist/gen-orchestrator/writer/file-writer.js +22 -0
  109. package/dist/gen-orchestrator/writer/file-writer.js.map +1 -0
  110. package/dist/index.d.ts +3 -0
  111. package/dist/index.d.ts.map +1 -0
  112. package/dist/index.js +2 -0
  113. package/dist/index.js.map +1 -0
  114. package/dist/resolver-extractor/extract-resolvers.d.ts +40 -0
  115. package/dist/resolver-extractor/extract-resolvers.d.ts.map +1 -0
  116. package/dist/resolver-extractor/extract-resolvers.js +2 -0
  117. package/dist/resolver-extractor/extract-resolvers.js.map +1 -0
  118. package/dist/resolver-extractor/extractor/define-api-extractor.d.ts +50 -0
  119. package/dist/resolver-extractor/extractor/define-api-extractor.d.ts.map +1 -0
  120. package/dist/resolver-extractor/extractor/define-api-extractor.js +685 -0
  121. package/dist/resolver-extractor/extractor/define-api-extractor.js.map +1 -0
  122. package/dist/resolver-extractor/index.d.ts +5 -0
  123. package/dist/resolver-extractor/index.d.ts.map +1 -0
  124. package/dist/resolver-extractor/index.js +2 -0
  125. package/dist/resolver-extractor/index.js.map +1 -0
  126. package/dist/resolver-extractor/validator/abstract-resolver-validator.d.ts +25 -0
  127. package/dist/resolver-extractor/validator/abstract-resolver-validator.d.ts.map +1 -0
  128. package/dist/resolver-extractor/validator/abstract-resolver-validator.js +172 -0
  129. package/dist/resolver-extractor/validator/abstract-resolver-validator.js.map +1 -0
  130. package/dist/resolver-extractor/validator/only-validator.d.ts +61 -0
  131. package/dist/resolver-extractor/validator/only-validator.d.ts.map +1 -0
  132. package/dist/resolver-extractor/validator/only-validator.js +76 -0
  133. package/dist/resolver-extractor/validator/only-validator.js.map +1 -0
  134. package/dist/resolver-extractor/validator/only-validator.test.d.ts +8 -0
  135. package/dist/resolver-extractor/validator/only-validator.test.d.ts.map +1 -0
  136. package/dist/resolver-extractor/validator/only-validator.test.js +352 -0
  137. package/dist/resolver-extractor/validator/only-validator.test.js.map +1 -0
  138. package/dist/schema-generator/builder/ast-builder.d.ts +7 -0
  139. package/dist/schema-generator/builder/ast-builder.d.ts.map +1 -0
  140. package/dist/schema-generator/builder/ast-builder.js +417 -0
  141. package/dist/schema-generator/builder/ast-builder.js.map +1 -0
  142. package/dist/schema-generator/builder/ast-builder.test.d.ts +2 -0
  143. package/dist/schema-generator/builder/ast-builder.test.d.ts.map +1 -0
  144. package/dist/schema-generator/builder/ast-builder.test.js +469 -0
  145. package/dist/schema-generator/builder/ast-builder.test.js.map +1 -0
  146. package/dist/schema-generator/emitter/code-emitter.d.ts +7 -0
  147. package/dist/schema-generator/emitter/code-emitter.d.ts.map +1 -0
  148. package/dist/schema-generator/emitter/code-emitter.js +201 -0
  149. package/dist/schema-generator/emitter/code-emitter.js.map +1 -0
  150. package/dist/schema-generator/emitter/sdl-emitter.d.ts +7 -0
  151. package/dist/schema-generator/emitter/sdl-emitter.d.ts.map +1 -0
  152. package/dist/schema-generator/emitter/sdl-emitter.js +11 -0
  153. package/dist/schema-generator/emitter/sdl-emitter.js.map +1 -0
  154. package/dist/schema-generator/generate-schema.d.ts +26 -0
  155. package/dist/schema-generator/generate-schema.d.ts.map +1 -0
  156. package/dist/schema-generator/generate-schema.js +76 -0
  157. package/dist/schema-generator/generate-schema.js.map +1 -0
  158. package/dist/schema-generator/index.d.ts +4 -0
  159. package/dist/schema-generator/index.d.ts.map +1 -0
  160. package/dist/schema-generator/index.js +2 -0
  161. package/dist/schema-generator/index.js.map +1 -0
  162. package/dist/schema-generator/integrator/result-integrator.d.ts +93 -0
  163. package/dist/schema-generator/integrator/result-integrator.d.ts.map +1 -0
  164. package/dist/schema-generator/integrator/result-integrator.js +396 -0
  165. package/dist/schema-generator/integrator/result-integrator.js.map +1 -0
  166. package/dist/schema-generator/pruner/schema-pruner.d.ts +16 -0
  167. package/dist/schema-generator/pruner/schema-pruner.d.ts.map +1 -0
  168. package/dist/schema-generator/pruner/schema-pruner.js +66 -0
  169. package/dist/schema-generator/pruner/schema-pruner.js.map +1 -0
  170. package/dist/schema-generator/resolver-collector/resolver-collector.d.ts +24 -0
  171. package/dist/schema-generator/resolver-collector/resolver-collector.d.ts.map +1 -0
  172. package/dist/schema-generator/resolver-collector/resolver-collector.js +61 -0
  173. package/dist/schema-generator/resolver-collector/resolver-collector.js.map +1 -0
  174. package/dist/shared/constants.d.ts +70 -0
  175. package/dist/shared/constants.d.ts.map +1 -0
  176. package/dist/shared/constants.js +128 -0
  177. package/dist/shared/constants.js.map +1 -0
  178. package/dist/shared/default-value-detector.d.ts +40 -0
  179. package/dist/shared/default-value-detector.d.ts.map +1 -0
  180. package/dist/shared/default-value-detector.js +124 -0
  181. package/dist/shared/default-value-detector.js.map +1 -0
  182. package/dist/shared/diagnostics.d.ts +4 -0
  183. package/dist/shared/diagnostics.d.ts.map +1 -0
  184. package/dist/shared/diagnostics.js +25 -0
  185. package/dist/shared/diagnostics.js.map +1 -0
  186. package/dist/shared/directive-definition-extractor.d.ts +64 -0
  187. package/dist/shared/directive-definition-extractor.d.ts.map +1 -0
  188. package/dist/shared/directive-definition-extractor.js +399 -0
  189. package/dist/shared/directive-definition-extractor.js.map +1 -0
  190. package/dist/shared/directive-detector.d.ts +102 -0
  191. package/dist/shared/directive-detector.d.ts.map +1 -0
  192. package/dist/shared/directive-detector.js +422 -0
  193. package/dist/shared/directive-detector.js.map +1 -0
  194. package/dist/shared/file-scanner.d.ts +25 -0
  195. package/dist/shared/file-scanner.d.ts.map +1 -0
  196. package/dist/shared/file-scanner.js +99 -0
  197. package/dist/shared/file-scanner.js.map +1 -0
  198. package/dist/shared/file-scanner.test.d.ts +2 -0
  199. package/dist/shared/file-scanner.test.d.ts.map +1 -0
  200. package/dist/shared/file-scanner.test.js +138 -0
  201. package/dist/shared/file-scanner.test.js.map +1 -0
  202. package/dist/shared/index.d.ts +10 -0
  203. package/dist/shared/index.d.ts.map +1 -0
  204. package/dist/shared/index.js +8 -0
  205. package/dist/shared/index.js.map +1 -0
  206. package/dist/shared/inline-object-extractor.d.ts +13 -0
  207. package/dist/shared/inline-object-extractor.d.ts.map +1 -0
  208. package/dist/shared/inline-object-extractor.js +65 -0
  209. package/dist/shared/inline-object-extractor.js.map +1 -0
  210. package/dist/shared/inline-object-utils.d.ts +7 -0
  211. package/dist/shared/inline-object-utils.d.ts.map +1 -0
  212. package/dist/shared/inline-object-utils.js +23 -0
  213. package/dist/shared/inline-object-utils.js.map +1 -0
  214. package/dist/shared/interface-detector.d.ts +22 -0
  215. package/dist/shared/interface-detector.d.ts.map +1 -0
  216. package/dist/shared/interface-detector.js +90 -0
  217. package/dist/shared/interface-detector.js.map +1 -0
  218. package/dist/shared/interface-validator.d.ts +9 -0
  219. package/dist/shared/interface-validator.d.ts.map +1 -0
  220. package/dist/shared/interface-validator.js +152 -0
  221. package/dist/shared/interface-validator.js.map +1 -0
  222. package/dist/shared/interface-validator.test.d.ts +2 -0
  223. package/dist/shared/interface-validator.test.d.ts.map +1 -0
  224. package/dist/shared/interface-validator.test.js +145 -0
  225. package/dist/shared/interface-validator.test.js.map +1 -0
  226. package/dist/shared/metadata-detector.d.ts +65 -0
  227. package/dist/shared/metadata-detector.d.ts.map +1 -0
  228. package/dist/shared/metadata-detector.js +333 -0
  229. package/dist/shared/metadata-detector.js.map +1 -0
  230. package/dist/shared/program-factory.d.ts +14 -0
  231. package/dist/shared/program-factory.d.ts.map +1 -0
  232. package/dist/shared/program-factory.js +29 -0
  233. package/dist/shared/program-factory.js.map +1 -0
  234. package/dist/shared/source-location.d.ts +11 -0
  235. package/dist/shared/source-location.d.ts.map +1 -0
  236. package/dist/shared/source-location.js +15 -0
  237. package/dist/shared/source-location.js.map +1 -0
  238. package/dist/shared/tsconfig-loader.d.ts +13 -0
  239. package/dist/shared/tsconfig-loader.d.ts.map +1 -0
  240. package/dist/shared/tsconfig-loader.js +90 -0
  241. package/dist/shared/tsconfig-loader.js.map +1 -0
  242. package/dist/shared/tsdoc-parser.d.ts +12 -0
  243. package/dist/shared/tsdoc-parser.d.ts.map +1 -0
  244. package/dist/shared/tsdoc-parser.js +101 -0
  245. package/dist/shared/tsdoc-parser.js.map +1 -0
  246. package/dist/shared/type-converter.d.ts +3 -0
  247. package/dist/shared/type-converter.d.ts.map +1 -0
  248. package/dist/shared/type-converter.js +72 -0
  249. package/dist/shared/type-converter.js.map +1 -0
  250. package/dist/shared/typescript-utils.d.ts +55 -0
  251. package/dist/shared/typescript-utils.d.ts.map +1 -0
  252. package/dist/shared/typescript-utils.js +149 -0
  253. package/dist/shared/typescript-utils.js.map +1 -0
  254. package/dist/type-extractor/collector/result-collector.d.ts +7 -0
  255. package/dist/type-extractor/collector/result-collector.d.ts.map +1 -0
  256. package/dist/type-extractor/collector/result-collector.js +35 -0
  257. package/dist/type-extractor/collector/result-collector.js.map +1 -0
  258. package/dist/type-extractor/collector/scalar-collector.d.ts +108 -0
  259. package/dist/type-extractor/collector/scalar-collector.d.ts.map +1 -0
  260. package/dist/type-extractor/collector/scalar-collector.js +133 -0
  261. package/dist/type-extractor/collector/scalar-collector.js.map +1 -0
  262. package/dist/type-extractor/converter/field-eligibility.d.ts +34 -0
  263. package/dist/type-extractor/converter/field-eligibility.d.ts.map +1 -0
  264. package/dist/type-extractor/converter/field-eligibility.js +89 -0
  265. package/dist/type-extractor/converter/field-eligibility.js.map +1 -0
  266. package/dist/type-extractor/converter/graphql-converter.d.ts +7 -0
  267. package/dist/type-extractor/converter/graphql-converter.d.ts.map +1 -0
  268. package/dist/type-extractor/converter/graphql-converter.js +299 -0
  269. package/dist/type-extractor/converter/graphql-converter.js.map +1 -0
  270. package/dist/type-extractor/extract-types.d.ts +2 -0
  271. package/dist/type-extractor/extract-types.d.ts.map +1 -0
  272. package/dist/type-extractor/extract-types.js +2 -0
  273. package/dist/type-extractor/extract-types.js.map +1 -0
  274. package/dist/type-extractor/extractor/type-extractor.d.ts +27 -0
  275. package/dist/type-extractor/extractor/type-extractor.d.ts.map +1 -0
  276. package/dist/type-extractor/extractor/type-extractor.js +1116 -0
  277. package/dist/type-extractor/extractor/type-extractor.js.map +1 -0
  278. package/dist/type-extractor/index.d.ts +4 -0
  279. package/dist/type-extractor/index.d.ts.map +1 -0
  280. package/dist/type-extractor/index.js +2 -0
  281. package/dist/type-extractor/index.js.map +1 -0
  282. package/dist/type-extractor/types/diagnostics.d.ts +17 -0
  283. package/dist/type-extractor/types/diagnostics.d.ts.map +1 -0
  284. package/dist/type-extractor/types/diagnostics.js +2 -0
  285. package/dist/type-extractor/types/diagnostics.js.map +1 -0
  286. package/dist/type-extractor/types/graphql.d.ts +40 -0
  287. package/dist/type-extractor/types/graphql.d.ts.map +1 -0
  288. package/dist/type-extractor/types/graphql.js +2 -0
  289. package/dist/type-extractor/types/graphql.js.map +1 -0
  290. package/dist/type-extractor/types/index.d.ts +5 -0
  291. package/dist/type-extractor/types/index.d.ts.map +1 -0
  292. package/dist/type-extractor/types/index.js +2 -0
  293. package/dist/type-extractor/types/index.js.map +1 -0
  294. package/dist/type-extractor/types/typescript.d.ts +86 -0
  295. package/dist/type-extractor/types/typescript.d.ts.map +1 -0
  296. package/dist/type-extractor/types/typescript.js +2 -0
  297. package/dist/type-extractor/types/typescript.js.map +1 -0
  298. package/dist/type-extractor/types/typescript.test.d.ts +2 -0
  299. package/dist/type-extractor/types/typescript.test.d.ts.map +1 -0
  300. package/dist/type-extractor/types/typescript.test.js +287 -0
  301. package/dist/type-extractor/types/typescript.test.js.map +1 -0
  302. package/dist/type-extractor/validator/type-validator.d.ts +11 -0
  303. package/dist/type-extractor/validator/type-validator.d.ts.map +1 -0
  304. package/dist/type-extractor/validator/type-validator.js +53 -0
  305. package/dist/type-extractor/validator/type-validator.js.map +1 -0
  306. package/docs/configuration.md +163 -0
  307. package/docs/getting-started.md +117 -0
  308. package/docs/index.md +32 -0
  309. package/docs/integration/apollo.md +109 -0
  310. package/docs/integration/yoga.md +108 -0
  311. package/docs/schema/abstract-resolvers.md +146 -0
  312. package/docs/schema/directives.md +196 -0
  313. package/docs/schema/documentation.md +176 -0
  314. package/docs/schema/enums.md +162 -0
  315. package/docs/schema/fields.md +184 -0
  316. package/docs/schema/index.md +38 -0
  317. package/docs/schema/inputs.md +277 -0
  318. package/docs/schema/interfaces.md +178 -0
  319. package/docs/schema/objects.md +186 -0
  320. package/docs/schema/queries-mutations.md +205 -0
  321. package/docs/schema/scalars.md +194 -0
  322. package/docs/schema/unions.md +90 -0
  323. package/docs/what-is-gqlkit.md +22 -0
  324. package/package.json +59 -7
  325. package/README.md +0 -45
@@ -0,0 +1,396 @@
1
+ import { validateAbstractResolvers } from "../../resolver-extractor/validator/abstract-resolver-validator.js";
2
+ import { detectCircularInterfaceReferences, validateInterfaceImplementations, } from "../../shared/interface-validator.js";
3
+ import { mergeDescriptions } from "../../type-extractor/collector/scalar-collector.js";
4
+ function convertToExtensionField(field) {
5
+ return {
6
+ name: field.name,
7
+ type: field.type,
8
+ args: field.args,
9
+ resolverSourceFile: field.sourceLocation.file,
10
+ resolverExportName: field.resolverExportName,
11
+ description: field.description,
12
+ deprecated: field.deprecated,
13
+ directives: field.directives,
14
+ };
15
+ }
16
+ function convertResolverTypeExtension(ext) {
17
+ return {
18
+ targetTypeName: ext.targetTypeName,
19
+ fields: ext.fields.map(convertToExtensionField),
20
+ };
21
+ }
22
+ const UNSUPPORTED_LOCATIONS = new Set([
23
+ "SCHEMA",
24
+ "SCALAR",
25
+ "INTERFACE",
26
+ "UNION",
27
+ "ENUM",
28
+ ]);
29
+ function validateDirectiveUsage(context, directiveDefMap, diagnostics) {
30
+ const { directiveName, usageLocation, targetName, sourceFile, line } = context;
31
+ const def = directiveDefMap.get(directiveName);
32
+ if (!def) {
33
+ diagnostics.push({
34
+ code: "UNDEFINED_DIRECTIVE",
35
+ message: `${targetName}: Directive '@${directiveName}' is not defined`,
36
+ severity: "error",
37
+ location: { file: sourceFile, line, column: 1 },
38
+ });
39
+ return;
40
+ }
41
+ for (const loc of def.locations) {
42
+ if (UNSUPPORTED_LOCATIONS.has(loc)) {
43
+ diagnostics.push({
44
+ code: "UNSUPPORTED_DIRECTIVE_LOCATION",
45
+ message: `${targetName}: Directive '@${directiveName}' uses unsupported location ${loc}`,
46
+ severity: "error",
47
+ location: { file: sourceFile, line, column: 1 },
48
+ });
49
+ return;
50
+ }
51
+ }
52
+ const allowedLocations = getCompatibleLocations(usageLocation);
53
+ const hasValidLocation = def.locations.some((loc) => allowedLocations.includes(loc));
54
+ if (!hasValidLocation) {
55
+ diagnostics.push({
56
+ code: "INVALID_DIRECTIVE_LOCATION",
57
+ message: `${targetName}: Directive '@${directiveName}' cannot be used on ${usageLocation} (allowed: ${def.locations.join(", ")})`,
58
+ severity: "error",
59
+ location: { file: sourceFile, line, column: 1 },
60
+ });
61
+ }
62
+ }
63
+ function getCompatibleLocations(usageLocation) {
64
+ switch (usageLocation) {
65
+ case "OBJECT":
66
+ return ["OBJECT"];
67
+ case "FIELD_DEFINITION":
68
+ return ["FIELD_DEFINITION"];
69
+ case "INPUT_OBJECT":
70
+ return ["INPUT_OBJECT"];
71
+ case "INPUT_FIELD_DEFINITION":
72
+ return ["INPUT_FIELD_DEFINITION"];
73
+ }
74
+ }
75
+ export function integrate(typesResult, resolversResult, customScalarNames, collectedScalars, directiveDefinitions, autoGeneratedTypes) {
76
+ const directiveTypeAliasNames = new Set(directiveDefinitions?.map((d) => d.typeAliasName) ?? []);
77
+ const diagnostics = [];
78
+ diagnostics.push(...typesResult.diagnostics.errors);
79
+ diagnostics.push(...typesResult.diagnostics.warnings);
80
+ diagnostics.push(...resolversResult.diagnostics.errors);
81
+ diagnostics.push(...resolversResult.diagnostics.warnings);
82
+ const interfaceValidation = validateInterfaceImplementations(typesResult.types);
83
+ diagnostics.push(...interfaceValidation.diagnostics);
84
+ const circularValidation = detectCircularInterfaceReferences(typesResult.types);
85
+ diagnostics.push(...circularValidation.diagnostics);
86
+ const baseTypes = [];
87
+ const inputTypes = [];
88
+ for (const autoType of autoGeneratedTypes ?? []) {
89
+ if (autoType.kind === "Object") {
90
+ baseTypes.push({
91
+ name: autoType.name,
92
+ kind: "Object",
93
+ fields: autoType.fields.map((f) => ({
94
+ name: f.name,
95
+ type: f.type,
96
+ description: f.description,
97
+ deprecated: f.deprecated,
98
+ directives: f.directives,
99
+ defaultValue: f.defaultValue,
100
+ })),
101
+ unionMembers: null,
102
+ enumValues: null,
103
+ isNumericEnum: false,
104
+ implementedInterfaces: null,
105
+ description: autoType.description,
106
+ deprecated: null,
107
+ sourceFile: autoType.sourceLocation.file,
108
+ directives: null,
109
+ });
110
+ }
111
+ else {
112
+ inputTypes.push({
113
+ name: autoType.name,
114
+ fields: autoType.fields.map((f) => ({
115
+ name: f.name,
116
+ type: f.type,
117
+ description: f.description,
118
+ deprecated: f.deprecated,
119
+ directives: f.directives,
120
+ defaultValue: f.defaultValue,
121
+ })),
122
+ sourceFile: autoType.sourceLocation.file,
123
+ description: autoType.description,
124
+ isOneOf: false,
125
+ });
126
+ }
127
+ }
128
+ for (const type of typesResult.types) {
129
+ if (directiveTypeAliasNames.has(type.name)) {
130
+ continue;
131
+ }
132
+ if (type.kind === "InputObject" || type.kind === "OneOfInputObject") {
133
+ inputTypes.push({
134
+ name: type.name,
135
+ fields: type.fields?.map((field) => ({
136
+ name: field.name,
137
+ type: field.type,
138
+ description: field.description,
139
+ deprecated: field.deprecated,
140
+ directives: field.directives,
141
+ defaultValue: field.defaultValue,
142
+ })) ?? [],
143
+ sourceFile: type.sourceFile,
144
+ description: type.description,
145
+ isOneOf: type.kind === "OneOfInputObject",
146
+ });
147
+ }
148
+ else if (type.kind === "Enum") {
149
+ baseTypes.push({
150
+ name: type.name,
151
+ kind: type.kind,
152
+ fields: null,
153
+ unionMembers: null,
154
+ enumValues: type.enumValues,
155
+ isNumericEnum: type.isNumericEnum,
156
+ implementedInterfaces: null,
157
+ description: type.description,
158
+ deprecated: type.deprecated,
159
+ sourceFile: type.sourceFile,
160
+ directives: type.directives,
161
+ });
162
+ }
163
+ else if (type.kind === "Interface") {
164
+ baseTypes.push({
165
+ name: type.name,
166
+ kind: type.kind,
167
+ fields: type.fields?.map((field) => ({
168
+ name: field.name,
169
+ type: field.type,
170
+ description: field.description,
171
+ deprecated: field.deprecated,
172
+ directives: field.directives,
173
+ defaultValue: field.defaultValue,
174
+ })) ?? null,
175
+ unionMembers: null,
176
+ enumValues: null,
177
+ isNumericEnum: false,
178
+ implementedInterfaces: type.implementedInterfaces ?? null,
179
+ description: type.description,
180
+ deprecated: type.deprecated,
181
+ sourceFile: type.sourceFile,
182
+ directives: type.directives,
183
+ });
184
+ }
185
+ else if (type.kind === "Object") {
186
+ baseTypes.push({
187
+ name: type.name,
188
+ kind: type.kind,
189
+ fields: type.fields?.map((field) => ({
190
+ name: field.name,
191
+ type: field.type,
192
+ description: field.description,
193
+ deprecated: field.deprecated,
194
+ directives: field.directives,
195
+ defaultValue: field.defaultValue,
196
+ })) ?? null,
197
+ unionMembers: null,
198
+ enumValues: null,
199
+ isNumericEnum: false,
200
+ implementedInterfaces: type.implementedInterfaces ?? null,
201
+ description: type.description,
202
+ deprecated: type.deprecated,
203
+ sourceFile: type.sourceFile,
204
+ directives: type.directives,
205
+ });
206
+ }
207
+ else {
208
+ baseTypes.push({
209
+ name: type.name,
210
+ kind: type.kind,
211
+ fields: null,
212
+ unionMembers: type.unionMembers,
213
+ enumValues: null,
214
+ isNumericEnum: false,
215
+ implementedInterfaces: null,
216
+ description: type.description,
217
+ deprecated: null,
218
+ sourceFile: type.sourceFile,
219
+ directives: type.directives,
220
+ });
221
+ }
222
+ }
223
+ const hasQuery = resolversResult.queryFields.fields.length > 0;
224
+ const hasMutation = resolversResult.mutationFields.fields.length > 0;
225
+ if (hasQuery) {
226
+ baseTypes.push({
227
+ name: "Query",
228
+ kind: "Object",
229
+ fields: [],
230
+ unionMembers: null,
231
+ enumValues: null,
232
+ isNumericEnum: false,
233
+ implementedInterfaces: null,
234
+ description: null,
235
+ deprecated: null,
236
+ sourceFile: null,
237
+ directives: null,
238
+ });
239
+ }
240
+ if (hasMutation) {
241
+ baseTypes.push({
242
+ name: "Mutation",
243
+ kind: "Object",
244
+ fields: [],
245
+ unionMembers: null,
246
+ enumValues: null,
247
+ isNumericEnum: false,
248
+ implementedInterfaces: null,
249
+ description: null,
250
+ deprecated: null,
251
+ sourceFile: null,
252
+ directives: null,
253
+ });
254
+ }
255
+ const abstractResolverValidation = validateAbstractResolvers({
256
+ abstractResolvers: resolversResult.abstractTypeResolvers,
257
+ baseTypes,
258
+ });
259
+ diagnostics.push(...abstractResolverValidation.diagnostics);
260
+ const knownTypeNames = new Set([
261
+ ...baseTypes.map((t) => t.name),
262
+ ...inputTypes.map((t) => t.name),
263
+ ]);
264
+ const typeExtensions = [];
265
+ if (hasQuery) {
266
+ typeExtensions.push({
267
+ targetTypeName: "Query",
268
+ fields: resolversResult.queryFields.fields.map(convertToExtensionField),
269
+ });
270
+ }
271
+ if (hasMutation) {
272
+ typeExtensions.push({
273
+ targetTypeName: "Mutation",
274
+ fields: resolversResult.mutationFields.fields.map(convertToExtensionField),
275
+ });
276
+ }
277
+ for (const ext of resolversResult.typeExtensions) {
278
+ if (!knownTypeNames.has(ext.targetTypeName)) {
279
+ const firstField = ext.fields[0];
280
+ diagnostics.push({
281
+ code: "UNKNOWN_TARGET_TYPE",
282
+ message: `Type extension references unknown type '${ext.targetTypeName}'`,
283
+ severity: "error",
284
+ location: firstField
285
+ ? {
286
+ file: firstField.sourceLocation.file,
287
+ line: firstField.sourceLocation.line,
288
+ column: firstField.sourceLocation.column,
289
+ }
290
+ : null,
291
+ });
292
+ }
293
+ else {
294
+ typeExtensions.push(convertResolverTypeExtension(ext));
295
+ }
296
+ }
297
+ const directiveDefMap = new Map();
298
+ for (const def of directiveDefinitions ?? []) {
299
+ directiveDefMap.set(def.name, def);
300
+ }
301
+ for (const type of typesResult.types) {
302
+ if (directiveTypeAliasNames.has(type.name)) {
303
+ continue;
304
+ }
305
+ const usageLocation = type.kind === "InputObject" || type.kind === "OneOfInputObject"
306
+ ? "INPUT_OBJECT"
307
+ : "OBJECT";
308
+ if (type.directives) {
309
+ for (const directive of type.directives) {
310
+ validateDirectiveUsage({
311
+ directiveName: directive.name,
312
+ usageLocation,
313
+ targetName: `Type '${type.name}'`,
314
+ sourceFile: type.sourceFile,
315
+ line: 1,
316
+ }, directiveDefMap, diagnostics);
317
+ }
318
+ }
319
+ const fieldUsageLocation = type.kind === "InputObject" || type.kind === "OneOfInputObject"
320
+ ? "INPUT_FIELD_DEFINITION"
321
+ : "FIELD_DEFINITION";
322
+ for (const field of type.fields ?? []) {
323
+ if (field.directives) {
324
+ for (const directive of field.directives) {
325
+ validateDirectiveUsage({
326
+ directiveName: directive.name,
327
+ usageLocation: fieldUsageLocation,
328
+ targetName: `Field '${type.name}.${field.name}'`,
329
+ sourceFile: type.sourceFile,
330
+ line: 1,
331
+ }, directiveDefMap, diagnostics);
332
+ }
333
+ }
334
+ }
335
+ }
336
+ for (const ext of typeExtensions) {
337
+ for (const field of ext.fields) {
338
+ if (field.directives) {
339
+ for (const directive of field.directives) {
340
+ validateDirectiveUsage({
341
+ directiveName: directive.name,
342
+ usageLocation: "FIELD_DEFINITION",
343
+ targetName: `Field '${ext.targetTypeName}.${field.name}'`,
344
+ sourceFile: field.resolverSourceFile,
345
+ line: 1,
346
+ }, directiveDefMap, diagnostics);
347
+ }
348
+ }
349
+ }
350
+ }
351
+ const hasErrors = diagnostics.some((d) => d.severity === "error");
352
+ const scalarDescriptionMap = new Map();
353
+ if (collectedScalars) {
354
+ for (const scalar of collectedScalars) {
355
+ const description = mergeDescriptions(scalar.descriptions);
356
+ scalarDescriptionMap.set(scalar.scalarName, description);
357
+ }
358
+ }
359
+ const customScalars = customScalarNames && customScalarNames.length > 0
360
+ ? customScalarNames.map((name) => ({
361
+ scalarName: name,
362
+ description: scalarDescriptionMap.get(name) ?? null,
363
+ }))
364
+ : null;
365
+ const numericEnums = baseTypes
366
+ .filter((type) => type.kind === "Enum" && type.isNumericEnum && type.enumValues !== null)
367
+ .map((type) => ({
368
+ enumName: type.name,
369
+ members: type.enumValues
370
+ .filter((value) => value.numericValue !== null)
371
+ .map((value) => ({
372
+ name: value.name,
373
+ numericValue: value.numericValue,
374
+ })),
375
+ }))
376
+ .filter((info) => info.members.length > 0);
377
+ return {
378
+ baseTypes,
379
+ inputTypes,
380
+ typeExtensions,
381
+ customScalarNames: customScalarNames && customScalarNames.length > 0
382
+ ? customScalarNames
383
+ : null,
384
+ customScalars,
385
+ directiveDefinitions: directiveDefinitions && directiveDefinitions.length > 0
386
+ ? directiveDefinitions
387
+ : null,
388
+ abstractTypeResolvers: resolversResult.abstractTypeResolvers,
389
+ numericEnums,
390
+ hasQuery,
391
+ hasMutation,
392
+ hasErrors,
393
+ diagnostics,
394
+ };
395
+ }
396
+ //# sourceMappingURL=result-integrator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"result-integrator.js","sourceRoot":"","sources":["../../../src/schema-generator/integrator/result-integrator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ import { type DocumentNode } from "graphql";
2
+ export interface PruneDocumentNodeInput {
3
+ readonly documentNode: DocumentNode;
4
+ readonly customScalarNames: ReadonlyArray<string> | null;
5
+ }
6
+ export interface PruneDocumentNodeResult {
7
+ readonly documentNode: DocumentNode;
8
+ readonly removedTypes: ReadonlyArray<string>;
9
+ }
10
+ /**
11
+ * Remove unused types from DocumentNode.
12
+ * Types not referenced from Query, Mutation, or Subscription are removed.
13
+ * Custom scalars are preserved and excluded from pruning.
14
+ */
15
+ export declare function pruneDocumentNode(input: PruneDocumentNodeInput): PruneDocumentNodeResult;
16
+ //# sourceMappingURL=schema-pruner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema-pruner.d.ts","sourceRoot":"","sources":["../../../src/schema-generator/pruner/schema-pruner.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,KAAK,YAAY,EAMlB,MAAM,SAAS,CAAC;AAEjB,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAC;IACpC,QAAQ,CAAC,iBAAiB,EAAE,aAAa,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC;CAC1D;AAED,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAC;IACpC,QAAQ,CAAC,YAAY,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;CAC9C;AA8CD;;;;GAIG;AACH,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,sBAAsB,GAC5B,uBAAuB,CAuCzB"}
@@ -0,0 +1,66 @@
1
+ import { pruneSchema } from "@graphql-tools/utils";
2
+ import { buildASTSchema, Kind, parse, print, printSchema, } from "graphql";
3
+ function getTypeNamesFromDocument(documentNode) {
4
+ const typeNames = new Set();
5
+ for (const definition of documentNode.definitions) {
6
+ if (definition.kind === Kind.OBJECT_TYPE_DEFINITION ||
7
+ definition.kind === Kind.INPUT_OBJECT_TYPE_DEFINITION ||
8
+ definition.kind === Kind.ENUM_TYPE_DEFINITION ||
9
+ definition.kind === Kind.UNION_TYPE_DEFINITION ||
10
+ definition.kind === Kind.SCALAR_TYPE_DEFINITION ||
11
+ definition.kind === Kind.INTERFACE_TYPE_DEFINITION) {
12
+ typeNames.add(definition.name.value);
13
+ }
14
+ }
15
+ return typeNames;
16
+ }
17
+ function getTypeNamesFromSchema(schema) {
18
+ const typeNames = new Set();
19
+ const typeMap = schema.getTypeMap();
20
+ for (const typeName of Object.keys(typeMap)) {
21
+ if (!typeName.startsWith("__")) {
22
+ typeNames.add(typeName);
23
+ }
24
+ }
25
+ return typeNames;
26
+ }
27
+ function extractCustomScalarDefinitions(documentNode, customScalarNames) {
28
+ const customScalarSet = new Set(customScalarNames);
29
+ return documentNode.definitions.filter((def) => def.kind === Kind.SCALAR_TYPE_DEFINITION &&
30
+ customScalarSet.has(def.name.value));
31
+ }
32
+ /**
33
+ * Remove unused types from DocumentNode.
34
+ * Types not referenced from Query, Mutation, or Subscription are removed.
35
+ * Custom scalars are preserved and excluded from pruning.
36
+ */
37
+ export function pruneDocumentNode(input) {
38
+ const { documentNode } = input;
39
+ const customScalarNames = input.customScalarNames ?? [];
40
+ const originalTypeNames = getTypeNamesFromDocument(documentNode);
41
+ const customScalarSet = new Set(customScalarNames);
42
+ const customScalarDefinitions = extractCustomScalarDefinitions(documentNode, customScalarNames);
43
+ const sdl = print(documentNode);
44
+ const schema = buildASTSchema(parse(sdl));
45
+ const prunedSchema = pruneSchema(schema, {
46
+ skipPruning: (type) => customScalarSet.has(type.name),
47
+ });
48
+ const prunedSdl = printSchema(prunedSchema);
49
+ const prunedDocument = parse(prunedSdl);
50
+ const prunedTypeNames = getTypeNamesFromSchema(prunedSchema);
51
+ const finalDocument = {
52
+ kind: Kind.DOCUMENT,
53
+ definitions: [...customScalarDefinitions, ...prunedDocument.definitions],
54
+ };
55
+ const removedTypes = [];
56
+ for (const typeName of originalTypeNames) {
57
+ if (!prunedTypeNames.has(typeName) && !customScalarSet.has(typeName)) {
58
+ removedTypes.push(typeName);
59
+ }
60
+ }
61
+ return {
62
+ documentNode: finalDocument,
63
+ removedTypes: removedTypes.sort(),
64
+ };
65
+ }
66
+ //# sourceMappingURL=schema-pruner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema-pruner.js","sourceRoot":"","sources":["../../../src/schema-generator/pruner/schema-pruner.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ import type { IntegratedResult } from "../integrator/result-integrator.js";
2
+ export interface FieldResolver {
3
+ readonly fieldName: string;
4
+ readonly sourceFile: string;
5
+ readonly resolverValueName: string;
6
+ readonly isDirectExport: boolean;
7
+ }
8
+ export interface TypeResolvers {
9
+ readonly typeName: string;
10
+ readonly fields: ReadonlyArray<FieldResolver>;
11
+ }
12
+ export interface AbstractTypeResolverInfo {
13
+ readonly typeName: string;
14
+ readonly resolverKey: "__resolveType" | "__isTypeOf";
15
+ readonly sourceFile: string;
16
+ readonly exportName: string;
17
+ }
18
+ export interface ResolverInfo {
19
+ readonly types: ReadonlyArray<TypeResolvers>;
20
+ readonly sourceFiles: ReadonlyArray<string>;
21
+ readonly abstractTypeResolvers: ReadonlyArray<AbstractTypeResolverInfo>;
22
+ }
23
+ export declare function collectResolverInfo(integratedResult: IntegratedResult): ResolverInfo;
24
+ //# sourceMappingURL=resolver-collector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolver-collector.d.ts","sourceRoot":"","sources":["../../../src/schema-generator/resolver-collector/resolver-collector.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAEV,gBAAgB,EAEjB,MAAM,oCAAoC,CAAC;AAE5C,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAC;CAClC;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC,aAAa,CAAC,CAAC;CAC/C;AAED,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,WAAW,EAAE,eAAe,GAAG,YAAY,CAAC;IACrD,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC,aAAa,CAAC,CAAC;IAC7C,QAAQ,CAAC,WAAW,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IAC5C,QAAQ,CAAC,qBAAqB,EAAE,aAAa,CAAC,wBAAwB,CAAC,CAAC;CACzE;AAmDD,wBAAgB,mBAAmB,CACjC,gBAAgB,EAAE,gBAAgB,GACjC,YAAY,CAuCd"}
@@ -0,0 +1,61 @@
1
+ function getResolverValueName(typeName) {
2
+ return `${typeName.charAt(0).toLowerCase()}${typeName.slice(1)}Resolver`;
3
+ }
4
+ function collectFieldResolver(field, fallbackResolverValueName) {
5
+ const isDirectExport = field.resolverExportName !== null;
6
+ const resolverValueName = isDirectExport
7
+ ? field.resolverExportName
8
+ : fallbackResolverValueName;
9
+ return {
10
+ fieldName: field.name,
11
+ sourceFile: field.resolverSourceFile,
12
+ resolverValueName,
13
+ isDirectExport,
14
+ };
15
+ }
16
+ function collectFieldResolvers(ext) {
17
+ const fallbackResolverValueName = getResolverValueName(ext.targetTypeName);
18
+ return ext.fields.map((field) => collectFieldResolver(field, fallbackResolverValueName));
19
+ }
20
+ function convertToAbstractTypeResolverInfo(resolver) {
21
+ return {
22
+ typeName: resolver.targetTypeName,
23
+ resolverKey: resolver.kind === "resolveType" ? "__resolveType" : "__isTypeOf",
24
+ sourceFile: resolver.sourceFile,
25
+ exportName: resolver.exportName,
26
+ };
27
+ }
28
+ function collectAbstractTypeResolvers(abstractResolvers) {
29
+ return abstractResolvers
30
+ .map(convertToAbstractTypeResolverInfo)
31
+ .sort((a, b) => a.typeName.localeCompare(b.typeName));
32
+ }
33
+ export function collectResolverInfo(integratedResult) {
34
+ const typeMap = new Map();
35
+ const sourceFilesSet = new Set();
36
+ for (const ext of integratedResult.typeExtensions) {
37
+ const fieldResolvers = collectFieldResolvers(ext);
38
+ for (const resolver of fieldResolvers) {
39
+ sourceFilesSet.add(resolver.sourceFile);
40
+ }
41
+ const existing = typeMap.get(ext.targetTypeName) ?? [];
42
+ typeMap.set(ext.targetTypeName, [...existing, ...fieldResolvers]);
43
+ }
44
+ const abstractTypeResolvers = collectAbstractTypeResolvers(integratedResult.abstractTypeResolvers);
45
+ for (const resolver of abstractTypeResolvers) {
46
+ sourceFilesSet.add(resolver.sourceFile);
47
+ }
48
+ const types = [...typeMap.entries()]
49
+ .map(([typeName, fields]) => ({
50
+ typeName,
51
+ fields: [...fields].sort((a, b) => a.fieldName.localeCompare(b.fieldName)),
52
+ }))
53
+ .sort((a, b) => a.typeName.localeCompare(b.typeName));
54
+ const sourceFiles = [...sourceFilesSet].sort((a, b) => a.localeCompare(b));
55
+ return {
56
+ types,
57
+ sourceFiles,
58
+ abstractTypeResolvers,
59
+ };
60
+ }
61
+ //# sourceMappingURL=resolver-collector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolver-collector.js","sourceRoot":"","sources":["../../../src/schema-generator/resolver-collector/resolver-collector.ts"],"names":[],"mappings":"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"}