kirograph 0.19.0 → 0.20.1

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 (690) hide show
  1. package/README.md +10 -8
  2. package/dist/architecture/layers/dart.d.ts +10 -0
  3. package/dist/architecture/layers/dart.d.ts.map +1 -0
  4. package/dist/architecture/layers/elixir.d.ts +6 -0
  5. package/dist/architecture/layers/elixir.d.ts.map +1 -0
  6. package/dist/architecture/layers/index.d.ts.map +1 -1
  7. package/dist/architecture/layers/ocaml.d.ts +6 -0
  8. package/dist/architecture/layers/ocaml.d.ts.map +1 -0
  9. package/dist/architecture/layers/scala.d.ts +6 -0
  10. package/dist/architecture/layers/scala.d.ts.map +1 -0
  11. package/dist/architecture/layers/solidity.d.ts +6 -0
  12. package/dist/architecture/layers/solidity.d.ts.map +1 -0
  13. package/dist/architecture/layers/vue.d.ts +6 -0
  14. package/dist/architecture/layers/vue.d.ts.map +1 -0
  15. package/dist/architecture/manifest/elm.d.ts +3 -0
  16. package/dist/architecture/manifest/elm.d.ts.map +1 -0
  17. package/dist/architecture/manifest/index.d.ts.map +1 -1
  18. package/dist/architecture/manifest/ocaml.d.ts +3 -0
  19. package/dist/architecture/manifest/ocaml.d.ts.map +1 -0
  20. package/dist/architecture/manifest/scala.d.ts +3 -0
  21. package/dist/architecture/manifest/scala.d.ts.map +1 -0
  22. package/dist/bin/banner.d.ts.map +1 -1
  23. package/dist/bin/commands/affected.d.ts.map +1 -1
  24. package/dist/bin/commands/attack-surface.d.ts +3 -0
  25. package/dist/bin/commands/attack-surface.d.ts.map +1 -0
  26. package/dist/bin/commands/attack-surface.js +7 -0
  27. package/dist/bin/commands/attack-surface.js.map +2 -2
  28. package/dist/bin/commands/benchmark.d.ts +9 -0
  29. package/dist/bin/commands/benchmark.d.ts.map +1 -0
  30. package/dist/bin/commands/budget.d.ts +6 -0
  31. package/dist/bin/commands/budget.d.ts.map +1 -0
  32. package/dist/bin/commands/caveman.d.ts +7 -0
  33. package/dist/bin/commands/caveman.d.ts.map +1 -0
  34. package/dist/bin/commands/communities.d.ts +3 -0
  35. package/dist/bin/commands/communities.d.ts.map +1 -0
  36. package/dist/bin/commands/compression.d.ts +7 -0
  37. package/dist/bin/commands/compression.d.ts.map +1 -0
  38. package/dist/bin/commands/context.d.ts.map +1 -1
  39. package/dist/bin/commands/data.d.ts +3 -0
  40. package/dist/bin/commands/data.d.ts.map +1 -0
  41. package/dist/bin/commands/dead-code.d.ts +3 -0
  42. package/dist/bin/commands/dead-code.d.ts.map +1 -0
  43. package/dist/bin/commands/dep-confusion.d.ts +3 -0
  44. package/dist/bin/commands/dep-confusion.d.ts.map +1 -0
  45. package/dist/bin/commands/docs.d.ts +3 -0
  46. package/dist/bin/commands/docs.d.ts.map +1 -0
  47. package/dist/bin/commands/exec.d.ts +11 -0
  48. package/dist/bin/commands/exec.d.ts.map +1 -0
  49. package/dist/bin/commands/export.d.ts +3 -0
  50. package/dist/bin/commands/export.d.ts.map +1 -0
  51. package/dist/bin/commands/flows.d.ts +3 -0
  52. package/dist/bin/commands/flows.d.ts.map +1 -0
  53. package/dist/bin/commands/gain.d.ts +6 -0
  54. package/dist/bin/commands/gain.d.ts.map +1 -0
  55. package/dist/bin/commands/help.d.ts +7 -0
  56. package/dist/bin/commands/help.d.ts.map +1 -1
  57. package/dist/bin/commands/help.js +20 -3
  58. package/dist/bin/commands/help.js.map +2 -2
  59. package/dist/bin/commands/hotspots.d.ts +3 -0
  60. package/dist/bin/commands/hotspots.d.ts.map +1 -0
  61. package/dist/bin/commands/hotspots.js +94 -1
  62. package/dist/bin/commands/hotspots.js.map +3 -3
  63. package/dist/bin/commands/install.d.ts.map +1 -1
  64. package/dist/bin/commands/install.js +3 -3
  65. package/dist/bin/commands/install.js.map +2 -2
  66. package/dist/bin/commands/licenses.d.ts +3 -0
  67. package/dist/bin/commands/licenses.d.ts.map +1 -0
  68. package/dist/bin/commands/memory.d.ts +16 -0
  69. package/dist/bin/commands/memory.d.ts.map +1 -0
  70. package/dist/bin/commands/memory.js +151 -4
  71. package/dist/bin/commands/memory.js.map +2 -2
  72. package/dist/bin/commands/path.d.ts +3 -0
  73. package/dist/bin/commands/path.d.ts.map +1 -0
  74. package/dist/bin/commands/pattern.d.ts +3 -0
  75. package/dist/bin/commands/pattern.d.ts.map +1 -0
  76. package/dist/bin/commands/pattern.js +592 -0
  77. package/dist/bin/commands/pattern.js.map +7 -0
  78. package/dist/bin/commands/query.d.ts.map +1 -1
  79. package/dist/bin/commands/reachability.d.ts +3 -0
  80. package/dist/bin/commands/reachability.d.ts.map +1 -0
  81. package/dist/bin/commands/read.d.ts +6 -0
  82. package/dist/bin/commands/read.d.ts.map +1 -0
  83. package/dist/bin/commands/refactor.d.ts +3 -0
  84. package/dist/bin/commands/refactor.d.ts.map +1 -0
  85. package/dist/bin/commands/remediation.d.ts +3 -0
  86. package/dist/bin/commands/remediation.d.ts.map +1 -0
  87. package/dist/bin/commands/sbom.d.ts +3 -0
  88. package/dist/bin/commands/sbom.d.ts.map +1 -0
  89. package/dist/bin/commands/security-ci-report.d.ts +9 -0
  90. package/dist/bin/commands/security-ci-report.d.ts.map +1 -0
  91. package/dist/bin/commands/security-export.d.ts +2 -0
  92. package/dist/bin/commands/security-export.d.ts.map +1 -0
  93. package/dist/bin/commands/security-flows.d.ts +3 -0
  94. package/dist/bin/commands/security-flows.d.ts.map +1 -0
  95. package/dist/bin/commands/security-secrets.d.ts +3 -0
  96. package/dist/bin/commands/security-secrets.d.ts.map +1 -0
  97. package/dist/bin/commands/security.d.ts +3 -0
  98. package/dist/bin/commands/security.d.ts.map +1 -0
  99. package/dist/bin/commands/security.js +15 -0
  100. package/dist/bin/commands/security.js.map +2 -2
  101. package/dist/bin/commands/snapshot.d.ts +3 -0
  102. package/dist/bin/commands/snapshot.d.ts.map +1 -0
  103. package/dist/bin/commands/staleness.d.ts +3 -0
  104. package/dist/bin/commands/staleness.d.ts.map +1 -0
  105. package/dist/bin/commands/status.d.ts.map +1 -1
  106. package/dist/bin/commands/status.js +27 -0
  107. package/dist/bin/commands/status.js.map +2 -2
  108. package/dist/bin/commands/supply-chain.d.ts +3 -0
  109. package/dist/bin/commands/supply-chain.d.ts.map +1 -0
  110. package/dist/bin/commands/surprising.d.ts +3 -0
  111. package/dist/bin/commands/surprising.d.ts.map +1 -0
  112. package/dist/bin/commands/sync.d.ts.map +1 -1
  113. package/dist/bin/commands/uninit.d.ts.map +1 -1
  114. package/dist/bin/commands/utils.d.ts +5 -0
  115. package/dist/bin/commands/utils.d.ts.map +1 -1
  116. package/dist/bin/commands/vex.d.ts +3 -0
  117. package/dist/bin/commands/vex.d.ts.map +1 -0
  118. package/dist/bin/commands/vuln-suppress.d.ts +3 -0
  119. package/dist/bin/commands/vuln-suppress.d.ts.map +1 -0
  120. package/dist/bin/commands/vulns.d.ts +3 -0
  121. package/dist/bin/commands/vulns.d.ts.map +1 -0
  122. package/dist/bin/installer/archive.d.ts +47 -0
  123. package/dist/bin/installer/archive.d.ts.map +1 -0
  124. package/dist/bin/installer/auto-detect.d.ts +16 -0
  125. package/dist/bin/installer/auto-detect.d.ts.map +1 -0
  126. package/dist/bin/installer/caveman.d.ts +12 -0
  127. package/dist/bin/installer/caveman.d.ts.map +1 -0
  128. package/dist/bin/installer/cli-agent.d.ts +7 -2
  129. package/dist/bin/installer/cli-agent.d.ts.map +1 -1
  130. package/dist/bin/installer/cli-agent.js +6 -2
  131. package/dist/bin/installer/cli-agent.js.map +2 -2
  132. package/dist/bin/installer/common.d.ts +36 -0
  133. package/dist/bin/installer/common.d.ts.map +1 -0
  134. package/dist/bin/installer/common.js +2 -1
  135. package/dist/bin/installer/common.js.map +2 -2
  136. package/dist/bin/installer/config-prompt.d.ts +1 -1
  137. package/dist/bin/installer/config-prompt.d.ts.map +1 -1
  138. package/dist/bin/installer/config-prompt.js +74 -2
  139. package/dist/bin/installer/config-prompt.js.map +2 -2
  140. package/dist/bin/installer/dashboard.d.ts.map +1 -1
  141. package/dist/bin/installer/detect.d.ts +30 -0
  142. package/dist/bin/installer/detect.d.ts.map +1 -0
  143. package/dist/bin/installer/hooks.d.ts +4 -1
  144. package/dist/bin/installer/hooks.d.ts.map +1 -1
  145. package/dist/bin/installer/hooks.js +34 -0
  146. package/dist/bin/installer/hooks.js.map +2 -2
  147. package/dist/bin/installer/index.d.ts +5 -4
  148. package/dist/bin/installer/index.d.ts.map +1 -1
  149. package/dist/bin/installer/index.js +67 -8
  150. package/dist/bin/installer/index.js.map +2 -2
  151. package/dist/bin/installer/instructions.d.ts +14 -0
  152. package/dist/bin/installer/instructions.d.ts.map +1 -0
  153. package/dist/bin/installer/instructions.js +15 -1
  154. package/dist/bin/installer/instructions.js.map +2 -2
  155. package/dist/bin/installer/mcp.d.ts.map +1 -1
  156. package/dist/bin/installer/prompts.d.ts +17 -0
  157. package/dist/bin/installer/prompts.d.ts.map +1 -1
  158. package/dist/bin/installer/qdrant-dashboard.d.ts.map +1 -1
  159. package/dist/bin/installer/steering.d.ts +14 -2
  160. package/dist/bin/installer/steering.d.ts.map +1 -1
  161. package/dist/bin/installer/steering.js +81 -0
  162. package/dist/bin/installer/steering.js.map +2 -2
  163. package/dist/bin/installer/targets/aider.d.ts +6 -0
  164. package/dist/bin/installer/targets/aider.d.ts.map +1 -0
  165. package/dist/bin/installer/targets/aider.js +3 -3
  166. package/dist/bin/installer/targets/aider.js.map +2 -2
  167. package/dist/bin/installer/targets/amp.d.ts +6 -0
  168. package/dist/bin/installer/targets/amp.d.ts.map +1 -0
  169. package/dist/bin/installer/targets/amp.js +3 -3
  170. package/dist/bin/installer/targets/amp.js.map +2 -2
  171. package/dist/bin/installer/targets/antigravity.d.ts +13 -0
  172. package/dist/bin/installer/targets/antigravity.d.ts.map +1 -0
  173. package/dist/bin/installer/targets/antigravity.js +2 -2
  174. package/dist/bin/installer/targets/antigravity.js.map +2 -2
  175. package/dist/bin/installer/targets/augment.d.ts +6 -0
  176. package/dist/bin/installer/targets/augment.d.ts.map +1 -0
  177. package/dist/bin/installer/targets/augment.js +3 -3
  178. package/dist/bin/installer/targets/augment.js.map +2 -2
  179. package/dist/bin/installer/targets/claude.d.ts +6 -0
  180. package/dist/bin/installer/targets/claude.d.ts.map +1 -0
  181. package/dist/bin/installer/targets/claude.js +2 -2
  182. package/dist/bin/installer/targets/claude.js.map +2 -2
  183. package/dist/bin/installer/targets/cline.d.ts +13 -0
  184. package/dist/bin/installer/targets/cline.d.ts.map +1 -0
  185. package/dist/bin/installer/targets/cline.js +2 -2
  186. package/dist/bin/installer/targets/cline.js.map +2 -2
  187. package/dist/bin/installer/targets/codex.d.ts +6 -0
  188. package/dist/bin/installer/targets/codex.d.ts.map +1 -0
  189. package/dist/bin/installer/targets/codex.js +2 -2
  190. package/dist/bin/installer/targets/codex.js.map +2 -2
  191. package/dist/bin/installer/targets/continue.d.ts +12 -0
  192. package/dist/bin/installer/targets/continue.d.ts.map +1 -0
  193. package/dist/bin/installer/targets/continue.js +2 -2
  194. package/dist/bin/installer/targets/continue.js.map +2 -2
  195. package/dist/bin/installer/targets/copilot-cli.d.ts +12 -0
  196. package/dist/bin/installer/targets/copilot-cli.d.ts.map +1 -0
  197. package/dist/bin/installer/targets/copilot-cli.js +2 -2
  198. package/dist/bin/installer/targets/copilot-cli.js.map +2 -2
  199. package/dist/bin/installer/targets/copilot.d.ts +6 -0
  200. package/dist/bin/installer/targets/copilot.d.ts.map +1 -0
  201. package/dist/bin/installer/targets/copilot.js +2 -2
  202. package/dist/bin/installer/targets/copilot.js.map +2 -2
  203. package/dist/bin/installer/targets/cursor.d.ts +6 -0
  204. package/dist/bin/installer/targets/cursor.d.ts.map +1 -0
  205. package/dist/bin/installer/targets/cursor.js +2 -2
  206. package/dist/bin/installer/targets/cursor.js.map +2 -2
  207. package/dist/bin/installer/targets/devin.d.ts +13 -0
  208. package/dist/bin/installer/targets/devin.d.ts.map +1 -0
  209. package/dist/bin/installer/targets/devin.js +2 -2
  210. package/dist/bin/installer/targets/devin.js.map +2 -2
  211. package/dist/bin/installer/targets/gemini-cli.d.ts +16 -0
  212. package/dist/bin/installer/targets/gemini-cli.d.ts.map +1 -0
  213. package/dist/bin/installer/targets/gemini-cli.js +2 -2
  214. package/dist/bin/installer/targets/gemini-cli.js.map +2 -2
  215. package/dist/bin/installer/targets/generic.d.ts +59 -0
  216. package/dist/bin/installer/targets/generic.d.ts.map +1 -0
  217. package/dist/bin/installer/targets/generic.js +2 -2
  218. package/dist/bin/installer/targets/generic.js.map +2 -2
  219. package/dist/bin/installer/targets/goose.d.ts +6 -0
  220. package/dist/bin/installer/targets/goose.d.ts.map +1 -0
  221. package/dist/bin/installer/targets/goose.js +3 -3
  222. package/dist/bin/installer/targets/goose.js.map +2 -2
  223. package/dist/bin/installer/targets/index.d.ts +11 -0
  224. package/dist/bin/installer/targets/index.d.ts.map +1 -0
  225. package/dist/bin/installer/targets/index.js.map +1 -1
  226. package/dist/bin/installer/targets/junie.d.ts +13 -0
  227. package/dist/bin/installer/targets/junie.d.ts.map +1 -0
  228. package/dist/bin/installer/targets/junie.js +2 -2
  229. package/dist/bin/installer/targets/junie.js.map +2 -2
  230. package/dist/bin/installer/targets/kilo.d.ts +12 -0
  231. package/dist/bin/installer/targets/kilo.d.ts.map +1 -0
  232. package/dist/bin/installer/targets/kilo.js +2 -2
  233. package/dist/bin/installer/targets/kilo.js.map +2 -2
  234. package/dist/bin/installer/targets/kiro.d.ts +5 -0
  235. package/dist/bin/installer/targets/kiro.d.ts.map +1 -0
  236. package/dist/bin/installer/targets/kiro.js +4 -4
  237. package/dist/bin/installer/targets/kiro.js.map +2 -2
  238. package/dist/bin/installer/targets/opencode.d.ts +13 -0
  239. package/dist/bin/installer/targets/opencode.d.ts.map +1 -0
  240. package/dist/bin/installer/targets/opencode.js +2 -2
  241. package/dist/bin/installer/targets/opencode.js.map +2 -2
  242. package/dist/bin/installer/targets/openhands.d.ts +6 -0
  243. package/dist/bin/installer/targets/openhands.d.ts.map +1 -0
  244. package/dist/bin/installer/targets/openhands.js +3 -3
  245. package/dist/bin/installer/targets/openhands.js.map +2 -2
  246. package/dist/bin/installer/targets/qoder.d.ts +12 -0
  247. package/dist/bin/installer/targets/qoder.d.ts.map +1 -0
  248. package/dist/bin/installer/targets/qoder.js +2 -2
  249. package/dist/bin/installer/targets/qoder.js.map +2 -2
  250. package/dist/bin/installer/targets/qwen.d.ts +12 -0
  251. package/dist/bin/installer/targets/qwen.d.ts.map +1 -0
  252. package/dist/bin/installer/targets/qwen.js +2 -2
  253. package/dist/bin/installer/targets/qwen.js.map +2 -2
  254. package/dist/bin/installer/targets/replit.d.ts +6 -0
  255. package/dist/bin/installer/targets/replit.d.ts.map +1 -0
  256. package/dist/bin/installer/targets/replit.js +3 -3
  257. package/dist/bin/installer/targets/replit.js.map +2 -2
  258. package/dist/bin/installer/targets/roo.d.ts +13 -0
  259. package/dist/bin/installer/targets/roo.d.ts.map +1 -0
  260. package/dist/bin/installer/targets/roo.js +2 -2
  261. package/dist/bin/installer/targets/roo.js.map +2 -2
  262. package/dist/bin/installer/targets/tabnine.d.ts +6 -0
  263. package/dist/bin/installer/targets/tabnine.d.ts.map +1 -0
  264. package/dist/bin/installer/targets/tabnine.js +3 -3
  265. package/dist/bin/installer/targets/tabnine.js.map +2 -2
  266. package/dist/bin/installer/targets/trae.d.ts +6 -0
  267. package/dist/bin/installer/targets/trae.d.ts.map +1 -0
  268. package/dist/bin/installer/targets/trae.js +3 -3
  269. package/dist/bin/installer/targets/trae.js.map +2 -2
  270. package/dist/bin/installer/targets/warp.d.ts +12 -0
  271. package/dist/bin/installer/targets/warp.d.ts.map +1 -0
  272. package/dist/bin/installer/targets/warp.js +2 -2
  273. package/dist/bin/installer/targets/warp.js.map +2 -2
  274. package/dist/bin/installer/targets/windsurf.d.ts +13 -0
  275. package/dist/bin/installer/targets/windsurf.d.ts.map +1 -0
  276. package/dist/bin/installer/targets/windsurf.js +2 -2
  277. package/dist/bin/installer/targets/windsurf.js.map +2 -2
  278. package/dist/bin/kirograph.js +3 -1
  279. package/dist/bin/kirograph.js.map +3 -3
  280. package/dist/bin/progress.d.ts +16 -1
  281. package/dist/bin/progress.d.ts.map +1 -1
  282. package/dist/compression/filters/aws.d.ts +9 -0
  283. package/dist/compression/filters/aws.d.ts.map +1 -0
  284. package/dist/compression/filters/docker.d.ts +6 -0
  285. package/dist/compression/filters/docker.d.ts.map +1 -0
  286. package/dist/compression/filters/files.d.ts +6 -0
  287. package/dist/compression/filters/files.d.ts.map +1 -0
  288. package/dist/compression/filters/generic.d.ts +7 -0
  289. package/dist/compression/filters/generic.d.ts.map +1 -0
  290. package/dist/compression/filters/git.d.ts +6 -0
  291. package/dist/compression/filters/git.d.ts.map +1 -0
  292. package/dist/compression/filters/github.d.ts +6 -0
  293. package/dist/compression/filters/github.d.ts.map +1 -0
  294. package/dist/compression/filters/lint.d.ts +6 -0
  295. package/dist/compression/filters/lint.d.ts.map +1 -0
  296. package/dist/compression/filters/misc.d.ts +6 -0
  297. package/dist/compression/filters/misc.d.ts.map +1 -0
  298. package/dist/compression/filters/package.d.ts +6 -0
  299. package/dist/compression/filters/package.d.ts.map +1 -0
  300. package/dist/compression/filters/test.d.ts +6 -0
  301. package/dist/compression/filters/test.d.ts.map +1 -0
  302. package/dist/compression/index.d.ts +29 -0
  303. package/dist/compression/index.d.ts.map +1 -0
  304. package/dist/compression/naive-cost.d.ts +26 -0
  305. package/dist/compression/naive-cost.d.ts.map +1 -0
  306. package/dist/compression/tracker.d.ts +155 -0
  307. package/dist/compression/tracker.d.ts.map +1 -0
  308. package/dist/compression/types.d.ts +49 -0
  309. package/dist/compression/types.d.ts.map +1 -0
  310. package/dist/config.d.ts +90 -0
  311. package/dist/config.d.ts.map +1 -1
  312. package/dist/config.js +55 -1
  313. package/dist/config.js.map +2 -2
  314. package/dist/core/lock-manager.d.ts +2 -0
  315. package/dist/core/lock-manager.d.ts.map +1 -1
  316. package/dist/core/pipeline.d.ts +4 -1
  317. package/dist/core/pipeline.d.ts.map +1 -1
  318. package/dist/core/pipeline.js +42 -0
  319. package/dist/core/pipeline.js.map +2 -2
  320. package/dist/core/snapshot.d.ts +58 -0
  321. package/dist/core/snapshot.d.ts.map +1 -0
  322. package/dist/data/filters.d.ts +23 -0
  323. package/dist/data/filters.d.ts.map +1 -0
  324. package/dist/data/indexer.d.ts +25 -0
  325. package/dist/data/indexer.d.ts.map +1 -0
  326. package/dist/data/linker.d.ts +37 -0
  327. package/dist/data/linker.d.ts.map +1 -0
  328. package/dist/data/lint.d.ts +27 -0
  329. package/dist/data/lint.d.ts.map +1 -0
  330. package/dist/data/parsers/csv.d.ts +11 -0
  331. package/dist/data/parsers/csv.d.ts.map +1 -0
  332. package/dist/data/parsers/excel.d.ts +10 -0
  333. package/dist/data/parsers/excel.d.ts.map +1 -0
  334. package/dist/data/parsers/index.d.ts +28 -0
  335. package/dist/data/parsers/index.d.ts.map +1 -0
  336. package/dist/data/parsers/json-array.d.ts +9 -0
  337. package/dist/data/parsers/json-array.d.ts.map +1 -0
  338. package/dist/data/parsers/jsonl.d.ts +9 -0
  339. package/dist/data/parsers/jsonl.d.ts.map +1 -0
  340. package/dist/data/parsers/parquet.d.ts +10 -0
  341. package/dist/data/parsers/parquet.d.ts.map +1 -0
  342. package/dist/data/profiler.d.ts +29 -0
  343. package/dist/data/profiler.d.ts.map +1 -0
  344. package/dist/data/queries.d.ts +95 -0
  345. package/dist/data/queries.d.ts.map +1 -0
  346. package/dist/data/types.d.ts +103 -0
  347. package/dist/data/types.d.ts.map +1 -0
  348. package/dist/db/database.d.ts +57 -0
  349. package/dist/db/database.d.ts.map +1 -1
  350. package/dist/db/database.js +19 -0
  351. package/dist/db/database.js.map +2 -2
  352. package/dist/db/patterns-schema.sql +23 -0
  353. package/dist/docs/formats/asciidoc.d.ts +9 -0
  354. package/dist/docs/formats/asciidoc.d.ts.map +1 -0
  355. package/dist/docs/formats/html.d.ts +10 -0
  356. package/dist/docs/formats/html.d.ts.map +1 -0
  357. package/dist/docs/formats/index.d.ts +31 -0
  358. package/dist/docs/formats/index.d.ts.map +1 -0
  359. package/dist/docs/formats/markdown.d.ts +11 -0
  360. package/dist/docs/formats/markdown.d.ts.map +1 -0
  361. package/dist/docs/formats/openapi.d.ts +17 -0
  362. package/dist/docs/formats/openapi.d.ts.map +1 -0
  363. package/dist/docs/formats/org.d.ts +9 -0
  364. package/dist/docs/formats/org.d.ts.map +1 -0
  365. package/dist/docs/formats/plaintext.d.ts +11 -0
  366. package/dist/docs/formats/plaintext.d.ts.map +1 -0
  367. package/dist/docs/formats/rdoc.d.ts +10 -0
  368. package/dist/docs/formats/rdoc.d.ts.map +1 -0
  369. package/dist/docs/formats/rst.d.ts +11 -0
  370. package/dist/docs/formats/rst.d.ts.map +1 -0
  371. package/dist/docs/indexer.d.ts +49 -0
  372. package/dist/docs/indexer.d.ts.map +1 -0
  373. package/dist/docs/linker.d.ts +30 -0
  374. package/dist/docs/linker.d.ts.map +1 -0
  375. package/dist/docs/lint.d.ts +27 -0
  376. package/dist/docs/lint.d.ts.map +1 -0
  377. package/dist/docs/queries.d.ts +78 -0
  378. package/dist/docs/queries.d.ts.map +1 -0
  379. package/dist/docs/section-id.d.ts +48 -0
  380. package/dist/docs/section-id.d.ts.map +1 -0
  381. package/dist/docs/summarizer.d.ts +13 -0
  382. package/dist/docs/summarizer.d.ts.map +1 -0
  383. package/dist/docs/types.d.ts +71 -0
  384. package/dist/docs/types.d.ts.map +1 -0
  385. package/dist/docs/vectors.d.ts +54 -0
  386. package/dist/docs/vectors.d.ts.map +1 -0
  387. package/dist/extraction/extractor.d.ts +1 -1
  388. package/dist/extraction/extractor.d.ts.map +1 -1
  389. package/dist/extraction/extractor.js +26 -3
  390. package/dist/extraction/extractor.js.map +2 -2
  391. package/dist/extraction/grammars.d.ts +6 -0
  392. package/dist/extraction/grammars.d.ts.map +1 -1
  393. package/dist/extraction/grammars.js +1 -0
  394. package/dist/extraction/grammars.js.map +2 -2
  395. package/dist/extraction/languages.d.ts.map +1 -1
  396. package/dist/extraction/languages.js +5 -1
  397. package/dist/extraction/languages.js.map +2 -2
  398. package/dist/extraction/notebook.d.ts +14 -0
  399. package/dist/extraction/notebook.d.ts.map +1 -0
  400. package/dist/frameworks/amplify.d.ts +9 -0
  401. package/dist/frameworks/amplify.d.ts.map +1 -0
  402. package/dist/frameworks/angular.d.ts +9 -0
  403. package/dist/frameworks/angular.d.ts.map +1 -0
  404. package/dist/frameworks/ansible.d.ts +8 -0
  405. package/dist/frameworks/ansible.d.ts.map +1 -0
  406. package/dist/frameworks/cloudformation.d.ts +9 -0
  407. package/dist/frameworks/cloudformation.d.ts.map +1 -0
  408. package/dist/frameworks/docker.d.ts +9 -0
  409. package/dist/frameworks/docker.d.ts.map +1 -0
  410. package/dist/frameworks/elixir.d.ts +6 -0
  411. package/dist/frameworks/elixir.d.ts.map +1 -0
  412. package/dist/frameworks/flutter.d.ts +12 -0
  413. package/dist/frameworks/flutter.d.ts.map +1 -0
  414. package/dist/frameworks/iac.d.ts +10 -0
  415. package/dist/frameworks/iac.d.ts.map +1 -0
  416. package/dist/frameworks/index.d.ts +14 -0
  417. package/dist/frameworks/index.d.ts.map +1 -1
  418. package/dist/frameworks/kubernetes.d.ts +9 -0
  419. package/dist/frameworks/kubernetes.d.ts.map +1 -0
  420. package/dist/frameworks/pulumi.d.ts +9 -0
  421. package/dist/frameworks/pulumi.d.ts.map +1 -0
  422. package/dist/frameworks/scala.d.ts +6 -0
  423. package/dist/frameworks/scala.d.ts.map +1 -0
  424. package/dist/frameworks/solidity.d.ts +6 -0
  425. package/dist/frameworks/solidity.d.ts.map +1 -0
  426. package/dist/frameworks/terraform.d.ts +14 -0
  427. package/dist/frameworks/terraform.d.ts.map +1 -0
  428. package/dist/frameworks/vue.d.ts +7 -0
  429. package/dist/frameworks/vue.d.ts.map +1 -0
  430. package/dist/graph/communities.d.ts +43 -0
  431. package/dist/graph/communities.d.ts.map +1 -0
  432. package/dist/graph/flows.d.ts +55 -0
  433. package/dist/graph/flows.d.ts.map +1 -0
  434. package/dist/graph/refactor.d.ts +43 -0
  435. package/dist/graph/refactor.d.ts.map +1 -0
  436. package/dist/index.d.ts +36 -4
  437. package/dist/index.d.ts.map +1 -1
  438. package/dist/mcp/cache.d.ts +69 -0
  439. package/dist/mcp/cache.d.ts.map +1 -0
  440. package/dist/mcp/read-modes.d.ts +31 -0
  441. package/dist/mcp/read-modes.d.ts.map +1 -0
  442. package/dist/mcp/server.d.ts +1 -0
  443. package/dist/mcp/server.d.ts.map +1 -1
  444. package/dist/mcp/server.js +15 -2
  445. package/dist/mcp/server.js.map +2 -2
  446. package/dist/mcp/tool-names.d.ts +2 -0
  447. package/dist/mcp/tool-names.d.ts.map +1 -0
  448. package/dist/mcp/tool-names.js +4 -1
  449. package/dist/mcp/tool-names.js.map +2 -2
  450. package/dist/mcp/tools.d.ts +12 -0
  451. package/dist/mcp/tools.d.ts.map +1 -1
  452. package/dist/mcp/tools.js +397 -0
  453. package/dist/mcp/tools.js.map +2 -2
  454. package/dist/memory/compress.d.ts +19 -0
  455. package/dist/memory/compress.d.ts.map +1 -0
  456. package/dist/memory/database.d.ts +92 -0
  457. package/dist/memory/database.d.ts.map +1 -0
  458. package/dist/memory/database.js +38 -0
  459. package/dist/memory/database.js.map +2 -2
  460. package/dist/memory/index.d.ts +71 -0
  461. package/dist/memory/index.d.ts.map +1 -0
  462. package/dist/memory/index.js +12 -2
  463. package/dist/memory/index.js.map +2 -2
  464. package/dist/memory/symbols.d.ts +21 -0
  465. package/dist/memory/symbols.d.ts.map +1 -0
  466. package/dist/memory/types.d.ts +78 -0
  467. package/dist/memory/types.d.ts.map +1 -0
  468. package/dist/memory/types.js.map +1 -1
  469. package/dist/memory/vectors.d.ts +43 -0
  470. package/dist/memory/vectors.d.ts.map +1 -0
  471. package/dist/patterns/graph.d.ts +16 -0
  472. package/dist/patterns/graph.d.ts.map +1 -0
  473. package/dist/patterns/graph.js +45 -0
  474. package/dist/patterns/graph.js.map +7 -0
  475. package/dist/patterns/index.d.ts +4 -0
  476. package/dist/patterns/index.d.ts.map +1 -0
  477. package/dist/patterns/index.js +39 -0
  478. package/dist/patterns/index.js.map +7 -0
  479. package/dist/patterns/indexer.d.ts +15 -0
  480. package/dist/patterns/indexer.d.ts.map +1 -0
  481. package/dist/patterns/indexer.js +97 -0
  482. package/dist/patterns/indexer.js.map +7 -0
  483. package/dist/patterns/library/code-eval-elixir.yaml +11 -0
  484. package/dist/patterns/library/command-injection-c.yaml +11 -0
  485. package/dist/patterns/library/command-injection-go.yaml +29 -0
  486. package/dist/patterns/library/command-injection-kotlin.yaml +10 -0
  487. package/dist/patterns/library/command-injection-php.yaml +11 -0
  488. package/dist/patterns/library/command-injection-ruby.yaml +11 -0
  489. package/dist/patterns/library/command-injection-rust.yaml +11 -0
  490. package/dist/patterns/library/dangerous-eval-bash.yaml +11 -0
  491. package/dist/patterns/library/dangerous-eval-js.yaml +14 -0
  492. package/dist/patterns/library/dangerous-eval-php.yaml +11 -0
  493. package/dist/patterns/library/dangerous-eval-ruby.yaml +11 -0
  494. package/dist/patterns/library/dangerous-exec-py.yaml +13 -0
  495. package/dist/patterns/library/dangerous-reflection-java.yaml +8 -0
  496. package/dist/patterns/library/dynamic-load-lua.yaml +10 -0
  497. package/dist/patterns/library/os-cmd-elixir.yaml +16 -0
  498. package/dist/patterns/library/os-execute-lua.yaml +10 -0
  499. package/dist/patterns/library/path-traversal-go.yaml +11 -0
  500. package/dist/patterns/library/path-traversal-py.yaml +12 -0
  501. package/dist/patterns/library/path-traversal-readfile-js.yaml +14 -0
  502. package/dist/patterns/library/process-launch-swift.yaml +11 -0
  503. package/dist/patterns/library/process-run-dart.yaml +15 -0
  504. package/dist/patterns/library/prototype-pollution-js.yaml +12 -0
  505. package/dist/patterns/library/source-injection-bash.yaml +11 -0
  506. package/dist/patterns/library/sql-injection-concat-js.yaml +12 -0
  507. package/dist/patterns/library/sql-injection-dart.yaml +9 -0
  508. package/dist/patterns/library/sql-injection-java.yaml +13 -0
  509. package/dist/patterns/library/sql-injection-kotlin.yaml +11 -0
  510. package/dist/patterns/library/sql-injection-php.yaml +9 -0
  511. package/dist/patterns/library/sql-injection-py.yaml +12 -0
  512. package/dist/patterns/library/sql-injection-swift.yaml +11 -0
  513. package/dist/patterns/library/sql-injection-template-js.yaml +13 -0
  514. package/dist/patterns/library/subshell-injection-ruby.yaml +8 -0
  515. package/dist/patterns/library/unsafe-block-rust.yaml +8 -0
  516. package/dist/patterns/library/unsafe-string-c.yaml +11 -0
  517. package/dist/patterns/library/weak-crypto-md5-js.yaml +13 -0
  518. package/dist/patterns/library/weak-crypto-py.yaml +13 -0
  519. package/dist/patterns/loader.d.ts +18 -0
  520. package/dist/patterns/loader.d.ts.map +1 -0
  521. package/dist/patterns/loader.js +277 -0
  522. package/dist/patterns/loader.js.map +7 -0
  523. package/dist/patterns/runner.d.ts +42 -0
  524. package/dist/patterns/runner.d.ts.map +1 -0
  525. package/dist/patterns/runner.js +295 -0
  526. package/dist/patterns/runner.js.map +7 -0
  527. package/dist/patterns/types.d.ts +27 -0
  528. package/dist/patterns/types.d.ts.map +1 -0
  529. package/dist/patterns/types.js +34 -0
  530. package/dist/patterns/types.js.map +7 -0
  531. package/dist/resolution/bridges/android-rn.d.ts +13 -0
  532. package/dist/resolution/bridges/android-rn.d.ts.map +1 -0
  533. package/dist/resolution/bridges/expo-modules.d.ts +10 -0
  534. package/dist/resolution/bridges/expo-modules.d.ts.map +1 -0
  535. package/dist/resolution/bridges/flutter-channel.d.ts +14 -0
  536. package/dist/resolution/bridges/flutter-channel.d.ts.map +1 -0
  537. package/dist/resolution/bridges/index.d.ts +40 -0
  538. package/dist/resolution/bridges/index.d.ts.map +1 -0
  539. package/dist/resolution/bridges/native-events.d.ts +10 -0
  540. package/dist/resolution/bridges/native-events.d.ts.map +1 -0
  541. package/dist/resolution/bridges/native-views.d.ts +13 -0
  542. package/dist/resolution/bridges/native-views.d.ts.map +1 -0
  543. package/dist/resolution/bridges/react-native.d.ts +9 -0
  544. package/dist/resolution/bridges/react-native.d.ts.map +1 -0
  545. package/dist/resolution/bridges/swift-objc.d.ts +14 -0
  546. package/dist/resolution/bridges/swift-objc.d.ts.map +1 -0
  547. package/dist/resolution/bridges/turbomodules.d.ts +10 -0
  548. package/dist/resolution/bridges/turbomodules.d.ts.map +1 -0
  549. package/dist/resolution/index.d.ts +28 -3
  550. package/dist/resolution/index.d.ts.map +1 -1
  551. package/dist/security/attack-surface.d.ts +46 -0
  552. package/dist/security/attack-surface.d.ts.map +1 -0
  553. package/dist/security/attack-surface.js +43 -1
  554. package/dist/security/attack-surface.js.map +2 -2
  555. package/dist/security/context-warnings.d.ts +40 -0
  556. package/dist/security/context-warnings.d.ts.map +1 -0
  557. package/dist/security/data-flows.d.ts +33 -0
  558. package/dist/security/data-flows.d.ts.map +1 -0
  559. package/dist/security/data-flows.js +65 -7
  560. package/dist/security/data-flows.js.map +2 -2
  561. package/dist/security/dep-confusion.d.ts +23 -0
  562. package/dist/security/dep-confusion.d.ts.map +1 -0
  563. package/dist/security/errors.d.ts +16 -0
  564. package/dist/security/errors.d.ts.map +1 -0
  565. package/dist/security/export/fix-suggestions.d.ts +21 -0
  566. package/dist/security/export/fix-suggestions.d.ts.map +1 -0
  567. package/dist/security/export/sbom.d.ts +33 -0
  568. package/dist/security/export/sbom.d.ts.map +1 -0
  569. package/dist/security/export/serialization.d.ts +62 -0
  570. package/dist/security/export/serialization.d.ts.map +1 -0
  571. package/dist/security/export/vex.d.ts +58 -0
  572. package/dist/security/export/vex.d.ts.map +1 -0
  573. package/dist/security/index.d.ts +21 -0
  574. package/dist/security/index.d.ts.map +1 -0
  575. package/dist/security/integrator.d.ts +63 -0
  576. package/dist/security/integrator.d.ts.map +1 -0
  577. package/dist/security/integrator.js +8 -8
  578. package/dist/security/integrator.js.map +2 -2
  579. package/dist/security/license.d.ts +33 -0
  580. package/dist/security/license.d.ts.map +1 -0
  581. package/dist/security/manifest/adapter.d.ts +92 -0
  582. package/dist/security/manifest/adapter.d.ts.map +1 -0
  583. package/dist/security/manifest/parser.d.ts +73 -0
  584. package/dist/security/manifest/parser.d.ts.map +1 -0
  585. package/dist/security/manifest/plugins/cargo.d.ts +11 -0
  586. package/dist/security/manifest/plugins/cargo.d.ts.map +1 -0
  587. package/dist/security/manifest/plugins/composer.d.ts +11 -0
  588. package/dist/security/manifest/plugins/composer.d.ts.map +1 -0
  589. package/dist/security/manifest/plugins/go.d.ts +12 -0
  590. package/dist/security/manifest/plugins/go.d.ts.map +1 -0
  591. package/dist/security/manifest/plugins/gradle.d.ts +12 -0
  592. package/dist/security/manifest/plugins/gradle.d.ts.map +1 -0
  593. package/dist/security/manifest/plugins/hex.d.ts +11 -0
  594. package/dist/security/manifest/plugins/hex.d.ts.map +1 -0
  595. package/dist/security/manifest/plugins/maven.d.ts +11 -0
  596. package/dist/security/manifest/plugins/maven.d.ts.map +1 -0
  597. package/dist/security/manifest/plugins/npm.d.ts +11 -0
  598. package/dist/security/manifest/plugins/npm.d.ts.map +1 -0
  599. package/dist/security/manifest/plugins/nuget.d.ts +12 -0
  600. package/dist/security/manifest/plugins/nuget.d.ts.map +1 -0
  601. package/dist/security/manifest/plugins/pip.d.ts +11 -0
  602. package/dist/security/manifest/plugins/pip.d.ts.map +1 -0
  603. package/dist/security/manifest/plugins/pubspec.d.ts +11 -0
  604. package/dist/security/manifest/plugins/pubspec.d.ts.map +1 -0
  605. package/dist/security/manifest/plugins/pyproject.d.ts +3 -0
  606. package/dist/security/manifest/plugins/pyproject.d.ts.map +1 -0
  607. package/dist/security/manifest/plugins/rubygems.d.ts +11 -0
  608. package/dist/security/manifest/plugins/rubygems.d.ts.map +1 -0
  609. package/dist/security/manifest/plugins/swift.d.ts +11 -0
  610. package/dist/security/manifest/plugins/swift.d.ts.map +1 -0
  611. package/dist/security/owasp.d.ts +16 -0
  612. package/dist/security/owasp.d.ts.map +1 -0
  613. package/dist/security/pipeline.d.ts +37 -0
  614. package/dist/security/pipeline.d.ts.map +1 -0
  615. package/dist/security/reachability.d.ts +67 -0
  616. package/dist/security/reachability.d.ts.map +1 -0
  617. package/dist/security/remediation.d.ts +51 -0
  618. package/dist/security/remediation.d.ts.map +1 -0
  619. package/dist/security/secrets.d.ts +38 -0
  620. package/dist/security/secrets.d.ts.map +1 -0
  621. package/dist/security/staleness.d.ts +43 -0
  622. package/dist/security/staleness.d.ts.map +1 -0
  623. package/dist/security/supply-chain.d.ts +34 -0
  624. package/dist/security/supply-chain.d.ts.map +1 -0
  625. package/dist/security/suppressions.d.ts +18 -0
  626. package/dist/security/suppressions.d.ts.map +1 -0
  627. package/dist/security/types.d.ts +144 -0
  628. package/dist/security/types.d.ts.map +1 -0
  629. package/dist/security/vuln/client.d.ts +90 -0
  630. package/dist/security/vuln/client.d.ts.map +1 -0
  631. package/dist/security/vuln/client.js.map +2 -2
  632. package/dist/security/vuln/epss-client.d.ts +26 -0
  633. package/dist/security/vuln/epss-client.d.ts.map +1 -0
  634. package/dist/security/vuln/index.d.ts +6 -0
  635. package/dist/security/vuln/index.d.ts.map +1 -0
  636. package/dist/security/vuln/osv-adapter.d.ts +58 -0
  637. package/dist/security/vuln/osv-adapter.d.ts.map +1 -0
  638. package/dist/security/vuln/types.d.ts +29 -0
  639. package/dist/security/vuln/types.d.ts.map +1 -0
  640. package/dist/sync/index.d.ts +4 -2
  641. package/dist/sync/index.d.ts.map +1 -1
  642. package/dist/types.d.ts +10 -4
  643. package/dist/types.d.ts.map +1 -1
  644. package/dist/types.js.map +2 -2
  645. package/dist/vectors/index.d.ts +11 -3
  646. package/dist/vectors/index.d.ts.map +1 -1
  647. package/dist/vectors/qdrant-index.d.ts +10 -3
  648. package/dist/vectors/qdrant-index.d.ts.map +1 -1
  649. package/dist/vectors/turboquant-index.js +261 -0
  650. package/dist/vectors/turboquant-index.js.map +7 -0
  651. package/dist/vectors/typesense-index.d.ts.map +1 -1
  652. package/dist/watchmen/index.js +83 -0
  653. package/dist/watchmen/index.js.map +7 -0
  654. package/dist/watchmen/synthesize.js +475 -0
  655. package/dist/watchmen/synthesize.js.map +7 -0
  656. package/package.json +24 -2
  657. package/dist/security/context-warnings.test.js +0 -300
  658. package/dist/security/context-warnings.test.js.map +0 -7
  659. package/dist/security/export/fix-suggestions.test.js +0 -74
  660. package/dist/security/export/fix-suggestions.test.js.map +0 -7
  661. package/dist/security/export/sbom.test.js +0 -288
  662. package/dist/security/export/sbom.test.js.map +0 -7
  663. package/dist/security/export/serialization.test.js +0 -310
  664. package/dist/security/export/serialization.test.js.map +0 -7
  665. package/dist/security/export/vex.test.js +0 -278
  666. package/dist/security/export/vex.test.js.map +0 -7
  667. package/dist/security/integrator-transitives.test.js +0 -359
  668. package/dist/security/integrator-transitives.test.js.map +0 -7
  669. package/dist/security/integrator.test.js +0 -237
  670. package/dist/security/integrator.test.js.map +0 -7
  671. package/dist/security/manifest/adapter.test.js +0 -272
  672. package/dist/security/manifest/adapter.test.js.map +0 -7
  673. package/dist/security/manifest/parser.test.js +0 -110
  674. package/dist/security/manifest/parser.test.js.map +0 -7
  675. package/dist/security/manifest/plugins/cargo.test.js +0 -304
  676. package/dist/security/manifest/plugins/cargo.test.js.map +0 -7
  677. package/dist/security/manifest/plugins/go.test.js +0 -341
  678. package/dist/security/manifest/plugins/go.test.js.map +0 -7
  679. package/dist/security/manifest/plugins/maven.test.js +0 -389
  680. package/dist/security/manifest/plugins/maven.test.js.map +0 -7
  681. package/dist/security/manifest/plugins/npm.test.js +0 -298
  682. package/dist/security/manifest/plugins/npm.test.js.map +0 -7
  683. package/dist/security/manifest/plugins/pip.test.js +0 -208
  684. package/dist/security/manifest/plugins/pip.test.js.map +0 -7
  685. package/dist/security/reachability.test.js +0 -394
  686. package/dist/security/reachability.test.js.map +0 -7
  687. package/dist/security/vuln/client.test.js +0 -288
  688. package/dist/security/vuln/client.test.js.map +0 -7
  689. package/dist/security/vuln/osv-adapter.test.js +0 -391
  690. package/dist/security/vuln/osv-adapter.test.js.map +0 -7
@@ -1,391 +0,0 @@
1
- "use strict";
2
- var import_vitest = require("vitest");
3
- var import_osv_adapter = require("./osv-adapter");
4
- var import_errors = require("../errors");
5
- (0, import_vitest.describe)("OsvAdapter", () => {
6
- let adapter;
7
- (0, import_vitest.beforeEach)(() => {
8
- adapter = new import_osv_adapter.OsvAdapter({ apiUrl: "https://api.osv.dev/v1/query" });
9
- import_vitest.vi.stubGlobal("fetch", import_vitest.vi.fn());
10
- });
11
- (0, import_vitest.afterEach)(() => {
12
- import_vitest.vi.restoreAllMocks();
13
- });
14
- (0, import_vitest.it)('has name "OSV"', () => {
15
- (0, import_vitest.expect)(adapter.name).toBe("OSV");
16
- });
17
- (0, import_vitest.it)("returns empty array for unsupported ecosystem", async () => {
18
- const result = await adapter.query("unsupported", "pkg", "1.0.0");
19
- (0, import_vitest.expect)(result).toEqual([]);
20
- (0, import_vitest.expect)(fetch).not.toHaveBeenCalled();
21
- });
22
- (0, import_vitest.it)("maps npm ecosystem correctly and sends proper request", async () => {
23
- const mockResponse = { vulns: [] };
24
- import_vitest.vi.mocked(fetch).mockResolvedValue(
25
- new Response(JSON.stringify(mockResponse), { status: 200 })
26
- );
27
- await adapter.query("npm", "express", "4.18.2");
28
- (0, import_vitest.expect)(fetch).toHaveBeenCalledWith(
29
- "https://api.osv.dev/v1/query",
30
- import_vitest.expect.objectContaining({
31
- method: "POST",
32
- headers: { "Content-Type": "application/json" },
33
- body: JSON.stringify({
34
- package: { name: "express", ecosystem: "npm" },
35
- version: "4.18.2"
36
- })
37
- })
38
- );
39
- });
40
- (0, import_vitest.it)("maps maven ecosystem to Maven", async () => {
41
- import_vitest.vi.mocked(fetch).mockResolvedValue(
42
- new Response(JSON.stringify({ vulns: [] }), { status: 200 })
43
- );
44
- await adapter.query("maven", "log4j-core", "2.14.0");
45
- (0, import_vitest.expect)(fetch).toHaveBeenCalledWith(
46
- import_vitest.expect.any(String),
47
- import_vitest.expect.objectContaining({
48
- body: import_vitest.expect.stringContaining('"ecosystem":"Maven"')
49
- })
50
- );
51
- });
52
- (0, import_vitest.it)("maps go ecosystem to Go", async () => {
53
- import_vitest.vi.mocked(fetch).mockResolvedValue(
54
- new Response(JSON.stringify({ vulns: [] }), { status: 200 })
55
- );
56
- await adapter.query("go", "github.com/gin-gonic/gin", "1.9.1");
57
- (0, import_vitest.expect)(fetch).toHaveBeenCalledWith(
58
- import_vitest.expect.any(String),
59
- import_vitest.expect.objectContaining({
60
- body: import_vitest.expect.stringContaining('"ecosystem":"Go"')
61
- })
62
- );
63
- });
64
- (0, import_vitest.it)("maps pypi ecosystem to PyPI", async () => {
65
- import_vitest.vi.mocked(fetch).mockResolvedValue(
66
- new Response(JSON.stringify({ vulns: [] }), { status: 200 })
67
- );
68
- await adapter.query("pypi", "django", "4.2.0");
69
- (0, import_vitest.expect)(fetch).toHaveBeenCalledWith(
70
- import_vitest.expect.any(String),
71
- import_vitest.expect.objectContaining({
72
- body: import_vitest.expect.stringContaining('"ecosystem":"PyPI"')
73
- })
74
- );
75
- });
76
- (0, import_vitest.it)("maps cargo ecosystem to crates.io", async () => {
77
- import_vitest.vi.mocked(fetch).mockResolvedValue(
78
- new Response(JSON.stringify({ vulns: [] }), { status: 200 })
79
- );
80
- await adapter.query("cargo", "serde", "1.0.188");
81
- (0, import_vitest.expect)(fetch).toHaveBeenCalledWith(
82
- import_vitest.expect.any(String),
83
- import_vitest.expect.objectContaining({
84
- body: import_vitest.expect.stringContaining('"ecosystem":"crates.io"')
85
- })
86
- );
87
- });
88
- (0, import_vitest.it)("returns empty array when no vulnerabilities found", async () => {
89
- import_vitest.vi.mocked(fetch).mockResolvedValue(
90
- new Response(JSON.stringify({}), { status: 200 })
91
- );
92
- const result = await adapter.query("npm", "express", "4.18.2");
93
- (0, import_vitest.expect)(result).toEqual([]);
94
- });
95
- (0, import_vitest.it)("parses CVE records from OSV response", async () => {
96
- const osvResponse = {
97
- vulns: [
98
- {
99
- id: "GHSA-xxxx-yyyy-zzzz",
100
- aliases: ["CVE-2023-12345"],
101
- summary: "A critical vulnerability in express",
102
- severity: [{ type: "CVSS_V3", score: "9.8" }],
103
- affected: [
104
- {
105
- package: { name: "express", ecosystem: "npm" },
106
- ranges: [
107
- {
108
- type: "ECOSYSTEM",
109
- events: [
110
- { introduced: "4.0.0" },
111
- { fixed: "4.18.3" }
112
- ]
113
- }
114
- ]
115
- }
116
- ]
117
- }
118
- ]
119
- };
120
- import_vitest.vi.mocked(fetch).mockResolvedValue(
121
- new Response(JSON.stringify(osvResponse), { status: 200 })
122
- );
123
- const result = await adapter.query("npm", "express", "4.18.2");
124
- (0, import_vitest.expect)(result).toHaveLength(1);
125
- (0, import_vitest.expect)(result[0]).toEqual({
126
- id: "CVE-2023-12345",
127
- severity: 9.8,
128
- affectedVersionRanges: [{ introduced: "4.0.0", fixed: "4.18.3" }],
129
- fixedVersion: "4.18.3",
130
- summary: "A critical vulnerability in express"
131
- });
132
- });
133
- (0, import_vitest.it)("uses OSV ID when no CVE alias exists", async () => {
134
- const osvResponse = {
135
- vulns: [
136
- {
137
- id: "GHSA-abcd-efgh-ijkl",
138
- aliases: ["PYSEC-2023-001"],
139
- summary: "Some vulnerability",
140
- severity: [{ type: "CVSS_V3", score: "7.5" }],
141
- affected: [
142
- {
143
- ranges: [
144
- {
145
- type: "ECOSYSTEM",
146
- events: [{ introduced: "1.0.0" }, { fixed: "1.2.0" }]
147
- }
148
- ]
149
- }
150
- ]
151
- }
152
- ]
153
- };
154
- import_vitest.vi.mocked(fetch).mockResolvedValue(
155
- new Response(JSON.stringify(osvResponse), { status: 200 })
156
- );
157
- const result = await adapter.query("npm", "some-pkg", "1.1.0");
158
- (0, import_vitest.expect)(result).toHaveLength(1);
159
- (0, import_vitest.expect)(result[0].id).toBe("GHSA-abcd-efgh-ijkl");
160
- });
161
- (0, import_vitest.it)("truncates summary to 500 characters", async () => {
162
- const longSummary = "A".repeat(600);
163
- const osvResponse = {
164
- vulns: [
165
- {
166
- id: "GHSA-test-test-test",
167
- aliases: ["CVE-2023-99999"],
168
- summary: longSummary,
169
- severity: [{ type: "CVSS_V3", score: "5.0" }],
170
- affected: [
171
- {
172
- ranges: [
173
- {
174
- type: "ECOSYSTEM",
175
- events: [{ introduced: "0" }]
176
- }
177
- ]
178
- }
179
- ]
180
- }
181
- ]
182
- };
183
- import_vitest.vi.mocked(fetch).mockResolvedValue(
184
- new Response(JSON.stringify(osvResponse), { status: 200 })
185
- );
186
- const result = await adapter.query("npm", "pkg", "1.0.0");
187
- (0, import_vitest.expect)(result[0].summary.length).toBe(500);
188
- (0, import_vitest.expect)(result[0].summary.endsWith("...")).toBe(true);
189
- });
190
- (0, import_vitest.it)("returns severity 0 when no severity data available", async () => {
191
- const osvResponse = {
192
- vulns: [
193
- {
194
- id: "GHSA-no-severity",
195
- aliases: ["CVE-2023-00001"],
196
- summary: "No severity info",
197
- affected: [
198
- {
199
- ranges: [
200
- {
201
- type: "ECOSYSTEM",
202
- events: [{ introduced: "0" }]
203
- }
204
- ]
205
- }
206
- ]
207
- }
208
- ]
209
- };
210
- import_vitest.vi.mocked(fetch).mockResolvedValue(
211
- new Response(JSON.stringify(osvResponse), { status: 200 })
212
- );
213
- const result = await adapter.query("npm", "pkg", "1.0.0");
214
- (0, import_vitest.expect)(result[0].severity).toBe(0);
215
- });
216
- (0, import_vitest.it)("extracts multiple affected ranges", async () => {
217
- const osvResponse = {
218
- vulns: [
219
- {
220
- id: "GHSA-multi-range",
221
- aliases: ["CVE-2023-55555"],
222
- summary: "Multiple ranges",
223
- severity: [{ type: "CVSS_V3", score: "8.0" }],
224
- affected: [
225
- {
226
- ranges: [
227
- {
228
- type: "ECOSYSTEM",
229
- events: [
230
- { introduced: "1.0.0" },
231
- { fixed: "1.5.0" }
232
- ]
233
- },
234
- {
235
- type: "ECOSYSTEM",
236
- events: [
237
- { introduced: "2.0.0" },
238
- { fixed: "2.1.0" }
239
- ]
240
- }
241
- ]
242
- }
243
- ]
244
- }
245
- ]
246
- };
247
- import_vitest.vi.mocked(fetch).mockResolvedValue(
248
- new Response(JSON.stringify(osvResponse), { status: 200 })
249
- );
250
- const result = await adapter.query("npm", "pkg", "2.0.1");
251
- (0, import_vitest.expect)(result[0].affectedVersionRanges).toHaveLength(2);
252
- (0, import_vitest.expect)(result[0].affectedVersionRanges[0]).toEqual({
253
- introduced: "1.0.0",
254
- fixed: "1.5.0"
255
- });
256
- (0, import_vitest.expect)(result[0].affectedVersionRanges[1]).toEqual({
257
- introduced: "2.0.0",
258
- fixed: "2.1.0"
259
- });
260
- (0, import_vitest.expect)(result[0].fixedVersion).toBe("1.5.0");
261
- });
262
- (0, import_vitest.it)("handles last_affected in version ranges", async () => {
263
- const osvResponse = {
264
- vulns: [
265
- {
266
- id: "GHSA-last-affected",
267
- aliases: ["CVE-2023-77777"],
268
- summary: "Last affected test",
269
- severity: [{ type: "CVSS_V3", score: "6.0" }],
270
- affected: [
271
- {
272
- ranges: [
273
- {
274
- type: "ECOSYSTEM",
275
- events: [
276
- { introduced: "1.0.0" },
277
- { last_affected: "1.9.9" }
278
- ]
279
- }
280
- ]
281
- }
282
- ]
283
- }
284
- ]
285
- };
286
- import_vitest.vi.mocked(fetch).mockResolvedValue(
287
- new Response(JSON.stringify(osvResponse), { status: 200 })
288
- );
289
- const result = await adapter.query("npm", "pkg", "1.5.0");
290
- (0, import_vitest.expect)(result[0].affectedVersionRanges[0]).toEqual({
291
- introduced: "1.0.0",
292
- lastAffected: "1.9.9"
293
- });
294
- (0, import_vitest.expect)(result[0].fixedVersion).toBeUndefined();
295
- });
296
- (0, import_vitest.it)("throws VulnDatabaseError on HTTP error response", async () => {
297
- import_vitest.vi.mocked(fetch).mockResolvedValue(
298
- new Response("Internal Server Error", { status: 500, statusText: "Internal Server Error" })
299
- );
300
- await (0, import_vitest.expect)(adapter.query("npm", "express", "4.18.2")).rejects.toThrow(import_errors.VulnDatabaseError);
301
- await (0, import_vitest.expect)(adapter.query("npm", "express", "4.18.2")).rejects.toThrow(/HTTP 500/);
302
- });
303
- (0, import_vitest.it)("throws VulnDatabaseError on network error", async () => {
304
- import_vitest.vi.mocked(fetch).mockRejectedValue(new TypeError("fetch failed"));
305
- await (0, import_vitest.expect)(adapter.query("npm", "express", "4.18.2")).rejects.toThrow(import_errors.VulnDatabaseError);
306
- await (0, import_vitest.expect)(adapter.query("npm", "express", "4.18.2")).rejects.toThrow(/Network error/);
307
- });
308
- (0, import_vitest.it)("throws VulnDatabaseError on abort/timeout", async () => {
309
- const abortError = new Error("The operation was aborted");
310
- abortError.name = "AbortError";
311
- import_vitest.vi.mocked(fetch).mockRejectedValue(abortError);
312
- await (0, import_vitest.expect)(adapter.query("npm", "express", "4.18.2")).rejects.toThrow(import_errors.VulnDatabaseError);
313
- });
314
- (0, import_vitest.it)("respects external abort signal", async () => {
315
- const controller = new AbortController();
316
- controller.abort();
317
- const abortError = new Error("The operation was aborted");
318
- abortError.name = "AbortError";
319
- import_vitest.vi.mocked(fetch).mockRejectedValue(abortError);
320
- await (0, import_vitest.expect)(
321
- adapter.query("npm", "express", "4.18.2", controller.signal)
322
- ).rejects.toThrow(import_errors.VulnDatabaseError);
323
- });
324
- (0, import_vitest.it)("uses details as fallback when summary is missing", async () => {
325
- const osvResponse = {
326
- vulns: [
327
- {
328
- id: "GHSA-details-only",
329
- aliases: ["CVE-2023-88888"],
330
- details: "Detailed description of the vulnerability",
331
- severity: [{ type: "CVSS_V3", score: "4.0" }],
332
- affected: [
333
- {
334
- ranges: [
335
- {
336
- type: "ECOSYSTEM",
337
- events: [{ introduced: "0" }]
338
- }
339
- ]
340
- }
341
- ]
342
- }
343
- ]
344
- };
345
- import_vitest.vi.mocked(fetch).mockResolvedValue(
346
- new Response(JSON.stringify(osvResponse), { status: 200 })
347
- );
348
- const result = await adapter.query("npm", "pkg", "1.0.0");
349
- (0, import_vitest.expect)(result[0].summary).toBe("Detailed description of the vulnerability");
350
- });
351
- (0, import_vitest.it)("handles case-insensitive ecosystem mapping", async () => {
352
- import_vitest.vi.mocked(fetch).mockResolvedValue(
353
- new Response(JSON.stringify({ vulns: [] }), { status: 200 })
354
- );
355
- await adapter.query("NPM", "express", "4.18.2");
356
- (0, import_vitest.expect)(fetch).toHaveBeenCalledWith(
357
- import_vitest.expect.any(String),
358
- import_vitest.expect.objectContaining({
359
- body: import_vitest.expect.stringContaining('"ecosystem":"npm"')
360
- })
361
- );
362
- });
363
- (0, import_vitest.it)("skips vulnerabilities without any identifiable ID", async () => {
364
- const osvResponse = {
365
- vulns: [
366
- {
367
- id: "CVE-2023-11111",
368
- summary: "Has CVE directly as ID",
369
- severity: [{ type: "CVSS_V3", score: "7.0" }],
370
- affected: [
371
- {
372
- ranges: [
373
- {
374
- type: "ECOSYSTEM",
375
- events: [{ introduced: "0" }]
376
- }
377
- ]
378
- }
379
- ]
380
- }
381
- ]
382
- };
383
- import_vitest.vi.mocked(fetch).mockResolvedValue(
384
- new Response(JSON.stringify(osvResponse), { status: 200 })
385
- );
386
- const result = await adapter.query("npm", "pkg", "1.0.0");
387
- (0, import_vitest.expect)(result).toHaveLength(1);
388
- (0, import_vitest.expect)(result[0].id).toBe("CVE-2023-11111");
389
- });
390
- });
391
- //# sourceMappingURL=osv-adapter.test.js.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/security/vuln/osv-adapter.test.ts"],
4
- "sourcesContent": ["/**\n * Unit tests for the OSV API adapter.\n */\n\nimport { describe, it, expect, vi, beforeEach, afterEach } from 'vitest';\nimport { OsvAdapter } from './osv-adapter';\nimport { VulnDatabaseError } from '../errors';\n\ndescribe('OsvAdapter', () => {\n let adapter: OsvAdapter;\n\n beforeEach(() => {\n adapter = new OsvAdapter({ apiUrl: 'https://api.osv.dev/v1/query' });\n vi.stubGlobal('fetch', vi.fn());\n });\n\n afterEach(() => {\n vi.restoreAllMocks();\n });\n\n it('has name \"OSV\"', () => {\n expect(adapter.name).toBe('OSV');\n });\n\n it('returns empty array for unsupported ecosystem', async () => {\n const result = await adapter.query('unsupported', 'pkg', '1.0.0');\n expect(result).toEqual([]);\n expect(fetch).not.toHaveBeenCalled();\n });\n\n it('maps npm ecosystem correctly and sends proper request', async () => {\n const mockResponse = { vulns: [] };\n vi.mocked(fetch).mockResolvedValue(\n new Response(JSON.stringify(mockResponse), { status: 200 }),\n );\n\n await adapter.query('npm', 'express', '4.18.2');\n\n expect(fetch).toHaveBeenCalledWith(\n 'https://api.osv.dev/v1/query',\n expect.objectContaining({\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({\n package: { name: 'express', ecosystem: 'npm' },\n version: '4.18.2',\n }),\n }),\n );\n });\n\n it('maps maven ecosystem to Maven', async () => {\n vi.mocked(fetch).mockResolvedValue(\n new Response(JSON.stringify({ vulns: [] }), { status: 200 }),\n );\n\n await adapter.query('maven', 'log4j-core', '2.14.0');\n\n expect(fetch).toHaveBeenCalledWith(\n expect.any(String),\n expect.objectContaining({\n body: expect.stringContaining('\"ecosystem\":\"Maven\"'),\n }),\n );\n });\n\n it('maps go ecosystem to Go', async () => {\n vi.mocked(fetch).mockResolvedValue(\n new Response(JSON.stringify({ vulns: [] }), { status: 200 }),\n );\n\n await adapter.query('go', 'github.com/gin-gonic/gin', '1.9.1');\n\n expect(fetch).toHaveBeenCalledWith(\n expect.any(String),\n expect.objectContaining({\n body: expect.stringContaining('\"ecosystem\":\"Go\"'),\n }),\n );\n });\n\n it('maps pypi ecosystem to PyPI', async () => {\n vi.mocked(fetch).mockResolvedValue(\n new Response(JSON.stringify({ vulns: [] }), { status: 200 }),\n );\n\n await adapter.query('pypi', 'django', '4.2.0');\n\n expect(fetch).toHaveBeenCalledWith(\n expect.any(String),\n expect.objectContaining({\n body: expect.stringContaining('\"ecosystem\":\"PyPI\"'),\n }),\n );\n });\n\n it('maps cargo ecosystem to crates.io', async () => {\n vi.mocked(fetch).mockResolvedValue(\n new Response(JSON.stringify({ vulns: [] }), { status: 200 }),\n );\n\n await adapter.query('cargo', 'serde', '1.0.188');\n\n expect(fetch).toHaveBeenCalledWith(\n expect.any(String),\n expect.objectContaining({\n body: expect.stringContaining('\"ecosystem\":\"crates.io\"'),\n }),\n );\n });\n\n it('returns empty array when no vulnerabilities found', async () => {\n vi.mocked(fetch).mockResolvedValue(\n new Response(JSON.stringify({}), { status: 200 }),\n );\n\n const result = await adapter.query('npm', 'express', '4.18.2');\n expect(result).toEqual([]);\n });\n\n it('parses CVE records from OSV response', async () => {\n const osvResponse = {\n vulns: [\n {\n id: 'GHSA-xxxx-yyyy-zzzz',\n aliases: ['CVE-2023-12345'],\n summary: 'A critical vulnerability in express',\n severity: [{ type: 'CVSS_V3', score: '9.8' }],\n affected: [\n {\n package: { name: 'express', ecosystem: 'npm' },\n ranges: [\n {\n type: 'ECOSYSTEM',\n events: [\n { introduced: '4.0.0' },\n { fixed: '4.18.3' },\n ],\n },\n ],\n },\n ],\n },\n ],\n };\n\n vi.mocked(fetch).mockResolvedValue(\n new Response(JSON.stringify(osvResponse), { status: 200 }),\n );\n\n const result = await adapter.query('npm', 'express', '4.18.2');\n\n expect(result).toHaveLength(1);\n expect(result[0]).toEqual({\n id: 'CVE-2023-12345',\n severity: 9.8,\n affectedVersionRanges: [{ introduced: '4.0.0', fixed: '4.18.3' }],\n fixedVersion: '4.18.3',\n summary: 'A critical vulnerability in express',\n });\n });\n\n it('uses OSV ID when no CVE alias exists', async () => {\n const osvResponse = {\n vulns: [\n {\n id: 'GHSA-abcd-efgh-ijkl',\n aliases: ['PYSEC-2023-001'],\n summary: 'Some vulnerability',\n severity: [{ type: 'CVSS_V3', score: '7.5' }],\n affected: [\n {\n ranges: [\n {\n type: 'ECOSYSTEM',\n events: [{ introduced: '1.0.0' }, { fixed: '1.2.0' }],\n },\n ],\n },\n ],\n },\n ],\n };\n\n vi.mocked(fetch).mockResolvedValue(\n new Response(JSON.stringify(osvResponse), { status: 200 }),\n );\n\n const result = await adapter.query('npm', 'some-pkg', '1.1.0');\n\n expect(result).toHaveLength(1);\n expect(result[0].id).toBe('GHSA-abcd-efgh-ijkl');\n });\n\n it('truncates summary to 500 characters', async () => {\n const longSummary = 'A'.repeat(600);\n const osvResponse = {\n vulns: [\n {\n id: 'GHSA-test-test-test',\n aliases: ['CVE-2023-99999'],\n summary: longSummary,\n severity: [{ type: 'CVSS_V3', score: '5.0' }],\n affected: [\n {\n ranges: [\n {\n type: 'ECOSYSTEM',\n events: [{ introduced: '0' }],\n },\n ],\n },\n ],\n },\n ],\n };\n\n vi.mocked(fetch).mockResolvedValue(\n new Response(JSON.stringify(osvResponse), { status: 200 }),\n );\n\n const result = await adapter.query('npm', 'pkg', '1.0.0');\n\n expect(result[0].summary.length).toBe(500);\n expect(result[0].summary.endsWith('...')).toBe(true);\n });\n\n it('returns severity 0 when no severity data available', async () => {\n const osvResponse = {\n vulns: [\n {\n id: 'GHSA-no-severity',\n aliases: ['CVE-2023-00001'],\n summary: 'No severity info',\n affected: [\n {\n ranges: [\n {\n type: 'ECOSYSTEM',\n events: [{ introduced: '0' }],\n },\n ],\n },\n ],\n },\n ],\n };\n\n vi.mocked(fetch).mockResolvedValue(\n new Response(JSON.stringify(osvResponse), { status: 200 }),\n );\n\n const result = await adapter.query('npm', 'pkg', '1.0.0');\n\n expect(result[0].severity).toBe(0);\n });\n\n it('extracts multiple affected ranges', async () => {\n const osvResponse = {\n vulns: [\n {\n id: 'GHSA-multi-range',\n aliases: ['CVE-2023-55555'],\n summary: 'Multiple ranges',\n severity: [{ type: 'CVSS_V3', score: '8.0' }],\n affected: [\n {\n ranges: [\n {\n type: 'ECOSYSTEM',\n events: [\n { introduced: '1.0.0' },\n { fixed: '1.5.0' },\n ],\n },\n {\n type: 'ECOSYSTEM',\n events: [\n { introduced: '2.0.0' },\n { fixed: '2.1.0' },\n ],\n },\n ],\n },\n ],\n },\n ],\n };\n\n vi.mocked(fetch).mockResolvedValue(\n new Response(JSON.stringify(osvResponse), { status: 200 }),\n );\n\n const result = await adapter.query('npm', 'pkg', '2.0.1');\n\n expect(result[0].affectedVersionRanges).toHaveLength(2);\n expect(result[0].affectedVersionRanges[0]).toEqual({\n introduced: '1.0.0',\n fixed: '1.5.0',\n });\n expect(result[0].affectedVersionRanges[1]).toEqual({\n introduced: '2.0.0',\n fixed: '2.1.0',\n });\n expect(result[0].fixedVersion).toBe('1.5.0');\n });\n\n it('handles last_affected in version ranges', async () => {\n const osvResponse = {\n vulns: [\n {\n id: 'GHSA-last-affected',\n aliases: ['CVE-2023-77777'],\n summary: 'Last affected test',\n severity: [{ type: 'CVSS_V3', score: '6.0' }],\n affected: [\n {\n ranges: [\n {\n type: 'ECOSYSTEM',\n events: [\n { introduced: '1.0.0' },\n { last_affected: '1.9.9' },\n ],\n },\n ],\n },\n ],\n },\n ],\n };\n\n vi.mocked(fetch).mockResolvedValue(\n new Response(JSON.stringify(osvResponse), { status: 200 }),\n );\n\n const result = await adapter.query('npm', 'pkg', '1.5.0');\n\n expect(result[0].affectedVersionRanges[0]).toEqual({\n introduced: '1.0.0',\n lastAffected: '1.9.9',\n });\n expect(result[0].fixedVersion).toBeUndefined();\n });\n\n it('throws VulnDatabaseError on HTTP error response', async () => {\n vi.mocked(fetch).mockResolvedValue(\n new Response('Internal Server Error', { status: 500, statusText: 'Internal Server Error' }),\n );\n\n await expect(adapter.query('npm', 'express', '4.18.2')).rejects.toThrow(VulnDatabaseError);\n await expect(adapter.query('npm', 'express', '4.18.2')).rejects.toThrow(/HTTP 500/);\n });\n\n it('throws VulnDatabaseError on network error', async () => {\n vi.mocked(fetch).mockRejectedValue(new TypeError('fetch failed'));\n\n await expect(adapter.query('npm', 'express', '4.18.2')).rejects.toThrow(VulnDatabaseError);\n await expect(adapter.query('npm', 'express', '4.18.2')).rejects.toThrow(/Network error/);\n });\n\n it('throws VulnDatabaseError on abort/timeout', async () => {\n const abortError = new Error('The operation was aborted');\n abortError.name = 'AbortError';\n vi.mocked(fetch).mockRejectedValue(abortError);\n\n await expect(adapter.query('npm', 'express', '4.18.2')).rejects.toThrow(VulnDatabaseError);\n });\n\n it('respects external abort signal', async () => {\n const controller = new AbortController();\n controller.abort();\n\n const abortError = new Error('The operation was aborted');\n abortError.name = 'AbortError';\n vi.mocked(fetch).mockRejectedValue(abortError);\n\n await expect(\n adapter.query('npm', 'express', '4.18.2', controller.signal),\n ).rejects.toThrow(VulnDatabaseError);\n });\n\n it('uses details as fallback when summary is missing', async () => {\n const osvResponse = {\n vulns: [\n {\n id: 'GHSA-details-only',\n aliases: ['CVE-2023-88888'],\n details: 'Detailed description of the vulnerability',\n severity: [{ type: 'CVSS_V3', score: '4.0' }],\n affected: [\n {\n ranges: [\n {\n type: 'ECOSYSTEM',\n events: [{ introduced: '0' }],\n },\n ],\n },\n ],\n },\n ],\n };\n\n vi.mocked(fetch).mockResolvedValue(\n new Response(JSON.stringify(osvResponse), { status: 200 }),\n );\n\n const result = await adapter.query('npm', 'pkg', '1.0.0');\n\n expect(result[0].summary).toBe('Detailed description of the vulnerability');\n });\n\n it('handles case-insensitive ecosystem mapping', async () => {\n vi.mocked(fetch).mockResolvedValue(\n new Response(JSON.stringify({ vulns: [] }), { status: 200 }),\n );\n\n await adapter.query('NPM', 'express', '4.18.2');\n\n expect(fetch).toHaveBeenCalledWith(\n expect.any(String),\n expect.objectContaining({\n body: expect.stringContaining('\"ecosystem\":\"npm\"'),\n }),\n );\n });\n\n it('skips vulnerabilities without any identifiable ID', async () => {\n const osvResponse = {\n vulns: [\n {\n id: 'CVE-2023-11111',\n summary: 'Has CVE directly as ID',\n severity: [{ type: 'CVSS_V3', score: '7.0' }],\n affected: [\n {\n ranges: [\n {\n type: 'ECOSYSTEM',\n events: [{ introduced: '0' }],\n },\n ],\n },\n ],\n },\n ],\n };\n\n vi.mocked(fetch).mockResolvedValue(\n new Response(JSON.stringify(osvResponse), { status: 200 }),\n );\n\n const result = await adapter.query('npm', 'pkg', '1.0.0');\n\n expect(result).toHaveLength(1);\n expect(result[0].id).toBe('CVE-2023-11111');\n });\n});\n"],
5
- "mappings": "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",
6
- "names": []
7
- }