@cdxgen/cdxgen 0.0.1 → 13.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (722) hide show
  1. package/README.md +921 -87
  2. package/bin/audit.js +239 -0
  3. package/bin/cdxgen.js +2335 -0
  4. package/bin/convert.js +220 -0
  5. package/bin/evinse.js +353 -0
  6. package/bin/hbom.js +504 -0
  7. package/bin/repl.js +2224 -0
  8. package/bin/sign.js +195 -0
  9. package/bin/tracebom.js +303 -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 +1882 -0
  85. package/lib/cli/cliOptions.js +543 -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 +280 -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 +920 -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 +583 -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 +1793 -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 +383 -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 +267 -0
  215. package/lib/inventory/traceRunner.js +439 -0
  216. package/lib/inventory/unicodeScan.js +147 -0
  217. package/lib/managers/binary.js +3459 -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 +329 -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 +50 -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 +201 -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 +22 -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 +147 -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,466 @@
1
+ import { arch as runtimeArch, platform as runtimePlatform } from "node:os";
2
+ import { delimiter, join } from "node:path";
3
+ import process from "node:process";
4
+
5
+ import { DEBUG_MODE, readEnvironmentVariable } from "../core/activity.js";
6
+ import { isDeno } from "../core/env.js";
7
+ import { safeExistsSync, safeSpawnSync } from "../core/fs.js";
8
+ import { dirNameStr } from "../core/paths.js";
9
+ import { retrieveCdxgenPluginVersion } from "./envcontext.js";
10
+
11
+ const PLUGIN_ENV_COMMAND_NAMES = {
12
+ "cargo-auditable": "CARGO_AUDITABLE_CMD",
13
+ cdxrs: "CDXRS_CMD",
14
+ dosai: "DOSAI_CMD",
15
+ golem: "GOLEM_CMD",
16
+ osquery: "OSQUERY_CMD",
17
+ rusi: "RUSI_CMD",
18
+ sourcekitten: "SOURCEKITTEN_CMD",
19
+ trivy: "TRIVY_CMD",
20
+ trustinspector: "TRUSTINSPECTOR_CMD",
21
+ cdxui: "CDXUI_CMD",
22
+ };
23
+
24
+ function isMusl() {
25
+ const result = safeSpawnSync("ldd", ["--version"]);
26
+ return result?.stdout?.includes("musl") || result?.stderr?.includes("musl");
27
+ }
28
+
29
+ function hasUsablePluginsDir(pluginsDir) {
30
+ return (
31
+ safeExistsSync(pluginsDir) &&
32
+ (safeExistsSync(join(pluginsDir, "plugins-manifest.json")) ||
33
+ [
34
+ "cargo-auditable",
35
+ "cdxrs",
36
+ "dosai",
37
+ "golem",
38
+ "osquery",
39
+ "rusi",
40
+ "sourcekitten",
41
+ "trivy",
42
+ "trustinspector",
43
+ "cdxui",
44
+ ].some((pluginName) => safeExistsSync(join(pluginsDir, pluginName))))
45
+ );
46
+ }
47
+
48
+ /**
49
+ * Determine the normalized plugin target tuple for the current runtime.
50
+ *
51
+ * @returns {{arch: string, extn: string, platform: string, pluginsBinSuffix: string}}
52
+ */
53
+ export function getPluginsBinTarget() {
54
+ let platform = runtimePlatform();
55
+ let extn = "";
56
+ let pluginsBinSuffix = "";
57
+ if (platform === "win32") {
58
+ platform = "windows";
59
+ extn = ".exe";
60
+ } else if (platform === "linux" && isMusl()) {
61
+ platform = "linuxmusl";
62
+ }
63
+
64
+ let arch = `${runtimeArch()}`;
65
+ if (arch === "x32") {
66
+ arch = "386";
67
+ } else if (arch === "x64") {
68
+ arch = "amd64";
69
+ pluginsBinSuffix = `-${platform}-amd64`;
70
+ } else if (arch === "arm64") {
71
+ pluginsBinSuffix = `-${platform}-arm64`;
72
+ } else if (arch === "ppc64") {
73
+ arch = "ppc64le";
74
+ pluginsBinSuffix = "-ppc64";
75
+ }
76
+
77
+ return {
78
+ arch,
79
+ extn,
80
+ platform,
81
+ pluginsBinSuffix,
82
+ };
83
+ }
84
+
85
+ /**
86
+ * Resolve cdxgen companion plugin directory candidates for npx-style layouts.
87
+ *
88
+ * npm's npx layout installs cdxgen and @cdxgen/cdxgen-plugins-bin as sibling
89
+ * packages under a shared node_modules root such as
90
+ * `~/.npm/_npx/<hash>/node_modules/`. Deno's npm cache keeps versioned package
91
+ * directories under a registry root such as
92
+ * `~/.cache/deno/npm/registry.npmjs.org/`. This helper derives both candidate
93
+ * plugin directories from `dirNameStr`.
94
+ *
95
+ * @param {string} dirNameStr The directory of the cdxgen package.
96
+ * @param {string} pluginVersion The version of cdxgen-plugins-bin.
97
+ * @param {{pluginsBinSuffix: string}} target The plugin target info.
98
+ * @returns {{extraNMBinPath: string|undefined, pluginsDir: string}[]}
99
+ */
100
+ function resolveNpxPluginsDirs(dirNameStr, pluginVersion, target) {
101
+ // Normalize Windows and POSIX separators before tokenizing the path.
102
+ const normalizedDirName = dirNameStr.replaceAll("\\", "/");
103
+ const parts = normalizedDirName.split("/");
104
+ const pluginsPackageName = `cdxgen-plugins-bin${target.pluginsBinSuffix}`;
105
+ /** @type {{extraNMBinPath: string|undefined, pluginsDir: string}[]} */
106
+ const candidates = [];
107
+
108
+ const nodeModulesIdx = parts.lastIndexOf("node_modules");
109
+ if (nodeModulesIdx !== -1) {
110
+ const nodeModulesRoot = parts.slice(0, nodeModulesIdx + 1).join("/");
111
+ candidates.push({
112
+ extraNMBinPath: join(nodeModulesRoot, ".bin"),
113
+ pluginsDir: join(
114
+ nodeModulesRoot,
115
+ "@cdxgen",
116
+ pluginsPackageName,
117
+ "plugins",
118
+ ),
119
+ });
120
+ }
121
+
122
+ const registryIdx = parts.lastIndexOf("registry.npmjs.org");
123
+ if (registryIdx !== -1) {
124
+ // Include the registry segment itself so the plugins directory resolves
125
+ // to `<registry-root>/registry.npmjs.org/@cdxgen/...`. The previous
126
+ // `slice(0, registryIdx)` dropped `registry.npmjs.org`, which broke plugin
127
+ // discovery for Deno installs (`deno add` / `deno run npm:`) whose cache
128
+ // nests versioned packages under `.../npm/registry.npmjs.org/`.
129
+ const registryRoot = parts.slice(0, registryIdx + 1).join("/");
130
+ candidates.push({
131
+ extraNMBinPath: undefined,
132
+ pluginsDir: join(
133
+ registryRoot,
134
+ "@cdxgen",
135
+ pluginsPackageName,
136
+ pluginVersion,
137
+ "plugins",
138
+ ),
139
+ });
140
+ }
141
+
142
+ return candidates;
143
+ }
144
+
145
+ /**
146
+ * Resolve the cdxgen companion plugins directory for the current runtime.
147
+ *
148
+ * @returns {{
149
+ * arch: string,
150
+ * extn: string,
151
+ * extraNMBinPath: string|undefined,
152
+ * platform: string,
153
+ * pluginManifestFile: string|undefined,
154
+ * pluginVersion: string|undefined,
155
+ * pluginsBinSuffix: string,
156
+ * pluginsDir: string,
157
+ * }}
158
+ */
159
+ export function resolveCdxgenPlugins() {
160
+ const target = getPluginsBinTarget();
161
+ const pluginVersion = retrieveCdxgenPluginVersion();
162
+ let pluginsDir = readEnvironmentVariable("CDXGEN_PLUGINS_DIR") || "";
163
+ let extraNMBinPath;
164
+
165
+ if (!pluginsDir && hasUsablePluginsDir(join(dirNameStr, "plugins"))) {
166
+ pluginsDir = join(dirNameStr, "plugins");
167
+ }
168
+
169
+ if (
170
+ !pluginsDir &&
171
+ hasUsablePluginsDir(
172
+ join(
173
+ dirNameStr,
174
+ "node_modules",
175
+ "@cdxgen",
176
+ `cdxgen-plugins-bin${target.pluginsBinSuffix}`,
177
+ "plugins",
178
+ ),
179
+ )
180
+ ) {
181
+ pluginsDir = join(
182
+ dirNameStr,
183
+ "node_modules",
184
+ "@cdxgen",
185
+ `cdxgen-plugins-bin${target.pluginsBinSuffix}`,
186
+ "plugins",
187
+ );
188
+ if (safeExistsSync(join(dirNameStr, "node_modules", ".bin"))) {
189
+ extraNMBinPath = join(dirNameStr, "node_modules", ".bin");
190
+ }
191
+ }
192
+
193
+ if (!pluginsDir) {
194
+ let globalNodePath =
195
+ readEnvironmentVariable("GLOBAL_NODE_MODULES_PATH") || undefined;
196
+ if (!globalNodePath) {
197
+ // Under Deno there is no global pnpm store to probe; spawning
198
+ // `pnpm root -g` only clutters debug output (the binary may not even be
199
+ // installed). The registry/npx fallbacks below cover the Deno cache.
200
+ if (isDeno) {
201
+ if (DEBUG_MODE) {
202
+ console.log(
203
+ 'Skipping "pnpm root -g" lookup under the Deno runtime; relying on the Deno npm cache layout instead.',
204
+ );
205
+ }
206
+ } else {
207
+ if (DEBUG_MODE) {
208
+ console.log(
209
+ 'Trying to find the global node_modules path with "pnpm root -g" command.',
210
+ );
211
+ }
212
+ const result = safeSpawnSync(
213
+ target.platform === "windows" ? "pnpm.cmd" : "pnpm",
214
+ ["root", "-g"],
215
+ );
216
+ if (result?.stdout) {
217
+ globalNodePath = `${result.stdout.trim()}/`;
218
+ }
219
+ }
220
+ }
221
+
222
+ let globalPlugins;
223
+ if (globalNodePath) {
224
+ globalPlugins = join(
225
+ globalNodePath,
226
+ "@cdxgen",
227
+ `cdxgen-plugins-bin${target.pluginsBinSuffix}`,
228
+ "plugins",
229
+ );
230
+ extraNMBinPath = join(
231
+ globalNodePath,
232
+ "..",
233
+ ".pnpm",
234
+ "node_modules",
235
+ ".bin",
236
+ );
237
+ }
238
+
239
+ let altGlobalPlugins;
240
+ if (
241
+ dirNameStr.includes(join("node_modules", ".pnpm", "@cyclonedx+cdxgen"))
242
+ ) {
243
+ const tmpA = dirNameStr.split(join("node_modules", ".pnpm"));
244
+ altGlobalPlugins = join(
245
+ tmpA[0],
246
+ "node_modules",
247
+ ".pnpm",
248
+ `@cdxgen+cdxgen-plugins-bin${target.pluginsBinSuffix}@${pluginVersion}`,
249
+ "node_modules",
250
+ "@cdxgen",
251
+ `cdxgen-plugins-bin${target.pluginsBinSuffix}`,
252
+ "plugins",
253
+ );
254
+ if (safeExistsSync(join(tmpA[0], "node_modules", ".bin"))) {
255
+ extraNMBinPath = join(tmpA[0], "node_modules", ".bin");
256
+ }
257
+ } else if (dirNameStr.includes(join(".pnpm", "@cyclonedx+cdxgen"))) {
258
+ const tmpA = dirNameStr.split(".pnpm");
259
+ altGlobalPlugins = join(
260
+ tmpA[0],
261
+ ".pnpm",
262
+ `@cdxgen+cdxgen-plugins-bin${target.pluginsBinSuffix}@${pluginVersion}`,
263
+ "node_modules",
264
+ "@cdxgen",
265
+ `cdxgen-plugins-bin${target.pluginsBinSuffix}`,
266
+ "plugins",
267
+ );
268
+ if (safeExistsSync(join(tmpA[0], ".bin"))) {
269
+ extraNMBinPath = join(tmpA[0], ".bin");
270
+ }
271
+ } else if (dirNameStr.includes(join("caxa", "applications"))) {
272
+ altGlobalPlugins = join(
273
+ dirNameStr,
274
+ "node_modules",
275
+ "pnpm",
276
+ `@cdxgen+cdxgen-plugins-bin${target.pluginsBinSuffix}@${pluginVersion}`,
277
+ "node_modules",
278
+ "@cdxgen",
279
+ `cdxgen-plugins-bin${target.pluginsBinSuffix}`,
280
+ "plugins",
281
+ );
282
+ extraNMBinPath = join(dirNameStr, "node_modules", ".bin");
283
+ }
284
+
285
+ // Fallback: npx cache layout (Deno/npm) where cdxgen lives alongside
286
+ // @cdxgen/cdxgen-plugins-bin under a shared registry root such as
287
+ // `~/.cache/deno/npm/registry.npmjs.org/`.
288
+ if (!pluginsDir) {
289
+ const npxPluginCandidates = resolveNpxPluginsDirs(
290
+ dirNameStr,
291
+ pluginVersion,
292
+ target,
293
+ );
294
+ for (const npxPluginCandidate of npxPluginCandidates) {
295
+ if (!hasUsablePluginsDir(npxPluginCandidate.pluginsDir)) {
296
+ continue;
297
+ }
298
+ pluginsDir = npxPluginCandidate.pluginsDir;
299
+ if (
300
+ npxPluginCandidate.extraNMBinPath &&
301
+ safeExistsSync(npxPluginCandidate.extraNMBinPath)
302
+ ) {
303
+ extraNMBinPath = npxPluginCandidate.extraNMBinPath;
304
+ }
305
+ if (DEBUG_MODE) {
306
+ console.log("Found npx plugins", pluginsDir);
307
+ }
308
+ break;
309
+ }
310
+ }
311
+
312
+ if (globalPlugins && safeExistsSync(globalPlugins)) {
313
+ pluginsDir = globalPlugins;
314
+ if (DEBUG_MODE) {
315
+ console.log("Found global plugins", pluginsDir);
316
+ }
317
+ } else if (altGlobalPlugins && safeExistsSync(altGlobalPlugins)) {
318
+ pluginsDir = altGlobalPlugins;
319
+ if (DEBUG_MODE) {
320
+ console.log("Found global plugins", pluginsDir);
321
+ }
322
+ }
323
+ }
324
+
325
+ if (!pluginsDir) {
326
+ // The plugins directory ships inside the platform-specific package
327
+ // (`@cdxgen/cdxgen-plugins-bin${pluginsBinSuffix}`), which is an optional
328
+ // dependency. cdxgen falls back to its JavaScript implementations for every
329
+ // plugin-backed feature, so an absent plugins directory is a supported
330
+ // install and must not be reported as an error.
331
+ if (DEBUG_MODE) {
332
+ console.log(
333
+ target.pluginsBinSuffix
334
+ ? `@cdxgen/cdxgen-plugins-bin${target.pluginsBinSuffix} was not found; using the JavaScript implementations instead.`
335
+ : `No cdxgen-plugins-bin package is published for ${target.platform}/${target.arch}; using the JavaScript implementations instead.`,
336
+ );
337
+ }
338
+ pluginsDir = "";
339
+ }
340
+
341
+ const pluginManifestFile = safeExistsSync(
342
+ join(pluginsDir, "plugins-manifest.json"),
343
+ )
344
+ ? join(pluginsDir, "plugins-manifest.json")
345
+ : undefined;
346
+
347
+ return {
348
+ ...target,
349
+ extraNMBinPath,
350
+ pluginManifestFile,
351
+ pluginVersion,
352
+ pluginsDir,
353
+ };
354
+ }
355
+
356
+ function getPluginRuntimeCacheKey() {
357
+ return [
358
+ readEnvironmentVariable("CDXGEN_PLUGINS_DIR") || "",
359
+ readEnvironmentVariable("GLOBAL_NODE_MODULES_PATH") || "",
360
+ ].join("\u0000");
361
+ }
362
+
363
+ let cachedPluginRuntime;
364
+ let cachedPluginRuntimeKey;
365
+
366
+ /**
367
+ * Retrieve the default plugin runtime, recomputing it only when the
368
+ * environment that influences plugin discovery changes.
369
+ *
370
+ * @returns {ReturnType<typeof resolveCdxgenPlugins>} The resolved plugin runtime.
371
+ */
372
+ export function getDefaultPluginRuntime() {
373
+ const cacheKey = getPluginRuntimeCacheKey();
374
+ if (!cachedPluginRuntime || cachedPluginRuntimeKey !== cacheKey) {
375
+ cachedPluginRuntime = resolveCdxgenPlugins();
376
+ cachedPluginRuntimeKey = cacheKey;
377
+ }
378
+ return cachedPluginRuntime;
379
+ }
380
+
381
+ /**
382
+ * Add the detected node_modules binary directory to PATH when present.
383
+ *
384
+ * @param {ReturnType<typeof resolveCdxgenPlugins>} [pluginRuntime] Detected plugin runtime.
385
+ * @returns {ReturnType<typeof resolveCdxgenPlugins>} The resolved plugin runtime.
386
+ */
387
+ export function setPluginsPathEnv(pluginRuntime = undefined) {
388
+ pluginRuntime ??= getDefaultPluginRuntime();
389
+ if (
390
+ pluginRuntime.extraNMBinPath &&
391
+ !readEnvironmentVariable("PATH")?.includes(pluginRuntime.extraNMBinPath)
392
+ ) {
393
+ process.env.PATH = `${pluginRuntime.extraNMBinPath}${delimiter}${process.env.PATH}`;
394
+ }
395
+ return pluginRuntime;
396
+ }
397
+
398
+ function resolveBundledPluginBinary(toolName, pluginRuntime) {
399
+ if (!pluginRuntime.pluginsDir) {
400
+ return undefined;
401
+ }
402
+ if (!safeExistsSync(join(pluginRuntime.pluginsDir, toolName))) {
403
+ return undefined;
404
+ }
405
+ switch (toolName) {
406
+ case "trivy":
407
+ return join(
408
+ pluginRuntime.pluginsDir,
409
+ "trivy",
410
+ `trivy-cdxgen-${pluginRuntime.platform}-${pluginRuntime.arch}${pluginRuntime.extn}`,
411
+ );
412
+ case "cargo-auditable":
413
+ return join(
414
+ pluginRuntime.pluginsDir,
415
+ "cargo-auditable",
416
+ `cargo-auditable-cdxgen-${pluginRuntime.platform}-${pluginRuntime.arch}${pluginRuntime.extn}`,
417
+ );
418
+ case "osquery": {
419
+ let osqueryBin = join(
420
+ pluginRuntime.pluginsDir,
421
+ "osquery",
422
+ `osqueryi-${pluginRuntime.platform}-${pluginRuntime.arch}${pluginRuntime.extn}`,
423
+ );
424
+ if (pluginRuntime.platform === "darwin") {
425
+ osqueryBin = `${osqueryBin}.app/Contents/MacOS/osqueryd`;
426
+ }
427
+ return osqueryBin;
428
+ }
429
+ case "dosai":
430
+ case "golem":
431
+ case "rusi":
432
+ case "cdxrs":
433
+ case "cdxui":
434
+ return join(
435
+ pluginRuntime.pluginsDir,
436
+ toolName,
437
+ `${toolName}-${pluginRuntime.platform}-${pluginRuntime.arch}${pluginRuntime.extn}`,
438
+ );
439
+ case "trustinspector":
440
+ return join(
441
+ pluginRuntime.pluginsDir,
442
+ "trustinspector",
443
+ `trustinspector-cdxgen-${pluginRuntime.platform}-${pluginRuntime.arch}${pluginRuntime.extn}`,
444
+ );
445
+ case "sourcekitten":
446
+ return join(pluginRuntime.pluginsDir, "sourcekitten", "sourcekitten");
447
+ default:
448
+ return undefined;
449
+ }
450
+ }
451
+
452
+ /**
453
+ * Resolve a known plugin binary path, honoring explicit environment overrides.
454
+ *
455
+ * @param {string} toolName Tool identifier.
456
+ * @param {ReturnType<typeof resolveCdxgenPlugins>} [pluginRuntime] Detected plugin runtime.
457
+ * @returns {string|undefined} Resolved binary path or configured override.
458
+ */
459
+ export function resolvePluginBinary(toolName, pluginRuntime = undefined) {
460
+ pluginRuntime ??= getDefaultPluginRuntime();
461
+ const envCommandName = PLUGIN_ENV_COMMAND_NAMES[toolName];
462
+ if (envCommandName && readEnvironmentVariable(envCommandName)) {
463
+ return readEnvironmentVariable(envCommandName);
464
+ }
465
+ return resolveBundledPluginBinary(toolName, pluginRuntime);
466
+ }
@@ -0,0 +1,231 @@
1
+ import { readFileSync } from "node:fs";
2
+
3
+ import {
4
+ bomStats,
5
+ convertBom,
6
+ createBom,
7
+ decodeBomBinary,
8
+ decodeBomJson,
9
+ encodeBomBinary,
10
+ encodeBomJson,
11
+ parseBomBinary,
12
+ parseBomJson,
13
+ supportedSpecVersions,
14
+ } from "@cdxgen/cdx-proto";
15
+
16
+ import { safeExistsSync, safeWriteSync } from "../core/fs.js";
17
+ import { toCycloneDxSpecVersionString } from "./bomUtils.js";
18
+
19
+ const JSON_READ_OPTIONS = {
20
+ ignoreUnknownFields: true,
21
+ };
22
+
23
+ const BINARY_READ_OPTIONS = {
24
+ readUnknownFields: true,
25
+ };
26
+
27
+ const BINARY_WRITE_OPTIONS = {
28
+ writeUnknownFields: true,
29
+ };
30
+
31
+ const PROTO_BOM_FILE_EXTENSIONS = [".cdx", ".cdx.bin", ".proto"];
32
+
33
+ const DEFAULT_SPEC_VERSION =
34
+ supportedSpecVersions[supportedSpecVersions.length - 1];
35
+ const PROTO_SUPPORTED_SPEC_VERSIONS = new Set(
36
+ supportedSpecVersions.map((specVersion) =>
37
+ toCycloneDxSpecVersionString(specVersion),
38
+ ),
39
+ );
40
+
41
+ const isProtoMessageBom = (bom) =>
42
+ Boolean(
43
+ bom &&
44
+ typeof bom === "object" &&
45
+ !Array.isArray(bom) &&
46
+ typeof bom.$typeName === "string" &&
47
+ bom.specVersion,
48
+ );
49
+
50
+ const hasExplicitSpecVersion = (bomJson) =>
51
+ Boolean(
52
+ bomJson &&
53
+ typeof bomJson === "object" &&
54
+ !Array.isArray(bomJson) &&
55
+ (bomJson.specVersion !== undefined || bomJson.spec_version !== undefined),
56
+ );
57
+
58
+ const resolveExplicitSpecVersion = (bomJson) =>
59
+ bomJson?.specVersion ?? bomJson?.spec_version;
60
+
61
+ const hasProvidedSpecVersion = (specVersion) =>
62
+ specVersion !== undefined &&
63
+ specVersion !== null &&
64
+ `${specVersion}`.trim() !== "";
65
+
66
+ /**
67
+ * Determine whether a spec version is supported for protobuf serialization.
68
+ *
69
+ * @param {string|undefined} specVersion CycloneDX spec version string
70
+ * @returns {boolean} `true` when supported by `@cdxgen/cdx-proto`, or when no spec version is provided
71
+ */
72
+ export const isProtoSupportedSpecVersion = (specVersion) => {
73
+ if (!hasProvidedSpecVersion(specVersion)) {
74
+ return true;
75
+ }
76
+ const normalizedSpecVersion = toCycloneDxSpecVersionString(specVersion);
77
+ return (
78
+ normalizedSpecVersion !== undefined &&
79
+ PROTO_SUPPORTED_SPEC_VERSIONS.has(normalizedSpecVersion)
80
+ );
81
+ };
82
+
83
+ /**
84
+ * Assert that a spec version is supported by `@cdxgen/cdx-proto`.
85
+ *
86
+ * Throws an `Error` naming the unsupported version and the operation when the
87
+ * spec version cannot be serialized to protobuf; returns without effect
88
+ * otherwise.
89
+ *
90
+ * @param {string|undefined} specVersion CycloneDX spec version string
91
+ * @param {string} [operation="protobuf operations"] Operation label used in the error message
92
+ */
93
+ export const assertProtoSupportedSpecVersion = (
94
+ specVersion,
95
+ operation = "protobuf operations",
96
+ ) => {
97
+ if (!hasProvidedSpecVersion(specVersion)) {
98
+ return;
99
+ }
100
+ const normalizedSpecVersion = toCycloneDxSpecVersionString(specVersion);
101
+ if (isProtoSupportedSpecVersion(specVersion)) {
102
+ return;
103
+ }
104
+ const displaySpecVersion = normalizedSpecVersion || `${specVersion}`.trim();
105
+ throw new Error(
106
+ `CycloneDX ${displaySpecVersion} is not currently supported for ${operation}. @cdxgen/cdx-proto supports ${supportedSpecVersions.join(", ")} only.`,
107
+ );
108
+ };
109
+
110
+ const resolveBomMessage = (bomJson, specVersion = DEFAULT_SPEC_VERSION) => {
111
+ if (isProtoMessageBom(bomJson)) {
112
+ return bomJson;
113
+ }
114
+ const parsedBomJson =
115
+ typeof bomJson === "string" || bomJson instanceof String
116
+ ? JSON.parse(`${bomJson}`)
117
+ : bomJson;
118
+ if (
119
+ parsedBomJson &&
120
+ typeof parsedBomJson === "object" &&
121
+ !Array.isArray(parsedBomJson)
122
+ ) {
123
+ if (hasExplicitSpecVersion(parsedBomJson)) {
124
+ assertProtoSupportedSpecVersion(
125
+ resolveExplicitSpecVersion(parsedBomJson),
126
+ "protobuf serialization",
127
+ );
128
+ return parseBomJson(parsedBomJson, JSON_READ_OPTIONS);
129
+ }
130
+ assertProtoSupportedSpecVersion(specVersion, "protobuf serialization");
131
+ return decodeBomJson(specVersion, parsedBomJson, JSON_READ_OPTIONS);
132
+ }
133
+ return createBom(specVersion);
134
+ };
135
+
136
+ /**
137
+ * Determine whether a path looks like a CycloneDX protobuf file.
138
+ *
139
+ * @param {string} filePath File path
140
+ * @returns {boolean} true when the path looks like a protobuf BOM file
141
+ */
142
+ export const isProtoBomFile = (filePath) => {
143
+ const normalizedPath = `${filePath || ""}`.toLowerCase();
144
+ return PROTO_BOM_FILE_EXTENSIONS.some((extension) =>
145
+ normalizedPath.endsWith(extension),
146
+ );
147
+ };
148
+
149
+ /**
150
+ * Method to convert the given bom json to proto binary
151
+ *
152
+ * @param {string | Object} bomJson BOM Json
153
+ * @param {string} binFile Binary file name
154
+ * @param {string | number} [specVersion] CycloneDX spec version fallback for BOMs without specVersion
155
+ */
156
+ export const writeBinary = (
157
+ bomJson,
158
+ binFile,
159
+ specVersion = DEFAULT_SPEC_VERSION,
160
+ ) => {
161
+ if (bomJson && binFile) {
162
+ const bomMessage = resolveBomMessage(bomJson, specVersion);
163
+ safeWriteSync(binFile, encodeBomBinary(bomMessage, BINARY_WRITE_OPTIONS));
164
+ }
165
+ };
166
+
167
+ /**
168
+ * Method to read a serialized binary
169
+ *
170
+ * @param {string} binFile Binary file name
171
+ * @param {boolean} asJson Convert to JSON
172
+ * @param {string | number} [specVersion] Optional specification version. When omitted, cdxgen auto-detects the matching schema.
173
+ */
174
+ export const readBinary = (binFile, asJson, specVersion) => {
175
+ asJson = asJson ?? true;
176
+ assertProtoSupportedSpecVersion(specVersion, "protobuf decoding");
177
+ if (!safeExistsSync(binFile)) {
178
+ return undefined;
179
+ }
180
+ const binaryData = readFileSync(binFile);
181
+ const bomObject =
182
+ specVersion !== undefined && specVersion !== null && specVersion !== ""
183
+ ? decodeBomBinary(specVersion, binaryData, BINARY_READ_OPTIONS)
184
+ : parseBomBinary(binaryData, BINARY_READ_OPTIONS);
185
+ if (asJson) {
186
+ return encodeBomJson(bomObject);
187
+ }
188
+ return bomObject;
189
+ };
190
+
191
+ /**
192
+ * Method to compute size and count statistics for a BOM.
193
+ *
194
+ * @param {string | Object} bomJson BOM Json, BOM Json string, or proto message
195
+ * @param {string | number} [specVersion] CycloneDX spec version fallback for BOMs without specVersion
196
+ * @returns {Object} Component and dependency counts with JSON/binary byte sizes and compression ratio
197
+ */
198
+ export const getBomStats = (bomJson, specVersion = DEFAULT_SPEC_VERSION) =>
199
+ bomStats(resolveBomMessage(bomJson, specVersion));
200
+
201
+ /**
202
+ * Method to cross-convert a BOM between CycloneDX specification versions using
203
+ * the protobuf schemas.
204
+ *
205
+ * Downgrades are lossy: fields that the target version does not define are
206
+ * dropped and reported in `warnings` as field paths.
207
+ *
208
+ * This is the raw `@cdxgen/cdx-proto` conversion. It reshapes nothing that the
209
+ * two schemas model with different cardinality, so a BOM crossing the 1.5/1.6
210
+ * `evidence.identity` boundary must be normalized first. Prefer
211
+ * `applySpecVersionCompatibility` from the postgen stage for that.
212
+ *
213
+ * @param {string | Object} bomJson BOM Json, BOM Json string, or proto message
214
+ * @param {string | number} targetSpecVersion Target CycloneDX spec version
215
+ * @param {string | number} [specVersion] CycloneDX spec version fallback for BOMs without specVersion
216
+ * @returns {{bomJson: Object, warnings: string[]}} Converted BOM Json and the field paths dropped
217
+ */
218
+ export const convertBomSpecVersion = (
219
+ bomJson,
220
+ targetSpecVersion,
221
+ specVersion = DEFAULT_SPEC_VERSION,
222
+ ) => {
223
+ assertProtoSupportedSpecVersion(targetSpecVersion, "protobuf conversion");
224
+ const normalizedTargetSpecVersion =
225
+ toCycloneDxSpecVersionString(targetSpecVersion) || `${targetSpecVersion}`;
226
+ const { bom, warnings } = convertBom(
227
+ resolveBomMessage(bomJson, specVersion),
228
+ normalizedTargetSpecVersion,
229
+ );
230
+ return { bomJson: encodeBomJson(bom), warnings };
231
+ };