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":"aiohttp.js","sourceRoot":"","sources":["../../../src/patterns/python/aiohttp.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Python httpx library HTTP client detection
3
+ *
4
+ * Detects calls to the httpx library:
5
+ * - httpx.get(), httpx.post(), etc. (sync)
6
+ * - client.get(), client.post() with Client instances
7
+ * - AsyncClient for async operations
8
+ *
9
+ * @see .context/TASK_MAP_P3.md - Task P3-4
10
+ */
11
+ import type { PythonHttpCall } from './types.js';
12
+ /**
13
+ * Detect HTTP calls from the httpx library in Python source code
14
+ */
15
+ export declare function detectHttpxCalls(content: string): PythonHttpCall[];
16
+ /**
17
+ * Get the response properties that httpx library supports
18
+ */
19
+ export declare function getHttpxResponseProperties(): string[];
20
+ //# sourceMappingURL=httpx.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"httpx.d.ts","sourceRoot":"","sources":["../../../src/patterns/python/httpx.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EACV,cAAc,EAGf,MAAM,YAAY,CAAC;AAUpB;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,cAAc,EAAE,CA2FlE;AAsGD;;GAEG;AACH,wBAAgB,0BAA0B,IAAI,MAAM,EAAE,CAErD"}
@@ -0,0 +1,183 @@
1
+ /**
2
+ * Python httpx library HTTP client detection
3
+ *
4
+ * Detects calls to the httpx library:
5
+ * - httpx.get(), httpx.post(), etc. (sync)
6
+ * - client.get(), client.post() with Client instances
7
+ * - AsyncClient for async operations
8
+ *
9
+ * @see .context/TASK_MAP_P3.md - Task P3-4
10
+ */
11
+ import { HTTP_CLIENT_PATTERNS, normalizeHttpMethod } from './types.js';
12
+ const HTTPX_PATTERN = HTTP_CLIENT_PATTERNS.httpx;
13
+ /**
14
+ * Track known client variable names
15
+ */
16
+ const clientVars = new Map();
17
+ /**
18
+ * Detect HTTP calls from the httpx library in Python source code
19
+ */
20
+ export function detectHttpxCalls(content) {
21
+ const calls = [];
22
+ const lines = content.split('\n');
23
+ // First pass: detect imports
24
+ const hasHttpxImport = /^\s*import\s+httpx\b/m.test(content) ||
25
+ /^\s*from\s+httpx\s+import\s+/.test(content);
26
+ if (!hasHttpxImport) {
27
+ return [];
28
+ }
29
+ // Second pass: find client variables
30
+ clientVars.clear();
31
+ // Match: client = httpx.Client()
32
+ const clientCreateRegex = /\b(\w+)\s*=\s*(?:httpx\.)?Client\s*\(/g;
33
+ let match;
34
+ while ((match = clientCreateRegex.exec(content)) !== null) {
35
+ clientVars.set(match[1], { isAsync: false });
36
+ }
37
+ // Match: client = httpx.AsyncClient()
38
+ const asyncClientCreateRegex = /\b(\w+)\s*=\s*(?:httpx\.)?AsyncClient\s*\(/g;
39
+ while ((match = asyncClientCreateRegex.exec(content)) !== null) {
40
+ clientVars.set(match[1], { isAsync: true });
41
+ }
42
+ // Match: with httpx.Client() as client:
43
+ const withClientRegex = /with\s+(?:httpx\.)?Client\s*\([^)]*\)\s+as\s+(\w+)/g;
44
+ while ((match = withClientRegex.exec(content)) !== null) {
45
+ clientVars.set(match[1], { isAsync: false });
46
+ }
47
+ // Match: async with httpx.AsyncClient() as client:
48
+ const asyncWithClientRegex = /async\s+with\s+(?:httpx\.)?AsyncClient\s*\([^)]*\)\s+as\s+(\w+)/g;
49
+ while ((match = asyncWithClientRegex.exec(content)) !== null) {
50
+ clientVars.set(match[1], { isAsync: true });
51
+ }
52
+ // Third pass: detect HTTP calls line by line
53
+ for (let i = 0; i < lines.length; i++) {
54
+ const line = lines[i];
55
+ const lineNum = i + 1;
56
+ // Detect direct httpx.method() calls
57
+ const directCallRegex = /\bhttpx\.(get|post|put|patch|delete|head|options|request)\s*\(/gi;
58
+ while ((match = directCallRegex.exec(line)) !== null) {
59
+ const method = normalizeHttpMethod(match[1]);
60
+ if (method) {
61
+ const call = createHttpCall(method, 'httpx', line, lineNum, match.index);
62
+ call.isClient = false;
63
+ call.isAsyncClient = false;
64
+ call.isAsync = false;
65
+ calls.push(call);
66
+ }
67
+ }
68
+ // Detect await httpx.AsyncClient().method() inline calls
69
+ const inlineAsyncRegex = /await\s+httpx\.AsyncClient\s*\(\s*\)\s*\.(get|post|put|patch|delete|head|options|request)\s*\(/gi;
70
+ while ((match = inlineAsyncRegex.exec(line)) !== null) {
71
+ const method = normalizeHttpMethod(match[1]);
72
+ if (method) {
73
+ const call = createHttpCall(method, 'httpx', line, lineNum, match.index);
74
+ call.isClient = false;
75
+ call.isAsyncClient = true;
76
+ call.isAsync = true;
77
+ calls.push(call);
78
+ }
79
+ }
80
+ // Detect client.method() calls
81
+ for (const [clientVar, info] of clientVars) {
82
+ const clientCallRegex = new RegExp(`(?:await\\s+)?\\b${escapeRegex(clientVar)}\\.(get|post|put|patch|delete|head|options|request)\\s*\\(`, 'gi');
83
+ while ((match = clientCallRegex.exec(line)) !== null) {
84
+ const method = normalizeHttpMethod(match[1]);
85
+ if (method) {
86
+ const call = createHttpCall(method, 'httpx', line, lineNum, match.index);
87
+ call.isClient = !info.isAsync;
88
+ call.isAsyncClient = info.isAsync;
89
+ call.isAsync = info.isAsync || line.includes('await');
90
+ calls.push(call);
91
+ }
92
+ }
93
+ }
94
+ }
95
+ return calls;
96
+ }
97
+ /**
98
+ * Create a PythonHttpCall from a detected call
99
+ */
100
+ function createHttpCall(method, library, line, lineNum, column) {
101
+ const call = {
102
+ method,
103
+ library,
104
+ line: lineNum,
105
+ column
106
+ };
107
+ // Extract URL
108
+ const urlInfo = extractUrl(line);
109
+ if (urlInfo) {
110
+ call.url = urlInfo.url;
111
+ call.isDynamicUrl = urlInfo.isDynamic;
112
+ call.pathParams = urlInfo.pathParams;
113
+ }
114
+ // Detect query params
115
+ if (/\bparams\s*=/.test(line)) {
116
+ call.hasQueryParams = true;
117
+ }
118
+ // URL with query string
119
+ if (call.url?.includes('?')) {
120
+ call.hasQueryParams = true;
121
+ }
122
+ // Detect headers
123
+ if (/\bheaders\s*=/.test(line)) {
124
+ call.hasHeaders = true;
125
+ }
126
+ // Detect body
127
+ if (/\bjson\s*=/.test(line) || /\bdata\s*=/.test(line) || /\bcontent\s*=/.test(line)) {
128
+ call.hasBody = true;
129
+ }
130
+ // Extract response variable
131
+ const assignMatch = line.match(/^\s*(\w+)\s*=/);
132
+ if (assignMatch) {
133
+ call.responseVariable = assignMatch[1];
134
+ }
135
+ // Also check for async response assignment
136
+ const asyncAssignMatch = line.match(/^\s*(\w+)\s*=\s*await\b/);
137
+ if (asyncAssignMatch) {
138
+ call.responseVariable = asyncAssignMatch[1];
139
+ call.isAsync = true;
140
+ }
141
+ return call;
142
+ }
143
+ /**
144
+ * Extract URL from a call line
145
+ */
146
+ function extractUrl(line) {
147
+ // Match f-strings first
148
+ const fstringMatch = line.match(/f["']([^"']+)["']/);
149
+ if (fstringMatch) {
150
+ const url = fstringMatch[1];
151
+ const pathParams = [];
152
+ let paramMatch;
153
+ const paramRegex = /\{(\w+)\}/g;
154
+ while ((paramMatch = paramRegex.exec(url)) !== null) {
155
+ pathParams.push(paramMatch[1]);
156
+ }
157
+ return { url, isDynamic: true, pathParams };
158
+ }
159
+ // Match regular strings - look for method call with string arg
160
+ const stringMatch = line.match(/\.(get|post|put|patch|delete|head|options|request)\s*\(\s*["']([^"']+)["']/i);
161
+ if (stringMatch) {
162
+ return { url: stringMatch[2], isDynamic: false, pathParams: [] };
163
+ }
164
+ // Generic string match
165
+ const genericMatch = line.match(/\(\s*["']([^"']+)["']/);
166
+ if (genericMatch) {
167
+ return { url: genericMatch[1], isDynamic: false, pathParams: [] };
168
+ }
169
+ return null;
170
+ }
171
+ /**
172
+ * Escape special regex characters in a string
173
+ */
174
+ function escapeRegex(str) {
175
+ return str.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
176
+ }
177
+ /**
178
+ * Get the response properties that httpx library supports
179
+ */
180
+ export function getHttpxResponseProperties() {
181
+ return HTTPX_PATTERN.responseAccess;
182
+ }
183
+ //# sourceMappingURL=httpx.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"httpx.js","sourceRoot":"","sources":["../../../src/patterns/python/httpx.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ /**
2
+ * Python HTTP Client Pattern Detection
3
+ *
4
+ * Re-exports for Python HTTP client detection modules.
5
+ * Supports: requests, httpx, aiohttp
6
+ *
7
+ * @see .context/TASK_MAP_P3.md - Task P3-4
8
+ */
9
+ export type { PythonHttpLibrary, HttpMethod, PythonHttpCall, PythonPropertyAccess, PythonHttpCallResult, HttpClientPattern } from './types.js';
10
+ export { HTTP_CLIENT_PATTERNS, normalizeHttpMethod } from './types.js';
11
+ export { detectRequestsCalls, getRequestsResponseProperties } from './requests.js';
12
+ export { detectHttpxCalls, getHttpxResponseProperties } from './httpx.js';
13
+ export { detectAiohttpCalls, getAiohttpResponseProperties } from './aiohttp.js';
14
+ export { detectPropertyAccess, correlatePropertyAccess, getLibraryResponseProperties, isValidResponseProperty } from './property-access.js';
15
+ import type { PythonHttpCallResult } from './types.js';
16
+ /**
17
+ * Detect all HTTP client calls from Python source code
18
+ *
19
+ * Supports:
20
+ * - requests library
21
+ * - httpx library
22
+ * - aiohttp library
23
+ *
24
+ * @param content Python source code content
25
+ * @returns Array of HTTP calls with correlated response property access
26
+ */
27
+ export declare function detectAllHttpCalls(content: string): PythonHttpCallResult[];
28
+ /**
29
+ * Get supported libraries
30
+ */
31
+ export declare function getSupportedLibraries(): string[];
32
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/patterns/python/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,YAAY,EACV,iBAAiB,EACjB,UAAU,EACV,cAAc,EACd,oBAAoB,EACpB,oBAAoB,EACpB,iBAAiB,EAClB,MAAM,YAAY,CAAC;AAEpB,OAAO,EACL,oBAAoB,EACpB,mBAAmB,EACpB,MAAM,YAAY,CAAC;AAGpB,OAAO,EAAE,mBAAmB,EAAE,6BAA6B,EAAE,MAAM,eAAe,CAAC;AACnF,OAAO,EAAE,gBAAgB,EAAE,0BAA0B,EAAE,MAAM,YAAY,CAAC;AAC1E,OAAO,EAAE,kBAAkB,EAAE,4BAA4B,EAAE,MAAM,cAAc,CAAC;AAGhF,OAAO,EACL,oBAAoB,EACpB,uBAAuB,EACvB,4BAA4B,EAC5B,uBAAuB,EACxB,MAAM,sBAAsB,CAAC;AAM9B,OAAO,KAAK,EAAkB,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAMvE;;;;;;;;;;GAUG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,oBAAoB,EAAE,CA+B1E;AAED;;GAEG;AACH,wBAAgB,qBAAqB,IAAI,MAAM,EAAE,CAEhD"}
@@ -0,0 +1,63 @@
1
+ /**
2
+ * Python HTTP Client Pattern Detection
3
+ *
4
+ * Re-exports for Python HTTP client detection modules.
5
+ * Supports: requests, httpx, aiohttp
6
+ *
7
+ * @see .context/TASK_MAP_P3.md - Task P3-4
8
+ */
9
+ export { HTTP_CLIENT_PATTERNS, normalizeHttpMethod } from './types.js';
10
+ // Library-specific detectors
11
+ export { detectRequestsCalls, getRequestsResponseProperties } from './requests.js';
12
+ export { detectHttpxCalls, getHttpxResponseProperties } from './httpx.js';
13
+ export { detectAiohttpCalls, getAiohttpResponseProperties } from './aiohttp.js';
14
+ // Property access tracking
15
+ export { detectPropertyAccess, correlatePropertyAccess, getLibraryResponseProperties, isValidResponseProperty } from './property-access.js';
16
+ import { detectRequestsCalls } from './requests.js';
17
+ import { detectHttpxCalls } from './httpx.js';
18
+ import { detectAiohttpCalls } from './aiohttp.js';
19
+ import { correlatePropertyAccess } from './property-access.js';
20
+ /**
21
+ * Detect all HTTP client calls from Python source code
22
+ *
23
+ * Supports:
24
+ * - requests library
25
+ * - httpx library
26
+ * - aiohttp library
27
+ *
28
+ * @param content Python source code content
29
+ * @returns Array of HTTP calls with correlated response property access
30
+ */
31
+ export function detectAllHttpCalls(content) {
32
+ const results = [];
33
+ // Detect from each library
34
+ const requestsCalls = detectRequestsCalls(content);
35
+ const httpxCalls = detectHttpxCalls(content);
36
+ const aiohttpCalls = detectAiohttpCalls(content);
37
+ // Combine all calls
38
+ const allCalls = [
39
+ ...requestsCalls,
40
+ ...httpxCalls,
41
+ ...aiohttpCalls
42
+ ];
43
+ // Correlate property access
44
+ const propertyMap = correlatePropertyAccess(allCalls, content);
45
+ // Build results
46
+ for (const call of allCalls) {
47
+ const properties = propertyMap.get(call) || [];
48
+ results.push({
49
+ ...call,
50
+ responseProperties: properties
51
+ });
52
+ }
53
+ // Sort by line number
54
+ results.sort((a, b) => a.line - b.line);
55
+ return results;
56
+ }
57
+ /**
58
+ * Get supported libraries
59
+ */
60
+ export function getSupportedLibraries() {
61
+ return ['requests', 'httpx', 'aiohttp'];
62
+ }
63
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/patterns/python/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAYH,OAAO,EACL,oBAAoB,EACpB,mBAAmB,EACpB,MAAM,YAAY,CAAC;AAEpB,6BAA6B;AAC7B,OAAO,EAAE,mBAAmB,EAAE,6BAA6B,EAAE,MAAM,eAAe,CAAC;AACnF,OAAO,EAAE,gBAAgB,EAAE,0BAA0B,EAAE,MAAM,YAAY,CAAC;AAC1E,OAAO,EAAE,kBAAkB,EAAE,4BAA4B,EAAE,MAAM,cAAc,CAAC;AAEhF,2BAA2B;AAC3B,OAAO,EACL,oBAAoB,EACpB,uBAAuB,EACvB,4BAA4B,EAC5B,uBAAuB,EACxB,MAAM,sBAAsB,CAAC;AAO9B,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAE/D;;;;;;;;;;GAUG;AACH,MAAM,UAAU,kBAAkB,CAAC,OAAe;IAChD,MAAM,OAAO,GAA2B,EAAE,CAAC;IAE3C,2BAA2B;IAC3B,MAAM,aAAa,GAAG,mBAAmB,CAAC,OAAO,CAAC,CAAC;IACnD,MAAM,UAAU,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;IAC7C,MAAM,YAAY,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAC;IAEjD,oBAAoB;IACpB,MAAM,QAAQ,GAAqB;QACjC,GAAG,aAAa;QAChB,GAAG,UAAU;QACb,GAAG,YAAY;KAChB,CAAC;IAEF,4BAA4B;IAC5B,MAAM,WAAW,GAAG,uBAAuB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAE/D,gBAAgB;IAChB,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE,CAAC;QAC5B,MAAM,UAAU,GAAG,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;QAC/C,OAAO,CAAC,IAAI,CAAC;YACX,GAAG,IAAI;YACP,kBAAkB,EAAE,UAAU;SAC/B,CAAC,CAAC;IACL,CAAC;IAED,sBAAsB;IACtB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC;IAExC,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,qBAAqB;IACnC,OAAO,CAAC,UAAU,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;AAC1C,CAAC"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * Python Response Property Access Detection
3
+ *
4
+ * Tracks property access on HTTP response objects:
5
+ * - response.json(), response.text, response.status_code
6
+ * - Correlates with response variable names from HTTP calls
7
+ *
8
+ * @see .context/TASK_MAP_P3.md - Task P3-4
9
+ */
10
+ import type { PythonPropertyAccess, PythonHttpCall, PythonHttpLibrary } from './types.js';
11
+ /**
12
+ * Detect property access on response variables in Python source code
13
+ */
14
+ export declare function detectPropertyAccess(content: string, responseVariables: Set<string>): PythonPropertyAccess[];
15
+ /**
16
+ * Map property access back to HTTP calls based on variable names
17
+ */
18
+ export declare function correlatePropertyAccess(calls: PythonHttpCall[], content: string): Map<PythonHttpCall, string[]>;
19
+ /**
20
+ * Get response properties specific to a library
21
+ */
22
+ export declare function getLibraryResponseProperties(library: PythonHttpLibrary): string[];
23
+ /**
24
+ * Check if a property is valid for a given library
25
+ */
26
+ export declare function isValidResponseProperty(property: string, library: PythonHttpLibrary): boolean;
27
+ //# sourceMappingURL=property-access.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"property-access.d.ts","sourceRoot":"","sources":["../../../src/patterns/python/property-access.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EACV,oBAAoB,EACpB,cAAc,EACd,iBAAiB,EAClB,MAAM,YAAY,CAAC;AAiBpB;;GAEG;AACH,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,MAAM,EACf,iBAAiB,EAAE,GAAG,CAAC,MAAM,CAAC,GAC7B,oBAAoB,EAAE,CAkExB;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,cAAc,EAAE,EACvB,OAAO,EAAE,MAAM,GACd,GAAG,CAAC,cAAc,EAAE,MAAM,EAAE,CAAC,CAkC/B;AAED;;GAEG;AACH,wBAAgB,4BAA4B,CAAC,OAAO,EAAE,iBAAiB,GAAG,MAAM,EAAE,CAEjF;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAE7F"}
@@ -0,0 +1,132 @@
1
+ /**
2
+ * Python Response Property Access Detection
3
+ *
4
+ * Tracks property access on HTTP response objects:
5
+ * - response.json(), response.text, response.status_code
6
+ * - Correlates with response variable names from HTTP calls
7
+ *
8
+ * @see .context/TASK_MAP_P3.md - Task P3-4
9
+ */
10
+ import { HTTP_CLIENT_PATTERNS } from './types.js';
11
+ /**
12
+ * All known response properties/methods across libraries
13
+ */
14
+ const ALL_RESPONSE_PROPERTIES = new Set([
15
+ // Common
16
+ 'json', 'text', 'content', 'headers', 'cookies', 'url', 'encoding',
17
+ // requests
18
+ 'status_code', 'ok', 'reason',
19
+ // httpx
20
+ 'is_success', 'is_error', 'is_redirect',
21
+ // aiohttp
22
+ 'status', 'read', 'content_type'
23
+ ]);
24
+ /**
25
+ * Detect property access on response variables in Python source code
26
+ */
27
+ export function detectPropertyAccess(content, responseVariables) {
28
+ const accesses = [];
29
+ const lines = content.split('\n');
30
+ for (let i = 0; i < lines.length; i++) {
31
+ const line = lines[i];
32
+ const lineNum = i + 1;
33
+ // Check each known response variable
34
+ for (const varName of responseVariables) {
35
+ // Method call: response.json()
36
+ const methodCallRegex = new RegExp(`\\b${escapeRegex(varName)}\\.(\\w+)\\s*\\(`, 'g');
37
+ let match;
38
+ while ((match = methodCallRegex.exec(line)) !== null) {
39
+ const prop = match[1];
40
+ if (ALL_RESPONSE_PROPERTIES.has(prop)) {
41
+ accesses.push({
42
+ variable: varName,
43
+ property: prop,
44
+ isMethodCall: true,
45
+ line: lineNum
46
+ });
47
+ }
48
+ }
49
+ // Property access: response.text, response.status_code
50
+ // Avoid matching method calls by checking what comes after
51
+ const propertyAccessRegex = new RegExp(`\\b${escapeRegex(varName)}\\.(\\w+)(?!\\s*\\()`, 'g');
52
+ while ((match = propertyAccessRegex.exec(line)) !== null) {
53
+ const prop = match[1];
54
+ if (ALL_RESPONSE_PROPERTIES.has(prop)) {
55
+ accesses.push({
56
+ variable: varName,
57
+ property: prop,
58
+ isMethodCall: false,
59
+ line: lineNum
60
+ });
61
+ }
62
+ }
63
+ // Await method calls: await response.json()
64
+ const awaitMethodRegex = new RegExp(`await\\s+${escapeRegex(varName)}\\.(\\w+)\\s*\\(`, 'g');
65
+ while ((match = awaitMethodRegex.exec(line)) !== null) {
66
+ const prop = match[1];
67
+ if (ALL_RESPONSE_PROPERTIES.has(prop)) {
68
+ accesses.push({
69
+ variable: varName,
70
+ property: prop,
71
+ isMethodCall: true,
72
+ line: lineNum
73
+ });
74
+ }
75
+ }
76
+ }
77
+ }
78
+ return accesses;
79
+ }
80
+ /**
81
+ * Map property access back to HTTP calls based on variable names
82
+ */
83
+ export function correlatePropertyAccess(calls, content) {
84
+ const result = new Map();
85
+ // Collect all response variables
86
+ const responseVars = new Set();
87
+ for (const call of calls) {
88
+ if (call.responseVariable) {
89
+ responseVars.add(call.responseVariable);
90
+ }
91
+ }
92
+ // Detect property accesses
93
+ const accesses = detectPropertyAccess(content, responseVars);
94
+ // Group accesses by variable name
95
+ const accessByVar = new Map();
96
+ for (const access of accesses) {
97
+ if (!accessByVar.has(access.variable)) {
98
+ accessByVar.set(access.variable, new Set());
99
+ }
100
+ accessByVar.get(access.variable).add(access.property);
101
+ }
102
+ // Correlate with HTTP calls
103
+ for (const call of calls) {
104
+ const varName = call.responseVariable;
105
+ if (varName && accessByVar.has(varName)) {
106
+ result.set(call, Array.from(accessByVar.get(varName)));
107
+ }
108
+ else {
109
+ result.set(call, []);
110
+ }
111
+ }
112
+ return result;
113
+ }
114
+ /**
115
+ * Get response properties specific to a library
116
+ */
117
+ export function getLibraryResponseProperties(library) {
118
+ return HTTP_CLIENT_PATTERNS[library].responseAccess;
119
+ }
120
+ /**
121
+ * Check if a property is valid for a given library
122
+ */
123
+ export function isValidResponseProperty(property, library) {
124
+ return HTTP_CLIENT_PATTERNS[library].responseAccess.includes(property);
125
+ }
126
+ /**
127
+ * Escape special regex characters in a string
128
+ */
129
+ function escapeRegex(str) {
130
+ return str.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
131
+ }
132
+ //# sourceMappingURL=property-access.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"property-access.js","sourceRoot":"","sources":["../../../src/patterns/python/property-access.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Python requests library HTTP client detection
3
+ *
4
+ * Detects calls to the requests library:
5
+ * - requests.get(), requests.post(), etc.
6
+ * - session.get(), session.post() with Session instances
7
+ *
8
+ * @see .context/TASK_MAP_P3.md - Task P3-4
9
+ */
10
+ import type { PythonHttpCall } from './types.js';
11
+ /**
12
+ * Detect HTTP calls from the requests library in Python source code
13
+ */
14
+ export declare function detectRequestsCalls(content: string): PythonHttpCall[];
15
+ /**
16
+ * Get the response properties that requests library supports
17
+ */
18
+ export declare function getRequestsResponseProperties(): string[];
19
+ //# sourceMappingURL=requests.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"requests.d.ts","sourceRoot":"","sources":["../../../src/patterns/python/requests.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EACV,cAAc,EAGf,MAAM,YAAY,CAAC;AAiDpB;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,cAAc,EAAE,CAsErE;AA2JD;;GAEG;AACH,wBAAgB,6BAA6B,IAAI,MAAM,EAAE,CAExD"}