@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,509 @@
1
+ import ts from "typescript";
2
+ import { isInternalTypeSymbol, METADATA_PROPERTIES, } from "../../shared/constants.js";
3
+ import { detectDefaultValueMetadata } from "../../shared/default-value-detector.js";
4
+ import { extractDirectivesFromType, hasDirectiveMetadata, unwrapDirectiveType, } from "../../shared/directive-detector.js";
5
+ import { getActualMetadataType } from "../../shared/metadata-detector.js";
6
+ import { getSourceLocationFromNode } from "../../shared/source-location.js";
7
+ import { extractTsDocFromSymbol, extractTsDocInfo, } from "../../shared/tsdoc-parser.js";
8
+ import { extractPropertySymbols, getTypeNameFromNode, hasUndefinedInType, isExported, } from "../../shared/typescript-utils.js";
9
+ import { resolveFieldType, } from "../../type-extractor/extractor/field-type-resolver.js";
10
+ const RESOLVER_METADATA_PROPERTY = METADATA_PROPERTIES.RESOLVER;
11
+ const ABSTRACT_RESOLVER_METADATA_PROPERTY = METADATA_PROPERTIES.ABSTRACT_RESOLVER;
12
+ /**
13
+ * Detects abstract resolver kind and target type from metadata embedded in the type.
14
+ * Returns null if no abstract resolver metadata is found.
15
+ */
16
+ function detectAbstractResolverFromMetadataType(callExpr, checker) {
17
+ const returnType = checker.getTypeAtLocation(callExpr);
18
+ const metadataProp = returnType.getProperty(ABSTRACT_RESOLVER_METADATA_PROPERTY);
19
+ if (!metadataProp) {
20
+ return null;
21
+ }
22
+ const metadataType = checker.getTypeOfSymbol(metadataProp);
23
+ const actualType = getActualMetadataType(metadataType);
24
+ if (!actualType) {
25
+ return null;
26
+ }
27
+ const kindProp = actualType.getProperty("kind");
28
+ if (!kindProp) {
29
+ return null;
30
+ }
31
+ const kindType = checker.getTypeOfSymbol(kindProp);
32
+ if (!kindType.isStringLiteral()) {
33
+ return null;
34
+ }
35
+ const kind = kindType.value;
36
+ if (kind !== "resolveType" && kind !== "isTypeOf") {
37
+ return null;
38
+ }
39
+ const targetTypeProp = actualType.getProperty("targetType");
40
+ if (!targetTypeProp) {
41
+ return null;
42
+ }
43
+ const targetType = checker.getTypeOfSymbol(targetTypeProp);
44
+ const targetTypeName = extractTypeNameFromType(targetType, checker);
45
+ if (!targetTypeName) {
46
+ return null;
47
+ }
48
+ return { kind, targetTypeName };
49
+ }
50
+ /**
51
+ * Extracts a type name from a TypeScript type.
52
+ * Handles internal type symbols (like __type) by falling back to typeToString.
53
+ * Returns null for unresolvable types (any, unknown).
54
+ */
55
+ function extractTypeNameFromType(type, checker) {
56
+ if (type.flags & ts.TypeFlags.Any) {
57
+ return null;
58
+ }
59
+ if (type.aliasSymbol) {
60
+ const aliasName = type.aliasSymbol.getName();
61
+ if (!isInternalTypeSymbol(aliasName)) {
62
+ return aliasName;
63
+ }
64
+ }
65
+ const symbol = type.getSymbol();
66
+ if (symbol) {
67
+ const symbolName = symbol.getName();
68
+ if (!isInternalTypeSymbol(symbolName)) {
69
+ return symbolName;
70
+ }
71
+ }
72
+ const typeString = checker.typeToString(type);
73
+ if (typeString && typeString !== "unknown" && typeString !== "any") {
74
+ return typeString;
75
+ }
76
+ return null;
77
+ }
78
+ /**
79
+ * Detects resolver type from metadata embedded in the type.
80
+ * Follows the same pattern as scalar metadata detection.
81
+ */
82
+ function detectResolverFromMetadataType(callExpr, checker) {
83
+ const returnType = checker.getTypeAtLocation(callExpr);
84
+ const metadataProp = returnType.getProperty(RESOLVER_METADATA_PROPERTY);
85
+ if (!metadataProp) {
86
+ return undefined;
87
+ }
88
+ const metadataType = checker.getTypeOfSymbol(metadataProp);
89
+ const actualType = getActualMetadataType(metadataType);
90
+ if (!actualType) {
91
+ return undefined;
92
+ }
93
+ const kindProp = actualType.getProperty("kind");
94
+ if (!kindProp) {
95
+ return undefined;
96
+ }
97
+ const kindType = checker.getTypeOfSymbol(kindProp);
98
+ if (kindType.isStringLiteral()) {
99
+ const kind = kindType.value;
100
+ if (kind === "query" || kind === "mutation" || kind === "field") {
101
+ return kind;
102
+ }
103
+ }
104
+ return undefined;
105
+ }
106
+ function isInlineTypeLiteralDeclaration(declaration) {
107
+ if (!ts.isPropertySignature(declaration)) {
108
+ return false;
109
+ }
110
+ const parent = declaration.parent;
111
+ if (!ts.isTypeLiteralNode(parent)) {
112
+ return false;
113
+ }
114
+ const grandparent = parent.parent;
115
+ if (ts.isTypeAliasDeclaration(grandparent)) {
116
+ return false;
117
+ }
118
+ if (ts.isInterfaceDeclaration(grandparent)) {
119
+ return false;
120
+ }
121
+ return true;
122
+ }
123
+ function extractTSDocFromPropertyWithPriority(prop, checker) {
124
+ const declarations = prop.getDeclarations();
125
+ if (!declarations || declarations.length === 0) {
126
+ return { description: null, deprecated: null };
127
+ }
128
+ const inlineDeclaration = declarations.find(isInlineTypeLiteralDeclaration);
129
+ if (inlineDeclaration) {
130
+ const inlineSymbol = checker.getSymbolAtLocation(inlineDeclaration.name);
131
+ if (inlineSymbol) {
132
+ return extractTsDocFromSymbol(inlineSymbol, checker);
133
+ }
134
+ }
135
+ return extractTsDocFromSymbol(prop, checker);
136
+ }
137
+ /**
138
+ * Checks if a type should be unwrapped as a GqlField type.
139
+ * Detects by checking for metadata properties, not by type name.
140
+ */
141
+ function shouldUnwrapAsGqlField(type) {
142
+ return hasDirectiveMetadata(type);
143
+ }
144
+ /**
145
+ * Checks if a type is structurally equivalent to Record<string, never>.
146
+ * This is a special type that represents "no arguments".
147
+ * Detection is based on type structure, not type names.
148
+ */
149
+ function isNoArgsType(type, checker) {
150
+ const apparentType = checker.getApparentType(type);
151
+ // Check for string index signature with 'never' value type
152
+ const indexInfos = checker.getIndexInfosOfType(apparentType);
153
+ const hasNeverStringIndex = indexInfos.some((info) => {
154
+ return ((info.keyType.flags & ts.TypeFlags.String) !== 0 &&
155
+ (info.type.flags & ts.TypeFlags.Never) !== 0);
156
+ });
157
+ if (!hasNeverStringIndex) {
158
+ return false;
159
+ }
160
+ // Check that there are no named properties (excluding metadata properties)
161
+ const properties = apparentType
162
+ .getProperties()
163
+ .filter((p) => !p.getName().startsWith("$"));
164
+ return properties.length === 0;
165
+ }
166
+ /**
167
+ * Checks if a type has only index signatures with no named properties.
168
+ * Types like `{ [key: string]: number }` return true.
169
+ * Does NOT return true for NoArgs type.
170
+ */
171
+ function hasOnlyIndexSignatures(type, checker) {
172
+ if (isNoArgsType(type, checker)) {
173
+ return false;
174
+ }
175
+ const targetType = checker.getApparentType(type);
176
+ const indexInfos = checker.getIndexInfosOfType(targetType);
177
+ const hasIndexSignatures = indexInfos.length > 0;
178
+ if (!hasIndexSignatures) {
179
+ return false;
180
+ }
181
+ const properties = targetType
182
+ .getProperties()
183
+ .filter((p) => !p.getName().startsWith(" $"));
184
+ if (properties.length > 0) {
185
+ return false;
186
+ }
187
+ return true;
188
+ }
189
+ /**
190
+ * Gets the type name for error messages.
191
+ */
192
+ function getTypeNameForDiagnostic(type, checker) {
193
+ if (type.aliasSymbol) {
194
+ return type.aliasSymbol.getName();
195
+ }
196
+ if (type.symbol) {
197
+ return type.symbol.getName();
198
+ }
199
+ return checker.typeToString(type);
200
+ }
201
+ function extractArgsFromType(argsType, ctx, argsTypeNode) {
202
+ const args = [];
203
+ const properties = extractPropertySymbols(argsType, ctx.checker);
204
+ const memberTypeNodes = new Map();
205
+ if (argsTypeNode && ts.isTypeLiteralNode(argsTypeNode)) {
206
+ for (const member of argsTypeNode.members) {
207
+ if (ts.isPropertySignature(member) && member.name && member.type) {
208
+ const name = ts.isIdentifier(member.name)
209
+ ? member.name.text
210
+ : member.name.getText();
211
+ memberTypeNodes.set(name, member.type);
212
+ }
213
+ }
214
+ }
215
+ for (const prop of properties) {
216
+ const propType = ctx.checker.getTypeOfSymbol(prop);
217
+ const optional = hasUndefinedInType(propType);
218
+ const tsdocInfo = extractTSDocFromPropertyWithPriority(prop, ctx.checker);
219
+ let defaultValue = null;
220
+ let actualPropType = propType;
221
+ if (shouldUnwrapAsGqlField(propType)) {
222
+ const defaultValueResult = detectDefaultValueMetadata(propType, ctx.checker);
223
+ if (defaultValueResult.defaultValue) {
224
+ defaultValue = defaultValueResult.defaultValue;
225
+ }
226
+ actualPropType = unwrapDirectiveType(propType, ctx.checker);
227
+ }
228
+ const propTypeNode = memberTypeNodes.get(prop.getName());
229
+ args.push({
230
+ name: prop.getName(),
231
+ tsType: resolveFieldType(actualPropType, propTypeNode, ctx),
232
+ optional,
233
+ description: tsdocInfo.description,
234
+ deprecated: tsdocInfo.deprecated,
235
+ defaultValue,
236
+ });
237
+ }
238
+ return args;
239
+ }
240
+ function extractDirectivesFromTypeNode(typeNode, checker) {
241
+ if (!typeNode) {
242
+ return null;
243
+ }
244
+ const type = checker.getTypeFromTypeNode(typeNode);
245
+ const directiveResult = extractDirectivesFromType(type, checker);
246
+ if (directiveResult.directives.length > 0) {
247
+ return directiveResult.directives;
248
+ }
249
+ return null;
250
+ }
251
+ /**
252
+ * Validates an args type and returns diagnostics for problematic types.
253
+ */
254
+ function validateArgsType(argsType, argsTypeNode, checker) {
255
+ const diagnostics = [];
256
+ if (hasOnlyIndexSignatures(argsType, checker)) {
257
+ const typeName = getTypeNameForDiagnostic(argsType, checker);
258
+ diagnostics.push({
259
+ code: "INDEX_SIGNATURE_ONLY",
260
+ message: `Type '${typeName}' contains only index signatures and cannot be represented as a GraphQL type. Use a concrete object type instead.`,
261
+ severity: "error",
262
+ location: getSourceLocationFromNode(argsTypeNode),
263
+ });
264
+ }
265
+ return diagnostics;
266
+ }
267
+ /**
268
+ * Checks if the extracted args are empty and the original type was not NoArgs.
269
+ * This indicates the type resolved to an empty object.
270
+ * Does not emit warnings for types that only have index signatures (they get INDEX_SIGNATURE_ONLY error instead).
271
+ */
272
+ function checkEmptyArgsType(argsType, argsTypeNode, args, checker) {
273
+ if (isNoArgsType(argsType, checker)) {
274
+ return null;
275
+ }
276
+ if (hasOnlyIndexSignatures(argsType, checker)) {
277
+ return null;
278
+ }
279
+ if (args !== null && args.length === 0) {
280
+ const typeName = getTypeNameForDiagnostic(argsType, checker);
281
+ return {
282
+ code: "EMPTY_TYPE_PROPERTIES",
283
+ message: `Type '${typeName}' has no properties. Consider adding properties or using a different type.`,
284
+ severity: "warning",
285
+ location: getSourceLocationFromNode(argsTypeNode),
286
+ };
287
+ }
288
+ return null;
289
+ }
290
+ function extractTypeArgumentsFromCall(params) {
291
+ const { node, inputContext, outputContext, resolverType } = params;
292
+ const { checker } = inputContext;
293
+ const typeArgs = node.typeArguments;
294
+ if (!typeArgs) {
295
+ return null;
296
+ }
297
+ if (resolverType === "field") {
298
+ if (typeArgs.length < 3) {
299
+ return null;
300
+ }
301
+ const parentTypeNode = typeArgs[0];
302
+ const argsTypeNode = typeArgs[1];
303
+ const returnTypeNode = typeArgs[2];
304
+ const directiveTypeNode = typeArgs[3];
305
+ if (!parentTypeNode || !argsTypeNode || !returnTypeNode) {
306
+ return null;
307
+ }
308
+ const argsType = checker.getTypeFromTypeNode(argsTypeNode);
309
+ const returnType = checker.getTypeFromTypeNode(returnTypeNode);
310
+ const parentTypeName = getTypeNameFromNode(parentTypeNode);
311
+ const argsTypeRef = resolveFieldType(argsType, undefined, inputContext);
312
+ const isNoArgs = argsTypeRef.kind === "reference" && argsTypeRef.name === "Record";
313
+ const diagnostics = [];
314
+ if (!isNoArgs) {
315
+ diagnostics.push(...validateArgsType(argsType, argsTypeNode, checker));
316
+ }
317
+ const args = isNoArgs
318
+ ? null
319
+ : extractArgsFromType(argsType, inputContext, argsTypeNode);
320
+ if (!isNoArgs) {
321
+ const emptyDiagnostic = checkEmptyArgsType(argsType, argsTypeNode, args, checker);
322
+ if (emptyDiagnostic) {
323
+ diagnostics.push(emptyDiagnostic);
324
+ }
325
+ }
326
+ const directives = extractDirectivesFromTypeNode(directiveTypeNode, checker);
327
+ return {
328
+ parentTypeName: parentTypeName ?? null,
329
+ argsType: isNoArgs ? null : argsTypeRef,
330
+ args: args && args.length > 0 ? args : null,
331
+ returnType: resolveFieldType(returnType, returnTypeNode, outputContext),
332
+ directives,
333
+ diagnostics,
334
+ };
335
+ }
336
+ if (typeArgs.length < 2) {
337
+ return null;
338
+ }
339
+ const argsTypeNode = typeArgs[0];
340
+ const returnTypeNode = typeArgs[1];
341
+ const directiveTypeNode = typeArgs[2];
342
+ if (!argsTypeNode || !returnTypeNode) {
343
+ return null;
344
+ }
345
+ const argsType = checker.getTypeFromTypeNode(argsTypeNode);
346
+ const returnType = checker.getTypeFromTypeNode(returnTypeNode);
347
+ const argsTypeRef = resolveFieldType(argsType, undefined, inputContext);
348
+ const isNoArgs = argsTypeRef.kind === "reference" && argsTypeRef.name === "Record";
349
+ const diagnostics = [];
350
+ if (!isNoArgs) {
351
+ diagnostics.push(...validateArgsType(argsType, argsTypeNode, checker));
352
+ }
353
+ const args = isNoArgs
354
+ ? null
355
+ : extractArgsFromType(argsType, inputContext, argsTypeNode);
356
+ if (!isNoArgs) {
357
+ const emptyDiagnostic = checkEmptyArgsType(argsType, argsTypeNode, args, checker);
358
+ if (emptyDiagnostic) {
359
+ diagnostics.push(emptyDiagnostic);
360
+ }
361
+ }
362
+ const directives = extractDirectivesFromTypeNode(directiveTypeNode, checker);
363
+ return {
364
+ parentTypeName: null,
365
+ argsType: isNoArgs ? null : argsTypeRef,
366
+ args: args && args.length > 0 ? args : null,
367
+ returnType: resolveFieldType(returnType, returnTypeNode, outputContext),
368
+ directives,
369
+ diagnostics,
370
+ };
371
+ }
372
+ function extractExportedInputTypes(sourceFile, ctx) {
373
+ const exportedTypes = [];
374
+ ts.forEachChild(sourceFile, (node) => {
375
+ if (ts.isTypeAliasDeclaration(node) && isExported(node)) {
376
+ const name = node.name.getText(sourceFile);
377
+ const type = ctx.checker.getTypeAtLocation(node.name);
378
+ const tsType = resolveFieldType(type, undefined, ctx);
379
+ exportedTypes.push({
380
+ name,
381
+ tsType,
382
+ sourceFile: sourceFile.fileName,
383
+ });
384
+ }
385
+ });
386
+ return exportedTypes;
387
+ }
388
+ export function extractDefineApiResolvers(program, files, options) {
389
+ const checker = program.getTypeChecker();
390
+ const resolvers = [];
391
+ const abstractTypeResolvers = [];
392
+ const diagnostics = [];
393
+ const { knownTypeNames, knownTypeSymbols, underlyingSymbolToTypeName, globalTypeMappings, sourceFiles, scalarMappingTable, } = options;
394
+ const inputContext = {
395
+ checker,
396
+ knownTypeNames,
397
+ knownTypeSymbols,
398
+ underlyingSymbolToTypeName,
399
+ globalTypeMappings,
400
+ sourceFiles,
401
+ scalarMappingTable,
402
+ scalarMappingContext: "input",
403
+ };
404
+ const outputContext = {
405
+ checker,
406
+ knownTypeNames,
407
+ knownTypeSymbols,
408
+ underlyingSymbolToTypeName,
409
+ globalTypeMappings,
410
+ sourceFiles,
411
+ scalarMappingTable,
412
+ scalarMappingContext: "output",
413
+ };
414
+ for (const filePath of files) {
415
+ const sourceFile = program.getSourceFile(filePath);
416
+ if (!sourceFile) {
417
+ continue;
418
+ }
419
+ const exportedInputTypes = extractExportedInputTypes(sourceFile, inputContext);
420
+ ts.forEachChild(sourceFile, (node) => {
421
+ if (!ts.isVariableStatement(node)) {
422
+ return;
423
+ }
424
+ if (!isExported(node)) {
425
+ return;
426
+ }
427
+ for (const declaration of node.declarationList.declarations) {
428
+ if (!ts.isIdentifier(declaration.name)) {
429
+ continue;
430
+ }
431
+ const fieldName = declaration.name.getText(sourceFile);
432
+ const initializer = declaration.initializer;
433
+ if (!initializer) {
434
+ continue;
435
+ }
436
+ if (!ts.isCallExpression(initializer)) {
437
+ if (ts.isConditionalExpression(initializer) ||
438
+ ts.isBinaryExpression(initializer)) {
439
+ const hasDefineCall = initializer
440
+ .getText(sourceFile)
441
+ .match(/define(Query|Mutation|Field)/);
442
+ if (hasDefineCall) {
443
+ diagnostics.push({
444
+ code: "INVALID_DEFINE_CALL",
445
+ message: `Complex expressions with define* functions are not supported. Use a simple 'export const ${fieldName} = defineXxx(...)' pattern.`,
446
+ severity: "error",
447
+ location: getSourceLocationFromNode(declaration.name),
448
+ });
449
+ }
450
+ }
451
+ continue;
452
+ }
453
+ const abstractResolverInfo = detectAbstractResolverFromMetadataType(initializer, checker);
454
+ if (abstractResolverInfo) {
455
+ const sourceLocation = getSourceLocationFromNode(declaration.name);
456
+ if (sourceLocation) {
457
+ abstractTypeResolvers.push({
458
+ kind: abstractResolverInfo.kind,
459
+ targetTypeName: abstractResolverInfo.targetTypeName,
460
+ exportName: fieldName,
461
+ sourceFile: filePath,
462
+ sourceLocation,
463
+ });
464
+ }
465
+ continue;
466
+ }
467
+ const resolverType = detectResolverFromMetadataType(initializer, checker);
468
+ if (!resolverType) {
469
+ continue;
470
+ }
471
+ const funcName = ts.isIdentifier(initializer.expression)
472
+ ? initializer.expression.text
473
+ : undefined;
474
+ const typeInfo = extractTypeArgumentsFromCall({
475
+ node: initializer,
476
+ inputContext,
477
+ outputContext,
478
+ resolverType,
479
+ });
480
+ if (!typeInfo) {
481
+ diagnostics.push({
482
+ code: "INVALID_DEFINE_CALL",
483
+ message: `Failed to extract type arguments from ${funcName ?? "define*"} call for '${fieldName}'`,
484
+ severity: "error",
485
+ location: getSourceLocationFromNode(declaration.name),
486
+ });
487
+ continue;
488
+ }
489
+ diagnostics.push(...typeInfo.diagnostics);
490
+ const tsdocInfo = extractTsDocInfo(node, checker);
491
+ resolvers.push({
492
+ fieldName,
493
+ resolverType,
494
+ parentTypeName: typeInfo.parentTypeName,
495
+ argsType: typeInfo.argsType,
496
+ args: typeInfo.args,
497
+ returnType: typeInfo.returnType,
498
+ sourceFile: filePath,
499
+ exportedInputTypes,
500
+ description: tsdocInfo.description,
501
+ deprecated: tsdocInfo.deprecated,
502
+ directives: typeInfo.directives,
503
+ });
504
+ }
505
+ });
506
+ }
507
+ return { resolvers, abstractTypeResolvers, diagnostics };
508
+ }
509
+ //# sourceMappingURL=define-api-extractor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"define-api-extractor.js","sourceRoot":"","sources":["../../../src/resolver-extractor/extractor/define-api-extractor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ export type { ScanResult } from "../shared/index.js";
2
+ export type { ExtractResolversResult, GraphQLFieldDefinition, GraphQLInputValue, MutationFieldDefinitions, QueryFieldDefinitions, TypeExtension, } from "./extract-resolvers.js";
3
+ export type { AbstractResolverInfo, AbstractResolverKind, } from "./extractor/define-api-extractor.js";
4
+ export type { OnlyConstraintViolation, OnlyConstraintViolationCode, ValidateOnlyConstraintsOptions, ValidationContext, } from "./validator/only-validator.js";
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/resolver-extractor/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACrD,YAAY,EACV,sBAAsB,EACtB,sBAAsB,EACtB,iBAAiB,EACjB,wBAAwB,EACxB,qBAAqB,EACrB,aAAa,GACd,MAAM,wBAAwB,CAAC;AAChC,YAAY,EACV,oBAAoB,EACpB,oBAAoB,GACrB,MAAM,qCAAqC,CAAC;AAC7C,YAAY,EACV,uBAAuB,EACvB,2BAA2B,EAC3B,8BAA8B,EAC9B,iBAAiB,GAClB,MAAM,+BAA+B,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/resolver-extractor/index.ts"],"names":[],"mappings":""}
@@ -0,0 +1,25 @@
1
+ /**
2
+ * AbstractResolverValidator validates that abstract type resolvers
3
+ * reference valid types in the schema.
4
+ *
5
+ * - resolveType must reference union or interface types
6
+ * - isTypeOf must reference object types
7
+ */
8
+ import type { BaseType } from "../../schema-generator/integrator/result-integrator.js";
9
+ import type { Diagnostic } from "../../type-extractor/types/index.js";
10
+ import type { AbstractResolverInfo } from "../extractor/define-api-extractor.js";
11
+ export interface ValidateAbstractResolversOptions {
12
+ readonly abstractResolvers: ReadonlyArray<AbstractResolverInfo>;
13
+ readonly baseTypes: ReadonlyArray<BaseType>;
14
+ }
15
+ export interface ValidateAbstractResolversResult {
16
+ readonly diagnostics: ReadonlyArray<Diagnostic>;
17
+ }
18
+ /**
19
+ * Validates abstract type resolvers.
20
+ *
21
+ * @param options - Validation options including abstract resolvers and base types
22
+ * @returns Validation result with diagnostics
23
+ */
24
+ export declare function validateAbstractResolvers(options: ValidateAbstractResolversOptions): ValidateAbstractResolversResult;
25
+ //# sourceMappingURL=abstract-resolver-validator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"abstract-resolver-validator.d.ts","sourceRoot":"","sources":["../../../src/resolver-extractor/validator/abstract-resolver-validator.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,wDAAwD,CAAC;AACvF,OAAO,KAAK,EACV,UAAU,EAEX,MAAM,qCAAqC,CAAC;AAC7C,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,sCAAsC,CAAC;AAEjF,MAAM,WAAW,gCAAgC;IAC/C,QAAQ,CAAC,iBAAiB,EAAE,aAAa,CAAC,oBAAoB,CAAC,CAAC;IAChE,QAAQ,CAAC,SAAS,EAAE,aAAa,CAAC,QAAQ,CAAC,CAAC;CAC7C;AAED,MAAM,WAAW,+BAA+B;IAC9C,QAAQ,CAAC,WAAW,EAAE,aAAa,CAAC,UAAU,CAAC,CAAC;CACjD;AAqKD;;;;;GAKG;AACH,wBAAgB,yBAAyB,CACvC,OAAO,EAAE,gCAAgC,GACxC,+BAA+B,CAuDjC"}