mnehmos.trace.mcp 1.0.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 (339) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +1662 -0
  3. package/dist/adapters/bootstrap.d.ts +29 -0
  4. package/dist/adapters/bootstrap.d.ts.map +1 -0
  5. package/dist/adapters/bootstrap.js +46 -0
  6. package/dist/adapters/bootstrap.js.map +1 -0
  7. package/dist/adapters/errors.d.ts +94 -0
  8. package/dist/adapters/errors.d.ts.map +1 -0
  9. package/dist/adapters/errors.js +107 -0
  10. package/dist/adapters/errors.js.map +1 -0
  11. package/dist/adapters/graphql/index.d.ts +9 -0
  12. package/dist/adapters/graphql/index.d.ts.map +1 -0
  13. package/dist/adapters/graphql/index.js +9 -0
  14. package/dist/adapters/graphql/index.js.map +1 -0
  15. package/dist/adapters/graphql/sdl-parser.d.ts +74 -0
  16. package/dist/adapters/graphql/sdl-parser.d.ts.map +1 -0
  17. package/dist/adapters/graphql/sdl-parser.js +559 -0
  18. package/dist/adapters/graphql/sdl-parser.js.map +1 -0
  19. package/dist/adapters/grpc/adapter.d.ts +76 -0
  20. package/dist/adapters/grpc/adapter.d.ts.map +1 -0
  21. package/dist/adapters/grpc/adapter.js +362 -0
  22. package/dist/adapters/grpc/adapter.js.map +1 -0
  23. package/dist/adapters/grpc/index.d.ts +10 -0
  24. package/dist/adapters/grpc/index.d.ts.map +1 -0
  25. package/dist/adapters/grpc/index.js +12 -0
  26. package/dist/adapters/grpc/index.js.map +1 -0
  27. package/dist/adapters/grpc/proto-parser.d.ts +76 -0
  28. package/dist/adapters/grpc/proto-parser.d.ts.map +1 -0
  29. package/dist/adapters/grpc/proto-parser.js +523 -0
  30. package/dist/adapters/grpc/proto-parser.js.map +1 -0
  31. package/dist/adapters/grpc/type-converter.d.ts +43 -0
  32. package/dist/adapters/grpc/type-converter.d.ts.map +1 -0
  33. package/dist/adapters/grpc/type-converter.js +270 -0
  34. package/dist/adapters/grpc/type-converter.js.map +1 -0
  35. package/dist/adapters/grpc/types.d.ts +85 -0
  36. package/dist/adapters/grpc/types.d.ts.map +1 -0
  37. package/dist/adapters/grpc/types.js +7 -0
  38. package/dist/adapters/grpc/types.js.map +1 -0
  39. package/dist/adapters/index.d.ts +39 -0
  40. package/dist/adapters/index.d.ts.map +1 -0
  41. package/dist/adapters/index.js +50 -0
  42. package/dist/adapters/index.js.map +1 -0
  43. package/dist/adapters/mcp.d.ts +23 -0
  44. package/dist/adapters/mcp.d.ts.map +1 -0
  45. package/dist/adapters/mcp.js +293 -0
  46. package/dist/adapters/mcp.js.map +1 -0
  47. package/dist/adapters/openapi/adapter.d.ts +213 -0
  48. package/dist/adapters/openapi/adapter.d.ts.map +1 -0
  49. package/dist/adapters/openapi/adapter.js +557 -0
  50. package/dist/adapters/openapi/adapter.js.map +1 -0
  51. package/dist/adapters/openapi/convert.d.ts +120 -0
  52. package/dist/adapters/openapi/convert.d.ts.map +1 -0
  53. package/dist/adapters/openapi/convert.js +363 -0
  54. package/dist/adapters/openapi/convert.js.map +1 -0
  55. package/dist/adapters/openapi/index.d.ts +39 -0
  56. package/dist/adapters/openapi/index.d.ts.map +1 -0
  57. package/dist/adapters/openapi/index.js +48 -0
  58. package/dist/adapters/openapi/index.js.map +1 -0
  59. package/dist/adapters/openapi/parser.d.ts +95 -0
  60. package/dist/adapters/openapi/parser.d.ts.map +1 -0
  61. package/dist/adapters/openapi/parser.js +171 -0
  62. package/dist/adapters/openapi/parser.js.map +1 -0
  63. package/dist/adapters/registry.d.ts +116 -0
  64. package/dist/adapters/registry.d.ts.map +1 -0
  65. package/dist/adapters/registry.js +246 -0
  66. package/dist/adapters/registry.js.map +1 -0
  67. package/dist/adapters/trpc/adapter.d.ts +159 -0
  68. package/dist/adapters/trpc/adapter.d.ts.map +1 -0
  69. package/dist/adapters/trpc/adapter.js +223 -0
  70. package/dist/adapters/trpc/adapter.js.map +1 -0
  71. package/dist/adapters/trpc/extractor.d.ts +218 -0
  72. package/dist/adapters/trpc/extractor.d.ts.map +1 -0
  73. package/dist/adapters/trpc/extractor.js +708 -0
  74. package/dist/adapters/trpc/extractor.js.map +1 -0
  75. package/dist/adapters/trpc/index.d.ts +31 -0
  76. package/dist/adapters/trpc/index.d.ts.map +1 -0
  77. package/dist/adapters/trpc/index.js +40 -0
  78. package/dist/adapters/trpc/index.js.map +1 -0
  79. package/dist/adapters/trpc/parser.d.ts +119 -0
  80. package/dist/adapters/trpc/parser.d.ts.map +1 -0
  81. package/dist/adapters/trpc/parser.js +128 -0
  82. package/dist/adapters/trpc/parser.js.map +1 -0
  83. package/dist/compare/index.d.ts +33 -0
  84. package/dist/compare/index.d.ts.map +1 -0
  85. package/dist/compare/index.js +261 -0
  86. package/dist/compare/index.js.map +1 -0
  87. package/dist/core/types.d.ts +188 -0
  88. package/dist/core/types.d.ts.map +1 -0
  89. package/dist/core/types.js +9 -0
  90. package/dist/core/types.js.map +1 -0
  91. package/dist/extract/index.d.ts +26 -0
  92. package/dist/extract/index.d.ts.map +1 -0
  93. package/dist/extract/index.js +44 -0
  94. package/dist/extract/index.js.map +1 -0
  95. package/dist/index.d.ts +9 -0
  96. package/dist/index.d.ts.map +1 -0
  97. package/dist/index.js +674 -0
  98. package/dist/index.js.map +1 -0
  99. package/dist/languages/base.d.ts +57 -0
  100. package/dist/languages/base.d.ts.map +1 -0
  101. package/dist/languages/base.js +6 -0
  102. package/dist/languages/base.js.map +1 -0
  103. package/dist/languages/bootstrap.d.ts +10 -0
  104. package/dist/languages/bootstrap.d.ts.map +1 -0
  105. package/dist/languages/bootstrap.js +25 -0
  106. package/dist/languages/bootstrap.js.map +1 -0
  107. package/dist/languages/go/handlers/chi.d.ts +24 -0
  108. package/dist/languages/go/handlers/chi.d.ts.map +1 -0
  109. package/dist/languages/go/handlers/chi.js +205 -0
  110. package/dist/languages/go/handlers/chi.js.map +1 -0
  111. package/dist/languages/go/handlers/gin.d.ts +24 -0
  112. package/dist/languages/go/handlers/gin.d.ts.map +1 -0
  113. package/dist/languages/go/handlers/gin.js +156 -0
  114. package/dist/languages/go/handlers/gin.js.map +1 -0
  115. package/dist/languages/go/handlers/stdlib.d.ts +19 -0
  116. package/dist/languages/go/handlers/stdlib.d.ts.map +1 -0
  117. package/dist/languages/go/handlers/stdlib.js +112 -0
  118. package/dist/languages/go/handlers/stdlib.js.map +1 -0
  119. package/dist/languages/go/index.d.ts +18 -0
  120. package/dist/languages/go/index.d.ts.map +1 -0
  121. package/dist/languages/go/index.js +20 -0
  122. package/dist/languages/go/index.js.map +1 -0
  123. package/dist/languages/go/parser.d.ts +33 -0
  124. package/dist/languages/go/parser.d.ts.map +1 -0
  125. package/dist/languages/go/parser.js +95 -0
  126. package/dist/languages/go/parser.js.map +1 -0
  127. package/dist/languages/go/struct-extractor.d.ts +59 -0
  128. package/dist/languages/go/struct-extractor.d.ts.map +1 -0
  129. package/dist/languages/go/struct-extractor.js +483 -0
  130. package/dist/languages/go/struct-extractor.js.map +1 -0
  131. package/dist/languages/go/tag-parser.d.ts +62 -0
  132. package/dist/languages/go/tag-parser.d.ts.map +1 -0
  133. package/dist/languages/go/tag-parser.js +108 -0
  134. package/dist/languages/go/tag-parser.js.map +1 -0
  135. package/dist/languages/go/type-converter.d.ts +32 -0
  136. package/dist/languages/go/type-converter.d.ts.map +1 -0
  137. package/dist/languages/go/type-converter.js +226 -0
  138. package/dist/languages/go/type-converter.js.map +1 -0
  139. package/dist/languages/go/types.d.ts +153 -0
  140. package/dist/languages/go/types.d.ts.map +1 -0
  141. package/dist/languages/go/types.js +6 -0
  142. package/dist/languages/go/types.js.map +1 -0
  143. package/dist/languages/import-resolver.d.ts +645 -0
  144. package/dist/languages/import-resolver.d.ts.map +1 -0
  145. package/dist/languages/import-resolver.js +1278 -0
  146. package/dist/languages/import-resolver.js.map +1 -0
  147. package/dist/languages/index.d.ts +34 -0
  148. package/dist/languages/index.d.ts.map +1 -0
  149. package/dist/languages/index.js +93 -0
  150. package/dist/languages/index.js.map +1 -0
  151. package/dist/languages/json-schema.d.ts +40 -0
  152. package/dist/languages/json-schema.d.ts.map +1 -0
  153. package/dist/languages/json-schema.js +188 -0
  154. package/dist/languages/json-schema.js.map +1 -0
  155. package/dist/languages/python-ast/index.d.ts +8 -0
  156. package/dist/languages/python-ast/index.d.ts.map +1 -0
  157. package/dist/languages/python-ast/index.js +7 -0
  158. package/dist/languages/python-ast/index.js.map +1 -0
  159. package/dist/languages/python-ast/parser.d.ts +174 -0
  160. package/dist/languages/python-ast/parser.d.ts.map +1 -0
  161. package/dist/languages/python-ast/parser.js +1205 -0
  162. package/dist/languages/python-ast/parser.js.map +1 -0
  163. package/dist/languages/python-ast/type-resolver.d.ts +75 -0
  164. package/dist/languages/python-ast/type-resolver.d.ts.map +1 -0
  165. package/dist/languages/python-ast/type-resolver.js +421 -0
  166. package/dist/languages/python-ast/type-resolver.js.map +1 -0
  167. package/dist/languages/python-ast/types.d.ts +216 -0
  168. package/dist/languages/python-ast/types.d.ts.map +1 -0
  169. package/dist/languages/python-ast/types.js +6 -0
  170. package/dist/languages/python-ast/types.js.map +1 -0
  171. package/dist/languages/python.d.ts +55 -0
  172. package/dist/languages/python.d.ts.map +1 -0
  173. package/dist/languages/python.js +311 -0
  174. package/dist/languages/python.js.map +1 -0
  175. package/dist/languages/typescript.d.ts +272 -0
  176. package/dist/languages/typescript.d.ts.map +1 -0
  177. package/dist/languages/typescript.js +1381 -0
  178. package/dist/languages/typescript.js.map +1 -0
  179. package/dist/patterns/base.d.ts +146 -0
  180. package/dist/patterns/base.d.ts.map +1 -0
  181. package/dist/patterns/base.js +89 -0
  182. package/dist/patterns/base.js.map +1 -0
  183. package/dist/patterns/errors.d.ts +172 -0
  184. package/dist/patterns/errors.d.ts.map +1 -0
  185. package/dist/patterns/errors.js +185 -0
  186. package/dist/patterns/errors.js.map +1 -0
  187. package/dist/patterns/extractors.d.ts +170 -0
  188. package/dist/patterns/extractors.d.ts.map +1 -0
  189. package/dist/patterns/extractors.js +305 -0
  190. package/dist/patterns/extractors.js.map +1 -0
  191. package/dist/patterns/graphql/apollo-client.d.ts +80 -0
  192. package/dist/patterns/graphql/apollo-client.d.ts.map +1 -0
  193. package/dist/patterns/graphql/apollo-client.js +800 -0
  194. package/dist/patterns/graphql/apollo-client.js.map +1 -0
  195. package/dist/patterns/graphql/apollo-server.d.ts +55 -0
  196. package/dist/patterns/graphql/apollo-server.d.ts.map +1 -0
  197. package/dist/patterns/graphql/apollo-server.js +523 -0
  198. package/dist/patterns/graphql/apollo-server.js.map +1 -0
  199. package/dist/patterns/graphql/index.d.ts +11 -0
  200. package/dist/patterns/graphql/index.d.ts.map +1 -0
  201. package/dist/patterns/graphql/index.js +12 -0
  202. package/dist/patterns/graphql/index.js.map +1 -0
  203. package/dist/patterns/graphql/types.d.ts +213 -0
  204. package/dist/patterns/graphql/types.d.ts.map +1 -0
  205. package/dist/patterns/graphql/types.js +16 -0
  206. package/dist/patterns/graphql/types.js.map +1 -0
  207. package/dist/patterns/http-clients/axios.d.ts +148 -0
  208. package/dist/patterns/http-clients/axios.d.ts.map +1 -0
  209. package/dist/patterns/http-clients/axios.js +652 -0
  210. package/dist/patterns/http-clients/axios.js.map +1 -0
  211. package/dist/patterns/http-clients/fetch.d.ts +88 -0
  212. package/dist/patterns/http-clients/fetch.d.ts.map +1 -0
  213. package/dist/patterns/http-clients/fetch.js +364 -0
  214. package/dist/patterns/http-clients/fetch.js.map +1 -0
  215. package/dist/patterns/http-clients/index.d.ts +36 -0
  216. package/dist/patterns/http-clients/index.d.ts.map +1 -0
  217. package/dist/patterns/http-clients/index.js +50 -0
  218. package/dist/patterns/http-clients/index.js.map +1 -0
  219. package/dist/patterns/http-clients/property-access.d.ts +46 -0
  220. package/dist/patterns/http-clients/property-access.d.ts.map +1 -0
  221. package/dist/patterns/http-clients/property-access.js +818 -0
  222. package/dist/patterns/http-clients/property-access.js.map +1 -0
  223. package/dist/patterns/http-clients/type-inference.d.ts +48 -0
  224. package/dist/patterns/http-clients/type-inference.d.ts.map +1 -0
  225. package/dist/patterns/http-clients/type-inference.js +293 -0
  226. package/dist/patterns/http-clients/type-inference.js.map +1 -0
  227. package/dist/patterns/http-clients/types.d.ts +168 -0
  228. package/dist/patterns/http-clients/types.d.ts.map +1 -0
  229. package/dist/patterns/http-clients/types.js +10 -0
  230. package/dist/patterns/http-clients/types.js.map +1 -0
  231. package/dist/patterns/http-clients/url-extractor.d.ts +53 -0
  232. package/dist/patterns/http-clients/url-extractor.d.ts.map +1 -0
  233. package/dist/patterns/http-clients/url-extractor.js +338 -0
  234. package/dist/patterns/http-clients/url-extractor.js.map +1 -0
  235. package/dist/patterns/index.d.ts +44 -0
  236. package/dist/patterns/index.d.ts.map +1 -0
  237. package/dist/patterns/index.js +49 -0
  238. package/dist/patterns/index.js.map +1 -0
  239. package/dist/patterns/python/aiohttp.d.ts +21 -0
  240. package/dist/patterns/python/aiohttp.d.ts.map +1 -0
  241. package/dist/patterns/python/aiohttp.js +188 -0
  242. package/dist/patterns/python/aiohttp.js.map +1 -0
  243. package/dist/patterns/python/httpx.d.ts +20 -0
  244. package/dist/patterns/python/httpx.d.ts.map +1 -0
  245. package/dist/patterns/python/httpx.js +183 -0
  246. package/dist/patterns/python/httpx.js.map +1 -0
  247. package/dist/patterns/python/index.d.ts +32 -0
  248. package/dist/patterns/python/index.d.ts.map +1 -0
  249. package/dist/patterns/python/index.js +63 -0
  250. package/dist/patterns/python/index.js.map +1 -0
  251. package/dist/patterns/python/property-access.d.ts +27 -0
  252. package/dist/patterns/python/property-access.d.ts.map +1 -0
  253. package/dist/patterns/python/property-access.js +132 -0
  254. package/dist/patterns/python/property-access.js.map +1 -0
  255. package/dist/patterns/python/requests.d.ts +19 -0
  256. package/dist/patterns/python/requests.d.ts.map +1 -0
  257. package/dist/patterns/python/requests.js +239 -0
  258. package/dist/patterns/python/requests.js.map +1 -0
  259. package/dist/patterns/python/types.d.ts +95 -0
  260. package/dist/patterns/python/types.d.ts.map +1 -0
  261. package/dist/patterns/python/types.js +43 -0
  262. package/dist/patterns/python/types.js.map +1 -0
  263. package/dist/patterns/registry.d.ts +181 -0
  264. package/dist/patterns/registry.d.ts.map +1 -0
  265. package/dist/patterns/registry.js +304 -0
  266. package/dist/patterns/registry.js.map +1 -0
  267. package/dist/patterns/rest/express.d.ts +78 -0
  268. package/dist/patterns/rest/express.d.ts.map +1 -0
  269. package/dist/patterns/rest/express.js +289 -0
  270. package/dist/patterns/rest/express.js.map +1 -0
  271. package/dist/patterns/rest/fastify.d.ts +93 -0
  272. package/dist/patterns/rest/fastify.d.ts.map +1 -0
  273. package/dist/patterns/rest/fastify.js +420 -0
  274. package/dist/patterns/rest/fastify.js.map +1 -0
  275. package/dist/patterns/rest/index.d.ts +31 -0
  276. package/dist/patterns/rest/index.d.ts.map +1 -0
  277. package/dist/patterns/rest/index.js +45 -0
  278. package/dist/patterns/rest/index.js.map +1 -0
  279. package/dist/patterns/rest/middleware.d.ts +25 -0
  280. package/dist/patterns/rest/middleware.d.ts.map +1 -0
  281. package/dist/patterns/rest/middleware.js +219 -0
  282. package/dist/patterns/rest/middleware.js.map +1 -0
  283. package/dist/patterns/rest/path-parser.d.ts +50 -0
  284. package/dist/patterns/rest/path-parser.d.ts.map +1 -0
  285. package/dist/patterns/rest/path-parser.js +137 -0
  286. package/dist/patterns/rest/path-parser.js.map +1 -0
  287. package/dist/patterns/rest/response-inference.d.ts +44 -0
  288. package/dist/patterns/rest/response-inference.d.ts.map +1 -0
  289. package/dist/patterns/rest/response-inference.js +218 -0
  290. package/dist/patterns/rest/response-inference.js.map +1 -0
  291. package/dist/patterns/rest/types.d.ts +102 -0
  292. package/dist/patterns/rest/types.d.ts.map +1 -0
  293. package/dist/patterns/rest/types.js +10 -0
  294. package/dist/patterns/rest/types.js.map +1 -0
  295. package/dist/patterns/types.d.ts +105 -0
  296. package/dist/patterns/types.d.ts.map +1 -0
  297. package/dist/patterns/types.js +11 -0
  298. package/dist/patterns/types.js.map +1 -0
  299. package/dist/report/index.d.ts +11 -0
  300. package/dist/report/index.d.ts.map +1 -0
  301. package/dist/report/index.js +55 -0
  302. package/dist/report/index.js.map +1 -0
  303. package/dist/tools/contract-comments.d.ts +48 -0
  304. package/dist/tools/contract-comments.d.ts.map +1 -0
  305. package/dist/tools/contract-comments.js +130 -0
  306. package/dist/tools/contract-comments.js.map +1 -0
  307. package/dist/tools/index.d.ts +6 -0
  308. package/dist/tools/index.d.ts.map +1 -0
  309. package/dist/tools/index.js +6 -0
  310. package/dist/tools/index.js.map +1 -0
  311. package/dist/tools/scaffold.d.ts +38 -0
  312. package/dist/tools/scaffold.d.ts.map +1 -0
  313. package/dist/tools/scaffold.js +373 -0
  314. package/dist/tools/scaffold.js.map +1 -0
  315. package/dist/trace/index.d.ts +28 -0
  316. package/dist/trace/index.d.ts.map +1 -0
  317. package/dist/trace/index.js +45 -0
  318. package/dist/trace/index.js.map +1 -0
  319. package/dist/types.d.ts +135 -0
  320. package/dist/types.d.ts.map +1 -0
  321. package/dist/types.js +22 -0
  322. package/dist/types.js.map +1 -0
  323. package/dist/watch/cache.d.ts +41 -0
  324. package/dist/watch/cache.d.ts.map +1 -0
  325. package/dist/watch/cache.js +230 -0
  326. package/dist/watch/cache.js.map +1 -0
  327. package/dist/watch/index.d.ts +9 -0
  328. package/dist/watch/index.d.ts.map +1 -0
  329. package/dist/watch/index.js +7 -0
  330. package/dist/watch/index.js.map +1 -0
  331. package/dist/watch/project.d.ts +128 -0
  332. package/dist/watch/project.d.ts.map +1 -0
  333. package/dist/watch/project.js +152 -0
  334. package/dist/watch/project.js.map +1 -0
  335. package/dist/watch/watcher.d.ts +76 -0
  336. package/dist/watch/watcher.d.ts.map +1 -0
  337. package/dist/watch/watcher.js +235 -0
  338. package/dist/watch/watcher.js.map +1 -0
  339. package/package.json +70 -0
@@ -0,0 +1,272 @@
1
+ /**
2
+ * 🔷 TypeScript Language Parser
3
+ *
4
+ * Extracts MCP schemas from TypeScript source files using ts-morph.
5
+ * This is an enhanced parser that supports multiple extraction patterns
6
+ * for both producer schemas (tool definitions) and type definitions.
7
+ *
8
+ * Supported extraction patterns:
9
+ * 1. **server.tool()** - FastMCP / MCP SDK pattern
10
+ * 2. **Registry Pattern** - Object literal with ToolDefinition entries (ChatRPG)
11
+ * 3. **Exported Zod Schemas** - Named *Schema exports for tracing
12
+ * 4. **TypeScript Interfaces** - Exported interface declarations
13
+ * 5. **Type Aliases** - Exported type definitions
14
+ * 6. **Enums** - Exported enum declarations
15
+ *
16
+ * @module languages/typescript
17
+ *
18
+ * @example
19
+ * ```typescript
20
+ * import { TypeScriptParser } from './languages/typescript.js';
21
+ *
22
+ * const parser = new TypeScriptParser();
23
+ *
24
+ * // Extract tool definitions (Zod schemas)
25
+ * const producers = await parser.extractSchemas({ rootDir: './src' });
26
+ *
27
+ * // Extract interfaces and types
28
+ * const interfaces = await parser.extractInterfaces({ rootDir: './src' });
29
+ *
30
+ * // Extract all schemas
31
+ * const all = await parser.extractAll({ rootDir: './src' });
32
+ * ```
33
+ */
34
+ import type { LanguageParser, ExtractOptions, TraceOptions } from './base.js';
35
+ import type { ProducerSchema, ConsumerSchema } from '../types.js';
36
+ import type { NormalizedSchema } from '../core/types.js';
37
+ export declare class TypeScriptParser implements LanguageParser {
38
+ readonly name = "typescript";
39
+ readonly filePatterns: string[];
40
+ private zodSchemaCache;
41
+ extractSchemas(options: ExtractOptions): Promise<ProducerSchema[]>;
42
+ private findToolCalls;
43
+ private parseToolCall;
44
+ private extractFromRegistry;
45
+ private parseRegistryObject;
46
+ private parseToolDefinition;
47
+ /**
48
+ * Infer registry pattern from object shape
49
+ * Checks if object entries look like tool definitions
50
+ */
51
+ private inferRegistryFromShape;
52
+ /**
53
+ * Detect the shape of a tool definition from an object literal
54
+ */
55
+ private detectToolDefinitionShape;
56
+ /**
57
+ * Extract input schema from various formats
58
+ */
59
+ private extractInputSchema;
60
+ /**
61
+ * Parse a JSON Schema object literal
62
+ */
63
+ private parseJsonSchemaLiteral;
64
+ /**
65
+ * Collect all exported Zod schemas for cross-reference
66
+ */
67
+ private collectZodSchemas;
68
+ /**
69
+ * Extract tool definitions from exports
70
+ */
71
+ private extractFromExports;
72
+ private parseZodSchema;
73
+ private parseZodObjectContent;
74
+ private parseZodUnion;
75
+ private parseZodType;
76
+ /**
77
+ * Standard MCP tool output schema
78
+ */
79
+ private getMcpOutputSchema;
80
+ traceUsage(options: TraceOptions): Promise<ConsumerSchema[]>;
81
+ private traceFile;
82
+ private parseCallToolExpression;
83
+ private parseObjectLiteral;
84
+ private traceResultUsage;
85
+ private getPropertyChain;
86
+ /**
87
+ * Extract interfaces, type aliases, and enums from TypeScript files.
88
+ *
89
+ * Scans TypeScript source files and extracts all exported type definitions,
90
+ * converting them to NormalizedSchema format for schema comparison.
91
+ *
92
+ * Supports extraction of:
93
+ * - **Interfaces** - Including inherited properties from extends
94
+ * - **Type Aliases** - Object types, unions, intersections, Records
95
+ * - **Enums** - Both const and regular enums
96
+ *
97
+ * @param options - Extraction options specifying root directory and file patterns
98
+ * @param options.rootDir - Root directory to search for TypeScript files
99
+ * @param options.include - Optional glob patterns to include (default: `['*.ts', '*.tsx']`)
100
+ * @param options.exclude - Optional glob patterns to exclude (default: excludes node_modules and dist)
101
+ * @returns Promise resolving to array of NormalizedSchema for all exported declarations
102
+ *
103
+ * @example
104
+ * ```typescript
105
+ * const parser = new TypeScriptParser();
106
+ * const schemas = await parser.extractInterfaces({
107
+ * rootDir: './src/types',
108
+ * include: ['*.ts'],
109
+ * exclude: ['*.test.ts']
110
+ * });
111
+ *
112
+ * // schemas[0] = {
113
+ * // name: 'UserProfile',
114
+ * // properties: { id: {...}, name: {...} },
115
+ * // required: ['id', 'name'],
116
+ * // source: { source: 'typescript', id: 'interface:UserProfile@...' },
117
+ * // location: { file: '...', line: 10 }
118
+ * // }
119
+ * ```
120
+ */
121
+ extractInterfaces(options: ExtractOptions): Promise<NormalizedSchema[]>;
122
+ /**
123
+ * Extract all schemas from TypeScript files.
124
+ *
125
+ * Comprehensive extraction that combines interface/type extraction.
126
+ * This is the recommended entry point for extracting TypeScript type
127
+ * definitions for schema comparison workflows.
128
+ *
129
+ * @param options - Extraction options specifying root directory and file patterns
130
+ * @param options.rootDir - Root directory to search for TypeScript files
131
+ * @param options.include - Optional glob patterns to include
132
+ * @param options.exclude - Optional glob patterns to exclude
133
+ * @returns Promise resolving to array of NormalizedSchema
134
+ *
135
+ * @remarks
136
+ * Currently returns interface/type/enum schemas only.
137
+ * Future enhancement: Convert ProducerSchema to NormalizedSchema
138
+ * for Zod schema inclusion.
139
+ *
140
+ * @example
141
+ * ```typescript
142
+ * const parser = new TypeScriptParser();
143
+ * const schemas = await parser.extractAll({ rootDir: './src' });
144
+ *
145
+ * // Returns all exported interfaces, type aliases, and enums
146
+ * console.log(`Found ${schemas.length} type definitions`);
147
+ * ```
148
+ */
149
+ extractAll(options: ExtractOptions): Promise<NormalizedSchema[]>;
150
+ /**
151
+ * Convert a TypeScript interface declaration to NormalizedSchema.
152
+ *
153
+ * Handles all interface features:
154
+ * - Direct properties with type annotations
155
+ * - Inherited properties from extends clauses
156
+ * - Optional properties (marked with ?)
157
+ * - Readonly properties
158
+ * - Nullable types (T | null)
159
+ * - JSDoc descriptions and @deprecated tags
160
+ *
161
+ * @param iface - The ts-morph InterfaceDeclaration to convert
162
+ * @param filePath - Path to the source file for location tracking
163
+ * @returns NormalizedSchema representation of the interface
164
+ */
165
+ private convertInterfaceToSchema;
166
+ /**
167
+ * Get all properties from an interface, including inherited ones.
168
+ *
169
+ * Uses ts-morph's type resolution to flatten the property list,
170
+ * ensuring all properties from extended interfaces are included.
171
+ *
172
+ * @param iface - The interface declaration
173
+ * @returns Array of ts-morph Symbol objects representing all properties
174
+ */
175
+ private getInterfaceProperties;
176
+ /**
177
+ * Convert a TypeScript type alias to NormalizedSchema.
178
+ *
179
+ * Handles various type alias patterns:
180
+ * - Object types: `type Foo = { bar: string }`
181
+ * - Intersection types: `type Foo = A & B`
182
+ * - Record types: `type Dict = Record<string, T>`
183
+ * - Union types: `type Status = 'active' | 'inactive'`
184
+ *
185
+ * @param typeAlias - The ts-morph TypeAliasDeclaration to convert
186
+ * @param filePath - Path to the source file for location tracking
187
+ * @returns NormalizedSchema representation of the type alias
188
+ */
189
+ private convertTypeAliasToSchema;
190
+ /**
191
+ * Extract properties from a ts-morph Type object.
192
+ *
193
+ * Helper method for extracting property definitions from resolved types.
194
+ * Used by both interface and type alias conversion to handle object types.
195
+ *
196
+ * @param type - The ts-morph Type to extract properties from
197
+ * @param properties - Output record to populate with PropertyDef entries
198
+ * @param required - Output array to populate with required property names
199
+ */
200
+ private extractPropertiesFromType;
201
+ /**
202
+ * Convert a TypeScript enum to NormalizedSchema.
203
+ *
204
+ * Enums are represented as schemas with empty properties,
205
+ * since they don't have traditional object properties.
206
+ * The enum values are not currently extracted to the schema.
207
+ *
208
+ * @param enumDecl - The ts-morph EnumDeclaration to convert
209
+ * @param filePath - Path to the source file for location tracking
210
+ * @returns NormalizedSchema representation of the enum
211
+ *
212
+ * @remarks
213
+ * Future enhancement: Include enum members as values or properties.
214
+ */
215
+ private convertEnumToSchema;
216
+ /**
217
+ * Analyze nullability of a TypeScript type.
218
+ *
219
+ * Examines union types to determine if they include null or undefined,
220
+ * and extracts the "base" type after removing null/undefined.
221
+ *
222
+ * @param type - The ts-morph Type to analyze
223
+ * @returns Object containing:
224
+ * - `baseType`: The type with null/undefined removed
225
+ * - `isNullable`: True if type includes `| null`
226
+ * - `hasUndefined`: True if type includes `| undefined`
227
+ *
228
+ * @example
229
+ * ```typescript
230
+ * // For type: string | null | undefined
231
+ * // Returns: { baseType: string, isNullable: true, hasUndefined: true }
232
+ * ```
233
+ */
234
+ private analyzeNullability;
235
+ /**
236
+ * Convert a ts-morph Type to NormalizedType.
237
+ *
238
+ * Recursively converts TypeScript types to the normalized type system:
239
+ * - Primitives: string, number, boolean, null
240
+ * - Literals: 'active', 42, true
241
+ * - Arrays: `string[]`, `Array<T>`
242
+ * - Tuples: `[string, number]`
243
+ * - Unions: `string | number`
244
+ * - Intersections: `A & B`
245
+ * - Objects: `{ foo: string }`
246
+ * - References: named interfaces
247
+ *
248
+ * @param type - The ts-morph Type to convert
249
+ * @param visitingTypes - Set of type names currently being visited (for cycle detection)
250
+ * @returns NormalizedType representation
251
+ */
252
+ private convertTypeToNormalized;
253
+ /**
254
+ * Check if a property declaration is readonly.
255
+ *
256
+ * @param decl - The property declaration node
257
+ * @returns True if the property has the readonly modifier
258
+ */
259
+ private isPropertyReadonly;
260
+ /**
261
+ * Extract JSDoc information from a declaration.
262
+ *
263
+ * Parses JSDoc comments to extract:
264
+ * - Description text
265
+ * - @deprecated tag presence
266
+ *
267
+ * @param decl - The declaration node to extract JSDoc from
268
+ * @returns Object with description and deprecated flag
269
+ */
270
+ private getJSDocInfo;
271
+ }
272
+ //# sourceMappingURL=typescript.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"typescript.d.ts","sourceRoot":"","sources":["../../src/languages/typescript.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AAGH,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAC9E,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAA8B,MAAM,aAAa,CAAC;AAC9F,OAAO,KAAK,EAAE,gBAAgB,EAA0C,MAAM,kBAAkB,CAAC;AA0DjG,qBAAa,gBAAiB,YAAW,cAAc;IACrD,QAAQ,CAAC,IAAI,gBAAgB;IAC7B,QAAQ,CAAC,YAAY,WAA2B;IAGhD,OAAO,CAAC,cAAc,CAA4E;IAM5F,cAAc,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IAgExE,OAAO,CAAC,aAAa;IAmBrB,OAAO,CAAC,aAAa;IAgDrB,OAAO,CAAC,mBAAmB;IAoC3B,OAAO,CAAC,mBAAmB;IA4B3B,OAAO,CAAC,mBAAmB;IAkD3B;;;OAGG;IACH,OAAO,CAAC,sBAAsB;IA+C9B;;OAEG;IACH,OAAO,CAAC,yBAAyB;IA4BjC;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAkD1B;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAoD9B;;OAEG;IACH,OAAO,CAAC,iBAAiB;IA6BzB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IA0C1B,OAAO,CAAC,cAAc;IAiCtB,OAAO,CAAC,qBAAqB;IA2B7B,OAAO,CAAC,aAAa;IAmBrB,OAAO,CAAC,YAAY;IA+EpB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAsBpB,UAAU,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IAmClE,OAAO,CAAC,SAAS;IA0BjB,OAAO,CAAC,uBAAuB;IAoD/B,OAAO,CAAC,kBAAkB;IAoB1B,OAAO,CAAC,gBAAgB;IA2BxB,OAAO,CAAC,gBAAgB;IAgBxB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAkCG;IACG,iBAAiB,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAuD7E;;;;;;;;;;;;;;;;;;;;;;;;;;OA0BG;IACG,UAAU,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAetE;;;;;;;;;;;;;;OAcG;IACH,OAAO,CAAC,wBAAwB;IA0DhC;;;;;;;;OAQG;IACH,OAAO,CAAC,sBAAsB;IAS9B;;;;;;;;;;;;OAYG;IACH,OAAO,CAAC,wBAAwB;IAkDhC;;;;;;;;;OASG;IACH,OAAO,CAAC,yBAAyB;IAyCjC;;;;;;;;;;;;;OAaG;IACH,OAAO,CAAC,mBAAmB;IAyB3B;;;;;;;;;;;;;;;;;OAiBG;IACH,OAAO,CAAC,kBAAkB;IA4B1B;;;;;;;;;;;;;;;;OAgBG;IACH,OAAO,CAAC,uBAAuB;IAiK/B;;;;;OAKG;IACH,OAAO,CAAC,kBAAkB;IAU1B;;;;;;;;;OASG;IACH,OAAO,CAAC,YAAY;CA0BrB"}