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 @@
1
+ {"version":3,"file":"property-access.js","sourceRoot":"","sources":["../../../src/patterns/http-clients/property-access.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,48 @@
1
+ /**
2
+ * Type Inference Utilities
3
+ *
4
+ * Find and prioritize type inference sources for HTTP client responses.
5
+ * This enables schema inference from consumer code patterns.
6
+ *
7
+ * @module patterns/http-clients/type-inference
8
+ * @see .context/ADR-P2-3-HTTP-CLIENT-TRACING.md
9
+ */
10
+ import { Node } from 'ts-morph';
11
+ import type { TypeInferenceSource } from './types.js';
12
+ /**
13
+ * Find all type inference sources for a call expression.
14
+ *
15
+ * Priority order (highest to lowest):
16
+ * 1. Generic type parameters: `axios.get<User>()`
17
+ * 2. Variable annotation: `const user: User = await fetch()`
18
+ * 3. Cast expression: `fetch() as User`
19
+ * 4. Return type: in function context
20
+ * 5. Property access: inferring from `response.user.name`
21
+ *
22
+ * @param callNode - The call expression node
23
+ * @returns Array of type inference sources, sorted by priority
24
+ *
25
+ * @example
26
+ * ```typescript
27
+ * const sources = findTypeInferenceSources(axiosCall);
28
+ * // [{ method: 'generic-param', typeText: 'User', confidence: 'high' }]
29
+ * ```
30
+ */
31
+ export declare function findTypeInferenceSources(callNode: Node): TypeInferenceSource[];
32
+ /**
33
+ * Get the best type text from inference sources.
34
+ *
35
+ * Returns the highest confidence type, or undefined if none found.
36
+ *
37
+ * @param sources - Type inference sources to select from
38
+ * @returns Best type text or undefined
39
+ *
40
+ * @example
41
+ * ```typescript
42
+ * const sources = findTypeInferenceSources(call);
43
+ * const bestType = getBestInferredType(sources);
44
+ * // 'User' (from highest confidence source)
45
+ * ```
46
+ */
47
+ export declare function getBestInferredType(sources: TypeInferenceSource[]): string | undefined;
48
+ //# sourceMappingURL=type-inference.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"type-inference.d.ts","sourceRoot":"","sources":["../../../src/patterns/http-clients/type-inference.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,IAAI,EAAc,MAAM,UAAU,CAAC;AAC5C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAMtD;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,IAAI,GAAG,mBAAmB,EAAE,CA2C9E;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,mBAAmB,EAAE,GAAG,MAAM,GAAG,SAAS,CAKtF"}
@@ -0,0 +1,293 @@
1
+ /**
2
+ * Type Inference Utilities
3
+ *
4
+ * Find and prioritize type inference sources for HTTP client responses.
5
+ * This enables schema inference from consumer code patterns.
6
+ *
7
+ * @module patterns/http-clients/type-inference
8
+ * @see .context/ADR-P2-3-HTTP-CLIENT-TRACING.md
9
+ */
10
+ import { Node, SyntaxKind } from 'ts-morph';
11
+ /* ═══════════════════════════════════════════════════════════════════════════
12
+ * 🔍 Public API
13
+ * ═══════════════════════════════════════════════════════════════════════════ */
14
+ /**
15
+ * Find all type inference sources for a call expression.
16
+ *
17
+ * Priority order (highest to lowest):
18
+ * 1. Generic type parameters: `axios.get<User>()`
19
+ * 2. Variable annotation: `const user: User = await fetch()`
20
+ * 3. Cast expression: `fetch() as User`
21
+ * 4. Return type: in function context
22
+ * 5. Property access: inferring from `response.user.name`
23
+ *
24
+ * @param callNode - The call expression node
25
+ * @returns Array of type inference sources, sorted by priority
26
+ *
27
+ * @example
28
+ * ```typescript
29
+ * const sources = findTypeInferenceSources(axiosCall);
30
+ * // [{ method: 'generic-param', typeText: 'User', confidence: 'high' }]
31
+ * ```
32
+ */
33
+ export function findTypeInferenceSources(callNode) {
34
+ const sources = [];
35
+ if (!Node.isCallExpression(callNode)) {
36
+ return sources;
37
+ }
38
+ // 1. Check for generic type arguments on the call
39
+ const typeArgs = callNode.getTypeArguments();
40
+ if (typeArgs.length > 0) {
41
+ for (const typeArg of typeArgs) {
42
+ sources.push({
43
+ method: 'generic-param',
44
+ typeText: typeArg.getText(),
45
+ confidence: 'high',
46
+ node: typeArg,
47
+ });
48
+ }
49
+ }
50
+ // 2. Check parent context for variable annotations
51
+ const variableAnnotation = findVariableAnnotation(callNode);
52
+ if (variableAnnotation) {
53
+ sources.push(variableAnnotation);
54
+ }
55
+ // 3. Check for cast expressions (as Type or <Type>)
56
+ const castSource = findCastExpression(callNode);
57
+ if (castSource) {
58
+ sources.push(castSource);
59
+ }
60
+ // 4. Check function return type context
61
+ const returnTypeSource = findReturnTypeContext(callNode);
62
+ if (returnTypeSource) {
63
+ sources.push(returnTypeSource);
64
+ }
65
+ // Sort by confidence (high > medium > low)
66
+ const confidenceOrder = { high: 0, medium: 1, low: 2 };
67
+ sources.sort((a, b) => confidenceOrder[a.confidence] - confidenceOrder[b.confidence]);
68
+ return sources;
69
+ }
70
+ /**
71
+ * Get the best type text from inference sources.
72
+ *
73
+ * Returns the highest confidence type, or undefined if none found.
74
+ *
75
+ * @param sources - Type inference sources to select from
76
+ * @returns Best type text or undefined
77
+ *
78
+ * @example
79
+ * ```typescript
80
+ * const sources = findTypeInferenceSources(call);
81
+ * const bestType = getBestInferredType(sources);
82
+ * // 'User' (from highest confidence source)
83
+ * ```
84
+ */
85
+ export function getBestInferredType(sources) {
86
+ if (sources.length === 0)
87
+ return undefined;
88
+ // Sources should already be sorted by confidence
89
+ return sources[0].typeText;
90
+ }
91
+ /* ═══════════════════════════════════════════════════════════════════════════
92
+ * 📋 Variable Annotation Detection
93
+ * ═══════════════════════════════════════════════════════════════════════════ */
94
+ /**
95
+ * Find variable annotation for a call expression.
96
+ *
97
+ * Handles: `const user: User = await fetch()`
98
+ *
99
+ * @internal
100
+ */
101
+ function findVariableAnnotation(callNode) {
102
+ // Walk up to find variable declaration
103
+ let current = callNode;
104
+ while (current) {
105
+ const parent = current.getParent();
106
+ if (!parent)
107
+ break;
108
+ // Check for variable declaration
109
+ if (Node.isVariableDeclaration(parent)) {
110
+ const typeNode = parent.getTypeNode();
111
+ if (typeNode) {
112
+ return {
113
+ method: 'variable-annotation',
114
+ typeText: typeNode.getText(),
115
+ confidence: 'high',
116
+ node: typeNode,
117
+ };
118
+ }
119
+ break;
120
+ }
121
+ // Skip await expressions and parenthesized expressions
122
+ if (Node.isAwaitExpression(parent) || Node.isParenthesizedExpression(parent)) {
123
+ current = parent;
124
+ continue;
125
+ }
126
+ // Handle chained calls (fetch().then())
127
+ if (Node.isCallExpression(parent)) {
128
+ const expr = parent.getExpression();
129
+ if (Node.isPropertyAccessExpression(expr)) {
130
+ const propName = expr.getName();
131
+ if (propName === 'then' || propName === 'json') {
132
+ // Check the callback's return type in .then()
133
+ if (propName === 'then') {
134
+ const args = parent.getArguments();
135
+ if (args.length > 0) {
136
+ const callback = args[0];
137
+ if (Node.isArrowFunction(callback) || Node.isFunctionExpression(callback)) {
138
+ const returnType = callback.getReturnType();
139
+ const returnTypeText = returnType.getText();
140
+ if (returnTypeText && returnTypeText !== 'void' && returnTypeText !== 'unknown') {
141
+ return {
142
+ method: 'return-type',
143
+ typeText: returnTypeText,
144
+ confidence: 'medium',
145
+ node: callback,
146
+ };
147
+ }
148
+ }
149
+ }
150
+ }
151
+ current = parent;
152
+ continue;
153
+ }
154
+ }
155
+ }
156
+ break;
157
+ }
158
+ return undefined;
159
+ }
160
+ /* ═══════════════════════════════════════════════════════════════════════════
161
+ * 🎯 Cast Expression Detection
162
+ * ═══════════════════════════════════════════════════════════════════════════ */
163
+ /**
164
+ * Find cast expressions for a call result.
165
+ *
166
+ * Handles:
167
+ * - `fetch() as User`
168
+ * - `<User>fetch()`
169
+ *
170
+ * @internal
171
+ */
172
+ function findCastExpression(callNode) {
173
+ const parent = callNode.getParent();
174
+ if (!parent)
175
+ return undefined;
176
+ // TypeScript "as" assertion: expr as Type
177
+ if (Node.isAsExpression(parent)) {
178
+ const typeNode = parent.getTypeNode();
179
+ if (typeNode) {
180
+ return {
181
+ method: 'cast-expression',
182
+ typeText: typeNode.getText(),
183
+ confidence: 'high', // Type assertions are explicit - high confidence
184
+ node: typeNode,
185
+ };
186
+ }
187
+ }
188
+ // TypeScript angle bracket assertion: <Type>expr
189
+ if (Node.isTypeAssertion(parent)) {
190
+ const typeNode = parent.getTypeNode();
191
+ if (typeNode) {
192
+ return {
193
+ method: 'cast-expression',
194
+ typeText: typeNode.getText(),
195
+ confidence: 'high', // Type assertions are explicit - high confidence
196
+ node: typeNode,
197
+ };
198
+ }
199
+ }
200
+ // Check if the call is wrapped in an await that's then cast
201
+ if (Node.isAwaitExpression(parent)) {
202
+ const awaitParent = parent.getParent();
203
+ if (awaitParent && Node.isAsExpression(awaitParent)) {
204
+ const typeNode = awaitParent.getTypeNode();
205
+ if (typeNode) {
206
+ return {
207
+ method: 'cast-expression',
208
+ typeText: typeNode.getText(),
209
+ confidence: 'high', // Type assertions are explicit - high confidence
210
+ node: typeNode,
211
+ };
212
+ }
213
+ }
214
+ }
215
+ return undefined;
216
+ }
217
+ /* ═══════════════════════════════════════════════════════════════════════════
218
+ * ↩️ Return Type Context Detection
219
+ * ═══════════════════════════════════════════════════════════════════════════ */
220
+ /**
221
+ * Find return type context for a call expression.
222
+ *
223
+ * Handles: `function getUser(): User { return fetch() }`
224
+ *
225
+ * @internal
226
+ */
227
+ function findReturnTypeContext(callNode) {
228
+ // Walk up to find return statement or arrow function body
229
+ let current = callNode;
230
+ while (current) {
231
+ const parent = current.getParent();
232
+ if (!parent)
233
+ break;
234
+ // Check for return statement
235
+ if (Node.isReturnStatement(parent)) {
236
+ // Find the containing function
237
+ const containingFunc = parent.getFirstAncestorByKind(SyntaxKind.FunctionDeclaration) ||
238
+ parent.getFirstAncestorByKind(SyntaxKind.FunctionExpression) ||
239
+ parent.getFirstAncestorByKind(SyntaxKind.ArrowFunction) ||
240
+ parent.getFirstAncestorByKind(SyntaxKind.MethodDeclaration);
241
+ if (containingFunc) {
242
+ const returnTypeNode = containingFunc.getReturnTypeNode?.() ||
243
+ (Node.isArrowFunction(containingFunc) ? containingFunc.getReturnTypeNode() : undefined);
244
+ if (returnTypeNode) {
245
+ let typeText = returnTypeNode.getText();
246
+ // Unwrap Promise<T> to T
247
+ const promiseMatch = typeText.match(/^Promise<(.+)>$/);
248
+ if (promiseMatch) {
249
+ typeText = promiseMatch[1];
250
+ }
251
+ return {
252
+ method: 'return-type',
253
+ typeText,
254
+ confidence: 'medium',
255
+ node: returnTypeNode,
256
+ };
257
+ }
258
+ }
259
+ break;
260
+ }
261
+ // Check for arrow function with expression body (implicit return)
262
+ if (Node.isArrowFunction(parent)) {
263
+ const body = parent.getBody();
264
+ // If the body is the call expression itself (expression body)
265
+ if (body === current || (Node.isAwaitExpression(body) && body.getExpression() === current)) {
266
+ const returnTypeNode = parent.getReturnTypeNode();
267
+ if (returnTypeNode) {
268
+ let typeText = returnTypeNode.getText();
269
+ // Unwrap Promise<T> to T
270
+ const promiseMatch = typeText.match(/^Promise<(.+)>$/);
271
+ if (promiseMatch) {
272
+ typeText = promiseMatch[1];
273
+ }
274
+ return {
275
+ method: 'return-type',
276
+ typeText,
277
+ confidence: 'medium',
278
+ node: returnTypeNode,
279
+ };
280
+ }
281
+ }
282
+ break;
283
+ }
284
+ // Continue walking up for parentheses and await
285
+ if (Node.isParenthesizedExpression(parent) || Node.isAwaitExpression(parent)) {
286
+ current = parent;
287
+ continue;
288
+ }
289
+ break;
290
+ }
291
+ return undefined;
292
+ }
293
+ //# sourceMappingURL=type-inference.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"type-inference.js","sourceRoot":"","sources":["../../../src/patterns/http-clients/type-inference.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,168 @@
1
+ /**
2
+ * HTTP Client Tracing Types
3
+ *
4
+ * Type definitions for HTTP client pattern matching (fetch, axios).
5
+ *
6
+ * @module patterns/http-clients/types
7
+ * @see .context/ADR-P2-3-HTTP-CLIENT-TRACING.md
8
+ */
9
+ import type { Node } from 'ts-morph';
10
+ import type { SourceLocation } from '../../core/types.js';
11
+ /**
12
+ * HTTP methods supported for tracing
13
+ */
14
+ export type HTTPMethod = 'GET' | 'POST' | 'PUT' | 'DELETE' | 'PATCH' | 'HEAD' | 'OPTIONS';
15
+ /**
16
+ * URL extraction result structure.
17
+ *
18
+ * @example
19
+ * ```typescript
20
+ * // Static URL
21
+ * { raw: '/api/users', static: '/api/users', isDynamic: false }
22
+ *
23
+ * // Dynamic URL with template literal
24
+ * { raw: '/api/users/${id}', pattern: '/api/users/:id', isDynamic: true, pathParams: ['id'] }
25
+ * ```
26
+ */
27
+ export interface URLExtractionResult {
28
+ /** Raw URL string or pattern as written in code */
29
+ raw: string;
30
+ /** Static URL if not dynamic (no template substitutions) */
31
+ static?: string;
32
+ /** Whether the URL contains dynamic parts */
33
+ isDynamic: boolean;
34
+ /** URL pattern with :param placeholders for OpenAPI compatibility */
35
+ pattern?: string;
36
+ /** Extracted path parameters (e.g., ['userId', 'postId']) */
37
+ pathParams?: string[];
38
+ /** Extracted query parameters (e.g., ['page', 'limit']) */
39
+ queryParams?: string[];
40
+ /** Base URL if present (from axios instance or config) */
41
+ baseURL?: string;
42
+ }
43
+ /**
44
+ * Type inference source information.
45
+ *
46
+ * Tracks how a response type was inferred, enabling confidence-based
47
+ * selection when multiple inference sources are available.
48
+ *
49
+ * @example
50
+ * ```typescript
51
+ * // High confidence: generic parameter
52
+ * { method: 'generic-param', typeText: 'User', confidence: 'high' }
53
+ *
54
+ * // Medium confidence: variable annotation
55
+ * { method: 'variable-annotation', typeText: 'User[]', confidence: 'high' }
56
+ * ```
57
+ */
58
+ export interface TypeInferenceSource {
59
+ /** How the type was inferred */
60
+ method: 'generic-param' | 'variable-annotation' | 'cast-expression' | 'return-type' | 'property-access' | 'unknown';
61
+ /** Text representation of the type */
62
+ typeText?: string;
63
+ /** Confidence level for prioritization */
64
+ confidence: 'high' | 'medium' | 'low';
65
+ /** AST node where type was found (for location reporting) */
66
+ node?: Node;
67
+ }
68
+ /**
69
+ * Property access information.
70
+ *
71
+ * Tracks properties accessed on HTTP response data for schema inference.
72
+ *
73
+ * @example
74
+ * ```typescript
75
+ * // response.data.user.name → { path: 'data.user.name', segments: ['data', 'user', 'name'] }
76
+ * ```
77
+ */
78
+ export interface PropertyAccess {
79
+ /** Full property path (e.g., "user.profile.name") */
80
+ path: string;
81
+ /** Individual segments of the path */
82
+ segments: string[];
83
+ /** Source location for debugging */
84
+ location?: {
85
+ file: string;
86
+ line: number;
87
+ };
88
+ }
89
+ /**
90
+ * Request headers information.
91
+ *
92
+ * Separates static (known at analysis time) from dynamic headers.
93
+ */
94
+ export interface HeadersInfo {
95
+ /** Static headers with known values (e.g., Content-Type) */
96
+ static?: Record<string, string>;
97
+ /** Headers with dynamic values (resolved at runtime) */
98
+ dynamic?: string[];
99
+ }
100
+ /**
101
+ * HTTP client usage captures - extends MatchCaptures.
102
+ *
103
+ * Comprehensive capture of all information extracted from an HTTP client call.
104
+ */
105
+ export interface HTTPClientCaptures {
106
+ /** HTTP method (GET, POST, etc.) */
107
+ httpMethod?: HTTPMethod;
108
+ /** URL information */
109
+ url?: URLExtractionResult;
110
+ /** Request body type/value */
111
+ requestBody?: unknown;
112
+ /** Request headers */
113
+ requestHeaders?: HeadersInfo;
114
+ /** Type inference sources for response */
115
+ typeInference?: TypeInferenceSource[];
116
+ /** Property accesses on response (for schema inference) */
117
+ propertyAccesses?: PropertyAccess[];
118
+ /** Client library identifier */
119
+ clientLibrary?: 'fetch' | 'axios';
120
+ /** Axios instance name (if using axios.create()) */
121
+ axiosInstance?: string;
122
+ }
123
+ /**
124
+ * Consumer usage schema for HTTP clients.
125
+ *
126
+ * Normalized representation of an HTTP client call for schema comparison.
127
+ */
128
+ export interface ConsumerUsage {
129
+ /** Full URL pattern */
130
+ url: string;
131
+ /** HTTP method */
132
+ method: HTTPMethod;
133
+ /** Expected response type (if inferred) */
134
+ expectedResponse?: unknown;
135
+ /** Request body type (if present) */
136
+ requestBody?: unknown;
137
+ /** Request headers */
138
+ requestHeaders?: Record<string, string>;
139
+ /** Property accesses observed on response */
140
+ accessedProperties: PropertyAccess[];
141
+ /** Source location */
142
+ location: SourceLocation;
143
+ }
144
+ /**
145
+ * Axios instance configuration.
146
+ *
147
+ * Captured from axios.create() calls for baseURL composition.
148
+ *
149
+ * @example
150
+ * ```typescript
151
+ * const api = axios.create({
152
+ * baseURL: 'https://api.example.com',
153
+ * timeout: 5000,
154
+ * });
155
+ * // Captures: { name: 'api', baseURL: 'https://api.example.com', timeout: 5000 }
156
+ * ```
157
+ */
158
+ export interface AxiosInstanceConfig {
159
+ /** Instance variable name */
160
+ name: string;
161
+ /** Base URL configured */
162
+ baseURL?: string;
163
+ /** Default headers */
164
+ headers?: Record<string, string>;
165
+ /** Default timeout */
166
+ timeout?: number;
167
+ }
168
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/patterns/http-clients/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * HTTP Client Tracing Types
3
+ *
4
+ * Type definitions for HTTP client pattern matching (fetch, axios).
5
+ *
6
+ * @module patterns/http-clients/types
7
+ * @see .context/ADR-P2-3-HTTP-CLIENT-TRACING.md
8
+ */
9
+ export {};
10
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/patterns/http-clients/types.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG"}
@@ -0,0 +1,53 @@
1
+ /**
2
+ * URL Extraction Utilities
3
+ *
4
+ * Extract URL information from AST nodes for HTTP client calls.
5
+ * Handles static strings, template literals, variable references,
6
+ * and string concatenation.
7
+ *
8
+ * @module patterns/http-clients/url-extractor
9
+ * @see .context/ADR-P2-3-HTTP-CLIENT-TRACING.md
10
+ */
11
+ import { Node } from 'ts-morph';
12
+ import type { URLExtractionResult } from './types.js';
13
+ /**
14
+ * Extract URL information from an AST node.
15
+ *
16
+ * Handles:
17
+ * - String literals: `'/api/users'`
18
+ * - Template literals: `` `/api/users/${id}` ``
19
+ * - Variable references: `API_URL`
20
+ * - Concatenation: `baseUrl + '/users'`
21
+ *
22
+ * @param node - The AST node to extract URL from
23
+ * @returns URLExtractionResult or undefined if not extractable
24
+ *
25
+ * @example
26
+ * ```typescript
27
+ * const urlNode = callExpr.getArguments()[0];
28
+ * const result = extractURL(urlNode);
29
+ * // { raw: '/api/users', static: '/api/users', isDynamic: false }
30
+ * ```
31
+ */
32
+ export declare function extractURL(node: Node): URLExtractionResult | undefined;
33
+ /**
34
+ * Compose a baseURL with a path.
35
+ *
36
+ * Handles:
37
+ * - Trailing slashes in baseURL
38
+ * - Missing leading slashes in path
39
+ * - Full URL baseURLs
40
+ *
41
+ * @param baseURL - Base URL (e.g., '/api' or 'https://api.example.com')
42
+ * @param path - Path to append (e.g., '/users' or 'users')
43
+ * @returns Composed URL
44
+ *
45
+ * @example
46
+ * ```typescript
47
+ * composeURL('/api', '/users') // '/api/users'
48
+ * composeURL('/api/', 'users') // '/api/users'
49
+ * composeURL('https://api.com', '/users') // 'https://api.com/users'
50
+ * ```
51
+ */
52
+ export declare function composeURL(baseURL: string, path: string): string;
53
+ //# sourceMappingURL=url-extractor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"url-extractor.d.ts","sourceRoot":"","sources":["../../../src/patterns/http-clients/url-extractor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,IAAI,EAAc,MAAM,UAAU,CAAC;AAC5C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAMtD;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,IAAI,GAAG,mBAAmB,GAAG,SAAS,CAgDtE;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAQhE"}