@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,39 @@
1
+ import type ts from "typescript";
2
+ import type { InlineEnumMemberInfo, InlineObjectPropertyDef, ScalarTypeInfo, TSTypeReference } from "./typescript.js";
3
+ interface CreateReferenceTypeParams {
4
+ readonly name: string;
5
+ readonly nullable: boolean;
6
+ }
7
+ export declare function createReferenceType(params: CreateReferenceTypeParams): TSTypeReference;
8
+ interface CreatePrimitiveTypeParams {
9
+ readonly name: string;
10
+ readonly nullable: boolean;
11
+ }
12
+ export declare function createPrimitiveType(params: CreatePrimitiveTypeParams): TSTypeReference;
13
+ export declare function createArrayType(elementType: TSTypeReference): TSTypeReference;
14
+ interface CreateUnionTypeParams {
15
+ readonly members: ReadonlyArray<TSTypeReference>;
16
+ readonly nullable: boolean;
17
+ }
18
+ export declare function createUnionType(params: CreateUnionTypeParams): TSTypeReference;
19
+ export declare function createInlineObjectType(properties: ReadonlyArray<InlineObjectPropertyDef>): TSTypeReference;
20
+ interface CreateScalarTypeParams {
21
+ readonly name: string;
22
+ readonly scalarInfo: ScalarTypeInfo;
23
+ readonly nullable: boolean;
24
+ }
25
+ export declare function createScalarType(params: CreateScalarTypeParams): TSTypeReference;
26
+ export declare function createLiteralType(name: string): TSTypeReference;
27
+ interface CreateInlineEnumTypeParams {
28
+ readonly members: ReadonlyArray<InlineEnumMemberInfo>;
29
+ readonly nullable: boolean;
30
+ /** External TypeScript enum symbol for deduplication (null for string literal unions) */
31
+ readonly externalEnumSymbol: ts.Symbol | null;
32
+ /** TSDoc description from the external enum type itself (null for string literal unions) */
33
+ readonly externalEnumDescription: string | null;
34
+ /** @deprecated tag from the external enum type itself (null for string literal unions) */
35
+ readonly externalEnumDeprecated: import("../../shared/tsdoc-parser.js").DeprecationInfo | null;
36
+ }
37
+ export declare function createInlineEnumType(params: CreateInlineEnumTypeParams): TSTypeReference;
38
+ export {};
39
+ //# sourceMappingURL=ts-type-reference-factory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ts-type-reference-factory.d.ts","sourceRoot":"","sources":["../../../src/type-extractor/types/ts-type-reference-factory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,YAAY,CAAC;AACjC,OAAO,KAAK,EACV,oBAAoB,EACpB,uBAAuB,EACvB,cAAc,EACd,eAAe,EAChB,MAAM,iBAAiB,CAAC;AA0BzB,UAAU,yBAAyB;IACjC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;CAC5B;AAED,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,yBAAyB,GAChC,eAAe,CAKjB;AAED,UAAU,yBAAyB;IACjC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;CAC5B;AAED,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,yBAAyB,GAChC,eAAe,CAKjB;AAED,wBAAgB,eAAe,CAAC,WAAW,EAAE,eAAe,GAAG,eAAe,CAE7E;AAED,UAAU,qBAAqB;IAC7B,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC,eAAe,CAAC,CAAC;IACjD,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;CAC5B;AAED,wBAAgB,eAAe,CAC7B,MAAM,EAAE,qBAAqB,GAC5B,eAAe,CAKjB;AAED,wBAAgB,sBAAsB,CACpC,UAAU,EAAE,aAAa,CAAC,uBAAuB,CAAC,GACjD,eAAe,CAKjB;AAED,UAAU,sBAAsB;IAC9B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,UAAU,EAAE,cAAc,CAAC;IACpC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;CAC5B;AAED,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,sBAAsB,GAC7B,eAAe,CASjB;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe,CAE/D;AAED,UAAU,0BAA0B;IAClC,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC,oBAAoB,CAAC,CAAC;IACtD,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,yFAAyF;IACzF,QAAQ,CAAC,kBAAkB,EAAE,EAAE,CAAC,MAAM,GAAG,IAAI,CAAC;IAC9C,4FAA4F;IAC5F,QAAQ,CAAC,uBAAuB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChD,0FAA0F;IAC1F,QAAQ,CAAC,sBAAsB,EAC3B,OAAO,8BAA8B,EAAE,eAAe,GACtD,IAAI,CAAC;CACV;AAED,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,0BAA0B,GACjC,eAAe,CAWjB"}
@@ -0,0 +1,69 @@
1
+ function createTSTypeReference(params) {
2
+ return {
3
+ kind: params.kind,
4
+ name: null,
5
+ elementType: null,
6
+ members: null,
7
+ nullable: false,
8
+ scalarInfo: null,
9
+ inlineObjectProperties: null,
10
+ inlineEnumMembers: null,
11
+ externalEnumSymbol: null,
12
+ externalEnumDescription: null,
13
+ externalEnumDeprecated: null,
14
+ ...params.overrides,
15
+ };
16
+ }
17
+ export function createReferenceType(params) {
18
+ return createTSTypeReference({
19
+ kind: "reference",
20
+ overrides: { name: params.name, nullable: params.nullable },
21
+ });
22
+ }
23
+ export function createPrimitiveType(params) {
24
+ return createTSTypeReference({
25
+ kind: "primitive",
26
+ overrides: { name: params.name, nullable: params.nullable },
27
+ });
28
+ }
29
+ export function createArrayType(elementType) {
30
+ return createTSTypeReference({ kind: "array", overrides: { elementType } });
31
+ }
32
+ export function createUnionType(params) {
33
+ return createTSTypeReference({
34
+ kind: "union",
35
+ overrides: { members: params.members, nullable: params.nullable },
36
+ });
37
+ }
38
+ export function createInlineObjectType(properties) {
39
+ return createTSTypeReference({
40
+ kind: "inlineObject",
41
+ overrides: { inlineObjectProperties: properties },
42
+ });
43
+ }
44
+ export function createScalarType(params) {
45
+ return createTSTypeReference({
46
+ kind: "scalar",
47
+ overrides: {
48
+ name: params.name,
49
+ scalarInfo: params.scalarInfo,
50
+ nullable: params.nullable,
51
+ },
52
+ });
53
+ }
54
+ export function createLiteralType(name) {
55
+ return createTSTypeReference({ kind: "literal", overrides: { name } });
56
+ }
57
+ export function createInlineEnumType(params) {
58
+ return createTSTypeReference({
59
+ kind: "inlineEnum",
60
+ overrides: {
61
+ inlineEnumMembers: params.members,
62
+ nullable: params.nullable,
63
+ externalEnumSymbol: params.externalEnumSymbol,
64
+ externalEnumDescription: params.externalEnumDescription,
65
+ externalEnumDeprecated: params.externalEnumDeprecated,
66
+ },
67
+ });
68
+ }
69
+ //# sourceMappingURL=ts-type-reference-factory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ts-type-reference-factory.js","sourceRoot":"","sources":["../../../src/type-extractor/types/ts-type-reference-factory.ts"],"names":[],"mappings":"AAaA,SAAS,qBAAqB,CAC5B,MAAmC;IAEnC,OAAO;QACL,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,IAAI,EAAE,IAAI;QACV,WAAW,EAAE,IAAI;QACjB,OAAO,EAAE,IAAI;QACb,QAAQ,EAAE,KAAK;QACf,UAAU,EAAE,IAAI;QAChB,sBAAsB,EAAE,IAAI;QAC5B,iBAAiB,EAAE,IAAI;QACvB,kBAAkB,EAAE,IAAI;QACxB,uBAAuB,EAAE,IAAI;QAC7B,sBAAsB,EAAE,IAAI;QAC5B,GAAG,MAAM,CAAC,SAAS;KACpB,CAAC;AACJ,CAAC;AAOD,MAAM,UAAU,mBAAmB,CACjC,MAAiC;IAEjC,OAAO,qBAAqB,CAAC;QAC3B,IAAI,EAAE,WAAW;QACjB,SAAS,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE;KAC5D,CAAC,CAAC;AACL,CAAC;AAOD,MAAM,UAAU,mBAAmB,CACjC,MAAiC;IAEjC,OAAO,qBAAqB,CAAC;QAC3B,IAAI,EAAE,WAAW;QACjB,SAAS,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE;KAC5D,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,WAA4B;IAC1D,OAAO,qBAAqB,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE,WAAW,EAAE,EAAE,CAAC,CAAC;AAC9E,CAAC;AAOD,MAAM,UAAU,eAAe,CAC7B,MAA6B;IAE7B,OAAO,qBAAqB,CAAC;QAC3B,IAAI,EAAE,OAAO;QACb,SAAS,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE;KAClE,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,sBAAsB,CACpC,UAAkD;IAElD,OAAO,qBAAqB,CAAC;QAC3B,IAAI,EAAE,cAAc;QACpB,SAAS,EAAE,EAAE,sBAAsB,EAAE,UAAU,EAAE;KAClD,CAAC,CAAC;AACL,CAAC;AAQD,MAAM,UAAU,gBAAgB,CAC9B,MAA8B;IAE9B,OAAO,qBAAqB,CAAC;QAC3B,IAAI,EAAE,QAAQ;QACd,SAAS,EAAE;YACT,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,UAAU,EAAE,MAAM,CAAC,UAAU;YAC7B,QAAQ,EAAE,MAAM,CAAC,QAAQ;SAC1B;KACF,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,IAAY;IAC5C,OAAO,qBAAqB,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;AACzE,CAAC;AAeD,MAAM,UAAU,oBAAoB,CAClC,MAAkC;IAElC,OAAO,qBAAqB,CAAC;QAC3B,IAAI,EAAE,YAAY;QAClB,SAAS,EAAE;YACT,iBAAiB,EAAE,MAAM,CAAC,OAAO;YACjC,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,kBAAkB,EAAE,MAAM,CAAC,kBAAkB;YAC7C,uBAAuB,EAAE,MAAM,CAAC,uBAAuB;YACvD,sBAAsB,EAAE,MAAM,CAAC,sBAAsB;SACtD;KACF,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,106 @@
1
+ import type ts from "typescript";
2
+ import type { DirectiveArgumentValue, DirectiveInfo } from "../../shared/directive-detector.js";
3
+ import type { DeprecationInfo } from "../../shared/tsdoc-parser.js";
4
+ import type { SourceLocation } from "./diagnostics.js";
5
+ export type TypeKind = "object" | "interface" | "union" | "enum" | "graphqlInterface";
6
+ /**
7
+ * Information about a detected scalar type.
8
+ */
9
+ export interface ScalarTypeInfo {
10
+ /** The GraphQL scalar type name (ID, Int, Float, String, Boolean, or custom scalar name) */
11
+ readonly scalarName: string;
12
+ /** The TypeScript type name (e.g., "IDString", "Int", "DateTime") */
13
+ readonly typeName: string;
14
+ /** The underlying TypeScript primitive type (undefined for custom scalars) */
15
+ readonly baseType: "string" | "number" | undefined;
16
+ /** Whether this is a custom scalar */
17
+ readonly isCustom: boolean;
18
+ /** Usage constraint: "input" for input-only, "output" for output-only, null for both */
19
+ readonly only: "input" | "output" | null;
20
+ }
21
+ export interface TypeMetadata {
22
+ readonly name: string;
23
+ readonly kind: TypeKind;
24
+ readonly sourceFile: string;
25
+ readonly sourceLocation: SourceLocation;
26
+ readonly exportKind: "named" | "default";
27
+ readonly description: string | null;
28
+ readonly deprecated: DeprecationInfo | null;
29
+ readonly directives: ReadonlyArray<DirectiveInfo> | null;
30
+ }
31
+ export type TSTypeReferenceKind = "primitive" | "reference" | "array" | "union" | "literal" | "scalar" | "inlineObject" | "inlineEnum";
32
+ /**
33
+ * Information about an inline enum member (string literal union value).
34
+ */
35
+ export interface InlineEnumMemberInfo {
36
+ /** Original value from TypeScript (e.g., "pendingReview") */
37
+ readonly value: string;
38
+ /** Description from TSDoc (if available) */
39
+ readonly description: string | null;
40
+ /** Deprecation info from @deprecated tag */
41
+ readonly deprecated: DeprecationInfo | null;
42
+ }
43
+ export interface TSTypeReference {
44
+ readonly kind: TSTypeReferenceKind;
45
+ readonly name: string | null;
46
+ readonly elementType: TSTypeReference | null;
47
+ readonly members: ReadonlyArray<TSTypeReference> | null;
48
+ readonly nullable: boolean;
49
+ readonly scalarInfo: ScalarTypeInfo | null;
50
+ readonly inlineObjectProperties: ReadonlyArray<InlineObjectPropertyDef> | null;
51
+ /** Inline enum members when kind is "inlineEnum" */
52
+ readonly inlineEnumMembers: ReadonlyArray<InlineEnumMemberInfo> | null;
53
+ /** External TypeScript enum symbol for deduplication (Requirement 5.2) */
54
+ readonly externalEnumSymbol: ts.Symbol | null;
55
+ /** TSDoc description from the external enum type itself (Requirement 6.1) */
56
+ readonly externalEnumDescription: string | null;
57
+ /** @deprecated tag from the external enum type itself (Requirement 6.3) */
58
+ readonly externalEnumDeprecated: DeprecationInfo | null;
59
+ }
60
+ export interface InlineObjectPropertyDef {
61
+ readonly name: string;
62
+ readonly tsType: TSTypeReference;
63
+ readonly optional: boolean;
64
+ readonly description: string | null;
65
+ readonly deprecated: DeprecationInfo | null;
66
+ readonly directives: ReadonlyArray<DirectiveInfo> | null;
67
+ readonly defaultValue: DirectiveArgumentValue | null;
68
+ readonly sourceLocation: SourceLocation | null;
69
+ }
70
+ export interface FieldDefinition {
71
+ readonly name: string;
72
+ readonly tsType: TSTypeReference;
73
+ readonly optional: boolean;
74
+ readonly description: string | null;
75
+ readonly deprecated: DeprecationInfo | null;
76
+ readonly directives: ReadonlyArray<DirectiveInfo> | null;
77
+ readonly defaultValue: DirectiveArgumentValue | null;
78
+ readonly sourceLocation: SourceLocation | null;
79
+ }
80
+ export interface EnumMemberInfo {
81
+ readonly name: string;
82
+ readonly value: string;
83
+ /** Numeric value for numeric enums, null for string enums */
84
+ readonly numericValue: number | null;
85
+ readonly description: string | null;
86
+ readonly deprecated: DeprecationInfo | null;
87
+ readonly sourceLocation: SourceLocation | null;
88
+ }
89
+ export interface InlineObjectProperty {
90
+ readonly propertyName: string;
91
+ readonly propertyType: TSTypeReference;
92
+ readonly description: string | null;
93
+ readonly deprecated: DeprecationInfo | null;
94
+ }
95
+ export interface InlineObjectMember {
96
+ readonly properties: ReadonlyArray<InlineObjectProperty>;
97
+ }
98
+ export interface ExtractedTypeInfo {
99
+ readonly metadata: TypeMetadata;
100
+ readonly fields: ReadonlyArray<FieldDefinition>;
101
+ readonly unionMembers: ReadonlyArray<string> | null;
102
+ readonly inlineObjectMembers: ReadonlyArray<InlineObjectMember> | null;
103
+ readonly enumMembers: ReadonlyArray<EnumMemberInfo> | null;
104
+ readonly implementedInterfaces: ReadonlyArray<string> | null;
105
+ }
106
+ //# sourceMappingURL=typescript.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"typescript.d.ts","sourceRoot":"","sources":["../../../src/type-extractor/types/typescript.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=typescript.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"typescript.js","sourceRoot":"","sources":["../../../src/type-extractor/types/typescript.ts"],"names":[],"mappings":""}
@@ -0,0 +1,11 @@
1
+ import type { Diagnostic, GraphQLTypeInfo } from "../types/index.js";
2
+ export interface ValidationResult {
3
+ readonly valid: boolean;
4
+ readonly diagnostics: ReadonlyArray<Diagnostic>;
5
+ }
6
+ export interface ValidateTypesOptions {
7
+ readonly types: ReadonlyArray<GraphQLTypeInfo>;
8
+ readonly customScalarNames: ReadonlyArray<string> | null;
9
+ }
10
+ export declare function validateTypes(typesOrOptions: ReadonlyArray<GraphQLTypeInfo> | ValidateTypesOptions): ValidationResult;
11
+ //# sourceMappingURL=type-validator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"type-validator.d.ts","sourceRoot":"","sources":["../../../src/type-extractor/validator/type-validator.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAErE,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,WAAW,EAAE,aAAa,CAAC,UAAU,CAAC,CAAC;CACjD;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC,eAAe,CAAC,CAAC;IAC/C,QAAQ,CAAC,iBAAiB,EAAE,aAAa,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC;CAC1D;AASD,wBAAgB,aAAa,CAC3B,cAAc,EAAE,aAAa,CAAC,eAAe,CAAC,GAAG,oBAAoB,GACpE,gBAAgB,CAsDlB"}
@@ -0,0 +1,53 @@
1
+ import { BUILT_IN_SCALARS } from "../../shared/constants.js";
2
+ const PLACEHOLDER_TYPES = new Set(["__INLINE_OBJECT__", "__INLINE_ENUM__"]);
3
+ function isOptionsObject(arg) {
4
+ return !Array.isArray(arg) && "types" in arg;
5
+ }
6
+ export function validateTypes(typesOrOptions) {
7
+ const types = isOptionsObject(typesOrOptions)
8
+ ? typesOrOptions.types
9
+ : typesOrOptions;
10
+ const customScalarNames = isOptionsObject(typesOrOptions)
11
+ ? typesOrOptions.customScalarNames
12
+ : undefined;
13
+ const diagnostics = [];
14
+ const typeNames = new Set(types.map((t) => t.name));
15
+ const knownScalars = new Set([
16
+ ...BUILT_IN_SCALARS,
17
+ ...(customScalarNames ?? []),
18
+ ]);
19
+ for (const type of types) {
20
+ if (type.kind === "Object" && type.fields) {
21
+ for (const field of type.fields) {
22
+ const typeName = field.type.typeName;
23
+ if (!typeNames.has(typeName) &&
24
+ !knownScalars.has(typeName) &&
25
+ !PLACEHOLDER_TYPES.has(typeName)) {
26
+ diagnostics.push({
27
+ code: "UNRESOLVED_REFERENCE",
28
+ message: `Field '${field.name}' references unresolved type '${typeName}'`,
29
+ severity: "error",
30
+ location: { file: type.sourceFile, line: 1, column: 1 },
31
+ });
32
+ }
33
+ }
34
+ }
35
+ if (type.kind === "Union" && type.unionMembers) {
36
+ for (const member of type.unionMembers) {
37
+ if (!typeNames.has(member) && !knownScalars.has(member)) {
38
+ diagnostics.push({
39
+ code: "UNRESOLVED_REFERENCE",
40
+ message: `Union '${type.name}' references unresolved type '${member}'`,
41
+ severity: "error",
42
+ location: { file: type.sourceFile, line: 1, column: 1 },
43
+ });
44
+ }
45
+ }
46
+ }
47
+ }
48
+ return {
49
+ valid: diagnostics.length === 0,
50
+ diagnostics,
51
+ };
52
+ }
53
+ //# sourceMappingURL=type-validator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"type-validator.js","sourceRoot":"","sources":["../../../src/type-extractor/validator/type-validator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAY7D,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAAC,CAAC,mBAAmB,EAAE,iBAAiB,CAAC,CAAC,CAAC;AAE5E,SAAS,eAAe,CACtB,GAA0D;IAE1D,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,OAAO,IAAI,GAAG,CAAC;AAC/C,CAAC;AAED,MAAM,UAAU,aAAa,CAC3B,cAAqE;IAErE,MAAM,KAAK,GAAG,eAAe,CAAC,cAAc,CAAC;QAC3C,CAAC,CAAC,cAAc,CAAC,KAAK;QACtB,CAAC,CAAC,cAAc,CAAC;IACnB,MAAM,iBAAiB,GAAG,eAAe,CAAC,cAAc,CAAC;QACvD,CAAC,CAAC,cAAc,CAAC,iBAAiB;QAClC,CAAC,CAAC,SAAS,CAAC;IAEd,MAAM,WAAW,GAAiB,EAAE,CAAC;IAErC,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IACpD,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC;QAC3B,GAAG,gBAAgB;QACnB,GAAG,CAAC,iBAAiB,IAAI,EAAE,CAAC;KAC7B,CAAC,CAAC;IAEH,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAC1C,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;gBAChC,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC;gBAErC,IACE,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC;oBACxB,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC;oBAC3B,CAAC,iBAAiB,CAAC,GAAG,CAAC,QAAQ,CAAC,EAChC,CAAC;oBACD,WAAW,CAAC,IAAI,CAAC;wBACf,IAAI,EAAE,sBAAsB;wBAC5B,OAAO,EAAE,UAAU,KAAK,CAAC,IAAI,iCAAiC,QAAQ,GAAG;wBACzE,QAAQ,EAAE,OAAO;wBACjB,QAAQ,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE;qBACxD,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;QACH,CAAC;QAED,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YAC/C,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;gBACvC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;oBACxD,WAAW,CAAC,IAAI,CAAC;wBACf,IAAI,EAAE,sBAAsB;wBAC5B,OAAO,EAAE,UAAU,IAAI,CAAC,IAAI,iCAAiC,MAAM,GAAG;wBACtE,QAAQ,EAAE,OAAO;wBACjB,QAAQ,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE;qBACxD,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO;QACL,KAAK,EAAE,WAAW,CAAC,MAAM,KAAK,CAAC;QAC/B,WAAW;KACZ,CAAC;AACJ,CAAC"}
@@ -0,0 +1,163 @@
1
+ # Configuration
2
+
3
+ gqlkit can be configured via `gqlkit.config.ts` in your project root.
4
+
5
+ ## Basic Configuration
6
+
7
+ ```ts
8
+ // gqlkit.config.ts
9
+ import { defineConfig } from "@gqlkit-ts/cli";
10
+
11
+ export default defineConfig({
12
+ // Source directory (default: "src/gqlkit/schema")
13
+ sourceDir: "src/gqlkit/schema",
14
+
15
+ // Glob patterns to exclude from scanning
16
+ sourceIgnoreGlobs: ["**/*.test.ts"],
17
+
18
+ // Custom scalar mappings (config-based approach)
19
+ scalars: [
20
+ {
21
+ name: "DateTime",
22
+ tsType: { from: "./src/gqlkit/schema/scalars", name: "DateTime" },
23
+ description: "ISO 8601 datetime",
24
+ },
25
+ {
26
+ name: "UUID",
27
+ tsType: { name: "string" }, // Global type
28
+ },
29
+ ],
30
+
31
+ // Output paths
32
+ output: {
33
+ typeDefsPath: "src/gqlkit/__generated__/typeDefs.ts",
34
+ resolversPath: "src/gqlkit/__generated__/resolvers.ts",
35
+ schemaPath: "src/gqlkit/__generated__/schema.graphql",
36
+ // Set to null to disable output:
37
+ // schemaPath: null,
38
+ },
39
+
40
+ // Hooks
41
+ hooks: {
42
+ // Run after all files are written (e.g., formatting)
43
+ afterAllFileWrite: "prettier --write",
44
+ // Or multiple commands:
45
+ // afterAllFileWrite: ["prettier --write", "eslint --fix"],
46
+ },
47
+ });
48
+ ```
49
+
50
+ ## Custom Scalar Types
51
+
52
+ Map TypeScript types to GraphQL custom scalars via config:
53
+
54
+ ```ts
55
+ export default defineConfig({
56
+ scalars: [
57
+ {
58
+ name: "DateTime",
59
+ tsType: { from: "./src/gqlkit/schema/scalars", name: "DateTime" },
60
+ description: "ISO 8601 datetime string",
61
+ },
62
+ {
63
+ name: "UUID",
64
+ tsType: { name: "string" },
65
+ only: "input", // Input-only scalar
66
+ },
67
+ ],
68
+ });
69
+ ```
70
+
71
+ ### Scalar Options
72
+
73
+ | Option | Type | Description |
74
+ |--------|------|-------------|
75
+ | `name` | `string` | The GraphQL scalar name |
76
+ | `tsType.name` | `string` | The TypeScript type name |
77
+ | `tsType.from` | `string` (optional) | Import path for the type (omit for global types) |
78
+ | `description` | `string` (optional) | Description for the GraphQL schema |
79
+ | `only` | `"input"` \| `"output"` (optional) | Restrict scalar to input or output positions |
80
+
81
+ > [!TIP]
82
+ >
83
+ > You can also define custom scalars using the `GqlScalar` utility type directly in your schema files. See [Scalars](/schema/scalars) for more details.
84
+
85
+ ## Output Paths
86
+
87
+ Customize output file locations or disable specific outputs:
88
+
89
+ ```ts
90
+ export default defineConfig({
91
+ output: {
92
+ typeDefsPath: "generated/schema.ts", // Custom path
93
+ resolversPath: "generated/resolvers.ts",
94
+ schemaPath: null, // Disable SDL output
95
+ },
96
+ });
97
+ ```
98
+
99
+ ### Output Options
100
+
101
+ | Option | Type | Default | Description |
102
+ |--------|------|---------|-------------|
103
+ | `typeDefsPath` | `string` \| `null` | `"src/gqlkit/__generated__/typeDefs.ts"` | Path for the TypeDefs output |
104
+ | `resolversPath` | `string` \| `null` | `"src/gqlkit/__generated__/resolvers.ts"` | Path for the resolvers output |
105
+ | `schemaPath` | `string` \| `null` | `"src/gqlkit/__generated__/schema.graphql"` | Path for the SDL output |
106
+
107
+ Set any path to `null` to disable that output.
108
+
109
+ ## Hooks
110
+
111
+ Execute commands after file generation:
112
+
113
+ ```ts
114
+ export default defineConfig({
115
+ hooks: {
116
+ // Single command
117
+ afterAllFileWrite: "prettier --write",
118
+ },
119
+ });
120
+ ```
121
+
122
+ You can also specify multiple commands to run sequentially:
123
+
124
+ ```ts
125
+ export default defineConfig({
126
+ hooks: {
127
+ // Multiple commands (executed sequentially)
128
+ afterAllFileWrite: ["prettier --write", "eslint --fix"],
129
+ },
130
+ });
131
+ ```
132
+
133
+ ### Available Hooks
134
+
135
+ | Hook | Description |
136
+ |------|-------------|
137
+ | `afterAllFileWrite` | Runs after all generated files are written. Receives the list of written file paths. |
138
+
139
+ ## Source Directory
140
+
141
+ By default, gqlkit scans `src/gqlkit/schema` for types and resolvers.
142
+
143
+ ```ts
144
+ export default defineConfig({
145
+ sourceDir: "src/graphql/schema", // Custom source directory
146
+ });
147
+ ```
148
+
149
+ All TypeScript files (`.ts`, `.cts`, `.mts`) under this directory are scanned.
150
+
151
+ ## Ignore Patterns
152
+
153
+ Exclude files from scanning using glob patterns:
154
+
155
+ ```ts
156
+ export default defineConfig({
157
+ sourceIgnoreGlobs: [
158
+ "**/*.test.ts",
159
+ "**/*.spec.ts",
160
+ "**/testdata/**",
161
+ ],
162
+ });
163
+ ```
@@ -0,0 +1,117 @@
1
+ # Getting Started
2
+
3
+ ## Installation
4
+
5
+ ```sh filename="npm"
6
+ npm install @gqlkit-ts/runtime @graphql-tools/schema graphql
7
+ npm install -D @gqlkit-ts/cli
8
+ ```
9
+
10
+ ```sh filename="pnpm"
11
+ pnpm add @gqlkit-ts/runtime @graphql-tools/schema graphql
12
+ pnpm add -D @gqlkit-ts/cli
13
+ ```
14
+
15
+ ```sh filename="yarn"
16
+ yarn add @gqlkit-ts/runtime @graphql-tools/schema graphql
17
+ yarn add -D @gqlkit-ts/cli
18
+ ```
19
+
20
+ ## Project Structure
21
+
22
+ gqlkit expects your types and resolvers to be in `src/gqlkit/schema/`:
23
+
24
+ ```
25
+ src/
26
+ └── gqlkit/
27
+ ├── context.ts # Context type definition
28
+ ├── gqlkit.ts # Resolver factories
29
+ └── schema/
30
+ ├── user.ts # User type and resolvers
31
+ ├── post.ts # Post type and resolvers
32
+ └── query.ts # Query resolvers
33
+ ```
34
+
35
+ ## Set Up Context and Resolver Factories
36
+
37
+ Create `src/gqlkit/context.ts` to define your context type:
38
+
39
+ ```typescript
40
+ export type Context = {
41
+ currentUser: { id: string; name: string; email: string | null } | null;
42
+ };
43
+ ```
44
+
45
+ Create `src/gqlkit/gqlkit.ts` to export resolver factories:
46
+
47
+ ```typescript
48
+ import { createGqlkitApis } from "@gqlkit-ts/runtime";
49
+ import type { Context } from "./context";
50
+
51
+ export const { defineQuery, defineMutation, defineField } =
52
+ createGqlkitApis<Context>();
53
+ ```
54
+
55
+ ## Define Your First Type
56
+
57
+ Create a simple User type in `src/gqlkit/schema/user.ts`:
58
+
59
+ ```typescript
60
+ export type User = {
61
+ id: string;
62
+ name: string;
63
+ email: string | null;
64
+ };
65
+ ```
66
+
67
+ ## Define a Query
68
+
69
+ Create a query resolver in `src/gqlkit/schema/query.ts`:
70
+
71
+ ```typescript
72
+ import { defineQuery } from "../gqlkit";
73
+ import type { NoArgs } from "@gqlkit-ts/runtime";
74
+ import type { User } from "./user";
75
+
76
+ export const me = defineQuery<NoArgs, User | null>(
77
+ (_root, _args, ctx) => ctx.currentUser
78
+ );
79
+ ```
80
+
81
+ ## Generate Schema
82
+
83
+ Run the generator:
84
+
85
+ ```sh filename="npm"
86
+ npm exec gqlkit gen
87
+ ```
88
+
89
+ ```sh filename="pnpm"
90
+ pnpm gqlkit gen
91
+ ```
92
+
93
+ ```sh filename="yarn"
94
+ yarn gqlkit gen
95
+ ```
96
+
97
+ This will create files in `src/gqlkit/__generated__/`:
98
+ - `schema.ts` - GraphQL schema AST (DocumentNode)
99
+ - `resolvers.ts` - Resolver map
100
+
101
+ ## Create GraphQL Schema
102
+
103
+ Use `@graphql-tools/schema` to combine the generated outputs into an executable schema:
104
+
105
+ ```typescript
106
+ import { makeExecutableSchema } from "@graphql-tools/schema";
107
+ import { typeDefs } from "./gqlkit/__generated__/schema";
108
+ import { resolvers } from "./gqlkit/__generated__/resolvers";
109
+
110
+ export const schema = makeExecutableSchema({ typeDefs, resolvers });
111
+ ```
112
+
113
+ ## Next Steps
114
+
115
+ - [HTTP Server Integration](./integration/yoga) - Connect your schema to graphql-yoga, Apollo Server, or other HTTP servers
116
+ - [Object Types](./schema/objects) - Learn more about defining types
117
+ - [Queries & Mutations](./schema/queries-mutations) - Advanced resolver patterns
package/docs/index.md ADDED
@@ -0,0 +1,33 @@
1
+ # gqlkit
2
+
3
+ > gqlkit is a convention-driven code generator for GraphQL servers in TypeScript. Define GraphQL types and resolver signatures in TypeScript, then `gqlkit gen` generates GraphQL schema AST and a resolver map from your codebase.
4
+
5
+ ## Documentation
6
+
7
+ - [What is gqlkit?](./what-is-gqlkit.md): gqlkit is a convention-driven code generator for GraphQL servers in TypeScript.
8
+ - [Getting Started](./getting-started.md): gqlkit expects your types and resolvers to be in `src/gqlkit/schema/`:
9
+
10
+ ## Schema Definition
11
+
12
+ - [Schema Definition](./schema.md): gqlkit generates GraphQL schema from your TypeScript types. All exported types from `src/gqlkit/schema/` are automatically scanned and converted to GraphQL types.
13
+ - [Object Types](./schema/objects.md): Plain TypeScript type exports become GraphQL Object types.
14
+ - [Input Types](./schema/inputs.md): TypeScript types with `Input` suffix are treated as GraphQL input types.
15
+ - [Queries & Mutations](./schema/queries-mutations.md): Define Query and Mutation fields using the `@gqlkit-ts/runtime` API.
16
+ - [Field Resolvers](./schema/fields.md): Add computed fields to object types using `defineField`. Define them alongside the type.
17
+ - [Scalar Types](./schema/scalars.md): gqlkit provides built-in scalar types and supports custom scalar definitions.
18
+ - [Enum Types](./schema/enums.md): gqlkit converts TypeScript string literal unions and enums to GraphQL enum types.
19
+ - [Union Types](./schema/unions.md): TypeScript union types of object types are converted to GraphQL union types.
20
+ - [Interface Types](./schema/interfaces.md): Define GraphQL interface types using the `GqlInterface` utility type.
21
+ - [Abstract Type Resolution](./schema/abstract-resolvers.md): GraphQL abstract types (unions and interfaces) require runtime type resolution to determine the concrete type of returned values. gqlkit provides `defineResolveType` and `defineIsTypeOf` to handle this.
22
+ - [Documentation](./schema/documentation.md): gqlkit extracts TSDoc/JSDoc comments and converts them to GraphQL descriptions.
23
+ - [Custom Directives](./schema/directives.md): Define custom directives using the `GqlDirective` utility type and attach them using `GqlField` or `GqlObject`.
24
+
25
+ ## Integration
26
+
27
+ - [graphql-yoga](./integration/yoga.md): [graphql-yoga](https://the-guild.dev/graphql/yoga-server) is a batteries-included GraphQL server that works in any JavaScript runtime.
28
+ - [Apollo Server](./integration/apollo.md): [Apollo Server](https://www.apollographql.com/docs/apollo-server/) is a popular GraphQL server with extensive features and ecosystem.
29
+ - [Drizzle ORM](./integration/drizzle.md): [Drizzle ORM](https://orm.drizzle.team/) is a TypeScript ORM with type-safe schema definitions. gqlkit integrates seamlessly with Drizzle by using `InferSelectModel` and `InferInsertModel` to derive GraphQL types from your table definitions.
30
+
31
+ ## Guides
32
+
33
+ - [Configuration](./configuration.md): gqlkit can be configured via `gqlkit.config.ts` in your project root.