@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,109 @@
1
+ # Apollo Server
2
+
3
+ [Apollo Server](https://www.apollographql.com/docs/apollo-server/) is a popular GraphQL server with extensive features and ecosystem.
4
+
5
+ ## Installation
6
+
7
+ ```sh filename="npm"
8
+ npm install @apollo/server
9
+ ```
10
+
11
+ ```sh filename="pnpm"
12
+ pnpm add @apollo/server
13
+ ```
14
+
15
+ ```sh filename="yarn"
16
+ yarn add @apollo/server
17
+ ```
18
+
19
+ ## Creating the Schema
20
+
21
+ First, create an executable schema using `makeExecutableSchema`:
22
+
23
+ ```typescript
24
+ // src/schema.ts
25
+ import { makeExecutableSchema } from "@graphql-tools/schema";
26
+ import { typeDefs } from "./gqlkit/__generated__/schema";
27
+ import { resolvers } from "./gqlkit/__generated__/resolvers";
28
+
29
+ export const schema = makeExecutableSchema({ typeDefs, resolvers });
30
+ ```
31
+
32
+ ## Basic Server
33
+
34
+ Using the standalone server:
35
+
36
+ ```typescript
37
+ // src/server.ts
38
+ import { ApolloServer } from "@apollo/server";
39
+ import { startStandaloneServer } from "@apollo/server/standalone";
40
+ import { schema } from "./schema";
41
+
42
+ const server = new ApolloServer({ schema });
43
+
44
+ const { url } = await startStandaloneServer(server, {
45
+ listen: { port: 4000 },
46
+ });
47
+
48
+ console.log(`Server is running on ${url}`);
49
+ ```
50
+
51
+ ## With Context
52
+
53
+ If your resolvers use a context type, provide a context factory:
54
+
55
+ ```typescript
56
+ // src/gqlkit/context.ts
57
+ export type Context = {
58
+ currentUser: User | null;
59
+ db: Database;
60
+ };
61
+ ```
62
+
63
+ ```typescript
64
+ // src/gqlkit/gqlkit.ts
65
+ import { createGqlkitApis } from "@gqlkit-ts/runtime";
66
+ import type { Context } from "./context";
67
+
68
+ export const { defineQuery, defineMutation, defineField } =
69
+ createGqlkitApis<Context>();
70
+ ```
71
+
72
+ ```typescript
73
+ // src/gqlkit/schema/query.ts
74
+ import { defineQuery } from "../gqlkit";
75
+ import type { NoArgs } from "@gqlkit-ts/runtime";
76
+ import type { User } from "./user";
77
+
78
+ export const me = defineQuery<NoArgs, User | null>(
79
+ (_root, _args, ctx) => ctx.currentUser
80
+ );
81
+ ```
82
+
83
+ ```typescript
84
+ // src/server.ts
85
+ import { ApolloServer } from "@apollo/server";
86
+ import { startStandaloneServer } from "@apollo/server/standalone";
87
+ import { schema } from "./schema";
88
+ import type { Context } from "./gqlkit/context";
89
+
90
+ const server = new ApolloServer<Context>({ schema });
91
+
92
+ const { url } = await startStandaloneServer(server, {
93
+ listen: { port: 4000 },
94
+ context: async ({ req }) => {
95
+ const user = await getUserFromRequest(req);
96
+ return {
97
+ currentUser: user,
98
+ db: database,
99
+ };
100
+ },
101
+ });
102
+
103
+ console.log(`Server is running on ${url}`);
104
+ ```
105
+
106
+ ## Further Reading
107
+
108
+ - [Apollo Server Documentation](https://www.apollographql.com/docs/apollo-server/)
109
+ - [Apollo Server Plugins](https://www.apollographql.com/docs/apollo-server/builtin-plugins)
@@ -0,0 +1,191 @@
1
+ # Drizzle ORM
2
+
3
+ [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.
4
+
5
+ ## Installation
6
+
7
+ ```sh filename="npm"
8
+ npm install drizzle-orm postgres
9
+ ```
10
+
11
+ ```sh filename="pnpm"
12
+ pnpm add drizzle-orm postgres
13
+ ```
14
+
15
+ ```sh filename="yarn"
16
+ yarn add drizzle-orm postgres
17
+ ```
18
+
19
+ ## Defining Tables
20
+
21
+ Define your database tables with Drizzle:
22
+
23
+ ```typescript
24
+ // src/db/schema.ts
25
+ import { pgEnum, pgTable, text, timestamp, uuid } from "drizzle-orm/pg-core";
26
+
27
+ export const userStatusEnum = pgEnum("user_status", [
28
+ "active",
29
+ "inactive",
30
+ "suspended",
31
+ ]);
32
+
33
+ export const users = pgTable("users", {
34
+ id: uuid().primaryKey().defaultRandom(),
35
+ name: text().notNull(),
36
+ email: text().notNull().unique(),
37
+ status: userStatusEnum().notNull().default("active"),
38
+ createdAt: timestamp().notNull().defaultNow(),
39
+ });
40
+
41
+ export const posts = pgTable("posts", {
42
+ id: uuid().primaryKey().defaultRandom(),
43
+ title: text().notNull(),
44
+ content: text(),
45
+ priority: text({ enum: ["low", "medium", "high"] }).notNull().default("medium"),
46
+ authorId: uuid()
47
+ .notNull()
48
+ .references(() => users.id),
49
+ createdAt: timestamp().notNull().defaultNow(),
50
+ });
51
+ ```
52
+
53
+ Both `pgEnum()` and `text({ enum: [...] })` are supported for defining enum columns. gqlkit automatically generates corresponding GraphQL enum types from these definitions.
54
+
55
+ ## Defining Custom Scalars
56
+
57
+ Define custom scalar types using `GqlScalar` for fields like timestamps:
58
+
59
+ ```typescript
60
+ // src/gqlkit/schema/scalars.ts
61
+ import type { GqlScalar } from "@gqlkit-ts/runtime";
62
+
63
+ export type DateTime = GqlScalar<"DateTime", Date>;
64
+ ```
65
+
66
+ ## Exporting GraphQL Types
67
+
68
+ Use Drizzle's type inference utilities to export GraphQL types from your table definitions:
69
+
70
+ ```typescript
71
+ // src/gqlkit/schema/user.ts
72
+ import type { InferSelectModel } from "drizzle-orm";
73
+ import { users as usersTable } from "../../db/schema.js";
74
+
75
+ // Export as GraphQL object type
76
+ export type User = InferSelectModel<typeof usersTable>;
77
+ ```
78
+
79
+ This generates the following GraphQL schema:
80
+
81
+ ```graphql
82
+ enum UserStatus {
83
+ ACTIVE
84
+ INACTIVE
85
+ SUSPENDED
86
+ }
87
+
88
+ type User {
89
+ id: String!
90
+ name: String!
91
+ email: String!
92
+ status: UserStatus!
93
+ createdAt: DateTime!
94
+ }
95
+ ```
96
+
97
+ ## Defining Resolvers
98
+
99
+ Define resolvers that use the derived types:
100
+
101
+ ```typescript
102
+ // src/gqlkit/schema/user.ts
103
+ import type { NoArgs } from "@gqlkit-ts/runtime";
104
+ import type { InferInsertModel, InferSelectModel } from "drizzle-orm";
105
+ import { eq } from "drizzle-orm";
106
+ import { posts as postsTable, users as usersTable } from "../../db/schema.js";
107
+ import { defineField, defineMutation, defineQuery } from "../gqlkit.js";
108
+ import type { Post } from "./post.js";
109
+
110
+ export type User = InferSelectModel<typeof usersTable>;
111
+
112
+ export const allUsers = defineQuery<NoArgs, User[]>(
113
+ async (_root, _args, ctx) => {
114
+ return ctx.db.select().from(usersTable);
115
+ },
116
+ );
117
+
118
+ export const user = defineQuery<{ id: string }, User | null>(
119
+ async (_root, args, ctx) => {
120
+ const result = await ctx.db
121
+ .select()
122
+ .from(usersTable)
123
+ .where(eq(usersTable.id, args.id));
124
+ return result[0] ?? null;
125
+ },
126
+ );
127
+
128
+ export const createUser = defineMutation<
129
+ { input: Omit<InferInsertModel<typeof usersTable>, "id" | "createdAt"> },
130
+ User
131
+ >(async (_root, args, ctx) => {
132
+ const result = await ctx.db.insert(usersTable).values(args.input).returning();
133
+ return result[0]!;
134
+ });
135
+
136
+ export const posts = defineField<User, NoArgs, Post[]>(
137
+ async (parent, _args, ctx) => {
138
+ return ctx.db
139
+ .select()
140
+ .from(postsTable)
141
+ .where(eq(postsTable.authorId, parent.id));
142
+ },
143
+ );
144
+ ```
145
+
146
+ ## Context with Database
147
+
148
+ Set up the context type to include your database instance:
149
+
150
+ ```typescript
151
+ // src/db/db.ts
152
+ import { drizzle } from "drizzle-orm/postgres-js";
153
+ import postgres from "postgres";
154
+ import * as schema from "./schema.js";
155
+
156
+ const client = postgres(process.env.DATABASE_URL!);
157
+ export const db = drizzle(client, { schema, casing: "snake_case" });
158
+ export type Database = typeof db;
159
+ ```
160
+
161
+ ```typescript
162
+ // src/gqlkit/context.ts
163
+ import type { Database } from "../db/db.js";
164
+
165
+ export type Context = {
166
+ db: Database;
167
+ };
168
+ ```
169
+
170
+ ```typescript
171
+ // src/gqlkit/gqlkit.ts
172
+ import { createGqlkitApis } from "@gqlkit-ts/runtime";
173
+ import type { Context } from "./context.js";
174
+
175
+ export const { defineQuery, defineMutation, defineField } =
176
+ createGqlkitApis<Context>();
177
+ ```
178
+
179
+ ## Complete Example
180
+
181
+ See the [examples/with-drizzle](https://github.com/gqlkit/gqlkit/tree/main/examples/with-drizzle) directory for a complete working example with:
182
+
183
+ - PostgreSQL tables with DateTime scalar
184
+ - Enum types using both `pgEnum()` and `text({ enum: [...] })`
185
+ - User and Post types with relationships
186
+ - Query, Mutation, and Field resolvers
187
+
188
+ ## Further Reading
189
+
190
+ - [Drizzle ORM Documentation](https://orm.drizzle.team/docs/overview)
191
+ - [Drizzle with PostgreSQL](https://orm.drizzle.team/docs/get-started/postgresql-new)
@@ -0,0 +1,108 @@
1
+ # graphql-yoga
2
+
3
+ [graphql-yoga](https://the-guild.dev/graphql/yoga-server) is a batteries-included GraphQL server that works in any JavaScript runtime.
4
+
5
+ ## Installation
6
+
7
+ ```sh filename="npm"
8
+ npm install graphql-yoga
9
+ ```
10
+
11
+ ```sh filename="pnpm"
12
+ pnpm add graphql-yoga
13
+ ```
14
+
15
+ ```sh filename="yarn"
16
+ yarn add graphql-yoga
17
+ ```
18
+
19
+ ## Creating the Schema
20
+
21
+ First, create an executable schema using `makeExecutableSchema`:
22
+
23
+ ```typescript
24
+ // src/schema.ts
25
+ import { makeExecutableSchema } from "@graphql-tools/schema";
26
+ import { typeDefs } from "./gqlkit/__generated__/schema";
27
+ import { resolvers } from "./gqlkit/__generated__/resolvers";
28
+
29
+ export const schema = makeExecutableSchema({ typeDefs, resolvers });
30
+ ```
31
+
32
+ ## Basic Server
33
+
34
+ ```typescript
35
+ // src/server.ts
36
+ import { createServer } from "node:http";
37
+ import { createYoga } from "graphql-yoga";
38
+ import { schema } from "./schema";
39
+
40
+ const yoga = createYoga({ schema });
41
+ const server = createServer(yoga);
42
+
43
+ server.listen(4000, () => {
44
+ console.log("Server is running on http://localhost:4000/graphql");
45
+ });
46
+ ```
47
+
48
+ ## With Context
49
+
50
+ If your resolvers use a context type, provide a context factory:
51
+
52
+ ```typescript
53
+ // src/gqlkit/context.ts
54
+ export type Context = {
55
+ currentUser: User | null;
56
+ db: Database;
57
+ };
58
+ ```
59
+
60
+ ```typescript
61
+ // src/gqlkit/gqlkit.ts
62
+ import { createGqlkitApis } from "@gqlkit-ts/runtime";
63
+ import type { Context } from "./context";
64
+
65
+ export const { defineQuery, defineMutation, defineField } =
66
+ createGqlkitApis<Context>();
67
+ ```
68
+
69
+ ```typescript
70
+ // src/gqlkit/schema/query.ts
71
+ import { defineQuery } from "../gqlkit";
72
+ import type { NoArgs } from "@gqlkit-ts/runtime";
73
+ import type { User } from "./user";
74
+
75
+ export const me = defineQuery<NoArgs, User | null>(
76
+ (_root, _args, ctx) => ctx.currentUser
77
+ );
78
+ ```
79
+
80
+ ```typescript
81
+ // src/server.ts
82
+ import { createServer } from "node:http";
83
+ import { createYoga } from "graphql-yoga";
84
+ import { schema } from "./schema";
85
+ import type { Context } from "./gqlkit/context";
86
+
87
+ const yoga = createYoga<{}, Context>({
88
+ schema,
89
+ context: async ({ request }) => {
90
+ const user = await getUserFromRequest(request);
91
+ return {
92
+ currentUser: user,
93
+ db: database,
94
+ };
95
+ },
96
+ });
97
+
98
+ const server = createServer(yoga);
99
+
100
+ server.listen(4000, () => {
101
+ console.log("Server is running on http://localhost:4000/graphql");
102
+ });
103
+ ```
104
+
105
+ ## Further Reading
106
+
107
+ - [graphql-yoga Documentation](https://the-guild.dev/graphql/yoga-server/docs)
108
+ - [Envelop Plugins](https://the-guild.dev/graphql/envelop/plugins)
@@ -0,0 +1,146 @@
1
+ # Abstract Type Resolution
2
+
3
+ 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.
4
+
5
+ ## Overview
6
+
7
+ When a GraphQL query returns an abstract type, the server needs to determine which concrete type to use. There are two approaches:
8
+
9
+ | Approach | Defined On | Returns | Use Case |
10
+ |----------|------------|---------|----------|
11
+ | `resolveType` | Abstract type (union/interface) | Type name string | Single resolver decides the type |
12
+ | `isTypeOf` | Object type | Boolean | Each type checks if value matches |
13
+
14
+ ## Using resolveType
15
+
16
+ Define a `resolveType` resolver on a union or interface type to determine the concrete type.
17
+
18
+ ### Union Example
19
+
20
+ ```typescript
21
+ import { defineResolveType } from "../gqlkit";
22
+
23
+ export interface User {
24
+ id: string;
25
+ name: string;
26
+ }
27
+
28
+ export interface Post {
29
+ id: string;
30
+ title: string;
31
+ }
32
+
33
+ export type SearchResult = User | Post;
34
+
35
+ export const searchResultResolveType = defineResolveType<SearchResult>(
36
+ (value) => {
37
+ if ("name" in value) {
38
+ return "User";
39
+ }
40
+ return "Post";
41
+ }
42
+ );
43
+ ```
44
+
45
+ ### Interface Example
46
+
47
+ ```typescript
48
+ import { defineResolveType } from "../gqlkit";
49
+ import { type GqlInterface, type IDString } from "@gqlkit-ts/runtime";
50
+
51
+ export type Node = GqlInterface<{
52
+ id: IDString;
53
+ }>;
54
+
55
+ export const nodeResolveType = defineResolveType<Node>((value) => {
56
+ if ("name" in value) {
57
+ return "User";
58
+ }
59
+ if ("title" in value) {
60
+ return "Post";
61
+ }
62
+ throw new Error("Unknown Node type");
63
+ });
64
+ ```
65
+
66
+ ### Resolver Function Signature
67
+
68
+ ```typescript
69
+ (value: TAbstract, context: TContext, info: GraphQLResolveInfo) => string | Promise<string>
70
+ ```
71
+
72
+ | Argument | Description |
73
+ |----------|-------------|
74
+ | `value` | The resolved value to determine the type of |
75
+ | `context` | The context object |
76
+ | `info` | GraphQL resolve info |
77
+
78
+ ### Type Parameters
79
+
80
+ `defineResolveType<TAbstract>`:
81
+
82
+ | Parameter | Description |
83
+ |-----------|-------------|
84
+ | `TAbstract` | The abstract type (union or interface) to resolve |
85
+
86
+ ## Using isTypeOf
87
+
88
+ Define an `isTypeOf` resolver on an object type to check if a value is of that type.
89
+
90
+ ### Basic Usage
91
+
92
+ ```typescript
93
+ import { defineIsTypeOf } from "../gqlkit";
94
+
95
+ export interface Dog {
96
+ kind: string;
97
+ name: string;
98
+ breed: string;
99
+ }
100
+
101
+ export interface Cat {
102
+ kind: string;
103
+ name: string;
104
+ indoor: boolean;
105
+ }
106
+
107
+ export type Animal = Dog | Cat;
108
+
109
+ export const dogIsTypeOf = defineIsTypeOf<Dog>((value) => {
110
+ return (
111
+ typeof value === "object" &&
112
+ value !== null &&
113
+ "kind" in value &&
114
+ value.kind === "dog"
115
+ );
116
+ });
117
+
118
+ export const catIsTypeOf = defineIsTypeOf<Cat>((value) => {
119
+ return (
120
+ typeof value === "object" &&
121
+ value !== null &&
122
+ "kind" in value &&
123
+ value.kind === "cat"
124
+ );
125
+ });
126
+ ```
127
+
128
+ ### Resolver Function Signature
129
+
130
+ ```typescript
131
+ (value: unknown, context: TContext, info: GraphQLResolveInfo) => boolean | Promise<boolean>
132
+ ```
133
+
134
+ | Argument | Description |
135
+ |----------|-------------|
136
+ | `value` | The value to check (typed as `unknown`) |
137
+ | `context` | The context object |
138
+ | `info` | GraphQL resolve info |
139
+
140
+ ### Type Parameters
141
+
142
+ `defineIsTypeOf<TObject>`:
143
+
144
+ | Parameter | Description |
145
+ |-----------|-------------|
146
+ | `TObject` | The object type to check against |