@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,65 @@
1
+ import { detectDefaultValueMetadata } from "./default-value-detector.js";
2
+ import { detectDirectiveMetadata, hasDirectiveMetadata, unwrapDirectiveType, } from "./directive-detector.js";
3
+ import { getSourceLocationFromNode } from "./source-location.js";
4
+ import { extractTsDocFromSymbol } from "./tsdoc-parser.js";
5
+ import { extractPropertySymbols, hasUndefinedInType, isNullableUnion, } from "./typescript-utils.js";
6
+ /**
7
+ * Extracts inline object properties from a TypeScript type.
8
+ *
9
+ * @param type - The TypeScript type to extract properties from
10
+ * @param checker - The TypeScript type checker
11
+ * @param convertType - A function to convert TypeScript types to TSTypeReference
12
+ * @returns An array of inline object property definitions
13
+ */
14
+ export function extractInlineObjectProperties(type, checker, convertType) {
15
+ const properties = [];
16
+ const typeProperties = extractPropertySymbols(type, checker);
17
+ for (const prop of typeProperties) {
18
+ const propName = prop.getName();
19
+ if (propName.startsWith(" $")) {
20
+ continue;
21
+ }
22
+ const propType = checker.getTypeOfSymbol(prop);
23
+ const declarations = prop.getDeclarations();
24
+ const declaration = declarations?.[0];
25
+ const optional = hasUndefinedInType(propType);
26
+ const tsdocInfo = extractTsDocFromSymbol(prop, checker);
27
+ let actualPropType = propType;
28
+ let directives = null;
29
+ let directiveNullable = false;
30
+ let defaultValue = null;
31
+ if (hasDirectiveMetadata(propType)) {
32
+ const directiveResult = detectDirectiveMetadata(propType, checker);
33
+ if (directiveResult.directives.length > 0) {
34
+ directives = directiveResult.directives;
35
+ }
36
+ const defaultValueResult = detectDefaultValueMetadata(propType, checker);
37
+ if (defaultValueResult.defaultValue) {
38
+ defaultValue = defaultValueResult.defaultValue;
39
+ }
40
+ if (isNullableUnion(propType)) {
41
+ directiveNullable = true;
42
+ }
43
+ actualPropType = unwrapDirectiveType(propType, checker);
44
+ if (!directiveNullable && isNullableUnion(actualPropType)) {
45
+ directiveNullable = true;
46
+ }
47
+ }
48
+ const tsType = convertType(actualPropType, checker);
49
+ const finalTsType = directiveNullable && !tsType.nullable
50
+ ? { ...tsType, nullable: true }
51
+ : tsType;
52
+ properties.push({
53
+ name: propName,
54
+ tsType: finalTsType,
55
+ optional,
56
+ description: tsdocInfo.description ?? null,
57
+ deprecated: tsdocInfo.deprecated ?? null,
58
+ directives,
59
+ defaultValue,
60
+ sourceLocation: getSourceLocationFromNode(declaration),
61
+ });
62
+ }
63
+ return properties;
64
+ }
65
+ //# sourceMappingURL=inline-object-extractor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inline-object-extractor.js","sourceRoot":"","sources":["../../src/shared/inline-object-extractor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import ts from "typescript";
2
+ /**
3
+ * Checks if a TypeScript type is an inline object type (anonymous type literal).
4
+ * Returns true for types like `{ foo: string; bar: number }` but not for named types.
5
+ */
6
+ export declare function isInlineObjectType(type: ts.Type): boolean;
7
+ //# sourceMappingURL=inline-object-utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inline-object-utils.d.ts","sourceRoot":"","sources":["../../src/shared/inline-object-utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,YAAY,CAAC;AAE5B;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,GAAG,OAAO,CAgBzD"}
@@ -0,0 +1,23 @@
1
+ import ts from "typescript";
2
+ /**
3
+ * Checks if a TypeScript type is an inline object type (anonymous type literal).
4
+ * Returns true for types like `{ foo: string; bar: number }` but not for named types.
5
+ */
6
+ export function isInlineObjectType(type) {
7
+ if (type.aliasSymbol) {
8
+ return false;
9
+ }
10
+ if (!type.symbol) {
11
+ return false;
12
+ }
13
+ const symbolName = type.symbol.getName();
14
+ if (symbolName !== "__type") {
15
+ return false;
16
+ }
17
+ if (!(type.flags & ts.TypeFlags.Object)) {
18
+ return false;
19
+ }
20
+ const objectType = type;
21
+ return (objectType.objectFlags & ts.ObjectFlags.Anonymous) !== 0;
22
+ }
23
+ //# sourceMappingURL=inline-object-utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inline-object-utils.js","sourceRoot":"","sources":["../../src/shared/inline-object-utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,YAAY,CAAC;AAE5B;;;GAGG;AACH,MAAM,UAAU,kBAAkB,CAAC,IAAa;IAC9C,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;QACrB,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;QACjB,OAAO,KAAK,CAAC;IACf,CAAC;IACD,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;IACzC,IAAI,UAAU,KAAK,QAAQ,EAAE,CAAC;QAC5B,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC;QACxC,OAAO,KAAK,CAAC;IACf,CAAC;IACD,MAAM,UAAU,GAAG,IAAqB,CAAC;IACzC,OAAO,CAAC,UAAU,CAAC,WAAW,GAAG,EAAE,CAAC,WAAW,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AACnE,CAAC"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Interface metadata detector.
3
+ *
4
+ * This module provides functions to detect interface metadata embedded
5
+ * in TypeScript intersection types using the $gqlkitInterfaceMeta property,
6
+ * and to extract implements declarations from types using $gqlkitTypeMeta.
7
+ */
8
+ import ts from "typescript";
9
+ /**
10
+ * Checks if a type alias declaration uses GqlInterface.
11
+ * Detects by checking for the $gqlkitInterfaceMeta property in the resolved type.
12
+ */
13
+ export declare function isDefineInterfaceTypeAlias(node: ts.TypeAliasDeclaration, checker: ts.TypeChecker): boolean;
14
+ /**
15
+ * Extracts implements from GqlInterface type alias.
16
+ */
17
+ export declare function extractImplementsFromDefineInterface(node: ts.TypeAliasDeclaration, sourceFile: ts.SourceFile, checker: ts.TypeChecker): ReadonlyArray<string>;
18
+ /**
19
+ * Extracts implements from GqlObject type alias.
20
+ * Detects GqlObject by checking for the $gqlkitTypeMeta property in the resolved type.
21
+ */
22
+ export declare function extractImplementsFromGqlTypeDef(node: ts.TypeAliasDeclaration, sourceFile: ts.SourceFile, checker: ts.TypeChecker): ReadonlyArray<string>;
23
+ //# sourceMappingURL=interface-detector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interface-detector.d.ts","sourceRoot":"","sources":["../../src/shared/interface-detector.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,MAAM,YAAY,CAAC;AAM5B;;;GAGG;AACH,wBAAgB,0BAA0B,CACxC,IAAI,EAAE,EAAE,CAAC,oBAAoB,EAC7B,OAAO,EAAE,EAAE,CAAC,WAAW,GACtB,OAAO,CAQT;AA4CD;;GAEG;AACH,wBAAgB,oCAAoC,CAClD,IAAI,EAAE,EAAE,CAAC,oBAAoB,EAC7B,UAAU,EAAE,EAAE,CAAC,UAAU,EACzB,OAAO,EAAE,EAAE,CAAC,WAAW,GACtB,aAAa,CAAC,MAAM,CAAC,CAiBvB;AAED;;;GAGG;AACH,wBAAgB,+BAA+B,CAC7C,IAAI,EAAE,EAAE,CAAC,oBAAoB,EAC7B,UAAU,EAAE,EAAE,CAAC,UAAU,EACzB,OAAO,EAAE,EAAE,CAAC,WAAW,GACtB,aAAa,CAAC,MAAM,CAAC,CA2BvB"}
@@ -0,0 +1,133 @@
1
+ /**
2
+ * Interface metadata detector.
3
+ *
4
+ * This module provides functions to detect interface metadata embedded
5
+ * in TypeScript intersection types using the $gqlkitInterfaceMeta property,
6
+ * and to extract implements declarations from types using $gqlkitTypeMeta.
7
+ */
8
+ import ts from "typescript";
9
+ import { METADATA_PROPERTIES } from "./constants.js";
10
+ const INTERFACE_META_PROPERTY = METADATA_PROPERTIES.INTERFACE_META;
11
+ const TYPE_META_PROPERTY = METADATA_PROPERTIES.TYPE_META;
12
+ /**
13
+ * Checks if a type alias declaration uses GqlInterface.
14
+ * Detects by checking for the $gqlkitInterfaceMeta property in the resolved type.
15
+ */
16
+ export function isDefineInterfaceTypeAlias(node, checker) {
17
+ const symbol = checker.getSymbolAtLocation(node.name);
18
+ if (!symbol) {
19
+ return false;
20
+ }
21
+ const type = checker.getDeclaredTypeOfSymbol(symbol);
22
+ return hasInterfaceMetadata(type);
23
+ }
24
+ /**
25
+ * Checks if a type has the $gqlkitInterfaceMeta property.
26
+ */
27
+ function hasInterfaceMetadata(type) {
28
+ const metaProp = type.getProperty(INTERFACE_META_PROPERTY);
29
+ if (metaProp) {
30
+ return true;
31
+ }
32
+ if (type.isIntersection()) {
33
+ for (const member of type.types) {
34
+ const prop = member.getProperty(INTERFACE_META_PROPERTY);
35
+ if (prop) {
36
+ return true;
37
+ }
38
+ }
39
+ }
40
+ return false;
41
+ }
42
+ /**
43
+ * Checks if a type has the $gqlkitTypeMeta property (GqlObject).
44
+ */
45
+ function hasTypeMetadata(type) {
46
+ const metaProp = type.getProperty(TYPE_META_PROPERTY);
47
+ if (metaProp) {
48
+ return true;
49
+ }
50
+ if (type.isIntersection()) {
51
+ for (const member of type.types) {
52
+ const prop = member.getProperty(TYPE_META_PROPERTY);
53
+ if (prop) {
54
+ return true;
55
+ }
56
+ }
57
+ }
58
+ return false;
59
+ }
60
+ /**
61
+ * Extracts implements from GqlInterface type alias.
62
+ */
63
+ export function extractImplementsFromDefineInterface(node, sourceFile, checker) {
64
+ const typeNode = node.type;
65
+ if (!ts.isTypeReferenceNode(typeNode)) {
66
+ return [];
67
+ }
68
+ const typeArgs = typeNode.typeArguments;
69
+ if (!typeArgs || typeArgs.length < 2) {
70
+ return [];
71
+ }
72
+ const metaArg = typeArgs[1];
73
+ if (!metaArg || !ts.isTypeLiteralNode(metaArg)) {
74
+ return [];
75
+ }
76
+ return extractImplementsFromTypeLiteral(metaArg, sourceFile, checker);
77
+ }
78
+ /**
79
+ * Extracts implements from GqlObject type alias.
80
+ * Detects GqlObject by checking for the $gqlkitTypeMeta property in the resolved type.
81
+ */
82
+ export function extractImplementsFromGqlTypeDef(node, sourceFile, checker) {
83
+ const symbol = checker.getSymbolAtLocation(node.name);
84
+ if (!symbol) {
85
+ return [];
86
+ }
87
+ const type = checker.getDeclaredTypeOfSymbol(symbol);
88
+ if (!hasTypeMetadata(type)) {
89
+ return [];
90
+ }
91
+ const typeNode = node.type;
92
+ if (!ts.isTypeReferenceNode(typeNode)) {
93
+ return [];
94
+ }
95
+ const typeArgs = typeNode.typeArguments;
96
+ if (!typeArgs || typeArgs.length < 2) {
97
+ return [];
98
+ }
99
+ const metaArg = typeArgs[1];
100
+ if (!metaArg || !ts.isTypeLiteralNode(metaArg)) {
101
+ return [];
102
+ }
103
+ return extractImplementsFromTypeLiteral(metaArg, sourceFile, checker);
104
+ }
105
+ function extractImplementsFromTypeLiteral(typeLiteral, sourceFile, _checker) {
106
+ for (const member of typeLiteral.members) {
107
+ if (ts.isPropertySignature(member) && member.name) {
108
+ const propName = member.name.getText(sourceFile);
109
+ if (propName === "implements" && member.type) {
110
+ return extractInterfaceNamesFromTupleNode(member.type, sourceFile);
111
+ }
112
+ }
113
+ }
114
+ return [];
115
+ }
116
+ function extractInterfaceNamesFromTupleNode(typeNode, sourceFile) {
117
+ if (ts.isTupleTypeNode(typeNode)) {
118
+ return typeNode.elements
119
+ .map((elem) => {
120
+ if (ts.isTypeReferenceNode(elem)) {
121
+ return elem.typeName.getText(sourceFile);
122
+ }
123
+ return null;
124
+ })
125
+ .filter((name) => name !== null);
126
+ }
127
+ if (ts.isArrayTypeNode(typeNode) &&
128
+ ts.isTypeReferenceNode(typeNode.elementType)) {
129
+ return [typeNode.elementType.typeName.getText(sourceFile)];
130
+ }
131
+ return [];
132
+ }
133
+ //# sourceMappingURL=interface-detector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interface-detector.js","sourceRoot":"","sources":["../../src/shared/interface-detector.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import type { GraphQLTypeInfo } from "../type-extractor/types/graphql.js";
2
+ import type { Diagnostic } from "../type-extractor/types/index.js";
3
+ export interface InterfaceValidationResult {
4
+ readonly isValid: boolean;
5
+ readonly diagnostics: ReadonlyArray<Diagnostic>;
6
+ }
7
+ export declare function validateInterfaceImplementations(types: ReadonlyArray<GraphQLTypeInfo>): InterfaceValidationResult;
8
+ export declare function detectCircularInterfaceReferences(types: ReadonlyArray<GraphQLTypeInfo>): InterfaceValidationResult;
9
+ //# sourceMappingURL=interface-validator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interface-validator.d.ts","sourceRoot":"","sources":["../../src/shared/interface-validator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAC;AAC1E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kCAAkC,CAAC;AAEnE,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,WAAW,EAAE,aAAa,CAAC,UAAU,CAAC,CAAC;CACjD;AAED,wBAAgB,gCAAgC,CAC9C,KAAK,EAAE,aAAa,CAAC,eAAe,CAAC,GACpC,yBAAyB,CA0F3B;AAkCD,wBAAgB,iCAAiC,CAC/C,KAAK,EAAE,aAAa,CAAC,eAAe,CAAC,GACpC,yBAAyB,CAyC3B"}
@@ -0,0 +1,152 @@
1
+ export function validateInterfaceImplementations(types) {
2
+ const diagnostics = [];
3
+ const typeMap = new Map();
4
+ for (const type of types) {
5
+ typeMap.set(type.name, type);
6
+ }
7
+ for (const type of types) {
8
+ if (!type.implementedInterfaces ||
9
+ type.implementedInterfaces.length === 0) {
10
+ continue;
11
+ }
12
+ for (const interfaceName of type.implementedInterfaces) {
13
+ const interfaceType = typeMap.get(interfaceName);
14
+ if (!interfaceType) {
15
+ diagnostics.push({
16
+ code: "INTERFACE_NOT_FOUND",
17
+ message: `Type '${type.name}' implements unknown interface '${interfaceName}'`,
18
+ severity: "error",
19
+ location: {
20
+ file: type.sourceFile,
21
+ line: 1,
22
+ column: 1,
23
+ },
24
+ });
25
+ continue;
26
+ }
27
+ if (interfaceType.kind !== "Interface") {
28
+ diagnostics.push({
29
+ code: "INTERFACE_NOT_INTERFACE",
30
+ message: `Type '${type.name}' attempts to implement '${interfaceName}' which is not an interface`,
31
+ severity: "error",
32
+ location: {
33
+ file: type.sourceFile,
34
+ line: 1,
35
+ column: 1,
36
+ },
37
+ });
38
+ continue;
39
+ }
40
+ if (!interfaceType.fields) {
41
+ continue;
42
+ }
43
+ const typeFields = new Map(type.fields?.map((f) => [f.name, f]) ?? []);
44
+ for (const interfaceField of interfaceType.fields) {
45
+ const typeField = typeFields.get(interfaceField.name);
46
+ if (!typeField) {
47
+ diagnostics.push({
48
+ code: "INTERFACE_MISSING_FIELD",
49
+ message: `Type '${type.name}' implements interface '${interfaceName}' but is missing field '${interfaceField.name}'`,
50
+ severity: "error",
51
+ location: {
52
+ file: type.sourceFile,
53
+ line: 1,
54
+ column: 1,
55
+ },
56
+ });
57
+ continue;
58
+ }
59
+ if (!isTypeCompatible(typeField.type, interfaceField.type)) {
60
+ diagnostics.push({
61
+ code: "INTERFACE_FIELD_TYPE_MISMATCH",
62
+ message: `Type '${type.name}' field '${interfaceField.name}' has incompatible type with interface '${interfaceName}'`,
63
+ severity: "error",
64
+ location: {
65
+ file: type.sourceFile,
66
+ line: 1,
67
+ column: 1,
68
+ },
69
+ });
70
+ }
71
+ }
72
+ }
73
+ }
74
+ return {
75
+ isValid: diagnostics.length === 0,
76
+ diagnostics,
77
+ };
78
+ }
79
+ function isTypeCompatible(implementingType, interfaceType) {
80
+ if (implementingType.typeName !== interfaceType.typeName) {
81
+ return false;
82
+ }
83
+ if (implementingType.list !== interfaceType.list) {
84
+ return false;
85
+ }
86
+ if (implementingType.nullable && !interfaceType.nullable) {
87
+ return false;
88
+ }
89
+ if (implementingType.list) {
90
+ if (implementingType.listItemNullable && !interfaceType.listItemNullable) {
91
+ return false;
92
+ }
93
+ }
94
+ return true;
95
+ }
96
+ export function detectCircularInterfaceReferences(types) {
97
+ const diagnostics = [];
98
+ const typeMap = new Map();
99
+ const reportedCycles = new Set();
100
+ for (const type of types) {
101
+ if (type.kind === "Interface") {
102
+ typeMap.set(type.name, type);
103
+ }
104
+ }
105
+ for (const type of types) {
106
+ if (type.kind !== "Interface" || !type.implementedInterfaces) {
107
+ continue;
108
+ }
109
+ const cyclePath = findCircularReference(type.name, typeMap, new Set(), []);
110
+ if (cyclePath) {
111
+ const cycleStart = cyclePath.indexOf(cyclePath[cyclePath.length - 1]);
112
+ const cycleMembers = cyclePath.slice(cycleStart, -1);
113
+ const cycleKey = [...cycleMembers].sort().join(",");
114
+ if (!reportedCycles.has(cycleKey)) {
115
+ reportedCycles.add(cycleKey);
116
+ diagnostics.push({
117
+ code: "INTERFACE_CIRCULAR_REFERENCE",
118
+ message: `Circular interface inheritance detected: ${cyclePath.join(" -> ")}`,
119
+ severity: "error",
120
+ location: {
121
+ file: type.sourceFile,
122
+ line: 1,
123
+ column: 1,
124
+ },
125
+ });
126
+ }
127
+ }
128
+ }
129
+ return {
130
+ isValid: diagnostics.length === 0,
131
+ diagnostics,
132
+ };
133
+ }
134
+ function findCircularReference(typeName, typeMap, visited, path) {
135
+ if (visited.has(typeName)) {
136
+ return [...path, typeName];
137
+ }
138
+ visited.add(typeName);
139
+ path.push(typeName);
140
+ const type = typeMap.get(typeName);
141
+ if (!type || !type.implementedInterfaces) {
142
+ return null;
143
+ }
144
+ for (const interfaceName of type.implementedInterfaces) {
145
+ const result = findCircularReference(interfaceName, typeMap, new Set(visited), [...path]);
146
+ if (result) {
147
+ return result;
148
+ }
149
+ }
150
+ return null;
151
+ }
152
+ //# sourceMappingURL=interface-validator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interface-validator.js","sourceRoot":"","sources":["../../src/shared/interface-validator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,65 @@
1
+ /**
2
+ * Scalar metadata detector.
3
+ *
4
+ * This module provides functions to detect scalar metadata embedded
5
+ * in TypeScript intersection types using the $gqlkitScalar property.
6
+ */
7
+ import ts from "typescript";
8
+ /**
9
+ * Error information for mixed scalar union detection.
10
+ */
11
+ export interface ScalarMetadataError {
12
+ readonly code: "MIXED_SCALAR_UNION";
13
+ readonly message: string;
14
+ readonly scalarNames: ReadonlyArray<string>;
15
+ }
16
+ /**
17
+ * Result of scalar metadata detection.
18
+ */
19
+ export interface ScalarMetadataResult {
20
+ /** The GraphQL scalar name if detected, null otherwise */
21
+ readonly scalarName: string | null;
22
+ /** Usage constraint: "input", "output", or null for both */
23
+ readonly only: "input" | "output" | null;
24
+ /** Whether the type is nullable (union with null) */
25
+ readonly nullable: boolean;
26
+ /** Whether the type is a list (array type) */
27
+ readonly isList: boolean;
28
+ /** Whether list items are nullable (for list types) */
29
+ readonly listItemNullable: boolean;
30
+ /** Whether this is a TypeScript primitive type */
31
+ readonly isPrimitive: boolean;
32
+ /** Whether this is an object type (not a scalar) */
33
+ readonly isObjectType: boolean;
34
+ /** Error if mixed scalar union is detected */
35
+ readonly error: ScalarMetadataError | undefined;
36
+ }
37
+ /**
38
+ * Extracts the actual type from an optional property type (T | undefined).
39
+ * Used by both scalar and resolver metadata detection.
40
+ *
41
+ * For simple cases like `T | undefined`, returns T.
42
+ * For union cases like `T | null | undefined`, returns the original union type
43
+ * so the caller can analyze it (e.g., check for null members).
44
+ * For boolean types (true | false | undefined), reconstructs the boolean type.
45
+ *
46
+ * @param metadataType - The type of the metadata property (may be union with undefined)
47
+ * @returns The actual type excluding undefined, or null if extraction fails
48
+ */
49
+ export declare function getActualMetadataType(metadataType: ts.Type): ts.Type | null;
50
+ /**
51
+ * Detects scalar metadata from a TypeScript type.
52
+ *
53
+ * This function analyzes TypeScript types to detect scalar metadata:
54
+ * - TypeScript primitives (string, boolean, number) map to GraphQL scalars
55
+ * - Intersection types with " $gqlkitScalar" property indicate custom scalars
56
+ * - Type aliases are followed to find the underlying scalar metadata
57
+ * - Unions with null indicate nullable types
58
+ * - Array types indicate list types
59
+ *
60
+ * @param type - The TypeScript type to analyze
61
+ * @param checker - The TypeScript type checker
62
+ * @returns Detection result with scalar information
63
+ */
64
+ export declare function detectScalarMetadata(type: ts.Type, checker: ts.TypeChecker): ScalarMetadataResult;
65
+ //# sourceMappingURL=metadata-detector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"metadata-detector.d.ts","sourceRoot":"","sources":["../../src/shared/metadata-detector.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,MAAM,YAAY,CAAC;AAM5B;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,IAAI,EAAE,oBAAoB,CAAC;IACpC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,WAAW,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;CAC7C;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,0DAA0D;IAC1D,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,4DAA4D;IAC5D,QAAQ,CAAC,IAAI,EAAE,OAAO,GAAG,QAAQ,GAAG,IAAI,CAAC;IACzC,qDAAqD;IACrD,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,8CAA8C;IAC9C,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,uDAAuD;IACvD,QAAQ,CAAC,gBAAgB,EAAE,OAAO,CAAC;IACnC,kDAAkD;IAClD,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;IAC9B,oDAAoD;IACpD,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC;IAC/B,8CAA8C;IAC9C,QAAQ,CAAC,KAAK,EAAE,mBAAmB,GAAG,SAAS,CAAC;CACjD;AAsBD;;;;;;;;;;;GAWG;AACH,wBAAgB,qBAAqB,CAAC,YAAY,EAAE,EAAE,CAAC,IAAI,GAAG,EAAE,CAAC,IAAI,GAAG,IAAI,CA6B3E;AA8LD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,EAAE,CAAC,IAAI,EACb,OAAO,EAAE,EAAE,CAAC,WAAW,GACtB,oBAAoB,CAkItB"}