@cdxgen/cdxgen 0.0.1 → 13.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (722) hide show
  1. package/README.md +921 -87
  2. package/bin/audit.js +239 -0
  3. package/bin/cdxgen.js +2324 -0
  4. package/bin/convert.js +213 -0
  5. package/bin/evinse.js +353 -0
  6. package/bin/hbom.js +495 -0
  7. package/bin/repl.js +2224 -0
  8. package/bin/sign.js +195 -0
  9. package/bin/tracebom.js +295 -0
  10. package/bin/validate.js +268 -0
  11. package/bin/verify.js +189 -0
  12. package/data/README.md +307 -0
  13. package/data/bom-1.4.schema.json +1605 -0
  14. package/data/bom-1.5.schema.json +3660 -0
  15. package/data/bom-1.6.schema.json +5511 -0
  16. package/data/bom-1.7.schema.json +6700 -0
  17. package/data/cbomosdb-queries.json +68 -0
  18. package/data/component-tags.json +339 -0
  19. package/data/container-knowledge-index.json +125 -0
  20. package/data/cosdb-queries.json +17 -0
  21. package/data/crypto-oid.json +1998 -0
  22. package/data/cryptography-defs.json +3793 -0
  23. package/data/cryptography-defs.schema.json +576 -0
  24. package/data/cyclonedx-2.0-bundled.schema.json +7182 -0
  25. package/data/frameworks-list.json +219 -0
  26. package/data/glibc-stdlib.json +117 -0
  27. package/data/gtfobins-index.json +6296 -0
  28. package/data/helpers/init.gradle +71 -0
  29. package/data/jsf-0.82.schema.json +211 -0
  30. package/data/known-licenses.json +82 -0
  31. package/data/lic-mapping.json +338 -0
  32. package/data/license-aliases.json +6624 -0
  33. package/data/license-db.json +39059 -0
  34. package/data/license-deprecations.json +302 -0
  35. package/data/lolbas-index.json +150 -0
  36. package/data/predictive-audit-allowlist.json +11 -0
  37. package/data/pypi-pkg-aliases.json +1199 -0
  38. package/data/python-stdlib.json +308 -0
  39. package/data/queries-darwin.json +193 -0
  40. package/data/queries-win.json +257 -0
  41. package/data/queries.json +268 -0
  42. package/data/ruby-known-modules.json +281 -0
  43. package/data/rules/ai-agent-governance.yaml +323 -0
  44. package/data/rules/ai-bom.yaml +268 -0
  45. package/data/rules/ai-oversight.yaml +186 -0
  46. package/data/rules/ai-provenance.yaml +92 -0
  47. package/data/rules/asar-archives.yaml +150 -0
  48. package/data/rules/cbom-security.yaml +165 -0
  49. package/data/rules/chrome-extensions.yaml +248 -0
  50. package/data/rules/ci-permissions.yaml +802 -0
  51. package/data/rules/container-risk.yaml +353 -0
  52. package/data/rules/dependency-sources.yaml +236 -0
  53. package/data/rules/golem-go.yaml +229 -0
  54. package/data/rules/hbom-compliance.yaml +325 -0
  55. package/data/rules/hbom-performance.yaml +307 -0
  56. package/data/rules/hbom-security.yaml +248 -0
  57. package/data/rules/host-topology.yaml +165 -0
  58. package/data/rules/mcp-servers.yaml +388 -0
  59. package/data/rules/obom-runtime.yaml +1776 -0
  60. package/data/rules/package-integrity.yaml +364 -0
  61. package/data/rules/rootfs-hardening.yaml +179 -0
  62. package/data/rules/vscode-extensions.yaml +237 -0
  63. package/data/spdx-export.schema.json +6794 -0
  64. package/data/spdx-license-list.json +7449 -0
  65. package/data/spdx-licenses.json +759 -0
  66. package/data/spdx.schema.json +819 -0
  67. package/data/templates/README.md +3 -0
  68. package/data/templates/asvs-4.0.3.cdx.json +2943 -0
  69. package/data/templates/asvs-5.0.cdx.json +3046 -0
  70. package/data/templates/bsimm-v13.cdx.json +1008 -0
  71. package/data/templates/masvs-2.0.0.cdx.json +225 -0
  72. package/data/templates/nist-ssdf-1.1.cdx.json +828 -0
  73. package/data/templates/pcissc-secure-slc-1.1.cdx.json +1027 -0
  74. package/data/templates/scvs-1.0.0.cdx.json +813 -0
  75. package/data/templates/ssaf-DRAFT-2023-11.cdx.json +127 -0
  76. package/data/vendor-alias.json +41967 -0
  77. package/data/wrapdb-releases.json +4227 -0
  78. package/index.cjs +15 -0
  79. package/lib/audit/index.js +2800 -0
  80. package/lib/audit/progress.js +114 -0
  81. package/lib/audit/reporters.js +937 -0
  82. package/lib/audit/scoring.js +560 -0
  83. package/lib/audit/targets.js +798 -0
  84. package/lib/cli/bomAssembly.js +1833 -0
  85. package/lib/cli/cliOptions.js +513 -0
  86. package/lib/cli/index.js +2759 -0
  87. package/lib/cli/jsBom.js +2087 -0
  88. package/lib/cli/jvmBom.js +1858 -0
  89. package/lib/cli/managedBom.js +2083 -0
  90. package/lib/cli/nativeBom.js +2125 -0
  91. package/lib/core/activity.js +1087 -0
  92. package/lib/core/env.js +719 -0
  93. package/lib/core/fs.js +1058 -0
  94. package/lib/core/httpClient.js +730 -0
  95. package/lib/core/logger.js +142 -0
  96. package/lib/core/parallel.js +323 -0
  97. package/lib/core/paths.js +70 -0
  98. package/lib/core/projectConfig.js +122 -0
  99. package/lib/core/propertySanitizer.js +174 -0
  100. package/lib/core/spdx.js +5 -0
  101. package/lib/core/state.js +59 -0
  102. package/lib/core/text.js +207 -0
  103. package/lib/core/ui.js +876 -0
  104. package/lib/core/urls.js +84 -0
  105. package/lib/ecosystems/asarutils.js +1636 -0
  106. package/lib/ecosystems/bunutils.js +402 -0
  107. package/lib/ecosystems/caxa.js +77 -0
  108. package/lib/ecosystems/chromextutils.js +1174 -0
  109. package/lib/ecosystems/cmakeResolver.js +587 -0
  110. package/lib/ecosystems/cppEvidence.js +305 -0
  111. package/lib/ecosystems/denoutils.js +1094 -0
  112. package/lib/ecosystems/dotnetutils.js +132 -0
  113. package/lib/ecosystems/ecosystems.js +2772 -0
  114. package/lib/ecosystems/golem.js +1807 -0
  115. package/lib/ecosystems/gradleutils.js +1048 -0
  116. package/lib/ecosystems/jsEvidence.js +317 -0
  117. package/lib/ecosystems/npmutils.js +586 -0
  118. package/lib/ecosystems/parsers-bazel.js +875 -0
  119. package/lib/ecosystems/parsers-dotnet.js +1430 -0
  120. package/lib/ecosystems/parsers-gleam.js +302 -0
  121. package/lib/ecosystems/parsers-go.js +818 -0
  122. package/lib/ecosystems/parsers-js.js +4222 -0
  123. package/lib/ecosystems/parsers-jvm.js +948 -0
  124. package/lib/ecosystems/parsers-misc.js +3191 -0
  125. package/lib/ecosystems/parsers-python.js +2070 -0
  126. package/lib/ecosystems/parsers-rust.js +1294 -0
  127. package/lib/ecosystems/parsers-zig.js +861 -0
  128. package/lib/ecosystems/pep770.js +341 -0
  129. package/lib/ecosystems/pylockutils.js +427 -0
  130. package/lib/ecosystems/pythonutils.js +1281 -0
  131. package/lib/ecosystems/registryProvenance.js +1003 -0
  132. package/lib/ecosystems/remote/huggingface.js +1343 -0
  133. package/lib/ecosystems/rubyutils.js +1629 -0
  134. package/lib/ecosystems/rusi.js +820 -0
  135. package/lib/ecosystems/sbtutils.js +972 -0
  136. package/lib/ecosystems/tea.js +607 -0
  137. package/lib/ecosystems/utils.js +575 -0
  138. package/lib/ecosystems/zigResolver.js +410 -0
  139. package/lib/evinser/db.js +145 -0
  140. package/lib/evinser/evinser.js +2362 -0
  141. package/lib/evinser/scalasem.js +65 -0
  142. package/lib/evinser/swiftsem.js +767 -0
  143. package/lib/helpers/annotationFormatter.js +84 -0
  144. package/lib/helpers/bomSigner.js +312 -0
  145. package/lib/helpers/exportUtils.js +160 -0
  146. package/lib/helpers/remote/dependency-track.js +117 -0
  147. package/lib/helpers/versutils.js +202 -0
  148. package/lib/helpers/vsixutils.js +1069 -0
  149. package/lib/inventory/agentFormulationParser.js +322 -0
  150. package/lib/inventory/aiCollector.js +2140 -0
  151. package/lib/inventory/aiInventory.js +414 -0
  152. package/lib/inventory/aiModelVariants.js +121 -0
  153. package/lib/inventory/aiOversightCollector.js +661 -0
  154. package/lib/inventory/aiProvenanceCollector.js +822 -0
  155. package/lib/inventory/analyzer.js +6089 -0
  156. package/lib/inventory/analyzerScope.js +807 -0
  157. package/lib/inventory/astWorker.js +20 -0
  158. package/lib/inventory/atomUtils.js +1092 -0
  159. package/lib/inventory/auditCategories.js +192 -0
  160. package/lib/inventory/bomUtils.js +369 -0
  161. package/lib/inventory/cacheCommands.js +182 -0
  162. package/lib/inventory/cacheDir.js +104 -0
  163. package/lib/inventory/cbomutils.js +590 -0
  164. package/lib/inventory/cdxrs.js +434 -0
  165. package/lib/inventory/ciParsers/azurePipelines.js +295 -0
  166. package/lib/inventory/ciParsers/circleCi.js +286 -0
  167. package/lib/inventory/ciParsers/common.js +24 -0
  168. package/lib/inventory/ciParsers/githubActions.js +2434 -0
  169. package/lib/inventory/ciParsers/gitlabCi.js +213 -0
  170. package/lib/inventory/ciParsers/jenkins.js +180 -0
  171. package/lib/inventory/citations.js +234 -0
  172. package/lib/inventory/communityAiConfigParser.js +756 -0
  173. package/lib/inventory/containerRisk.js +204 -0
  174. package/lib/inventory/cryptoAlgorithmFamily.js +258 -0
  175. package/lib/inventory/deps.js +807 -0
  176. package/lib/inventory/depsUtils.js +588 -0
  177. package/lib/inventory/display.js +2128 -0
  178. package/lib/inventory/dosai.js +601 -0
  179. package/lib/inventory/dosaiParsers.js +154 -0
  180. package/lib/inventory/dynamic.js +145 -0
  181. package/lib/inventory/envcontext.js +1789 -0
  182. package/lib/inventory/evidenceUtils.js +774 -0
  183. package/lib/inventory/fetchBatch.js +779 -0
  184. package/lib/inventory/fetchRate.js +255 -0
  185. package/lib/inventory/forgeEnricher.js +300 -0
  186. package/lib/inventory/formulationParsers.js +422 -0
  187. package/lib/inventory/gtfobins.js +339 -0
  188. package/lib/inventory/hbom.js +719 -0
  189. package/lib/inventory/hbomAnalysis.js +310 -0
  190. package/lib/inventory/hbomLoader.js +35 -0
  191. package/lib/inventory/hostTopology.js +835 -0
  192. package/lib/inventory/inventoryStats.js +100 -0
  193. package/lib/inventory/jsonLike.js +121 -0
  194. package/lib/inventory/licenseEnhancer.js +918 -0
  195. package/lib/inventory/lolbas.js +285 -0
  196. package/lib/inventory/mcp.js +253 -0
  197. package/lib/inventory/mcpConfigParser.js +683 -0
  198. package/lib/inventory/mcpDiscovery.js +112 -0
  199. package/lib/inventory/mcpPinning.js +209 -0
  200. package/lib/inventory/osPackageResolver.js +493 -0
  201. package/lib/inventory/osinfo.js +277 -0
  202. package/lib/inventory/osqueryTransform.js +274 -0
  203. package/lib/inventory/plugins.js +466 -0
  204. package/lib/inventory/protobom.js +231 -0
  205. package/lib/inventory/protobomLoader.js +43 -0
  206. package/lib/inventory/provenanceUtils.js +224 -0
  207. package/lib/inventory/purl.js +749 -0
  208. package/lib/inventory/rustFormulationParser.js +339 -0
  209. package/lib/inventory/sbomDocument.js +340 -0
  210. package/lib/inventory/source.js +1488 -0
  211. package/lib/inventory/spdx.js +361 -0
  212. package/lib/inventory/spdxExpression.js +512 -0
  213. package/lib/inventory/spdxUtils.js +107 -0
  214. package/lib/inventory/table.js +263 -0
  215. package/lib/inventory/traceRunner.js +439 -0
  216. package/lib/inventory/unicodeScan.js +147 -0
  217. package/lib/managers/binary.js +3307 -0
  218. package/lib/managers/containerutils.js +125 -0
  219. package/lib/managers/docker.js +2145 -0
  220. package/lib/managers/dockerConnection.js +162 -0
  221. package/lib/managers/oci.js +704 -0
  222. package/lib/managers/piptree.js +267 -0
  223. package/lib/parsers/cmakeCache.js +199 -0
  224. package/lib/parsers/gguf.js +492 -0
  225. package/lib/parsers/gitAiNotes.js +233 -0
  226. package/lib/parsers/gitmodules.js +239 -0
  227. package/lib/parsers/htmlExtract.js +610 -0
  228. package/lib/parsers/huggingfaceManifest.js +551 -0
  229. package/lib/parsers/huggingfaceUtils.js +506 -0
  230. package/lib/parsers/iri.js +618 -0
  231. package/lib/parsers/npmrc.js +99 -0
  232. package/lib/parsers/ollama.js +101 -0
  233. package/lib/parsers/xml.js +841 -0
  234. package/lib/server/openapi.yaml +433 -0
  235. package/lib/server/server.js +616 -0
  236. package/lib/stages/postgen/annotator.js +977 -0
  237. package/lib/stages/postgen/auditBom.js +468 -0
  238. package/lib/stages/postgen/postgen.js +1239 -0
  239. package/lib/stages/postgen/ruleEngine.js +731 -0
  240. package/lib/stages/postgen/sortBom.js +195 -0
  241. package/lib/stages/postgen/spdxConverter.js +796 -0
  242. package/lib/stages/postgen/specVersionCompat.js +703 -0
  243. package/lib/stages/pregen/envAudit.js +388 -0
  244. package/lib/stages/pregen/pregen.js +637 -0
  245. package/lib/third-party/README.md +9 -0
  246. package/lib/third-party/arborist/CHANGELOG.md +1109 -0
  247. package/lib/third-party/arborist/LICENSE.md +20 -0
  248. package/lib/third-party/arborist/README.md +315 -0
  249. package/lib/third-party/arborist/lib/arborist/index.js +258 -0
  250. package/lib/third-party/arborist/lib/arborist/load-actual.js +605 -0
  251. package/lib/third-party/arborist/lib/arborist/load-virtual.js +300 -0
  252. package/lib/third-party/arborist/lib/bin-links.js +120 -0
  253. package/lib/third-party/arborist/lib/calc-dep-flags.js +130 -0
  254. package/lib/third-party/arborist/lib/case-insensitive-map.js +51 -0
  255. package/lib/third-party/arborist/lib/consistent-resolve.js +42 -0
  256. package/lib/third-party/arborist/lib/debug.js +50 -0
  257. package/lib/third-party/arborist/lib/dep-valid.js +190 -0
  258. package/lib/third-party/arborist/lib/edge.js +417 -0
  259. package/lib/third-party/arborist/lib/from-path.js +36 -0
  260. package/lib/third-party/arborist/lib/gather-dep-set.js +43 -0
  261. package/lib/third-party/arborist/lib/index.js +22 -0
  262. package/lib/third-party/arborist/lib/inventory.js +138 -0
  263. package/lib/third-party/arborist/lib/link.js +169 -0
  264. package/lib/third-party/arborist/lib/node.js +1673 -0
  265. package/lib/third-party/arborist/lib/npm-extension.js +45 -0
  266. package/lib/third-party/arborist/lib/override-resolves.js +11 -0
  267. package/lib/third-party/arborist/lib/override-set.js +319 -0
  268. package/lib/third-party/arborist/lib/package-extensions.js +289 -0
  269. package/lib/third-party/arborist/lib/printable.js +210 -0
  270. package/lib/third-party/arborist/lib/proc-log.js +30 -0
  271. package/lib/third-party/arborist/lib/realpath.js +100 -0
  272. package/lib/third-party/arborist/lib/relpath.js +4 -0
  273. package/lib/third-party/arborist/lib/shrinkwrap.js +1291 -0
  274. package/lib/third-party/arborist/lib/spec-from-lock.js +34 -0
  275. package/lib/third-party/arborist/lib/tree-check.js +165 -0
  276. package/lib/third-party/arborist/lib/validate-npm-package-name.js +107 -0
  277. package/lib/third-party/arborist/lib/version-from-tgz.js +51 -0
  278. package/lib/third-party/arborist/lib/yarn-lock.js +397 -0
  279. package/lib/validator/bomValidator.js +985 -0
  280. package/lib/validator/complianceEngine.js +241 -0
  281. package/lib/validator/complianceRules.js +1680 -0
  282. package/lib/validator/generated/runtime.mjs +17 -0
  283. package/lib/validator/generated/validate-1.6.mjs +21258 -0
  284. package/lib/validator/generated/validate-1.7.mjs +24803 -0
  285. package/lib/validator/generated/validate-2.0.mjs +22931 -0
  286. package/lib/validator/index.js +246 -0
  287. package/lib/validator/reporters/annotations.js +142 -0
  288. package/lib/validator/reporters/console.js +160 -0
  289. package/lib/validator/reporters/index.js +41 -0
  290. package/lib/validator/reporters/json.js +37 -0
  291. package/lib/validator/reporters/sarif.js +184 -0
  292. package/package.json +209 -26
  293. package/types/bin/audit.d.ts +3 -0
  294. package/types/bin/audit.d.ts.map +1 -0
  295. package/types/bin/cdxgen.d.ts +3 -0
  296. package/types/bin/cdxgen.d.ts.map +1 -0
  297. package/types/bin/convert.d.ts +3 -0
  298. package/types/bin/convert.d.ts.map +1 -0
  299. package/types/bin/evinse.d.ts +3 -0
  300. package/types/bin/evinse.d.ts.map +1 -0
  301. package/types/bin/hbom.d.ts +3 -0
  302. package/types/bin/hbom.d.ts.map +1 -0
  303. package/types/bin/repl.d.ts +3 -0
  304. package/types/bin/repl.d.ts.map +1 -0
  305. package/types/bin/sign.d.ts +3 -0
  306. package/types/bin/sign.d.ts.map +1 -0
  307. package/types/bin/tracebom.d.ts +3 -0
  308. package/types/bin/tracebom.d.ts.map +1 -0
  309. package/types/bin/validate.d.ts +14 -0
  310. package/types/bin/validate.d.ts.map +1 -0
  311. package/types/bin/verify.d.ts +3 -0
  312. package/types/bin/verify.d.ts.map +1 -0
  313. package/types/lib/audit/index.d.ts +153 -0
  314. package/types/lib/audit/index.d.ts.map +1 -0
  315. package/types/lib/audit/progress.d.ts +31 -0
  316. package/types/lib/audit/progress.d.ts.map +1 -0
  317. package/types/lib/audit/reporters.d.ts +62 -0
  318. package/types/lib/audit/reporters.d.ts.map +1 -0
  319. package/types/lib/audit/scoring.d.ts +36 -0
  320. package/types/lib/audit/scoring.d.ts.map +1 -0
  321. package/types/lib/audit/targets.d.ts +77 -0
  322. package/types/lib/audit/targets.d.ts.map +1 -0
  323. package/types/lib/cli/bomAssembly.d.ts +315 -0
  324. package/types/lib/cli/bomAssembly.d.ts.map +1 -0
  325. package/types/lib/cli/cliOptions.d.ts +156 -0
  326. package/types/lib/cli/cliOptions.d.ts.map +1 -0
  327. package/types/lib/cli/index.d.ts +107 -0
  328. package/types/lib/cli/index.d.ts.map +1 -0
  329. package/types/lib/cli/jsBom.d.ts +94 -0
  330. package/types/lib/cli/jsBom.d.ts.map +1 -0
  331. package/types/lib/cli/jvmBom.d.ts +54 -0
  332. package/types/lib/cli/jvmBom.d.ts.map +1 -0
  333. package/types/lib/cli/managedBom.d.ts +105 -0
  334. package/types/lib/cli/managedBom.d.ts.map +1 -0
  335. package/types/lib/cli/nativeBom.d.ts +143 -0
  336. package/types/lib/cli/nativeBom.d.ts.map +1 -0
  337. package/types/lib/core/activity.d.ts +178 -0
  338. package/types/lib/core/activity.d.ts.map +1 -0
  339. package/types/lib/core/env.d.ts +192 -0
  340. package/types/lib/core/env.d.ts.map +1 -0
  341. package/types/lib/core/fs.d.ts +158 -0
  342. package/types/lib/core/fs.d.ts.map +1 -0
  343. package/types/lib/core/httpClient.d.ts +149 -0
  344. package/types/lib/core/httpClient.d.ts.map +1 -0
  345. package/types/lib/core/logger.d.ts +28 -0
  346. package/types/lib/core/logger.d.ts.map +1 -0
  347. package/types/lib/core/parallel.d.ts +95 -0
  348. package/types/lib/core/parallel.d.ts.map +1 -0
  349. package/types/lib/core/paths.d.ts +36 -0
  350. package/types/lib/core/paths.d.ts.map +1 -0
  351. package/types/lib/core/projectConfig.d.ts +23 -0
  352. package/types/lib/core/projectConfig.d.ts.map +1 -0
  353. package/types/lib/core/propertySanitizer.d.ts +23 -0
  354. package/types/lib/core/propertySanitizer.d.ts.map +1 -0
  355. package/types/lib/core/spdx.d.ts +5 -0
  356. package/types/lib/core/spdx.d.ts.map +1 -0
  357. package/types/lib/core/state.d.ts +20 -0
  358. package/types/lib/core/state.d.ts.map +1 -0
  359. package/types/lib/core/text.d.ts +78 -0
  360. package/types/lib/core/text.d.ts.map +1 -0
  361. package/types/lib/core/ui.d.ts +87 -0
  362. package/types/lib/core/ui.d.ts.map +1 -0
  363. package/types/lib/core/urls.d.ts +43 -0
  364. package/types/lib/core/urls.d.ts.map +1 -0
  365. package/types/lib/ecosystems/asarutils.d.ts +71 -0
  366. package/types/lib/ecosystems/asarutils.d.ts.map +1 -0
  367. package/types/lib/ecosystems/bunutils.d.ts +38 -0
  368. package/types/lib/ecosystems/bunutils.d.ts.map +1 -0
  369. package/types/lib/ecosystems/caxa.d.ts +8 -0
  370. package/types/lib/ecosystems/caxa.d.ts.map +1 -0
  371. package/types/lib/ecosystems/chromextutils.d.ts +97 -0
  372. package/types/lib/ecosystems/chromextutils.d.ts.map +1 -0
  373. package/types/lib/ecosystems/cmakeResolver.d.ts +176 -0
  374. package/types/lib/ecosystems/cmakeResolver.d.ts.map +1 -0
  375. package/types/lib/ecosystems/cppEvidence.d.ts +35 -0
  376. package/types/lib/ecosystems/cppEvidence.d.ts.map +1 -0
  377. package/types/lib/ecosystems/denoutils.d.ts +76 -0
  378. package/types/lib/ecosystems/denoutils.d.ts.map +1 -0
  379. package/types/lib/ecosystems/dotnetutils.d.ts +45 -0
  380. package/types/lib/ecosystems/dotnetutils.d.ts.map +1 -0
  381. package/types/lib/ecosystems/ecosystems.d.ts +279 -0
  382. package/types/lib/ecosystems/ecosystems.d.ts.map +1 -0
  383. package/types/lib/ecosystems/golem.d.ts +60 -0
  384. package/types/lib/ecosystems/golem.d.ts.map +1 -0
  385. package/types/lib/ecosystems/gradleutils.d.ts +139 -0
  386. package/types/lib/ecosystems/gradleutils.d.ts.map +1 -0
  387. package/types/lib/ecosystems/jsEvidence.d.ts +17 -0
  388. package/types/lib/ecosystems/jsEvidence.d.ts.map +1 -0
  389. package/types/lib/ecosystems/npmutils.d.ts +183 -0
  390. package/types/lib/ecosystems/npmutils.d.ts.map +1 -0
  391. package/types/lib/ecosystems/parsers-bazel.d.ts +36 -0
  392. package/types/lib/ecosystems/parsers-bazel.d.ts.map +1 -0
  393. package/types/lib/ecosystems/parsers-dotnet.d.ts +116 -0
  394. package/types/lib/ecosystems/parsers-dotnet.d.ts.map +1 -0
  395. package/types/lib/ecosystems/parsers-gleam.d.ts +33 -0
  396. package/types/lib/ecosystems/parsers-gleam.d.ts.map +1 -0
  397. package/types/lib/ecosystems/parsers-go.d.ts +92 -0
  398. package/types/lib/ecosystems/parsers-go.d.ts.map +1 -0
  399. package/types/lib/ecosystems/parsers-js.d.ts +242 -0
  400. package/types/lib/ecosystems/parsers-js.d.ts.map +1 -0
  401. package/types/lib/ecosystems/parsers-jvm.d.ts +100 -0
  402. package/types/lib/ecosystems/parsers-jvm.d.ts.map +1 -0
  403. package/types/lib/ecosystems/parsers-misc.d.ts +450 -0
  404. package/types/lib/ecosystems/parsers-misc.d.ts.map +1 -0
  405. package/types/lib/ecosystems/parsers-python.d.ts +145 -0
  406. package/types/lib/ecosystems/parsers-python.d.ts.map +1 -0
  407. package/types/lib/ecosystems/parsers-rust.d.ts +56 -0
  408. package/types/lib/ecosystems/parsers-rust.d.ts.map +1 -0
  409. package/types/lib/ecosystems/parsers-zig.d.ts +83 -0
  410. package/types/lib/ecosystems/parsers-zig.d.ts.map +1 -0
  411. package/types/lib/ecosystems/pep770.d.ts +38 -0
  412. package/types/lib/ecosystems/pep770.d.ts.map +1 -0
  413. package/types/lib/ecosystems/pylockutils.d.ts +68 -0
  414. package/types/lib/ecosystems/pylockutils.d.ts.map +1 -0
  415. package/types/lib/ecosystems/pythonutils.d.ts +70 -0
  416. package/types/lib/ecosystems/pythonutils.d.ts.map +1 -0
  417. package/types/lib/ecosystems/registryProvenance.d.ts +26 -0
  418. package/types/lib/ecosystems/registryProvenance.d.ts.map +1 -0
  419. package/types/lib/ecosystems/remote/huggingface.d.ts +31 -0
  420. package/types/lib/ecosystems/remote/huggingface.d.ts.map +1 -0
  421. package/types/lib/ecosystems/rubyutils.d.ts +182 -0
  422. package/types/lib/ecosystems/rubyutils.d.ts.map +1 -0
  423. package/types/lib/ecosystems/rusi.d.ts +40 -0
  424. package/types/lib/ecosystems/rusi.d.ts.map +1 -0
  425. package/types/lib/ecosystems/sbtutils.d.ts +179 -0
  426. package/types/lib/ecosystems/sbtutils.d.ts.map +1 -0
  427. package/types/lib/ecosystems/tea.d.ts +180 -0
  428. package/types/lib/ecosystems/tea.d.ts.map +1 -0
  429. package/types/lib/ecosystems/utils.d.ts +41 -0
  430. package/types/lib/ecosystems/utils.d.ts.map +1 -0
  431. package/types/lib/ecosystems/zigResolver.d.ts +70 -0
  432. package/types/lib/ecosystems/zigResolver.d.ts.map +1 -0
  433. package/types/lib/evinser/db.d.ts +17 -0
  434. package/types/lib/evinser/db.d.ts.map +1 -0
  435. package/types/lib/evinser/evinser.d.ts +354 -0
  436. package/types/lib/evinser/evinser.d.ts.map +1 -0
  437. package/types/lib/evinser/scalasem.d.ts +15 -0
  438. package/types/lib/evinser/scalasem.d.ts.map +1 -0
  439. package/types/lib/evinser/swiftsem.d.ts +103 -0
  440. package/types/lib/evinser/swiftsem.d.ts.map +1 -0
  441. package/types/lib/helpers/annotationFormatter.d.ts +23 -0
  442. package/types/lib/helpers/annotationFormatter.d.ts.map +1 -0
  443. package/types/lib/helpers/bomSigner.d.ts +28 -0
  444. package/types/lib/helpers/bomSigner.d.ts.map +1 -0
  445. package/types/lib/helpers/exportUtils.d.ts +52 -0
  446. package/types/lib/helpers/exportUtils.d.ts.map +1 -0
  447. package/types/lib/helpers/remote/dependency-track.d.ts +23 -0
  448. package/types/lib/helpers/remote/dependency-track.d.ts.map +1 -0
  449. package/types/lib/helpers/versutils.d.ts +8 -0
  450. package/types/lib/helpers/versutils.d.ts.map +1 -0
  451. package/types/lib/helpers/vsixutils.d.ts +130 -0
  452. package/types/lib/helpers/vsixutils.d.ts.map +1 -0
  453. package/types/lib/inventory/agentFormulationParser.d.ts +21 -0
  454. package/types/lib/inventory/agentFormulationParser.d.ts.map +1 -0
  455. package/types/lib/inventory/aiCollector.d.ts +61 -0
  456. package/types/lib/inventory/aiCollector.d.ts.map +1 -0
  457. package/types/lib/inventory/aiInventory.d.ts +103 -0
  458. package/types/lib/inventory/aiInventory.d.ts.map +1 -0
  459. package/types/lib/inventory/aiModelVariants.d.ts +31 -0
  460. package/types/lib/inventory/aiModelVariants.d.ts.map +1 -0
  461. package/types/lib/inventory/aiOversightCollector.d.ts +28 -0
  462. package/types/lib/inventory/aiOversightCollector.d.ts.map +1 -0
  463. package/types/lib/inventory/aiProvenanceCollector.d.ts +13 -0
  464. package/types/lib/inventory/aiProvenanceCollector.d.ts.map +1 -0
  465. package/types/lib/inventory/analyzer.d.ts +157 -0
  466. package/types/lib/inventory/analyzer.d.ts.map +1 -0
  467. package/types/lib/inventory/analyzerScope.d.ts +106 -0
  468. package/types/lib/inventory/analyzerScope.d.ts.map +1 -0
  469. package/types/lib/inventory/astWorker.d.ts +9 -0
  470. package/types/lib/inventory/astWorker.d.ts.map +1 -0
  471. package/types/lib/inventory/atomUtils.d.ts +159 -0
  472. package/types/lib/inventory/atomUtils.d.ts.map +1 -0
  473. package/types/lib/inventory/auditCategories.d.ts +80 -0
  474. package/types/lib/inventory/auditCategories.d.ts.map +1 -0
  475. package/types/lib/inventory/bomUtils.d.ts +145 -0
  476. package/types/lib/inventory/bomUtils.d.ts.map +1 -0
  477. package/types/lib/inventory/cacheCommands.d.ts +28 -0
  478. package/types/lib/inventory/cacheCommands.d.ts.map +1 -0
  479. package/types/lib/inventory/cacheDir.d.ts +55 -0
  480. package/types/lib/inventory/cacheDir.d.ts.map +1 -0
  481. package/types/lib/inventory/cbomutils.d.ts +37 -0
  482. package/types/lib/inventory/cbomutils.d.ts.map +1 -0
  483. package/types/lib/inventory/cdxrs.d.ts +90 -0
  484. package/types/lib/inventory/cdxrs.d.ts.map +1 -0
  485. package/types/lib/inventory/ciParsers/azurePipelines.d.ts +27 -0
  486. package/types/lib/inventory/ciParsers/azurePipelines.d.ts.map +1 -0
  487. package/types/lib/inventory/ciParsers/circleCi.d.ts +27 -0
  488. package/types/lib/inventory/ciParsers/circleCi.d.ts.map +1 -0
  489. package/types/lib/inventory/ciParsers/common.d.ts +11 -0
  490. package/types/lib/inventory/ciParsers/common.d.ts.map +1 -0
  491. package/types/lib/inventory/ciParsers/githubActions.d.ts +38 -0
  492. package/types/lib/inventory/ciParsers/githubActions.d.ts.map +1 -0
  493. package/types/lib/inventory/ciParsers/gitlabCi.d.ts +26 -0
  494. package/types/lib/inventory/ciParsers/gitlabCi.d.ts.map +1 -0
  495. package/types/lib/inventory/ciParsers/jenkins.d.ts +26 -0
  496. package/types/lib/inventory/ciParsers/jenkins.d.ts.map +1 -0
  497. package/types/lib/inventory/citations.d.ts +90 -0
  498. package/types/lib/inventory/citations.d.ts.map +1 -0
  499. package/types/lib/inventory/communityAiConfigParser.d.ts +14 -0
  500. package/types/lib/inventory/communityAiConfigParser.d.ts.map +1 -0
  501. package/types/lib/inventory/containerRisk.d.ts +20 -0
  502. package/types/lib/inventory/containerRisk.d.ts.map +1 -0
  503. package/types/lib/inventory/cryptoAlgorithmFamily.d.ts +37 -0
  504. package/types/lib/inventory/cryptoAlgorithmFamily.d.ts.map +1 -0
  505. package/types/lib/inventory/deps.d.ts +140 -0
  506. package/types/lib/inventory/deps.d.ts.map +1 -0
  507. package/types/lib/inventory/depsUtils.d.ts +74 -0
  508. package/types/lib/inventory/depsUtils.d.ts.map +1 -0
  509. package/types/lib/inventory/display.d.ts +227 -0
  510. package/types/lib/inventory/display.d.ts.map +1 -0
  511. package/types/lib/inventory/dosai.d.ts +130 -0
  512. package/types/lib/inventory/dosai.d.ts.map +1 -0
  513. package/types/lib/inventory/dosaiParsers.d.ts +59 -0
  514. package/types/lib/inventory/dosaiParsers.d.ts.map +1 -0
  515. package/types/lib/inventory/dynamic.d.ts +25 -0
  516. package/types/lib/inventory/dynamic.d.ts.map +1 -0
  517. package/types/lib/inventory/envcontext.d.ts +377 -0
  518. package/types/lib/inventory/envcontext.d.ts.map +1 -0
  519. package/types/lib/inventory/evidenceUtils.d.ts +74 -0
  520. package/types/lib/inventory/evidenceUtils.d.ts.map +1 -0
  521. package/types/lib/inventory/fetchBatch.d.ts +127 -0
  522. package/types/lib/inventory/fetchBatch.d.ts.map +1 -0
  523. package/types/lib/inventory/fetchRate.d.ts +118 -0
  524. package/types/lib/inventory/fetchRate.d.ts.map +1 -0
  525. package/types/lib/inventory/forgeEnricher.d.ts +31 -0
  526. package/types/lib/inventory/forgeEnricher.d.ts.map +1 -0
  527. package/types/lib/inventory/formulationParsers.d.ts +50 -0
  528. package/types/lib/inventory/formulationParsers.d.ts.map +1 -0
  529. package/types/lib/inventory/gtfobins.d.ts +27 -0
  530. package/types/lib/inventory/gtfobins.d.ts.map +1 -0
  531. package/types/lib/inventory/hbom.d.ts +58 -0
  532. package/types/lib/inventory/hbom.d.ts.map +1 -0
  533. package/types/lib/inventory/hbomAnalysis.d.ts +56 -0
  534. package/types/lib/inventory/hbomAnalysis.d.ts.map +1 -0
  535. package/types/lib/inventory/hbomLoader.d.ts +7 -0
  536. package/types/lib/inventory/hbomLoader.d.ts.map +1 -0
  537. package/types/lib/inventory/hostTopology.d.ts +47 -0
  538. package/types/lib/inventory/hostTopology.d.ts.map +1 -0
  539. package/types/lib/inventory/inventoryStats.d.ts +42 -0
  540. package/types/lib/inventory/inventoryStats.d.ts.map +1 -0
  541. package/types/lib/inventory/jsonLike.d.ts +23 -0
  542. package/types/lib/inventory/jsonLike.d.ts.map +1 -0
  543. package/types/lib/inventory/licenseEnhancer.d.ts +70 -0
  544. package/types/lib/inventory/licenseEnhancer.d.ts.map +1 -0
  545. package/types/lib/inventory/lolbas.d.ts +16 -0
  546. package/types/lib/inventory/lolbas.d.ts.map +1 -0
  547. package/types/lib/inventory/mcp.d.ts +29 -0
  548. package/types/lib/inventory/mcp.d.ts.map +1 -0
  549. package/types/lib/inventory/mcpConfigParser.d.ts +20 -0
  550. package/types/lib/inventory/mcpConfigParser.d.ts.map +1 -0
  551. package/types/lib/inventory/mcpDiscovery.d.ts +33 -0
  552. package/types/lib/inventory/mcpDiscovery.d.ts.map +1 -0
  553. package/types/lib/inventory/mcpPinning.d.ts +11 -0
  554. package/types/lib/inventory/mcpPinning.d.ts.map +1 -0
  555. package/types/lib/inventory/osPackageResolver.d.ts +49 -0
  556. package/types/lib/inventory/osPackageResolver.d.ts.map +1 -0
  557. package/types/lib/inventory/osinfo.d.ts +120 -0
  558. package/types/lib/inventory/osinfo.d.ts.map +1 -0
  559. package/types/lib/inventory/osqueryTransform.d.ts +84 -0
  560. package/types/lib/inventory/osqueryTransform.d.ts.map +1 -0
  561. package/types/lib/inventory/plugins.d.ts +58 -0
  562. package/types/lib/inventory/plugins.d.ts.map +1 -0
  563. package/types/lib/inventory/protobom.d.ts +71 -0
  564. package/types/lib/inventory/protobom.d.ts.map +1 -0
  565. package/types/lib/inventory/protobomLoader.d.ts +17 -0
  566. package/types/lib/inventory/protobomLoader.d.ts.map +1 -0
  567. package/types/lib/inventory/provenanceUtils.d.ts +98 -0
  568. package/types/lib/inventory/provenanceUtils.d.ts.map +1 -0
  569. package/types/lib/inventory/purl.d.ts +313 -0
  570. package/types/lib/inventory/purl.d.ts.map +1 -0
  571. package/types/lib/inventory/rustFormulationParser.d.ts +17 -0
  572. package/types/lib/inventory/rustFormulationParser.d.ts.map +1 -0
  573. package/types/lib/inventory/sbomDocument.d.ts +59 -0
  574. package/types/lib/inventory/sbomDocument.d.ts.map +1 -0
  575. package/types/lib/inventory/source.d.ts +163 -0
  576. package/types/lib/inventory/source.d.ts.map +1 -0
  577. package/types/lib/inventory/spdx.d.ts +66 -0
  578. package/types/lib/inventory/spdx.d.ts.map +1 -0
  579. package/types/lib/inventory/spdxExpression.d.ts +58 -0
  580. package/types/lib/inventory/spdxExpression.d.ts.map +1 -0
  581. package/types/lib/inventory/spdxUtils.d.ts +12 -0
  582. package/types/lib/inventory/spdxUtils.d.ts.map +1 -0
  583. package/types/lib/inventory/table.d.ts +19 -0
  584. package/types/lib/inventory/table.d.ts.map +1 -0
  585. package/types/lib/inventory/traceRunner.d.ts +80 -0
  586. package/types/lib/inventory/traceRunner.d.ts.map +1 -0
  587. package/types/lib/inventory/unicodeScan.d.ts +46 -0
  588. package/types/lib/inventory/unicodeScan.d.ts.map +1 -0
  589. package/types/lib/managers/binary.d.ts +76 -0
  590. package/types/lib/managers/binary.d.ts.map +1 -0
  591. package/types/lib/managers/containerutils.d.ts +30 -0
  592. package/types/lib/managers/containerutils.d.ts.map +1 -0
  593. package/types/lib/managers/docker.d.ts +157 -0
  594. package/types/lib/managers/docker.d.ts.map +1 -0
  595. package/types/lib/managers/dockerConnection.d.ts +42 -0
  596. package/types/lib/managers/dockerConnection.d.ts.map +1 -0
  597. package/types/lib/managers/oci.d.ts +21 -0
  598. package/types/lib/managers/oci.d.ts.map +1 -0
  599. package/types/lib/managers/piptree.d.ts +13 -0
  600. package/types/lib/managers/piptree.d.ts.map +1 -0
  601. package/types/lib/parsers/cmakeCache.d.ts +70 -0
  602. package/types/lib/parsers/cmakeCache.d.ts.map +1 -0
  603. package/types/lib/parsers/gguf.d.ts +39 -0
  604. package/types/lib/parsers/gguf.d.ts.map +1 -0
  605. package/types/lib/parsers/gitAiNotes.d.ts +15 -0
  606. package/types/lib/parsers/gitAiNotes.d.ts.map +1 -0
  607. package/types/lib/parsers/gitmodules.d.ts +88 -0
  608. package/types/lib/parsers/gitmodules.d.ts.map +1 -0
  609. package/types/lib/parsers/htmlExtract.d.ts +34 -0
  610. package/types/lib/parsers/htmlExtract.d.ts.map +1 -0
  611. package/types/lib/parsers/huggingfaceManifest.d.ts +153 -0
  612. package/types/lib/parsers/huggingfaceManifest.d.ts.map +1 -0
  613. package/types/lib/parsers/huggingfaceUtils.d.ts +155 -0
  614. package/types/lib/parsers/huggingfaceUtils.d.ts.map +1 -0
  615. package/types/lib/parsers/iri.d.ts +68 -0
  616. package/types/lib/parsers/iri.d.ts.map +1 -0
  617. package/types/lib/parsers/npmrc.d.ts +33 -0
  618. package/types/lib/parsers/npmrc.d.ts.map +1 -0
  619. package/types/lib/parsers/ollama.d.ts +22 -0
  620. package/types/lib/parsers/ollama.d.ts.map +1 -0
  621. package/types/lib/parsers/xml.d.ts +47 -0
  622. package/types/lib/parsers/xml.d.ts.map +1 -0
  623. package/types/lib/server/server.d.ts +51 -0
  624. package/types/lib/server/server.d.ts.map +1 -0
  625. package/types/lib/stages/postgen/annotator.d.ts +36 -0
  626. package/types/lib/stages/postgen/annotator.d.ts.map +1 -0
  627. package/types/lib/stages/postgen/auditBom.d.ts +92 -0
  628. package/types/lib/stages/postgen/auditBom.d.ts.map +1 -0
  629. package/types/lib/stages/postgen/postgen.d.ts +59 -0
  630. package/types/lib/stages/postgen/postgen.d.ts.map +1 -0
  631. package/types/lib/stages/postgen/ruleEngine.d.ts +18 -0
  632. package/types/lib/stages/postgen/ruleEngine.d.ts.map +1 -0
  633. package/types/lib/stages/postgen/sortBom.d.ts +34 -0
  634. package/types/lib/stages/postgen/sortBom.d.ts.map +1 -0
  635. package/types/lib/stages/postgen/spdxConverter.d.ts +11 -0
  636. package/types/lib/stages/postgen/spdxConverter.d.ts.map +1 -0
  637. package/types/lib/stages/postgen/specVersionCompat.d.ts +71 -0
  638. package/types/lib/stages/postgen/specVersionCompat.d.ts.map +1 -0
  639. package/types/lib/stages/pregen/envAudit.d.ts +14 -0
  640. package/types/lib/stages/pregen/envAudit.d.ts.map +1 -0
  641. package/types/lib/stages/pregen/pregen.d.ts +59 -0
  642. package/types/lib/stages/pregen/pregen.d.ts.map +1 -0
  643. package/types/lib/third-party/arborist/lib/arborist/index.d.ts +47 -0
  644. package/types/lib/third-party/arborist/lib/arborist/index.d.ts.map +1 -0
  645. package/types/lib/third-party/arborist/lib/arborist/load-actual.d.ts +4 -0
  646. package/types/lib/third-party/arborist/lib/arborist/load-actual.d.ts.map +1 -0
  647. package/types/lib/third-party/arborist/lib/arborist/load-virtual.d.ts +4 -0
  648. package/types/lib/third-party/arborist/lib/arborist/load-virtual.d.ts.map +1 -0
  649. package/types/lib/third-party/arborist/lib/bin-links.d.ts +18 -0
  650. package/types/lib/third-party/arborist/lib/bin-links.d.ts.map +1 -0
  651. package/types/lib/third-party/arborist/lib/calc-dep-flags.d.ts +3 -0
  652. package/types/lib/third-party/arborist/lib/calc-dep-flags.d.ts.map +1 -0
  653. package/types/lib/third-party/arborist/lib/case-insensitive-map.d.ts +9 -0
  654. package/types/lib/third-party/arborist/lib/case-insensitive-map.d.ts.map +1 -0
  655. package/types/lib/third-party/arborist/lib/consistent-resolve.d.ts +3 -0
  656. package/types/lib/third-party/arborist/lib/consistent-resolve.d.ts.map +1 -0
  657. package/types/lib/third-party/arborist/lib/debug.d.ts +3 -0
  658. package/types/lib/third-party/arborist/lib/debug.d.ts.map +1 -0
  659. package/types/lib/third-party/arborist/lib/dep-valid.d.ts +3 -0
  660. package/types/lib/third-party/arborist/lib/dep-valid.d.ts.map +1 -0
  661. package/types/lib/third-party/arborist/lib/edge.d.ts +46 -0
  662. package/types/lib/third-party/arborist/lib/edge.d.ts.map +1 -0
  663. package/types/lib/third-party/arborist/lib/from-path.d.ts +3 -0
  664. package/types/lib/third-party/arborist/lib/from-path.d.ts.map +1 -0
  665. package/types/lib/third-party/arborist/lib/gather-dep-set.d.ts +3 -0
  666. package/types/lib/third-party/arborist/lib/gather-dep-set.d.ts.map +1 -0
  667. package/types/lib/third-party/arborist/lib/index.d.ts +3 -0
  668. package/types/lib/third-party/arborist/lib/index.d.ts.map +1 -0
  669. package/types/lib/third-party/arborist/lib/inventory.d.ts +14 -0
  670. package/types/lib/third-party/arborist/lib/inventory.d.ts.map +1 -0
  671. package/types/lib/third-party/arborist/lib/link.d.ts +18 -0
  672. package/types/lib/third-party/arborist/lib/link.d.ts.map +1 -0
  673. package/types/lib/third-party/arborist/lib/node.d.ts +112 -0
  674. package/types/lib/third-party/arborist/lib/node.d.ts.map +1 -0
  675. package/types/lib/third-party/arborist/lib/npm-extension.d.ts +18 -0
  676. package/types/lib/third-party/arborist/lib/npm-extension.d.ts.map +1 -0
  677. package/types/lib/third-party/arborist/lib/override-resolves.d.ts +3 -0
  678. package/types/lib/third-party/arborist/lib/override-resolves.d.ts.map +1 -0
  679. package/types/lib/third-party/arborist/lib/override-set.d.ts +27 -0
  680. package/types/lib/third-party/arborist/lib/override-set.d.ts.map +1 -0
  681. package/types/lib/third-party/arborist/lib/package-extensions.d.ts +36 -0
  682. package/types/lib/third-party/arborist/lib/package-extensions.d.ts.map +1 -0
  683. package/types/lib/third-party/arborist/lib/printable.d.ts +3 -0
  684. package/types/lib/third-party/arborist/lib/printable.d.ts.map +1 -0
  685. package/types/lib/third-party/arborist/lib/proc-log.d.ts +20 -0
  686. package/types/lib/third-party/arborist/lib/proc-log.d.ts.map +1 -0
  687. package/types/lib/third-party/arborist/lib/realpath.d.ts +3 -0
  688. package/types/lib/third-party/arborist/lib/realpath.d.ts.map +1 -0
  689. package/types/lib/third-party/arborist/lib/relpath.d.ts +3 -0
  690. package/types/lib/third-party/arborist/lib/relpath.d.ts.map +1 -0
  691. package/types/lib/third-party/arborist/lib/shrinkwrap.d.ts +54 -0
  692. package/types/lib/third-party/arborist/lib/shrinkwrap.d.ts.map +1 -0
  693. package/types/lib/third-party/arborist/lib/spec-from-lock.d.ts +3 -0
  694. package/types/lib/third-party/arborist/lib/spec-from-lock.d.ts.map +1 -0
  695. package/types/lib/third-party/arborist/lib/tree-check.d.ts +3 -0
  696. package/types/lib/third-party/arborist/lib/tree-check.d.ts.map +1 -0
  697. package/types/lib/third-party/arborist/lib/validate-npm-package-name.d.ts +13 -0
  698. package/types/lib/third-party/arborist/lib/validate-npm-package-name.d.ts.map +1 -0
  699. package/types/lib/third-party/arborist/lib/version-from-tgz.d.ts +6 -0
  700. package/types/lib/third-party/arborist/lib/version-from-tgz.d.ts.map +1 -0
  701. package/types/lib/third-party/arborist/lib/yarn-lock.d.ts +35 -0
  702. package/types/lib/third-party/arborist/lib/yarn-lock.d.ts.map +1 -0
  703. package/types/lib/validator/bomValidator.d.ts +40 -0
  704. package/types/lib/validator/bomValidator.d.ts.map +1 -0
  705. package/types/lib/validator/complianceEngine.d.ts +72 -0
  706. package/types/lib/validator/complianceEngine.d.ts.map +1 -0
  707. package/types/lib/validator/complianceRules.d.ts +61 -0
  708. package/types/lib/validator/complianceRules.d.ts.map +1 -0
  709. package/types/lib/validator/index.d.ts +101 -0
  710. package/types/lib/validator/index.d.ts.map +1 -0
  711. package/types/lib/validator/reporters/annotations.d.ts +37 -0
  712. package/types/lib/validator/reporters/annotations.d.ts.map +1 -0
  713. package/types/lib/validator/reporters/console.d.ts +34 -0
  714. package/types/lib/validator/reporters/console.d.ts.map +1 -0
  715. package/types/lib/validator/reporters/index.d.ts +30 -0
  716. package/types/lib/validator/reporters/index.d.ts.map +1 -0
  717. package/types/lib/validator/reporters/json.d.ts +11 -0
  718. package/types/lib/validator/reporters/json.d.ts.map +1 -0
  719. package/types/lib/validator/reporters/sarif.d.ts +22 -0
  720. package/types/lib/validator/reporters/sarif.d.ts.map +1 -0
  721. package/mod.d.ts +0 -7
  722. package/mod.js +0 -22
@@ -0,0 +1,84 @@
1
+ const MAX_DETAIL_LINES = 12;
2
+ const MAX_PROPERTY_ROWS = 40;
3
+ const MAX_CELL_LENGTH = 160;
4
+
5
+ function truncateText(value, maxLength = MAX_CELL_LENGTH) {
6
+ const normalized = String(value ?? "").trim();
7
+ if (normalized.length <= maxLength) {
8
+ return normalized;
9
+ }
10
+ return `${normalized.slice(0, Math.max(0, maxLength - 1)).trimEnd()}…`;
11
+ }
12
+
13
+ function escapeMarkdownText(value) {
14
+ return truncateText(value)
15
+ .replace(/&/g, "&amp;")
16
+ .replace(/</g, "&lt;")
17
+ .replace(/>/g, "&gt;")
18
+ .replace(/([\\`*_{}\[\]()#+!|])/g, "\\$1")
19
+ .replace(/\r?\n/g, "<br>")
20
+ .trim();
21
+ }
22
+
23
+ function escapeMarkdownCell(value) {
24
+ return escapeMarkdownText(value);
25
+ }
26
+
27
+ /**
28
+ * Format annotation properties as a markdown table for CycloneDX annotations.
29
+ *
30
+ * @param {{ name: string, value: string }[]} properties annotation properties
31
+ * @returns {string} markdown table text
32
+ */
33
+ export function propertiesToMarkdownTable(properties) {
34
+ if (!properties?.length) {
35
+ return "";
36
+ }
37
+ const lines = ["| Property | Value |", "| --- | --- |"];
38
+ const normalizedProperties = [...properties]
39
+ .filter((property) => property?.name || property?.value)
40
+ .sort((left, right) =>
41
+ `${left?.name || ""}\u0000${left?.value || ""}`.localeCompare(
42
+ `${right?.name || ""}\u0000${right?.value || ""}`,
43
+ ),
44
+ )
45
+ .slice(0, MAX_PROPERTY_ROWS);
46
+ for (const property of normalizedProperties) {
47
+ lines.push(
48
+ `| ${escapeMarkdownCell(property?.name)} | ${escapeMarkdownCell(property?.value)} |`,
49
+ );
50
+ }
51
+ if ((properties?.length || 0) > normalizedProperties.length) {
52
+ lines.push(
53
+ `| _truncated_ | ${properties.length - normalizedProperties.length} more properties omitted |`,
54
+ );
55
+ }
56
+ return lines.join("\n");
57
+ }
58
+
59
+ /**
60
+ * Build production-ready markdown annotation text.
61
+ *
62
+ * @param {string} message leading message text
63
+ * @param {{ name: string, value: string }[]} properties annotation properties
64
+ * @param {string[]} [details] optional detail lines shown before the table
65
+ * @returns {string} annotation text
66
+ */
67
+ export function buildAnnotationText(message, properties, details = []) {
68
+ const lines = [
69
+ message,
70
+ ...details.filter(Boolean).slice(0, MAX_DETAIL_LINES),
71
+ ].map(escapeMarkdownText);
72
+ if (details.filter(Boolean).length > MAX_DETAIL_LINES) {
73
+ lines.push(
74
+ escapeMarkdownText(
75
+ `${details.filter(Boolean).length - MAX_DETAIL_LINES} more details omitted`,
76
+ ),
77
+ );
78
+ }
79
+ const markdownTable = propertiesToMarkdownTable(properties);
80
+ if (markdownTable) {
81
+ lines.push("", markdownTable);
82
+ }
83
+ return lines.join("\n");
84
+ }
@@ -0,0 +1,312 @@
1
+ import crypto from "node:crypto";
2
+
3
+ /**
4
+ * Lightweight, deterministic JSON Canonicalizer (similar to RFC 8785).
5
+ * Required by JSF to ensure the signature payload remains identical across systems.
6
+ *
7
+ * @param {any} value - The JSON object/value to canonicalize
8
+ * @returns {string} - Canonicalized JSON string
9
+ */
10
+ function canonicalize(value) {
11
+ if (value === null || typeof value !== "object") {
12
+ return JSON.stringify(value);
13
+ }
14
+ if (Array.isArray(value)) {
15
+ return `[${value.map(canonicalize).join(",")}]`;
16
+ }
17
+ const keys = Object.keys(value).sort();
18
+ let str = "{";
19
+ for (let i = 0; i < keys.length; i++) {
20
+ if (i > 0) str += ",";
21
+ str += `${JSON.stringify(keys[i])}:${canonicalize(value[keys[i]])}`;
22
+ }
23
+ str += "}";
24
+ return str;
25
+ }
26
+
27
+ /**
28
+ * Creates a JSF-compliant signature block.
29
+ *
30
+ * @param {Object} payload - The object to sign (e.g., BOM, component)
31
+ * @param {string|Buffer|crypto.KeyObject} privateKey - The signing key
32
+ * @param {string} alg - JSF algorithm identifier
33
+ * @param {Object} [publicKeyJwk] - Optional JWK representation of the public key
34
+ * @param {string} keyId - Key ID
35
+ *
36
+ * @returns {Object} - JSF signature block
37
+ */
38
+ function createSignatureBlock(
39
+ payload,
40
+ privateKey,
41
+ alg,
42
+ publicKeyJwk = null,
43
+ keyId = null,
44
+ ) {
45
+ // Exclude existing signatures from the canonicalized payload as per JSF
46
+ const { signature, ...dataToSign } = payload;
47
+ const canonicalData = canonicalize(dataToSign);
48
+
49
+ let hashAlg;
50
+ const signOptions = { key: privateKey };
51
+
52
+ // Handle HMAC (Symmetric)
53
+ if (alg.startsWith("HS")) {
54
+ const hash = alg.replace("HS", "sha");
55
+ const value = crypto
56
+ .createHmac(hash, privateKey)
57
+ .update(canonicalData, "utf8")
58
+ .digest("base64url");
59
+ const block = { algorithm: alg, value };
60
+ if (publicKeyJwk) {
61
+ block.publicKey = publicKeyJwk;
62
+ }
63
+ if (keyId) {
64
+ block.keyId = keyId;
65
+ }
66
+ return block;
67
+ }
68
+
69
+ // Handle Asymmetric Algorithms
70
+ if (alg.startsWith("RS")) {
71
+ hashAlg = alg.replace("RS", "SHA");
72
+ } else if (alg.startsWith("PS")) {
73
+ hashAlg = alg.replace("PS", "SHA");
74
+ signOptions.padding = crypto.constants.RSA_PKCS1_PSS_PADDING;
75
+ signOptions.saltLength = crypto.constants.RSA_PSS_SALTLEN_AUTO;
76
+ } else if (alg.startsWith("ES")) {
77
+ hashAlg = alg.replace("ES", "SHA");
78
+ // Standard JWA format requires IEEE P1363 (R || S) instead of ASN.1 DER
79
+ signOptions.dsaEncoding = "ieee-p1363";
80
+ } else if (alg === "Ed25519" || alg === "Ed448") {
81
+ // Native EdDSA algorithms do not require a separate hash algorithm definition
82
+ hashAlg = null;
83
+ } else {
84
+ throw new Error(`Unsupported JSF algorithm: ${alg}`);
85
+ }
86
+ const sigBuffer = crypto.sign(
87
+ hashAlg,
88
+ Buffer.from(canonicalData, "utf8"),
89
+ signOptions,
90
+ );
91
+ const block = { algorithm: alg, value: sigBuffer.toString("base64url") };
92
+ if (publicKeyJwk) {
93
+ block.publicKey = publicKeyJwk;
94
+ }
95
+ if (keyId) {
96
+ block.keyId = keyId;
97
+ }
98
+ return block;
99
+ }
100
+
101
+ /**
102
+ * Appends or replaces a signature on a target object based on the configured mode.
103
+ */
104
+ function addSignature(target, sigBlock, mode) {
105
+ if (!target.signature) {
106
+ target.signature = sigBlock;
107
+ return;
108
+ }
109
+ if (mode === "chain") {
110
+ if (target.signature.chain) {
111
+ target.signature.chain.push(sigBlock);
112
+ } else if (target.signature.signers) {
113
+ throw new Error("Cannot mix signature chains and multi-signers.");
114
+ } else {
115
+ target.signature = { chain: [target.signature, sigBlock] };
116
+ }
117
+ } else if (mode === "signers") {
118
+ if (target.signature.signers) {
119
+ target.signature.signers.push(sigBlock);
120
+ } else if (target.signature.chain) {
121
+ throw new Error("Cannot mix signature chains and multi-signers.");
122
+ } else {
123
+ target.signature = { signers: [target.signature, sigBlock] };
124
+ }
125
+ } else {
126
+ target.signature = sigBlock;
127
+ }
128
+ }
129
+
130
+ /**
131
+ * Recursively applies signatures to the BOM and its granular components.
132
+ *
133
+ * @param {Object} bomJson - CycloneDX BOM Object
134
+ * @param {Object} options - Signing options { privateKey, algorithm, mode, ... }
135
+ * @returns {Object} - Signed BOM Object
136
+ */
137
+ export function signBom(bomJson, options = {}) {
138
+ const {
139
+ privateKey,
140
+ algorithm = "RS512",
141
+ publicKeyJwk = null,
142
+ keyId = null,
143
+ mode = "replace", // Supports: 'replace', 'chain', 'signers'
144
+ signComponents = true,
145
+ signServices = true,
146
+ signAnnotations = true,
147
+ } = options;
148
+
149
+ if (!privateKey) {
150
+ throw new Error("privateKey is required for signing");
151
+ }
152
+ if (signComponents && Array.isArray(bomJson.components)) {
153
+ for (const comp of bomJson.components) {
154
+ addSignature(
155
+ comp,
156
+ createSignatureBlock(comp, privateKey, algorithm, publicKeyJwk, keyId),
157
+ mode,
158
+ );
159
+ }
160
+ }
161
+ if (signServices && Array.isArray(bomJson.services)) {
162
+ for (const svc of bomJson.services) {
163
+ addSignature(
164
+ svc,
165
+ createSignatureBlock(svc, privateKey, algorithm, publicKeyJwk, keyId),
166
+ mode,
167
+ );
168
+ }
169
+ }
170
+ if (signAnnotations && Array.isArray(bomJson.annotations)) {
171
+ for (const ann of bomJson.annotations) {
172
+ addSignature(
173
+ ann,
174
+ createSignatureBlock(ann, privateKey, algorithm, publicKeyJwk, keyId),
175
+ mode,
176
+ );
177
+ }
178
+ }
179
+ addSignature(
180
+ bomJson,
181
+ createSignatureBlock(bomJson, privateKey, algorithm, publicKeyJwk, keyId),
182
+ mode,
183
+ );
184
+ return bomJson;
185
+ }
186
+
187
+ /**
188
+ * Validates a single JSF signature block against the payload.
189
+ *
190
+ * @param {Object} payload - The payload to verify
191
+ * @param {string|crypto.KeyObject} publicKey - The public key corresponding to the signature
192
+ * @param {Object} sigBlock Signature
193
+ *
194
+ * @returns {boolean|Object} - Signature block if signature is valid. False otherwise.
195
+ */
196
+ function verifySignatureBlock(payload, publicKey, sigBlock) {
197
+ const { signature, ...dataToVerify } = payload;
198
+ const canonicalData = canonicalize(dataToVerify);
199
+
200
+ const { algorithm: alg, value } = sigBlock;
201
+
202
+ if (alg.startsWith("HS")) {
203
+ const hash = alg.replace("HS", "sha");
204
+ const expected = crypto
205
+ .createHmac(hash, publicKey)
206
+ .update(canonicalData, "utf8")
207
+ .digest("base64url");
208
+ const isValid = expected === value;
209
+ return isValid ? sigBlock : false;
210
+ }
211
+
212
+ const verifyOptions = { key: publicKey };
213
+ let hashAlg;
214
+
215
+ if (alg.startsWith("RS")) {
216
+ hashAlg = alg.replace("RS", "SHA");
217
+ } else if (alg.startsWith("PS")) {
218
+ hashAlg = alg.replace("PS", "SHA");
219
+ verifyOptions.padding = crypto.constants.RSA_PKCS1_PSS_PADDING;
220
+ verifyOptions.saltLength = crypto.constants.RSA_PSS_SALTLEN_AUTO;
221
+ } else if (alg.startsWith("ES")) {
222
+ hashAlg = alg.replace("ES", "SHA");
223
+ verifyOptions.dsaEncoding = "ieee-p1363";
224
+ } else if (alg === "Ed25519" || alg === "Ed448") {
225
+ hashAlg = null;
226
+ } else {
227
+ console.warn(`${alg} is unknown.`);
228
+ return false;
229
+ }
230
+
231
+ const isValid = crypto.verify(
232
+ hashAlg,
233
+ Buffer.from(canonicalData, "utf8"),
234
+ verifyOptions,
235
+ Buffer.from(value, "base64url"),
236
+ );
237
+ return isValid ? sigBlock : false;
238
+ }
239
+
240
+ /**
241
+ * Verifies the integrity of a specific element node (e.g., BOM root, Component, Service, Annotation).
242
+ * Resolves standard JSF signatures, multisignature (signers), and chains.
243
+ *
244
+ * @param {Object} node - The BOM or granular object to verify
245
+ * @param {string|crypto.KeyObject} publicKey - The public key corresponding to the signature
246
+ * @returns {boolean|Object} - Signature block if signature is valid. False otherwise.
247
+ */
248
+ export function verifyNode(node, publicKey) {
249
+ if (!node?.signature) {
250
+ return false;
251
+ }
252
+ const sigTarget = node.signature;
253
+ if (sigTarget.signers) {
254
+ for (const sig of sigTarget.signers) {
255
+ const match = verifySignatureBlock(node, publicKey, sig);
256
+ if (match) {
257
+ return match;
258
+ }
259
+ }
260
+ return false;
261
+ }
262
+ if (sigTarget.chain) {
263
+ for (const sig of sigTarget.chain) {
264
+ const match = verifySignatureBlock(node, publicKey, sig);
265
+ if (match) {
266
+ return match;
267
+ }
268
+ }
269
+ return false;
270
+ }
271
+ return verifySignatureBlock(node, publicKey, sigTarget);
272
+ }
273
+
274
+ /**
275
+ * Verifies the integrity of a BOM's top-level signature, as well as nested components, services, and annotations.
276
+ * Returns true only if the root signature is valid AND all signed nested elements are valid.
277
+ *
278
+ * @param {Object} bom - CycloneDX BOM Object
279
+ * @param {string|crypto.KeyObject} publicKey - The public key corresponding to the signature
280
+ * @returns {boolean|Object} - Signature block if signature is valid. False otherwise.
281
+ */
282
+ export function verifyBom(bom, publicKey) {
283
+ if (!bom?.signature) {
284
+ return false;
285
+ }
286
+ const rootMatch = verifyNode(bom, publicKey);
287
+ if (!rootMatch) {
288
+ return false;
289
+ }
290
+ if (Array.isArray(bom.components)) {
291
+ for (const comp of bom.components) {
292
+ if (comp.signature && !verifyNode(comp, publicKey)) {
293
+ return false;
294
+ }
295
+ }
296
+ }
297
+ if (Array.isArray(bom.services)) {
298
+ for (const svc of bom.services) {
299
+ if (svc.signature && !verifyNode(svc, publicKey)) {
300
+ return false;
301
+ }
302
+ }
303
+ }
304
+ if (Array.isArray(bom.annotations)) {
305
+ for (const ann of bom.annotations) {
306
+ if (ann.signature && !verifyNode(ann, publicKey)) {
307
+ return false;
308
+ }
309
+ }
310
+ }
311
+ return rootMatch;
312
+ }
@@ -0,0 +1,160 @@
1
+ import path from "node:path";
2
+
3
+ const SUPPORTED_EXPORT_FORMATS = new Set(["cyclonedx", "spdx"]);
4
+ const EXPORT_FORMAT_ALIASES = {
5
+ cdx: "cyclonedx",
6
+ cyclonedx: "cyclonedx",
7
+ spdx: "spdx",
8
+ "spdx-json": "spdx",
9
+ spdx3: "spdx",
10
+ "spdx3-json": "spdx",
11
+ };
12
+
13
+ /**
14
+ * Normalize the requested export formats.
15
+ *
16
+ * @param {string|string[]|undefined|null} format Raw format value
17
+ * @returns {string[]} Normalized export formats
18
+ */
19
+ export function normalizeOutputFormats(format) {
20
+ if (format === undefined || format === null || format === "") {
21
+ return [];
22
+ }
23
+ const values = Array.isArray(format) ? format : [format];
24
+ const normalized = new Set();
25
+ for (const value of values) {
26
+ if (!value) {
27
+ continue;
28
+ }
29
+ for (const token of `${value}`.split(",")) {
30
+ const normalizedToken = EXPORT_FORMAT_ALIASES[token.trim().toLowerCase()];
31
+ if (normalizedToken && SUPPORTED_EXPORT_FORMATS.has(normalizedToken)) {
32
+ normalized.add(normalizedToken);
33
+ }
34
+ }
35
+ }
36
+ return Array.from(normalized);
37
+ }
38
+
39
+ /**
40
+ * Derive the SPDX output path from a base output path.
41
+ *
42
+ * @param {string} outputPath Output path
43
+ * @returns {string} SPDX output path
44
+ */
45
+ export function deriveSpdxOutputPath(outputPath) {
46
+ if (!outputPath) {
47
+ return "bom.spdx.json";
48
+ }
49
+ if (outputPath.endsWith(".spdx.json")) {
50
+ return outputPath;
51
+ }
52
+ if (outputPath.endsWith(".cdx.bin")) {
53
+ return outputPath.replace(/\.cdx\.bin$/u, ".spdx.json");
54
+ }
55
+ if (outputPath.endsWith(".cdx.json")) {
56
+ return outputPath.replace(/\.cdx\.json$/u, ".spdx.json");
57
+ }
58
+ if (outputPath.endsWith(".cdx")) {
59
+ return outputPath.replace(/\.cdx$/u, ".spdx.json");
60
+ }
61
+ if (outputPath.endsWith(".proto")) {
62
+ return outputPath.replace(/\.proto$/u, ".spdx.json");
63
+ }
64
+ if (outputPath.endsWith(".json")) {
65
+ return outputPath.replace(/\.json$/u, ".spdx.json");
66
+ }
67
+ return `${outputPath}.spdx.json`;
68
+ }
69
+
70
+ /**
71
+ * Derive the CycloneDX output path from a base output path.
72
+ *
73
+ * @param {string} outputPath Output path
74
+ * @returns {string} CycloneDX output path
75
+ */
76
+ export function deriveCycloneDxOutputPath(outputPath) {
77
+ if (!outputPath) {
78
+ return "bom.json";
79
+ }
80
+ if (outputPath.endsWith(".spdx.json")) {
81
+ return outputPath.replace(/\.spdx\.json$/u, ".cdx.json");
82
+ }
83
+ return outputPath;
84
+ }
85
+
86
+ /**
87
+ * Derive the output path for a CycloneDX BOM converted to another spec version.
88
+ *
89
+ * The spec version is inserted ahead of the existing extension so the source
90
+ * BOM is never overwritten, and the extension is preserved so a protobuf input
91
+ * keeps producing a protobuf-suffixed name.
92
+ *
93
+ * @param {string} inputPath Input BOM path
94
+ * @param {string} specVersion Target CycloneDX spec version
95
+ * @returns {string} Converted CycloneDX output path
96
+ */
97
+ export function deriveSpecVersionOutputPath(inputPath, specVersion) {
98
+ const suffix = `${specVersion}`.replace(/\./gu, "_");
99
+ if (!inputPath) {
100
+ return `bom-${suffix}.json`;
101
+ }
102
+ for (const extension of [".cdx.bin", ".cdx.json", ".spdx.json"]) {
103
+ if (inputPath.endsWith(extension)) {
104
+ return `${inputPath.slice(0, -extension.length)}-${suffix}${extension}`;
105
+ }
106
+ }
107
+ const extension = path.extname(inputPath);
108
+ if (extension) {
109
+ return `${inputPath.slice(0, -extension.length)}-${suffix}${extension}`;
110
+ }
111
+ return `${inputPath}-${suffix}.json`;
112
+ }
113
+
114
+ /**
115
+ * Determine the final output plan for the requested export formats.
116
+ *
117
+ * @param {object} options CLI options
118
+ * @returns {{ formats: Set<string>, outputs: Record<string, string>, explicitFormat: boolean }} Output plan
119
+ */
120
+ export function createOutputPlan(options) {
121
+ const explicitFormat =
122
+ options?.format !== undefined &&
123
+ options?.format !== null &&
124
+ options?.format !== "";
125
+ const requestedFormats = normalizeOutputFormats(options?.format);
126
+ const outputPath = options?.output || "bom.json";
127
+ const formats = new Set(
128
+ requestedFormats.length
129
+ ? requestedFormats
130
+ : [outputPath.endsWith(".spdx.json") ? "spdx" : "cyclonedx"],
131
+ );
132
+ const outputs = {};
133
+ if (formats.has("cyclonedx")) {
134
+ outputs.cyclonedx =
135
+ outputPath.endsWith(".spdx.json") && formats.size > 1
136
+ ? deriveCycloneDxOutputPath(outputPath)
137
+ : outputPath;
138
+ }
139
+ if (formats.has("spdx")) {
140
+ if (!formats.has("cyclonedx") || outputPath.endsWith(".spdx.json")) {
141
+ outputs.spdx =
142
+ outputPath === "bom.json"
143
+ ? deriveSpdxOutputPath(outputPath)
144
+ : outputPath;
145
+ } else {
146
+ outputs.spdx = deriveSpdxOutputPath(outputPath);
147
+ }
148
+ }
149
+ return { formats, outputs, explicitFormat };
150
+ }
151
+
152
+ /**
153
+ * Return the output directory for a planned export path.
154
+ *
155
+ * @param {string} outputPath Output path
156
+ * @returns {string} Output directory
157
+ */
158
+ export function getOutputDirectory(outputPath) {
159
+ return path.dirname(outputPath);
160
+ }
@@ -0,0 +1,117 @@
1
+ import { Buffer } from "node:buffer";
2
+
3
+ import { hasDangerousUnicode } from "../../core/activity.js";
4
+
5
+ /**
6
+ * Returns the Dependency-Track BOM API URL as a sanitized URL object.
7
+ *
8
+ * @param {string} serverUrl Dependency-Track server URL
9
+ * @returns {URL | undefined} API URL to submit BOM payload
10
+ */
11
+ export function getDependencyTrackBomApiUrl(serverUrl) {
12
+ const rawServerUrl = `${serverUrl || ""}`.trim();
13
+ if (!rawServerUrl || hasDangerousUnicode(rawServerUrl)) {
14
+ return undefined;
15
+ }
16
+ let parsedUrl;
17
+ try {
18
+ parsedUrl = new URL(rawServerUrl);
19
+ } catch {
20
+ return undefined;
21
+ }
22
+ if (!["http:", "https:"].includes(parsedUrl.protocol)) {
23
+ return undefined;
24
+ }
25
+ if (!parsedUrl.hostname || hasDangerousUnicode(parsedUrl.hostname)) {
26
+ return undefined;
27
+ }
28
+ parsedUrl.username = "";
29
+ parsedUrl.password = "";
30
+ parsedUrl.search = "";
31
+ parsedUrl.hash = "";
32
+ parsedUrl.pathname = `${parsedUrl.pathname.replace(/\/+$/, "")}/api/v1/bom`;
33
+ return parsedUrl;
34
+ }
35
+
36
+ /**
37
+ * Returns the Dependency-Track BOM API URL string.
38
+ *
39
+ * @param {string} serverUrl Dependency-Track server URL
40
+ * @returns {string | undefined} API URL to submit BOM payload
41
+ */
42
+ export function getDependencyTrackBomUrl(serverUrl) {
43
+ return getDependencyTrackBomApiUrl(serverUrl)?.toString();
44
+ }
45
+
46
+ /**
47
+ * Build the payload for Dependency-Track BOM submission.
48
+ *
49
+ * @param {Object} args CLI/server arguments
50
+ * @param {Object} bomContents BOM Json
51
+ * @returns {Object | undefined} payload object if project coordinates are valid
52
+ */
53
+ export function buildDependencyTrackBomPayload(args, bomContents) {
54
+ let encodedBomContents = Buffer.from(JSON.stringify(bomContents)).toString(
55
+ "base64",
56
+ );
57
+ if (encodedBomContents.startsWith("77u/")) {
58
+ encodedBomContents = encodedBomContents.substring(4);
59
+ }
60
+ const autoCreate =
61
+ typeof args.autoCreate === "boolean"
62
+ ? args.autoCreate
63
+ : args.autoCreate !== "false";
64
+ const bomPayload = {
65
+ autoCreate: String(autoCreate),
66
+ bom: encodedBomContents,
67
+ };
68
+ if (
69
+ typeof args.projectId !== "undefined" ||
70
+ typeof args.projectName !== "undefined"
71
+ ) {
72
+ if (typeof args.projectId !== "undefined") {
73
+ bomPayload.project = args.projectId;
74
+ }
75
+ if (typeof args.projectName !== "undefined") {
76
+ bomPayload.projectName = args.projectName;
77
+ }
78
+ // Dependency-Track submissions use "main" as fallback when no version is provided.
79
+ bomPayload.projectVersion = args.projectVersion || "main";
80
+ } else {
81
+ return undefined;
82
+ }
83
+ const parentProjectId = args.parentProjectId || args.parentUUID;
84
+ const hasParentUuidMode = typeof parentProjectId !== "undefined";
85
+ const hasParentName = typeof args.parentProjectName !== "undefined";
86
+ const hasParentVersion = typeof args.parentProjectVersion !== "undefined";
87
+ const hasParentCoordsMode = hasParentName || hasParentVersion;
88
+ if (hasParentUuidMode && hasParentCoordsMode) {
89
+ return undefined;
90
+ }
91
+ if (!hasParentUuidMode && hasParentName !== hasParentVersion) {
92
+ return undefined;
93
+ }
94
+ if (hasParentUuidMode) {
95
+ bomPayload.parentUUID = parentProjectId;
96
+ }
97
+ if (hasParentName && hasParentVersion) {
98
+ bomPayload.parentName = args.parentProjectName;
99
+ bomPayload.parentVersion = args.parentProjectVersion;
100
+ }
101
+ if (
102
+ typeof args.isLatest === "boolean" ||
103
+ args.isLatest === "true" ||
104
+ args.isLatest === "false"
105
+ ) {
106
+ bomPayload.isLatest =
107
+ typeof args.isLatest === "boolean"
108
+ ? args.isLatest
109
+ : args.isLatest === "true";
110
+ }
111
+ if (typeof args.projectTag !== "undefined") {
112
+ bomPayload.projectTags = (
113
+ Array.isArray(args.projectTag) ? args.projectTag : [args.projectTag]
114
+ ).map((tag) => ({ name: tag }));
115
+ }
116
+ return bomPayload;
117
+ }