@gqlkit-ts/cli 0.0.1 → 0.2.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 (362) hide show
  1. package/LICENSE +21 -0
  2. package/dist/auto-type-generator/auto-type-generator.d.ts +62 -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 +540 -0
  5. package/dist/auto-type-generator/auto-type-generator.js.map +1 -0
  6. package/dist/auto-type-generator/index.d.ts +4 -0
  7. package/dist/auto-type-generator/index.d.ts.map +1 -0
  8. package/dist/auto-type-generator/index.js +3 -0
  9. package/dist/auto-type-generator/index.js.map +1 -0
  10. package/dist/auto-type-generator/inline-enum-collector.d.ts +31 -0
  11. package/dist/auto-type-generator/inline-enum-collector.d.ts.map +1 -0
  12. package/dist/auto-type-generator/inline-enum-collector.js +157 -0
  13. package/dist/auto-type-generator/inline-enum-collector.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/naming-convention.d.ts +44 -0
  19. package/dist/auto-type-generator/naming-convention.d.ts.map +1 -0
  20. package/dist/auto-type-generator/naming-convention.js +67 -0
  21. package/dist/auto-type-generator/naming-convention.js.map +1 -0
  22. package/dist/cli.d.ts +2 -0
  23. package/dist/cli.d.ts.map +1 -0
  24. package/dist/cli.js +11 -0
  25. package/dist/cli.js.map +1 -0
  26. package/dist/commands/gen.d.ts +32 -0
  27. package/dist/commands/gen.d.ts.map +1 -0
  28. package/dist/commands/gen.js +101 -0
  29. package/dist/commands/gen.js.map +1 -0
  30. package/dist/commands/main.d.ts +12 -0
  31. package/dist/commands/main.d.ts.map +1 -0
  32. package/dist/commands/main.js +5 -0
  33. package/dist/commands/main.js.map +1 -0
  34. package/dist/config/define-config.d.ts +26 -0
  35. package/dist/config/define-config.d.ts.map +1 -0
  36. package/dist/config/define-config.js +27 -0
  37. package/dist/config/define-config.js.map +1 -0
  38. package/dist/config/index.d.ts +3 -0
  39. package/dist/config/index.d.ts.map +1 -0
  40. package/dist/config/index.js +2 -0
  41. package/dist/config/index.js.map +1 -0
  42. package/dist/config/types.d.ts +131 -0
  43. package/dist/config/types.d.ts.map +1 -0
  44. package/dist/config/types.js +2 -0
  45. package/dist/config/types.js.map +1 -0
  46. package/dist/config-loader/index.d.ts +3 -0
  47. package/dist/config-loader/index.d.ts.map +1 -0
  48. package/dist/config-loader/index.js +2 -0
  49. package/dist/config-loader/index.js.map +1 -0
  50. package/dist/config-loader/loader.d.ts +50 -0
  51. package/dist/config-loader/loader.d.ts.map +1 -0
  52. package/dist/config-loader/loader.js +78 -0
  53. package/dist/config-loader/loader.js.map +1 -0
  54. package/dist/config-loader/validator.d.ts +13 -0
  55. package/dist/config-loader/validator.d.ts.map +1 -0
  56. package/dist/config-loader/validator.js +497 -0
  57. package/dist/config-loader/validator.js.map +1 -0
  58. package/dist/gen-orchestrator/hook-executor/hook-executor.d.ts +25 -0
  59. package/dist/gen-orchestrator/hook-executor/hook-executor.d.ts.map +1 -0
  60. package/dist/gen-orchestrator/hook-executor/hook-executor.js +68 -0
  61. package/dist/gen-orchestrator/hook-executor/hook-executor.js.map +1 -0
  62. package/dist/gen-orchestrator/orchestrator.d.ts +30 -0
  63. package/dist/gen-orchestrator/orchestrator.d.ts.map +1 -0
  64. package/dist/gen-orchestrator/orchestrator.js +505 -0
  65. package/dist/gen-orchestrator/orchestrator.js.map +1 -0
  66. package/dist/gen-orchestrator/reporter/diagnostic-reporter.d.ts +9 -0
  67. package/dist/gen-orchestrator/reporter/diagnostic-reporter.d.ts.map +1 -0
  68. package/dist/gen-orchestrator/reporter/diagnostic-reporter.js +32 -0
  69. package/dist/gen-orchestrator/reporter/diagnostic-reporter.js.map +1 -0
  70. package/dist/gen-orchestrator/reporter/progress-reporter.d.ts +19 -0
  71. package/dist/gen-orchestrator/reporter/progress-reporter.d.ts.map +1 -0
  72. package/dist/gen-orchestrator/reporter/progress-reporter.js +38 -0
  73. package/dist/gen-orchestrator/reporter/progress-reporter.js.map +1 -0
  74. package/dist/gen-orchestrator/writer/file-writer.d.ts +13 -0
  75. package/dist/gen-orchestrator/writer/file-writer.d.ts.map +1 -0
  76. package/dist/gen-orchestrator/writer/file-writer.js +22 -0
  77. package/dist/gen-orchestrator/writer/file-writer.js.map +1 -0
  78. package/dist/index.d.ts +3 -0
  79. package/dist/index.d.ts.map +1 -0
  80. package/dist/index.js +2 -0
  81. package/dist/index.js.map +1 -0
  82. package/dist/resolver-extractor/extract-resolvers.d.ts +49 -0
  83. package/dist/resolver-extractor/extract-resolvers.d.ts.map +1 -0
  84. package/dist/resolver-extractor/extract-resolvers.js +2 -0
  85. package/dist/resolver-extractor/extract-resolvers.js.map +1 -0
  86. package/dist/resolver-extractor/extractor/define-api-extractor.d.ts +60 -0
  87. package/dist/resolver-extractor/extractor/define-api-extractor.d.ts.map +1 -0
  88. package/dist/resolver-extractor/extractor/define-api-extractor.js +509 -0
  89. package/dist/resolver-extractor/extractor/define-api-extractor.js.map +1 -0
  90. package/dist/resolver-extractor/index.d.ts +5 -0
  91. package/dist/resolver-extractor/index.d.ts.map +1 -0
  92. package/dist/resolver-extractor/index.js +2 -0
  93. package/dist/resolver-extractor/index.js.map +1 -0
  94. package/dist/resolver-extractor/validator/abstract-resolver-validator.d.ts +25 -0
  95. package/dist/resolver-extractor/validator/abstract-resolver-validator.d.ts.map +1 -0
  96. package/dist/resolver-extractor/validator/abstract-resolver-validator.js +172 -0
  97. package/dist/resolver-extractor/validator/abstract-resolver-validator.js.map +1 -0
  98. package/dist/resolver-extractor/validator/only-validator.d.ts +61 -0
  99. package/dist/resolver-extractor/validator/only-validator.d.ts.map +1 -0
  100. package/dist/resolver-extractor/validator/only-validator.js +76 -0
  101. package/dist/resolver-extractor/validator/only-validator.js.map +1 -0
  102. package/dist/schema-generator/builder/ast-builder.d.ts +7 -0
  103. package/dist/schema-generator/builder/ast-builder.d.ts.map +1 -0
  104. package/dist/schema-generator/builder/ast-builder.js +417 -0
  105. package/dist/schema-generator/builder/ast-builder.js.map +1 -0
  106. package/dist/schema-generator/emitter/code-emitter.d.ts +15 -0
  107. package/dist/schema-generator/emitter/code-emitter.d.ts.map +1 -0
  108. package/dist/schema-generator/emitter/code-emitter.js +216 -0
  109. package/dist/schema-generator/emitter/code-emitter.js.map +1 -0
  110. package/dist/schema-generator/emitter/sdl-emitter.d.ts +7 -0
  111. package/dist/schema-generator/emitter/sdl-emitter.d.ts.map +1 -0
  112. package/dist/schema-generator/emitter/sdl-emitter.js +11 -0
  113. package/dist/schema-generator/emitter/sdl-emitter.js.map +1 -0
  114. package/dist/schema-generator/generate-schema.d.ts +26 -0
  115. package/dist/schema-generator/generate-schema.d.ts.map +1 -0
  116. package/dist/schema-generator/generate-schema.js +93 -0
  117. package/dist/schema-generator/generate-schema.js.map +1 -0
  118. package/dist/schema-generator/index.d.ts +4 -0
  119. package/dist/schema-generator/index.d.ts.map +1 -0
  120. package/dist/schema-generator/index.js +2 -0
  121. package/dist/schema-generator/index.js.map +1 -0
  122. package/dist/schema-generator/integrator/result-integrator.d.ts +113 -0
  123. package/dist/schema-generator/integrator/result-integrator.d.ts.map +1 -0
  124. package/dist/schema-generator/integrator/result-integrator.js +438 -0
  125. package/dist/schema-generator/integrator/result-integrator.js.map +1 -0
  126. package/dist/schema-generator/pruner/schema-pruner.d.ts +16 -0
  127. package/dist/schema-generator/pruner/schema-pruner.d.ts.map +1 -0
  128. package/dist/schema-generator/pruner/schema-pruner.js +66 -0
  129. package/dist/schema-generator/pruner/schema-pruner.js.map +1 -0
  130. package/dist/schema-generator/resolver-collector/resolver-collector.d.ts +24 -0
  131. package/dist/schema-generator/resolver-collector/resolver-collector.d.ts.map +1 -0
  132. package/dist/schema-generator/resolver-collector/resolver-collector.js +61 -0
  133. package/dist/schema-generator/resolver-collector/resolver-collector.js.map +1 -0
  134. package/dist/shared/constants.d.ts +54 -0
  135. package/dist/shared/constants.d.ts.map +1 -0
  136. package/dist/shared/constants.js +109 -0
  137. package/dist/shared/constants.js.map +1 -0
  138. package/dist/shared/default-value-detector.d.ts +40 -0
  139. package/dist/shared/default-value-detector.d.ts.map +1 -0
  140. package/dist/shared/default-value-detector.js +124 -0
  141. package/dist/shared/default-value-detector.js.map +1 -0
  142. package/dist/shared/diagnostics.d.ts +4 -0
  143. package/dist/shared/diagnostics.d.ts.map +1 -0
  144. package/dist/shared/diagnostics.js +25 -0
  145. package/dist/shared/diagnostics.js.map +1 -0
  146. package/dist/shared/directive-definition-extractor.d.ts +64 -0
  147. package/dist/shared/directive-definition-extractor.d.ts.map +1 -0
  148. package/dist/shared/directive-definition-extractor.js +399 -0
  149. package/dist/shared/directive-definition-extractor.js.map +1 -0
  150. package/dist/shared/directive-detector.d.ts +102 -0
  151. package/dist/shared/directive-detector.d.ts.map +1 -0
  152. package/dist/shared/directive-detector.js +415 -0
  153. package/dist/shared/directive-detector.js.map +1 -0
  154. package/dist/shared/file-scanner.d.ts +25 -0
  155. package/dist/shared/file-scanner.d.ts.map +1 -0
  156. package/dist/shared/file-scanner.js +101 -0
  157. package/dist/shared/file-scanner.js.map +1 -0
  158. package/dist/shared/index.d.ts +10 -0
  159. package/dist/shared/index.d.ts.map +1 -0
  160. package/dist/shared/index.js +6 -0
  161. package/dist/shared/index.js.map +1 -0
  162. package/dist/shared/inline-object-extractor.d.ts +13 -0
  163. package/dist/shared/inline-object-extractor.d.ts.map +1 -0
  164. package/dist/shared/inline-object-extractor.js +65 -0
  165. package/dist/shared/inline-object-extractor.js.map +1 -0
  166. package/dist/shared/inline-object-utils.d.ts +7 -0
  167. package/dist/shared/inline-object-utils.d.ts.map +1 -0
  168. package/dist/shared/inline-object-utils.js +23 -0
  169. package/dist/shared/inline-object-utils.js.map +1 -0
  170. package/dist/shared/interface-detector.d.ts +23 -0
  171. package/dist/shared/interface-detector.d.ts.map +1 -0
  172. package/dist/shared/interface-detector.js +133 -0
  173. package/dist/shared/interface-detector.js.map +1 -0
  174. package/dist/shared/interface-validator.d.ts +9 -0
  175. package/dist/shared/interface-validator.d.ts.map +1 -0
  176. package/dist/shared/interface-validator.js +152 -0
  177. package/dist/shared/interface-validator.js.map +1 -0
  178. package/dist/shared/metadata-detector.d.ts +65 -0
  179. package/dist/shared/metadata-detector.d.ts.map +1 -0
  180. package/dist/shared/metadata-detector.js +333 -0
  181. package/dist/shared/metadata-detector.js.map +1 -0
  182. package/dist/shared/path-utils.d.ts +2 -0
  183. package/dist/shared/path-utils.d.ts.map +1 -0
  184. package/dist/shared/path-utils.js +4 -0
  185. package/dist/shared/path-utils.js.map +1 -0
  186. package/dist/shared/program-factory.d.ts +14 -0
  187. package/dist/shared/program-factory.d.ts.map +1 -0
  188. package/dist/shared/program-factory.js +29 -0
  189. package/dist/shared/program-factory.js.map +1 -0
  190. package/dist/shared/source-location.d.ts +11 -0
  191. package/dist/shared/source-location.d.ts.map +1 -0
  192. package/dist/shared/source-location.js +15 -0
  193. package/dist/shared/source-location.js.map +1 -0
  194. package/dist/shared/tsconfig-loader.d.ts +13 -0
  195. package/dist/shared/tsconfig-loader.d.ts.map +1 -0
  196. package/dist/shared/tsconfig-loader.js +90 -0
  197. package/dist/shared/tsconfig-loader.js.map +1 -0
  198. package/dist/shared/tsdoc-parser.d.ts +12 -0
  199. package/dist/shared/tsdoc-parser.d.ts.map +1 -0
  200. package/dist/shared/tsdoc-parser.js +101 -0
  201. package/dist/shared/tsdoc-parser.js.map +1 -0
  202. package/dist/shared/type-converter.d.ts +3 -0
  203. package/dist/shared/type-converter.d.ts.map +1 -0
  204. package/dist/shared/type-converter.js +83 -0
  205. package/dist/shared/type-converter.js.map +1 -0
  206. package/dist/shared/typescript-utils.d.ts +82 -0
  207. package/dist/shared/typescript-utils.d.ts.map +1 -0
  208. package/dist/shared/typescript-utils.js +197 -0
  209. package/dist/shared/typescript-utils.js.map +1 -0
  210. package/dist/type-extractor/collector/result-collector.d.ts +7 -0
  211. package/dist/type-extractor/collector/result-collector.d.ts.map +1 -0
  212. package/dist/type-extractor/collector/result-collector.js +35 -0
  213. package/dist/type-extractor/collector/result-collector.js.map +1 -0
  214. package/dist/type-extractor/collector/scalar-collector.d.ts +108 -0
  215. package/dist/type-extractor/collector/scalar-collector.d.ts.map +1 -0
  216. package/dist/type-extractor/collector/scalar-collector.js +123 -0
  217. package/dist/type-extractor/collector/scalar-collector.js.map +1 -0
  218. package/dist/type-extractor/converter/field-eligibility.d.ts +34 -0
  219. package/dist/type-extractor/converter/field-eligibility.d.ts.map +1 -0
  220. package/dist/type-extractor/converter/field-eligibility.js +89 -0
  221. package/dist/type-extractor/converter/field-eligibility.js.map +1 -0
  222. package/dist/type-extractor/converter/graphql-converter.d.ts +7 -0
  223. package/dist/type-extractor/converter/graphql-converter.d.ts.map +1 -0
  224. package/dist/type-extractor/converter/graphql-converter.js +338 -0
  225. package/dist/type-extractor/converter/graphql-converter.js.map +1 -0
  226. package/dist/type-extractor/extract-types.d.ts +2 -0
  227. package/dist/type-extractor/extract-types.d.ts.map +1 -0
  228. package/dist/type-extractor/extract-types.js +2 -0
  229. package/dist/type-extractor/extract-types.js.map +1 -0
  230. package/dist/type-extractor/extractor/field-type-resolver.d.ts +28 -0
  231. package/dist/type-extractor/extractor/field-type-resolver.d.ts.map +1 -0
  232. package/dist/type-extractor/extractor/field-type-resolver.js +394 -0
  233. package/dist/type-extractor/extractor/field-type-resolver.js.map +1 -0
  234. package/dist/type-extractor/extractor/type-extractor.d.ts +36 -0
  235. package/dist/type-extractor/extractor/type-extractor.d.ts.map +1 -0
  236. package/dist/type-extractor/extractor/type-extractor.js +1082 -0
  237. package/dist/type-extractor/extractor/type-extractor.js.map +1 -0
  238. package/dist/type-extractor/extractor/type-name-collector.d.ts +24 -0
  239. package/dist/type-extractor/extractor/type-name-collector.d.ts.map +1 -0
  240. package/dist/type-extractor/extractor/type-name-collector.js +102 -0
  241. package/dist/type-extractor/extractor/type-name-collector.js.map +1 -0
  242. package/dist/type-extractor/index.d.ts +4 -0
  243. package/dist/type-extractor/index.d.ts.map +1 -0
  244. package/dist/type-extractor/index.js +2 -0
  245. package/dist/type-extractor/index.js.map +1 -0
  246. package/dist/type-extractor/mapper/scalar-base-type-mapper.d.ts +89 -0
  247. package/dist/type-extractor/mapper/scalar-base-type-mapper.d.ts.map +1 -0
  248. package/dist/type-extractor/mapper/scalar-base-type-mapper.js +158 -0
  249. package/dist/type-extractor/mapper/scalar-base-type-mapper.js.map +1 -0
  250. package/dist/type-extractor/types/diagnostics.d.ts +17 -0
  251. package/dist/type-extractor/types/diagnostics.d.ts.map +1 -0
  252. package/dist/type-extractor/types/diagnostics.js +2 -0
  253. package/dist/type-extractor/types/diagnostics.js.map +1 -0
  254. package/dist/type-extractor/types/graphql.d.ts +42 -0
  255. package/dist/type-extractor/types/graphql.d.ts.map +1 -0
  256. package/dist/type-extractor/types/graphql.js +2 -0
  257. package/dist/type-extractor/types/graphql.js.map +1 -0
  258. package/dist/type-extractor/types/index.d.ts +6 -0
  259. package/dist/type-extractor/types/index.d.ts.map +1 -0
  260. package/dist/type-extractor/types/index.js +2 -0
  261. package/dist/type-extractor/types/index.js.map +1 -0
  262. package/dist/type-extractor/types/ts-type-reference-factory.d.ts +39 -0
  263. package/dist/type-extractor/types/ts-type-reference-factory.d.ts.map +1 -0
  264. package/dist/type-extractor/types/ts-type-reference-factory.js +69 -0
  265. package/dist/type-extractor/types/ts-type-reference-factory.js.map +1 -0
  266. package/dist/type-extractor/types/typescript.d.ts +106 -0
  267. package/dist/type-extractor/types/typescript.d.ts.map +1 -0
  268. package/dist/type-extractor/types/typescript.js +2 -0
  269. package/dist/type-extractor/types/typescript.js.map +1 -0
  270. package/dist/type-extractor/validator/type-validator.d.ts +11 -0
  271. package/dist/type-extractor/validator/type-validator.d.ts.map +1 -0
  272. package/dist/type-extractor/validator/type-validator.js +53 -0
  273. package/dist/type-extractor/validator/type-validator.js.map +1 -0
  274. package/docs/configuration.md +163 -0
  275. package/docs/getting-started.md +117 -0
  276. package/docs/index.md +33 -0
  277. package/docs/integration/apollo.md +109 -0
  278. package/docs/integration/drizzle.md +191 -0
  279. package/docs/integration/yoga.md +108 -0
  280. package/docs/schema/abstract-resolvers.md +146 -0
  281. package/docs/schema/directives.md +196 -0
  282. package/docs/schema/documentation.md +176 -0
  283. package/docs/schema/enums.md +370 -0
  284. package/docs/schema/fields.md +186 -0
  285. package/docs/schema/index.md +38 -0
  286. package/docs/schema/inputs.md +279 -0
  287. package/docs/schema/interfaces.md +178 -0
  288. package/docs/schema/objects.md +188 -0
  289. package/docs/schema/queries-mutations.md +207 -0
  290. package/docs/schema/scalars.md +194 -0
  291. package/docs/schema/unions.md +90 -0
  292. package/docs/what-is-gqlkit.md +22 -0
  293. package/package.json +66 -7
  294. package/src/auto-type-generator/auto-type-generator.ts +925 -0
  295. package/src/auto-type-generator/index.ts +21 -0
  296. package/src/auto-type-generator/inline-enum-collector.ts +290 -0
  297. package/src/auto-type-generator/name-collision-validator.ts +119 -0
  298. package/src/auto-type-generator/naming-convention.ts +126 -0
  299. package/src/cli.ts +11 -0
  300. package/src/commands/gen.ts +141 -0
  301. package/src/commands/main.ts +5 -0
  302. package/src/config/define-config.ts +28 -0
  303. package/src/config/index.ts +7 -0
  304. package/src/config/types.ts +144 -0
  305. package/src/config-loader/index.ts +14 -0
  306. package/src/config-loader/loader.ts +143 -0
  307. package/src/config-loader/validator.ts +672 -0
  308. package/src/gen-orchestrator/hook-executor/hook-executor.ts +117 -0
  309. package/src/gen-orchestrator/orchestrator.ts +784 -0
  310. package/src/gen-orchestrator/reporter/diagnostic-reporter.ts +44 -0
  311. package/src/gen-orchestrator/reporter/progress-reporter.ts +61 -0
  312. package/src/gen-orchestrator/writer/file-writer.ts +38 -0
  313. package/src/index.ts +2 -0
  314. package/src/resolver-extractor/extract-resolvers.ts +63 -0
  315. package/src/resolver-extractor/extractor/define-api-extractor.ts +806 -0
  316. package/src/resolver-extractor/index.ts +19 -0
  317. package/src/resolver-extractor/validator/abstract-resolver-validator.ts +251 -0
  318. package/src/resolver-extractor/validator/only-validator.ts +158 -0
  319. package/src/schema-generator/builder/ast-builder.ts +706 -0
  320. package/src/schema-generator/emitter/code-emitter.ts +351 -0
  321. package/src/schema-generator/emitter/sdl-emitter.ts +13 -0
  322. package/src/schema-generator/generate-schema.ts +170 -0
  323. package/src/schema-generator/index.ts +19 -0
  324. package/src/schema-generator/integrator/result-integrator.ts +690 -0
  325. package/src/schema-generator/pruner/schema-pruner.ts +112 -0
  326. package/src/schema-generator/resolver-collector/resolver-collector.ts +123 -0
  327. package/src/shared/constants.ts +122 -0
  328. package/src/shared/default-value-detector.ts +172 -0
  329. package/src/shared/diagnostics.ts +35 -0
  330. package/src/shared/directive-definition-extractor.ts +564 -0
  331. package/src/shared/directive-detector.ts +556 -0
  332. package/src/shared/file-scanner.ts +170 -0
  333. package/src/shared/index.ts +32 -0
  334. package/src/shared/inline-object-extractor.ts +102 -0
  335. package/src/shared/inline-object-utils.ts +23 -0
  336. package/src/shared/interface-detector.ts +176 -0
  337. package/src/shared/interface-validator.ts +211 -0
  338. package/src/shared/metadata-detector.ts +443 -0
  339. package/src/shared/path-utils.ts +3 -0
  340. package/src/shared/program-factory.ts +51 -0
  341. package/src/shared/source-location.ts +27 -0
  342. package/src/shared/tsconfig-loader.ts +126 -0
  343. package/src/shared/tsdoc-parser.ts +155 -0
  344. package/src/shared/type-converter.ts +99 -0
  345. package/src/shared/typescript-utils.ts +246 -0
  346. package/src/type-extractor/collector/result-collector.ts +57 -0
  347. package/src/type-extractor/collector/scalar-collector.ts +254 -0
  348. package/src/type-extractor/converter/field-eligibility.ts +112 -0
  349. package/src/type-extractor/converter/graphql-converter.ts +459 -0
  350. package/src/type-extractor/extract-types.ts +1 -0
  351. package/src/type-extractor/extractor/field-type-resolver.ts +569 -0
  352. package/src/type-extractor/extractor/type-extractor.ts +1567 -0
  353. package/src/type-extractor/extractor/type-name-collector.ts +130 -0
  354. package/src/type-extractor/index.ts +20 -0
  355. package/src/type-extractor/mapper/scalar-base-type-mapper.ts +265 -0
  356. package/src/type-extractor/types/diagnostics.ts +99 -0
  357. package/src/type-extractor/types/graphql.ts +55 -0
  358. package/src/type-extractor/types/index.ts +37 -0
  359. package/src/type-extractor/types/ts-type-reference-factory.ts +137 -0
  360. package/src/type-extractor/types/typescript.ts +133 -0
  361. package/src/type-extractor/validator/type-validator.ts +77 -0
  362. package/README.md +0 -45
@@ -0,0 +1,438 @@
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
+ needsStringEnumMapping: false,
105
+ implementedInterfaces: null,
106
+ description: autoType.description,
107
+ deprecated: null,
108
+ sourceFile: autoType.sourceLocation.file,
109
+ directives: null,
110
+ });
111
+ }
112
+ else if (autoType.kind === "Enum") {
113
+ baseTypes.push({
114
+ name: autoType.name,
115
+ kind: "Enum",
116
+ fields: null,
117
+ unionMembers: null,
118
+ enumValues: autoType.enumValues?.map((v) => ({
119
+ name: v.name,
120
+ originalValue: v.originalValue,
121
+ numericValue: null,
122
+ description: v.description,
123
+ deprecated: v.deprecated,
124
+ })) ?? null,
125
+ isNumericEnum: false,
126
+ needsStringEnumMapping: autoType.needsStringEnumMapping,
127
+ implementedInterfaces: null,
128
+ description: autoType.description,
129
+ deprecated: null,
130
+ sourceFile: autoType.sourceLocation.file,
131
+ directives: null,
132
+ });
133
+ }
134
+ else {
135
+ inputTypes.push({
136
+ name: autoType.name,
137
+ fields: autoType.fields.map((f) => ({
138
+ name: f.name,
139
+ type: f.type,
140
+ description: f.description,
141
+ deprecated: f.deprecated,
142
+ directives: f.directives,
143
+ defaultValue: f.defaultValue,
144
+ })),
145
+ sourceFile: autoType.sourceLocation.file,
146
+ description: autoType.description,
147
+ isOneOf: false,
148
+ });
149
+ }
150
+ }
151
+ for (const type of typesResult.types) {
152
+ if (directiveTypeAliasNames.has(type.name)) {
153
+ continue;
154
+ }
155
+ if (type.kind === "InputObject" || type.kind === "OneOfInputObject") {
156
+ inputTypes.push({
157
+ name: type.name,
158
+ fields: type.fields?.map((field) => ({
159
+ name: field.name,
160
+ type: field.type,
161
+ description: field.description,
162
+ deprecated: field.deprecated,
163
+ directives: field.directives,
164
+ defaultValue: field.defaultValue,
165
+ })) ?? [],
166
+ sourceFile: type.sourceFile,
167
+ description: type.description,
168
+ isOneOf: type.kind === "OneOfInputObject",
169
+ });
170
+ }
171
+ else if (type.kind === "Enum") {
172
+ baseTypes.push({
173
+ name: type.name,
174
+ kind: type.kind,
175
+ fields: null,
176
+ unionMembers: null,
177
+ enumValues: type.enumValues,
178
+ isNumericEnum: type.isNumericEnum,
179
+ needsStringEnumMapping: type.needsStringEnumMapping,
180
+ implementedInterfaces: null,
181
+ description: type.description,
182
+ deprecated: type.deprecated,
183
+ sourceFile: type.sourceFile,
184
+ directives: type.directives,
185
+ });
186
+ }
187
+ else if (type.kind === "Interface") {
188
+ baseTypes.push({
189
+ name: type.name,
190
+ kind: type.kind,
191
+ fields: type.fields?.map((field) => ({
192
+ name: field.name,
193
+ type: field.type,
194
+ description: field.description,
195
+ deprecated: field.deprecated,
196
+ directives: field.directives,
197
+ defaultValue: field.defaultValue,
198
+ })) ?? null,
199
+ unionMembers: null,
200
+ enumValues: null,
201
+ isNumericEnum: false,
202
+ needsStringEnumMapping: false,
203
+ implementedInterfaces: type.implementedInterfaces ?? null,
204
+ description: type.description,
205
+ deprecated: type.deprecated,
206
+ sourceFile: type.sourceFile,
207
+ directives: type.directives,
208
+ });
209
+ }
210
+ else if (type.kind === "Object") {
211
+ baseTypes.push({
212
+ name: type.name,
213
+ kind: type.kind,
214
+ fields: type.fields?.map((field) => ({
215
+ name: field.name,
216
+ type: field.type,
217
+ description: field.description,
218
+ deprecated: field.deprecated,
219
+ directives: field.directives,
220
+ defaultValue: field.defaultValue,
221
+ })) ?? null,
222
+ unionMembers: null,
223
+ enumValues: null,
224
+ isNumericEnum: false,
225
+ needsStringEnumMapping: false,
226
+ implementedInterfaces: type.implementedInterfaces ?? null,
227
+ description: type.description,
228
+ deprecated: type.deprecated,
229
+ sourceFile: type.sourceFile,
230
+ directives: type.directives,
231
+ });
232
+ }
233
+ else {
234
+ baseTypes.push({
235
+ name: type.name,
236
+ kind: type.kind,
237
+ fields: null,
238
+ unionMembers: type.unionMembers,
239
+ enumValues: null,
240
+ isNumericEnum: false,
241
+ needsStringEnumMapping: false,
242
+ implementedInterfaces: null,
243
+ description: type.description,
244
+ deprecated: null,
245
+ sourceFile: type.sourceFile,
246
+ directives: type.directives,
247
+ });
248
+ }
249
+ }
250
+ const hasQuery = resolversResult.queryFields.fields.length > 0;
251
+ const hasMutation = resolversResult.mutationFields.fields.length > 0;
252
+ if (hasQuery) {
253
+ baseTypes.push({
254
+ name: "Query",
255
+ kind: "Object",
256
+ fields: [],
257
+ unionMembers: null,
258
+ enumValues: null,
259
+ isNumericEnum: false,
260
+ needsStringEnumMapping: false,
261
+ implementedInterfaces: null,
262
+ description: null,
263
+ deprecated: null,
264
+ sourceFile: null,
265
+ directives: null,
266
+ });
267
+ }
268
+ if (hasMutation) {
269
+ baseTypes.push({
270
+ name: "Mutation",
271
+ kind: "Object",
272
+ fields: [],
273
+ unionMembers: null,
274
+ enumValues: null,
275
+ isNumericEnum: false,
276
+ needsStringEnumMapping: false,
277
+ implementedInterfaces: null,
278
+ description: null,
279
+ deprecated: null,
280
+ sourceFile: null,
281
+ directives: null,
282
+ });
283
+ }
284
+ const abstractResolverValidation = validateAbstractResolvers({
285
+ abstractResolvers: resolversResult.abstractTypeResolvers,
286
+ baseTypes,
287
+ });
288
+ diagnostics.push(...abstractResolverValidation.diagnostics);
289
+ const knownTypeNames = new Set([
290
+ ...baseTypes.map((t) => t.name),
291
+ ...inputTypes.map((t) => t.name),
292
+ ]);
293
+ const typeExtensions = [];
294
+ if (hasQuery) {
295
+ typeExtensions.push({
296
+ targetTypeName: "Query",
297
+ fields: resolversResult.queryFields.fields.map(convertToExtensionField),
298
+ });
299
+ }
300
+ if (hasMutation) {
301
+ typeExtensions.push({
302
+ targetTypeName: "Mutation",
303
+ fields: resolversResult.mutationFields.fields.map(convertToExtensionField),
304
+ });
305
+ }
306
+ for (const ext of resolversResult.typeExtensions) {
307
+ if (!knownTypeNames.has(ext.targetTypeName)) {
308
+ const firstField = ext.fields[0];
309
+ diagnostics.push({
310
+ code: "UNKNOWN_TARGET_TYPE",
311
+ message: `Type extension references unknown type '${ext.targetTypeName}'`,
312
+ severity: "error",
313
+ location: firstField
314
+ ? {
315
+ file: firstField.sourceLocation.file,
316
+ line: firstField.sourceLocation.line,
317
+ column: firstField.sourceLocation.column,
318
+ }
319
+ : null,
320
+ });
321
+ }
322
+ else {
323
+ typeExtensions.push(convertResolverTypeExtension(ext));
324
+ }
325
+ }
326
+ const directiveDefMap = new Map();
327
+ for (const def of directiveDefinitions ?? []) {
328
+ directiveDefMap.set(def.name, def);
329
+ }
330
+ for (const type of typesResult.types) {
331
+ if (directiveTypeAliasNames.has(type.name)) {
332
+ continue;
333
+ }
334
+ const usageLocation = type.kind === "InputObject" || type.kind === "OneOfInputObject"
335
+ ? "INPUT_OBJECT"
336
+ : "OBJECT";
337
+ if (type.directives) {
338
+ for (const directive of type.directives) {
339
+ validateDirectiveUsage({
340
+ directiveName: directive.name,
341
+ usageLocation,
342
+ targetName: `Type '${type.name}'`,
343
+ sourceFile: type.sourceFile,
344
+ line: 1,
345
+ }, directiveDefMap, diagnostics);
346
+ }
347
+ }
348
+ const fieldUsageLocation = type.kind === "InputObject" || type.kind === "OneOfInputObject"
349
+ ? "INPUT_FIELD_DEFINITION"
350
+ : "FIELD_DEFINITION";
351
+ for (const field of type.fields ?? []) {
352
+ if (field.directives) {
353
+ for (const directive of field.directives) {
354
+ validateDirectiveUsage({
355
+ directiveName: directive.name,
356
+ usageLocation: fieldUsageLocation,
357
+ targetName: `Field '${type.name}.${field.name}'`,
358
+ sourceFile: type.sourceFile,
359
+ line: 1,
360
+ }, directiveDefMap, diagnostics);
361
+ }
362
+ }
363
+ }
364
+ }
365
+ for (const ext of typeExtensions) {
366
+ for (const field of ext.fields) {
367
+ if (field.directives) {
368
+ for (const directive of field.directives) {
369
+ validateDirectiveUsage({
370
+ directiveName: directive.name,
371
+ usageLocation: "FIELD_DEFINITION",
372
+ targetName: `Field '${ext.targetTypeName}.${field.name}'`,
373
+ sourceFile: field.resolverSourceFile,
374
+ line: 1,
375
+ }, directiveDefMap, diagnostics);
376
+ }
377
+ }
378
+ }
379
+ }
380
+ const hasErrors = diagnostics.some((d) => d.severity === "error");
381
+ const scalarDescriptionMap = new Map();
382
+ if (collectedScalars) {
383
+ for (const scalar of collectedScalars) {
384
+ const description = mergeDescriptions(scalar.descriptions);
385
+ scalarDescriptionMap.set(scalar.scalarName, description);
386
+ }
387
+ }
388
+ const customScalars = customScalarNames && customScalarNames.length > 0
389
+ ? customScalarNames.map((name) => ({
390
+ scalarName: name,
391
+ description: scalarDescriptionMap.get(name) ?? null,
392
+ }))
393
+ : null;
394
+ const numericEnums = baseTypes
395
+ .filter((type) => type.kind === "Enum" && type.isNumericEnum && type.enumValues !== null)
396
+ .map((type) => ({
397
+ enumName: type.name,
398
+ members: type.enumValues
399
+ .filter((value) => value.numericValue !== null)
400
+ .map((value) => ({
401
+ name: value.name,
402
+ numericValue: value.numericValue,
403
+ })),
404
+ }))
405
+ .filter((info) => info.members.length > 0);
406
+ const stringEnumMappings = baseTypes
407
+ .filter((type) => type.kind === "Enum" &&
408
+ type.needsStringEnumMapping &&
409
+ type.enumValues !== null)
410
+ .map((type) => ({
411
+ enumName: type.name,
412
+ members: type.enumValues.map((value) => ({
413
+ graphqlValue: value.name,
414
+ typescriptValue: value.originalValue,
415
+ })),
416
+ }))
417
+ .filter((info) => info.members.length > 0);
418
+ return {
419
+ baseTypes,
420
+ inputTypes,
421
+ typeExtensions,
422
+ customScalarNames: customScalarNames && customScalarNames.length > 0
423
+ ? customScalarNames
424
+ : null,
425
+ customScalars,
426
+ directiveDefinitions: directiveDefinitions && directiveDefinitions.length > 0
427
+ ? directiveDefinitions
428
+ : null,
429
+ abstractTypeResolvers: resolversResult.abstractTypeResolvers,
430
+ numericEnums,
431
+ stringEnumMappings,
432
+ hasQuery,
433
+ hasMutation,
434
+ hasErrors,
435
+ diagnostics,
436
+ };
437
+ }
438
+ //# 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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"}