codesift-mcp 0.2.18 → 0.4.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 (461) hide show
  1. package/README.md +143 -20
  2. package/dist/cache/hono-cache.d.ts +50 -0
  3. package/dist/cache/hono-cache.d.ts.map +1 -0
  4. package/dist/cache/hono-cache.js +132 -0
  5. package/dist/cache/hono-cache.js.map +1 -0
  6. package/dist/cli/setup.d.ts.map +1 -1
  7. package/dist/cli/setup.js +17 -2
  8. package/dist/cli/setup.js.map +1 -1
  9. package/dist/formatters-shortening.d.ts +13 -0
  10. package/dist/formatters-shortening.d.ts.map +1 -1
  11. package/dist/formatters-shortening.js +131 -0
  12. package/dist/formatters-shortening.js.map +1 -1
  13. package/dist/formatters.d.ts +38 -0
  14. package/dist/formatters.d.ts.map +1 -1
  15. package/dist/formatters.js +498 -0
  16. package/dist/formatters.js.map +1 -1
  17. package/dist/instructions.d.ts +1 -1
  18. package/dist/instructions.d.ts.map +1 -1
  19. package/dist/instructions.js +27 -26
  20. package/dist/instructions.js.map +1 -1
  21. package/dist/lsp/lsp-servers.d.ts.map +1 -1
  22. package/dist/lsp/lsp-servers.js +5 -0
  23. package/dist/lsp/lsp-servers.js.map +1 -1
  24. package/dist/lsp/lsp-tools.d.ts.map +1 -1
  25. package/dist/lsp/lsp-tools.js +1 -0
  26. package/dist/lsp/lsp-tools.js.map +1 -1
  27. package/dist/parser/astro-template.d.ts +47 -0
  28. package/dist/parser/astro-template.d.ts.map +1 -0
  29. package/dist/parser/astro-template.js +171 -0
  30. package/dist/parser/astro-template.js.map +1 -0
  31. package/dist/parser/extractors/_shared.d.ts +4 -0
  32. package/dist/parser/extractors/_shared.d.ts.map +1 -1
  33. package/dist/parser/extractors/_shared.js +8 -0
  34. package/dist/parser/extractors/_shared.js.map +1 -1
  35. package/dist/parser/extractors/astro.d.ts +4 -5
  36. package/dist/parser/extractors/astro.d.ts.map +1 -1
  37. package/dist/parser/extractors/astro.js +102 -26
  38. package/dist/parser/extractors/astro.js.map +1 -1
  39. package/dist/parser/extractors/gradle-kts.d.ts +4 -0
  40. package/dist/parser/extractors/gradle-kts.d.ts.map +1 -0
  41. package/dist/parser/extractors/gradle-kts.js +246 -0
  42. package/dist/parser/extractors/gradle-kts.js.map +1 -0
  43. package/dist/parser/extractors/hono-inline-analyzer.d.ts +34 -0
  44. package/dist/parser/extractors/hono-inline-analyzer.d.ts.map +1 -0
  45. package/dist/parser/extractors/hono-inline-analyzer.js +465 -0
  46. package/dist/parser/extractors/hono-inline-analyzer.js.map +1 -0
  47. package/dist/parser/extractors/hono-model.d.ts +196 -0
  48. package/dist/parser/extractors/hono-model.d.ts.map +1 -0
  49. package/dist/parser/extractors/hono-model.js +10 -0
  50. package/dist/parser/extractors/hono-model.js.map +1 -0
  51. package/dist/parser/extractors/hono.d.ts +118 -0
  52. package/dist/parser/extractors/hono.d.ts.map +1 -0
  53. package/dist/parser/extractors/hono.js +1527 -0
  54. package/dist/parser/extractors/hono.js.map +1 -0
  55. package/dist/parser/extractors/kotlin.d.ts +4 -0
  56. package/dist/parser/extractors/kotlin.d.ts.map +1 -0
  57. package/dist/parser/extractors/kotlin.js +521 -0
  58. package/dist/parser/extractors/kotlin.js.map +1 -0
  59. package/dist/parser/extractors/php.d.ts +22 -0
  60. package/dist/parser/extractors/php.d.ts.map +1 -0
  61. package/dist/parser/extractors/php.js +326 -0
  62. package/dist/parser/extractors/php.js.map +1 -0
  63. package/dist/parser/extractors/python.d.ts.map +1 -1
  64. package/dist/parser/extractors/python.js +234 -11
  65. package/dist/parser/extractors/python.js.map +1 -1
  66. package/dist/parser/extractors/sql.d.ts +33 -0
  67. package/dist/parser/extractors/sql.d.ts.map +1 -0
  68. package/dist/parser/extractors/sql.js +506 -0
  69. package/dist/parser/extractors/sql.js.map +1 -0
  70. package/dist/parser/extractors/typescript.d.ts.map +1 -1
  71. package/dist/parser/extractors/typescript.js +166 -3
  72. package/dist/parser/extractors/typescript.js.map +1 -1
  73. package/dist/parser/languages/tree-sitter-javascript.wasm +0 -0
  74. package/dist/parser/languages/tree-sitter-kotlin.wasm +0 -0
  75. package/dist/parser/languages/tree-sitter-php.wasm +0 -0
  76. package/dist/parser/languages/tree-sitter-php_only.wasm +0 -0
  77. package/dist/parser/languages/tree-sitter-python.wasm +0 -0
  78. package/dist/parser/parser-manager.d.ts +32 -0
  79. package/dist/parser/parser-manager.d.ts.map +1 -1
  80. package/dist/parser/parser-manager.js +82 -3
  81. package/dist/parser/parser-manager.js.map +1 -1
  82. package/dist/parser/symbol-extractor.d.ts.map +1 -1
  83. package/dist/parser/symbol-extractor.js +16 -0
  84. package/dist/parser/symbol-extractor.js.map +1 -1
  85. package/dist/register-tools.d.ts +37 -1
  86. package/dist/register-tools.d.ts.map +1 -1
  87. package/dist/register-tools.js +2657 -191
  88. package/dist/register-tools.js.map +1 -1
  89. package/dist/search/reranker.js +1 -1
  90. package/dist/search/reranker.js.map +1 -1
  91. package/dist/server-helpers.d.ts.map +1 -1
  92. package/dist/server-helpers.js +11 -0
  93. package/dist/server-helpers.js.map +1 -1
  94. package/dist/server.js +28 -1
  95. package/dist/server.js.map +1 -1
  96. package/dist/storage/index-store.d.ts +15 -1
  97. package/dist/storage/index-store.d.ts.map +1 -1
  98. package/dist/storage/index-store.js +27 -1
  99. package/dist/storage/index-store.js.map +1 -1
  100. package/dist/storage/session-state.d.ts +1 -1
  101. package/dist/storage/session-state.d.ts.map +1 -1
  102. package/dist/storage/session-state.js +6 -4
  103. package/dist/storage/session-state.js.map +1 -1
  104. package/dist/tools/agent-config-tools.d.ts +24 -0
  105. package/dist/tools/agent-config-tools.d.ts.map +1 -0
  106. package/dist/tools/agent-config-tools.js +119 -0
  107. package/dist/tools/agent-config-tools.js.map +1 -0
  108. package/dist/tools/architecture-tools.d.ts +23 -0
  109. package/dist/tools/architecture-tools.d.ts.map +1 -0
  110. package/dist/tools/architecture-tools.js +140 -0
  111. package/dist/tools/architecture-tools.js.map +1 -0
  112. package/dist/tools/astro-config.d.ts +33 -0
  113. package/dist/tools/astro-config.d.ts.map +1 -0
  114. package/dist/tools/astro-config.js +260 -0
  115. package/dist/tools/astro-config.js.map +1 -0
  116. package/dist/tools/astro-islands.d.ts +61 -0
  117. package/dist/tools/astro-islands.d.ts.map +1 -0
  118. package/dist/tools/astro-islands.js +240 -0
  119. package/dist/tools/astro-islands.js.map +1 -0
  120. package/dist/tools/astro-routes.d.ts +49 -0
  121. package/dist/tools/astro-routes.d.ts.map +1 -0
  122. package/dist/tools/astro-routes.js +119 -0
  123. package/dist/tools/astro-routes.js.map +1 -0
  124. package/dist/tools/audit-tools.d.ts +38 -0
  125. package/dist/tools/audit-tools.d.ts.map +1 -0
  126. package/dist/tools/audit-tools.js +248 -0
  127. package/dist/tools/audit-tools.js.map +1 -0
  128. package/dist/tools/celery-tools.d.ts +38 -0
  129. package/dist/tools/celery-tools.d.ts.map +1 -0
  130. package/dist/tools/celery-tools.js +154 -0
  131. package/dist/tools/celery-tools.js.map +1 -0
  132. package/dist/tools/clone-tools.js +1 -1
  133. package/dist/tools/clone-tools.js.map +1 -1
  134. package/dist/tools/complexity-tools.d.ts +4 -0
  135. package/dist/tools/complexity-tools.d.ts.map +1 -1
  136. package/dist/tools/complexity-tools.js +78 -4
  137. package/dist/tools/complexity-tools.js.map +1 -1
  138. package/dist/tools/compose-tools.d.ts +60 -0
  139. package/dist/tools/compose-tools.d.ts.map +1 -0
  140. package/dist/tools/compose-tools.js +203 -0
  141. package/dist/tools/compose-tools.js.map +1 -0
  142. package/dist/tools/coupling-tools.d.ts +50 -0
  143. package/dist/tools/coupling-tools.d.ts.map +1 -0
  144. package/dist/tools/coupling-tools.js +262 -0
  145. package/dist/tools/coupling-tools.js.map +1 -0
  146. package/dist/tools/dependency-audit-tools.d.ts +65 -0
  147. package/dist/tools/dependency-audit-tools.d.ts.map +1 -0
  148. package/dist/tools/dependency-audit-tools.js +553 -0
  149. package/dist/tools/dependency-audit-tools.js.map +1 -0
  150. package/dist/tools/django-settings.d.ts +22 -0
  151. package/dist/tools/django-settings.d.ts.map +1 -0
  152. package/dist/tools/django-settings.js +301 -0
  153. package/dist/tools/django-settings.js.map +1 -0
  154. package/dist/tools/frequency-tools.js +1 -1
  155. package/dist/tools/frequency-tools.js.map +1 -1
  156. package/dist/tools/graph-tools.d.ts +8 -2
  157. package/dist/tools/graph-tools.d.ts.map +1 -1
  158. package/dist/tools/graph-tools.js +44 -3
  159. package/dist/tools/graph-tools.js.map +1 -1
  160. package/dist/tools/hilt-tools.d.ts +55 -0
  161. package/dist/tools/hilt-tools.d.ts.map +1 -0
  162. package/dist/tools/hilt-tools.js +258 -0
  163. package/dist/tools/hilt-tools.js.map +1 -0
  164. package/dist/tools/hono-analyze-app.d.ts +48 -0
  165. package/dist/tools/hono-analyze-app.d.ts.map +1 -0
  166. package/dist/tools/hono-analyze-app.js +102 -0
  167. package/dist/tools/hono-analyze-app.js.map +1 -0
  168. package/dist/tools/hono-api-contract.d.ts +22 -0
  169. package/dist/tools/hono-api-contract.d.ts.map +1 -0
  170. package/dist/tools/hono-api-contract.js +80 -0
  171. package/dist/tools/hono-api-contract.js.map +1 -0
  172. package/dist/tools/hono-conditional-middleware.d.ts +27 -0
  173. package/dist/tools/hono-conditional-middleware.d.ts.map +1 -0
  174. package/dist/tools/hono-conditional-middleware.js +62 -0
  175. package/dist/tools/hono-conditional-middleware.js.map +1 -0
  176. package/dist/tools/hono-context-flow.d.ts +24 -0
  177. package/dist/tools/hono-context-flow.d.ts.map +1 -0
  178. package/dist/tools/hono-context-flow.js +78 -0
  179. package/dist/tools/hono-context-flow.js.map +1 -0
  180. package/dist/tools/hono-dead-routes.d.ts +26 -0
  181. package/dist/tools/hono-dead-routes.d.ts.map +1 -0
  182. package/dist/tools/hono-dead-routes.js +109 -0
  183. package/dist/tools/hono-dead-routes.js.map +1 -0
  184. package/dist/tools/hono-env-regression.d.ts +29 -0
  185. package/dist/tools/hono-env-regression.d.ts.map +1 -0
  186. package/dist/tools/hono-env-regression.js +157 -0
  187. package/dist/tools/hono-env-regression.js.map +1 -0
  188. package/dist/tools/hono-inline-analyze.d.ts +31 -0
  189. package/dist/tools/hono-inline-analyze.d.ts.map +1 -0
  190. package/dist/tools/hono-inline-analyze.js +67 -0
  191. package/dist/tools/hono-inline-analyze.js.map +1 -0
  192. package/dist/tools/hono-middleware-chain.d.ts +22 -0
  193. package/dist/tools/hono-middleware-chain.d.ts.map +1 -0
  194. package/dist/tools/hono-middleware-chain.js +84 -0
  195. package/dist/tools/hono-middleware-chain.js.map +1 -0
  196. package/dist/tools/hono-modules.d.ts +22 -0
  197. package/dist/tools/hono-modules.d.ts.map +1 -0
  198. package/dist/tools/hono-modules.js +126 -0
  199. package/dist/tools/hono-modules.js.map +1 -0
  200. package/dist/tools/hono-response-types.d.ts +37 -0
  201. package/dist/tools/hono-response-types.d.ts.map +1 -0
  202. package/dist/tools/hono-response-types.js +84 -0
  203. package/dist/tools/hono-response-types.js.map +1 -0
  204. package/dist/tools/hono-rpc-types.d.ts +21 -0
  205. package/dist/tools/hono-rpc-types.d.ts.map +1 -0
  206. package/dist/tools/hono-rpc-types.js +57 -0
  207. package/dist/tools/hono-rpc-types.js.map +1 -0
  208. package/dist/tools/hono-security.d.ts +21 -0
  209. package/dist/tools/hono-security.d.ts.map +1 -0
  210. package/dist/tools/hono-security.js +98 -0
  211. package/dist/tools/hono-security.js.map +1 -0
  212. package/dist/tools/hono-visualize.d.ts +13 -0
  213. package/dist/tools/hono-visualize.d.ts.map +1 -0
  214. package/dist/tools/hono-visualize.js +72 -0
  215. package/dist/tools/hono-visualize.js.map +1 -0
  216. package/dist/tools/hotspot-tools.d.ts.map +1 -1
  217. package/dist/tools/hotspot-tools.js +9 -7
  218. package/dist/tools/hotspot-tools.js.map +1 -1
  219. package/dist/tools/index-tools.d.ts +17 -0
  220. package/dist/tools/index-tools.d.ts.map +1 -1
  221. package/dist/tools/index-tools.js +210 -10
  222. package/dist/tools/index-tools.js.map +1 -1
  223. package/dist/tools/kotlin-tools.d.ts +142 -0
  224. package/dist/tools/kotlin-tools.d.ts.map +1 -0
  225. package/dist/tools/kotlin-tools.js +572 -0
  226. package/dist/tools/kotlin-tools.js.map +1 -0
  227. package/dist/tools/legacy-hono-conventions.d.ts +14 -0
  228. package/dist/tools/legacy-hono-conventions.d.ts.map +1 -0
  229. package/dist/tools/legacy-hono-conventions.js +152 -0
  230. package/dist/tools/legacy-hono-conventions.js.map +1 -0
  231. package/dist/tools/migration-lint-tools.d.ts +26 -0
  232. package/dist/tools/migration-lint-tools.d.ts.map +1 -0
  233. package/dist/tools/migration-lint-tools.js +247 -0
  234. package/dist/tools/migration-lint-tools.js.map +1 -0
  235. package/dist/tools/model-tools.d.ts +30 -0
  236. package/dist/tools/model-tools.d.ts.map +1 -0
  237. package/dist/tools/model-tools.js +145 -0
  238. package/dist/tools/model-tools.js.map +1 -0
  239. package/dist/tools/nest-ext-tools.d.ts +92 -0
  240. package/dist/tools/nest-ext-tools.d.ts.map +1 -0
  241. package/dist/tools/nest-ext-tools.js +359 -0
  242. package/dist/tools/nest-ext-tools.js.map +1 -0
  243. package/dist/tools/nest-tools.d.ts +171 -0
  244. package/dist/tools/nest-tools.d.ts.map +1 -0
  245. package/dist/tools/nest-tools.js +1042 -0
  246. package/dist/tools/nest-tools.js.map +1 -0
  247. package/dist/tools/nextjs-api-contract-readers.d.ts +14 -0
  248. package/dist/tools/nextjs-api-contract-readers.d.ts.map +1 -0
  249. package/dist/tools/nextjs-api-contract-readers.js +204 -0
  250. package/dist/tools/nextjs-api-contract-readers.js.map +1 -0
  251. package/dist/tools/nextjs-api-contract-tools.d.ts +57 -0
  252. package/dist/tools/nextjs-api-contract-tools.d.ts.map +1 -0
  253. package/dist/tools/nextjs-api-contract-tools.js +144 -0
  254. package/dist/tools/nextjs-api-contract-tools.js.map +1 -0
  255. package/dist/tools/nextjs-boundary-tools.d.ts +39 -0
  256. package/dist/tools/nextjs-boundary-tools.d.ts.map +1 -0
  257. package/dist/tools/nextjs-boundary-tools.js +152 -0
  258. package/dist/tools/nextjs-boundary-tools.js.map +1 -0
  259. package/dist/tools/nextjs-component-tools.d.ts +121 -0
  260. package/dist/tools/nextjs-component-tools.d.ts.map +1 -0
  261. package/dist/tools/nextjs-component-tools.js +460 -0
  262. package/dist/tools/nextjs-component-tools.js.map +1 -0
  263. package/dist/tools/nextjs-data-flow-tools.d.ts +42 -0
  264. package/dist/tools/nextjs-data-flow-tools.d.ts.map +1 -0
  265. package/dist/tools/nextjs-data-flow-tools.js +158 -0
  266. package/dist/tools/nextjs-data-flow-tools.js.map +1 -0
  267. package/dist/tools/nextjs-framework-audit-tools.d.ts +37 -0
  268. package/dist/tools/nextjs-framework-audit-tools.d.ts.map +1 -0
  269. package/dist/tools/nextjs-framework-audit-tools.js +211 -0
  270. package/dist/tools/nextjs-framework-audit-tools.js.map +1 -0
  271. package/dist/tools/nextjs-link-tools.d.ts +41 -0
  272. package/dist/tools/nextjs-link-tools.d.ts.map +1 -0
  273. package/dist/tools/nextjs-link-tools.js +157 -0
  274. package/dist/tools/nextjs-link-tools.js.map +1 -0
  275. package/dist/tools/nextjs-metadata-tools.d.ts +74 -0
  276. package/dist/tools/nextjs-metadata-tools.d.ts.map +1 -0
  277. package/dist/tools/nextjs-metadata-tools.js +252 -0
  278. package/dist/tools/nextjs-metadata-tools.js.map +1 -0
  279. package/dist/tools/nextjs-middleware-coverage-tools.d.ts +41 -0
  280. package/dist/tools/nextjs-middleware-coverage-tools.d.ts.map +1 -0
  281. package/dist/tools/nextjs-middleware-coverage-tools.js +88 -0
  282. package/dist/tools/nextjs-middleware-coverage-tools.js.map +1 -0
  283. package/dist/tools/nextjs-route-tools.d.ts +100 -0
  284. package/dist/tools/nextjs-route-tools.d.ts.map +1 -0
  285. package/dist/tools/nextjs-route-tools.js +493 -0
  286. package/dist/tools/nextjs-route-tools.js.map +1 -0
  287. package/dist/tools/nextjs-security-readers.d.ts +22 -0
  288. package/dist/tools/nextjs-security-readers.d.ts.map +1 -0
  289. package/dist/tools/nextjs-security-readers.js +318 -0
  290. package/dist/tools/nextjs-security-readers.js.map +1 -0
  291. package/dist/tools/nextjs-security-scoring.d.ts +15 -0
  292. package/dist/tools/nextjs-security-scoring.d.ts.map +1 -0
  293. package/dist/tools/nextjs-security-scoring.js +65 -0
  294. package/dist/tools/nextjs-security-scoring.js.map +1 -0
  295. package/dist/tools/nextjs-security-tools.d.ts +75 -0
  296. package/dist/tools/nextjs-security-tools.d.ts.map +1 -0
  297. package/dist/tools/nextjs-security-tools.js +153 -0
  298. package/dist/tools/nextjs-security-tools.js.map +1 -0
  299. package/dist/tools/nextjs-tools.d.ts +15 -0
  300. package/dist/tools/nextjs-tools.d.ts.map +1 -0
  301. package/dist/tools/nextjs-tools.js +15 -0
  302. package/dist/tools/nextjs-tools.js.map +1 -0
  303. package/dist/tools/outline-tools.d.ts.map +1 -1
  304. package/dist/tools/outline-tools.js +20 -0
  305. package/dist/tools/outline-tools.js.map +1 -1
  306. package/dist/tools/pattern-tools.d.ts +8 -0
  307. package/dist/tools/pattern-tools.d.ts.map +1 -1
  308. package/dist/tools/pattern-tools.js +561 -3
  309. package/dist/tools/pattern-tools.js.map +1 -1
  310. package/dist/tools/perf-tools.d.ts +32 -0
  311. package/dist/tools/perf-tools.d.ts.map +1 -0
  312. package/dist/tools/perf-tools.js +227 -0
  313. package/dist/tools/perf-tools.js.map +1 -0
  314. package/dist/tools/php-tools.d.ts +176 -0
  315. package/dist/tools/php-tools.d.ts.map +1 -0
  316. package/dist/tools/php-tools.js +543 -0
  317. package/dist/tools/php-tools.js.map +1 -0
  318. package/dist/tools/prisma-schema-tools.d.ts +44 -0
  319. package/dist/tools/prisma-schema-tools.d.ts.map +1 -0
  320. package/dist/tools/prisma-schema-tools.js +358 -0
  321. package/dist/tools/prisma-schema-tools.js.map +1 -0
  322. package/dist/tools/project-tools.d.ts +115 -6
  323. package/dist/tools/project-tools.d.ts.map +1 -1
  324. package/dist/tools/project-tools.js +594 -217
  325. package/dist/tools/project-tools.js.map +1 -1
  326. package/dist/tools/pyproject-tools.d.ts +23 -0
  327. package/dist/tools/pyproject-tools.d.ts.map +1 -0
  328. package/dist/tools/pyproject-tools.js +133 -0
  329. package/dist/tools/pyproject-tools.js.map +1 -0
  330. package/dist/tools/pytest-tools.d.ts +20 -0
  331. package/dist/tools/pytest-tools.d.ts.map +1 -0
  332. package/dist/tools/pytest-tools.js +106 -0
  333. package/dist/tools/pytest-tools.js.map +1 -0
  334. package/dist/tools/python-callers.d.ts +28 -0
  335. package/dist/tools/python-callers.d.ts.map +1 -0
  336. package/dist/tools/python-callers.js +110 -0
  337. package/dist/tools/python-callers.js.map +1 -0
  338. package/dist/tools/python-circular-imports.d.ts +19 -0
  339. package/dist/tools/python-circular-imports.d.ts.map +1 -0
  340. package/dist/tools/python-circular-imports.js +126 -0
  341. package/dist/tools/python-circular-imports.js.map +1 -0
  342. package/dist/tools/python-deps-analyzer.d.ts +46 -0
  343. package/dist/tools/python-deps-analyzer.d.ts.map +1 -0
  344. package/dist/tools/python-deps-analyzer.js +227 -0
  345. package/dist/tools/python-deps-analyzer.js.map +1 -0
  346. package/dist/tools/query-tools.d.ts +23 -0
  347. package/dist/tools/query-tools.d.ts.map +1 -0
  348. package/dist/tools/query-tools.js +256 -0
  349. package/dist/tools/query-tools.js.map +1 -0
  350. package/dist/tools/react-tools.d.ts +218 -0
  351. package/dist/tools/react-tools.d.ts.map +1 -0
  352. package/dist/tools/react-tools.js +714 -0
  353. package/dist/tools/react-tools.js.map +1 -0
  354. package/dist/tools/report-tools.js +47 -0
  355. package/dist/tools/report-tools.js.map +1 -1
  356. package/dist/tools/review-diff-tools.d.ts +2 -6
  357. package/dist/tools/review-diff-tools.d.ts.map +1 -1
  358. package/dist/tools/review-diff-tools.js +51 -66
  359. package/dist/tools/review-diff-tools.js.map +1 -1
  360. package/dist/tools/room-tools.d.ts +36 -0
  361. package/dist/tools/room-tools.d.ts.map +1 -0
  362. package/dist/tools/room-tools.js +147 -0
  363. package/dist/tools/room-tools.js.map +1 -0
  364. package/dist/tools/route-tools.d.ts +27 -1
  365. package/dist/tools/route-tools.d.ts.map +1 -1
  366. package/dist/tools/route-tools.js +744 -18
  367. package/dist/tools/route-tools.js.map +1 -1
  368. package/dist/tools/ruff-tools.d.ts +32 -0
  369. package/dist/tools/ruff-tools.d.ts.map +1 -0
  370. package/dist/tools/ruff-tools.js +114 -0
  371. package/dist/tools/ruff-tools.js.map +1 -0
  372. package/dist/tools/search-ranker.d.ts.map +1 -1
  373. package/dist/tools/search-ranker.js +7 -0
  374. package/dist/tools/search-ranker.js.map +1 -1
  375. package/dist/tools/serialization-tools.d.ts +24 -0
  376. package/dist/tools/serialization-tools.d.ts.map +1 -0
  377. package/dist/tools/serialization-tools.js +156 -0
  378. package/dist/tools/serialization-tools.js.map +1 -0
  379. package/dist/tools/sql-tools.d.ts +234 -0
  380. package/dist/tools/sql-tools.d.ts.map +1 -0
  381. package/dist/tools/sql-tools.js +1037 -0
  382. package/dist/tools/sql-tools.js.map +1 -0
  383. package/dist/tools/status-tools.d.ts +10 -0
  384. package/dist/tools/status-tools.d.ts.map +1 -0
  385. package/dist/tools/status-tools.js +32 -0
  386. package/dist/tools/status-tools.js.map +1 -0
  387. package/dist/tools/symbol-tools.d.ts +19 -0
  388. package/dist/tools/symbol-tools.d.ts.map +1 -1
  389. package/dist/tools/symbol-tools.js +78 -4
  390. package/dist/tools/symbol-tools.js.map +1 -1
  391. package/dist/tools/test-impact-tools.d.ts +29 -0
  392. package/dist/tools/test-impact-tools.d.ts.map +1 -0
  393. package/dist/tools/test-impact-tools.js +156 -0
  394. package/dist/tools/test-impact-tools.js.map +1 -0
  395. package/dist/tools/typecheck-tools.d.ts +39 -0
  396. package/dist/tools/typecheck-tools.d.ts.map +1 -0
  397. package/dist/tools/typecheck-tools.js +191 -0
  398. package/dist/tools/typecheck-tools.js.map +1 -0
  399. package/dist/tools/wiring-tools.d.ts +19 -0
  400. package/dist/tools/wiring-tools.d.ts.map +1 -0
  401. package/dist/tools/wiring-tools.js +147 -0
  402. package/dist/tools/wiring-tools.js.map +1 -0
  403. package/dist/types.d.ts +9 -1
  404. package/dist/types.d.ts.map +1 -1
  405. package/dist/utils/framework-detect.d.ts +18 -2
  406. package/dist/utils/framework-detect.d.ts.map +1 -1
  407. package/dist/utils/framework-detect.js +150 -3
  408. package/dist/utils/framework-detect.js.map +1 -1
  409. package/dist/utils/import-graph.d.ts +36 -0
  410. package/dist/utils/import-graph.d.ts.map +1 -1
  411. package/dist/utils/import-graph.js +212 -9
  412. package/dist/utils/import-graph.js.map +1 -1
  413. package/dist/utils/language-detect.d.ts +21 -0
  414. package/dist/utils/language-detect.d.ts.map +1 -0
  415. package/dist/utils/language-detect.js +183 -0
  416. package/dist/utils/language-detect.js.map +1 -0
  417. package/dist/utils/nextjs-ast-readers.d.ts +44 -0
  418. package/dist/utils/nextjs-ast-readers.d.ts.map +1 -0
  419. package/dist/utils/nextjs-ast-readers.js +341 -0
  420. package/dist/utils/nextjs-ast-readers.js.map +1 -0
  421. package/dist/utils/nextjs-audit-cache.d.ts +51 -0
  422. package/dist/utils/nextjs-audit-cache.d.ts.map +1 -0
  423. package/dist/utils/nextjs-audit-cache.js +116 -0
  424. package/dist/utils/nextjs-audit-cache.js.map +1 -0
  425. package/dist/utils/nextjs-metadata-readers.d.ts +65 -0
  426. package/dist/utils/nextjs-metadata-readers.d.ts.map +1 -0
  427. package/dist/utils/nextjs-metadata-readers.js +447 -0
  428. package/dist/utils/nextjs-metadata-readers.js.map +1 -0
  429. package/dist/utils/nextjs.d.ts +42 -0
  430. package/dist/utils/nextjs.d.ts.map +1 -0
  431. package/dist/utils/nextjs.js +284 -0
  432. package/dist/utils/nextjs.js.map +1 -0
  433. package/dist/utils/python-import-resolver.d.ts +42 -0
  434. package/dist/utils/python-import-resolver.d.ts.map +1 -0
  435. package/dist/utils/python-import-resolver.js +101 -0
  436. package/dist/utils/python-import-resolver.js.map +1 -0
  437. package/dist/utils/python-imports.d.ts +28 -0
  438. package/dist/utils/python-imports.d.ts.map +1 -0
  439. package/dist/utils/python-imports.js +117 -0
  440. package/dist/utils/python-imports.js.map +1 -0
  441. package/dist/utils/react-alias.d.ts +15 -0
  442. package/dist/utils/react-alias.d.ts.map +1 -0
  443. package/dist/utils/react-alias.js +31 -0
  444. package/dist/utils/react-alias.js.map +1 -0
  445. package/dist/utils/test-file.d.ts.map +1 -1
  446. package/dist/utils/test-file.js +7 -0
  447. package/dist/utils/test-file.js.map +1 -1
  448. package/dist/utils/walk.d.ts +22 -0
  449. package/dist/utils/walk.d.ts.map +1 -1
  450. package/dist/utils/walk.js +70 -2
  451. package/dist/utils/walk.js.map +1 -1
  452. package/package.json +3 -2
  453. package/rules/codesift.md +34 -5
  454. package/rules/codesift.mdc +34 -5
  455. package/rules/codex.md +34 -5
  456. package/rules/gemini.md +34 -5
  457. package/src/parser/languages/tree-sitter-javascript.wasm +0 -0
  458. package/src/parser/languages/tree-sitter-kotlin.wasm +0 -0
  459. package/src/parser/languages/tree-sitter-php.wasm +0 -0
  460. package/src/parser/languages/tree-sitter-php_only.wasm +0 -0
  461. package/src/parser/languages/tree-sitter-python.wasm +0 -0
@@ -0,0 +1,465 @@
1
+ /**
2
+ * HonoInlineAnalyzer — shared body-analysis for inline handlers and middleware.
3
+ *
4
+ * Walks a tree-sitter syntax node (expected: arrow_function / function_expression)
5
+ * and extracts:
6
+ * - c.json/text/html/body/redirect/newResponse emissions with status
7
+ * - throw new HTTPException/Error with status
8
+ * - Database calls (prisma.*, db.*, knex.*, drizzle*, .query, .execute)
9
+ * - Fetch calls (fetch, axios.*)
10
+ * - c.set/get/var/env context access
11
+ * - Inline validator references (zValidator, vValidator, etc.)
12
+ * - has_try_catch presence flag
13
+ *
14
+ * Used by HonoExtractor.walkHttpRoutes (Phase 2 T3) and consumed by
15
+ * analyze_inline_handler, extract_response_types, audit_hono_security.
16
+ *
17
+ * Defensive: accepts any node. Non-function nodes return an empty analysis
18
+ * (no throws). Nested functions inside the handler body ARE walked — that is
19
+ * intentional so closures over request context are captured.
20
+ */
21
+ const MAX_WALK_DEPTH = 500;
22
+ const MAX_SHAPE_HINT_LEN = 200;
23
+ /** Default status code for c.redirect when second arg is omitted. */
24
+ const REDIRECT_DEFAULT_STATUS = 302;
25
+ /** Default status code for c.json/text/html/body/newResponse without explicit status. */
26
+ const RESPONSE_DEFAULT_STATUS = 200;
27
+ /** Default status code for `throw new Error(...)` when no HTTPException wrapper. */
28
+ const GENERIC_ERROR_STATUS = 500;
29
+ const RESPONSE_METHODS = new Set([
30
+ "json",
31
+ "text",
32
+ "html",
33
+ "body",
34
+ "redirect",
35
+ "newResponse",
36
+ ]);
37
+ /**
38
+ * DB call prefixes — first token of a member expression chain. Matches
39
+ * `prisma.user.findMany`, `db.select`, `knex("users").where`, `drizzle.query.*`.
40
+ * Suffix-only matching was dropped — it produced false positives on
41
+ * non-DB code like `app.insert`, `array.delete`, `config.from`.
42
+ */
43
+ const DB_ROOT_IDENTIFIERS = new Set([
44
+ "prisma",
45
+ "db",
46
+ "knex",
47
+ "drizzle",
48
+ "mongoose",
49
+ "supabase",
50
+ "pg",
51
+ "sql",
52
+ ]);
53
+ const FETCH_ROOTS = new Set(["fetch", "axios"]);
54
+ const VALIDATOR_NAMES = new Set([
55
+ "zValidator",
56
+ "vValidator",
57
+ "validator",
58
+ "tbValidator",
59
+ "arkValidator",
60
+ ]);
61
+ export class HonoInlineAnalyzer {
62
+ /**
63
+ * Analyze a handler/middleware body. The caller (HonoExtractor) owns the
64
+ * file path — line numbers here are node-relative (1-based), file-agnostic.
65
+ *
66
+ * The Hono context parameter name is extracted from the first function
67
+ * parameter, so handlers written as `(ctx) => ...` or `(context) => ...`
68
+ * are recognized as well as the canonical `(c) => ...`.
69
+ */
70
+ analyze(handlerNode) {
71
+ const result = {
72
+ responses: [],
73
+ errors: [],
74
+ db_calls: [],
75
+ fetch_calls: [],
76
+ context_access: [],
77
+ validators_inline: [],
78
+ has_try_catch: false,
79
+ truncated: false,
80
+ };
81
+ if (!isFunctionLike(handlerNode)) {
82
+ return result;
83
+ }
84
+ const ctxBinding = firstParamName(handlerNode) ?? "c";
85
+ const validatorsSet = new Set();
86
+ const cursor = handlerNode.walk();
87
+ const state = { truncated: false };
88
+ walk(cursor, state, (node) => {
89
+ switch (node.type) {
90
+ case "try_statement": {
91
+ if (hasCatchClause(node))
92
+ result.has_try_catch = true;
93
+ return;
94
+ }
95
+ case "throw_statement": {
96
+ const err = extractThrownError(node);
97
+ if (err)
98
+ result.errors.push(err);
99
+ return;
100
+ }
101
+ case "call_expression": {
102
+ const resp = extractResponseEmission(node, ctxBinding);
103
+ if (resp) {
104
+ result.responses.push(resp);
105
+ return;
106
+ }
107
+ const ext = extractExternalCall(node);
108
+ if (ext) {
109
+ if (ext.kind === "db")
110
+ result.db_calls.push(ext);
111
+ else if (ext.kind === "fetch")
112
+ result.fetch_calls.push(ext);
113
+ return;
114
+ }
115
+ const ctx = extractContextCall(node, ctxBinding);
116
+ if (ctx) {
117
+ result.context_access.push(ctx);
118
+ return;
119
+ }
120
+ const validator = extractValidatorRef(node);
121
+ if (validator)
122
+ validatorsSet.add(validator);
123
+ return;
124
+ }
125
+ case "member_expression": {
126
+ // ctx.var.X / ctx.env.X — handled as member access, not call
127
+ const ctx = extractContextMember(node, ctxBinding);
128
+ if (ctx)
129
+ result.context_access.push(ctx);
130
+ return;
131
+ }
132
+ default:
133
+ return;
134
+ }
135
+ });
136
+ result.validators_inline = [...validatorsSet];
137
+ result.truncated = state.truncated;
138
+ return result;
139
+ }
140
+ }
141
+ /* ======================================================================
142
+ * Pure functions — extraction helpers. Kept private (not exported) to
143
+ * preserve encapsulation and avoid coupling from tool files.
144
+ * ====================================================================== */
145
+ function isFunctionLike(node) {
146
+ return (node.type === "arrow_function" ||
147
+ node.type === "function_expression" ||
148
+ node.type === "function_declaration" ||
149
+ node.type === "function" ||
150
+ node.type === "method_definition");
151
+ }
152
+ /**
153
+ * Extract the first formal parameter name from a function-like node. Returns
154
+ * null for parameterless functions or destructured/complex parameters.
155
+ * Used to resolve the Hono context binding (`c` / `ctx` / `context`).
156
+ */
157
+ function firstParamName(fnNode) {
158
+ const params = fnNode.childForFieldName("parameters");
159
+ if (!params) {
160
+ // Arrow with single bare param: (c) => ... — tree-sitter uses "parameter" field
161
+ const singleParam = fnNode.childForFieldName("parameter");
162
+ if (singleParam?.type === "identifier")
163
+ return singleParam.text;
164
+ return null;
165
+ }
166
+ const first = params.namedChildren[0];
167
+ if (!first)
168
+ return null;
169
+ if (first.type === "identifier")
170
+ return first.text;
171
+ // `required_parameter` wraps the pattern in TS; dig one level
172
+ if (first.type === "required_parameter" || first.type === "optional_parameter") {
173
+ const pattern = first.childForFieldName("pattern");
174
+ if (pattern?.type === "identifier")
175
+ return pattern.text;
176
+ }
177
+ return null;
178
+ }
179
+ function hasCatchClause(tryNode) {
180
+ for (let i = 0; i < tryNode.childCount; i++) {
181
+ const c = tryNode.child(i);
182
+ if (c?.type === "catch_clause")
183
+ return true;
184
+ }
185
+ return false;
186
+ }
187
+ function extractResponseEmission(node, ctxBinding) {
188
+ const fn = node.childForFieldName("function");
189
+ if (fn?.type !== "member_expression")
190
+ return null;
191
+ const obj = fn.childForFieldName("object");
192
+ const prop = fn.childForFieldName("property");
193
+ if (obj?.text !== ctxBinding || !prop)
194
+ return null;
195
+ const methodName = prop.text;
196
+ if (!isResponseMethod(methodName))
197
+ return null;
198
+ const args = node.childForFieldName("arguments");
199
+ const firstArg = args?.namedChildren[0];
200
+ const secondArg = args?.namedChildren[1];
201
+ const status = parseStatusArg(secondArg ?? null, methodName);
202
+ const shape = shapeHintOf(firstArg ?? null);
203
+ const emission = {
204
+ kind: methodName,
205
+ status,
206
+ line: node.startPosition.row + 1,
207
+ };
208
+ if (shape !== null)
209
+ emission.shape_hint = shape;
210
+ return emission;
211
+ }
212
+ function isResponseMethod(name) {
213
+ return RESPONSE_METHODS.has(name);
214
+ }
215
+ function parseStatusArg(node, method) {
216
+ if (!node) {
217
+ return method === "redirect"
218
+ ? REDIRECT_DEFAULT_STATUS
219
+ : RESPONSE_DEFAULT_STATUS;
220
+ }
221
+ if (node.type === "number") {
222
+ const n = Number(node.text);
223
+ if (Number.isFinite(n))
224
+ return n;
225
+ }
226
+ // Fall back to default when status arg is an identifier/expression we can't statically resolve.
227
+ return method === "redirect"
228
+ ? REDIRECT_DEFAULT_STATUS
229
+ : RESPONSE_DEFAULT_STATUS;
230
+ }
231
+ function shapeHintOf(node) {
232
+ if (!node)
233
+ return null;
234
+ const text = node.text;
235
+ if (!text)
236
+ return null;
237
+ return text.length > MAX_SHAPE_HINT_LEN
238
+ ? text.slice(0, MAX_SHAPE_HINT_LEN)
239
+ : text;
240
+ }
241
+ function extractThrownError(node) {
242
+ // throw_statement → contains new_expression as first child, OR an arbitrary
243
+ // expression (throw err / throw getError() / throw await f()). The former
244
+ // yields a structured emission; the latter produces an "UnknownThrow" entry
245
+ // so error-path analysis isn't blind to rethrows.
246
+ let newExpr = null;
247
+ let firstNamedChild = null;
248
+ for (let i = 0; i < node.childCount; i++) {
249
+ const c = node.child(i);
250
+ if (!c || !c.isNamed)
251
+ continue;
252
+ if (!firstNamedChild)
253
+ firstNamedChild = c;
254
+ if (c.type === "new_expression") {
255
+ newExpr = c;
256
+ break;
257
+ }
258
+ }
259
+ if (!newExpr) {
260
+ if (!firstNamedChild)
261
+ return null;
262
+ const emission = {
263
+ status: GENERIC_ERROR_STATUS,
264
+ exception_class: "UnknownThrow",
265
+ line: node.startPosition.row + 1,
266
+ };
267
+ const hint = shapeHintOf(firstNamedChild);
268
+ if (hint !== null)
269
+ emission.message_hint = hint;
270
+ return emission;
271
+ }
272
+ const constructor = newExpr.childForFieldName("constructor");
273
+ const className = constructor?.text ?? "Error";
274
+ const args = newExpr.childForFieldName("arguments");
275
+ const firstArg = args?.namedChildren[0];
276
+ const secondArg = args?.namedChildren[1];
277
+ // HTTPException(status, options) — first arg is status
278
+ if (className === "HTTPException") {
279
+ const status = firstArg?.type === "number" && Number.isFinite(Number(firstArg.text))
280
+ ? Number(firstArg.text)
281
+ : GENERIC_ERROR_STATUS;
282
+ const emission = {
283
+ status,
284
+ exception_class: className,
285
+ line: node.startPosition.row + 1,
286
+ };
287
+ const hint = shapeHintOf(secondArg ?? null);
288
+ if (hint !== null)
289
+ emission.message_hint = hint;
290
+ return emission;
291
+ }
292
+ const emission = {
293
+ status: GENERIC_ERROR_STATUS,
294
+ exception_class: className,
295
+ line: node.startPosition.row + 1,
296
+ };
297
+ const hint = shapeHintOf(firstArg ?? null);
298
+ if (hint !== null)
299
+ emission.message_hint = hint;
300
+ return emission;
301
+ }
302
+ function extractExternalCall(node) {
303
+ const fn = node.childForFieldName("function");
304
+ if (!fn)
305
+ return null;
306
+ // fetch() / axios() — bare identifier
307
+ if (fn.type === "identifier") {
308
+ const name = fn.text;
309
+ if (FETCH_ROOTS.has(name)) {
310
+ return {
311
+ callee: name,
312
+ line: node.startPosition.row + 1,
313
+ kind: "fetch",
314
+ };
315
+ }
316
+ return null;
317
+ }
318
+ if (fn.type === "member_expression") {
319
+ const chain = memberChain(fn);
320
+ if (chain.length === 0)
321
+ return null;
322
+ const root = chain[0];
323
+ if (root && FETCH_ROOTS.has(root)) {
324
+ return {
325
+ callee: chain.join("."),
326
+ line: node.startPosition.row + 1,
327
+ kind: "fetch",
328
+ };
329
+ }
330
+ if (root && DB_ROOT_IDENTIFIERS.has(root)) {
331
+ return {
332
+ callee: chain.join("."),
333
+ line: node.startPosition.row + 1,
334
+ kind: "db",
335
+ };
336
+ }
337
+ }
338
+ return null;
339
+ }
340
+ /**
341
+ * Walk a member_expression chain left-to-right. For `prisma.user.findMany`
342
+ * returns `["prisma", "user", "findMany"]`. Returns empty array when the
343
+ * chain contains non-identifier nodes (e.g. computed access `obj[key]`).
344
+ */
345
+ function memberChain(node) {
346
+ const parts = [];
347
+ let current = node;
348
+ while (current) {
349
+ if (current.type === "member_expression") {
350
+ const prop = current.childForFieldName("property");
351
+ if (prop?.type === "property_identifier" || prop?.type === "identifier") {
352
+ parts.unshift(prop.text);
353
+ }
354
+ else {
355
+ return [];
356
+ }
357
+ current = current.childForFieldName("object");
358
+ }
359
+ else if (current.type === "identifier") {
360
+ parts.unshift(current.text);
361
+ current = null;
362
+ }
363
+ else {
364
+ return [];
365
+ }
366
+ }
367
+ return parts;
368
+ }
369
+ function extractContextCall(node, ctxBinding) {
370
+ const fn = node.childForFieldName("function");
371
+ if (fn?.type !== "member_expression")
372
+ return null;
373
+ const obj = fn.childForFieldName("object");
374
+ const prop = fn.childForFieldName("property");
375
+ if (obj?.text !== ctxBinding || !prop)
376
+ return null;
377
+ if (prop.text === "set" || prop.text === "get") {
378
+ const args = node.childForFieldName("arguments");
379
+ const key = args?.namedChildren[0];
380
+ const keyText = key ? stringOrTemplateValue(key) : null;
381
+ if (keyText !== null) {
382
+ return {
383
+ type: prop.text,
384
+ key: keyText,
385
+ line: node.startPosition.row + 1,
386
+ };
387
+ }
388
+ }
389
+ return null;
390
+ }
391
+ function extractContextMember(node, ctxBinding) {
392
+ // ctx.var.X → (ctx.var).X
393
+ // ctx.env.X → (ctx.env).X
394
+ const obj = node.childForFieldName("object");
395
+ const prop = node.childForFieldName("property");
396
+ if (!prop || obj?.type !== "member_expression")
397
+ return null;
398
+ const innerObj = obj.childForFieldName("object");
399
+ const innerProp = obj.childForFieldName("property");
400
+ if (innerObj?.text !== ctxBinding || !innerProp)
401
+ return null;
402
+ if (innerProp.text === "var") {
403
+ return {
404
+ type: "var",
405
+ key: prop.text,
406
+ line: node.startPosition.row + 1,
407
+ };
408
+ }
409
+ if (innerProp.text === "env") {
410
+ return {
411
+ type: "env",
412
+ key: prop.text,
413
+ line: node.startPosition.row + 1,
414
+ };
415
+ }
416
+ return null;
417
+ }
418
+ function extractValidatorRef(node) {
419
+ const fn = node.childForFieldName("function");
420
+ if (fn?.type === "identifier" && VALIDATOR_NAMES.has(fn.text)) {
421
+ return fn.text;
422
+ }
423
+ return null;
424
+ }
425
+ /**
426
+ * Extracts the underlying string value of a literal argument. Handles both
427
+ * plain strings (`"key"`) and no-substitution template literals (`` `key` ``).
428
+ * Returns `"<dynamic>"` for interpolated templates so analyzers still record
429
+ * that a context access happened at an unknown key.
430
+ */
431
+ function stringOrTemplateValue(node) {
432
+ if (node.type === "string") {
433
+ const raw = node.text;
434
+ return raw.length < 2 ? null : raw.slice(1, -1);
435
+ }
436
+ if (node.type === "template_string") {
437
+ // No interpolations → return the literal text; else flag as dynamic
438
+ const hasSubstitution = (() => {
439
+ for (let i = 0; i < node.childCount; i++) {
440
+ if (node.child(i)?.type === "template_substitution")
441
+ return true;
442
+ }
443
+ return false;
444
+ })();
445
+ if (hasSubstitution)
446
+ return "<dynamic>";
447
+ const raw = node.text;
448
+ return raw.length < 2 ? null : raw.slice(1, -1);
449
+ }
450
+ return null;
451
+ }
452
+ function walk(cursor, state, visit, depth = 0) {
453
+ if (depth > MAX_WALK_DEPTH) {
454
+ state.truncated = true;
455
+ return;
456
+ }
457
+ visit(cursor.currentNode);
458
+ if (cursor.gotoFirstChild()) {
459
+ do {
460
+ walk(cursor, state, visit, depth + 1);
461
+ } while (cursor.gotoNextSibling());
462
+ cursor.gotoParent();
463
+ }
464
+ }
465
+ //# sourceMappingURL=hono-inline-analyzer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hono-inline-analyzer.js","sourceRoot":"","sources":["../../../src/parser/extractors/hono-inline-analyzer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAWH,MAAM,cAAc,GAAG,GAAG,CAAC;AAC3B,MAAM,kBAAkB,GAAG,GAAG,CAAC;AAE/B,qEAAqE;AACrE,MAAM,uBAAuB,GAAG,GAAG,CAAC;AACpC,yFAAyF;AACzF,MAAM,uBAAuB,GAAG,GAAG,CAAC;AACpC,oFAAoF;AACpF,MAAM,oBAAoB,GAAG,GAAG,CAAC;AAEjC,MAAM,gBAAgB,GAA0C,IAAI,GAAG,CAAC;IACtE,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,UAAU;IACV,aAAa;CACd,CAAC,CAAC;AAEH;;;;;GAKG;AACH,MAAM,mBAAmB,GAAwB,IAAI,GAAG,CAAC;IACvD,QAAQ;IACR,IAAI;IACJ,MAAM;IACN,SAAS;IACT,UAAU;IACV,UAAU;IACV,IAAI;IACJ,KAAK;CACN,CAAC,CAAC;AAEH,MAAM,WAAW,GAAwB,IAAI,GAAG,CAAC,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;AAErE,MAAM,eAAe,GAAwB,IAAI,GAAG,CAAC;IACnD,YAAY;IACZ,YAAY;IACZ,WAAW;IACX,aAAa;IACb,cAAc;CACf,CAAC,CAAC;AAEH,MAAM,OAAO,kBAAkB;IAC7B;;;;;;;OAOG;IACH,OAAO,CAAC,WAA8B;QACpC,MAAM,MAAM,GAA0B;YACpC,SAAS,EAAE,EAAE;YACb,MAAM,EAAE,EAAE;YACV,QAAQ,EAAE,EAAE;YACZ,WAAW,EAAE,EAAE;YACf,cAAc,EAAE,EAAE;YAClB,iBAAiB,EAAE,EAAE;YACrB,aAAa,EAAE,KAAK;YACpB,SAAS,EAAE,KAAK;SACjB,CAAC;QAEF,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,EAAE,CAAC;YACjC,OAAO,MAAM,CAAC;QAChB,CAAC;QAED,MAAM,UAAU,GAAG,cAAc,CAAC,WAAW,CAAC,IAAI,GAAG,CAAC;QACtD,MAAM,aAAa,GAAG,IAAI,GAAG,EAAU,CAAC;QACxC,MAAM,MAAM,GAAG,WAAW,CAAC,IAAI,EAAE,CAAC;QAClC,MAAM,KAAK,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;QACnC,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC,IAAI,EAAE,EAAE;YAC3B,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;gBAClB,KAAK,eAAe,CAAC,CAAC,CAAC;oBACrB,IAAI,cAAc,CAAC,IAAI,CAAC;wBAAE,MAAM,CAAC,aAAa,GAAG,IAAI,CAAC;oBACtD,OAAO;gBACT,CAAC;gBACD,KAAK,iBAAiB,CAAC,CAAC,CAAC;oBACvB,MAAM,GAAG,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC;oBACrC,IAAI,GAAG;wBAAE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;oBACjC,OAAO;gBACT,CAAC;gBACD,KAAK,iBAAiB,CAAC,CAAC,CAAC;oBACvB,MAAM,IAAI,GAAG,uBAAuB,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;oBACvD,IAAI,IAAI,EAAE,CAAC;wBACT,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;wBAC5B,OAAO;oBACT,CAAC;oBACD,MAAM,GAAG,GAAG,mBAAmB,CAAC,IAAI,CAAC,CAAC;oBACtC,IAAI,GAAG,EAAE,CAAC;wBACR,IAAI,GAAG,CAAC,IAAI,KAAK,IAAI;4BAAE,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;6BAC5C,IAAI,GAAG,CAAC,IAAI,KAAK,OAAO;4BAAE,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;wBAC5D,OAAO;oBACT,CAAC;oBACD,MAAM,GAAG,GAAG,kBAAkB,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;oBACjD,IAAI,GAAG,EAAE,CAAC;wBACR,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;wBAChC,OAAO;oBACT,CAAC;oBACD,MAAM,SAAS,GAAG,mBAAmB,CAAC,IAAI,CAAC,CAAC;oBAC5C,IAAI,SAAS;wBAAE,aAAa,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;oBAC5C,OAAO;gBACT,CAAC;gBACD,KAAK,mBAAmB,CAAC,CAAC,CAAC;oBACzB,6DAA6D;oBAC7D,MAAM,GAAG,GAAG,oBAAoB,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;oBACnD,IAAI,GAAG;wBAAE,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;oBACzC,OAAO;gBACT,CAAC;gBACD;oBACE,OAAO;YACX,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,MAAM,CAAC,iBAAiB,GAAG,CAAC,GAAG,aAAa,CAAC,CAAC;QAC9C,MAAM,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC;QACnC,OAAO,MAAM,CAAC;IAChB,CAAC;CACF;AAED;;;4EAG4E;AAE5E,SAAS,cAAc,CAAC,IAAuB;IAC7C,OAAO,CACL,IAAI,CAAC,IAAI,KAAK,gBAAgB;QAC9B,IAAI,CAAC,IAAI,KAAK,qBAAqB;QACnC,IAAI,CAAC,IAAI,KAAK,sBAAsB;QACpC,IAAI,CAAC,IAAI,KAAK,UAAU;QACxB,IAAI,CAAC,IAAI,KAAK,mBAAmB,CAClC,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,SAAS,cAAc,CAAC,MAAyB;IAC/C,MAAM,MAAM,GAAG,MAAM,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC;IACtD,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,gFAAgF;QAChF,MAAM,WAAW,GAAG,MAAM,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC;QAC1D,IAAI,WAAW,EAAE,IAAI,KAAK,YAAY;YAAE,OAAO,WAAW,CAAC,IAAI,CAAC;QAChE,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,KAAK,GAAG,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;IACtC,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IACxB,IAAI,KAAK,CAAC,IAAI,KAAK,YAAY;QAAE,OAAO,KAAK,CAAC,IAAI,CAAC;IACnD,8DAA8D;IAC9D,IAAI,KAAK,CAAC,IAAI,KAAK,oBAAoB,IAAI,KAAK,CAAC,IAAI,KAAK,oBAAoB,EAAE,CAAC;QAC/E,MAAM,OAAO,GAAG,KAAK,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;QACnD,IAAI,OAAO,EAAE,IAAI,KAAK,YAAY;YAAE,OAAO,OAAO,CAAC,IAAI,CAAC;IAC1D,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,cAAc,CAAC,OAA0B;IAChD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC,EAAE,EAAE,CAAC;QAC5C,MAAM,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC3B,IAAI,CAAC,EAAE,IAAI,KAAK,cAAc;YAAE,OAAO,IAAI,CAAC;IAC9C,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,uBAAuB,CAC9B,IAAuB,EACvB,UAAkB;IAElB,MAAM,EAAE,GAAG,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC;IAC9C,IAAI,EAAE,EAAE,IAAI,KAAK,mBAAmB;QAAE,OAAO,IAAI,CAAC;IAClD,MAAM,GAAG,GAAG,EAAE,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC;IAC3C,MAAM,IAAI,GAAG,EAAE,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC;IAC9C,IAAI,GAAG,EAAE,IAAI,KAAK,UAAU,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC;IACnD,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC;IAC7B,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC;QAAE,OAAO,IAAI,CAAC;IAE/C,MAAM,IAAI,GAAG,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC;IACjD,MAAM,QAAQ,GAAG,IAAI,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC;IACxC,MAAM,SAAS,GAAG,IAAI,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC;IACzC,MAAM,MAAM,GAAG,cAAc,CAAC,SAAS,IAAI,IAAI,EAAE,UAAU,CAAC,CAAC;IAC7D,MAAM,KAAK,GAAG,WAAW,CAAC,QAAQ,IAAI,IAAI,CAAC,CAAC;IAC5C,MAAM,QAAQ,GAAqB;QACjC,IAAI,EAAE,UAAU;QAChB,MAAM;QACN,IAAI,EAAE,IAAI,CAAC,aAAa,CAAC,GAAG,GAAG,CAAC;KACjC,CAAC;IACF,IAAI,KAAK,KAAK,IAAI;QAAE,QAAQ,CAAC,UAAU,GAAG,KAAK,CAAC;IAChD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,SAAS,gBAAgB,CACvB,IAAY;IAEZ,OAAO,gBAAgB,CAAC,GAAG,CAAC,IAAgC,CAAC,CAAC;AAChE,CAAC;AAED,SAAS,cAAc,CACrB,IAA8B,EAC9B,MAAc;IAEd,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO,MAAM,KAAK,UAAU;YAC1B,CAAC,CAAC,uBAAuB;YACzB,CAAC,CAAC,uBAAuB,CAAC;IAC9B,CAAC;IACD,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC3B,MAAM,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC5B,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;YAAE,OAAO,CAAC,CAAC;IACnC,CAAC;IACD,gGAAgG;IAChG,OAAO,MAAM,KAAK,UAAU;QAC1B,CAAC,CAAC,uBAAuB;QACzB,CAAC,CAAC,uBAAuB,CAAC;AAC9B,CAAC;AAED,SAAS,WAAW,CAAC,IAA8B;IACjD,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC;IACvB,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;IACvB,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC;IACvB,OAAO,IAAI,CAAC,MAAM,GAAG,kBAAkB;QACrC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,kBAAkB,CAAC;QACnC,CAAC,CAAC,IAAI,CAAC;AACX,CAAC;AAED,SAAS,kBAAkB,CACzB,IAAuB;IAEvB,4EAA4E;IAC5E,0EAA0E;IAC1E,4EAA4E;IAC5E,kDAAkD;IAClD,IAAI,OAAO,GAA6B,IAAI,CAAC;IAC7C,IAAI,eAAe,GAA6B,IAAI,CAAC;IACrD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,EAAE,EAAE,CAAC;QACzC,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACxB,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO;YAAE,SAAS;QAC/B,IAAI,CAAC,eAAe;YAAE,eAAe,GAAG,CAAC,CAAC;QAC1C,IAAI,CAAC,CAAC,IAAI,KAAK,gBAAgB,EAAE,CAAC;YAChC,OAAO,GAAG,CAAC,CAAC;YACZ,MAAM;QACR,CAAC;IACH,CAAC;IAED,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,IAAI,CAAC,eAAe;YAAE,OAAO,IAAI,CAAC;QAClC,MAAM,QAAQ,GAAkB;YAC9B,MAAM,EAAE,oBAAoB;YAC5B,eAAe,EAAE,cAAc;YAC/B,IAAI,EAAE,IAAI,CAAC,aAAa,CAAC,GAAG,GAAG,CAAC;SACjC,CAAC;QACF,MAAM,IAAI,GAAG,WAAW,CAAC,eAAe,CAAC,CAAC;QAC1C,IAAI,IAAI,KAAK,IAAI;YAAE,QAAQ,CAAC,YAAY,GAAG,IAAI,CAAC;QAChD,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,MAAM,WAAW,GAAG,OAAO,CAAC,iBAAiB,CAAC,aAAa,CAAC,CAAC;IAC7D,MAAM,SAAS,GAAG,WAAW,EAAE,IAAI,IAAI,OAAO,CAAC;IAC/C,MAAM,IAAI,GAAG,OAAO,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC;IACpD,MAAM,QAAQ,GAAG,IAAI,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC;IACxC,MAAM,SAAS,GAAG,IAAI,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC;IAEzC,uDAAuD;IACvD,IAAI,SAAS,KAAK,eAAe,EAAE,CAAC;QAClC,MAAM,MAAM,GACV,QAAQ,EAAE,IAAI,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YACnE,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC;YACvB,CAAC,CAAC,oBAAoB,CAAC;QAC3B,MAAM,QAAQ,GAAkB;YAC9B,MAAM;YACN,eAAe,EAAE,SAAS;YAC1B,IAAI,EAAE,IAAI,CAAC,aAAa,CAAC,GAAG,GAAG,CAAC;SACjC,CAAC;QACF,MAAM,IAAI,GAAG,WAAW,CAAC,SAAS,IAAI,IAAI,CAAC,CAAC;QAC5C,IAAI,IAAI,KAAK,IAAI;YAAE,QAAQ,CAAC,YAAY,GAAG,IAAI,CAAC;QAChD,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,MAAM,QAAQ,GAAkB;QAC9B,MAAM,EAAE,oBAAoB;QAC5B,eAAe,EAAE,SAAS;QAC1B,IAAI,EAAE,IAAI,CAAC,aAAa,CAAC,GAAG,GAAG,CAAC;KACjC,CAAC;IACF,MAAM,IAAI,GAAG,WAAW,CAAC,QAAQ,IAAI,IAAI,CAAC,CAAC;IAC3C,IAAI,IAAI,KAAK,IAAI;QAAE,QAAQ,CAAC,YAAY,GAAG,IAAI,CAAC;IAChD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,SAAS,mBAAmB,CAC1B,IAAuB;IAEvB,MAAM,EAAE,GAAG,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC;IAC9C,IAAI,CAAC,EAAE;QAAE,OAAO,IAAI,CAAC;IAErB,sCAAsC;IACtC,IAAI,EAAE,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;QAC7B,MAAM,IAAI,GAAG,EAAE,CAAC,IAAI,CAAC;QACrB,IAAI,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YAC1B,OAAO;gBACL,MAAM,EAAE,IAAI;gBACZ,IAAI,EAAE,IAAI,CAAC,aAAa,CAAC,GAAG,GAAG,CAAC;gBAChC,IAAI,EAAE,OAAO;aACd,CAAC;QACJ,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,EAAE,CAAC,IAAI,KAAK,mBAAmB,EAAE,CAAC;QACpC,MAAM,KAAK,GAAG,WAAW,CAAC,EAAE,CAAC,CAAC;QAC9B,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC;QACpC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QACtB,IAAI,IAAI,IAAI,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YAClC,OAAO;gBACL,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC;gBACvB,IAAI,EAAE,IAAI,CAAC,aAAa,CAAC,GAAG,GAAG,CAAC;gBAChC,IAAI,EAAE,OAAO;aACd,CAAC;QACJ,CAAC;QACD,IAAI,IAAI,IAAI,mBAAmB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YAC1C,OAAO;gBACL,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC;gBACvB,IAAI,EAAE,IAAI,CAAC,aAAa,CAAC,GAAG,GAAG,CAAC;gBAChC,IAAI,EAAE,IAAI;aACX,CAAC;QACJ,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;GAIG;AACH,SAAS,WAAW,CAAC,IAAuB;IAC1C,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,IAAI,OAAO,GAA6B,IAAI,CAAC;IAC7C,OAAO,OAAO,EAAE,CAAC;QACf,IAAI,OAAO,CAAC,IAAI,KAAK,mBAAmB,EAAE,CAAC;YACzC,MAAM,IAAI,GAAG,OAAO,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC;YACnD,IAAI,IAAI,EAAE,IAAI,KAAK,qBAAqB,IAAI,IAAI,EAAE,IAAI,KAAK,YAAY,EAAE,CAAC;gBACxE,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC3B,CAAC;iBAAM,CAAC;gBACN,OAAO,EAAE,CAAC;YACZ,CAAC;YACD,OAAO,GAAG,OAAO,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC;QAChD,CAAC;aAAM,IAAI,OAAO,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;YACzC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAC5B,OAAO,GAAG,IAAI,CAAC;QACjB,CAAC;aAAM,CAAC;YACN,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,kBAAkB,CACzB,IAAuB,EACvB,UAAkB;IAElB,MAAM,EAAE,GAAG,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC;IAC9C,IAAI,EAAE,EAAE,IAAI,KAAK,mBAAmB;QAAE,OAAO,IAAI,CAAC;IAClD,MAAM,GAAG,GAAG,EAAE,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC;IAC3C,MAAM,IAAI,GAAG,EAAE,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC;IAC9C,IAAI,GAAG,EAAE,IAAI,KAAK,UAAU,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC;IAEnD,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;QAC/C,MAAM,IAAI,GAAG,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC;QACjD,MAAM,GAAG,GAAG,IAAI,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC;QACnC,MAAM,OAAO,GAAG,GAAG,CAAC,CAAC,CAAC,qBAAqB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QACxD,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;YACrB,OAAO;gBACL,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,GAAG,EAAE,OAAO;gBACZ,IAAI,EAAE,IAAI,CAAC,aAAa,CAAC,GAAG,GAAG,CAAC;aACjC,CAAC;QACJ,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,oBAAoB,CAC3B,IAAuB,EACvB,UAAkB;IAElB,4BAA4B;IAC5B,4BAA4B;IAC5B,MAAM,GAAG,GAAG,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC;IAC7C,MAAM,IAAI,GAAG,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC;IAChD,IAAI,CAAC,IAAI,IAAI,GAAG,EAAE,IAAI,KAAK,mBAAmB;QAAE,OAAO,IAAI,CAAC;IAC5D,MAAM,QAAQ,GAAG,GAAG,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC;IACjD,MAAM,SAAS,GAAG,GAAG,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC;IACpD,IAAI,QAAQ,EAAE,IAAI,KAAK,UAAU,IAAI,CAAC,SAAS;QAAE,OAAO,IAAI,CAAC;IAC7D,IAAI,SAAS,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;QAC7B,OAAO;YACL,IAAI,EAAE,KAAK;YACX,GAAG,EAAE,IAAI,CAAC,IAAI;YACd,IAAI,EAAE,IAAI,CAAC,aAAa,CAAC,GAAG,GAAG,CAAC;SACjC,CAAC;IACJ,CAAC;IACD,IAAI,SAAS,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;QAC7B,OAAO;YACL,IAAI,EAAE,KAAK;YACX,GAAG,EAAE,IAAI,CAAC,IAAI;YACd,IAAI,EAAE,IAAI,CAAC,aAAa,CAAC,GAAG,GAAG,CAAC;SACjC,CAAC;IACJ,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,mBAAmB,CAC1B,IAAuB;IAEvB,MAAM,EAAE,GAAG,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC;IAC9C,IAAI,EAAE,EAAE,IAAI,KAAK,YAAY,IAAI,eAAe,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QAC9D,OAAO,EAAE,CAAC,IAAI,CAAC;IACjB,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;GAKG;AACH,SAAS,qBAAqB,CAAC,IAAuB;IACpD,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC3B,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC;QACtB,OAAO,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAClD,CAAC;IACD,IAAI,IAAI,CAAC,IAAI,KAAK,iBAAiB,EAAE,CAAC;QACpC,oEAAoE;QACpE,MAAM,eAAe,GAAG,CAAC,GAAG,EAAE;YAC5B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,EAAE,EAAE,CAAC;gBACzC,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,uBAAuB;oBAAE,OAAO,IAAI,CAAC;YACnE,CAAC;YACD,OAAO,KAAK,CAAC;QACf,CAAC,CAAC,EAAE,CAAC;QACL,IAAI,eAAe;YAAE,OAAO,WAAW,CAAC;QACxC,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC;QACtB,OAAO,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAClD,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAKD,SAAS,IAAI,CACX,MAAyB,EACzB,KAAgB,EAChB,KAAoB,EACpB,KAAK,GAAG,CAAC;IAET,IAAI,KAAK,GAAG,cAAc,EAAE,CAAC;QAC3B,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC;QACvB,OAAO;IACT,CAAC;IACD,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;IAC1B,IAAI,MAAM,CAAC,cAAc,EAAE,EAAE,CAAC;QAC5B,GAAG,CAAC;YACF,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;QACxC,CAAC,QAAQ,MAAM,CAAC,eAAe,EAAE,EAAE;QACnC,MAAM,CAAC,UAAU,EAAE,CAAC;IACtB,CAAC;AACH,CAAC"}
@@ -0,0 +1,196 @@
1
+ /**
2
+ * HonoAppModel — unified data model produced by HonoExtractor and consumed
3
+ * by trace_route, trace_middleware_chain, analyze_hono_app, trace_context_flow,
4
+ * extract_api_contract, trace_rpc_types, audit_hono_security, visualize_hono_routes.
5
+ *
6
+ * Spec: docs/specs/2026-04-10-hono-framework-intelligence-spec.md
7
+ * All Map<> fields use Record<> for JSON-serialization safety (spec HIGH-2).
8
+ */
9
+ export interface HonoAppModel {
10
+ entry_file: string;
11
+ app_variables: Record<string, HonoApp>;
12
+ routes: HonoRoute[];
13
+ mounts: HonoMount[];
14
+ middleware_chains: MiddlewareChain[];
15
+ context_vars: ContextVariable[];
16
+ openapi_routes: OpenAPIRoute[];
17
+ rpc_exports: RPCExport[];
18
+ runtime: HonoRuntime;
19
+ env_bindings: string[];
20
+ files_used: string[];
21
+ extraction_status: "complete" | "partial";
22
+ skip_reasons: Record<string, number>;
23
+ /** Phase 2: logical modules clustered from routes + middleware + bindings. */
24
+ modules?: HonoModule[];
25
+ }
26
+ export type HonoRuntime = "cloudflare" | "node" | "bun" | "deno" | "lambda" | "vercel" | "netlify" | "fly" | "unknown";
27
+ export interface HonoApp {
28
+ variable_name: string;
29
+ file: string;
30
+ line: number;
31
+ created_via: "new Hono" | "OpenAPIHono" | "factory.createApp" | "basePath";
32
+ base_path: string;
33
+ parent?: string;
34
+ generic_env?: string;
35
+ }
36
+ export type HonoMethod = "GET" | "POST" | "PUT" | "DELETE" | "PATCH" | "OPTIONS" | "ALL" | "ON";
37
+ export interface HonoRoute {
38
+ method: HonoMethod;
39
+ methods?: string[];
40
+ path: string;
41
+ raw_path: string;
42
+ file: string;
43
+ line: number;
44
+ owner_var: string;
45
+ handler: HonoHandler;
46
+ inline_middleware: string[];
47
+ openapi_route_id?: string;
48
+ validators: HonoValidator[];
49
+ regex_constraint?: Record<string, string>;
50
+ /** Phase 2: populated when handler.inline is true — result of InlineHandlerAnalyzer scan. */
51
+ inline_analysis?: InlineHandlerAnalysis;
52
+ }
53
+ export interface HonoHandler {
54
+ name: string;
55
+ symbol_id?: string;
56
+ inline: boolean;
57
+ file: string;
58
+ line: number;
59
+ }
60
+ export interface HonoMount {
61
+ parent_var: string;
62
+ mount_path: string;
63
+ child_var: string;
64
+ child_file: string;
65
+ mount_type: "hono_route" | "hono_mount";
66
+ base_path?: string;
67
+ external_framework?: string;
68
+ }
69
+ export interface MiddlewareChain {
70
+ scope: string;
71
+ scope_pattern: string;
72
+ owner_var: string;
73
+ entries: MiddlewareEntry[];
74
+ }
75
+ export interface MiddlewareEntry {
76
+ name: string;
77
+ order: number;
78
+ line: number;
79
+ file: string;
80
+ inline: boolean;
81
+ is_third_party: boolean;
82
+ imported_from?: string;
83
+ expanded_from?: string;
84
+ conditional: boolean;
85
+ /** Phase 2: populated when middleware is applied under a runtime condition. */
86
+ applied_when?: ConditionalApplication;
87
+ }
88
+ export interface ContextVariable {
89
+ name: string;
90
+ set_points: ContextAccessPoint[];
91
+ get_points: ContextAccessPoint[];
92
+ is_env_binding: boolean;
93
+ }
94
+ export interface ContextAccessPoint {
95
+ file: string;
96
+ line: number;
97
+ containing_symbol?: string;
98
+ scope: "middleware" | "handler" | "service";
99
+ via_context_storage: boolean;
100
+ condition: "always" | "conditional";
101
+ }
102
+ export interface HonoValidator {
103
+ target: "json" | "form" | "query" | "param" | "header" | "cookie";
104
+ schema_symbol_id?: string;
105
+ schema_file: string;
106
+ line: number;
107
+ kind: "zValidator" | "valibot" | "typebox" | "arktype" | "custom";
108
+ }
109
+ export interface OpenAPIRoute {
110
+ id: string;
111
+ method: string;
112
+ path: string;
113
+ hono_path: string;
114
+ request_schemas: Record<string, string>;
115
+ response_schemas: Record<string, {
116
+ schema_symbol_id?: string;
117
+ description?: string;
118
+ }>;
119
+ middleware: string[];
120
+ hidden: boolean;
121
+ file: string;
122
+ line: number;
123
+ }
124
+ export interface RPCExport {
125
+ export_name: string;
126
+ file: string;
127
+ line: number;
128
+ shape: "full_app" | "route_group";
129
+ source_var: string;
130
+ }
131
+ /**
132
+ * Result of analyzing an inline handler body — `(c) => { ... }` inside
133
+ * `app.get/post/...` calls. Populated by InlineHandlerAnalyzer when
134
+ * HonoRoute.handler.inline is true. Named handlers in other files get undefined.
135
+ */
136
+ export interface InlineHandlerAnalysis {
137
+ responses: ResponseEmission[];
138
+ errors: ErrorEmission[];
139
+ db_calls: ExternalCall[];
140
+ fetch_calls: ExternalCall[];
141
+ context_access: ContextAccess[];
142
+ validators_inline: string[];
143
+ has_try_catch: boolean;
144
+ /** True when the analyzer hit MAX_WALK_DEPTH and the analysis is incomplete. */
145
+ truncated: boolean;
146
+ }
147
+ export interface ResponseEmission {
148
+ /** Which `c.*` helper emitted the response (disambiguated from HTTP method). */
149
+ kind: "json" | "text" | "html" | "body" | "redirect" | "newResponse";
150
+ /** Defaults to 200 when status argument omitted. */
151
+ status: number;
152
+ /** Best-effort shape extraction — literal text of first arg, truncated to 200 chars. */
153
+ shape_hint?: string;
154
+ line: number;
155
+ }
156
+ export interface ErrorEmission {
157
+ status: number;
158
+ exception_class: string;
159
+ message_hint?: string;
160
+ line: number;
161
+ }
162
+ export interface ExternalCall {
163
+ callee: string;
164
+ line: number;
165
+ kind: "db" | "fetch" | "queue" | "email" | "other";
166
+ }
167
+ export interface ContextAccess {
168
+ type: "set" | "get" | "var" | "env";
169
+ key: string;
170
+ line: number;
171
+ }
172
+ /**
173
+ * Runtime condition under which a middleware is applied. Set by
174
+ * walkConditionalMiddleware ONLY when conditional — presence of `applied_when`
175
+ * is itself the signal, so no `always_applies` flag is needed. Unconditional
176
+ * middleware leave this field undefined and have `MiddlewareEntry.conditional: false`.
177
+ */
178
+ export interface ConditionalApplication {
179
+ condition_type: "method" | "header" | "path" | "custom";
180
+ /** Raw source text of the condition, truncated to 200 chars by producer. */
181
+ condition_text: string;
182
+ }
183
+ /**
184
+ * A logical module clustered by detect_hono_modules from shared middleware
185
+ * chains, path prefixes, and env bindings. Purely informational; no AST cost.
186
+ */
187
+ export interface HonoModule {
188
+ name: string;
189
+ /** Route ids in canonical "METHOD path" form, e.g. "GET /admin/users". */
190
+ routes: string[];
191
+ middleware: string[];
192
+ bindings: string[];
193
+ path_prefix: string;
194
+ files: string[];
195
+ }
196
+ //# sourceMappingURL=hono-model.d.ts.map