@gqlkit-ts/cli 0.0.1 → 0.1.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 (325) hide show
  1. package/LICENSE +21 -0
  2. package/dist/auto-type-generator/auto-type-generator.d.ts +46 -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 +353 -0
  5. package/dist/auto-type-generator/auto-type-generator.js.map +1 -0
  6. package/dist/auto-type-generator/auto-type-generator.test.d.ts +2 -0
  7. package/dist/auto-type-generator/auto-type-generator.test.d.ts.map +1 -0
  8. package/dist/auto-type-generator/auto-type-generator.test.js +613 -0
  9. package/dist/auto-type-generator/auto-type-generator.test.js.map +1 -0
  10. package/dist/auto-type-generator/index.d.ts +4 -0
  11. package/dist/auto-type-generator/index.d.ts.map +1 -0
  12. package/dist/auto-type-generator/index.js +3 -0
  13. package/dist/auto-type-generator/index.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/name-collision-validator.test.d.ts +2 -0
  19. package/dist/auto-type-generator/name-collision-validator.test.d.ts.map +1 -0
  20. package/dist/auto-type-generator/name-collision-validator.test.js +358 -0
  21. package/dist/auto-type-generator/name-collision-validator.test.js.map +1 -0
  22. package/dist/auto-type-generator/naming-convention.d.ts +40 -0
  23. package/dist/auto-type-generator/naming-convention.d.ts.map +1 -0
  24. package/dist/auto-type-generator/naming-convention.js +59 -0
  25. package/dist/auto-type-generator/naming-convention.js.map +1 -0
  26. package/dist/auto-type-generator/naming-convention.test.d.ts +2 -0
  27. package/dist/auto-type-generator/naming-convention.test.d.ts.map +1 -0
  28. package/dist/auto-type-generator/naming-convention.test.js +132 -0
  29. package/dist/auto-type-generator/naming-convention.test.js.map +1 -0
  30. package/dist/cli.d.ts +2 -0
  31. package/dist/cli.d.ts.map +1 -0
  32. package/dist/cli.js +11 -0
  33. package/dist/cli.js.map +1 -0
  34. package/dist/commands/gen.d.ts +32 -0
  35. package/dist/commands/gen.d.ts.map +1 -0
  36. package/dist/commands/gen.js +101 -0
  37. package/dist/commands/gen.js.map +1 -0
  38. package/dist/commands/gen.test.d.ts +2 -0
  39. package/dist/commands/gen.test.d.ts.map +1 -0
  40. package/dist/commands/gen.test.js +226 -0
  41. package/dist/commands/gen.test.js.map +1 -0
  42. package/dist/commands/main.d.ts +12 -0
  43. package/dist/commands/main.d.ts.map +1 -0
  44. package/dist/commands/main.js +5 -0
  45. package/dist/commands/main.js.map +1 -0
  46. package/dist/config/define-config.d.ts +26 -0
  47. package/dist/config/define-config.d.ts.map +1 -0
  48. package/dist/config/define-config.js +27 -0
  49. package/dist/config/define-config.js.map +1 -0
  50. package/dist/config/index.d.ts +3 -0
  51. package/dist/config/index.d.ts.map +1 -0
  52. package/dist/config/index.js +2 -0
  53. package/dist/config/index.js.map +1 -0
  54. package/dist/config/types.d.ts +131 -0
  55. package/dist/config/types.d.ts.map +1 -0
  56. package/dist/config/types.js +2 -0
  57. package/dist/config/types.js.map +1 -0
  58. package/dist/config-loader/index.d.ts +3 -0
  59. package/dist/config-loader/index.d.ts.map +1 -0
  60. package/dist/config-loader/index.js +2 -0
  61. package/dist/config-loader/index.js.map +1 -0
  62. package/dist/config-loader/loader.d.ts +50 -0
  63. package/dist/config-loader/loader.d.ts.map +1 -0
  64. package/dist/config-loader/loader.js +78 -0
  65. package/dist/config-loader/loader.js.map +1 -0
  66. package/dist/config-loader/loader.test.d.ts +2 -0
  67. package/dist/config-loader/loader.test.d.ts.map +1 -0
  68. package/dist/config-loader/loader.test.js +123 -0
  69. package/dist/config-loader/loader.test.js.map +1 -0
  70. package/dist/config-loader/validator.d.ts +13 -0
  71. package/dist/config-loader/validator.d.ts.map +1 -0
  72. package/dist/config-loader/validator.js +497 -0
  73. package/dist/config-loader/validator.js.map +1 -0
  74. package/dist/config-loader/validator.test.d.ts +2 -0
  75. package/dist/config-loader/validator.test.d.ts.map +1 -0
  76. package/dist/config-loader/validator.test.js +846 -0
  77. package/dist/config-loader/validator.test.js.map +1 -0
  78. package/dist/gen-orchestrator/golden.test.d.ts +2 -0
  79. package/dist/gen-orchestrator/golden.test.d.ts.map +1 -0
  80. package/dist/gen-orchestrator/golden.test.js +102 -0
  81. package/dist/gen-orchestrator/golden.test.js.map +1 -0
  82. package/dist/gen-orchestrator/hook-executor/hook-executor.d.ts +25 -0
  83. package/dist/gen-orchestrator/hook-executor/hook-executor.d.ts.map +1 -0
  84. package/dist/gen-orchestrator/hook-executor/hook-executor.js +68 -0
  85. package/dist/gen-orchestrator/hook-executor/hook-executor.js.map +1 -0
  86. package/dist/gen-orchestrator/hook-executor/hook-executor.test.d.ts +2 -0
  87. package/dist/gen-orchestrator/hook-executor/hook-executor.test.d.ts.map +1 -0
  88. package/dist/gen-orchestrator/hook-executor/hook-executor.test.js +167 -0
  89. package/dist/gen-orchestrator/hook-executor/hook-executor.test.js.map +1 -0
  90. package/dist/gen-orchestrator/orchestrator.d.ts +30 -0
  91. package/dist/gen-orchestrator/orchestrator.d.ts.map +1 -0
  92. package/dist/gen-orchestrator/orchestrator.js +407 -0
  93. package/dist/gen-orchestrator/orchestrator.js.map +1 -0
  94. package/dist/gen-orchestrator/reporter/diagnostic-reporter.d.ts +9 -0
  95. package/dist/gen-orchestrator/reporter/diagnostic-reporter.d.ts.map +1 -0
  96. package/dist/gen-orchestrator/reporter/diagnostic-reporter.js +32 -0
  97. package/dist/gen-orchestrator/reporter/diagnostic-reporter.js.map +1 -0
  98. package/dist/gen-orchestrator/reporter/progress-reporter.d.ts +19 -0
  99. package/dist/gen-orchestrator/reporter/progress-reporter.d.ts.map +1 -0
  100. package/dist/gen-orchestrator/reporter/progress-reporter.js +38 -0
  101. package/dist/gen-orchestrator/reporter/progress-reporter.js.map +1 -0
  102. package/dist/gen-orchestrator/reporter/progress-reporter.test.d.ts +2 -0
  103. package/dist/gen-orchestrator/reporter/progress-reporter.test.d.ts.map +1 -0
  104. package/dist/gen-orchestrator/reporter/progress-reporter.test.js +74 -0
  105. package/dist/gen-orchestrator/reporter/progress-reporter.test.js.map +1 -0
  106. package/dist/gen-orchestrator/writer/file-writer.d.ts +13 -0
  107. package/dist/gen-orchestrator/writer/file-writer.d.ts.map +1 -0
  108. package/dist/gen-orchestrator/writer/file-writer.js +22 -0
  109. package/dist/gen-orchestrator/writer/file-writer.js.map +1 -0
  110. package/dist/index.d.ts +3 -0
  111. package/dist/index.d.ts.map +1 -0
  112. package/dist/index.js +2 -0
  113. package/dist/index.js.map +1 -0
  114. package/dist/resolver-extractor/extract-resolvers.d.ts +40 -0
  115. package/dist/resolver-extractor/extract-resolvers.d.ts.map +1 -0
  116. package/dist/resolver-extractor/extract-resolvers.js +2 -0
  117. package/dist/resolver-extractor/extract-resolvers.js.map +1 -0
  118. package/dist/resolver-extractor/extractor/define-api-extractor.d.ts +50 -0
  119. package/dist/resolver-extractor/extractor/define-api-extractor.d.ts.map +1 -0
  120. package/dist/resolver-extractor/extractor/define-api-extractor.js +685 -0
  121. package/dist/resolver-extractor/extractor/define-api-extractor.js.map +1 -0
  122. package/dist/resolver-extractor/index.d.ts +5 -0
  123. package/dist/resolver-extractor/index.d.ts.map +1 -0
  124. package/dist/resolver-extractor/index.js +2 -0
  125. package/dist/resolver-extractor/index.js.map +1 -0
  126. package/dist/resolver-extractor/validator/abstract-resolver-validator.d.ts +25 -0
  127. package/dist/resolver-extractor/validator/abstract-resolver-validator.d.ts.map +1 -0
  128. package/dist/resolver-extractor/validator/abstract-resolver-validator.js +172 -0
  129. package/dist/resolver-extractor/validator/abstract-resolver-validator.js.map +1 -0
  130. package/dist/resolver-extractor/validator/only-validator.d.ts +61 -0
  131. package/dist/resolver-extractor/validator/only-validator.d.ts.map +1 -0
  132. package/dist/resolver-extractor/validator/only-validator.js +76 -0
  133. package/dist/resolver-extractor/validator/only-validator.js.map +1 -0
  134. package/dist/resolver-extractor/validator/only-validator.test.d.ts +8 -0
  135. package/dist/resolver-extractor/validator/only-validator.test.d.ts.map +1 -0
  136. package/dist/resolver-extractor/validator/only-validator.test.js +352 -0
  137. package/dist/resolver-extractor/validator/only-validator.test.js.map +1 -0
  138. package/dist/schema-generator/builder/ast-builder.d.ts +7 -0
  139. package/dist/schema-generator/builder/ast-builder.d.ts.map +1 -0
  140. package/dist/schema-generator/builder/ast-builder.js +417 -0
  141. package/dist/schema-generator/builder/ast-builder.js.map +1 -0
  142. package/dist/schema-generator/builder/ast-builder.test.d.ts +2 -0
  143. package/dist/schema-generator/builder/ast-builder.test.d.ts.map +1 -0
  144. package/dist/schema-generator/builder/ast-builder.test.js +469 -0
  145. package/dist/schema-generator/builder/ast-builder.test.js.map +1 -0
  146. package/dist/schema-generator/emitter/code-emitter.d.ts +7 -0
  147. package/dist/schema-generator/emitter/code-emitter.d.ts.map +1 -0
  148. package/dist/schema-generator/emitter/code-emitter.js +201 -0
  149. package/dist/schema-generator/emitter/code-emitter.js.map +1 -0
  150. package/dist/schema-generator/emitter/sdl-emitter.d.ts +7 -0
  151. package/dist/schema-generator/emitter/sdl-emitter.d.ts.map +1 -0
  152. package/dist/schema-generator/emitter/sdl-emitter.js +11 -0
  153. package/dist/schema-generator/emitter/sdl-emitter.js.map +1 -0
  154. package/dist/schema-generator/generate-schema.d.ts +26 -0
  155. package/dist/schema-generator/generate-schema.d.ts.map +1 -0
  156. package/dist/schema-generator/generate-schema.js +76 -0
  157. package/dist/schema-generator/generate-schema.js.map +1 -0
  158. package/dist/schema-generator/index.d.ts +4 -0
  159. package/dist/schema-generator/index.d.ts.map +1 -0
  160. package/dist/schema-generator/index.js +2 -0
  161. package/dist/schema-generator/index.js.map +1 -0
  162. package/dist/schema-generator/integrator/result-integrator.d.ts +93 -0
  163. package/dist/schema-generator/integrator/result-integrator.d.ts.map +1 -0
  164. package/dist/schema-generator/integrator/result-integrator.js +396 -0
  165. package/dist/schema-generator/integrator/result-integrator.js.map +1 -0
  166. package/dist/schema-generator/pruner/schema-pruner.d.ts +16 -0
  167. package/dist/schema-generator/pruner/schema-pruner.d.ts.map +1 -0
  168. package/dist/schema-generator/pruner/schema-pruner.js +66 -0
  169. package/dist/schema-generator/pruner/schema-pruner.js.map +1 -0
  170. package/dist/schema-generator/resolver-collector/resolver-collector.d.ts +24 -0
  171. package/dist/schema-generator/resolver-collector/resolver-collector.d.ts.map +1 -0
  172. package/dist/schema-generator/resolver-collector/resolver-collector.js +61 -0
  173. package/dist/schema-generator/resolver-collector/resolver-collector.js.map +1 -0
  174. package/dist/shared/constants.d.ts +70 -0
  175. package/dist/shared/constants.d.ts.map +1 -0
  176. package/dist/shared/constants.js +128 -0
  177. package/dist/shared/constants.js.map +1 -0
  178. package/dist/shared/default-value-detector.d.ts +40 -0
  179. package/dist/shared/default-value-detector.d.ts.map +1 -0
  180. package/dist/shared/default-value-detector.js +124 -0
  181. package/dist/shared/default-value-detector.js.map +1 -0
  182. package/dist/shared/diagnostics.d.ts +4 -0
  183. package/dist/shared/diagnostics.d.ts.map +1 -0
  184. package/dist/shared/diagnostics.js +25 -0
  185. package/dist/shared/diagnostics.js.map +1 -0
  186. package/dist/shared/directive-definition-extractor.d.ts +64 -0
  187. package/dist/shared/directive-definition-extractor.d.ts.map +1 -0
  188. package/dist/shared/directive-definition-extractor.js +399 -0
  189. package/dist/shared/directive-definition-extractor.js.map +1 -0
  190. package/dist/shared/directive-detector.d.ts +102 -0
  191. package/dist/shared/directive-detector.d.ts.map +1 -0
  192. package/dist/shared/directive-detector.js +422 -0
  193. package/dist/shared/directive-detector.js.map +1 -0
  194. package/dist/shared/file-scanner.d.ts +25 -0
  195. package/dist/shared/file-scanner.d.ts.map +1 -0
  196. package/dist/shared/file-scanner.js +99 -0
  197. package/dist/shared/file-scanner.js.map +1 -0
  198. package/dist/shared/file-scanner.test.d.ts +2 -0
  199. package/dist/shared/file-scanner.test.d.ts.map +1 -0
  200. package/dist/shared/file-scanner.test.js +138 -0
  201. package/dist/shared/file-scanner.test.js.map +1 -0
  202. package/dist/shared/index.d.ts +10 -0
  203. package/dist/shared/index.d.ts.map +1 -0
  204. package/dist/shared/index.js +8 -0
  205. package/dist/shared/index.js.map +1 -0
  206. package/dist/shared/inline-object-extractor.d.ts +13 -0
  207. package/dist/shared/inline-object-extractor.d.ts.map +1 -0
  208. package/dist/shared/inline-object-extractor.js +65 -0
  209. package/dist/shared/inline-object-extractor.js.map +1 -0
  210. package/dist/shared/inline-object-utils.d.ts +7 -0
  211. package/dist/shared/inline-object-utils.d.ts.map +1 -0
  212. package/dist/shared/inline-object-utils.js +23 -0
  213. package/dist/shared/inline-object-utils.js.map +1 -0
  214. package/dist/shared/interface-detector.d.ts +22 -0
  215. package/dist/shared/interface-detector.d.ts.map +1 -0
  216. package/dist/shared/interface-detector.js +90 -0
  217. package/dist/shared/interface-detector.js.map +1 -0
  218. package/dist/shared/interface-validator.d.ts +9 -0
  219. package/dist/shared/interface-validator.d.ts.map +1 -0
  220. package/dist/shared/interface-validator.js +152 -0
  221. package/dist/shared/interface-validator.js.map +1 -0
  222. package/dist/shared/interface-validator.test.d.ts +2 -0
  223. package/dist/shared/interface-validator.test.d.ts.map +1 -0
  224. package/dist/shared/interface-validator.test.js +145 -0
  225. package/dist/shared/interface-validator.test.js.map +1 -0
  226. package/dist/shared/metadata-detector.d.ts +65 -0
  227. package/dist/shared/metadata-detector.d.ts.map +1 -0
  228. package/dist/shared/metadata-detector.js +333 -0
  229. package/dist/shared/metadata-detector.js.map +1 -0
  230. package/dist/shared/program-factory.d.ts +14 -0
  231. package/dist/shared/program-factory.d.ts.map +1 -0
  232. package/dist/shared/program-factory.js +29 -0
  233. package/dist/shared/program-factory.js.map +1 -0
  234. package/dist/shared/source-location.d.ts +11 -0
  235. package/dist/shared/source-location.d.ts.map +1 -0
  236. package/dist/shared/source-location.js +15 -0
  237. package/dist/shared/source-location.js.map +1 -0
  238. package/dist/shared/tsconfig-loader.d.ts +13 -0
  239. package/dist/shared/tsconfig-loader.d.ts.map +1 -0
  240. package/dist/shared/tsconfig-loader.js +90 -0
  241. package/dist/shared/tsconfig-loader.js.map +1 -0
  242. package/dist/shared/tsdoc-parser.d.ts +12 -0
  243. package/dist/shared/tsdoc-parser.d.ts.map +1 -0
  244. package/dist/shared/tsdoc-parser.js +101 -0
  245. package/dist/shared/tsdoc-parser.js.map +1 -0
  246. package/dist/shared/type-converter.d.ts +3 -0
  247. package/dist/shared/type-converter.d.ts.map +1 -0
  248. package/dist/shared/type-converter.js +72 -0
  249. package/dist/shared/type-converter.js.map +1 -0
  250. package/dist/shared/typescript-utils.d.ts +55 -0
  251. package/dist/shared/typescript-utils.d.ts.map +1 -0
  252. package/dist/shared/typescript-utils.js +149 -0
  253. package/dist/shared/typescript-utils.js.map +1 -0
  254. package/dist/type-extractor/collector/result-collector.d.ts +7 -0
  255. package/dist/type-extractor/collector/result-collector.d.ts.map +1 -0
  256. package/dist/type-extractor/collector/result-collector.js +35 -0
  257. package/dist/type-extractor/collector/result-collector.js.map +1 -0
  258. package/dist/type-extractor/collector/scalar-collector.d.ts +108 -0
  259. package/dist/type-extractor/collector/scalar-collector.d.ts.map +1 -0
  260. package/dist/type-extractor/collector/scalar-collector.js +133 -0
  261. package/dist/type-extractor/collector/scalar-collector.js.map +1 -0
  262. package/dist/type-extractor/converter/field-eligibility.d.ts +34 -0
  263. package/dist/type-extractor/converter/field-eligibility.d.ts.map +1 -0
  264. package/dist/type-extractor/converter/field-eligibility.js +89 -0
  265. package/dist/type-extractor/converter/field-eligibility.js.map +1 -0
  266. package/dist/type-extractor/converter/graphql-converter.d.ts +7 -0
  267. package/dist/type-extractor/converter/graphql-converter.d.ts.map +1 -0
  268. package/dist/type-extractor/converter/graphql-converter.js +299 -0
  269. package/dist/type-extractor/converter/graphql-converter.js.map +1 -0
  270. package/dist/type-extractor/extract-types.d.ts +2 -0
  271. package/dist/type-extractor/extract-types.d.ts.map +1 -0
  272. package/dist/type-extractor/extract-types.js +2 -0
  273. package/dist/type-extractor/extract-types.js.map +1 -0
  274. package/dist/type-extractor/extractor/type-extractor.d.ts +27 -0
  275. package/dist/type-extractor/extractor/type-extractor.d.ts.map +1 -0
  276. package/dist/type-extractor/extractor/type-extractor.js +1116 -0
  277. package/dist/type-extractor/extractor/type-extractor.js.map +1 -0
  278. package/dist/type-extractor/index.d.ts +4 -0
  279. package/dist/type-extractor/index.d.ts.map +1 -0
  280. package/dist/type-extractor/index.js +2 -0
  281. package/dist/type-extractor/index.js.map +1 -0
  282. package/dist/type-extractor/types/diagnostics.d.ts +17 -0
  283. package/dist/type-extractor/types/diagnostics.d.ts.map +1 -0
  284. package/dist/type-extractor/types/diagnostics.js +2 -0
  285. package/dist/type-extractor/types/diagnostics.js.map +1 -0
  286. package/dist/type-extractor/types/graphql.d.ts +40 -0
  287. package/dist/type-extractor/types/graphql.d.ts.map +1 -0
  288. package/dist/type-extractor/types/graphql.js +2 -0
  289. package/dist/type-extractor/types/graphql.js.map +1 -0
  290. package/dist/type-extractor/types/index.d.ts +5 -0
  291. package/dist/type-extractor/types/index.d.ts.map +1 -0
  292. package/dist/type-extractor/types/index.js +2 -0
  293. package/dist/type-extractor/types/index.js.map +1 -0
  294. package/dist/type-extractor/types/typescript.d.ts +86 -0
  295. package/dist/type-extractor/types/typescript.d.ts.map +1 -0
  296. package/dist/type-extractor/types/typescript.js +2 -0
  297. package/dist/type-extractor/types/typescript.js.map +1 -0
  298. package/dist/type-extractor/types/typescript.test.d.ts +2 -0
  299. package/dist/type-extractor/types/typescript.test.d.ts.map +1 -0
  300. package/dist/type-extractor/types/typescript.test.js +287 -0
  301. package/dist/type-extractor/types/typescript.test.js.map +1 -0
  302. package/dist/type-extractor/validator/type-validator.d.ts +11 -0
  303. package/dist/type-extractor/validator/type-validator.d.ts.map +1 -0
  304. package/dist/type-extractor/validator/type-validator.js +53 -0
  305. package/dist/type-extractor/validator/type-validator.js.map +1 -0
  306. package/docs/configuration.md +163 -0
  307. package/docs/getting-started.md +117 -0
  308. package/docs/index.md +32 -0
  309. package/docs/integration/apollo.md +109 -0
  310. package/docs/integration/yoga.md +108 -0
  311. package/docs/schema/abstract-resolvers.md +146 -0
  312. package/docs/schema/directives.md +196 -0
  313. package/docs/schema/documentation.md +176 -0
  314. package/docs/schema/enums.md +162 -0
  315. package/docs/schema/fields.md +184 -0
  316. package/docs/schema/index.md +38 -0
  317. package/docs/schema/inputs.md +277 -0
  318. package/docs/schema/interfaces.md +178 -0
  319. package/docs/schema/objects.md +186 -0
  320. package/docs/schema/queries-mutations.md +205 -0
  321. package/docs/schema/scalars.md +194 -0
  322. package/docs/schema/unions.md +90 -0
  323. package/docs/what-is-gqlkit.md +22 -0
  324. package/package.json +59 -7
  325. package/README.md +0 -45
@@ -0,0 +1,145 @@
1
+ import { describe, expect, it } from "vitest";
2
+ import { validateInterfaceImplementations } from "./interface-validator.js";
3
+ describe("validateInterfaceImplementations", () => {
4
+ it("should detect missing interface field", () => {
5
+ const types = [
6
+ {
7
+ name: "Node",
8
+ kind: "Interface",
9
+ fields: [
10
+ {
11
+ name: "id",
12
+ type: {
13
+ typeName: "ID",
14
+ nullable: false,
15
+ list: false,
16
+ listItemNullable: null,
17
+ },
18
+ description: null,
19
+ deprecated: null,
20
+ directives: null,
21
+ defaultValue: null,
22
+ },
23
+ ],
24
+ unionMembers: null,
25
+ enumValues: null,
26
+ isNumericEnum: false,
27
+ implementedInterfaces: null,
28
+ sourceFile: "src/node.ts",
29
+ description: null,
30
+ deprecated: null,
31
+ directives: null,
32
+ },
33
+ {
34
+ name: "User",
35
+ kind: "Object",
36
+ fields: [
37
+ {
38
+ name: "name",
39
+ type: {
40
+ typeName: "String",
41
+ nullable: false,
42
+ list: false,
43
+ listItemNullable: null,
44
+ },
45
+ description: null,
46
+ deprecated: null,
47
+ directives: null,
48
+ defaultValue: null,
49
+ },
50
+ ],
51
+ unionMembers: null,
52
+ enumValues: null,
53
+ isNumericEnum: false,
54
+ implementedInterfaces: ["Node"],
55
+ sourceFile: "src/user.ts",
56
+ description: null,
57
+ deprecated: null,
58
+ directives: null,
59
+ },
60
+ ];
61
+ const result = validateInterfaceImplementations(types);
62
+ expect(result.isValid).toBe(false);
63
+ expect(result.diagnostics).toHaveLength(1);
64
+ expect(result.diagnostics[0]).toMatchObject({
65
+ code: "INTERFACE_MISSING_FIELD",
66
+ message: "Type 'User' implements interface 'Node' but is missing field 'id'",
67
+ severity: "error",
68
+ });
69
+ });
70
+ it("should pass when all interface fields are implemented", () => {
71
+ const types = [
72
+ {
73
+ name: "Node",
74
+ kind: "Interface",
75
+ fields: [
76
+ {
77
+ name: "id",
78
+ type: {
79
+ typeName: "ID",
80
+ nullable: false,
81
+ list: false,
82
+ listItemNullable: null,
83
+ },
84
+ description: null,
85
+ deprecated: null,
86
+ directives: null,
87
+ defaultValue: null,
88
+ },
89
+ ],
90
+ unionMembers: null,
91
+ enumValues: null,
92
+ isNumericEnum: false,
93
+ implementedInterfaces: null,
94
+ sourceFile: "src/node.ts",
95
+ description: null,
96
+ deprecated: null,
97
+ directives: null,
98
+ },
99
+ {
100
+ name: "User",
101
+ kind: "Object",
102
+ fields: [
103
+ {
104
+ name: "id",
105
+ type: {
106
+ typeName: "ID",
107
+ nullable: false,
108
+ list: false,
109
+ listItemNullable: null,
110
+ },
111
+ description: null,
112
+ deprecated: null,
113
+ directives: null,
114
+ defaultValue: null,
115
+ },
116
+ {
117
+ name: "name",
118
+ type: {
119
+ typeName: "String",
120
+ nullable: false,
121
+ list: false,
122
+ listItemNullable: null,
123
+ },
124
+ description: null,
125
+ deprecated: null,
126
+ directives: null,
127
+ defaultValue: null,
128
+ },
129
+ ],
130
+ unionMembers: null,
131
+ enumValues: null,
132
+ isNumericEnum: false,
133
+ implementedInterfaces: ["Node"],
134
+ sourceFile: "src/user.ts",
135
+ description: null,
136
+ deprecated: null,
137
+ directives: null,
138
+ },
139
+ ];
140
+ const result = validateInterfaceImplementations(types);
141
+ expect(result.isValid).toBe(true);
142
+ expect(result.diagnostics).toHaveLength(0);
143
+ });
144
+ });
145
+ //# sourceMappingURL=interface-validator.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interface-validator.test.js","sourceRoot":"","sources":["../../src/shared/interface-validator.test.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"}
@@ -0,0 +1,333 @@
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
+ import { METADATA_PROPERTIES } from "./constants.js";
9
+ import { isNullOrUndefined } from "./typescript-utils.js";
10
+ const SCALAR_METADATA_PROPERTY = METADATA_PROPERTIES.SCALAR;
11
+ function createDefaultResult() {
12
+ return {
13
+ scalarName: null,
14
+ only: null,
15
+ nullable: false,
16
+ isList: false,
17
+ listItemNullable: false,
18
+ isPrimitive: false,
19
+ isObjectType: false,
20
+ error: undefined,
21
+ };
22
+ }
23
+ /**
24
+ * Extracts the actual type from an optional property type (T | undefined).
25
+ * Used by both scalar and resolver metadata detection.
26
+ *
27
+ * For simple cases like `T | undefined`, returns T.
28
+ * For union cases like `T | null | undefined`, returns the original union type
29
+ * so the caller can analyze it (e.g., check for null members).
30
+ * For boolean types (true | false | undefined), reconstructs the boolean type.
31
+ *
32
+ * @param metadataType - The type of the metadata property (may be union with undefined)
33
+ * @returns The actual type excluding undefined, or null if extraction fails
34
+ */
35
+ export function getActualMetadataType(metadataType) {
36
+ if (metadataType.isUnion()) {
37
+ const nonUndefinedTypes = metadataType.types.filter((t) => !(t.flags & ts.TypeFlags.Undefined));
38
+ if (nonUndefinedTypes.length === 1) {
39
+ return nonUndefinedTypes[0];
40
+ }
41
+ // Special case: boolean (true | false) optionally with undefined
42
+ // TypeScript represents boolean | undefined as true | false | undefined
43
+ if (nonUndefinedTypes.length === 2 &&
44
+ nonUndefinedTypes.every((t) => t.flags & ts.TypeFlags.BooleanLiteral)) {
45
+ // This is effectively "boolean" - return the first member to preserve
46
+ // the boolean literal nature, or we could return the union
47
+ return metadataType;
48
+ }
49
+ // If there are multiple non-undefined types (e.g., string | null),
50
+ // return the original metadataType. The caller should analyze this
51
+ // union type and handle null members appropriately.
52
+ if (nonUndefinedTypes.length > 1) {
53
+ // Return the original type - caller will need to filter out undefined
54
+ // when checking for nullability
55
+ return metadataType;
56
+ }
57
+ return null;
58
+ }
59
+ return metadataType;
60
+ }
61
+ function extractMetadataFromType(type, checker) {
62
+ const metadataProp = type.getProperty(SCALAR_METADATA_PROPERTY);
63
+ if (!metadataProp) {
64
+ return null;
65
+ }
66
+ const rawMetadataType = checker.getTypeOfSymbol(metadataProp);
67
+ const metadataType = getActualMetadataType(rawMetadataType);
68
+ if (!metadataType) {
69
+ return null;
70
+ }
71
+ const nameProp = metadataType.getProperty("name");
72
+ if (!nameProp) {
73
+ return null;
74
+ }
75
+ const nameType = checker.getTypeOfSymbol(nameProp);
76
+ if (!(nameType.flags & ts.TypeFlags.StringLiteral)) {
77
+ return null;
78
+ }
79
+ const scalarName = nameType.value;
80
+ const onlyProp = metadataType.getProperty("only");
81
+ let only = null;
82
+ if (onlyProp) {
83
+ const onlyType = checker.getTypeOfSymbol(onlyProp);
84
+ if (onlyType.flags & ts.TypeFlags.StringLiteral) {
85
+ const onlyValue = onlyType.value;
86
+ if (onlyValue === "input" || onlyValue === "output") {
87
+ only = onlyValue;
88
+ }
89
+ }
90
+ }
91
+ return {
92
+ scalarName,
93
+ only,
94
+ isPrimitive: false,
95
+ isObjectType: false,
96
+ };
97
+ }
98
+ function detectScalarMetadataFromIntersection(type, checker) {
99
+ if (!type.isIntersection()) {
100
+ return null;
101
+ }
102
+ for (const member of type.types) {
103
+ const metadata = extractMetadataFromType(member, checker);
104
+ if (metadata) {
105
+ return metadata;
106
+ }
107
+ }
108
+ return null;
109
+ }
110
+ function detectPrimitiveScalar(type) {
111
+ if (type.flags & ts.TypeFlags.String) {
112
+ return {
113
+ scalarName: "String",
114
+ only: null,
115
+ isPrimitive: true,
116
+ isObjectType: false,
117
+ };
118
+ }
119
+ if (type.flags & ts.TypeFlags.Number) {
120
+ return {
121
+ scalarName: "Float",
122
+ only: null,
123
+ isPrimitive: true,
124
+ isObjectType: false,
125
+ };
126
+ }
127
+ if (type.flags & ts.TypeFlags.Boolean ||
128
+ type.flags & ts.TypeFlags.BooleanLiteral) {
129
+ return {
130
+ scalarName: "Boolean",
131
+ only: null,
132
+ isPrimitive: true,
133
+ isObjectType: false,
134
+ };
135
+ }
136
+ return null;
137
+ }
138
+ function isBooleanLiteralUnion(types) {
139
+ const nonNullTypes = types.filter((t) => !isNullOrUndefined(t));
140
+ return (nonNullTypes.length === 2 &&
141
+ nonNullTypes.every((t) => t.flags & ts.TypeFlags.BooleanLiteral));
142
+ }
143
+ function detectScalarMetadataCore(type, checker) {
144
+ const primitiveResult = detectPrimitiveScalar(type);
145
+ if (primitiveResult) {
146
+ return primitiveResult;
147
+ }
148
+ const intersectionResult = detectScalarMetadataFromIntersection(type, checker);
149
+ if (intersectionResult) {
150
+ return intersectionResult;
151
+ }
152
+ const directMetadata = extractMetadataFromType(type, checker);
153
+ if (directMetadata) {
154
+ return directMetadata;
155
+ }
156
+ if (type.aliasSymbol) {
157
+ const aliasedType = checker.getDeclaredTypeOfSymbol(type.aliasSymbol);
158
+ if (aliasedType !== type) {
159
+ const aliasResult = detectScalarMetadataCore(aliasedType, checker);
160
+ if (aliasResult) {
161
+ return aliasResult;
162
+ }
163
+ }
164
+ }
165
+ const symbol = type.getSymbol();
166
+ if (symbol) {
167
+ const declarations = symbol.getDeclarations();
168
+ if (declarations && declarations.length > 0) {
169
+ for (const decl of declarations) {
170
+ if (ts.isTypeAliasDeclaration(decl)) {
171
+ const declSymbol = checker.getSymbolAtLocation(decl.name);
172
+ if (declSymbol) {
173
+ const declType = checker.getDeclaredTypeOfSymbol(declSymbol);
174
+ if (declType !== type && declType.isIntersection()) {
175
+ const result = detectScalarMetadataFromIntersection(declType, checker);
176
+ if (result) {
177
+ return result;
178
+ }
179
+ }
180
+ }
181
+ }
182
+ }
183
+ }
184
+ }
185
+ return null;
186
+ }
187
+ function isObjectLikeType(type) {
188
+ if (type.flags & ts.TypeFlags.Object) {
189
+ const objectType = type;
190
+ if (objectType.objectFlags & ts.ObjectFlags.Anonymous ||
191
+ objectType.objectFlags & ts.ObjectFlags.Interface ||
192
+ objectType.objectFlags & ts.ObjectFlags.Reference) {
193
+ const properties = type.getProperties();
194
+ const hasOnlyMetadataProperty = properties.length === 1 &&
195
+ properties[0]?.getName() === SCALAR_METADATA_PROPERTY;
196
+ if (!hasOnlyMetadataProperty && properties.length > 0) {
197
+ const metadataProp = type.getProperty(SCALAR_METADATA_PROPERTY);
198
+ if (!metadataProp) {
199
+ return true;
200
+ }
201
+ }
202
+ }
203
+ }
204
+ return false;
205
+ }
206
+ /**
207
+ * Detects scalar metadata from a TypeScript type.
208
+ *
209
+ * This function analyzes TypeScript types to detect scalar metadata:
210
+ * - TypeScript primitives (string, boolean, number) map to GraphQL scalars
211
+ * - Intersection types with " $gqlkitScalar" property indicate custom scalars
212
+ * - Type aliases are followed to find the underlying scalar metadata
213
+ * - Unions with null indicate nullable types
214
+ * - Array types indicate list types
215
+ *
216
+ * @param type - The TypeScript type to analyze
217
+ * @param checker - The TypeScript type checker
218
+ * @returns Detection result with scalar information
219
+ */
220
+ export function detectScalarMetadata(type, checker) {
221
+ const result = createDefaultResult();
222
+ if (checker.isArrayType(type)) {
223
+ const typeRef = type;
224
+ const elementType = typeRef.typeArguments?.[0];
225
+ if (!elementType) {
226
+ return {
227
+ ...result,
228
+ isList: true,
229
+ scalarName: "String",
230
+ };
231
+ }
232
+ const elementResult = detectScalarMetadata(elementType, checker);
233
+ return {
234
+ ...result,
235
+ scalarName: elementResult.scalarName,
236
+ only: elementResult.only,
237
+ isList: true,
238
+ listItemNullable: elementResult.nullable,
239
+ isPrimitive: elementResult.isPrimitive,
240
+ error: elementResult.error,
241
+ };
242
+ }
243
+ if (type.isUnion()) {
244
+ const nonNullTypes = type.types.filter((t) => !isNullOrUndefined(t));
245
+ const hasNull = type.types.some((t) => isNullOrUndefined(t));
246
+ if (isBooleanLiteralUnion(type.types)) {
247
+ return {
248
+ ...result,
249
+ scalarName: "Boolean",
250
+ isPrimitive: true,
251
+ nullable: hasNull,
252
+ };
253
+ }
254
+ if (nonNullTypes.length === 0) {
255
+ return result;
256
+ }
257
+ if (nonNullTypes.length === 1) {
258
+ const innerType = nonNullTypes[0];
259
+ if (checker.isArrayType(innerType)) {
260
+ const innerResult = detectScalarMetadata(innerType, checker);
261
+ return {
262
+ ...innerResult,
263
+ nullable: hasNull,
264
+ };
265
+ }
266
+ const innerResult = detectScalarMetadata(innerType, checker);
267
+ return {
268
+ ...innerResult,
269
+ nullable: hasNull || innerResult.nullable,
270
+ };
271
+ }
272
+ const scalarNames = new Set();
273
+ const detectedResults = [];
274
+ for (const unionMember of nonNullTypes) {
275
+ const memberResult = detectScalarMetadataCore(unionMember, checker);
276
+ if (memberResult?.scalarName) {
277
+ scalarNames.add(memberResult.scalarName);
278
+ detectedResults.push(memberResult);
279
+ }
280
+ }
281
+ if (scalarNames.size > 1) {
282
+ const scalarNameArray = Array.from(scalarNames).sort();
283
+ return {
284
+ ...result,
285
+ nullable: hasNull,
286
+ error: {
287
+ code: "MIXED_SCALAR_UNION",
288
+ message: `Cannot use union of different scalar types: ${scalarNameArray.join(", ")}`,
289
+ scalarNames: scalarNameArray,
290
+ },
291
+ };
292
+ }
293
+ if (scalarNames.size === 1 && detectedResults.length > 0) {
294
+ const firstResult = detectedResults[0];
295
+ return {
296
+ ...result,
297
+ scalarName: firstResult.scalarName,
298
+ only: firstResult.only,
299
+ nullable: hasNull,
300
+ isPrimitive: firstResult.isPrimitive,
301
+ };
302
+ }
303
+ if (nonNullTypes.every((t) => isObjectLikeType(t))) {
304
+ return {
305
+ ...result,
306
+ isObjectType: true,
307
+ nullable: hasNull,
308
+ };
309
+ }
310
+ return {
311
+ ...result,
312
+ nullable: hasNull,
313
+ };
314
+ }
315
+ const coreResult = detectScalarMetadataCore(type, checker);
316
+ if (coreResult) {
317
+ return {
318
+ ...result,
319
+ scalarName: coreResult.scalarName,
320
+ only: coreResult.only,
321
+ isPrimitive: coreResult.isPrimitive,
322
+ isObjectType: coreResult.isObjectType,
323
+ };
324
+ }
325
+ if (isObjectLikeType(type)) {
326
+ return {
327
+ ...result,
328
+ isObjectType: true,
329
+ };
330
+ }
331
+ return result;
332
+ }
333
+ //# sourceMappingURL=metadata-detector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"metadata-detector.js","sourceRoot":"","sources":["../../src/shared/metadata-detector.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,MAAM,YAAY,CAAC;AAC5B,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAE1D,MAAM,wBAAwB,GAAG,mBAAmB,CAAC,MAAM,CAAC;AAwC5D,SAAS,mBAAmB;IAC1B,OAAO;QACL,UAAU,EAAE,IAAI;QAChB,IAAI,EAAE,IAAI;QACV,QAAQ,EAAE,KAAK;QACf,MAAM,EAAE,KAAK;QACb,gBAAgB,EAAE,KAAK;QACvB,WAAW,EAAE,KAAK;QAClB,YAAY,EAAE,KAAK;QACnB,KAAK,EAAE,SAAS;KACjB,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,qBAAqB,CAAC,YAAqB;IACzD,IAAI,YAAY,CAAC,OAAO,EAAE,EAAE,CAAC;QAC3B,MAAM,iBAAiB,GAAG,YAAY,CAAC,KAAK,CAAC,MAAM,CACjD,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC,SAAS,CAAC,SAAS,CAAC,CAC3C,CAAC;QACF,IAAI,iBAAiB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACnC,OAAO,iBAAiB,CAAC,CAAC,CAAE,CAAC;QAC/B,CAAC;QACD,iEAAiE;QACjE,wEAAwE;QACxE,IACE,iBAAiB,CAAC,MAAM,KAAK,CAAC;YAC9B,iBAAiB,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC,SAAS,CAAC,cAAc,CAAC,EACrE,CAAC;YACD,sEAAsE;YACtE,2DAA2D;YAC3D,OAAO,YAAY,CAAC;QACtB,CAAC;QACD,mEAAmE;QACnE,mEAAmE;QACnE,oDAAoD;QACpD,IAAI,iBAAiB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACjC,sEAAsE;YACtE,gCAAgC;YAChC,OAAO,YAAY,CAAC;QACtB,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,YAAY,CAAC;AACtB,CAAC;AAED,SAAS,uBAAuB,CAC9B,IAAa,EACb,OAAuB;IAEvB,MAAM,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC,wBAAwB,CAAC,CAAC;IAChE,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,eAAe,GAAG,OAAO,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC;IAC9D,MAAM,YAAY,GAAG,qBAAqB,CAAC,eAAe,CAAC,CAAC;IAC5D,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,QAAQ,GAAG,YAAY,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;IAClD,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,QAAQ,GAAG,OAAO,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;IACnD,IAAI,CAAC,CAAC,QAAQ,CAAC,KAAK,GAAG,EAAE,CAAC,SAAS,CAAC,aAAa,CAAC,EAAE,CAAC;QACnD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,UAAU,GAAI,QAAiC,CAAC,KAAK,CAAC;IAE5D,MAAM,QAAQ,GAAG,YAAY,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;IAClD,IAAI,IAAI,GAA8B,IAAI,CAAC;IAC3C,IAAI,QAAQ,EAAE,CAAC;QACb,MAAM,QAAQ,GAAG,OAAO,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;QACnD,IAAI,QAAQ,CAAC,KAAK,GAAG,EAAE,CAAC,SAAS,CAAC,aAAa,EAAE,CAAC;YAChD,MAAM,SAAS,GAAI,QAAiC,CAAC,KAAK,CAAC;YAC3D,IAAI,SAAS,KAAK,OAAO,IAAI,SAAS,KAAK,QAAQ,EAAE,CAAC;gBACpD,IAAI,GAAG,SAAS,CAAC;YACnB,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO;QACL,UAAU;QACV,IAAI;QACJ,WAAW,EAAE,KAAK;QAClB,YAAY,EAAE,KAAK;KACpB,CAAC;AACJ,CAAC;AAED,SAAS,oCAAoC,CAC3C,IAAa,EACb,OAAuB;IAEvB,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE,CAAC;QAC3B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;QAChC,MAAM,QAAQ,GAAG,uBAAuB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAC1D,IAAI,QAAQ,EAAE,CAAC;YACb,OAAO,QAAQ,CAAC;QAClB,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,qBAAqB,CAAC,IAAa;IAC1C,IAAI,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC;QACrC,OAAO;YACL,UAAU,EAAE,QAAQ;YACpB,IAAI,EAAE,IAAI;YACV,WAAW,EAAE,IAAI;YACjB,YAAY,EAAE,KAAK;SACpB,CAAC;IACJ,CAAC;IACD,IAAI,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC;QACrC,OAAO;YACL,UAAU,EAAE,OAAO;YACnB,IAAI,EAAE,IAAI;YACV,WAAW,EAAE,IAAI;YACjB,YAAY,EAAE,KAAK;SACpB,CAAC;IACJ,CAAC;IACD,IACE,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC,SAAS,CAAC,OAAO;QACjC,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC,SAAS,CAAC,cAAc,EACxC,CAAC;QACD,OAAO;YACL,UAAU,EAAE,SAAS;YACrB,IAAI,EAAE,IAAI;YACV,WAAW,EAAE,IAAI;YACjB,YAAY,EAAE,KAAK;SACpB,CAAC;IACJ,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,qBAAqB,CAAC,KAAyB;IACtD,MAAM,YAAY,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC;IAChE,OAAO,CACL,YAAY,CAAC,MAAM,KAAK,CAAC;QACzB,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC,SAAS,CAAC,cAAc,CAAC,CACjE,CAAC;AACJ,CAAC;AAED,SAAS,wBAAwB,CAC/B,IAAa,EACb,OAAuB;IAEvB,MAAM,eAAe,GAAG,qBAAqB,CAAC,IAAI,CAAC,CAAC;IACpD,IAAI,eAAe,EAAE,CAAC;QACpB,OAAO,eAAe,CAAC;IACzB,CAAC;IAED,MAAM,kBAAkB,GAAG,oCAAoC,CAC7D,IAAI,EACJ,OAAO,CACR,CAAC;IACF,IAAI,kBAAkB,EAAE,CAAC;QACvB,OAAO,kBAAkB,CAAC;IAC5B,CAAC;IAED,MAAM,cAAc,GAAG,uBAAuB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC9D,IAAI,cAAc,EAAE,CAAC;QACnB,OAAO,cAAc,CAAC;IACxB,CAAC;IAED,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;QACrB,MAAM,WAAW,GAAG,OAAO,CAAC,uBAAuB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACtE,IAAI,WAAW,KAAK,IAAI,EAAE,CAAC;YACzB,MAAM,WAAW,GAAG,wBAAwB,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;YACnE,IAAI,WAAW,EAAE,CAAC;gBAChB,OAAO,WAAW,CAAC;YACrB,CAAC;QACH,CAAC;IACH,CAAC;IAED,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;IAChC,IAAI,MAAM,EAAE,CAAC;QACX,MAAM,YAAY,GAAG,MAAM,CAAC,eAAe,EAAE,CAAC;QAC9C,IAAI,YAAY,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC5C,KAAK,MAAM,IAAI,IAAI,YAAY,EAAE,CAAC;gBAChC,IAAI,EAAE,CAAC,sBAAsB,CAAC,IAAI,CAAC,EAAE,CAAC;oBACpC,MAAM,UAAU,GAAG,OAAO,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBAC1D,IAAI,UAAU,EAAE,CAAC;wBACf,MAAM,QAAQ,GAAG,OAAO,CAAC,uBAAuB,CAAC,UAAU,CAAC,CAAC;wBAC7D,IAAI,QAAQ,KAAK,IAAI,IAAI,QAAQ,CAAC,cAAc,EAAE,EAAE,CAAC;4BACnD,MAAM,MAAM,GAAG,oCAAoC,CACjD,QAAQ,EACR,OAAO,CACR,CAAC;4BACF,IAAI,MAAM,EAAE,CAAC;gCACX,OAAO,MAAM,CAAC;4BAChB,CAAC;wBACH,CAAC;oBACH,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,gBAAgB,CAAC,IAAa;IACrC,IAAI,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC;QACrC,MAAM,UAAU,GAAG,IAAqB,CAAC;QACzC,IACE,UAAU,CAAC,WAAW,GAAG,EAAE,CAAC,WAAW,CAAC,SAAS;YACjD,UAAU,CAAC,WAAW,GAAG,EAAE,CAAC,WAAW,CAAC,SAAS;YACjD,UAAU,CAAC,WAAW,GAAG,EAAE,CAAC,WAAW,CAAC,SAAS,EACjD,CAAC;YACD,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;YACxC,MAAM,uBAAuB,GAC3B,UAAU,CAAC,MAAM,KAAK,CAAC;gBACvB,UAAU,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,wBAAwB,CAAC;YAExD,IAAI,CAAC,uBAAuB,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACtD,MAAM,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC,wBAAwB,CAAC,CAAC;gBAChE,IAAI,CAAC,YAAY,EAAE,CAAC;oBAClB,OAAO,IAAI,CAAC;gBACd,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,oBAAoB,CAClC,IAAa,EACb,OAAuB;IAEvB,MAAM,MAAM,GAAG,mBAAmB,EAAE,CAAC;IAErC,IAAI,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC;QAC9B,MAAM,OAAO,GAAG,IAAwB,CAAC;QACzC,MAAM,WAAW,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,CAAC;QAE/C,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,OAAO;gBACL,GAAG,MAAM;gBACT,MAAM,EAAE,IAAI;gBACZ,UAAU,EAAE,QAAQ;aACrB,CAAC;QACJ,CAAC;QAED,MAAM,aAAa,GAAG,oBAAoB,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;QACjE,OAAO;YACL,GAAG,MAAM;YACT,UAAU,EAAE,aAAa,CAAC,UAAU;YACpC,IAAI,EAAE,aAAa,CAAC,IAAI;YACxB,MAAM,EAAE,IAAI;YACZ,gBAAgB,EAAE,aAAa,CAAC,QAAQ;YACxC,WAAW,EAAE,aAAa,CAAC,WAAW;YACtC,KAAK,EAAE,aAAa,CAAC,KAAK;SAC3B,CAAC;IACJ,CAAC;IAED,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC;QACnB,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC;QACrE,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC;QAE7D,IAAI,qBAAqB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YACtC,OAAO;gBACL,GAAG,MAAM;gBACT,UAAU,EAAE,SAAS;gBACrB,WAAW,EAAE,IAAI;gBACjB,QAAQ,EAAE,OAAO;aAClB,CAAC;QACJ,CAAC;QAED,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC9B,OAAO,MAAM,CAAC;QAChB,CAAC;QAED,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC9B,MAAM,SAAS,GAAG,YAAY,CAAC,CAAC,CAAE,CAAC;YAEnC,IAAI,OAAO,CAAC,WAAW,CAAC,SAAS,CAAC,EAAE,CAAC;gBACnC,MAAM,WAAW,GAAG,oBAAoB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;gBAC7D,OAAO;oBACL,GAAG,WAAW;oBACd,QAAQ,EAAE,OAAO;iBAClB,CAAC;YACJ,CAAC;YAED,MAAM,WAAW,GAAG,oBAAoB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;YAC7D,OAAO;gBACL,GAAG,WAAW;gBACd,QAAQ,EAAE,OAAO,IAAI,WAAW,CAAC,QAAQ;aAC1C,CAAC;QACJ,CAAC;QAED,MAAM,WAAW,GAAG,IAAI,GAAG,EAAU,CAAC;QACtC,MAAM,eAAe,GAAuB,EAAE,CAAC;QAE/C,KAAK,MAAM,WAAW,IAAI,YAAY,EAAE,CAAC;YACvC,MAAM,YAAY,GAAG,wBAAwB,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;YACpE,IAAI,YAAY,EAAE,UAAU,EAAE,CAAC;gBAC7B,WAAW,CAAC,GAAG,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;gBACzC,eAAe,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YACrC,CAAC;QACH,CAAC;QAED,IAAI,WAAW,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;YACzB,MAAM,eAAe,GAAG,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,IAAI,EAAE,CAAC;YACvD,OAAO;gBACL,GAAG,MAAM;gBACT,QAAQ,EAAE,OAAO;gBACjB,KAAK,EAAE;oBACL,IAAI,EAAE,oBAAoB;oBAC1B,OAAO,EAAE,+CAA+C,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;oBACpF,WAAW,EAAE,eAAe;iBAC7B;aACF,CAAC;QACJ,CAAC;QAED,IAAI,WAAW,CAAC,IAAI,KAAK,CAAC,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACzD,MAAM,WAAW,GAAG,eAAe,CAAC,CAAC,CAAE,CAAC;YACxC,OAAO;gBACL,GAAG,MAAM;gBACT,UAAU,EAAE,WAAW,CAAC,UAAU;gBAClC,IAAI,EAAE,WAAW,CAAC,IAAI;gBACtB,QAAQ,EAAE,OAAO;gBACjB,WAAW,EAAE,WAAW,CAAC,WAAW;aACrC,CAAC;QACJ,CAAC;QAED,IAAI,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACnD,OAAO;gBACL,GAAG,MAAM;gBACT,YAAY,EAAE,IAAI;gBAClB,QAAQ,EAAE,OAAO;aAClB,CAAC;QACJ,CAAC;QAED,OAAO;YACL,GAAG,MAAM;YACT,QAAQ,EAAE,OAAO;SAClB,CAAC;IACJ,CAAC;IAED,MAAM,UAAU,GAAG,wBAAwB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC3D,IAAI,UAAU,EAAE,CAAC;QACf,OAAO;YACL,GAAG,MAAM;YACT,UAAU,EAAE,UAAU,CAAC,UAAU;YACjC,IAAI,EAAE,UAAU,CAAC,IAAI;YACrB,WAAW,EAAE,UAAU,CAAC,WAAW;YACnC,YAAY,EAAE,UAAU,CAAC,YAAY;SACtC,CAAC;IACJ,CAAC;IAED,IAAI,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC;QAC3B,OAAO;YACL,GAAG,MAAM;YACT,YAAY,EAAE,IAAI;SACnB,CAAC;IACJ,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -0,0 +1,14 @@
1
+ import ts from "typescript";
2
+ import type { Diagnostic } from "../type-extractor/types/index.js";
3
+ export interface CreateSharedProgramOptions {
4
+ readonly cwd: string;
5
+ readonly tsconfigPath: string | null;
6
+ readonly typeFiles: ReadonlyArray<string>;
7
+ readonly resolverFiles: ReadonlyArray<string>;
8
+ }
9
+ export interface CreateSharedProgramResult {
10
+ readonly program: ts.Program | null;
11
+ readonly diagnostics: ReadonlyArray<Diagnostic>;
12
+ }
13
+ export declare function createSharedProgram(options: CreateSharedProgramOptions): CreateSharedProgramResult;
14
+ //# sourceMappingURL=program-factory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"program-factory.d.ts","sourceRoot":"","sources":["../../src/shared/program-factory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,YAAY,CAAC;AAC5B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kCAAkC,CAAC;AAanE,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,QAAQ,CAAC,SAAS,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IAC1C,QAAQ,CAAC,aAAa,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;CAC/C;AAED,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,GAAG,IAAI,CAAC;IACpC,QAAQ,CAAC,WAAW,EAAE,aAAa,CAAC,UAAU,CAAC,CAAC;CACjD;AAED,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,0BAA0B,GAClC,yBAAyB,CAsB3B"}
@@ -0,0 +1,29 @@
1
+ import ts from "typescript";
2
+ import { loadTsconfig } from "./tsconfig-loader.js";
3
+ const DEFAULT_COMPILER_OPTIONS = {
4
+ target: ts.ScriptTarget.ES2022,
5
+ module: ts.ModuleKind.NodeNext,
6
+ moduleResolution: ts.ModuleResolutionKind.Node16,
7
+ strict: true,
8
+ esModuleInterop: true,
9
+ skipLibCheck: true,
10
+ noEmit: true,
11
+ };
12
+ export function createSharedProgram(options) {
13
+ const { cwd, tsconfigPath, typeFiles, resolverFiles } = options;
14
+ const tsconfigResult = loadTsconfig({ cwd, tsconfigPath });
15
+ if (tsconfigResult.diagnostics.length > 0) {
16
+ return {
17
+ program: null,
18
+ diagnostics: tsconfigResult.diagnostics,
19
+ };
20
+ }
21
+ const compilerOptions = tsconfigResult.compilerOptions ?? DEFAULT_COMPILER_OPTIONS;
22
+ const allFiles = [...typeFiles, ...resolverFiles];
23
+ const program = ts.createProgram(allFiles, compilerOptions);
24
+ return {
25
+ program,
26
+ diagnostics: [],
27
+ };
28
+ }
29
+ //# sourceMappingURL=program-factory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"program-factory.js","sourceRoot":"","sources":["../../src/shared/program-factory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,YAAY,CAAC;AAE5B,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEpD,MAAM,wBAAwB,GAAuB;IACnD,MAAM,EAAE,EAAE,CAAC,YAAY,CAAC,MAAM;IAC9B,MAAM,EAAE,EAAE,CAAC,UAAU,CAAC,QAAQ;IAC9B,gBAAgB,EAAE,EAAE,CAAC,oBAAoB,CAAC,MAAM;IAChD,MAAM,EAAE,IAAI;IACZ,eAAe,EAAE,IAAI;IACrB,YAAY,EAAE,IAAI;IAClB,MAAM,EAAE,IAAI;CACb,CAAC;AAcF,MAAM,UAAU,mBAAmB,CACjC,OAAmC;IAEnC,MAAM,EAAE,GAAG,EAAE,YAAY,EAAE,SAAS,EAAE,aAAa,EAAE,GAAG,OAAO,CAAC;IAEhE,MAAM,cAAc,GAAG,YAAY,CAAC,EAAE,GAAG,EAAE,YAAY,EAAE,CAAC,CAAC;IAE3D,IAAI,cAAc,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC1C,OAAO;YACL,OAAO,EAAE,IAAI;YACb,WAAW,EAAE,cAAc,CAAC,WAAW;SACxC,CAAC;IACJ,CAAC;IAED,MAAM,eAAe,GACnB,cAAc,CAAC,eAAe,IAAI,wBAAwB,CAAC;IAE7D,MAAM,QAAQ,GAAG,CAAC,GAAG,SAAS,EAAE,GAAG,aAAa,CAAC,CAAC;IAClD,MAAM,OAAO,GAAG,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,eAAe,CAAC,CAAC;IAE5D,OAAO;QACL,OAAO;QACP,WAAW,EAAE,EAAE;KAChB,CAAC;AACJ,CAAC"}
@@ -0,0 +1,11 @@
1
+ import type ts from "typescript";
2
+ export interface SourceLocation {
3
+ readonly file: string;
4
+ readonly line: number;
5
+ readonly column: number;
6
+ }
7
+ /**
8
+ * Extracts source location from a TypeScript AST node.
9
+ */
10
+ export declare function getSourceLocationFromNode(node: ts.Node | undefined): SourceLocation | null;
11
+ //# sourceMappingURL=source-location.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"source-location.d.ts","sourceRoot":"","sources":["../../src/shared/source-location.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,YAAY,CAAC;AAEjC,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CACvC,IAAI,EAAE,EAAE,CAAC,IAAI,GAAG,SAAS,GACxB,cAAc,GAAG,IAAI,CAavB"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Extracts source location from a TypeScript AST node.
3
+ */
4
+ export function getSourceLocationFromNode(node) {
5
+ if (!node)
6
+ return null;
7
+ const sourceFile = node.getSourceFile();
8
+ const { line, character } = sourceFile.getLineAndCharacterOfPosition(node.getStart(sourceFile));
9
+ return {
10
+ file: sourceFile.fileName,
11
+ line: line + 1,
12
+ column: character + 1,
13
+ };
14
+ }
15
+ //# sourceMappingURL=source-location.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"source-location.js","sourceRoot":"","sources":["../../src/shared/source-location.ts"],"names":[],"mappings":"AAQA;;GAEG;AACH,MAAM,UAAU,yBAAyB,CACvC,IAAyB;IAEzB,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC;IAEvB,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;IACxC,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,UAAU,CAAC,6BAA6B,CAClE,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAC1B,CAAC;IAEF,OAAO;QACL,IAAI,EAAE,UAAU,CAAC,QAAQ;QACzB,IAAI,EAAE,IAAI,GAAG,CAAC;QACd,MAAM,EAAE,SAAS,GAAG,CAAC;KACtB,CAAC;AACJ,CAAC"}