@vyuhlabs/dxkit 2.4.5 → 2.4.7

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 (356) hide show
  1. package/CHANGELOG.md +1022 -0
  2. package/README.md +160 -45
  3. package/dist/analysis-result.d.ts +112 -0
  4. package/dist/analysis-result.d.ts.map +1 -0
  5. package/dist/analysis-result.js +52 -0
  6. package/dist/analysis-result.js.map +1 -0
  7. package/dist/analyzers/bom/detailed.d.ts.map +1 -1
  8. package/dist/analyzers/bom/detailed.js +19 -0
  9. package/dist/analyzers/bom/detailed.js.map +1 -1
  10. package/dist/analyzers/bom/gather.d.ts +27 -26
  11. package/dist/analyzers/bom/gather.d.ts.map +1 -1
  12. package/dist/analyzers/bom/gather.js +26 -87
  13. package/dist/analyzers/bom/gather.js.map +1 -1
  14. package/dist/analyzers/bom/index.d.ts +0 -7
  15. package/dist/analyzers/bom/index.d.ts.map +1 -1
  16. package/dist/analyzers/bom/index.js +98 -48
  17. package/dist/analyzers/bom/index.js.map +1 -1
  18. package/dist/analyzers/bom/types.d.ts +11 -13
  19. package/dist/analyzers/bom/types.d.ts.map +1 -1
  20. package/dist/analyzers/cache.d.ts +95 -0
  21. package/dist/analyzers/cache.d.ts.map +1 -0
  22. package/dist/analyzers/cache.js +309 -0
  23. package/dist/analyzers/cache.js.map +1 -0
  24. package/dist/analyzers/coverage-runner.d.ts +56 -0
  25. package/dist/analyzers/coverage-runner.d.ts.map +1 -0
  26. package/dist/analyzers/coverage-runner.js +72 -0
  27. package/dist/analyzers/coverage-runner.js.map +1 -0
  28. package/dist/analyzers/dashboard/index.d.ts +24 -0
  29. package/dist/analyzers/dashboard/index.d.ts.map +1 -0
  30. package/dist/analyzers/dashboard/index.js +666 -0
  31. package/dist/analyzers/dashboard/index.js.map +1 -0
  32. package/dist/analyzers/developer/gather.d.ts.map +1 -1
  33. package/dist/analyzers/developer/gather.js +205 -37
  34. package/dist/analyzers/developer/gather.js.map +1 -1
  35. package/dist/analyzers/developer/index.d.ts +1 -1
  36. package/dist/analyzers/developer/index.d.ts.map +1 -1
  37. package/dist/analyzers/developer/index.js +19 -8
  38. package/dist/analyzers/developer/index.js.map +1 -1
  39. package/dist/analyzers/dispatcher.d.ts +37 -0
  40. package/dist/analyzers/dispatcher.d.ts.map +1 -1
  41. package/dist/analyzers/dispatcher.js +56 -9
  42. package/dist/analyzers/dispatcher.js.map +1 -1
  43. package/dist/analyzers/docs/shallow.d.ts +17 -5
  44. package/dist/analyzers/docs/shallow.d.ts.map +1 -1
  45. package/dist/analyzers/docs/shallow.js +65 -2
  46. package/dist/analyzers/docs/shallow.js.map +1 -1
  47. package/dist/analyzers/dx/shallow.d.ts +17 -5
  48. package/dist/analyzers/dx/shallow.d.ts.map +1 -1
  49. package/dist/analyzers/dx/shallow.js +66 -2
  50. package/dist/analyzers/dx/shallow.js.map +1 -1
  51. package/dist/analyzers/health/actions.d.ts +1 -1
  52. package/dist/analyzers/health/actions.d.ts.map +1 -1
  53. package/dist/analyzers/health/actions.js +27 -9
  54. package/dist/analyzers/health/actions.js.map +1 -1
  55. package/dist/analyzers/health/detailed.d.ts +2 -1
  56. package/dist/analyzers/health/detailed.d.ts.map +1 -1
  57. package/dist/analyzers/health/detailed.js +11 -7
  58. package/dist/analyzers/health/detailed.js.map +1 -1
  59. package/dist/analyzers/health.d.ts +27 -0
  60. package/dist/analyzers/health.d.ts.map +1 -1
  61. package/dist/analyzers/health.js +271 -33
  62. package/dist/analyzers/health.js.map +1 -1
  63. package/dist/analyzers/licenses/gather.d.ts +35 -8
  64. package/dist/analyzers/licenses/gather.d.ts.map +1 -1
  65. package/dist/analyzers/licenses/gather.js +70 -13
  66. package/dist/analyzers/licenses/gather.js.map +1 -1
  67. package/dist/analyzers/licenses/index.d.ts +1 -1
  68. package/dist/analyzers/licenses/index.d.ts.map +1 -1
  69. package/dist/analyzers/licenses/index.js +52 -11
  70. package/dist/analyzers/licenses/index.js.map +1 -1
  71. package/dist/analyzers/licenses/types.d.ts +15 -0
  72. package/dist/analyzers/licenses/types.d.ts.map +1 -1
  73. package/dist/analyzers/maintainability/shallow.d.ts +17 -5
  74. package/dist/analyzers/maintainability/shallow.d.ts.map +1 -1
  75. package/dist/analyzers/maintainability/shallow.js +80 -2
  76. package/dist/analyzers/maintainability/shallow.js.map +1 -1
  77. package/dist/analyzers/quality/detailed.d.ts.map +1 -1
  78. package/dist/analyzers/quality/detailed.js +4 -6
  79. package/dist/analyzers/quality/detailed.js.map +1 -1
  80. package/dist/analyzers/quality/gather.d.ts +1 -14
  81. package/dist/analyzers/quality/gather.d.ts.map +1 -1
  82. package/dist/analyzers/quality/gather.js +48 -137
  83. package/dist/analyzers/quality/gather.js.map +1 -1
  84. package/dist/analyzers/quality/index.d.ts +9 -2
  85. package/dist/analyzers/quality/index.d.ts.map +1 -1
  86. package/dist/analyzers/quality/index.js +189 -117
  87. package/dist/analyzers/quality/index.js.map +1 -1
  88. package/dist/analyzers/quality/shallow.d.ts +50 -5
  89. package/dist/analyzers/quality/shallow.d.ts.map +1 -1
  90. package/dist/analyzers/quality/shallow.js +155 -2
  91. package/dist/analyzers/quality/shallow.js.map +1 -1
  92. package/dist/analyzers/quality/types.d.ts +14 -0
  93. package/dist/analyzers/quality/types.d.ts.map +1 -1
  94. package/dist/analyzers/security/actions.d.ts +11 -4
  95. package/dist/analyzers/security/actions.d.ts.map +1 -1
  96. package/dist/analyzers/security/actions.js +87 -37
  97. package/dist/analyzers/security/actions.js.map +1 -1
  98. package/dist/analyzers/security/aggregator.d.ts +236 -0
  99. package/dist/analyzers/security/aggregator.d.ts.map +1 -0
  100. package/dist/analyzers/security/aggregator.js +347 -0
  101. package/dist/analyzers/security/aggregator.js.map +1 -0
  102. package/dist/analyzers/security/detailed.d.ts +2 -2
  103. package/dist/analyzers/security/detailed.d.ts.map +1 -1
  104. package/dist/analyzers/security/detailed.js +10 -9
  105. package/dist/analyzers/security/detailed.js.map +1 -1
  106. package/dist/analyzers/security/gather.d.ts +103 -1
  107. package/dist/analyzers/security/gather.d.ts.map +1 -1
  108. package/dist/analyzers/security/gather.js +281 -9
  109. package/dist/analyzers/security/gather.js.map +1 -1
  110. package/dist/analyzers/security/index.d.ts +15 -0
  111. package/dist/analyzers/security/index.d.ts.map +1 -1
  112. package/dist/analyzers/security/index.js +463 -50
  113. package/dist/analyzers/security/index.js.map +1 -1
  114. package/dist/analyzers/security/shallow.d.ts +50 -6
  115. package/dist/analyzers/security/shallow.d.ts.map +1 -1
  116. package/dist/analyzers/security/shallow.js +154 -2
  117. package/dist/analyzers/security/shallow.js.map +1 -1
  118. package/dist/analyzers/security/types.d.ts +51 -0
  119. package/dist/analyzers/security/types.d.ts.map +1 -1
  120. package/dist/analyzers/tests/detailed.d.ts.map +1 -1
  121. package/dist/analyzers/tests/detailed.js +2 -3
  122. package/dist/analyzers/tests/detailed.js.map +1 -1
  123. package/dist/analyzers/tests/gather.d.ts +2 -1
  124. package/dist/analyzers/tests/gather.d.ts.map +1 -1
  125. package/dist/analyzers/tests/gather.js +98 -69
  126. package/dist/analyzers/tests/gather.js.map +1 -1
  127. package/dist/analyzers/tests/index.d.ts +11 -2
  128. package/dist/analyzers/tests/index.d.ts.map +1 -1
  129. package/dist/analyzers/tests/index.js +85 -18
  130. package/dist/analyzers/tests/index.js.map +1 -1
  131. package/dist/analyzers/tests/shallow.d.ts +19 -5
  132. package/dist/analyzers/tests/shallow.d.ts.map +1 -1
  133. package/dist/analyzers/tests/shallow.js +89 -2
  134. package/dist/analyzers/tests/shallow.js.map +1 -1
  135. package/dist/analyzers/tests/types.d.ts +41 -1
  136. package/dist/analyzers/tests/types.d.ts.map +1 -1
  137. package/dist/analyzers/tools/autogen-header.d.ts +8 -0
  138. package/dist/analyzers/tools/autogen-header.d.ts.map +1 -0
  139. package/dist/analyzers/tools/autogen-header.js +107 -0
  140. package/dist/analyzers/tools/autogen-header.js.map +1 -0
  141. package/dist/analyzers/tools/cloc.d.ts.map +1 -1
  142. package/dist/analyzers/tools/cloc.js +36 -5
  143. package/dist/analyzers/tools/cloc.js.map +1 -1
  144. package/dist/analyzers/tools/coverage.d.ts +1 -1
  145. package/dist/analyzers/tools/coverage.d.ts.map +1 -1
  146. package/dist/analyzers/tools/coverage.js.map +1 -1
  147. package/dist/analyzers/tools/debug-statements.d.ts +17 -0
  148. package/dist/analyzers/tools/debug-statements.d.ts.map +1 -0
  149. package/dist/analyzers/tools/debug-statements.js +58 -0
  150. package/dist/analyzers/tools/debug-statements.js.map +1 -0
  151. package/dist/analyzers/tools/default-exclusions.gitignore +28 -0
  152. package/dist/analyzers/tools/exclusions.d.ts +33 -6
  153. package/dist/analyzers/tools/exclusions.d.ts.map +1 -1
  154. package/dist/analyzers/tools/exclusions.js +95 -26
  155. package/dist/analyzers/tools/exclusions.js.map +1 -1
  156. package/dist/analyzers/tools/generic.d.ts +17 -2
  157. package/dist/analyzers/tools/generic.d.ts.map +1 -1
  158. package/dist/analyzers/tools/generic.js +206 -109
  159. package/dist/analyzers/tools/generic.js.map +1 -1
  160. package/dist/analyzers/tools/gitleaks.d.ts.map +1 -1
  161. package/dist/analyzers/tools/gitleaks.js +48 -1
  162. package/dist/analyzers/tools/gitleaks.js.map +1 -1
  163. package/dist/analyzers/tools/graphify.d.ts +30 -2
  164. package/dist/analyzers/tools/graphify.d.ts.map +1 -1
  165. package/dist/analyzers/tools/graphify.js +131 -15
  166. package/dist/analyzers/tools/graphify.js.map +1 -1
  167. package/dist/analyzers/tools/jscpd.d.ts +12 -2
  168. package/dist/analyzers/tools/jscpd.d.ts.map +1 -1
  169. package/dist/analyzers/tools/jscpd.js +129 -6
  170. package/dist/analyzers/tools/jscpd.js.map +1 -1
  171. package/dist/analyzers/tools/minified-detection.d.ts +9 -0
  172. package/dist/analyzers/tools/minified-detection.d.ts.map +1 -0
  173. package/dist/analyzers/tools/minified-detection.js +147 -0
  174. package/dist/analyzers/tools/minified-detection.js.map +1 -0
  175. package/dist/analyzers/tools/nuget-package-reference.d.ts +131 -0
  176. package/dist/analyzers/tools/nuget-package-reference.d.ts.map +1 -0
  177. package/dist/analyzers/tools/nuget-package-reference.js +175 -0
  178. package/dist/analyzers/tools/nuget-package-reference.js.map +1 -0
  179. package/dist/analyzers/tools/osv-scanner-deps.d.ts +48 -0
  180. package/dist/analyzers/tools/osv-scanner-deps.d.ts.map +1 -0
  181. package/dist/analyzers/tools/{osv-scanner-maven.js → osv-scanner-deps.js} +78 -46
  182. package/dist/analyzers/tools/osv-scanner-deps.js.map +1 -0
  183. package/dist/analyzers/tools/osv.d.ts +36 -0
  184. package/dist/analyzers/tools/osv.d.ts.map +1 -1
  185. package/dist/analyzers/tools/osv.js +26 -0
  186. package/dist/analyzers/tools/osv.js.map +1 -1
  187. package/dist/analyzers/tools/parallel.d.ts +1 -1
  188. package/dist/analyzers/tools/parallel.d.ts.map +1 -1
  189. package/dist/analyzers/tools/parallel.js +2 -2
  190. package/dist/analyzers/tools/parallel.js.map +1 -1
  191. package/dist/analyzers/tools/risk-score.d.ts +7 -0
  192. package/dist/analyzers/tools/risk-score.d.ts.map +1 -1
  193. package/dist/analyzers/tools/risk-score.js +9 -2
  194. package/dist/analyzers/tools/risk-score.js.map +1 -1
  195. package/dist/analyzers/tools/run-tests-helper.d.ts +43 -0
  196. package/dist/analyzers/tools/run-tests-helper.d.ts.map +1 -0
  197. package/dist/analyzers/tools/run-tests-helper.js +156 -0
  198. package/dist/analyzers/tools/run-tests-helper.js.map +1 -0
  199. package/dist/analyzers/tools/runner.d.ts.map +1 -1
  200. package/dist/analyzers/tools/runner.js +75 -12
  201. package/dist/analyzers/tools/runner.js.map +1 -1
  202. package/dist/analyzers/tools/semgrep.d.ts +39 -2
  203. package/dist/analyzers/tools/semgrep.d.ts.map +1 -1
  204. package/dist/analyzers/tools/semgrep.js +131 -9
  205. package/dist/analyzers/tools/semgrep.js.map +1 -1
  206. package/dist/analyzers/tools/timing.d.ts +17 -3
  207. package/dist/analyzers/tools/timing.d.ts.map +1 -1
  208. package/dist/analyzers/tools/timing.js +36 -14
  209. package/dist/analyzers/tools/timing.js.map +1 -1
  210. package/dist/analyzers/tools/tool-registry.d.ts +10 -0
  211. package/dist/analyzers/tools/tool-registry.d.ts.map +1 -1
  212. package/dist/analyzers/tools/tool-registry.js +120 -1
  213. package/dist/analyzers/tools/tool-registry.js.map +1 -1
  214. package/dist/analyzers/tools/tools-unavailable-prose.d.ts +18 -0
  215. package/dist/analyzers/tools/tools-unavailable-prose.d.ts.map +1 -0
  216. package/dist/analyzers/tools/tools-unavailable-prose.js +69 -0
  217. package/dist/analyzers/tools/tools-unavailable-prose.js.map +1 -0
  218. package/dist/analyzers/tools/upgrade-plan-resolver.d.ts.map +1 -1
  219. package/dist/analyzers/tools/upgrade-plan-resolver.js +7 -0
  220. package/dist/analyzers/tools/upgrade-plan-resolver.js.map +1 -1
  221. package/dist/analyzers/tools/vendored-advisor.d.ts +43 -0
  222. package/dist/analyzers/tools/vendored-advisor.d.ts.map +1 -0
  223. package/dist/analyzers/tools/vendored-advisor.js +107 -0
  224. package/dist/analyzers/tools/vendored-advisor.js.map +1 -0
  225. package/dist/analyzers/tools/walk-paths.d.ts +78 -0
  226. package/dist/analyzers/tools/walk-paths.d.ts.map +1 -0
  227. package/dist/analyzers/tools/walk-paths.js +150 -0
  228. package/dist/analyzers/tools/walk-paths.js.map +1 -0
  229. package/dist/analyzers/tools/walk-source-files.d.ts +70 -0
  230. package/dist/analyzers/tools/walk-source-files.d.ts.map +1 -0
  231. package/dist/analyzers/tools/walk-source-files.js +369 -0
  232. package/dist/analyzers/tools/walk-source-files.js.map +1 -0
  233. package/dist/analyzers/types.d.ts +204 -4
  234. package/dist/analyzers/types.d.ts.map +1 -1
  235. package/dist/analyzers/xlsx/bom.d.ts.map +1 -1
  236. package/dist/analyzers/xlsx/bom.js +8 -1
  237. package/dist/analyzers/xlsx/bom.js.map +1 -1
  238. package/dist/cli.d.ts.map +1 -1
  239. package/dist/cli.js +557 -189
  240. package/dist/cli.js.map +1 -1
  241. package/dist/constants.d.ts +1 -0
  242. package/dist/constants.d.ts.map +1 -1
  243. package/dist/detect.d.ts.map +1 -1
  244. package/dist/detect.js +24 -7
  245. package/dist/detect.js.map +1 -1
  246. package/dist/doctor.d.ts.map +1 -1
  247. package/dist/doctor.js +103 -53
  248. package/dist/doctor.js.map +1 -1
  249. package/dist/languages/capabilities/provider.d.ts +130 -1
  250. package/dist/languages/capabilities/provider.d.ts.map +1 -1
  251. package/dist/languages/capabilities/types.d.ts +68 -7
  252. package/dist/languages/capabilities/types.d.ts.map +1 -1
  253. package/dist/languages/csharp.d.ts +15 -1
  254. package/dist/languages/csharp.d.ts.map +1 -1
  255. package/dist/languages/csharp.js +624 -146
  256. package/dist/languages/csharp.js.map +1 -1
  257. package/dist/languages/go.d.ts.map +1 -1
  258. package/dist/languages/go.js +89 -11
  259. package/dist/languages/go.js.map +1 -1
  260. package/dist/languages/index.d.ts +131 -2
  261. package/dist/languages/index.d.ts.map +1 -1
  262. package/dist/languages/index.js +208 -0
  263. package/dist/languages/index.js.map +1 -1
  264. package/dist/languages/java.d.ts.map +1 -1
  265. package/dist/languages/java.js +121 -32
  266. package/dist/languages/java.js.map +1 -1
  267. package/dist/languages/kotlin.d.ts.map +1 -1
  268. package/dist/languages/kotlin.js +140 -32
  269. package/dist/languages/kotlin.js.map +1 -1
  270. package/dist/languages/python.d.ts.map +1 -1
  271. package/dist/languages/python.js +149 -44
  272. package/dist/languages/python.js.map +1 -1
  273. package/dist/languages/ruby.d.ts +115 -0
  274. package/dist/languages/ruby.d.ts.map +1 -0
  275. package/dist/languages/ruby.js +665 -0
  276. package/dist/languages/ruby.js.map +1 -0
  277. package/dist/languages/rust.d.ts.map +1 -1
  278. package/dist/languages/rust.js +103 -16
  279. package/dist/languages/rust.js.map +1 -1
  280. package/dist/languages/types.d.ts +228 -5
  281. package/dist/languages/types.d.ts.map +1 -1
  282. package/dist/languages/typescript.d.ts.map +1 -1
  283. package/dist/languages/typescript.js +201 -14
  284. package/dist/languages/typescript.js.map +1 -1
  285. package/dist/scoring/dimensions/documentation.d.ts +53 -0
  286. package/dist/scoring/dimensions/documentation.d.ts.map +1 -0
  287. package/dist/scoring/dimensions/documentation.js +106 -0
  288. package/dist/scoring/dimensions/documentation.js.map +1 -0
  289. package/dist/scoring/dimensions/dx.d.ts +53 -0
  290. package/dist/scoring/dimensions/dx.d.ts.map +1 -0
  291. package/dist/scoring/dimensions/dx.js +105 -0
  292. package/dist/scoring/dimensions/dx.js.map +1 -0
  293. package/dist/scoring/dimensions/maintainability.d.ts +53 -0
  294. package/dist/scoring/dimensions/maintainability.d.ts.map +1 -0
  295. package/dist/scoring/dimensions/maintainability.js +101 -0
  296. package/dist/scoring/dimensions/maintainability.js.map +1 -0
  297. package/dist/scoring/dimensions/quality.d.ts +108 -0
  298. package/dist/scoring/dimensions/quality.d.ts.map +1 -0
  299. package/dist/scoring/dimensions/quality.js +174 -0
  300. package/dist/scoring/dimensions/quality.js.map +1 -0
  301. package/dist/scoring/dimensions/security.d.ts +84 -0
  302. package/dist/scoring/dimensions/security.d.ts.map +1 -0
  303. package/dist/scoring/dimensions/security.js +135 -0
  304. package/dist/scoring/dimensions/security.js.map +1 -0
  305. package/dist/scoring/dimensions/testing.d.ts +56 -0
  306. package/dist/scoring/dimensions/testing.d.ts.map +1 -0
  307. package/dist/scoring/dimensions/testing.js +98 -0
  308. package/dist/scoring/dimensions/testing.js.map +1 -0
  309. package/dist/scoring/evaluator.d.ts +27 -0
  310. package/dist/scoring/evaluator.d.ts.map +1 -0
  311. package/dist/scoring/evaluator.js +124 -0
  312. package/dist/scoring/evaluator.js.map +1 -0
  313. package/dist/scoring/format.d.ts +34 -0
  314. package/dist/scoring/format.d.ts.map +1 -0
  315. package/dist/scoring/format.js +63 -0
  316. package/dist/scoring/format.js.map +1 -0
  317. package/dist/scoring/index.d.ts +37 -0
  318. package/dist/scoring/index.d.ts.map +1 -0
  319. package/dist/scoring/index.js +57 -0
  320. package/dist/scoring/index.js.map +1 -0
  321. package/dist/scoring/overall.d.ts +54 -0
  322. package/dist/scoring/overall.d.ts.map +1 -0
  323. package/dist/scoring/overall.js +76 -0
  324. package/dist/scoring/overall.js.map +1 -0
  325. package/dist/scoring/result.d.ts +111 -0
  326. package/dist/scoring/result.d.ts.map +1 -0
  327. package/dist/scoring/result.js +14 -0
  328. package/dist/scoring/result.js.map +1 -0
  329. package/dist/scoring/spec.d.ts +76 -0
  330. package/dist/scoring/spec.d.ts.map +1 -0
  331. package/dist/scoring/spec.js +22 -0
  332. package/dist/scoring/spec.js.map +1 -0
  333. package/dist/scoring/thresholds.d.ts +56 -0
  334. package/dist/scoring/thresholds.d.ts.map +1 -0
  335. package/dist/scoring/thresholds.js +75 -0
  336. package/dist/scoring/thresholds.js.map +1 -0
  337. package/dist/tools-cli.d.ts.map +1 -1
  338. package/dist/tools-cli.js +21 -2
  339. package/dist/tools-cli.js.map +1 -1
  340. package/dist/types.d.ts +17 -1
  341. package/dist/types.d.ts.map +1 -1
  342. package/package.json +1 -1
  343. package/templates/.claude/commands/dashboard.md +17 -9
  344. package/templates/.claude/rules/ruby.md +11 -0
  345. package/templates/configs/ruby/README.md +6 -0
  346. package/dist/analyzers/scoring.d.ts +0 -49
  347. package/dist/analyzers/scoring.d.ts.map +0 -1
  348. package/dist/analyzers/scoring.js +0 -422
  349. package/dist/analyzers/scoring.js.map +0 -1
  350. package/dist/analyzers/security/scoring.d.ts +0 -29
  351. package/dist/analyzers/security/scoring.d.ts.map +0 -1
  352. package/dist/analyzers/security/scoring.js +0 -40
  353. package/dist/analyzers/security/scoring.js.map +0 -1
  354. package/dist/analyzers/tools/osv-scanner-maven.d.ts +0 -42
  355. package/dist/analyzers/tools/osv-scanner-maven.d.ts.map +0 -1
  356. package/dist/analyzers/tools/osv-scanner-maven.js.map +0 -1
@@ -1,422 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.scoreTest = scoreTest;
4
- exports.scoreQuality = scoreQuality;
5
- exports.scoreDocumentation = scoreDocumentation;
6
- exports.scoreSecurity = scoreSecurity;
7
- exports.scoreMaintainability = scoreMaintainability;
8
- exports.scoreDeveloperExperience = scoreDeveloperExperience;
9
- exports.computeOverall = computeOverall;
10
- function status(score) {
11
- if (score >= 80)
12
- return 'excellent';
13
- if (score >= 60)
14
- return 'good';
15
- if (score >= 40)
16
- return 'fair';
17
- if (score >= 20)
18
- return 'poor';
19
- return 'critical';
20
- }
21
- function clamp(value, min = 0, max = 100) {
22
- return Math.round(Math.max(min, Math.min(max, value)));
23
- }
24
- /**
25
- * Round a capability's coverage percent to match the legacy integer contract.
26
- * CoverageResult carries one decimal place; scoring thresholds and the
27
- * `Coverage: XX%` detail string both expect an integer.
28
- */
29
- function coveragePercentFrom(c) {
30
- const raw = c.coverage?.coverage.linePercent;
31
- return raw === undefined ? null : Math.round(raw);
32
- }
33
- /** Testing: 0-100 */
34
- function scoreTest(input) {
35
- const m = input.metrics;
36
- const c = input.capabilities;
37
- const sourceCount = Math.max(m.sourceFiles, 1);
38
- const testRatio = m.testFiles / sourceCount;
39
- const coveragePercent = coveragePercentFrom(c);
40
- const testFramework = c.testFramework?.name ?? null;
41
- const commentedCodeRatio = c.structural?.commentedCodeRatio ?? null;
42
- let score;
43
- if (m.testFiles === 0) {
44
- score = 0;
45
- }
46
- else {
47
- score = Math.min(testRatio * 200, 60);
48
- if (m.coverageConfigExists)
49
- score += 10;
50
- if (m.testsPass === true)
51
- score += 15;
52
- if (coveragePercent !== null && coveragePercent >= 60)
53
- score += 10;
54
- if (coveragePercent !== null && coveragePercent >= 80)
55
- score += 5;
56
- }
57
- if (commentedCodeRatio !== null && commentedCodeRatio > 0.5) {
58
- score -= 15;
59
- }
60
- score = clamp(score);
61
- // Schema v11: `metrics` surfaces only the non-capability signals
62
- // (filesystem counts, derived ratios). Capability-owned values live in
63
- // `report.capabilities.coverage` / `testFramework` / `structural` so
64
- // downstream consumers read them from one place.
65
- return {
66
- score,
67
- maxScore: 100,
68
- status: status(score),
69
- metrics: {
70
- sourceFiles: m.sourceFiles,
71
- testFiles: m.testFiles,
72
- testRatio: Math.round(testRatio * 100) / 100,
73
- testsPass: m.testsPass,
74
- coverageConfigExists: m.coverageConfigExists,
75
- },
76
- details: m.testFiles === 0
77
- ? `No test files found across ${m.sourceFiles} source files. 0% test coverage.`
78
- : `${m.testFiles} test files for ${m.sourceFiles} source files (ratio: ${(testRatio * 100).toFixed(1)}%). ` +
79
- `Tests ${m.testsPass === true ? 'pass' : m.testsPass === false ? 'fail' : 'not run'}. ` +
80
- (coveragePercent !== null ? `Coverage: ${coveragePercent}%. ` : 'No coverage data. ') +
81
- (testFramework ? `Framework: ${testFramework}.` : '') +
82
- (commentedCodeRatio !== null && commentedCodeRatio > 0.5
83
- ? ` Warning: ${(commentedCodeRatio * 100).toFixed(0)}% of source files appear to contain only comments.`
84
- : ''),
85
- };
86
- }
87
- /** Code Quality: 0-100 */
88
- function scoreQuality(input) {
89
- const m = input.metrics;
90
- const c = input.capabilities;
91
- const sourceCount = Math.max(m.sourceFiles, 1);
92
- const lintErrors = (c.lint?.counts.critical ?? 0) + (c.lint?.counts.high ?? 0);
93
- const lintWarnings = (c.lint?.counts.medium ?? 0) + (c.lint?.counts.low ?? 0);
94
- const lintTool = c.lint?.tool ?? null;
95
- const maxFunctionsInFile = c.structural?.maxFunctionsInFile ?? null;
96
- const deadImportCount = c.structural?.deadImportCount ?? null;
97
- let score = 100;
98
- if (lintErrors > 0) {
99
- const errorRatio = lintErrors / sourceCount;
100
- score -= Math.min(errorRatio * 100, 40);
101
- }
102
- if (m.filesOver500Lines > 5)
103
- score -= 10;
104
- if (m.filesOver500Lines > 20)
105
- score -= 10;
106
- if (m.largestFileLines > 5000)
107
- score -= 10;
108
- if (m.largestFileLines > 10000)
109
- score -= 10;
110
- const consoleDensity = m.consoleLogCount / sourceCount;
111
- if (consoleDensity > 3)
112
- score -= 15;
113
- else if (consoleDensity > 1)
114
- score -= 10;
115
- else if (consoleDensity > 0.3)
116
- score -= 5;
117
- const anyDensity = m.anyTypeCount / sourceCount;
118
- if (anyDensity > 10)
119
- score -= 15;
120
- else if (anyDensity > 5)
121
- score -= 10;
122
- else if (anyDensity > 1)
123
- score -= 5;
124
- if (m.typeErrors !== null && m.typeErrors > 0) {
125
- score -= Math.min((m.typeErrors / sourceCount) * 50, 15);
126
- }
127
- if (maxFunctionsInFile !== null && maxFunctionsInFile > 50)
128
- score -= 10;
129
- if (deadImportCount !== null && deadImportCount > 20)
130
- score -= 5;
131
- score = clamp(score);
132
- // Schema v11: `metrics` surfaces only the non-capability signals.
133
- // Lint counts + tool live in `report.capabilities.lint`; god-file +
134
- // dead-import stats live in `report.capabilities.structural`.
135
- return {
136
- score,
137
- maxScore: 100,
138
- status: status(score),
139
- metrics: {
140
- filesOver500Lines: m.filesOver500Lines,
141
- largestFileLines: m.largestFileLines,
142
- largestFilePath: m.largestFilePath,
143
- consoleLogCount: m.consoleLogCount,
144
- anyTypeCount: m.anyTypeCount,
145
- typeErrors: m.typeErrors,
146
- },
147
- details: `${lintErrors} lint errors, ${lintWarnings} warnings` +
148
- (lintTool ? ` (${lintTool})` : '') +
149
- `. ${m.filesOver500Lines} files exceed 500 lines` +
150
- `. Largest file: ${m.largestFilePath} (${m.largestFileLines} lines)` +
151
- `. ${m.consoleLogCount} console/debug statements` +
152
- (m.anyTypeCount > 0 ? `. ${m.anyTypeCount} loose type annotations` : '') +
153
- (maxFunctionsInFile !== null ? `. Densest file: ${maxFunctionsInFile} functions` : '') +
154
- '.',
155
- };
156
- }
157
- /** Documentation: 0-100 */
158
- function scoreDocumentation(input) {
159
- const m = input.metrics;
160
- const sourceCount = Math.max(m.sourceFiles, 1);
161
- let score = 0;
162
- if (m.readmeExists) {
163
- if (m.readmeLines > 100)
164
- score += 25;
165
- else if (m.readmeLines > 50)
166
- score += 20;
167
- else if (m.readmeLines > 20)
168
- score += 15;
169
- else
170
- score += 5;
171
- }
172
- const docRatio = m.docCommentFiles / sourceCount;
173
- if (docRatio > 0.5)
174
- score += 25;
175
- else if (docRatio > 0.2)
176
- score += 15;
177
- else if (docRatio > 0.05)
178
- score += 5;
179
- if (m.apiDocsExist)
180
- score += 20;
181
- if (m.architectureDocsExist)
182
- score += 15;
183
- if (m.contributingExists)
184
- score += 10;
185
- if (m.changelogExists)
186
- score += 5;
187
- score = clamp(score);
188
- return {
189
- score,
190
- maxScore: 100,
191
- status: status(score),
192
- metrics: {
193
- readmeExists: m.readmeExists,
194
- readmeLines: m.readmeLines,
195
- docCommentFiles: m.docCommentFiles,
196
- docRatio: Math.round(docRatio * 100) / 100,
197
- apiDocsExist: m.apiDocsExist,
198
- architectureDocsExist: m.architectureDocsExist,
199
- contributingExists: m.contributingExists,
200
- changelogExists: m.changelogExists,
201
- },
202
- details: `README: ${m.readmeExists ? `${m.readmeLines} lines` : 'missing'}` +
203
- `. ${m.docCommentFiles}/${m.sourceFiles} files have doc comments (${(docRatio * 100).toFixed(1)}%)` +
204
- `. API docs: ${m.apiDocsExist ? 'yes' : 'no'}` +
205
- `. Architecture docs: ${m.architectureDocsExist ? 'yes' : 'no'}` +
206
- `. Contributing: ${m.contributingExists ? 'yes' : 'no'}` +
207
- '.',
208
- };
209
- }
210
- /** Security: 0-100 */
211
- function scoreSecurity(input) {
212
- const m = input.metrics;
213
- const c = input.capabilities;
214
- const secretFindings = c.secrets?.findings.length ?? 0;
215
- const depVulnCritical = c.depVulns?.counts.critical ?? 0;
216
- const depVulnHigh = c.depVulns?.counts.high ?? 0;
217
- const depVulnMedium = c.depVulns?.counts.medium ?? 0;
218
- const depVulnLow = c.depVulns?.counts.low ?? 0;
219
- const depAuditTool = c.depVulns?.tool ?? null;
220
- let score = 100;
221
- if (secretFindings > 10)
222
- score -= 25;
223
- else if (secretFindings > 5)
224
- score -= 20;
225
- else if (secretFindings > 0)
226
- score -= 15;
227
- if (m.privateKeyFiles > 0)
228
- score -= 20;
229
- if (m.evalCount > 3)
230
- score -= 10;
231
- else if (m.evalCount > 0)
232
- score -= 5;
233
- if (m.envFilesInGit > 0)
234
- score -= 10;
235
- if (m.tlsDisabledCount > 0)
236
- score -= 10;
237
- if (depVulnCritical > 0)
238
- score -= 15;
239
- if (depVulnHigh > 5)
240
- score -= 10;
241
- else if (depVulnHigh > 0)
242
- score -= 5;
243
- score = clamp(score);
244
- return {
245
- score,
246
- maxScore: 100,
247
- status: status(score),
248
- // Schema v11: `metrics` surfaces only the non-capability signals.
249
- // Secret findings live in `report.capabilities.secrets`; dep-vuln
250
- // counts + audit-tool name live in `report.capabilities.depVulns`.
251
- metrics: {
252
- privateKeyFiles: m.privateKeyFiles,
253
- evalCount: m.evalCount,
254
- envFilesInGit: m.envFilesInGit,
255
- tlsDisabledCount: m.tlsDisabledCount,
256
- },
257
- details: `${secretFindings} hardcoded secret patterns found` +
258
- `. ${m.privateKeyFiles} private key files in repo` +
259
- `. ${m.evalCount} eval/exec calls` +
260
- `. ${m.envFilesInGit} .env files tracked in git` +
261
- `. ${m.tlsDisabledCount} TLS verification disabled` +
262
- `. Dependency vulns: ${depVulnCritical} critical, ${depVulnHigh} high, ${depVulnMedium} medium, ${depVulnLow} low` +
263
- (depAuditTool ? ` (${depAuditTool})` : '') +
264
- '.',
265
- };
266
- }
267
- /** Maintainability: 0-100 */
268
- function scoreMaintainability(input) {
269
- const m = input.metrics;
270
- const c = input.capabilities;
271
- const godNodeCount = c.structural?.godNodeCount ?? null;
272
- const communityCount = c.structural?.communityCount ?? null;
273
- const avgCohesion = c.structural?.avgCohesion ?? null;
274
- let score = 70;
275
- if (m.largestFileLines > 10000)
276
- score -= 25;
277
- else if (m.largestFileLines > 5000)
278
- score -= 15;
279
- else if (m.largestFileLines > 2000)
280
- score -= 10;
281
- else if (m.largestFileLines > 1000)
282
- score -= 5;
283
- if (m.filesOver500Lines > 30)
284
- score -= 15;
285
- else if (m.filesOver500Lines > 15)
286
- score -= 10;
287
- else if (m.filesOver500Lines > 5)
288
- score -= 5;
289
- if (m.consoleLogCount > 500)
290
- score -= 10;
291
- else if (m.consoleLogCount > 100)
292
- score -= 5;
293
- if (m.nodeEngineVersion) {
294
- const majorMatch = m.nodeEngineVersion.match(/(\d+)/);
295
- if (majorMatch) {
296
- const major = parseInt(majorMatch[1]);
297
- if (major < 16)
298
- score -= 10;
299
- else if (major < 18)
300
- score -= 5;
301
- }
302
- }
303
- if (m.sourceFiles < 50)
304
- score += 10;
305
- if (m.sourceFiles < 20)
306
- score += 5;
307
- if (godNodeCount !== null) {
308
- const godRatio = godNodeCount / Math.max(m.sourceFiles, 1);
309
- if (godRatio > 0.1)
310
- score -= 10;
311
- else if (godRatio > 0.05)
312
- score -= 5;
313
- }
314
- if (avgCohesion !== null && avgCohesion < 0.15)
315
- score -= 5;
316
- score = clamp(score);
317
- return {
318
- score,
319
- maxScore: 100,
320
- status: status(score),
321
- // Schema v11: `metrics` surfaces only the non-capability signals.
322
- // AST-derived stats (god-node / community / cohesion / orphan module
323
- // counts) live in `report.capabilities.structural`.
324
- metrics: {
325
- sourceFiles: m.sourceFiles,
326
- controllers: m.controllers,
327
- models: m.models,
328
- directories: m.directories,
329
- largestFileLines: m.largestFileLines,
330
- filesOver500Lines: m.filesOver500Lines,
331
- nodeEngineVersion: m.nodeEngineVersion,
332
- },
333
- details: `${m.sourceFiles} source files across ${m.directories} directories` +
334
- `. ${m.controllers} controllers/handlers, ${m.models} models` +
335
- `. Largest file: ${m.largestFileLines} lines` +
336
- `. ${m.filesOver500Lines} files over 500 lines` +
337
- (m.nodeEngineVersion ? `. Node engine: ${m.nodeEngineVersion}` : '') +
338
- (communityCount !== null ? `. ${communityCount} architectural communities` : '') +
339
- (avgCohesion !== null ? `. Avg cohesion: ${avgCohesion.toFixed(2)}` : '') +
340
- '.',
341
- };
342
- }
343
- /** Developer Experience: 0-100 */
344
- function scoreDeveloperExperience(input) {
345
- const m = input.metrics;
346
- let score = 0;
347
- if (m.ciConfigCount > 0)
348
- score += 20;
349
- if (m.dockerConfigCount > 0)
350
- score += 15;
351
- if (m.precommitConfigCount > 0)
352
- score += 10;
353
- if (m.makefileExists)
354
- score += 10;
355
- if (m.envExampleExists)
356
- score += 10;
357
- if (m.npmScriptsCount >= 8)
358
- score += 15;
359
- else if (m.npmScriptsCount >= 4)
360
- score += 10;
361
- else if (m.npmScriptsCount >= 1)
362
- score += 5;
363
- if (m.contributingExists)
364
- score += 10;
365
- if (m.readmeLines > 50)
366
- score += 5;
367
- if (m.changelogExists)
368
- score += 5;
369
- score = clamp(score);
370
- return {
371
- score,
372
- maxScore: 100,
373
- status: status(score),
374
- metrics: {
375
- ciConfigCount: m.ciConfigCount,
376
- dockerConfigCount: m.dockerConfigCount,
377
- precommitConfigCount: m.precommitConfigCount,
378
- makefileExists: m.makefileExists,
379
- envExampleExists: m.envExampleExists,
380
- npmScriptsCount: m.npmScriptsCount,
381
- contributingExists: m.contributingExists,
382
- changelogExists: m.changelogExists,
383
- },
384
- details: `CI configs: ${m.ciConfigCount}` +
385
- `. Docker: ${m.dockerConfigCount > 0 ? 'yes' : 'no'}` +
386
- `. Pre-commit hooks: ${m.precommitConfigCount > 0 ? 'yes' : 'no'}` +
387
- `. Makefile: ${m.makefileExists ? 'yes' : 'no'}` +
388
- `. .env.example: ${m.envExampleExists ? 'yes' : 'no'}` +
389
- `. npm scripts: ${m.npmScriptsCount}` +
390
- '.',
391
- };
392
- }
393
- /** Compute overall weighted score and grade. */
394
- function computeOverall(dimensions) {
395
- const weights = {
396
- testing: 0.25,
397
- quality: 0.2,
398
- documentation: 0.1,
399
- security: 0.2,
400
- maintainability: 0.1,
401
- developerExperience: 0.15,
402
- };
403
- const overallScore = Math.round(dimensions.testing.score * weights.testing +
404
- dimensions.quality.score * weights.quality +
405
- dimensions.documentation.score * weights.documentation +
406
- dimensions.security.score * weights.security +
407
- dimensions.maintainability.score * weights.maintainability +
408
- dimensions.developerExperience.score * weights.developerExperience);
409
- let grade;
410
- if (overallScore >= 80)
411
- grade = 'A';
412
- else if (overallScore >= 60)
413
- grade = 'B';
414
- else if (overallScore >= 40)
415
- grade = 'C';
416
- else if (overallScore >= 20)
417
- grade = 'D';
418
- else
419
- grade = 'F';
420
- return { overallScore, grade };
421
- }
422
- //# sourceMappingURL=scoring.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"scoring.js","sourceRoot":"","sources":["../../src/analyzers/scoring.ts"],"names":[],"mappings":"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"}
@@ -1,29 +0,0 @@
1
- /**
2
- * Security scoring — internal scorer over finding+dep counts, used for
3
- * RemediationAction ranking in detailed reports.
4
- *
5
- * Distinct from src/analyzers/scoring.ts scoreSecurity() which operates on
6
- * HealthMetrics for the health dimension rollup. This scorer is scoped to
7
- * SecurityReport's own shape so remediation actions can simulate deltas
8
- * without going through HealthMetrics.
9
- */
10
- /** Counts summarized from a SecurityReport. Patches produce a new snapshot. */
11
- export interface SecurityCounts {
12
- critical: number;
13
- high: number;
14
- medium: number;
15
- low: number;
16
- depCritical: number;
17
- depHigh: number;
18
- depMedium: number;
19
- depLow: number;
20
- }
21
- /**
22
- * 0-100 security score from finding + dep counts.
23
- * Mirrors the health-side scoreSecurity() thresholds so projected values stay
24
- * intuitive to users who also read the health report.
25
- */
26
- export declare function scoreSecurityCounts(c: SecurityCounts): {
27
- score: number;
28
- };
29
- //# sourceMappingURL=scoring.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"scoring.d.ts","sourceRoot":"","sources":["../../../src/analyzers/security/scoring.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,+EAA+E;AAC/E,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,cAAc,GAAG;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,CAiBxE"}
@@ -1,40 +0,0 @@
1
- "use strict";
2
- /**
3
- * Security scoring — internal scorer over finding+dep counts, used for
4
- * RemediationAction ranking in detailed reports.
5
- *
6
- * Distinct from src/analyzers/scoring.ts scoreSecurity() which operates on
7
- * HealthMetrics for the health dimension rollup. This scorer is scoped to
8
- * SecurityReport's own shape so remediation actions can simulate deltas
9
- * without going through HealthMetrics.
10
- */
11
- Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.scoreSecurityCounts = scoreSecurityCounts;
13
- /**
14
- * 0-100 security score from finding + dep counts.
15
- * Mirrors the health-side scoreSecurity() thresholds so projected values stay
16
- * intuitive to users who also read the health report.
17
- */
18
- function scoreSecurityCounts(c) {
19
- let score = 100;
20
- if (c.critical > 10)
21
- score -= 25;
22
- else if (c.critical > 5)
23
- score -= 20;
24
- else if (c.critical > 0)
25
- score -= 15;
26
- if (c.high > 5)
27
- score -= 10;
28
- else if (c.high > 0)
29
- score -= 5;
30
- if (c.medium > 10)
31
- score -= 5;
32
- if (c.depCritical > 0)
33
- score -= 15;
34
- if (c.depHigh > 5)
35
- score -= 10;
36
- else if (c.depHigh > 0)
37
- score -= 5;
38
- return { score: Math.max(0, Math.min(100, score)) };
39
- }
40
- //# sourceMappingURL=scoring.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"scoring.js","sourceRoot":"","sources":["../../../src/analyzers/security/scoring.ts"],"names":[],"mappings":";AAAA;;;;;;;;GAQG;;AAmBH,kDAiBC;AAtBD;;;;GAIG;AACH,SAAgB,mBAAmB,CAAC,CAAiB;IACnD,IAAI,KAAK,GAAG,GAAG,CAAC;IAEhB,IAAI,CAAC,CAAC,QAAQ,GAAG,EAAE;QAAE,KAAK,IAAI,EAAE,CAAC;SAC5B,IAAI,CAAC,CAAC,QAAQ,GAAG,CAAC;QAAE,KAAK,IAAI,EAAE,CAAC;SAChC,IAAI,CAAC,CAAC,QAAQ,GAAG,CAAC;QAAE,KAAK,IAAI,EAAE,CAAC;IAErC,IAAI,CAAC,CAAC,IAAI,GAAG,CAAC;QAAE,KAAK,IAAI,EAAE,CAAC;SACvB,IAAI,CAAC,CAAC,IAAI,GAAG,CAAC;QAAE,KAAK,IAAI,CAAC,CAAC;IAEhC,IAAI,CAAC,CAAC,MAAM,GAAG,EAAE;QAAE,KAAK,IAAI,CAAC,CAAC;IAE9B,IAAI,CAAC,CAAC,WAAW,GAAG,CAAC;QAAE,KAAK,IAAI,EAAE,CAAC;IACnC,IAAI,CAAC,CAAC,OAAO,GAAG,CAAC;QAAE,KAAK,IAAI,EAAE,CAAC;SAC1B,IAAI,CAAC,CAAC,OAAO,GAAG,CAAC;QAAE,KAAK,IAAI,CAAC,CAAC;IAEnC,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC;AACtD,CAAC"}
@@ -1,42 +0,0 @@
1
- import type { DepVulnFinding, DepVulnGatherOutcome, SeverityCounts } from '../../languages/capabilities/types';
2
- /**
3
- * Pure parser for osv-scanner v2.x JSON output, scoped to Maven
4
- * findings only. Other ecosystems (npm, PyPI, Go) are filtered out so
5
- * polyglot repos don't double-count: the typescript pack handles npm,
6
- * the python pack handles PyPI, etc. JVM packs (kotlin, java) own
7
- * Maven via this shared parser.
8
- *
9
- * Returns counts + findings + the raw OSV vuln records for downstream
10
- * CVSS resolution. Exported for unit tests.
11
- */
12
- export declare function parseOsvScannerMavenFindings(raw: string): {
13
- counts: SeverityCounts;
14
- findings: DepVulnFinding[];
15
- vulnsForCvss: Array<{
16
- primaryId: string;
17
- embeddedCvss: number | null;
18
- aliases: string[];
19
- }>;
20
- };
21
- /**
22
- * Single source of truth for osv-scanner Maven dep-vuln gathering.
23
- * Both kotlin and java packs delegate here.
24
- *
25
- * Manifest discovery order: lockfile > pom.xml > verification-metadata.
26
- * We pass the manifest explicitly via --lockfile so osv-scanner doesn't
27
- * fall back to its (unreliable) build.gradle.kts parser. Multi-module
28
- * Android/Java projects with per-module lockfiles are not yet handled —
29
- * first-module-found is the v1 behaviour.
30
- *
31
- * `scan source --lockfile <path>` is the v2.x form. JSON output to
32
- * stdout. Exit code is non-zero when findings exist — we ignore the
33
- * exit code and parse the JSON regardless (run() already swallows
34
- * non-zero exits cleanly via execSync's catch).
35
- *
36
- * CVSS alias-fallback: osv-scanner ships CVSS vectors when present, but
37
- * Maven advisories are inconsistent — some carry only
38
- * `database_specific.severity` strings. resolveCvssScores looks up via
39
- * CVE alias when the primary record lacks a vector.
40
- */
41
- export declare function gatherOsvScannerMavenDepVulnsResult(cwd: string, source: string): Promise<DepVulnGatherOutcome>;
42
- //# sourceMappingURL=osv-scanner-maven.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"osv-scanner-maven.d.ts","sourceRoot":"","sources":["../../../src/analyzers/tools/osv-scanner-maven.ts"],"names":[],"mappings":"AAoBA,OAAO,KAAK,EACV,cAAc,EACd,oBAAoB,EAEpB,cAAc,EACf,MAAM,oCAAoC,CAAC;AAiB5C;;;;;;;;;GASG;AACH,wBAAgB,4BAA4B,CAAC,GAAG,EAAE,MAAM,GAAG;IACzD,MAAM,EAAE,cAAc,CAAC;IACvB,QAAQ,EAAE,cAAc,EAAE,CAAC;IAC3B,YAAY,EAAE,KAAK,CAAC;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,OAAO,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC,CAAC;CAC5F,CAiEA;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAsB,mCAAmC,CACvD,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,oBAAoB,CAAC,CA6C/B"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"osv-scanner-maven.js","sourceRoot":"","sources":["../../../src/analyzers/tools/osv-scanner-maven.ts"],"names":[],"mappings":"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"}