kirograph 0.17.0 → 0.20.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 (815) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +105 -1822
  3. package/dist/architecture/layers/dart.d.ts +10 -0
  4. package/dist/architecture/layers/dart.d.ts.map +1 -0
  5. package/dist/architecture/layers/dart.js +112 -0
  6. package/dist/architecture/layers/dart.js.map +7 -0
  7. package/dist/architecture/layers/elixir.d.ts +6 -0
  8. package/dist/architecture/layers/elixir.d.ts.map +1 -0
  9. package/dist/architecture/layers/index.d.ts.map +1 -1
  10. package/dist/architecture/layers/index.js +3 -1
  11. package/dist/architecture/layers/index.js.map +2 -2
  12. package/dist/architecture/layers/ocaml.d.ts +6 -0
  13. package/dist/architecture/layers/ocaml.d.ts.map +1 -0
  14. package/dist/architecture/layers/scala.d.ts +6 -0
  15. package/dist/architecture/layers/scala.d.ts.map +1 -0
  16. package/dist/architecture/layers/solidity.d.ts +6 -0
  17. package/dist/architecture/layers/solidity.d.ts.map +1 -0
  18. package/dist/architecture/layers/vue.d.ts +6 -0
  19. package/dist/architecture/layers/vue.d.ts.map +1 -0
  20. package/dist/architecture/manifest/elm.d.ts +3 -0
  21. package/dist/architecture/manifest/elm.d.ts.map +1 -0
  22. package/dist/architecture/manifest/index.d.ts.map +1 -1
  23. package/dist/architecture/manifest/ocaml.d.ts +3 -0
  24. package/dist/architecture/manifest/ocaml.d.ts.map +1 -0
  25. package/dist/architecture/manifest/scala.d.ts +3 -0
  26. package/dist/architecture/manifest/scala.d.ts.map +1 -0
  27. package/dist/bin/banner.d.ts.map +1 -1
  28. package/dist/bin/banner.js +74 -6
  29. package/dist/bin/banner.js.map +2 -2
  30. package/dist/bin/commands/affected.d.ts.map +1 -1
  31. package/dist/bin/commands/attack-surface.d.ts +3 -0
  32. package/dist/bin/commands/attack-surface.d.ts.map +1 -0
  33. package/dist/bin/commands/attack-surface.js +164 -0
  34. package/dist/bin/commands/attack-surface.js.map +7 -0
  35. package/dist/bin/commands/benchmark.d.ts +9 -0
  36. package/dist/bin/commands/benchmark.d.ts.map +1 -0
  37. package/dist/bin/commands/benchmark.js +206 -0
  38. package/dist/bin/commands/benchmark.js.map +7 -0
  39. package/dist/bin/commands/budget.d.ts +6 -0
  40. package/dist/bin/commands/budget.d.ts.map +1 -0
  41. package/dist/bin/commands/budget.js +70 -0
  42. package/dist/bin/commands/budget.js.map +7 -0
  43. package/dist/bin/commands/caveman.d.ts +7 -0
  44. package/dist/bin/commands/caveman.d.ts.map +1 -0
  45. package/dist/bin/commands/communities.d.ts +3 -0
  46. package/dist/bin/commands/communities.d.ts.map +1 -0
  47. package/dist/bin/commands/communities.js +77 -0
  48. package/dist/bin/commands/communities.js.map +7 -0
  49. package/dist/bin/commands/compression.d.ts +7 -0
  50. package/dist/bin/commands/compression.d.ts.map +1 -0
  51. package/dist/bin/commands/context.d.ts.map +1 -1
  52. package/dist/bin/commands/data.d.ts +3 -0
  53. package/dist/bin/commands/data.d.ts.map +1 -0
  54. package/dist/bin/commands/dead-code.d.ts +3 -0
  55. package/dist/bin/commands/dead-code.d.ts.map +1 -0
  56. package/dist/bin/commands/dep-confusion.d.ts +3 -0
  57. package/dist/bin/commands/dep-confusion.d.ts.map +1 -0
  58. package/dist/bin/commands/dep-confusion.js +119 -0
  59. package/dist/bin/commands/dep-confusion.js.map +7 -0
  60. package/dist/bin/commands/docs.d.ts +3 -0
  61. package/dist/bin/commands/docs.d.ts.map +1 -0
  62. package/dist/bin/commands/exec.d.ts +11 -0
  63. package/dist/bin/commands/exec.d.ts.map +1 -0
  64. package/dist/bin/commands/export.d.ts +3 -0
  65. package/dist/bin/commands/export.d.ts.map +1 -0
  66. package/dist/bin/commands/export.js +304 -10
  67. package/dist/bin/commands/export.js.map +2 -2
  68. package/dist/bin/commands/flows.d.ts +3 -0
  69. package/dist/bin/commands/flows.d.ts.map +1 -0
  70. package/dist/bin/commands/flows.js +97 -0
  71. package/dist/bin/commands/flows.js.map +7 -0
  72. package/dist/bin/commands/gain.d.ts +6 -0
  73. package/dist/bin/commands/gain.d.ts.map +1 -0
  74. package/dist/bin/commands/help.d.ts +7 -0
  75. package/dist/bin/commands/help.d.ts.map +1 -1
  76. package/dist/bin/commands/help.js +399 -101
  77. package/dist/bin/commands/help.js.map +2 -2
  78. package/dist/bin/commands/hotspots.d.ts +3 -0
  79. package/dist/bin/commands/hotspots.d.ts.map +1 -0
  80. package/dist/bin/commands/hotspots.js +94 -1
  81. package/dist/bin/commands/hotspots.js.map +3 -3
  82. package/dist/bin/commands/install.d.ts.map +1 -1
  83. package/dist/bin/commands/install.js +90 -8
  84. package/dist/bin/commands/install.js.map +2 -2
  85. package/dist/bin/commands/licenses.d.ts +3 -0
  86. package/dist/bin/commands/licenses.d.ts.map +1 -0
  87. package/dist/bin/commands/licenses.js +201 -0
  88. package/dist/bin/commands/licenses.js.map +7 -0
  89. package/dist/bin/commands/memory.d.ts +16 -0
  90. package/dist/bin/commands/memory.d.ts.map +1 -0
  91. package/dist/bin/commands/memory.js +151 -4
  92. package/dist/bin/commands/memory.js.map +2 -2
  93. package/dist/bin/commands/path.d.ts +3 -0
  94. package/dist/bin/commands/path.d.ts.map +1 -0
  95. package/dist/bin/commands/pattern.d.ts +3 -0
  96. package/dist/bin/commands/pattern.d.ts.map +1 -0
  97. package/dist/bin/commands/pattern.js +592 -0
  98. package/dist/bin/commands/pattern.js.map +7 -0
  99. package/dist/bin/commands/query.d.ts.map +1 -1
  100. package/dist/bin/commands/reachability.d.ts +3 -0
  101. package/dist/bin/commands/reachability.d.ts.map +1 -0
  102. package/dist/bin/commands/reachability.js +160 -0
  103. package/dist/bin/commands/reachability.js.map +7 -0
  104. package/dist/bin/commands/read.d.ts +6 -0
  105. package/dist/bin/commands/read.d.ts.map +1 -0
  106. package/dist/bin/commands/read.js +100 -0
  107. package/dist/bin/commands/read.js.map +7 -0
  108. package/dist/bin/commands/refactor.d.ts +3 -0
  109. package/dist/bin/commands/refactor.d.ts.map +1 -0
  110. package/dist/bin/commands/refactor.js +116 -0
  111. package/dist/bin/commands/refactor.js.map +7 -0
  112. package/dist/bin/commands/remediation.d.ts +3 -0
  113. package/dist/bin/commands/remediation.d.ts.map +1 -0
  114. package/dist/bin/commands/remediation.js +133 -0
  115. package/dist/bin/commands/remediation.js.map +7 -0
  116. package/dist/bin/commands/sbom.d.ts +3 -0
  117. package/dist/bin/commands/sbom.d.ts.map +1 -0
  118. package/dist/bin/commands/sbom.js +76 -0
  119. package/dist/bin/commands/sbom.js.map +7 -0
  120. package/dist/bin/commands/security-ci-report.d.ts +9 -0
  121. package/dist/bin/commands/security-ci-report.d.ts.map +1 -0
  122. package/dist/bin/commands/security-ci-report.js +267 -0
  123. package/dist/bin/commands/security-ci-report.js.map +7 -0
  124. package/dist/bin/commands/security-export.d.ts +2 -0
  125. package/dist/bin/commands/security-export.d.ts.map +1 -0
  126. package/dist/bin/commands/security-export.js +1349 -0
  127. package/dist/bin/commands/security-export.js.map +7 -0
  128. package/dist/bin/commands/security-flows.d.ts +3 -0
  129. package/dist/bin/commands/security-flows.d.ts.map +1 -0
  130. package/dist/bin/commands/security-flows.js +126 -0
  131. package/dist/bin/commands/security-flows.js.map +7 -0
  132. package/dist/bin/commands/security-secrets.d.ts +3 -0
  133. package/dist/bin/commands/security-secrets.d.ts.map +1 -0
  134. package/dist/bin/commands/security-secrets.js +170 -0
  135. package/dist/bin/commands/security-secrets.js.map +7 -0
  136. package/dist/bin/commands/security.d.ts +3 -0
  137. package/dist/bin/commands/security.d.ts.map +1 -0
  138. package/dist/bin/commands/security.js +208 -0
  139. package/dist/bin/commands/security.js.map +7 -0
  140. package/dist/bin/commands/snapshot.d.ts +3 -0
  141. package/dist/bin/commands/snapshot.d.ts.map +1 -0
  142. package/dist/bin/commands/staleness.d.ts +3 -0
  143. package/dist/bin/commands/staleness.d.ts.map +1 -0
  144. package/dist/bin/commands/staleness.js +144 -0
  145. package/dist/bin/commands/staleness.js.map +7 -0
  146. package/dist/bin/commands/status.d.ts.map +1 -1
  147. package/dist/bin/commands/status.js +129 -2
  148. package/dist/bin/commands/status.js.map +2 -2
  149. package/dist/bin/commands/supply-chain.d.ts +3 -0
  150. package/dist/bin/commands/supply-chain.d.ts.map +1 -0
  151. package/dist/bin/commands/supply-chain.js +138 -0
  152. package/dist/bin/commands/supply-chain.js.map +7 -0
  153. package/dist/bin/commands/surprising.d.ts +3 -0
  154. package/dist/bin/commands/surprising.d.ts.map +1 -0
  155. package/dist/bin/commands/sync.d.ts.map +1 -1
  156. package/dist/bin/commands/uninit.d.ts.map +1 -1
  157. package/dist/bin/commands/uninit.js +109 -60
  158. package/dist/bin/commands/uninit.js.map +2 -2
  159. package/dist/bin/commands/utils.d.ts +5 -0
  160. package/dist/bin/commands/utils.d.ts.map +1 -1
  161. package/dist/bin/commands/vex.d.ts +3 -0
  162. package/dist/bin/commands/vex.d.ts.map +1 -0
  163. package/dist/bin/commands/vex.js +76 -0
  164. package/dist/bin/commands/vex.js.map +7 -0
  165. package/dist/bin/commands/vuln-suppress.d.ts +3 -0
  166. package/dist/bin/commands/vuln-suppress.d.ts.map +1 -0
  167. package/dist/bin/commands/vuln-suppress.js +95 -0
  168. package/dist/bin/commands/vuln-suppress.js.map +7 -0
  169. package/dist/bin/commands/vulns.d.ts +3 -0
  170. package/dist/bin/commands/vulns.d.ts.map +1 -0
  171. package/dist/bin/commands/vulns.js +382 -0
  172. package/dist/bin/commands/vulns.js.map +7 -0
  173. package/dist/bin/installer/archive.d.ts +47 -0
  174. package/dist/bin/installer/archive.d.ts.map +1 -0
  175. package/dist/bin/installer/auto-detect.d.ts +16 -0
  176. package/dist/bin/installer/auto-detect.d.ts.map +1 -0
  177. package/dist/bin/installer/auto-detect.js +125 -0
  178. package/dist/bin/installer/auto-detect.js.map +7 -0
  179. package/dist/bin/installer/caveman.d.ts +12 -0
  180. package/dist/bin/installer/caveman.d.ts.map +1 -0
  181. package/dist/bin/installer/cli-agent.d.ts +7 -2
  182. package/dist/bin/installer/cli-agent.d.ts.map +1 -1
  183. package/dist/bin/installer/cli-agent.js +32 -5
  184. package/dist/bin/installer/cli-agent.js.map +2 -2
  185. package/dist/bin/installer/common.d.ts +36 -0
  186. package/dist/bin/installer/common.d.ts.map +1 -0
  187. package/dist/bin/installer/common.js +48 -0
  188. package/dist/bin/installer/common.js.map +2 -2
  189. package/dist/bin/installer/config-prompt.d.ts +1 -1
  190. package/dist/bin/installer/config-prompt.d.ts.map +1 -1
  191. package/dist/bin/installer/config-prompt.js +85 -2
  192. package/dist/bin/installer/config-prompt.js.map +2 -2
  193. package/dist/bin/installer/dashboard.d.ts.map +1 -1
  194. package/dist/bin/installer/detect.d.ts +30 -0
  195. package/dist/bin/installer/detect.d.ts.map +1 -0
  196. package/dist/bin/installer/detect.js +309 -0
  197. package/dist/bin/installer/detect.js.map +7 -0
  198. package/dist/bin/installer/hooks.d.ts +4 -1
  199. package/dist/bin/installer/hooks.d.ts.map +1 -1
  200. package/dist/bin/installer/hooks.js +34 -0
  201. package/dist/bin/installer/hooks.js.map +2 -2
  202. package/dist/bin/installer/index.d.ts +5 -4
  203. package/dist/bin/installer/index.d.ts.map +1 -1
  204. package/dist/bin/installer/index.js +46 -8
  205. package/dist/bin/installer/index.js.map +2 -2
  206. package/dist/bin/installer/instructions.d.ts +14 -0
  207. package/dist/bin/installer/instructions.d.ts.map +1 -0
  208. package/dist/bin/installer/instructions.js +209 -3
  209. package/dist/bin/installer/instructions.js.map +2 -2
  210. package/dist/bin/installer/mcp.d.ts.map +1 -1
  211. package/dist/bin/installer/prompts.d.ts +17 -0
  212. package/dist/bin/installer/prompts.d.ts.map +1 -1
  213. package/dist/bin/installer/qdrant-dashboard.d.ts.map +1 -1
  214. package/dist/bin/installer/steering.d.ts +14 -2
  215. package/dist/bin/installer/steering.d.ts.map +1 -1
  216. package/dist/bin/installer/steering.js +488 -0
  217. package/dist/bin/installer/steering.js.map +2 -2
  218. package/dist/bin/installer/targets/aider.d.ts +6 -0
  219. package/dist/bin/installer/targets/aider.d.ts.map +1 -0
  220. package/dist/bin/installer/targets/aider.js +3 -3
  221. package/dist/bin/installer/targets/aider.js.map +2 -2
  222. package/dist/bin/installer/targets/amp.d.ts +6 -0
  223. package/dist/bin/installer/targets/amp.d.ts.map +1 -0
  224. package/dist/bin/installer/targets/amp.js +3 -3
  225. package/dist/bin/installer/targets/amp.js.map +2 -2
  226. package/dist/bin/installer/targets/antigravity.d.ts +13 -0
  227. package/dist/bin/installer/targets/antigravity.d.ts.map +1 -0
  228. package/dist/bin/installer/targets/antigravity.js +35 -6
  229. package/dist/bin/installer/targets/antigravity.js.map +2 -2
  230. package/dist/bin/installer/targets/augment.d.ts +6 -0
  231. package/dist/bin/installer/targets/augment.d.ts.map +1 -0
  232. package/dist/bin/installer/targets/augment.js +3 -3
  233. package/dist/bin/installer/targets/augment.js.map +2 -2
  234. package/dist/bin/installer/targets/claude.d.ts +6 -0
  235. package/dist/bin/installer/targets/claude.d.ts.map +1 -0
  236. package/dist/bin/installer/targets/claude.js +49 -5
  237. package/dist/bin/installer/targets/claude.js.map +2 -2
  238. package/dist/bin/installer/targets/cline.d.ts +13 -0
  239. package/dist/bin/installer/targets/cline.d.ts.map +1 -0
  240. package/dist/bin/installer/targets/cline.js +32 -6
  241. package/dist/bin/installer/targets/cline.js.map +2 -2
  242. package/dist/bin/installer/targets/codex.d.ts +6 -0
  243. package/dist/bin/installer/targets/codex.d.ts.map +1 -0
  244. package/dist/bin/installer/targets/codex.js +64 -12
  245. package/dist/bin/installer/targets/codex.js.map +2 -2
  246. package/dist/bin/installer/targets/continue.d.ts +12 -0
  247. package/dist/bin/installer/targets/continue.d.ts.map +1 -0
  248. package/dist/bin/installer/targets/continue.js +2 -2
  249. package/dist/bin/installer/targets/continue.js.map +2 -2
  250. package/dist/bin/installer/targets/copilot-cli.d.ts +12 -0
  251. package/dist/bin/installer/targets/copilot-cli.d.ts.map +1 -0
  252. package/dist/bin/installer/targets/copilot-cli.js +101 -0
  253. package/dist/bin/installer/targets/copilot-cli.js.map +7 -0
  254. package/dist/bin/installer/targets/copilot.d.ts +6 -0
  255. package/dist/bin/installer/targets/copilot.d.ts.map +1 -0
  256. package/dist/bin/installer/targets/copilot.js +31 -5
  257. package/dist/bin/installer/targets/copilot.js.map +2 -2
  258. package/dist/bin/installer/targets/cursor.d.ts +6 -0
  259. package/dist/bin/installer/targets/cursor.d.ts.map +1 -0
  260. package/dist/bin/installer/targets/cursor.js +4 -4
  261. package/dist/bin/installer/targets/cursor.js.map +2 -2
  262. package/dist/bin/installer/targets/devin.d.ts +13 -0
  263. package/dist/bin/installer/targets/devin.d.ts.map +1 -0
  264. package/dist/bin/installer/targets/devin.js +2 -2
  265. package/dist/bin/installer/targets/devin.js.map +2 -2
  266. package/dist/bin/installer/targets/gemini-cli.d.ts +16 -0
  267. package/dist/bin/installer/targets/gemini-cli.d.ts.map +1 -0
  268. package/dist/bin/installer/targets/gemini-cli.js +2 -2
  269. package/dist/bin/installer/targets/gemini-cli.js.map +2 -2
  270. package/dist/bin/installer/targets/generic.d.ts +59 -0
  271. package/dist/bin/installer/targets/generic.d.ts.map +1 -0
  272. package/dist/bin/installer/targets/generic.js +2 -14
  273. package/dist/bin/installer/targets/generic.js.map +2 -2
  274. package/dist/bin/installer/targets/goose.d.ts +6 -0
  275. package/dist/bin/installer/targets/goose.d.ts.map +1 -0
  276. package/dist/bin/installer/targets/goose.js +3 -3
  277. package/dist/bin/installer/targets/goose.js.map +2 -2
  278. package/dist/bin/installer/targets/index.d.ts +11 -0
  279. package/dist/bin/installer/targets/index.d.ts.map +1 -0
  280. package/dist/bin/installer/targets/index.js +250 -0
  281. package/dist/bin/installer/targets/index.js.map +2 -2
  282. package/dist/bin/installer/targets/junie.d.ts +13 -0
  283. package/dist/bin/installer/targets/junie.d.ts.map +1 -0
  284. package/dist/bin/installer/targets/junie.js +2 -2
  285. package/dist/bin/installer/targets/junie.js.map +2 -2
  286. package/dist/bin/installer/targets/kilo.d.ts +12 -0
  287. package/dist/bin/installer/targets/kilo.d.ts.map +1 -0
  288. package/dist/bin/installer/targets/kilo.js +2 -2
  289. package/dist/bin/installer/targets/kilo.js.map +2 -2
  290. package/dist/bin/installer/targets/kiro.d.ts +5 -0
  291. package/dist/bin/installer/targets/kiro.d.ts.map +1 -0
  292. package/dist/bin/installer/targets/kiro.js +4 -4
  293. package/dist/bin/installer/targets/kiro.js.map +2 -2
  294. package/dist/bin/installer/targets/opencode.d.ts +13 -0
  295. package/dist/bin/installer/targets/opencode.d.ts.map +1 -0
  296. package/dist/bin/installer/targets/opencode.js +2 -2
  297. package/dist/bin/installer/targets/opencode.js.map +2 -2
  298. package/dist/bin/installer/targets/openhands.d.ts +6 -0
  299. package/dist/bin/installer/targets/openhands.d.ts.map +1 -0
  300. package/dist/bin/installer/targets/openhands.js +3 -3
  301. package/dist/bin/installer/targets/openhands.js.map +2 -2
  302. package/dist/bin/installer/targets/qoder.d.ts +12 -0
  303. package/dist/bin/installer/targets/qoder.d.ts.map +1 -0
  304. package/dist/bin/installer/targets/qoder.js +91 -0
  305. package/dist/bin/installer/targets/qoder.js.map +7 -0
  306. package/dist/bin/installer/targets/qwen.d.ts +12 -0
  307. package/dist/bin/installer/targets/qwen.d.ts.map +1 -0
  308. package/dist/bin/installer/targets/qwen.js +96 -0
  309. package/dist/bin/installer/targets/qwen.js.map +7 -0
  310. package/dist/bin/installer/targets/replit.d.ts +6 -0
  311. package/dist/bin/installer/targets/replit.d.ts.map +1 -0
  312. package/dist/bin/installer/targets/replit.js +3 -3
  313. package/dist/bin/installer/targets/replit.js.map +2 -2
  314. package/dist/bin/installer/targets/roo.d.ts +13 -0
  315. package/dist/bin/installer/targets/roo.d.ts.map +1 -0
  316. package/dist/bin/installer/targets/roo.js +2 -2
  317. package/dist/bin/installer/targets/roo.js.map +2 -2
  318. package/dist/bin/installer/targets/tabnine.d.ts +6 -0
  319. package/dist/bin/installer/targets/tabnine.d.ts.map +1 -0
  320. package/dist/bin/installer/targets/tabnine.js +3 -3
  321. package/dist/bin/installer/targets/tabnine.js.map +2 -2
  322. package/dist/bin/installer/targets/trae.d.ts +6 -0
  323. package/dist/bin/installer/targets/trae.d.ts.map +1 -0
  324. package/dist/bin/installer/targets/trae.js +5 -5
  325. package/dist/bin/installer/targets/trae.js.map +2 -2
  326. package/dist/bin/installer/targets/warp.d.ts +12 -0
  327. package/dist/bin/installer/targets/warp.d.ts.map +1 -0
  328. package/dist/bin/installer/targets/warp.js +2 -2
  329. package/dist/bin/installer/targets/warp.js.map +2 -2
  330. package/dist/bin/installer/targets/windsurf.d.ts +13 -0
  331. package/dist/bin/installer/targets/windsurf.d.ts.map +1 -0
  332. package/dist/bin/installer/targets/windsurf.js +35 -6
  333. package/dist/bin/installer/targets/windsurf.js.map +2 -2
  334. package/dist/bin/kirograph.js +74 -6
  335. package/dist/bin/kirograph.js.map +3 -3
  336. package/dist/bin/progress.d.ts +16 -1
  337. package/dist/bin/progress.d.ts.map +1 -1
  338. package/dist/compression/filters/aws.d.ts +9 -0
  339. package/dist/compression/filters/aws.d.ts.map +1 -0
  340. package/dist/compression/filters/docker.d.ts +6 -0
  341. package/dist/compression/filters/docker.d.ts.map +1 -0
  342. package/dist/compression/filters/files.d.ts +6 -0
  343. package/dist/compression/filters/files.d.ts.map +1 -0
  344. package/dist/compression/filters/generic.d.ts +7 -0
  345. package/dist/compression/filters/generic.d.ts.map +1 -0
  346. package/dist/compression/filters/git.d.ts +6 -0
  347. package/dist/compression/filters/git.d.ts.map +1 -0
  348. package/dist/compression/filters/github.d.ts +6 -0
  349. package/dist/compression/filters/github.d.ts.map +1 -0
  350. package/dist/compression/filters/lint.d.ts +6 -0
  351. package/dist/compression/filters/lint.d.ts.map +1 -0
  352. package/dist/compression/filters/misc.d.ts +6 -0
  353. package/dist/compression/filters/misc.d.ts.map +1 -0
  354. package/dist/compression/filters/package.d.ts +6 -0
  355. package/dist/compression/filters/package.d.ts.map +1 -0
  356. package/dist/compression/filters/test.d.ts +6 -0
  357. package/dist/compression/filters/test.d.ts.map +1 -0
  358. package/dist/compression/index.d.ts +29 -0
  359. package/dist/compression/index.d.ts.map +1 -0
  360. package/dist/compression/naive-cost.d.ts +26 -0
  361. package/dist/compression/naive-cost.d.ts.map +1 -0
  362. package/dist/compression/tracker.d.ts +155 -0
  363. package/dist/compression/tracker.d.ts.map +1 -0
  364. package/dist/compression/tracker.js +80 -0
  365. package/dist/compression/tracker.js.map +2 -2
  366. package/dist/compression/types.d.ts +49 -0
  367. package/dist/compression/types.d.ts.map +1 -0
  368. package/dist/config.d.ts +90 -0
  369. package/dist/config.d.ts.map +1 -1
  370. package/dist/config.js +144 -3
  371. package/dist/config.js.map +2 -2
  372. package/dist/core/lock-manager.d.ts +2 -0
  373. package/dist/core/lock-manager.d.ts.map +1 -1
  374. package/dist/core/pipeline.d.ts +4 -1
  375. package/dist/core/pipeline.d.ts.map +1 -1
  376. package/dist/core/pipeline.js +78 -2
  377. package/dist/core/pipeline.js.map +2 -2
  378. package/dist/core/snapshot.d.ts +58 -0
  379. package/dist/core/snapshot.d.ts.map +1 -0
  380. package/dist/data/filters.d.ts +23 -0
  381. package/dist/data/filters.d.ts.map +1 -0
  382. package/dist/data/indexer.d.ts +25 -0
  383. package/dist/data/indexer.d.ts.map +1 -0
  384. package/dist/data/linker.d.ts +37 -0
  385. package/dist/data/linker.d.ts.map +1 -0
  386. package/dist/data/lint.d.ts +27 -0
  387. package/dist/data/lint.d.ts.map +1 -0
  388. package/dist/data/parsers/csv.d.ts +11 -0
  389. package/dist/data/parsers/csv.d.ts.map +1 -0
  390. package/dist/data/parsers/excel.d.ts +10 -0
  391. package/dist/data/parsers/excel.d.ts.map +1 -0
  392. package/dist/data/parsers/index.d.ts +28 -0
  393. package/dist/data/parsers/index.d.ts.map +1 -0
  394. package/dist/data/parsers/json-array.d.ts +9 -0
  395. package/dist/data/parsers/json-array.d.ts.map +1 -0
  396. package/dist/data/parsers/jsonl.d.ts +9 -0
  397. package/dist/data/parsers/jsonl.d.ts.map +1 -0
  398. package/dist/data/parsers/parquet.d.ts +10 -0
  399. package/dist/data/parsers/parquet.d.ts.map +1 -0
  400. package/dist/data/profiler.d.ts +29 -0
  401. package/dist/data/profiler.d.ts.map +1 -0
  402. package/dist/data/queries.d.ts +95 -0
  403. package/dist/data/queries.d.ts.map +1 -0
  404. package/dist/data/types.d.ts +103 -0
  405. package/dist/data/types.d.ts.map +1 -0
  406. package/dist/db/database.d.ts +57 -0
  407. package/dist/db/database.d.ts.map +1 -1
  408. package/dist/db/database.js +75 -5
  409. package/dist/db/database.js.map +2 -2
  410. package/dist/db/memory-schema.sql +5 -1
  411. package/dist/db/patterns-schema.sql +23 -0
  412. package/dist/db/schema.sql +3 -1
  413. package/dist/db/security-schema.sql +72 -0
  414. package/dist/docs/formats/asciidoc.d.ts +9 -0
  415. package/dist/docs/formats/asciidoc.d.ts.map +1 -0
  416. package/dist/docs/formats/html.d.ts +10 -0
  417. package/dist/docs/formats/html.d.ts.map +1 -0
  418. package/dist/docs/formats/index.d.ts +31 -0
  419. package/dist/docs/formats/index.d.ts.map +1 -0
  420. package/dist/docs/formats/markdown.d.ts +11 -0
  421. package/dist/docs/formats/markdown.d.ts.map +1 -0
  422. package/dist/docs/formats/openapi.d.ts +17 -0
  423. package/dist/docs/formats/openapi.d.ts.map +1 -0
  424. package/dist/docs/formats/org.d.ts +9 -0
  425. package/dist/docs/formats/org.d.ts.map +1 -0
  426. package/dist/docs/formats/plaintext.d.ts +11 -0
  427. package/dist/docs/formats/plaintext.d.ts.map +1 -0
  428. package/dist/docs/formats/rdoc.d.ts +10 -0
  429. package/dist/docs/formats/rdoc.d.ts.map +1 -0
  430. package/dist/docs/formats/rst.d.ts +11 -0
  431. package/dist/docs/formats/rst.d.ts.map +1 -0
  432. package/dist/docs/indexer.d.ts +49 -0
  433. package/dist/docs/indexer.d.ts.map +1 -0
  434. package/dist/docs/linker.d.ts +30 -0
  435. package/dist/docs/linker.d.ts.map +1 -0
  436. package/dist/docs/lint.d.ts +27 -0
  437. package/dist/docs/lint.d.ts.map +1 -0
  438. package/dist/docs/queries.d.ts +78 -0
  439. package/dist/docs/queries.d.ts.map +1 -0
  440. package/dist/docs/section-id.d.ts +48 -0
  441. package/dist/docs/section-id.d.ts.map +1 -0
  442. package/dist/docs/summarizer.d.ts +13 -0
  443. package/dist/docs/summarizer.d.ts.map +1 -0
  444. package/dist/docs/types.d.ts +71 -0
  445. package/dist/docs/types.d.ts.map +1 -0
  446. package/dist/docs/vectors.d.ts +54 -0
  447. package/dist/docs/vectors.d.ts.map +1 -0
  448. package/dist/extraction/extractor.d.ts +1 -1
  449. package/dist/extraction/extractor.d.ts.map +1 -1
  450. package/dist/extraction/extractor.js +81 -0
  451. package/dist/extraction/extractor.js.map +2 -2
  452. package/dist/extraction/grammars.d.ts +6 -0
  453. package/dist/extraction/grammars.d.ts.map +1 -1
  454. package/dist/extraction/grammars.js +32 -8
  455. package/dist/extraction/grammars.js.map +2 -2
  456. package/dist/extraction/languages.d.ts.map +1 -1
  457. package/dist/extraction/languages.js +43 -1
  458. package/dist/extraction/languages.js.map +2 -2
  459. package/dist/extraction/notebook.d.ts +14 -0
  460. package/dist/extraction/notebook.d.ts.map +1 -0
  461. package/dist/extraction/notebook.js +300 -0
  462. package/dist/extraction/notebook.js.map +7 -0
  463. package/dist/extraction/wasm/tree-sitter-astro.wasm +0 -0
  464. package/dist/extraction/wasm/tree-sitter-gdscript.wasm +0 -0
  465. package/dist/extraction/wasm/tree-sitter-julia.wasm +0 -0
  466. package/dist/extraction/wasm/tree-sitter-nix.wasm +0 -0
  467. package/dist/extraction/wasm/tree-sitter-perl.wasm +0 -0
  468. package/dist/extraction/wasm/tree-sitter-powershell.wasm +0 -0
  469. package/dist/extraction/wasm/tree-sitter-r.wasm +0 -0
  470. package/dist/extraction/wasm/tree-sitter-sql.wasm +0 -0
  471. package/dist/extraction/wasm/tree-sitter-verilog.wasm +0 -0
  472. package/dist/frameworks/amplify.d.ts +9 -0
  473. package/dist/frameworks/amplify.d.ts.map +1 -0
  474. package/dist/frameworks/angular.d.ts +9 -0
  475. package/dist/frameworks/angular.d.ts.map +1 -0
  476. package/dist/frameworks/ansible.d.ts +8 -0
  477. package/dist/frameworks/ansible.d.ts.map +1 -0
  478. package/dist/frameworks/cloudformation.d.ts +9 -0
  479. package/dist/frameworks/cloudformation.d.ts.map +1 -0
  480. package/dist/frameworks/docker.d.ts +9 -0
  481. package/dist/frameworks/docker.d.ts.map +1 -0
  482. package/dist/frameworks/elixir.d.ts +6 -0
  483. package/dist/frameworks/elixir.d.ts.map +1 -0
  484. package/dist/frameworks/flutter.d.ts +12 -0
  485. package/dist/frameworks/flutter.d.ts.map +1 -0
  486. package/dist/frameworks/flutter.js +130 -0
  487. package/dist/frameworks/flutter.js.map +7 -0
  488. package/dist/frameworks/iac.d.ts +10 -0
  489. package/dist/frameworks/iac.d.ts.map +1 -0
  490. package/dist/frameworks/index.d.ts +14 -0
  491. package/dist/frameworks/index.d.ts.map +1 -1
  492. package/dist/frameworks/index.js +7 -1
  493. package/dist/frameworks/index.js.map +3 -3
  494. package/dist/frameworks/kubernetes.d.ts +9 -0
  495. package/dist/frameworks/kubernetes.d.ts.map +1 -0
  496. package/dist/frameworks/pulumi.d.ts +9 -0
  497. package/dist/frameworks/pulumi.d.ts.map +1 -0
  498. package/dist/frameworks/scala.d.ts +6 -0
  499. package/dist/frameworks/scala.d.ts.map +1 -0
  500. package/dist/frameworks/solidity.d.ts +6 -0
  501. package/dist/frameworks/solidity.d.ts.map +1 -0
  502. package/dist/frameworks/terraform.d.ts +14 -0
  503. package/dist/frameworks/terraform.d.ts.map +1 -0
  504. package/dist/frameworks/vue.d.ts +7 -0
  505. package/dist/frameworks/vue.d.ts.map +1 -0
  506. package/dist/graph/communities.d.ts +43 -0
  507. package/dist/graph/communities.d.ts.map +1 -0
  508. package/dist/graph/communities.js +317 -0
  509. package/dist/graph/communities.js.map +7 -0
  510. package/dist/graph/flows.d.ts +55 -0
  511. package/dist/graph/flows.d.ts.map +1 -0
  512. package/dist/graph/flows.js +138 -0
  513. package/dist/graph/flows.js.map +7 -0
  514. package/dist/graph/refactor.d.ts +43 -0
  515. package/dist/graph/refactor.d.ts.map +1 -0
  516. package/dist/graph/refactor.js +155 -0
  517. package/dist/graph/refactor.js.map +7 -0
  518. package/dist/index.d.ts +36 -4
  519. package/dist/index.d.ts.map +1 -1
  520. package/dist/index.js +1 -1
  521. package/dist/index.js.map +2 -2
  522. package/dist/mcp/cache.d.ts +69 -0
  523. package/dist/mcp/cache.d.ts.map +1 -0
  524. package/dist/mcp/cache.js +172 -0
  525. package/dist/mcp/cache.js.map +7 -0
  526. package/dist/mcp/read-modes.d.ts +31 -0
  527. package/dist/mcp/read-modes.d.ts.map +1 -0
  528. package/dist/mcp/read-modes.js +295 -0
  529. package/dist/mcp/read-modes.js.map +7 -0
  530. package/dist/mcp/server.d.ts +1 -0
  531. package/dist/mcp/server.d.ts.map +1 -1
  532. package/dist/mcp/server.js +17 -3
  533. package/dist/mcp/server.js.map +2 -2
  534. package/dist/mcp/tool-names.d.ts +2 -0
  535. package/dist/mcp/tool-names.d.ts.map +1 -0
  536. package/dist/mcp/tool-names.js +24 -1
  537. package/dist/mcp/tool-names.js.map +2 -2
  538. package/dist/mcp/tools.d.ts +12 -0
  539. package/dist/mcp/tools.d.ts.map +1 -1
  540. package/dist/mcp/tools.js +1560 -4
  541. package/dist/mcp/tools.js.map +3 -3
  542. package/dist/memory/compress.d.ts +19 -0
  543. package/dist/memory/compress.d.ts.map +1 -0
  544. package/dist/memory/database.d.ts +92 -0
  545. package/dist/memory/database.d.ts.map +1 -0
  546. package/dist/memory/database.js +70 -2
  547. package/dist/memory/database.js.map +2 -2
  548. package/dist/memory/index.d.ts +71 -0
  549. package/dist/memory/index.d.ts.map +1 -0
  550. package/dist/memory/index.js +12 -2
  551. package/dist/memory/index.js.map +2 -2
  552. package/dist/memory/symbols.d.ts +21 -0
  553. package/dist/memory/symbols.d.ts.map +1 -0
  554. package/dist/memory/types.d.ts +78 -0
  555. package/dist/memory/types.d.ts.map +1 -0
  556. package/dist/memory/types.js.map +1 -1
  557. package/dist/memory/vectors.d.ts +43 -0
  558. package/dist/memory/vectors.d.ts.map +1 -0
  559. package/dist/patterns/graph.d.ts +16 -0
  560. package/dist/patterns/graph.d.ts.map +1 -0
  561. package/dist/patterns/graph.js +45 -0
  562. package/dist/patterns/graph.js.map +7 -0
  563. package/dist/patterns/index.d.ts +4 -0
  564. package/dist/patterns/index.d.ts.map +1 -0
  565. package/dist/patterns/index.js +39 -0
  566. package/dist/patterns/index.js.map +7 -0
  567. package/dist/patterns/indexer.d.ts +15 -0
  568. package/dist/patterns/indexer.d.ts.map +1 -0
  569. package/dist/patterns/indexer.js +97 -0
  570. package/dist/patterns/indexer.js.map +7 -0
  571. package/dist/patterns/library/command-injection-go.yaml +11 -0
  572. package/dist/patterns/library/dangerous-eval-js.yaml +14 -0
  573. package/dist/patterns/library/dangerous-exec-py.yaml +13 -0
  574. package/dist/patterns/library/dangerous-reflection-java.yaml +8 -0
  575. package/dist/patterns/library/path-traversal-go.yaml +11 -0
  576. package/dist/patterns/library/path-traversal-py.yaml +12 -0
  577. package/dist/patterns/library/path-traversal-readfile-js.yaml +14 -0
  578. package/dist/patterns/library/prototype-pollution-js.yaml +12 -0
  579. package/dist/patterns/library/sql-injection-concat-js.yaml +12 -0
  580. package/dist/patterns/library/sql-injection-java.yaml +13 -0
  581. package/dist/patterns/library/sql-injection-py.yaml +12 -0
  582. package/dist/patterns/library/sql-injection-template-js.yaml +13 -0
  583. package/dist/patterns/library/weak-crypto-md5-js.yaml +13 -0
  584. package/dist/patterns/library/weak-crypto-py.yaml +13 -0
  585. package/dist/patterns/loader.d.ts +18 -0
  586. package/dist/patterns/loader.d.ts.map +1 -0
  587. package/dist/patterns/loader.js +277 -0
  588. package/dist/patterns/loader.js.map +7 -0
  589. package/dist/patterns/runner.d.ts +42 -0
  590. package/dist/patterns/runner.d.ts.map +1 -0
  591. package/dist/patterns/runner.js +277 -0
  592. package/dist/patterns/runner.js.map +7 -0
  593. package/dist/patterns/types.d.ts +27 -0
  594. package/dist/patterns/types.d.ts.map +1 -0
  595. package/dist/patterns/types.js +34 -0
  596. package/dist/patterns/types.js.map +7 -0
  597. package/dist/resolution/bridges/android-rn.d.ts +13 -0
  598. package/dist/resolution/bridges/android-rn.d.ts.map +1 -0
  599. package/dist/resolution/bridges/android-rn.js +298 -0
  600. package/dist/resolution/bridges/android-rn.js.map +7 -0
  601. package/dist/resolution/bridges/expo-modules.d.ts +10 -0
  602. package/dist/resolution/bridges/expo-modules.d.ts.map +1 -0
  603. package/dist/resolution/bridges/expo-modules.js +155 -0
  604. package/dist/resolution/bridges/expo-modules.js.map +7 -0
  605. package/dist/resolution/bridges/flutter-channel.d.ts +14 -0
  606. package/dist/resolution/bridges/flutter-channel.d.ts.map +1 -0
  607. package/dist/resolution/bridges/flutter-channel.js +385 -0
  608. package/dist/resolution/bridges/flutter-channel.js.map +7 -0
  609. package/dist/resolution/bridges/index.d.ts +40 -0
  610. package/dist/resolution/bridges/index.d.ts.map +1 -0
  611. package/dist/resolution/bridges/index.js +80 -0
  612. package/dist/resolution/bridges/index.js.map +7 -0
  613. package/dist/resolution/bridges/native-events.d.ts +10 -0
  614. package/dist/resolution/bridges/native-events.d.ts.map +1 -0
  615. package/dist/resolution/bridges/native-events.js +188 -0
  616. package/dist/resolution/bridges/native-events.js.map +7 -0
  617. package/dist/resolution/bridges/native-views.d.ts +13 -0
  618. package/dist/resolution/bridges/native-views.d.ts.map +1 -0
  619. package/dist/resolution/bridges/native-views.js +244 -0
  620. package/dist/resolution/bridges/native-views.js.map +7 -0
  621. package/dist/resolution/bridges/react-native.d.ts +9 -0
  622. package/dist/resolution/bridges/react-native.d.ts.map +1 -0
  623. package/dist/resolution/bridges/react-native.js +161 -0
  624. package/dist/resolution/bridges/react-native.js.map +7 -0
  625. package/dist/resolution/bridges/swift-objc.d.ts +14 -0
  626. package/dist/resolution/bridges/swift-objc.d.ts.map +1 -0
  627. package/dist/resolution/bridges/swift-objc.js +227 -0
  628. package/dist/resolution/bridges/swift-objc.js.map +7 -0
  629. package/dist/resolution/bridges/turbomodules.d.ts +10 -0
  630. package/dist/resolution/bridges/turbomodules.d.ts.map +1 -0
  631. package/dist/resolution/bridges/turbomodules.js +216 -0
  632. package/dist/resolution/bridges/turbomodules.js.map +7 -0
  633. package/dist/resolution/index.d.ts +28 -3
  634. package/dist/resolution/index.d.ts.map +1 -1
  635. package/dist/resolution/index.js +61 -2
  636. package/dist/resolution/index.js.map +2 -2
  637. package/dist/security/attack-surface.d.ts +46 -0
  638. package/dist/security/attack-surface.d.ts.map +1 -0
  639. package/dist/security/attack-surface.js +206 -0
  640. package/dist/security/attack-surface.js.map +7 -0
  641. package/dist/security/context-warnings.d.ts +40 -0
  642. package/dist/security/context-warnings.d.ts.map +1 -0
  643. package/dist/security/context-warnings.js +123 -0
  644. package/dist/security/context-warnings.js.map +7 -0
  645. package/dist/security/data-flows.d.ts +33 -0
  646. package/dist/security/data-flows.d.ts.map +1 -0
  647. package/dist/security/data-flows.js +286 -0
  648. package/dist/security/data-flows.js.map +7 -0
  649. package/dist/security/dep-confusion.d.ts +23 -0
  650. package/dist/security/dep-confusion.d.ts.map +1 -0
  651. package/dist/security/dep-confusion.js +255 -0
  652. package/dist/security/dep-confusion.js.map +7 -0
  653. package/dist/security/errors.d.ts +16 -0
  654. package/dist/security/errors.d.ts.map +1 -0
  655. package/dist/security/errors.js +51 -0
  656. package/dist/security/errors.js.map +7 -0
  657. package/dist/security/export/fix-suggestions.d.ts +21 -0
  658. package/dist/security/export/fix-suggestions.d.ts.map +1 -0
  659. package/dist/security/export/fix-suggestions.js +58 -0
  660. package/dist/security/export/fix-suggestions.js.map +7 -0
  661. package/dist/security/export/sbom.d.ts +33 -0
  662. package/dist/security/export/sbom.d.ts.map +1 -0
  663. package/dist/security/export/sbom.js +230 -0
  664. package/dist/security/export/sbom.js.map +7 -0
  665. package/dist/security/export/serialization.d.ts +62 -0
  666. package/dist/security/export/serialization.d.ts.map +1 -0
  667. package/dist/security/export/serialization.js +142 -0
  668. package/dist/security/export/serialization.js.map +7 -0
  669. package/dist/security/export/vex.d.ts +58 -0
  670. package/dist/security/export/vex.d.ts.map +1 -0
  671. package/dist/security/export/vex.js +220 -0
  672. package/dist/security/export/vex.js.map +7 -0
  673. package/dist/security/index.d.ts +21 -0
  674. package/dist/security/index.d.ts.map +1 -0
  675. package/dist/security/index.js +67 -0
  676. package/dist/security/index.js.map +7 -0
  677. package/dist/security/integrator.d.ts +63 -0
  678. package/dist/security/integrator.d.ts.map +1 -0
  679. package/dist/security/integrator.js +491 -0
  680. package/dist/security/integrator.js.map +7 -0
  681. package/dist/security/license.d.ts +33 -0
  682. package/dist/security/license.d.ts.map +1 -0
  683. package/dist/security/license.js +70 -0
  684. package/dist/security/license.js.map +7 -0
  685. package/dist/security/manifest/adapter.d.ts +92 -0
  686. package/dist/security/manifest/adapter.d.ts.map +1 -0
  687. package/dist/security/manifest/adapter.js +243 -0
  688. package/dist/security/manifest/adapter.js.map +7 -0
  689. package/dist/security/manifest/parser.d.ts +73 -0
  690. package/dist/security/manifest/parser.d.ts.map +1 -0
  691. package/dist/security/manifest/parser.js +376 -0
  692. package/dist/security/manifest/parser.js.map +7 -0
  693. package/dist/security/manifest/plugins/cargo.d.ts +11 -0
  694. package/dist/security/manifest/plugins/cargo.d.ts.map +1 -0
  695. package/dist/security/manifest/plugins/cargo.js +233 -0
  696. package/dist/security/manifest/plugins/cargo.js.map +7 -0
  697. package/dist/security/manifest/plugins/composer.d.ts +11 -0
  698. package/dist/security/manifest/plugins/composer.d.ts.map +1 -0
  699. package/dist/security/manifest/plugins/composer.js +152 -0
  700. package/dist/security/manifest/plugins/composer.js.map +7 -0
  701. package/dist/security/manifest/plugins/go.d.ts +12 -0
  702. package/dist/security/manifest/plugins/go.d.ts.map +1 -0
  703. package/dist/security/manifest/plugins/go.js +146 -0
  704. package/dist/security/manifest/plugins/go.js.map +7 -0
  705. package/dist/security/manifest/plugins/gradle.d.ts +12 -0
  706. package/dist/security/manifest/plugins/gradle.d.ts.map +1 -0
  707. package/dist/security/manifest/plugins/gradle.js +159 -0
  708. package/dist/security/manifest/plugins/gradle.js.map +7 -0
  709. package/dist/security/manifest/plugins/hex.d.ts +11 -0
  710. package/dist/security/manifest/plugins/hex.d.ts.map +1 -0
  711. package/dist/security/manifest/plugins/hex.js +159 -0
  712. package/dist/security/manifest/plugins/hex.js.map +7 -0
  713. package/dist/security/manifest/plugins/maven.d.ts +11 -0
  714. package/dist/security/manifest/plugins/maven.d.ts.map +1 -0
  715. package/dist/security/manifest/plugins/maven.js +128 -0
  716. package/dist/security/manifest/plugins/maven.js.map +7 -0
  717. package/dist/security/manifest/plugins/npm.d.ts +11 -0
  718. package/dist/security/manifest/plugins/npm.d.ts.map +1 -0
  719. package/dist/security/manifest/plugins/npm.js +284 -0
  720. package/dist/security/manifest/plugins/npm.js.map +7 -0
  721. package/dist/security/manifest/plugins/nuget.d.ts +12 -0
  722. package/dist/security/manifest/plugins/nuget.d.ts.map +1 -0
  723. package/dist/security/manifest/plugins/nuget.js +186 -0
  724. package/dist/security/manifest/plugins/nuget.js.map +7 -0
  725. package/dist/security/manifest/plugins/pip.d.ts +11 -0
  726. package/dist/security/manifest/plugins/pip.d.ts.map +1 -0
  727. package/dist/security/manifest/plugins/pip.js +123 -0
  728. package/dist/security/manifest/plugins/pip.js.map +7 -0
  729. package/dist/security/manifest/plugins/pubspec.d.ts +11 -0
  730. package/dist/security/manifest/plugins/pubspec.d.ts.map +1 -0
  731. package/dist/security/manifest/plugins/pubspec.js +212 -0
  732. package/dist/security/manifest/plugins/pubspec.js.map +7 -0
  733. package/dist/security/manifest/plugins/pyproject.d.ts +3 -0
  734. package/dist/security/manifest/plugins/pyproject.d.ts.map +1 -0
  735. package/dist/security/manifest/plugins/pyproject.js +261 -0
  736. package/dist/security/manifest/plugins/pyproject.js.map +7 -0
  737. package/dist/security/manifest/plugins/rubygems.d.ts +11 -0
  738. package/dist/security/manifest/plugins/rubygems.d.ts.map +1 -0
  739. package/dist/security/manifest/plugins/rubygems.js +185 -0
  740. package/dist/security/manifest/plugins/rubygems.js.map +7 -0
  741. package/dist/security/manifest/plugins/swift.d.ts +11 -0
  742. package/dist/security/manifest/plugins/swift.d.ts.map +1 -0
  743. package/dist/security/manifest/plugins/swift.js +200 -0
  744. package/dist/security/manifest/plugins/swift.js.map +7 -0
  745. package/dist/security/owasp.d.ts +16 -0
  746. package/dist/security/owasp.d.ts.map +1 -0
  747. package/dist/security/owasp.js +104 -0
  748. package/dist/security/owasp.js.map +7 -0
  749. package/dist/security/pipeline.d.ts +37 -0
  750. package/dist/security/pipeline.d.ts.map +1 -0
  751. package/dist/security/pipeline.js +125 -0
  752. package/dist/security/pipeline.js.map +7 -0
  753. package/dist/security/reachability.d.ts +67 -0
  754. package/dist/security/reachability.d.ts.map +1 -0
  755. package/dist/security/reachability.js +276 -0
  756. package/dist/security/reachability.js.map +7 -0
  757. package/dist/security/remediation.d.ts +51 -0
  758. package/dist/security/remediation.d.ts.map +1 -0
  759. package/dist/security/remediation.js +126 -0
  760. package/dist/security/remediation.js.map +7 -0
  761. package/dist/security/secrets.d.ts +38 -0
  762. package/dist/security/secrets.d.ts.map +1 -0
  763. package/dist/security/secrets.js +176 -0
  764. package/dist/security/secrets.js.map +7 -0
  765. package/dist/security/staleness.d.ts +43 -0
  766. package/dist/security/staleness.d.ts.map +1 -0
  767. package/dist/security/staleness.js +231 -0
  768. package/dist/security/staleness.js.map +7 -0
  769. package/dist/security/supply-chain.d.ts +34 -0
  770. package/dist/security/supply-chain.d.ts.map +1 -0
  771. package/dist/security/supply-chain.js +301 -0
  772. package/dist/security/supply-chain.js.map +7 -0
  773. package/dist/security/suppressions.d.ts +18 -0
  774. package/dist/security/suppressions.d.ts.map +1 -0
  775. package/dist/security/suppressions.js +106 -0
  776. package/dist/security/suppressions.js.map +7 -0
  777. package/dist/security/types.d.ts +144 -0
  778. package/dist/security/types.d.ts.map +1 -0
  779. package/dist/security/types.js +17 -0
  780. package/dist/security/types.js.map +7 -0
  781. package/dist/security/vuln/client.d.ts +90 -0
  782. package/dist/security/vuln/client.d.ts.map +1 -0
  783. package/dist/security/vuln/client.js +355 -0
  784. package/dist/security/vuln/client.js.map +7 -0
  785. package/dist/security/vuln/epss-client.d.ts +26 -0
  786. package/dist/security/vuln/epss-client.d.ts.map +1 -0
  787. package/dist/security/vuln/epss-client.js +95 -0
  788. package/dist/security/vuln/epss-client.js.map +7 -0
  789. package/dist/security/vuln/index.d.ts +6 -0
  790. package/dist/security/vuln/index.d.ts.map +1 -0
  791. package/dist/security/vuln/index.js +29 -0
  792. package/dist/security/vuln/index.js.map +7 -0
  793. package/dist/security/vuln/osv-adapter.d.ts +58 -0
  794. package/dist/security/vuln/osv-adapter.d.ts.map +1 -0
  795. package/dist/security/vuln/osv-adapter.js +321 -0
  796. package/dist/security/vuln/osv-adapter.js.map +7 -0
  797. package/dist/security/vuln/types.d.ts +29 -0
  798. package/dist/security/vuln/types.d.ts.map +1 -0
  799. package/dist/security/vuln/types.js +17 -0
  800. package/dist/security/vuln/types.js.map +7 -0
  801. package/dist/sync/index.d.ts +4 -2
  802. package/dist/sync/index.d.ts.map +1 -1
  803. package/dist/types.d.ts +10 -4
  804. package/dist/types.d.ts.map +1 -1
  805. package/dist/types.js.map +2 -2
  806. package/dist/vectors/index.d.ts +11 -3
  807. package/dist/vectors/index.d.ts.map +1 -1
  808. package/dist/vectors/qdrant-index.d.ts +10 -3
  809. package/dist/vectors/qdrant-index.d.ts.map +1 -1
  810. package/dist/vectors/typesense-index.d.ts.map +1 -1
  811. package/dist/watchmen/index.js +83 -0
  812. package/dist/watchmen/index.js.map +7 -0
  813. package/dist/watchmen/synthesize.js +475 -0
  814. package/dist/watchmen/synthesize.js.map +7 -0
  815. package/package.json +6 -2
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/patterns/runner.ts"],
4
+ "sourcesContent": ["/**\n * KiroGraph PatternRunner \u2014 lazy-loads @ast-grep/napi and executes pattern rules.\n */\n\nimport { PatternRule, PatternMatch, SEVERITY_ORDER } from './types';\nimport { logWarn } from '../errors';\n\n// Languages supported by @ast-grep/napi tree-sitter grammars.\n// Calling parse() with an unsupported language throws a native C++ exception\n// that bypasses JS try/catch and corrupts the mutex \u2014 skip unsupported languages.\nconst NAPI_SUPPORTED_LANGUAGES = new Set([\n 'javascript', 'typescript', 'tsx', 'jsx',\n 'python', 'go', 'rust', 'java', 'c', 'cpp', 'cs', 'swift', 'kotlin',\n 'html', 'css', 'json', 'yaml', 'bash', 'ruby', 'php', 'scala',\n 'haskell', 'lua', 'r', 'dart', 'elixir', 'erlang', 'ocaml',\n]);\n\n// Module-level cache: undefined = not yet attempted, null = missing, module = loaded\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nlet _napi: any | null | undefined = undefined;\nlet _napiWarnLogged = false;\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nasync function getNapi(): Promise<any | null> {\n if (_napi !== undefined) return _napi;\n try {\n // Verify it can be resolved synchronously before async import\n require.resolve('@ast-grep/napi');\n // eslint-disable-next-line @typescript-eslint/no-require-imports\n _napi = require('@ast-grep/napi');\n return _napi;\n } catch {\n _napi = null;\n if (!_napiWarnLogged) {\n logWarn('PatternRunner: @ast-grep/napi is not installed. Pattern matching is disabled. Run: npm install @ast-grep/napi');\n _napiWarnLogged = true;\n }\n return null;\n }\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction renderFix(fixTemplate: string, node: any): string | undefined {\n if (!fixTemplate) return undefined;\n // Replace $VAR metavariables with matched text\n return fixTemplate.replace(/\\$([A-Z_]+)/g, (_, varName) => {\n try {\n return node.getMatch(varName)?.text() ?? `$${varName}`;\n } catch {\n return `$${varName}`;\n }\n });\n}\n\nexport class PatternRunner {\n /**\n * Synchronously check whether @ast-grep/napi is available.\n */\n isAvailable(): boolean {\n try {\n require.resolve('@ast-grep/napi');\n return true;\n } catch {\n return false;\n }\n }\n\n /**\n * Returns true if the language is supported by @ast-grep/napi.\n * Unsupported languages must be skipped \u2014 calling parse() on them throws a\n * native C++ exception that bypasses JS try/catch and corrupts internal mutexes.\n */\n isSupportedLanguage(language: string): boolean {\n return NAPI_SUPPORTED_LANGUAGES.has(language.toLowerCase());\n }\n\n /**\n * Lazy async loader \u2014 returns the napi module or null if missing.\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n async getNapi(): Promise<any | null> {\n return getNapi();\n }\n\n /**\n * Run a single library rule against a file's content.\n * Returns an empty array and logs a warning on per-file errors.\n */\n async runRule(rule: PatternRule, fileContent: string, language: string): Promise<PatternMatch[]> {\n if (!this.isSupportedLanguage(language)) return [];\n const napi = await getNapi();\n if (!napi) return [];\n\n try {\n const { parse } = napi;\n const root = parse(language as any, fileContent);\n const nodes = root.root().findAll({ rule: rule.rule as any });\n const lines = fileContent.split('\\n');\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return nodes.map((node: any) => {\n const range = node.range();\n const line = range.start.line + 1; // 1-based\n const col = range.start.column; // 0-based\n const matchText = node.text().slice(0, 500);\n const context = _buildContext(lines, range.start.line);\n const fixSuggestion = rule.fix ? renderFix(rule.fix, node) : undefined;\n\n return {\n patternId: rule.id,\n filePath: '',\n line,\n col,\n matchText,\n context,\n severity: rule.severity,\n owaspCategory: rule.owaspCategory,\n language,\n ...(fixSuggestion !== undefined ? { fixSuggestion } : {}),\n };\n });\n } catch (err) {\n logWarn(`PatternRunner: error running rule \"${rule.id}\" on file (language: ${language}): ${err instanceof Error ? err.message : String(err)}`);\n return [];\n }\n }\n\n /**\n * Run an inline pattern expression (not from library) against file content.\n * Returns an empty array and logs a warning on per-file errors.\n */\n async runInline(pattern: string, language: string, fileContent: string): Promise<PatternMatch[]> {\n if (!this.isSupportedLanguage(language)) return [];\n const napi = await getNapi();\n if (!napi) return [];\n\n try {\n const { parse } = napi;\n const root = parse(language as any, fileContent);\n const nodes = root.root().findAll(pattern);\n const lines = fileContent.split('\\n');\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return nodes.map((node: any) => {\n const range = node.range();\n const line = range.start.line + 1;\n const col = range.start.column;\n const matchText = node.text().slice(0, 500);\n const context = _buildContext(lines, range.start.line);\n\n return {\n patternId: '',\n filePath: '',\n line,\n col,\n matchText,\n context,\n severity: 'low' as const,\n owaspCategory: '',\n language,\n };\n });\n } catch (err) {\n logWarn(`PatternRunner: error running inline pattern on file (language: ${language}): ${err instanceof Error ? err.message : String(err)}`);\n return [];\n }\n }\n\n /**\n * Run all rules against a file's content, filtered by severity threshold.\n */\n async runAllRules(\n rules: PatternRule[],\n fileContent: string,\n language: string,\n threshold: PatternRule['severity'],\n ): Promise<PatternMatch[]> {\n const napi = await getNapi();\n if (!napi) return [];\n\n const thresholdOrder = SEVERITY_ORDER[threshold];\n const applicableRules = rules.filter(r => {\n const langs = Array.isArray(r.language) ? r.language : [r.language];\n return langs.includes(language) && SEVERITY_ORDER[r.severity] >= thresholdOrder;\n });\n\n const results: PatternMatch[] = [];\n for (const rule of applicableRules) {\n const matches = await this.runRule(rule, fileContent, language);\n results.push(...matches);\n }\n return results;\n }\n\n /**\n * Apply the rule's fix template to all matches in the file content.\n * Returns the transformed source string, or null if no fix was applied.\n * Uses a range-based text substitution approach since commitEdits may not\n * be available in all versions of @ast-grep/napi.\n */\n async applyFix(filePath: string, fileContent: string, language: string, rule: PatternRule): Promise<string | null> {\n const napi = await this.getNapi();\n if (!napi || !rule.fix) return null;\n try {\n const { parse } = napi;\n const root = parse(language as any, fileContent);\n const nodes = root.root().findAll({ rule: rule.rule as any });\n if (nodes.length === 0) return null;\n\n // Try the native commitEdits API first\n try {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n for (const node of nodes as any[]) {\n const fixText = renderFix(rule.fix, node);\n if (fixText) node.replace(fixText);\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const edited: string | null | undefined = (root.root() as any).commitEdits?.();\n if (typeof edited === 'string') return edited;\n } catch {\n // commitEdits not available \u2014 fall through to text substitution\n }\n\n // Fallback: apply replacements using byte offsets, processing from end to start\n // so earlier replacements don't shift the offsets of later ones.\n interface Edit { start: number; end: number; replacement: string }\n const edits: Edit[] = [];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n for (const node of nodes as any[]) {\n const fixText = renderFix(rule.fix, node);\n if (fixText === undefined) continue;\n const range = node.range();\n // Convert line/col to byte offset\n const lines = fileContent.split('\\n');\n let startOffset = 0;\n for (let i = 0; i < range.start.line; i++) {\n startOffset += (lines[i]?.length ?? 0) + 1; // +1 for \\n\n }\n startOffset += range.start.column;\n\n let endOffset = 0;\n for (let i = 0; i < range.end.line; i++) {\n endOffset += (lines[i]?.length ?? 0) + 1;\n }\n endOffset += range.end.column;\n\n edits.push({ start: startOffset, end: endOffset, replacement: fixText });\n }\n\n if (edits.length === 0) return null;\n\n // Sort descending by start offset so we can splice without re-indexing\n edits.sort((a, b) => b.start - a.start);\n\n let result = fileContent;\n for (const edit of edits) {\n result = result.slice(0, edit.start) + edit.replacement + result.slice(edit.end);\n }\n\n return result !== fileContent ? result : null;\n } catch (err) {\n logWarn(`PatternRunner.applyFix: error applying fix for rule \"${rule.id}\" on \"${filePath}\": ${err instanceof Error ? err.message : String(err)}`);\n return null;\n }\n }\n}\n\nfunction _buildContext(lines: string[], zeroBasedLine: number): string {\n const contextLines: string[] = [];\n if (zeroBasedLine > 0) contextLines.push(lines[zeroBasedLine - 1] ?? '');\n contextLines.push(lines[zeroBasedLine] ?? '');\n if (zeroBasedLine + 1 < lines.length) contextLines.push(lines[zeroBasedLine + 1] ?? '');\n return contextLines.join('\\n');\n}\n"],
5
+ "mappings": "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",
6
+ "names": []
7
+ }
@@ -0,0 +1,27 @@
1
+ /**
2
+ * KiroGraph Patterns — shared types for pattern rules, matches, and results.
3
+ */
4
+ export interface PatternRule {
5
+ id: string;
6
+ language: string | string[];
7
+ severity: 'critical' | 'high' | 'medium' | 'low';
8
+ owaspCategory: string;
9
+ description: string;
10
+ fixHint: string;
11
+ fix?: string;
12
+ rule: Record<string, unknown>;
13
+ }
14
+ export interface PatternMatch {
15
+ patternId: string;
16
+ filePath: string;
17
+ line: number;
18
+ col: number;
19
+ matchText: string;
20
+ context: string;
21
+ severity: PatternRule['severity'];
22
+ owaspCategory: string;
23
+ language: string;
24
+ fixSuggestion?: string;
25
+ }
26
+ export declare const SEVERITY_ORDER: Record<PatternRule['severity'], number>;
27
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/patterns/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAC5B,QAAQ,EAAE,UAAU,GAAG,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;IACjD,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC/B;AAED,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,WAAW,CAAC,UAAU,CAAC,CAAC;IAClC,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,WAAW,CAAC,UAAU,CAAC,EAAE,MAAM,CAElE,CAAC"}
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var types_exports = {};
20
+ __export(types_exports, {
21
+ SEVERITY_ORDER: () => SEVERITY_ORDER
22
+ });
23
+ module.exports = __toCommonJS(types_exports);
24
+ const SEVERITY_ORDER = {
25
+ low: 0,
26
+ medium: 1,
27
+ high: 2,
28
+ critical: 3
29
+ };
30
+ // Annotate the CommonJS export names for ESM import in node:
31
+ 0 && (module.exports = {
32
+ SEVERITY_ORDER
33
+ });
34
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/patterns/types.ts"],
4
+ "sourcesContent": ["/**\n * KiroGraph Patterns \u2014 shared types for pattern rules, matches, and results.\n */\n\nexport interface PatternRule {\n id: string;\n language: string | string[];\n severity: 'critical' | 'high' | 'medium' | 'low';\n owaspCategory: string;\n description: string;\n fixHint: string;\n fix?: string; // ast-grep fix template using metavariables\n rule: Record<string, unknown>;\n}\n\nexport interface PatternMatch {\n patternId: string;\n filePath: string;\n line: number; // 1-based\n col: number; // 0-based\n matchText: string; // truncated to 500 chars\n context: string; // line before + matched + line after\n severity: PatternRule['severity'];\n owaspCategory: string;\n language: string;\n fixSuggestion?: string; // populated when the rule has a fix: field\n}\n\nexport const SEVERITY_ORDER: Record<PatternRule['severity'], number> = {\n low: 0, medium: 1, high: 2, critical: 3,\n};\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AA4BO,MAAM,iBAA0D;AAAA,EACrE,KAAK;AAAA,EAAG,QAAQ;AAAA,EAAG,MAAM;AAAA,EAAG,UAAU;AACxC;",
6
+ "names": []
7
+ }
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Android React Native Bridge
3
+ *
4
+ * Synthesizes edges between JavaScript/TypeScript calls to NativeModules.X.method()
5
+ * (and NativeEventEmitter) and their Kotlin/Java implementations declared via
6
+ * @ReactMethod or @ReactProp in classes extending ReactContextBaseJavaModule.
7
+ *
8
+ * Covers the Android/Kotlin/Java side of the React Native bridge, closing the
9
+ * gap with the iOS/ObjC coverage provided by react-native-legacy-bridge.
10
+ */
11
+ import type { BridgeResolver } from './index';
12
+ export declare const androidRnBridge: BridgeResolver;
13
+ //# sourceMappingURL=android-rn.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"android-rn.d.ts","sourceRoot":"","sources":["../../../src/resolution/bridges/android-rn.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,KAAK,EAAE,cAAc,EAAmB,MAAM,SAAS,CAAC;AAqV/D,eAAO,MAAM,eAAe,EAAE,cA+G7B,CAAC"}
@@ -0,0 +1,298 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var android_rn_exports = {};
20
+ __export(android_rn_exports, {
21
+ androidRnBridge: () => androidRnBridge
22
+ });
23
+ module.exports = __toCommonJS(android_rn_exports);
24
+ function hasAndroidNativeFiles(context) {
25
+ const files = context.getAllFiles();
26
+ for (const f of files) {
27
+ if (!f.endsWith(".kt") && !f.endsWith(".java")) continue;
28
+ const content = context.readFile(f);
29
+ if (!content) continue;
30
+ if (content.includes("ReactContextBaseJavaModule") || content.includes("@ReactMethod") || content.includes("@ReactProp")) {
31
+ return true;
32
+ }
33
+ }
34
+ return false;
35
+ }
36
+ function extractModuleName(content, filePath) {
37
+ const ktSingleLine = content.match(/override\s+fun\s+getName\s*\(\s*\)\s*=\s*"(\w+)"/);
38
+ if (ktSingleLine) return ktSingleLine[1];
39
+ const blockStyle = content.match(
40
+ /(?:override\s+)?fun\s+getName\s*\(\s*\)\s*(?::\s*String\s*)?\{[^}]*?return\s*"(\w+)"/s
41
+ );
42
+ if (blockStyle) return blockStyle[1];
43
+ const javaStyle = content.match(
44
+ /(?:@Override\s+)?(?:public\s+)?String\s+getName\s*\(\s*\)\s*\{[^}]*?return\s*"(\w+)"/s
45
+ );
46
+ if (javaStyle) return javaStyle[1];
47
+ const classMatch = content.match(/class\s+(\w+)/);
48
+ if (classMatch) {
49
+ return classMatch[1].replace(/Module$/, "").replace(/Manager$/, "").replace(/Package$/, "") || null;
50
+ }
51
+ return null;
52
+ }
53
+ function findReactMethodDecls(context) {
54
+ const decls = [];
55
+ const files = context.getAllFiles();
56
+ for (const f of files) {
57
+ if (!f.endsWith(".kt") && !f.endsWith(".java")) continue;
58
+ const content = context.readFile(f);
59
+ if (!content) continue;
60
+ if (!content.includes("ReactContextBaseJavaModule") && !content.includes("ReactMethod")) {
61
+ continue;
62
+ }
63
+ const moduleName = extractModuleName(content, f);
64
+ if (!moduleName) continue;
65
+ const nodes = context.getNodesInFile(f);
66
+ const reactMethodRegex = /@ReactMethod(?:\s*\(\s*isBlockingSynchronousMethod\s*=\s*(true|false)\s*\))?\s*\n?\s*(?:@\w+\s*)*(?:fun|public\s+\w+)\s+(\w+)\s*\(/g;
67
+ let match;
68
+ while ((match = reactMethodRegex.exec(content)) !== null) {
69
+ const isBlocking = match[1] === "true";
70
+ const methodName = match[2];
71
+ const lineNum = content.slice(0, match.index).split("\n").length;
72
+ const methodNode = nodes.find(
73
+ (n) => (n.kind === "method" || n.kind === "function") && n.name === methodName && Math.abs(n.startLine - lineNum) < 8
74
+ );
75
+ if (methodNode) {
76
+ decls.push({
77
+ moduleName,
78
+ methodName,
79
+ nodeId: methodNode.id,
80
+ isBlocking,
81
+ filePath: f
82
+ });
83
+ }
84
+ }
85
+ }
86
+ return decls;
87
+ }
88
+ function findReactPropDecls(context) {
89
+ const decls = [];
90
+ const files = context.getAllFiles();
91
+ for (const f of files) {
92
+ if (!f.endsWith(".kt") && !f.endsWith(".java")) continue;
93
+ const content = context.readFile(f);
94
+ if (!content) continue;
95
+ if (!content.includes("@ReactProp")) continue;
96
+ const moduleName = extractModuleName(content, f);
97
+ if (!moduleName) continue;
98
+ const nodes = context.getNodesInFile(f);
99
+ const reactPropRegex = /@ReactProp\s*\(\s*name\s*=\s*"(\w+)"[^)]*\)\s*\n?\s*(?:@\w+\s*)*(?:fun|public\s+void)\s+(\w+)\s*\(/g;
100
+ let match;
101
+ while ((match = reactPropRegex.exec(content)) !== null) {
102
+ const propName = match[1];
103
+ const setterName = match[2];
104
+ const lineNum = content.slice(0, match.index).split("\n").length;
105
+ const methodNode = nodes.find(
106
+ (n) => (n.kind === "method" || n.kind === "function") && n.name === setterName && Math.abs(n.startLine - lineNum) < 8
107
+ );
108
+ if (methodNode) {
109
+ decls.push({ moduleName, propName, nodeId: methodNode.id, filePath: f });
110
+ }
111
+ }
112
+ }
113
+ return decls;
114
+ }
115
+ function findAndroidNativeModuleCalls(context) {
116
+ const calls = [];
117
+ const files = context.getAllFiles();
118
+ for (const f of files) {
119
+ if (!f.endsWith(".ts") && !f.endsWith(".tsx") && !f.endsWith(".js") && !f.endsWith(".jsx")) {
120
+ continue;
121
+ }
122
+ const content = context.readFile(f);
123
+ if (!content) continue;
124
+ if (!content.includes("NativeModules")) continue;
125
+ const nodes = context.getNodesInFile(f);
126
+ const enclosingNode = (offset) => {
127
+ const lineNum = content.slice(0, offset).split("\n").length;
128
+ return nodes.find(
129
+ (n) => (n.kind === "function" || n.kind === "method") && n.startLine <= lineNum && n.endLine >= lineNum
130
+ );
131
+ };
132
+ const directRegex = /NativeModules\.(\w+)\.(\w+)\s*\(/g;
133
+ let match;
134
+ while ((match = directRegex.exec(content)) !== null) {
135
+ const moduleName = match[1];
136
+ const methodName = match[2];
137
+ const caller = enclosingNode(match.index);
138
+ if (caller) {
139
+ calls.push({ moduleName, methodName, callerNodeId: caller.id, via: "NativeModules" });
140
+ }
141
+ }
142
+ const destructureRegex = /const\s*\{([^}]+)\}\s*=\s*NativeModules/g;
143
+ while ((match = destructureRegex.exec(content)) !== null) {
144
+ const moduleNames = match[1].split(",").map((s) => s.trim()).filter(Boolean);
145
+ for (const moduleName of moduleNames) {
146
+ const callRegex = new RegExp(`\\b${moduleName}\\.(\\w+)\\s*\\(`, "g");
147
+ let callMatch;
148
+ while ((callMatch = callRegex.exec(content)) !== null) {
149
+ const methodName = callMatch[1];
150
+ const caller = enclosingNode(callMatch.index);
151
+ if (caller) {
152
+ calls.push({
153
+ moduleName,
154
+ methodName,
155
+ callerNodeId: caller.id,
156
+ via: "NativeModules"
157
+ });
158
+ }
159
+ }
160
+ }
161
+ }
162
+ const emitterRegex = /new\s+NativeEventEmitter\s*\(\s*NativeModules\.(\w+)\s*\)/g;
163
+ while ((match = emitterRegex.exec(content)) !== null) {
164
+ const moduleName = match[1];
165
+ const caller = enclosingNode(match.index);
166
+ if (caller) {
167
+ calls.push({
168
+ moduleName,
169
+ methodName: "__eventEmitterAttach__",
170
+ callerNodeId: caller.id,
171
+ via: "NativeEventEmitter"
172
+ });
173
+ }
174
+ }
175
+ }
176
+ return calls;
177
+ }
178
+ function findJsxPropUsages(context, propNames) {
179
+ const result = /* @__PURE__ */ new Map();
180
+ const files = context.getAllFiles();
181
+ for (const f of files) {
182
+ if (!f.endsWith(".tsx") && !f.endsWith(".jsx")) continue;
183
+ const content = context.readFile(f);
184
+ if (!content) continue;
185
+ const nodes = context.getNodesInFile(f);
186
+ for (const propName of propNames) {
187
+ const attrRegex = new RegExp(`\\b${propName}\\s*=\\s*(?:\\{|")`, "g");
188
+ let match;
189
+ while ((match = attrRegex.exec(content)) !== null) {
190
+ const lineNum = content.slice(0, match.index).split("\n").length;
191
+ const enclosing = nodes.find(
192
+ (n) => (n.kind === "function" || n.kind === "method") && n.startLine <= lineNum && n.endLine >= lineNum
193
+ );
194
+ if (enclosing) {
195
+ const existing = result.get(propName) ?? [];
196
+ if (!existing.includes(enclosing.id)) {
197
+ existing.push(enclosing.id);
198
+ }
199
+ result.set(propName, existing);
200
+ }
201
+ }
202
+ }
203
+ }
204
+ return result;
205
+ }
206
+ const androidRnBridge = {
207
+ name: "android-rn-bridge",
208
+ detect(context) {
209
+ const packageJson = context.readFile("package.json");
210
+ if (!packageJson) return false;
211
+ try {
212
+ const pkg = JSON.parse(packageJson);
213
+ const deps = { ...pkg.dependencies, ...pkg.devDependencies };
214
+ if (!("react-native" in deps)) return false;
215
+ } catch {
216
+ return false;
217
+ }
218
+ return hasAndroidNativeFiles(context);
219
+ },
220
+ resolve(context) {
221
+ const edges = [];
222
+ const methodDecls = findReactMethodDecls(context);
223
+ const jsCalls = findAndroidNativeModuleCalls(context);
224
+ for (const call of jsCalls) {
225
+ if (call.via === "NativeEventEmitter") continue;
226
+ for (const decl of methodDecls) {
227
+ if (call.moduleName === decl.moduleName && call.methodName === decl.methodName) {
228
+ edges.push({
229
+ source: call.callerNodeId,
230
+ target: decl.nodeId,
231
+ kind: "calls",
232
+ confidence: "inferred",
233
+ confidenceScore: decl.isBlocking ? 0.75 : 0.7,
234
+ metadata: {
235
+ synthesizedBy: "android-rn-bridge",
236
+ provenance: "heuristic",
237
+ moduleName: call.moduleName,
238
+ methodName: call.methodName,
239
+ nativeLanguage: decl.filePath.endsWith(".kt") ? "kotlin" : "java",
240
+ isBlockingSynchronousMethod: decl.isBlocking
241
+ }
242
+ });
243
+ }
244
+ }
245
+ }
246
+ const emitterCalls = jsCalls.filter((c) => c.via === "NativeEventEmitter");
247
+ for (const call of emitterCalls) {
248
+ const moduleDecls = methodDecls.filter((d) => d.moduleName === call.moduleName);
249
+ for (const decl of moduleDecls) {
250
+ edges.push({
251
+ source: call.callerNodeId,
252
+ target: decl.nodeId,
253
+ kind: "references",
254
+ confidence: "inferred",
255
+ confidenceScore: 0.65,
256
+ metadata: {
257
+ synthesizedBy: "android-rn-bridge",
258
+ provenance: "heuristic",
259
+ moduleName: call.moduleName,
260
+ via: "NativeEventEmitter",
261
+ nativeLanguage: decl.filePath.endsWith(".kt") ? "kotlin" : "java"
262
+ }
263
+ });
264
+ break;
265
+ }
266
+ }
267
+ const propDecls = findReactPropDecls(context);
268
+ if (propDecls.length > 0) {
269
+ const propNameSet = new Set(propDecls.map((p) => p.propName));
270
+ const jsxUsages = findJsxPropUsages(context, propNameSet);
271
+ for (const propDecl of propDecls) {
272
+ const callerIds = jsxUsages.get(propDecl.propName) ?? [];
273
+ for (const callerId of callerIds) {
274
+ edges.push({
275
+ source: callerId,
276
+ target: propDecl.nodeId,
277
+ kind: "references",
278
+ confidence: "inferred",
279
+ confidenceScore: 0.7,
280
+ metadata: {
281
+ synthesizedBy: "android-rn-bridge",
282
+ provenance: "heuristic",
283
+ moduleName: propDecl.moduleName,
284
+ propName: propDecl.propName,
285
+ nativeLanguage: propDecl.filePath.endsWith(".kt") ? "kotlin" : "java"
286
+ }
287
+ });
288
+ }
289
+ }
290
+ }
291
+ return edges;
292
+ }
293
+ };
294
+ // Annotate the CommonJS export names for ESM import in node:
295
+ 0 && (module.exports = {
296
+ androidRnBridge
297
+ });
298
+ //# sourceMappingURL=android-rn.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/resolution/bridges/android-rn.ts"],
4
+ "sourcesContent": ["/**\n * Android React Native Bridge\n *\n * Synthesizes edges between JavaScript/TypeScript calls to NativeModules.X.method()\n * (and NativeEventEmitter) and their Kotlin/Java implementations declared via\n * @ReactMethod or @ReactProp in classes extending ReactContextBaseJavaModule.\n *\n * Covers the Android/Kotlin/Java side of the React Native bridge, closing the\n * gap with the iOS/ObjC coverage provided by react-native-legacy-bridge.\n */\n\nimport type { ResolutionContext } from '../../frameworks/types';\nimport type { BridgeResolver, SynthesizedEdge } from './index';\n\n// \u2500\u2500 Types \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\ninterface AndroidNativeModuleCall {\n moduleName: string;\n methodName: string;\n callerNodeId: string;\n via: 'NativeModules' | 'NativeEventEmitter';\n}\n\ninterface AndroidReactMethodDecl {\n moduleName: string;\n methodName: string;\n nodeId: string;\n isBlocking: boolean;\n filePath: string;\n}\n\ninterface AndroidReactPropDecl {\n moduleName: string;\n propName: string;\n nodeId: string;\n filePath: string;\n}\n\n// \u2500\u2500 Helpers \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\n/**\n * Detect Android project root presence by checking for android/ directory\n * marker files or Kotlin/Java files that import react-native packages.\n */\nfunction hasAndroidNativeFiles(context: ResolutionContext): boolean {\n const files = context.getAllFiles();\n for (const f of files) {\n if (!f.endsWith('.kt') && !f.endsWith('.java')) continue;\n const content = context.readFile(f);\n if (!content) continue;\n if (\n content.includes('ReactContextBaseJavaModule') ||\n content.includes('@ReactMethod') ||\n content.includes('@ReactProp')\n ) {\n return true;\n }\n }\n return false;\n}\n\n/**\n * Extract the module name exposed to JS from a Kotlin/Java native module file.\n *\n * Priority:\n * 1. Explicit string in getName() return: `return \"ModuleName\"`\n * 2. Class name stripping common suffixes (Module, Manager)\n */\nfunction extractModuleName(content: string, filePath: string): string | null {\n // Kotlin: override fun getName() = \"Name\" or fun getName(): String { return \"Name\" }\n const ktSingleLine = content.match(/override\\s+fun\\s+getName\\s*\\(\\s*\\)\\s*=\\s*\"(\\w+)\"/);\n if (ktSingleLine) return ktSingleLine[1];\n\n // Java/Kotlin block-style getName()\n const blockStyle = content.match(\n /(?:override\\s+)?fun\\s+getName\\s*\\(\\s*\\)\\s*(?::\\s*String\\s*)?\\{[^}]*?return\\s*\"(\\w+)\"/s\n );\n if (blockStyle) return blockStyle[1];\n\n // Java getName()\n const javaStyle = content.match(\n /(?:@Override\\s+)?(?:public\\s+)?String\\s+getName\\s*\\(\\s*\\)\\s*\\{[^}]*?return\\s*\"(\\w+)\"/s\n );\n if (javaStyle) return javaStyle[1];\n\n // Fallback: derive from class name\n const classMatch = content.match(/class\\s+(\\w+)/);\n if (classMatch) {\n return classMatch[1]\n .replace(/Module$/, '')\n .replace(/Manager$/, '')\n .replace(/Package$/, '') || null;\n }\n\n return null;\n}\n\n/**\n * Scan all Kotlin/Java files for @ReactMethod annotations and collect the\n * corresponding method declarations with their graph node IDs.\n */\nfunction findReactMethodDecls(context: ResolutionContext): AndroidReactMethodDecl[] {\n const decls: AndroidReactMethodDecl[] = [];\n const files = context.getAllFiles();\n\n for (const f of files) {\n if (!f.endsWith('.kt') && !f.endsWith('.java')) continue;\n\n const content = context.readFile(f);\n if (!content) continue;\n\n // Only process files that are React Native modules\n if (\n !content.includes('ReactContextBaseJavaModule') &&\n !content.includes('ReactMethod')\n ) {\n continue;\n }\n\n const moduleName = extractModuleName(content, f);\n if (!moduleName) continue;\n\n const nodes = context.getNodesInFile(f);\n\n // Match @ReactMethod (and @ReactMethod(isBlockingSynchronousMethod = true))\n // followed by fun/void/public <methodName>(\n const reactMethodRegex =\n /@ReactMethod(?:\\s*\\(\\s*isBlockingSynchronousMethod\\s*=\\s*(true|false)\\s*\\))?\\s*\\n?\\s*(?:@\\w+\\s*)*(?:fun|public\\s+\\w+)\\s+(\\w+)\\s*\\(/g;\n\n let match: RegExpExecArray | null;\n while ((match = reactMethodRegex.exec(content)) !== null) {\n const isBlocking = match[1] === 'true';\n const methodName = match[2];\n const lineNum = content.slice(0, match.index).split('\\n').length;\n\n const methodNode = nodes.find(\n n =>\n (n.kind === 'method' || n.kind === 'function') &&\n n.name === methodName &&\n Math.abs(n.startLine - lineNum) < 8\n );\n\n if (methodNode) {\n decls.push({\n moduleName,\n methodName,\n nodeId: methodNode.id,\n isBlocking,\n filePath: f,\n });\n }\n }\n }\n\n return decls;\n}\n\n/**\n * Scan Kotlin/Java ViewManager files for @ReactProp annotations and collect\n * the corresponding setter method declarations.\n */\nfunction findReactPropDecls(context: ResolutionContext): AndroidReactPropDecl[] {\n const decls: AndroidReactPropDecl[] = [];\n const files = context.getAllFiles();\n\n for (const f of files) {\n if (!f.endsWith('.kt') && !f.endsWith('.java')) continue;\n\n const content = context.readFile(f);\n if (!content) continue;\n\n if (!content.includes('@ReactProp')) continue;\n\n const moduleName = extractModuleName(content, f);\n if (!moduleName) continue;\n\n const nodes = context.getNodesInFile(f);\n\n // @ReactProp(name = \"propName\") followed by fun/void setPropName(...)\n const reactPropRegex =\n /@ReactProp\\s*\\(\\s*name\\s*=\\s*\"(\\w+)\"[^)]*\\)\\s*\\n?\\s*(?:@\\w+\\s*)*(?:fun|public\\s+void)\\s+(\\w+)\\s*\\(/g;\n\n let match: RegExpExecArray | null;\n while ((match = reactPropRegex.exec(content)) !== null) {\n const propName = match[1];\n const setterName = match[2];\n const lineNum = content.slice(0, match.index).split('\\n').length;\n\n const methodNode = nodes.find(\n n =>\n (n.kind === 'method' || n.kind === 'function') &&\n n.name === setterName &&\n Math.abs(n.startLine - lineNum) < 8\n );\n\n if (methodNode) {\n decls.push({ moduleName, propName, nodeId: methodNode.id, filePath: f });\n }\n }\n }\n\n return decls;\n}\n\n/**\n * Scan JS/TS files for:\n * - NativeModules.ModuleName.methodName(...)\n * - const { ModuleName } = NativeModules; ... ModuleName.methodName(...)\n * - new NativeEventEmitter(NativeModules.ModuleName)\n */\nfunction findAndroidNativeModuleCalls(context: ResolutionContext): AndroidNativeModuleCall[] {\n const calls: AndroidNativeModuleCall[] = [];\n const files = context.getAllFiles();\n\n for (const f of files) {\n if (\n !f.endsWith('.ts') &&\n !f.endsWith('.tsx') &&\n !f.endsWith('.js') &&\n !f.endsWith('.jsx')\n ) {\n continue;\n }\n\n const content = context.readFile(f);\n if (!content) continue;\n\n // Skip if no NativeModules reference at all\n if (!content.includes('NativeModules')) continue;\n\n const nodes = context.getNodesInFile(f);\n\n /**\n * Helper: find the enclosing function/method node for a character offset.\n */\n const enclosingNode = (offset: number) => {\n const lineNum = content.slice(0, offset).split('\\n').length;\n return nodes.find(\n n =>\n (n.kind === 'function' || n.kind === 'method') &&\n n.startLine <= lineNum &&\n n.endLine >= lineNum\n );\n };\n\n // 1. Direct: NativeModules.ModuleName.methodName(\n const directRegex = /NativeModules\\.(\\w+)\\.(\\w+)\\s*\\(/g;\n let match: RegExpExecArray | null;\n while ((match = directRegex.exec(content)) !== null) {\n const moduleName = match[1];\n const methodName = match[2];\n const caller = enclosingNode(match.index);\n if (caller) {\n calls.push({ moduleName, methodName, callerNodeId: caller.id, via: 'NativeModules' });\n }\n }\n\n // 2. Destructured: const { ModuleName } = NativeModules (then ModuleName.method)\n const destructureRegex = /const\\s*\\{([^}]+)\\}\\s*=\\s*NativeModules/g;\n while ((match = destructureRegex.exec(content)) !== null) {\n const moduleNames = match[1]\n .split(',')\n .map(s => s.trim())\n .filter(Boolean);\n\n for (const moduleName of moduleNames) {\n // Find all calls to moduleName.methodName(\n const callRegex = new RegExp(`\\\\b${moduleName}\\\\.(\\\\w+)\\\\s*\\\\(`, 'g');\n let callMatch: RegExpExecArray | null;\n while ((callMatch = callRegex.exec(content)) !== null) {\n const methodName = callMatch[1];\n const caller = enclosingNode(callMatch.index);\n if (caller) {\n calls.push({\n moduleName,\n methodName,\n callerNodeId: caller.id,\n via: 'NativeModules',\n });\n }\n }\n }\n }\n\n // 3. NativeEventEmitter usage: new NativeEventEmitter(NativeModules.ModuleName)\n const emitterRegex = /new\\s+NativeEventEmitter\\s*\\(\\s*NativeModules\\.(\\w+)\\s*\\)/g;\n while ((match = emitterRegex.exec(content)) !== null) {\n const moduleName = match[1];\n const caller = enclosingNode(match.index);\n if (caller) {\n // Synthesize a synthetic \"attach\" method call to represent the binding\n calls.push({\n moduleName,\n methodName: '__eventEmitterAttach__',\n callerNodeId: caller.id,\n via: 'NativeEventEmitter',\n });\n }\n }\n }\n\n return calls;\n}\n\n/**\n * Scan JS/TS files for JSX prop usages that match @ReactProp names.\n * e.g. <MyView color=\"red\" /> \u2192 color prop setter in ViewManager\n *\n * Returns a map of propName \u2192 callerNodeId[]\n */\nfunction findJsxPropUsages(\n context: ResolutionContext,\n propNames: Set<string>\n): Map<string, string[]> {\n const result = new Map<string, string[]>();\n const files = context.getAllFiles();\n\n for (const f of files) {\n if (!f.endsWith('.tsx') && !f.endsWith('.jsx')) continue;\n\n const content = context.readFile(f);\n if (!content) continue;\n\n const nodes = context.getNodesInFile(f);\n\n for (const propName of propNames) {\n // Match JSX attribute: propName={...} or propName=\"...\"\n const attrRegex = new RegExp(`\\\\b${propName}\\\\s*=\\\\s*(?:\\\\{|\")`, 'g');\n let match: RegExpExecArray | null;\n while ((match = attrRegex.exec(content)) !== null) {\n const lineNum = content.slice(0, match.index).split('\\n').length;\n const enclosing = nodes.find(\n n =>\n (n.kind === 'function' || n.kind === 'method') &&\n n.startLine <= lineNum &&\n n.endLine >= lineNum\n );\n if (enclosing) {\n const existing = result.get(propName) ?? [];\n if (!existing.includes(enclosing.id)) {\n existing.push(enclosing.id);\n }\n result.set(propName, existing);\n }\n }\n }\n }\n\n return result;\n}\n\n// \u2500\u2500 Bridge Implementation \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nexport const androidRnBridge: BridgeResolver = {\n name: 'android-rn-bridge',\n\n detect(context: ResolutionContext): boolean {\n // Must be a React Native project\n const packageJson = context.readFile('package.json');\n if (!packageJson) return false;\n\n try {\n const pkg = JSON.parse(packageJson);\n const deps = { ...pkg.dependencies, ...pkg.devDependencies };\n if (!('react-native' in deps)) return false;\n } catch {\n return false;\n }\n\n // Must have Android native files with RN annotations\n return hasAndroidNativeFiles(context);\n },\n\n resolve(context: ResolutionContext): SynthesizedEdge[] {\n const edges: SynthesizedEdge[] = [];\n\n // \u2500\u2500 1. @ReactMethod edges \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\n const methodDecls = findReactMethodDecls(context);\n const jsCalls = findAndroidNativeModuleCalls(context);\n\n for (const call of jsCalls) {\n // NativeEventEmitter attach \u2014 skip method matching, handled below\n if (call.via === 'NativeEventEmitter') continue;\n\n for (const decl of methodDecls) {\n if (call.moduleName === decl.moduleName && call.methodName === decl.methodName) {\n edges.push({\n source: call.callerNodeId,\n target: decl.nodeId,\n kind: 'calls',\n confidence: 'inferred',\n confidenceScore: decl.isBlocking ? 0.75 : 0.7,\n metadata: {\n synthesizedBy: 'android-rn-bridge',\n provenance: 'heuristic',\n moduleName: call.moduleName,\n methodName: call.methodName,\n nativeLanguage: decl.filePath.endsWith('.kt') ? 'kotlin' : 'java',\n isBlockingSynchronousMethod: decl.isBlocking,\n },\n });\n }\n }\n }\n\n // \u2500\u2500 2. NativeEventEmitter \u2192 module edges \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n // Synthesize a \"references\" edge from the JS emitter attachment to the\n // module class node so the call graph surfaces the Android \u2194 JS binding.\n\n const emitterCalls = jsCalls.filter(c => c.via === 'NativeEventEmitter');\n for (const call of emitterCalls) {\n // Find any @ReactMethod in the referenced module as a representative target\n const moduleDecls = methodDecls.filter(d => d.moduleName === call.moduleName);\n for (const decl of moduleDecls) {\n edges.push({\n source: call.callerNodeId,\n target: decl.nodeId,\n kind: 'references',\n confidence: 'inferred',\n confidenceScore: 0.65,\n metadata: {\n synthesizedBy: 'android-rn-bridge',\n provenance: 'heuristic',\n moduleName: call.moduleName,\n via: 'NativeEventEmitter',\n nativeLanguage: decl.filePath.endsWith('.kt') ? 'kotlin' : 'java',\n },\n });\n // Only one representative edge per emitter attachment\n break;\n }\n }\n\n // \u2500\u2500 3. @ReactProp edges \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\n const propDecls = findReactPropDecls(context);\n if (propDecls.length > 0) {\n const propNameSet = new Set(propDecls.map(p => p.propName));\n const jsxUsages = findJsxPropUsages(context, propNameSet);\n\n for (const propDecl of propDecls) {\n const callerIds = jsxUsages.get(propDecl.propName) ?? [];\n for (const callerId of callerIds) {\n edges.push({\n source: callerId,\n target: propDecl.nodeId,\n kind: 'references',\n confidence: 'inferred',\n confidenceScore: 0.7,\n metadata: {\n synthesizedBy: 'android-rn-bridge',\n provenance: 'heuristic',\n moduleName: propDecl.moduleName,\n propName: propDecl.propName,\n nativeLanguage: propDecl.filePath.endsWith('.kt') ? 'kotlin' : 'java',\n },\n });\n }\n }\n }\n\n return edges;\n },\n};\n"],
5
+ "mappings": "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",
6
+ "names": []
7
+ }
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Expo Modules Bridge
3
+ *
4
+ * Synthesizes edges between JavaScript calls to requireNativeModule('X').fn()
5
+ * and Swift/Kotlin module definitions using the Expo Modules DSL:
6
+ * Module { Name("X"); AsyncFunction("fn") { ... } }
7
+ */
8
+ import type { BridgeResolver } from './index';
9
+ export declare const expoModulesBridge: BridgeResolver;
10
+ //# sourceMappingURL=expo-modules.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"expo-modules.d.ts","sourceRoot":"","sources":["../../../src/resolution/bridges/expo-modules.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,OAAO,KAAK,EAAE,cAAc,EAAmB,MAAM,SAAS,CAAC;AAuJ/D,eAAO,MAAM,iBAAiB,EAAE,cAwD/B,CAAC"}