@gqlkit-ts/cli 0.1.0 → 0.3.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 (339) hide show
  1. package/dist/auto-type-generator/auto-type-generator.d.ts +26 -4
  2. package/dist/auto-type-generator/auto-type-generator.d.ts.map +1 -1
  3. package/dist/auto-type-generator/auto-type-generator.js +846 -152
  4. package/dist/auto-type-generator/auto-type-generator.js.map +1 -1
  5. package/dist/auto-type-generator/index.d.ts +9 -2
  6. package/dist/auto-type-generator/index.d.ts.map +1 -1
  7. package/dist/auto-type-generator/index.js +3 -0
  8. package/dist/auto-type-generator/index.js.map +1 -1
  9. package/dist/auto-type-generator/inline-enum-collector.d.ts +39 -0
  10. package/dist/auto-type-generator/inline-enum-collector.d.ts.map +1 -0
  11. package/dist/auto-type-generator/inline-enum-collector.js +193 -0
  12. package/dist/auto-type-generator/inline-enum-collector.js.map +1 -0
  13. package/dist/auto-type-generator/inline-object-traverser.d.ts +20 -0
  14. package/dist/auto-type-generator/inline-object-traverser.d.ts.map +1 -0
  15. package/dist/auto-type-generator/inline-object-traverser.js +22 -0
  16. package/dist/auto-type-generator/inline-object-traverser.js.map +1 -0
  17. package/dist/auto-type-generator/inline-union-collector.d.ts +29 -0
  18. package/dist/auto-type-generator/inline-union-collector.d.ts.map +1 -0
  19. package/dist/auto-type-generator/inline-union-collector.js +216 -0
  20. package/dist/auto-type-generator/inline-union-collector.js.map +1 -0
  21. package/dist/auto-type-generator/inline-union-types.d.ts +29 -0
  22. package/dist/auto-type-generator/inline-union-types.d.ts.map +1 -0
  23. package/dist/auto-type-generator/inline-union-types.js +2 -0
  24. package/dist/auto-type-generator/inline-union-types.js.map +1 -0
  25. package/dist/auto-type-generator/inline-union-validator.d.ts +76 -0
  26. package/dist/auto-type-generator/inline-union-validator.d.ts.map +1 -0
  27. package/dist/auto-type-generator/inline-union-validator.js +329 -0
  28. package/dist/auto-type-generator/inline-union-validator.js.map +1 -0
  29. package/dist/auto-type-generator/naming-convention.d.ts +22 -1
  30. package/dist/auto-type-generator/naming-convention.d.ts.map +1 -1
  31. package/dist/auto-type-generator/naming-convention.js +24 -0
  32. package/dist/auto-type-generator/naming-convention.js.map +1 -1
  33. package/dist/auto-type-generator/resolve-type-generator.d.ts +20 -0
  34. package/dist/auto-type-generator/resolve-type-generator.d.ts.map +1 -0
  35. package/dist/auto-type-generator/resolve-type-generator.js +2 -0
  36. package/dist/auto-type-generator/resolve-type-generator.js.map +1 -0
  37. package/dist/auto-type-generator/resolver-field-iterator.d.ts +13 -0
  38. package/dist/auto-type-generator/resolver-field-iterator.d.ts.map +1 -0
  39. package/dist/auto-type-generator/resolver-field-iterator.js +22 -0
  40. package/dist/auto-type-generator/resolver-field-iterator.js.map +1 -0
  41. package/dist/auto-type-generator/typename-extractor.d.ts +26 -0
  42. package/dist/auto-type-generator/typename-extractor.d.ts.map +1 -0
  43. package/dist/auto-type-generator/typename-extractor.js +142 -0
  44. package/dist/auto-type-generator/typename-extractor.js.map +1 -0
  45. package/dist/auto-type-generator/typename-resolve-type-generator.d.ts +35 -0
  46. package/dist/auto-type-generator/typename-resolve-type-generator.d.ts.map +1 -0
  47. package/dist/auto-type-generator/typename-resolve-type-generator.js +177 -0
  48. package/dist/auto-type-generator/typename-resolve-type-generator.js.map +1 -0
  49. package/dist/auto-type-generator/typename-types.d.ts +43 -0
  50. package/dist/auto-type-generator/typename-types.d.ts.map +1 -0
  51. package/dist/auto-type-generator/typename-types.js +37 -0
  52. package/dist/auto-type-generator/typename-types.js.map +1 -0
  53. package/dist/auto-type-generator/typename-validator.d.ts +37 -0
  54. package/dist/auto-type-generator/typename-validator.d.ts.map +1 -0
  55. package/dist/auto-type-generator/typename-validator.js +206 -0
  56. package/dist/auto-type-generator/typename-validator.js.map +1 -0
  57. package/dist/cli.js +2 -0
  58. package/dist/cli.js.map +1 -1
  59. package/dist/commands/docs.d.ts +51 -0
  60. package/dist/commands/docs.d.ts.map +1 -0
  61. package/dist/commands/docs.js +154 -0
  62. package/dist/commands/docs.js.map +1 -0
  63. package/dist/gen-orchestrator/orchestrator.d.ts.map +1 -1
  64. package/dist/gen-orchestrator/orchestrator.js +119 -14
  65. package/dist/gen-orchestrator/orchestrator.js.map +1 -1
  66. package/dist/resolver-extractor/extract-resolvers.d.ts +28 -1
  67. package/dist/resolver-extractor/extract-resolvers.d.ts.map +1 -1
  68. package/dist/resolver-extractor/extractor/define-api-extractor.d.ts +16 -1
  69. package/dist/resolver-extractor/extractor/define-api-extractor.d.ts.map +1 -1
  70. package/dist/resolver-extractor/extractor/define-api-extractor.js +86 -309
  71. package/dist/resolver-extractor/extractor/define-api-extractor.js.map +1 -1
  72. package/dist/resolver-extractor/index.d.ts +0 -1
  73. package/dist/resolver-extractor/index.d.ts.map +1 -1
  74. package/dist/resolver-extractor/validator/abstract-resolver-validator.d.ts +1 -0
  75. package/dist/resolver-extractor/validator/abstract-resolver-validator.d.ts.map +1 -1
  76. package/dist/resolver-extractor/validator/abstract-resolver-validator.js +9 -5
  77. package/dist/resolver-extractor/validator/abstract-resolver-validator.js.map +1 -1
  78. package/dist/schema-generator/emitter/code-emitter.d.ts +10 -2
  79. package/dist/schema-generator/emitter/code-emitter.d.ts.map +1 -1
  80. package/dist/schema-generator/emitter/code-emitter.js +39 -4
  81. package/dist/schema-generator/emitter/code-emitter.js.map +1 -1
  82. package/dist/schema-generator/generate-schema.d.ts +1 -0
  83. package/dist/schema-generator/generate-schema.d.ts.map +1 -1
  84. package/dist/schema-generator/generate-schema.js +90 -4
  85. package/dist/schema-generator/generate-schema.js.map +1 -1
  86. package/dist/schema-generator/integrator/result-integrator.d.ts +34 -2
  87. package/dist/schema-generator/integrator/result-integrator.d.ts.map +1 -1
  88. package/dist/schema-generator/integrator/result-integrator.js +96 -1
  89. package/dist/schema-generator/integrator/result-integrator.js.map +1 -1
  90. package/dist/schema-generator/resolver-collector/resolver-collector.d.ts +2 -0
  91. package/dist/schema-generator/resolver-collector/resolver-collector.d.ts.map +1 -1
  92. package/dist/schema-generator/resolver-collector/resolver-collector.js +22 -0
  93. package/dist/schema-generator/resolver-collector/resolver-collector.js.map +1 -1
  94. package/dist/shared/constants.d.ts +0 -16
  95. package/dist/shared/constants.d.ts.map +1 -1
  96. package/dist/shared/constants.js +0 -19
  97. package/dist/shared/constants.js.map +1 -1
  98. package/dist/shared/directive-detector.d.ts.map +1 -1
  99. package/dist/shared/directive-detector.js +8 -15
  100. package/dist/shared/directive-detector.js.map +1 -1
  101. package/dist/shared/enum-prefix-detector.d.ts +63 -0
  102. package/dist/shared/enum-prefix-detector.d.ts.map +1 -0
  103. package/dist/shared/enum-prefix-detector.js +80 -0
  104. package/dist/shared/enum-prefix-detector.js.map +1 -0
  105. package/dist/shared/file-scanner.d.ts.map +1 -1
  106. package/dist/shared/file-scanner.js +5 -3
  107. package/dist/shared/file-scanner.js.map +1 -1
  108. package/dist/shared/ignore-fields-detector.d.ts +26 -0
  109. package/dist/shared/ignore-fields-detector.d.ts.map +1 -0
  110. package/dist/shared/ignore-fields-detector.js +83 -0
  111. package/dist/shared/ignore-fields-detector.js.map +1 -0
  112. package/dist/shared/ignore-fields-validator.d.ts +29 -0
  113. package/dist/shared/ignore-fields-validator.d.ts.map +1 -0
  114. package/dist/shared/ignore-fields-validator.js +43 -0
  115. package/dist/shared/ignore-fields-validator.js.map +1 -0
  116. package/dist/shared/index.d.ts +3 -1
  117. package/dist/shared/index.d.ts.map +1 -1
  118. package/dist/shared/index.js +1 -3
  119. package/dist/shared/index.js.map +1 -1
  120. package/dist/shared/interface-detector.d.ts +3 -2
  121. package/dist/shared/interface-detector.d.ts.map +1 -1
  122. package/dist/shared/interface-detector.js +54 -11
  123. package/dist/shared/interface-detector.js.map +1 -1
  124. package/dist/shared/path-utils.d.ts +2 -0
  125. package/dist/shared/path-utils.d.ts.map +1 -0
  126. package/dist/shared/path-utils.js +4 -0
  127. package/dist/shared/path-utils.js.map +1 -0
  128. package/dist/shared/source-location.d.ts +5 -0
  129. package/dist/shared/source-location.d.ts.map +1 -1
  130. package/dist/shared/source-location.js +7 -0
  131. package/dist/shared/source-location.js.map +1 -1
  132. package/dist/shared/type-converter.d.ts.map +1 -1
  133. package/dist/shared/type-converter.js +11 -0
  134. package/dist/shared/type-converter.js.map +1 -1
  135. package/dist/shared/typescript-utils.d.ts +34 -7
  136. package/dist/shared/typescript-utils.d.ts.map +1 -1
  137. package/dist/shared/typescript-utils.js +72 -24
  138. package/dist/shared/typescript-utils.js.map +1 -1
  139. package/dist/type-extractor/collector/scalar-collector.d.ts.map +1 -1
  140. package/dist/type-extractor/collector/scalar-collector.js +4 -14
  141. package/dist/type-extractor/collector/scalar-collector.js.map +1 -1
  142. package/dist/type-extractor/converter/graphql-converter.d.ts.map +1 -1
  143. package/dist/type-extractor/converter/graphql-converter.js +57 -4
  144. package/dist/type-extractor/converter/graphql-converter.js.map +1 -1
  145. package/dist/type-extractor/extractor/field-type-resolver.d.ts +28 -0
  146. package/dist/type-extractor/extractor/field-type-resolver.d.ts.map +1 -0
  147. package/dist/type-extractor/extractor/field-type-resolver.js +433 -0
  148. package/dist/type-extractor/extractor/field-type-resolver.js.map +1 -0
  149. package/dist/type-extractor/extractor/type-extractor.d.ts +12 -3
  150. package/dist/type-extractor/extractor/type-extractor.d.ts.map +1 -1
  151. package/dist/type-extractor/extractor/type-extractor.js +260 -229
  152. package/dist/type-extractor/extractor/type-extractor.js.map +1 -1
  153. package/dist/type-extractor/extractor/type-name-collector.d.ts +24 -0
  154. package/dist/type-extractor/extractor/type-name-collector.d.ts.map +1 -0
  155. package/dist/type-extractor/extractor/type-name-collector.js +102 -0
  156. package/dist/type-extractor/extractor/type-name-collector.js.map +1 -0
  157. package/dist/type-extractor/mapper/scalar-base-type-mapper.d.ts +89 -0
  158. package/dist/type-extractor/mapper/scalar-base-type-mapper.d.ts.map +1 -0
  159. package/dist/type-extractor/mapper/scalar-base-type-mapper.js +158 -0
  160. package/dist/type-extractor/mapper/scalar-base-type-mapper.js.map +1 -0
  161. package/dist/type-extractor/types/diagnostics.d.ts +1 -1
  162. package/dist/type-extractor/types/diagnostics.d.ts.map +1 -1
  163. package/dist/type-extractor/types/graphql.d.ts +2 -0
  164. package/dist/type-extractor/types/graphql.d.ts.map +1 -1
  165. package/dist/type-extractor/types/index.d.ts +2 -1
  166. package/dist/type-extractor/types/index.d.ts.map +1 -1
  167. package/dist/type-extractor/types/index.js +1 -1
  168. package/dist/type-extractor/types/index.js.map +1 -1
  169. package/dist/type-extractor/types/ts-type-reference-factory.d.ts +47 -0
  170. package/dist/type-extractor/types/ts-type-reference-factory.d.ts.map +1 -0
  171. package/dist/type-extractor/types/ts-type-reference-factory.js +75 -0
  172. package/dist/type-extractor/types/ts-type-reference-factory.js.map +1 -0
  173. package/dist/type-extractor/types/typescript.d.ts +25 -1
  174. package/dist/type-extractor/types/typescript.d.ts.map +1 -1
  175. package/dist/type-extractor/validator/type-validator.js +1 -1
  176. package/dist/type-extractor/validator/type-validator.js.map +1 -1
  177. package/docs/coding-agents.md +64 -0
  178. package/docs/configuration.md +6 -20
  179. package/docs/getting-started.md +15 -12
  180. package/docs/index.md +36 -21
  181. package/docs/integration/apollo.md +8 -40
  182. package/docs/integration/drizzle.md +187 -0
  183. package/docs/integration/prisma.md +196 -0
  184. package/docs/integration/yoga.md +8 -40
  185. package/docs/schema/abstract-resolvers.md +117 -0
  186. package/docs/schema/directives.md +5 -0
  187. package/docs/schema/documentation.md +5 -0
  188. package/docs/schema/enums.md +307 -0
  189. package/docs/schema/fields.md +66 -0
  190. package/docs/schema/index.md +21 -0
  191. package/docs/schema/inputs.md +117 -15
  192. package/docs/schema/interfaces.md +31 -1
  193. package/docs/schema/objects.md +42 -0
  194. package/docs/schema/queries-mutations.md +138 -22
  195. package/docs/schema/scalars.md +5 -0
  196. package/docs/schema/unions.md +208 -1
  197. package/docs/what-is-gqlkit.md +13 -8
  198. package/package.json +14 -5
  199. package/src/auto-type-generator/auto-type-generator.ts +1670 -0
  200. package/src/auto-type-generator/index.ts +63 -0
  201. package/src/auto-type-generator/inline-enum-collector.ts +338 -0
  202. package/src/auto-type-generator/inline-object-traverser.ts +49 -0
  203. package/src/auto-type-generator/inline-union-collector.ts +402 -0
  204. package/src/auto-type-generator/inline-union-types.ts +33 -0
  205. package/src/auto-type-generator/inline-union-validator.ts +482 -0
  206. package/src/auto-type-generator/name-collision-validator.ts +119 -0
  207. package/src/auto-type-generator/naming-convention.ts +163 -0
  208. package/src/auto-type-generator/resolve-type-generator.ts +21 -0
  209. package/src/auto-type-generator/resolver-field-iterator.ts +39 -0
  210. package/src/auto-type-generator/typename-extractor.ts +230 -0
  211. package/src/auto-type-generator/typename-resolve-type-generator.ts +281 -0
  212. package/src/auto-type-generator/typename-types.ts +66 -0
  213. package/src/auto-type-generator/typename-validator.ts +326 -0
  214. package/src/cli.ts +13 -0
  215. package/src/commands/docs.ts +211 -0
  216. package/src/commands/gen.ts +141 -0
  217. package/src/commands/main.ts +5 -0
  218. package/src/config/define-config.ts +28 -0
  219. package/src/config/index.ts +7 -0
  220. package/src/config/types.ts +144 -0
  221. package/src/config-loader/index.ts +14 -0
  222. package/src/config-loader/loader.ts +143 -0
  223. package/src/config-loader/validator.ts +672 -0
  224. package/src/gen-orchestrator/hook-executor/hook-executor.ts +117 -0
  225. package/src/gen-orchestrator/orchestrator.ts +798 -0
  226. package/src/gen-orchestrator/reporter/diagnostic-reporter.ts +44 -0
  227. package/src/gen-orchestrator/reporter/progress-reporter.ts +61 -0
  228. package/src/gen-orchestrator/writer/file-writer.ts +38 -0
  229. package/src/index.ts +2 -0
  230. package/src/resolver-extractor/extract-resolvers.ts +82 -0
  231. package/src/resolver-extractor/extractor/define-api-extractor.ts +740 -0
  232. package/src/resolver-extractor/index.ts +13 -0
  233. package/src/resolver-extractor/validator/abstract-resolver-validator.ts +259 -0
  234. package/src/schema-generator/builder/ast-builder.ts +706 -0
  235. package/src/schema-generator/emitter/code-emitter.ts +385 -0
  236. package/src/schema-generator/emitter/sdl-emitter.ts +13 -0
  237. package/src/schema-generator/generate-schema.ts +267 -0
  238. package/src/schema-generator/index.ts +19 -0
  239. package/src/schema-generator/integrator/result-integrator.ts +759 -0
  240. package/src/schema-generator/pruner/schema-pruner.ts +112 -0
  241. package/src/schema-generator/resolver-collector/resolver-collector.ts +157 -0
  242. package/src/shared/constants.ts +122 -0
  243. package/src/shared/default-value-detector.ts +172 -0
  244. package/src/shared/diagnostics.ts +35 -0
  245. package/src/shared/directive-definition-extractor.ts +564 -0
  246. package/src/shared/directive-detector.ts +556 -0
  247. package/src/shared/enum-prefix-detector.ts +99 -0
  248. package/src/shared/file-scanner.ts +170 -0
  249. package/src/shared/ignore-fields-detector.ts +109 -0
  250. package/src/shared/ignore-fields-validator.ts +66 -0
  251. package/src/shared/index.ts +34 -0
  252. package/src/shared/inline-object-extractor.ts +102 -0
  253. package/src/shared/inline-object-utils.ts +23 -0
  254. package/src/shared/interface-detector.ts +176 -0
  255. package/src/shared/interface-validator.ts +211 -0
  256. package/src/shared/metadata-detector.ts +443 -0
  257. package/src/shared/path-utils.ts +3 -0
  258. package/src/shared/program-factory.ts +51 -0
  259. package/src/shared/source-location.ts +38 -0
  260. package/src/shared/tsconfig-loader.ts +126 -0
  261. package/src/shared/tsdoc-parser.ts +155 -0
  262. package/src/shared/type-converter.ts +99 -0
  263. package/src/shared/typescript-utils.ts +246 -0
  264. package/src/type-extractor/collector/result-collector.ts +57 -0
  265. package/src/type-extractor/collector/scalar-collector.ts +254 -0
  266. package/src/type-extractor/converter/field-eligibility.ts +112 -0
  267. package/src/type-extractor/converter/graphql-converter.ts +483 -0
  268. package/src/type-extractor/extract-types.ts +1 -0
  269. package/src/type-extractor/extractor/field-type-resolver.ts +614 -0
  270. package/src/type-extractor/extractor/type-extractor.ts +1644 -0
  271. package/src/type-extractor/extractor/type-name-collector.ts +130 -0
  272. package/src/type-extractor/index.ts +20 -0
  273. package/src/type-extractor/mapper/scalar-base-type-mapper.ts +265 -0
  274. package/src/type-extractor/types/diagnostics.ts +109 -0
  275. package/src/type-extractor/types/graphql.ts +55 -0
  276. package/src/type-extractor/types/index.ts +37 -0
  277. package/src/type-extractor/types/ts-type-reference-factory.ts +150 -0
  278. package/src/type-extractor/types/typescript.ts +137 -0
  279. package/src/type-extractor/validator/type-validator.ts +77 -0
  280. package/dist/auto-type-generator/auto-type-generator.test.d.ts +0 -2
  281. package/dist/auto-type-generator/auto-type-generator.test.d.ts.map +0 -1
  282. package/dist/auto-type-generator/auto-type-generator.test.js +0 -613
  283. package/dist/auto-type-generator/auto-type-generator.test.js.map +0 -1
  284. package/dist/auto-type-generator/name-collision-validator.test.d.ts +0 -2
  285. package/dist/auto-type-generator/name-collision-validator.test.d.ts.map +0 -1
  286. package/dist/auto-type-generator/name-collision-validator.test.js +0 -358
  287. package/dist/auto-type-generator/name-collision-validator.test.js.map +0 -1
  288. package/dist/auto-type-generator/naming-convention.test.d.ts +0 -2
  289. package/dist/auto-type-generator/naming-convention.test.d.ts.map +0 -1
  290. package/dist/auto-type-generator/naming-convention.test.js +0 -132
  291. package/dist/auto-type-generator/naming-convention.test.js.map +0 -1
  292. package/dist/commands/gen.test.d.ts +0 -2
  293. package/dist/commands/gen.test.d.ts.map +0 -1
  294. package/dist/commands/gen.test.js +0 -226
  295. package/dist/commands/gen.test.js.map +0 -1
  296. package/dist/config-loader/loader.test.d.ts +0 -2
  297. package/dist/config-loader/loader.test.d.ts.map +0 -1
  298. package/dist/config-loader/loader.test.js +0 -123
  299. package/dist/config-loader/loader.test.js.map +0 -1
  300. package/dist/config-loader/validator.test.d.ts +0 -2
  301. package/dist/config-loader/validator.test.d.ts.map +0 -1
  302. package/dist/config-loader/validator.test.js +0 -846
  303. package/dist/config-loader/validator.test.js.map +0 -1
  304. package/dist/gen-orchestrator/golden.test.d.ts +0 -2
  305. package/dist/gen-orchestrator/golden.test.d.ts.map +0 -1
  306. package/dist/gen-orchestrator/golden.test.js +0 -102
  307. package/dist/gen-orchestrator/golden.test.js.map +0 -1
  308. package/dist/gen-orchestrator/hook-executor/hook-executor.test.d.ts +0 -2
  309. package/dist/gen-orchestrator/hook-executor/hook-executor.test.d.ts.map +0 -1
  310. package/dist/gen-orchestrator/hook-executor/hook-executor.test.js +0 -167
  311. package/dist/gen-orchestrator/hook-executor/hook-executor.test.js.map +0 -1
  312. package/dist/gen-orchestrator/reporter/progress-reporter.test.d.ts +0 -2
  313. package/dist/gen-orchestrator/reporter/progress-reporter.test.d.ts.map +0 -1
  314. package/dist/gen-orchestrator/reporter/progress-reporter.test.js +0 -74
  315. package/dist/gen-orchestrator/reporter/progress-reporter.test.js.map +0 -1
  316. package/dist/resolver-extractor/validator/only-validator.d.ts +0 -61
  317. package/dist/resolver-extractor/validator/only-validator.d.ts.map +0 -1
  318. package/dist/resolver-extractor/validator/only-validator.js +0 -76
  319. package/dist/resolver-extractor/validator/only-validator.js.map +0 -1
  320. package/dist/resolver-extractor/validator/only-validator.test.d.ts +0 -8
  321. package/dist/resolver-extractor/validator/only-validator.test.d.ts.map +0 -1
  322. package/dist/resolver-extractor/validator/only-validator.test.js +0 -352
  323. package/dist/resolver-extractor/validator/only-validator.test.js.map +0 -1
  324. package/dist/schema-generator/builder/ast-builder.test.d.ts +0 -2
  325. package/dist/schema-generator/builder/ast-builder.test.d.ts.map +0 -1
  326. package/dist/schema-generator/builder/ast-builder.test.js +0 -469
  327. package/dist/schema-generator/builder/ast-builder.test.js.map +0 -1
  328. package/dist/shared/file-scanner.test.d.ts +0 -2
  329. package/dist/shared/file-scanner.test.d.ts.map +0 -1
  330. package/dist/shared/file-scanner.test.js +0 -138
  331. package/dist/shared/file-scanner.test.js.map +0 -1
  332. package/dist/shared/interface-validator.test.d.ts +0 -2
  333. package/dist/shared/interface-validator.test.d.ts.map +0 -1
  334. package/dist/shared/interface-validator.test.js +0 -145
  335. package/dist/shared/interface-validator.test.js.map +0 -1
  336. package/dist/type-extractor/types/typescript.test.d.ts +0 -2
  337. package/dist/type-extractor/types/typescript.test.d.ts.map +0 -1
  338. package/dist/type-extractor/types/typescript.test.js +0 -287
  339. package/dist/type-extractor/types/typescript.test.js.map +0 -1
@@ -0,0 +1,385 @@
1
+ import path from "node:path";
2
+ import type { AutoGeneratedResolveType } from "../../auto-type-generator/resolve-type-generator.js";
3
+ import { TYPENAME_FIELD_NAMES } from "../../auto-type-generator/typename-types.js";
4
+ import { toPosixPath } from "../../shared/index.js";
5
+ import type { CollectedScalarType } from "../../type-extractor/collector/scalar-collector.js";
6
+ import {
7
+ type BuildDocumentOptions,
8
+ buildDocumentNode,
9
+ } from "../builder/ast-builder.js";
10
+ import type {
11
+ IntegratedResult,
12
+ NumericEnumInfo,
13
+ StringEnumMappingInfo,
14
+ } from "../integrator/result-integrator.js";
15
+ import type {
16
+ AbstractTypeResolverInfo,
17
+ ResolverInfo,
18
+ TypeResolvers,
19
+ } from "../resolver-collector/resolver-collector.js";
20
+
21
+ const GENERATED_FILE_HEADER =
22
+ "// This file is auto-generated by gqlkit. DO NOT EDIT.";
23
+
24
+ function formatDocumentNodeAsCode(
25
+ integratedResult: IntegratedResult,
26
+ options?: BuildDocumentOptions,
27
+ ): string {
28
+ const doc = buildDocumentNode(integratedResult, options);
29
+
30
+ return JSON.stringify(doc, null, 2);
31
+ }
32
+
33
+ export function emitTypeDefsCode(
34
+ integratedResult: IntegratedResult,
35
+ options?: BuildDocumentOptions,
36
+ ): string {
37
+ const documentNodeCode = formatDocumentNodeAsCode(integratedResult, options);
38
+
39
+ return `${GENERATED_FILE_HEADER}
40
+
41
+ import type { DocumentNode } from "graphql";
42
+
43
+ export const typeDefs: DocumentNode = ${documentNodeCode} as DocumentNode;
44
+ `;
45
+ }
46
+
47
+ function computeRelativeImportPath(fromDir: string, toFile: string): string {
48
+ const relativePath = toPosixPath(path.relative(fromDir, toFile));
49
+ const withoutExt = relativePath.replace(/\.ts$/, ".js");
50
+ if (!withoutExt.startsWith(".")) {
51
+ return `./${withoutExt}`;
52
+ }
53
+ return withoutExt;
54
+ }
55
+
56
+ interface ScalarTypeImport {
57
+ readonly typeName: string;
58
+ readonly sourceFile: string;
59
+ }
60
+
61
+ function collectScalarTypeImports(
62
+ customScalars: ReadonlyArray<CollectedScalarType>,
63
+ ): ScalarTypeImport[] {
64
+ const imports: ScalarTypeImport[] = [];
65
+ const seen = new Set<string>();
66
+
67
+ for (const scalar of customScalars) {
68
+ if (
69
+ scalar.inputType &&
70
+ scalar.inputType.sourceFile !== "" &&
71
+ !seen.has(scalar.inputType.typeName)
72
+ ) {
73
+ imports.push({
74
+ typeName: scalar.inputType.typeName,
75
+ sourceFile: scalar.inputType.sourceFile,
76
+ });
77
+ seen.add(scalar.inputType.typeName);
78
+ }
79
+
80
+ for (const outputType of scalar.outputTypes) {
81
+ if (outputType.sourceFile !== "" && !seen.has(outputType.typeName)) {
82
+ imports.push({
83
+ typeName: outputType.typeName,
84
+ sourceFile: outputType.sourceFile,
85
+ });
86
+ seen.add(outputType.typeName);
87
+ }
88
+ }
89
+ }
90
+
91
+ return imports;
92
+ }
93
+
94
+ function buildScalarTypeImports(
95
+ scalarTypeImports: ScalarTypeImport[],
96
+ outputDir: string,
97
+ ): string[] {
98
+ const importsByFile = new Map<string, string[]>();
99
+
100
+ for (const imp of scalarTypeImports) {
101
+ const existing = importsByFile.get(imp.sourceFile) ?? [];
102
+ existing.push(imp.typeName);
103
+ importsByFile.set(imp.sourceFile, existing);
104
+ }
105
+
106
+ const imports: string[] = [];
107
+ const sortedFiles = [...importsByFile.keys()].sort();
108
+
109
+ for (const sourceFile of sortedFiles) {
110
+ const typeNames = importsByFile.get(sourceFile) ?? [];
111
+ const importPath = computeRelativeImportPath(outputDir, sourceFile);
112
+ imports.push(
113
+ `import type { ${typeNames.sort().join(", ")} } from "${importPath}";`,
114
+ );
115
+ }
116
+
117
+ return imports;
118
+ }
119
+
120
+ function buildScalarTypeParameter(scalar: CollectedScalarType): string {
121
+ const inputTypeName = scalar.inputType?.typeName ?? "unknown";
122
+ const outputTypeNames = scalar.outputTypes.map((t) => t.typeName);
123
+ const outputTypeUnion =
124
+ outputTypeNames.length > 0 ? outputTypeNames.join(" | ") : "unknown";
125
+ return `GraphQLScalarType<${inputTypeName}, ${outputTypeUnion}>`;
126
+ }
127
+
128
+ function buildScalarsArgumentType(
129
+ customScalars: ReadonlyArray<CollectedScalarType>,
130
+ ): string {
131
+ const entries = customScalars
132
+ .map((scalar) => {
133
+ const typeParam = buildScalarTypeParameter(scalar);
134
+ return ` ${scalar.scalarName}: ${typeParam};`;
135
+ })
136
+ .join("\n");
137
+
138
+ return `{\n scalars: {\n${entries}\n };\n}`;
139
+ }
140
+
141
+ function buildScalarResolverEntries(
142
+ customScalars: ReadonlyArray<CollectedScalarType>,
143
+ ): string[] {
144
+ return customScalars.map(
145
+ (scalar) => ` ${scalar.scalarName}: scalars.${scalar.scalarName},`,
146
+ );
147
+ }
148
+
149
+ function collectResolverImportsByFile(
150
+ resolverInfo: ResolverInfo,
151
+ ): Map<string, Set<string>> {
152
+ const importsByFile = new Map<string, Set<string>>();
153
+
154
+ for (const type of resolverInfo.types) {
155
+ for (const field of type.fields) {
156
+ const existing = importsByFile.get(field.sourceFile) ?? new Set<string>();
157
+ existing.add(field.resolverValueName);
158
+ importsByFile.set(field.sourceFile, existing);
159
+ }
160
+ }
161
+
162
+ for (const abstractResolver of resolverInfo.abstractTypeResolvers) {
163
+ const existing =
164
+ importsByFile.get(abstractResolver.sourceFile) ?? new Set<string>();
165
+ existing.add(abstractResolver.exportName);
166
+ importsByFile.set(abstractResolver.sourceFile, existing);
167
+ }
168
+
169
+ return importsByFile;
170
+ }
171
+
172
+ function buildResolverImports(
173
+ importsByFile: Map<string, Set<string>>,
174
+ outputDir: string,
175
+ ): string[] {
176
+ const imports: string[] = [];
177
+ const sortedFiles = [...importsByFile.keys()].sort();
178
+
179
+ for (const sourceFile of sortedFiles) {
180
+ const valueNames = importsByFile.get(sourceFile) ?? new Set<string>();
181
+ const importPath = computeRelativeImportPath(outputDir, sourceFile);
182
+ const sortedValues = [...valueNames].sort();
183
+
184
+ if (sortedValues.length > 0) {
185
+ imports.push(
186
+ `import { ${sortedValues.join(", ")} } from "${importPath}";`,
187
+ );
188
+ }
189
+ }
190
+
191
+ return imports;
192
+ }
193
+
194
+ function buildAbstractOnlyTypeEntry(
195
+ abstractResolver: AbstractTypeResolverInfo,
196
+ ): string {
197
+ return ` ${abstractResolver.typeName}: {\n ${abstractResolver.resolverKey}: ${abstractResolver.exportName},\n },`;
198
+ }
199
+
200
+ function buildNumericEnumResolver(enumInfo: NumericEnumInfo): string {
201
+ const entries = enumInfo.members
202
+ .map((member) => ` ${member.name}: ${member.numericValue},`)
203
+ .join("\n");
204
+ return ` ${enumInfo.enumName}: {\n${entries}\n },`;
205
+ }
206
+
207
+ function buildNumericEnumResolvers(
208
+ numericEnums: ReadonlyArray<NumericEnumInfo>,
209
+ ): string[] {
210
+ return numericEnums.map(buildNumericEnumResolver);
211
+ }
212
+
213
+ function buildStringEnumResolver(enumInfo: StringEnumMappingInfo): string {
214
+ const entries = enumInfo.members
215
+ .map(
216
+ (member) => ` ${member.graphqlValue}: "${member.typescriptValue}",`,
217
+ )
218
+ .join("\n");
219
+ return ` ${enumInfo.enumName}: {\n${entries}\n },`;
220
+ }
221
+
222
+ function buildStringEnumResolvers(
223
+ stringEnumMappings: ReadonlyArray<StringEnumMappingInfo>,
224
+ ): string[] {
225
+ return stringEnumMappings.map(buildStringEnumResolver);
226
+ }
227
+
228
+ function buildTypeResolverEntry(
229
+ type: TypeResolvers,
230
+ abstractResolverForType: AbstractTypeResolverInfo | null,
231
+ ): string {
232
+ const entries: string[] = [];
233
+
234
+ for (const field of type.fields) {
235
+ if (field.isDirectExport) {
236
+ entries.push(` ${field.fieldName}: ${field.resolverValueName},`);
237
+ } else {
238
+ entries.push(
239
+ ` ${field.fieldName}: ${field.resolverValueName}.${field.fieldName},`,
240
+ );
241
+ }
242
+ }
243
+
244
+ if (abstractResolverForType !== null) {
245
+ entries.push(
246
+ ` ${abstractResolverForType.resolverKey}: ${abstractResolverForType.exportName},`,
247
+ );
248
+ }
249
+
250
+ return ` ${type.typeName}: {\n${entries.join("\n")}\n },`;
251
+ }
252
+
253
+ function getResolveTypeExpression(
254
+ fieldPattern: AutoGeneratedResolveType["fieldPattern"],
255
+ ): string {
256
+ const { usedFieldNames } = fieldPattern;
257
+
258
+ if (usedFieldNames.size === 1) {
259
+ const fieldName = [...usedFieldNames][0]!;
260
+ return `obj.${fieldName}`;
261
+ }
262
+
263
+ const expressions = TYPENAME_FIELD_NAMES.filter((name) =>
264
+ usedFieldNames.has(name),
265
+ ).map((name) => `obj.${name}`);
266
+
267
+ return expressions.join(" ?? ");
268
+ }
269
+
270
+ function buildAutoResolveTypeEntry(
271
+ autoResolveType: AutoGeneratedResolveType,
272
+ ): string {
273
+ const expression = getResolveTypeExpression(autoResolveType.fieldPattern);
274
+ return ` ${autoResolveType.unionTypeName}: {\n __resolveType: (obj) => ${expression},\n },`;
275
+ }
276
+
277
+ function buildTypeEntries(
278
+ resolverInfo: ResolverInfo,
279
+ customScalars: ReadonlyArray<CollectedScalarType>,
280
+ ): string[] {
281
+ const typeEntries: string[] = [];
282
+ const hasCustomScalars = customScalars.length > 0;
283
+
284
+ if (hasCustomScalars) {
285
+ typeEntries.push(...buildScalarResolverEntries(customScalars));
286
+ }
287
+
288
+ const typesWithFields = new Map<string, TypeResolvers>();
289
+ for (const type of resolverInfo.types) {
290
+ typesWithFields.set(type.typeName, type);
291
+ }
292
+
293
+ const abstractResolversByType = new Map<string, AbstractTypeResolverInfo>();
294
+ for (const abstractResolver of resolverInfo.abstractTypeResolvers) {
295
+ abstractResolversByType.set(abstractResolver.typeName, abstractResolver);
296
+ }
297
+
298
+ const autoResolveTypeByUnion = new Map<string, AutoGeneratedResolveType>(
299
+ resolverInfo.autoGeneratedResolveTypes.map((r) => [r.unionTypeName, r]),
300
+ );
301
+
302
+ const allTypeNames = new Set<string>([
303
+ ...typesWithFields.keys(),
304
+ ...abstractResolversByType.keys(),
305
+ ...autoResolveTypeByUnion.keys(),
306
+ ]);
307
+ const sortedTypeNames = [...allTypeNames].sort();
308
+
309
+ for (const typeName of sortedTypeNames) {
310
+ const typeWithFields = typesWithFields.get(typeName);
311
+ const abstractResolver = abstractResolversByType.get(typeName) ?? null;
312
+ const autoResolveType = autoResolveTypeByUnion.get(typeName);
313
+
314
+ if (typeWithFields !== undefined) {
315
+ typeEntries.push(
316
+ buildTypeResolverEntry(typeWithFields, abstractResolver),
317
+ );
318
+ } else if (abstractResolver !== null) {
319
+ typeEntries.push(buildAbstractOnlyTypeEntry(abstractResolver));
320
+ } else if (autoResolveType !== undefined) {
321
+ typeEntries.push(buildAutoResolveTypeEntry(autoResolveType));
322
+ }
323
+ }
324
+
325
+ return typeEntries;
326
+ }
327
+
328
+ interface EmitResolversCodeParams {
329
+ readonly resolverInfo: ResolverInfo;
330
+ readonly outputDir: string;
331
+ readonly customScalars: ReadonlyArray<CollectedScalarType>;
332
+ readonly numericEnums: ReadonlyArray<NumericEnumInfo>;
333
+ readonly stringEnumMappings: ReadonlyArray<StringEnumMappingInfo>;
334
+ }
335
+
336
+ export function emitResolversCode(params: EmitResolversCodeParams): string {
337
+ const {
338
+ resolverInfo,
339
+ outputDir,
340
+ customScalars,
341
+ numericEnums,
342
+ stringEnumMappings,
343
+ } = params;
344
+ const hasCustomScalars = customScalars.length > 0;
345
+ const imports: string[] = [];
346
+
347
+ if (hasCustomScalars) {
348
+ imports.push('import { GraphQLScalarType } from "graphql";');
349
+ }
350
+
351
+ const importsByFile = collectResolverImportsByFile(resolverInfo);
352
+ imports.push(...buildResolverImports(importsByFile, outputDir));
353
+
354
+ if (hasCustomScalars) {
355
+ const scalarTypeImports = collectScalarTypeImports(customScalars);
356
+ const scalarImports = buildScalarTypeImports(scalarTypeImports, outputDir);
357
+ imports.push(...scalarImports);
358
+ }
359
+
360
+ const numericEnumResolverEntries = buildNumericEnumResolvers(numericEnums);
361
+ const stringEnumResolverEntries =
362
+ buildStringEnumResolvers(stringEnumMappings);
363
+ const typeEntries = buildTypeEntries(resolverInfo, customScalars);
364
+
365
+ const allEntries = [
366
+ ...numericEnumResolverEntries,
367
+ ...stringEnumResolverEntries,
368
+ ...typeEntries,
369
+ ];
370
+
371
+ const functionSignature = hasCustomScalars
372
+ ? `export function createResolvers({ scalars }: ${buildScalarsArgumentType(customScalars)})`
373
+ : "export function createResolvers()";
374
+
375
+ const importSection = imports.length > 0 ? `${imports.join("\n")}\n\n` : "";
376
+
377
+ return `${GENERATED_FILE_HEADER}
378
+
379
+ ${importSection}${functionSignature} {
380
+ return {
381
+ ${allEntries.join("\n")}
382
+ };
383
+ }
384
+ `;
385
+ }
@@ -0,0 +1,13 @@
1
+ import { type DocumentNode, print } from "graphql";
2
+
3
+ const GENERATED_FILE_HEADER =
4
+ "# This file is auto-generated by gqlkit. DO NOT EDIT.";
5
+
6
+ /**
7
+ * DocumentNode を SDL 形式の文字列に変換する。
8
+ * graphql パッケージの print() 関数を使用して SDL を生成する。
9
+ */
10
+ export function emitSdlContent(documentNode: DocumentNode): string {
11
+ const sdl = print(documentNode);
12
+ return `${GENERATED_FILE_HEADER}\n\n${sdl}`;
13
+ }
@@ -0,0 +1,267 @@
1
+ import {
2
+ collectTypenameExtractions,
3
+ collectTypenameResolveTypes,
4
+ generateAutoTypes,
5
+ validateNameCollisions,
6
+ validateSchemaTypenames,
7
+ validateTypenames,
8
+ } from "../auto-type-generator/index.js";
9
+ import type { ExtractResolversResult } from "../resolver-extractor/index.js";
10
+ import type { DirectiveDefinitionInfo } from "../shared/directive-definition-extractor.js";
11
+ import type { CollectedScalarType } from "../type-extractor/collector/scalar-collector.js";
12
+ import { convertToGraphQL } from "../type-extractor/converter/graphql-converter.js";
13
+ import type { ExtractTypesResult } from "../type-extractor/index.js";
14
+ import type {
15
+ Diagnostic,
16
+ ExtractedTypeInfo,
17
+ } from "../type-extractor/types/index.js";
18
+ import { buildDocumentNode } from "./builder/ast-builder.js";
19
+ import { emitResolversCode, emitTypeDefsCode } from "./emitter/code-emitter.js";
20
+ import { emitSdlContent } from "./emitter/sdl-emitter.js";
21
+ import { integrate } from "./integrator/result-integrator.js";
22
+ import { pruneDocumentNode } from "./pruner/schema-pruner.js";
23
+ import { collectResolverInfo } from "./resolver-collector/resolver-collector.js";
24
+
25
+ export interface GenerateSchemaInput {
26
+ readonly typesResult: ExtractTypesResult;
27
+ readonly extractedTypes: ReadonlyArray<ExtractedTypeInfo>;
28
+ readonly resolversResult: ExtractResolversResult;
29
+ readonly outputDir: string;
30
+ readonly customScalarNames: ReadonlyArray<string> | null;
31
+ readonly customScalars: ReadonlyArray<CollectedScalarType> | null;
32
+ readonly directiveDefinitions: ReadonlyArray<DirectiveDefinitionInfo> | null;
33
+ readonly enablePruning: boolean | null;
34
+ readonly sourceRoot: string | null;
35
+ readonly knownTypeNames: ReadonlySet<string> | null;
36
+ }
37
+
38
+ export interface GenerateSchemaResult {
39
+ readonly typeDefsCode: string;
40
+ readonly sdlContent: string;
41
+ readonly resolversCode: string;
42
+ readonly diagnostics: ReadonlyArray<Diagnostic>;
43
+ readonly hasErrors: boolean;
44
+ readonly prunedTypes: ReadonlyArray<string> | null;
45
+ }
46
+
47
+ export function generateSchema(
48
+ input: GenerateSchemaInput,
49
+ ): GenerateSchemaResult {
50
+ const {
51
+ typesResult,
52
+ extractedTypes,
53
+ resolversResult,
54
+ outputDir,
55
+ customScalarNames,
56
+ customScalars,
57
+ directiveDefinitions,
58
+ enablePruning,
59
+ sourceRoot,
60
+ knownTypeNames,
61
+ } = input;
62
+
63
+ const autoTypeResult = generateAutoTypes({
64
+ extractedTypes,
65
+ resolversResult,
66
+ knownTypeNames: knownTypeNames ?? new Set(),
67
+ });
68
+
69
+ const autoTypeErrors = autoTypeResult.diagnostics.filter(
70
+ (d) => d.severity === "error",
71
+ );
72
+ if (autoTypeErrors.length > 0) {
73
+ return {
74
+ typeDefsCode: "",
75
+ sdlContent: "",
76
+ resolversCode: "",
77
+ diagnostics: autoTypeResult.diagnostics,
78
+ hasErrors: true,
79
+ prunedTypes: null,
80
+ };
81
+ }
82
+
83
+ const userDefinedTypes = extractedTypes.map((t) => ({
84
+ name: t.metadata.name,
85
+ sourceLocation: t.metadata.sourceLocation,
86
+ }));
87
+
88
+ const collisionResult = validateNameCollisions({
89
+ userDefinedTypes,
90
+ autoGeneratedTypes: autoTypeResult.autoGeneratedTypes,
91
+ sourceRoot,
92
+ });
93
+
94
+ if (collisionResult.hasCollisions) {
95
+ return {
96
+ typeDefsCode: "",
97
+ sdlContent: "",
98
+ resolversCode: "",
99
+ diagnostics: collisionResult.diagnostics,
100
+ hasErrors: true,
101
+ prunedTypes: null,
102
+ };
103
+ }
104
+
105
+ // Re-convert to GraphQL types using updated extracted types
106
+ // This resolves __INLINE_OBJECT__ references to auto-generated type names
107
+ const updatedConversionResult = convertToGraphQL(
108
+ autoTypeResult.updatedExtractedTypes,
109
+ );
110
+ const updatedTypesResult: ExtractTypesResult = {
111
+ types: updatedConversionResult.types,
112
+ diagnostics: {
113
+ errors: [
114
+ ...typesResult.diagnostics.errors,
115
+ ...updatedConversionResult.diagnostics.filter(
116
+ (d) => d.severity === "error",
117
+ ),
118
+ ...autoTypeResult.diagnostics.filter((d) => d.severity === "error"),
119
+ ],
120
+ warnings: [
121
+ ...typesResult.diagnostics.warnings,
122
+ ...updatedConversionResult.diagnostics.filter(
123
+ (d) => d.severity === "warning",
124
+ ),
125
+ ...autoTypeResult.diagnostics.filter((d) => d.severity === "warning"),
126
+ ],
127
+ },
128
+ };
129
+
130
+ const typeMap = new Map(
131
+ autoTypeResult.updatedExtractedTypes.map((t) => [t.metadata.name, t]),
132
+ );
133
+
134
+ const manualResolveTypeNames = new Set(
135
+ autoTypeResult.updatedResolversResult.abstractTypeResolvers
136
+ .filter((r) => r.kind === "resolveType")
137
+ .map((r) => r.targetTypeName),
138
+ );
139
+
140
+ const typenameResolveTypesResult = collectTypenameResolveTypes({
141
+ extractedTypes: autoTypeResult.updatedExtractedTypes,
142
+ typeMap,
143
+ manualResolveTypeNames,
144
+ });
145
+
146
+ const typenameExtractions = collectTypenameExtractions({
147
+ extractedTypes: autoTypeResult.updatedExtractedTypes,
148
+ typeMap,
149
+ });
150
+
151
+ const typenameValidationDiagnostics: Diagnostic[] = [];
152
+
153
+ for (const extraction of typenameExtractions) {
154
+ const abstractType = typeMap.get(extraction.abstractTypeName);
155
+ if (!abstractType) {
156
+ continue;
157
+ }
158
+ const validationResult = validateTypenames({
159
+ extractionResult: extraction,
160
+ sourceLocation: abstractType.metadata.sourceLocation,
161
+ inlineObjectMembers: abstractType.inlineObjectMembers,
162
+ });
163
+ typenameValidationDiagnostics.push(...validationResult.diagnostics);
164
+ }
165
+
166
+ const schemaTypenameValidationResult = validateSchemaTypenames({
167
+ objectTypes: autoTypeResult.updatedExtractedTypes,
168
+ typeMap,
169
+ });
170
+ typenameValidationDiagnostics.push(
171
+ ...schemaTypenameValidationResult.diagnostics,
172
+ );
173
+
174
+ if (typenameValidationDiagnostics.length > 0) {
175
+ return {
176
+ typeDefsCode: "",
177
+ sdlContent: "",
178
+ resolversCode: "",
179
+ diagnostics: typenameValidationDiagnostics,
180
+ hasErrors: true,
181
+ prunedTypes: null,
182
+ };
183
+ }
184
+
185
+ const generatedInlineObjectTypes =
186
+ typenameResolveTypesResult.generatedInlineObjectTypes;
187
+
188
+ const updatedTypesForIntegration: ExtractTypesResult =
189
+ generatedInlineObjectTypes.length > 0
190
+ ? {
191
+ types: updatedTypesResult.types.map((type) => {
192
+ if (type.kind !== "Union") {
193
+ return type;
194
+ }
195
+ const inlineTypes = generatedInlineObjectTypes.filter(
196
+ (g) => g.abstractTypeName === type.name,
197
+ );
198
+ if (inlineTypes.length === 0) {
199
+ return type;
200
+ }
201
+ const newMembers = inlineTypes.map((g) => g.typeName);
202
+ return {
203
+ ...type,
204
+ unionMembers: [
205
+ ...(type.unionMembers ?? []),
206
+ ...newMembers,
207
+ ].sort(),
208
+ };
209
+ }),
210
+ diagnostics: updatedTypesResult.diagnostics,
211
+ }
212
+ : updatedTypesResult;
213
+
214
+ const allAutoGeneratedTypes = [
215
+ ...autoTypeResult.autoGeneratedTypes,
216
+ ...typenameResolveTypesResult.generatedObjectTypes,
217
+ ];
218
+
219
+ const integratedResult = integrate(
220
+ updatedTypesForIntegration,
221
+ autoTypeResult.updatedResolversResult,
222
+ customScalarNames,
223
+ customScalars,
224
+ directiveDefinitions,
225
+ allAutoGeneratedTypes,
226
+ typenameResolveTypesResult.autoResolveTypes,
227
+ );
228
+
229
+ let documentNode = buildDocumentNode(
230
+ integratedResult,
231
+ sourceRoot !== null ? { sourceRoot } : undefined,
232
+ );
233
+ let prunedTypes: ReadonlyArray<string> | null = null;
234
+
235
+ if (enablePruning) {
236
+ const pruneResult = pruneDocumentNode({
237
+ documentNode,
238
+ customScalarNames,
239
+ });
240
+ documentNode = pruneResult.documentNode;
241
+ prunedTypes = pruneResult.removedTypes;
242
+ }
243
+
244
+ const typeDefsCode = emitTypeDefsCode(
245
+ integratedResult,
246
+ sourceRoot !== null ? { sourceRoot } : undefined,
247
+ );
248
+ const sdlContent = emitSdlContent(documentNode);
249
+
250
+ const resolverInfo = collectResolverInfo(integratedResult);
251
+ const resolversCode = emitResolversCode({
252
+ resolverInfo,
253
+ outputDir,
254
+ customScalars: customScalars ?? [],
255
+ numericEnums: integratedResult.numericEnums,
256
+ stringEnumMappings: integratedResult.stringEnumMappings,
257
+ });
258
+
259
+ return {
260
+ typeDefsCode,
261
+ sdlContent,
262
+ resolversCode,
263
+ diagnostics: integratedResult.diagnostics,
264
+ hasErrors: integratedResult.hasErrors,
265
+ prunedTypes,
266
+ };
267
+ }
@@ -0,0 +1,19 @@
1
+ export {
2
+ type GenerateSchemaInput,
3
+ type GenerateSchemaResult,
4
+ generateSchema,
5
+ } from "./generate-schema.js";
6
+ export type {
7
+ BaseField,
8
+ BaseType,
9
+ CustomScalarInfo,
10
+ ExtensionField,
11
+ IntegratedResult,
12
+ TypeExtension,
13
+ } from "./integrator/result-integrator.js";
14
+ export type {
15
+ AbstractTypeResolverInfo,
16
+ FieldResolver,
17
+ ResolverInfo,
18
+ TypeResolvers,
19
+ } from "./resolver-collector/resolver-collector.js";