@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.
- package/README.md +921 -87
- package/bin/audit.js +239 -0
- package/bin/cdxgen.js +2324 -0
- package/bin/convert.js +213 -0
- package/bin/evinse.js +353 -0
- package/bin/hbom.js +495 -0
- package/bin/repl.js +2224 -0
- package/bin/sign.js +195 -0
- package/bin/tracebom.js +295 -0
- package/bin/validate.js +268 -0
- package/bin/verify.js +189 -0
- package/data/README.md +307 -0
- package/data/bom-1.4.schema.json +1605 -0
- package/data/bom-1.5.schema.json +3660 -0
- package/data/bom-1.6.schema.json +5511 -0
- package/data/bom-1.7.schema.json +6700 -0
- package/data/cbomosdb-queries.json +68 -0
- package/data/component-tags.json +339 -0
- package/data/container-knowledge-index.json +125 -0
- package/data/cosdb-queries.json +17 -0
- package/data/crypto-oid.json +1998 -0
- package/data/cryptography-defs.json +3793 -0
- package/data/cryptography-defs.schema.json +576 -0
- package/data/cyclonedx-2.0-bundled.schema.json +7182 -0
- package/data/frameworks-list.json +219 -0
- package/data/glibc-stdlib.json +117 -0
- package/data/gtfobins-index.json +6296 -0
- package/data/helpers/init.gradle +71 -0
- package/data/jsf-0.82.schema.json +211 -0
- package/data/known-licenses.json +82 -0
- package/data/lic-mapping.json +338 -0
- package/data/license-aliases.json +6624 -0
- package/data/license-db.json +39059 -0
- package/data/license-deprecations.json +302 -0
- package/data/lolbas-index.json +150 -0
- package/data/predictive-audit-allowlist.json +11 -0
- package/data/pypi-pkg-aliases.json +1199 -0
- package/data/python-stdlib.json +308 -0
- package/data/queries-darwin.json +193 -0
- package/data/queries-win.json +257 -0
- package/data/queries.json +268 -0
- package/data/ruby-known-modules.json +281 -0
- package/data/rules/ai-agent-governance.yaml +323 -0
- package/data/rules/ai-bom.yaml +268 -0
- package/data/rules/ai-oversight.yaml +186 -0
- package/data/rules/ai-provenance.yaml +92 -0
- package/data/rules/asar-archives.yaml +150 -0
- package/data/rules/cbom-security.yaml +165 -0
- package/data/rules/chrome-extensions.yaml +248 -0
- package/data/rules/ci-permissions.yaml +802 -0
- package/data/rules/container-risk.yaml +353 -0
- package/data/rules/dependency-sources.yaml +236 -0
- package/data/rules/golem-go.yaml +229 -0
- package/data/rules/hbom-compliance.yaml +325 -0
- package/data/rules/hbom-performance.yaml +307 -0
- package/data/rules/hbom-security.yaml +248 -0
- package/data/rules/host-topology.yaml +165 -0
- package/data/rules/mcp-servers.yaml +388 -0
- package/data/rules/obom-runtime.yaml +1776 -0
- package/data/rules/package-integrity.yaml +364 -0
- package/data/rules/rootfs-hardening.yaml +179 -0
- package/data/rules/vscode-extensions.yaml +237 -0
- package/data/spdx-export.schema.json +6794 -0
- package/data/spdx-license-list.json +7449 -0
- package/data/spdx-licenses.json +759 -0
- package/data/spdx.schema.json +819 -0
- package/data/templates/README.md +3 -0
- package/data/templates/asvs-4.0.3.cdx.json +2943 -0
- package/data/templates/asvs-5.0.cdx.json +3046 -0
- package/data/templates/bsimm-v13.cdx.json +1008 -0
- package/data/templates/masvs-2.0.0.cdx.json +225 -0
- package/data/templates/nist-ssdf-1.1.cdx.json +828 -0
- package/data/templates/pcissc-secure-slc-1.1.cdx.json +1027 -0
- package/data/templates/scvs-1.0.0.cdx.json +813 -0
- package/data/templates/ssaf-DRAFT-2023-11.cdx.json +127 -0
- package/data/vendor-alias.json +41967 -0
- package/data/wrapdb-releases.json +4227 -0
- package/index.cjs +15 -0
- package/lib/audit/index.js +2800 -0
- package/lib/audit/progress.js +114 -0
- package/lib/audit/reporters.js +937 -0
- package/lib/audit/scoring.js +560 -0
- package/lib/audit/targets.js +798 -0
- package/lib/cli/bomAssembly.js +1833 -0
- package/lib/cli/cliOptions.js +513 -0
- package/lib/cli/index.js +2759 -0
- package/lib/cli/jsBom.js +2087 -0
- package/lib/cli/jvmBom.js +1858 -0
- package/lib/cli/managedBom.js +2083 -0
- package/lib/cli/nativeBom.js +2125 -0
- package/lib/core/activity.js +1087 -0
- package/lib/core/env.js +719 -0
- package/lib/core/fs.js +1058 -0
- package/lib/core/httpClient.js +730 -0
- package/lib/core/logger.js +142 -0
- package/lib/core/parallel.js +323 -0
- package/lib/core/paths.js +70 -0
- package/lib/core/projectConfig.js +122 -0
- package/lib/core/propertySanitizer.js +174 -0
- package/lib/core/spdx.js +5 -0
- package/lib/core/state.js +59 -0
- package/lib/core/text.js +207 -0
- package/lib/core/ui.js +876 -0
- package/lib/core/urls.js +84 -0
- package/lib/ecosystems/asarutils.js +1636 -0
- package/lib/ecosystems/bunutils.js +402 -0
- package/lib/ecosystems/caxa.js +77 -0
- package/lib/ecosystems/chromextutils.js +1174 -0
- package/lib/ecosystems/cmakeResolver.js +587 -0
- package/lib/ecosystems/cppEvidence.js +305 -0
- package/lib/ecosystems/denoutils.js +1094 -0
- package/lib/ecosystems/dotnetutils.js +132 -0
- package/lib/ecosystems/ecosystems.js +2772 -0
- package/lib/ecosystems/golem.js +1807 -0
- package/lib/ecosystems/gradleutils.js +1048 -0
- package/lib/ecosystems/jsEvidence.js +317 -0
- package/lib/ecosystems/npmutils.js +586 -0
- package/lib/ecosystems/parsers-bazel.js +875 -0
- package/lib/ecosystems/parsers-dotnet.js +1430 -0
- package/lib/ecosystems/parsers-gleam.js +302 -0
- package/lib/ecosystems/parsers-go.js +818 -0
- package/lib/ecosystems/parsers-js.js +4222 -0
- package/lib/ecosystems/parsers-jvm.js +948 -0
- package/lib/ecosystems/parsers-misc.js +3191 -0
- package/lib/ecosystems/parsers-python.js +2070 -0
- package/lib/ecosystems/parsers-rust.js +1294 -0
- package/lib/ecosystems/parsers-zig.js +861 -0
- package/lib/ecosystems/pep770.js +341 -0
- package/lib/ecosystems/pylockutils.js +427 -0
- package/lib/ecosystems/pythonutils.js +1281 -0
- package/lib/ecosystems/registryProvenance.js +1003 -0
- package/lib/ecosystems/remote/huggingface.js +1343 -0
- package/lib/ecosystems/rubyutils.js +1629 -0
- package/lib/ecosystems/rusi.js +820 -0
- package/lib/ecosystems/sbtutils.js +972 -0
- package/lib/ecosystems/tea.js +607 -0
- package/lib/ecosystems/utils.js +575 -0
- package/lib/ecosystems/zigResolver.js +410 -0
- package/lib/evinser/db.js +145 -0
- package/lib/evinser/evinser.js +2362 -0
- package/lib/evinser/scalasem.js +65 -0
- package/lib/evinser/swiftsem.js +767 -0
- package/lib/helpers/annotationFormatter.js +84 -0
- package/lib/helpers/bomSigner.js +312 -0
- package/lib/helpers/exportUtils.js +160 -0
- package/lib/helpers/remote/dependency-track.js +117 -0
- package/lib/helpers/versutils.js +202 -0
- package/lib/helpers/vsixutils.js +1069 -0
- package/lib/inventory/agentFormulationParser.js +322 -0
- package/lib/inventory/aiCollector.js +2140 -0
- package/lib/inventory/aiInventory.js +414 -0
- package/lib/inventory/aiModelVariants.js +121 -0
- package/lib/inventory/aiOversightCollector.js +661 -0
- package/lib/inventory/aiProvenanceCollector.js +822 -0
- package/lib/inventory/analyzer.js +6089 -0
- package/lib/inventory/analyzerScope.js +807 -0
- package/lib/inventory/astWorker.js +20 -0
- package/lib/inventory/atomUtils.js +1092 -0
- package/lib/inventory/auditCategories.js +192 -0
- package/lib/inventory/bomUtils.js +369 -0
- package/lib/inventory/cacheCommands.js +182 -0
- package/lib/inventory/cacheDir.js +104 -0
- package/lib/inventory/cbomutils.js +590 -0
- package/lib/inventory/cdxrs.js +434 -0
- package/lib/inventory/ciParsers/azurePipelines.js +295 -0
- package/lib/inventory/ciParsers/circleCi.js +286 -0
- package/lib/inventory/ciParsers/common.js +24 -0
- package/lib/inventory/ciParsers/githubActions.js +2434 -0
- package/lib/inventory/ciParsers/gitlabCi.js +213 -0
- package/lib/inventory/ciParsers/jenkins.js +180 -0
- package/lib/inventory/citations.js +234 -0
- package/lib/inventory/communityAiConfigParser.js +756 -0
- package/lib/inventory/containerRisk.js +204 -0
- package/lib/inventory/cryptoAlgorithmFamily.js +258 -0
- package/lib/inventory/deps.js +807 -0
- package/lib/inventory/depsUtils.js +588 -0
- package/lib/inventory/display.js +2128 -0
- package/lib/inventory/dosai.js +601 -0
- package/lib/inventory/dosaiParsers.js +154 -0
- package/lib/inventory/dynamic.js +145 -0
- package/lib/inventory/envcontext.js +1789 -0
- package/lib/inventory/evidenceUtils.js +774 -0
- package/lib/inventory/fetchBatch.js +779 -0
- package/lib/inventory/fetchRate.js +255 -0
- package/lib/inventory/forgeEnricher.js +300 -0
- package/lib/inventory/formulationParsers.js +422 -0
- package/lib/inventory/gtfobins.js +339 -0
- package/lib/inventory/hbom.js +719 -0
- package/lib/inventory/hbomAnalysis.js +310 -0
- package/lib/inventory/hbomLoader.js +35 -0
- package/lib/inventory/hostTopology.js +835 -0
- package/lib/inventory/inventoryStats.js +100 -0
- package/lib/inventory/jsonLike.js +121 -0
- package/lib/inventory/licenseEnhancer.js +918 -0
- package/lib/inventory/lolbas.js +285 -0
- package/lib/inventory/mcp.js +253 -0
- package/lib/inventory/mcpConfigParser.js +683 -0
- package/lib/inventory/mcpDiscovery.js +112 -0
- package/lib/inventory/mcpPinning.js +209 -0
- package/lib/inventory/osPackageResolver.js +493 -0
- package/lib/inventory/osinfo.js +277 -0
- package/lib/inventory/osqueryTransform.js +274 -0
- package/lib/inventory/plugins.js +466 -0
- package/lib/inventory/protobom.js +231 -0
- package/lib/inventory/protobomLoader.js +43 -0
- package/lib/inventory/provenanceUtils.js +224 -0
- package/lib/inventory/purl.js +749 -0
- package/lib/inventory/rustFormulationParser.js +339 -0
- package/lib/inventory/sbomDocument.js +340 -0
- package/lib/inventory/source.js +1488 -0
- package/lib/inventory/spdx.js +361 -0
- package/lib/inventory/spdxExpression.js +512 -0
- package/lib/inventory/spdxUtils.js +107 -0
- package/lib/inventory/table.js +263 -0
- package/lib/inventory/traceRunner.js +439 -0
- package/lib/inventory/unicodeScan.js +147 -0
- package/lib/managers/binary.js +3307 -0
- package/lib/managers/containerutils.js +125 -0
- package/lib/managers/docker.js +2145 -0
- package/lib/managers/dockerConnection.js +162 -0
- package/lib/managers/oci.js +704 -0
- package/lib/managers/piptree.js +267 -0
- package/lib/parsers/cmakeCache.js +199 -0
- package/lib/parsers/gguf.js +492 -0
- package/lib/parsers/gitAiNotes.js +233 -0
- package/lib/parsers/gitmodules.js +239 -0
- package/lib/parsers/htmlExtract.js +610 -0
- package/lib/parsers/huggingfaceManifest.js +551 -0
- package/lib/parsers/huggingfaceUtils.js +506 -0
- package/lib/parsers/iri.js +618 -0
- package/lib/parsers/npmrc.js +99 -0
- package/lib/parsers/ollama.js +101 -0
- package/lib/parsers/xml.js +841 -0
- package/lib/server/openapi.yaml +433 -0
- package/lib/server/server.js +616 -0
- package/lib/stages/postgen/annotator.js +977 -0
- package/lib/stages/postgen/auditBom.js +468 -0
- package/lib/stages/postgen/postgen.js +1239 -0
- package/lib/stages/postgen/ruleEngine.js +731 -0
- package/lib/stages/postgen/sortBom.js +195 -0
- package/lib/stages/postgen/spdxConverter.js +796 -0
- package/lib/stages/postgen/specVersionCompat.js +703 -0
- package/lib/stages/pregen/envAudit.js +388 -0
- package/lib/stages/pregen/pregen.js +637 -0
- package/lib/third-party/README.md +9 -0
- package/lib/third-party/arborist/CHANGELOG.md +1109 -0
- package/lib/third-party/arborist/LICENSE.md +20 -0
- package/lib/third-party/arborist/README.md +315 -0
- package/lib/third-party/arborist/lib/arborist/index.js +258 -0
- package/lib/third-party/arborist/lib/arborist/load-actual.js +605 -0
- package/lib/third-party/arborist/lib/arborist/load-virtual.js +300 -0
- package/lib/third-party/arborist/lib/bin-links.js +120 -0
- package/lib/third-party/arborist/lib/calc-dep-flags.js +130 -0
- package/lib/third-party/arborist/lib/case-insensitive-map.js +51 -0
- package/lib/third-party/arborist/lib/consistent-resolve.js +42 -0
- package/lib/third-party/arborist/lib/debug.js +50 -0
- package/lib/third-party/arborist/lib/dep-valid.js +190 -0
- package/lib/third-party/arborist/lib/edge.js +417 -0
- package/lib/third-party/arborist/lib/from-path.js +36 -0
- package/lib/third-party/arborist/lib/gather-dep-set.js +43 -0
- package/lib/third-party/arborist/lib/index.js +22 -0
- package/lib/third-party/arborist/lib/inventory.js +138 -0
- package/lib/third-party/arborist/lib/link.js +169 -0
- package/lib/third-party/arborist/lib/node.js +1673 -0
- package/lib/third-party/arborist/lib/npm-extension.js +45 -0
- package/lib/third-party/arborist/lib/override-resolves.js +11 -0
- package/lib/third-party/arborist/lib/override-set.js +319 -0
- package/lib/third-party/arborist/lib/package-extensions.js +289 -0
- package/lib/third-party/arborist/lib/printable.js +210 -0
- package/lib/third-party/arborist/lib/proc-log.js +30 -0
- package/lib/third-party/arborist/lib/realpath.js +100 -0
- package/lib/third-party/arborist/lib/relpath.js +4 -0
- package/lib/third-party/arborist/lib/shrinkwrap.js +1291 -0
- package/lib/third-party/arborist/lib/spec-from-lock.js +34 -0
- package/lib/third-party/arborist/lib/tree-check.js +165 -0
- package/lib/third-party/arborist/lib/validate-npm-package-name.js +107 -0
- package/lib/third-party/arborist/lib/version-from-tgz.js +51 -0
- package/lib/third-party/arborist/lib/yarn-lock.js +397 -0
- package/lib/validator/bomValidator.js +985 -0
- package/lib/validator/complianceEngine.js +241 -0
- package/lib/validator/complianceRules.js +1680 -0
- package/lib/validator/generated/runtime.mjs +17 -0
- package/lib/validator/generated/validate-1.6.mjs +21258 -0
- package/lib/validator/generated/validate-1.7.mjs +24803 -0
- package/lib/validator/generated/validate-2.0.mjs +22931 -0
- package/lib/validator/index.js +246 -0
- package/lib/validator/reporters/annotations.js +142 -0
- package/lib/validator/reporters/console.js +160 -0
- package/lib/validator/reporters/index.js +41 -0
- package/lib/validator/reporters/json.js +37 -0
- package/lib/validator/reporters/sarif.js +184 -0
- package/package.json +209 -26
- package/types/bin/audit.d.ts +3 -0
- package/types/bin/audit.d.ts.map +1 -0
- package/types/bin/cdxgen.d.ts +3 -0
- package/types/bin/cdxgen.d.ts.map +1 -0
- package/types/bin/convert.d.ts +3 -0
- package/types/bin/convert.d.ts.map +1 -0
- package/types/bin/evinse.d.ts +3 -0
- package/types/bin/evinse.d.ts.map +1 -0
- package/types/bin/hbom.d.ts +3 -0
- package/types/bin/hbom.d.ts.map +1 -0
- package/types/bin/repl.d.ts +3 -0
- package/types/bin/repl.d.ts.map +1 -0
- package/types/bin/sign.d.ts +3 -0
- package/types/bin/sign.d.ts.map +1 -0
- package/types/bin/tracebom.d.ts +3 -0
- package/types/bin/tracebom.d.ts.map +1 -0
- package/types/bin/validate.d.ts +14 -0
- package/types/bin/validate.d.ts.map +1 -0
- package/types/bin/verify.d.ts +3 -0
- package/types/bin/verify.d.ts.map +1 -0
- package/types/lib/audit/index.d.ts +153 -0
- package/types/lib/audit/index.d.ts.map +1 -0
- package/types/lib/audit/progress.d.ts +31 -0
- package/types/lib/audit/progress.d.ts.map +1 -0
- package/types/lib/audit/reporters.d.ts +62 -0
- package/types/lib/audit/reporters.d.ts.map +1 -0
- package/types/lib/audit/scoring.d.ts +36 -0
- package/types/lib/audit/scoring.d.ts.map +1 -0
- package/types/lib/audit/targets.d.ts +77 -0
- package/types/lib/audit/targets.d.ts.map +1 -0
- package/types/lib/cli/bomAssembly.d.ts +315 -0
- package/types/lib/cli/bomAssembly.d.ts.map +1 -0
- package/types/lib/cli/cliOptions.d.ts +156 -0
- package/types/lib/cli/cliOptions.d.ts.map +1 -0
- package/types/lib/cli/index.d.ts +107 -0
- package/types/lib/cli/index.d.ts.map +1 -0
- package/types/lib/cli/jsBom.d.ts +94 -0
- package/types/lib/cli/jsBom.d.ts.map +1 -0
- package/types/lib/cli/jvmBom.d.ts +54 -0
- package/types/lib/cli/jvmBom.d.ts.map +1 -0
- package/types/lib/cli/managedBom.d.ts +105 -0
- package/types/lib/cli/managedBom.d.ts.map +1 -0
- package/types/lib/cli/nativeBom.d.ts +143 -0
- package/types/lib/cli/nativeBom.d.ts.map +1 -0
- package/types/lib/core/activity.d.ts +178 -0
- package/types/lib/core/activity.d.ts.map +1 -0
- package/types/lib/core/env.d.ts +192 -0
- package/types/lib/core/env.d.ts.map +1 -0
- package/types/lib/core/fs.d.ts +158 -0
- package/types/lib/core/fs.d.ts.map +1 -0
- package/types/lib/core/httpClient.d.ts +149 -0
- package/types/lib/core/httpClient.d.ts.map +1 -0
- package/types/lib/core/logger.d.ts +28 -0
- package/types/lib/core/logger.d.ts.map +1 -0
- package/types/lib/core/parallel.d.ts +95 -0
- package/types/lib/core/parallel.d.ts.map +1 -0
- package/types/lib/core/paths.d.ts +36 -0
- package/types/lib/core/paths.d.ts.map +1 -0
- package/types/lib/core/projectConfig.d.ts +23 -0
- package/types/lib/core/projectConfig.d.ts.map +1 -0
- package/types/lib/core/propertySanitizer.d.ts +23 -0
- package/types/lib/core/propertySanitizer.d.ts.map +1 -0
- package/types/lib/core/spdx.d.ts +5 -0
- package/types/lib/core/spdx.d.ts.map +1 -0
- package/types/lib/core/state.d.ts +20 -0
- package/types/lib/core/state.d.ts.map +1 -0
- package/types/lib/core/text.d.ts +78 -0
- package/types/lib/core/text.d.ts.map +1 -0
- package/types/lib/core/ui.d.ts +87 -0
- package/types/lib/core/ui.d.ts.map +1 -0
- package/types/lib/core/urls.d.ts +43 -0
- package/types/lib/core/urls.d.ts.map +1 -0
- package/types/lib/ecosystems/asarutils.d.ts +71 -0
- package/types/lib/ecosystems/asarutils.d.ts.map +1 -0
- package/types/lib/ecosystems/bunutils.d.ts +38 -0
- package/types/lib/ecosystems/bunutils.d.ts.map +1 -0
- package/types/lib/ecosystems/caxa.d.ts +8 -0
- package/types/lib/ecosystems/caxa.d.ts.map +1 -0
- package/types/lib/ecosystems/chromextutils.d.ts +97 -0
- package/types/lib/ecosystems/chromextutils.d.ts.map +1 -0
- package/types/lib/ecosystems/cmakeResolver.d.ts +176 -0
- package/types/lib/ecosystems/cmakeResolver.d.ts.map +1 -0
- package/types/lib/ecosystems/cppEvidence.d.ts +35 -0
- package/types/lib/ecosystems/cppEvidence.d.ts.map +1 -0
- package/types/lib/ecosystems/denoutils.d.ts +76 -0
- package/types/lib/ecosystems/denoutils.d.ts.map +1 -0
- package/types/lib/ecosystems/dotnetutils.d.ts +45 -0
- package/types/lib/ecosystems/dotnetutils.d.ts.map +1 -0
- package/types/lib/ecosystems/ecosystems.d.ts +279 -0
- package/types/lib/ecosystems/ecosystems.d.ts.map +1 -0
- package/types/lib/ecosystems/golem.d.ts +60 -0
- package/types/lib/ecosystems/golem.d.ts.map +1 -0
- package/types/lib/ecosystems/gradleutils.d.ts +139 -0
- package/types/lib/ecosystems/gradleutils.d.ts.map +1 -0
- package/types/lib/ecosystems/jsEvidence.d.ts +17 -0
- package/types/lib/ecosystems/jsEvidence.d.ts.map +1 -0
- package/types/lib/ecosystems/npmutils.d.ts +183 -0
- package/types/lib/ecosystems/npmutils.d.ts.map +1 -0
- package/types/lib/ecosystems/parsers-bazel.d.ts +36 -0
- package/types/lib/ecosystems/parsers-bazel.d.ts.map +1 -0
- package/types/lib/ecosystems/parsers-dotnet.d.ts +116 -0
- package/types/lib/ecosystems/parsers-dotnet.d.ts.map +1 -0
- package/types/lib/ecosystems/parsers-gleam.d.ts +33 -0
- package/types/lib/ecosystems/parsers-gleam.d.ts.map +1 -0
- package/types/lib/ecosystems/parsers-go.d.ts +92 -0
- package/types/lib/ecosystems/parsers-go.d.ts.map +1 -0
- package/types/lib/ecosystems/parsers-js.d.ts +242 -0
- package/types/lib/ecosystems/parsers-js.d.ts.map +1 -0
- package/types/lib/ecosystems/parsers-jvm.d.ts +100 -0
- package/types/lib/ecosystems/parsers-jvm.d.ts.map +1 -0
- package/types/lib/ecosystems/parsers-misc.d.ts +450 -0
- package/types/lib/ecosystems/parsers-misc.d.ts.map +1 -0
- package/types/lib/ecosystems/parsers-python.d.ts +145 -0
- package/types/lib/ecosystems/parsers-python.d.ts.map +1 -0
- package/types/lib/ecosystems/parsers-rust.d.ts +56 -0
- package/types/lib/ecosystems/parsers-rust.d.ts.map +1 -0
- package/types/lib/ecosystems/parsers-zig.d.ts +83 -0
- package/types/lib/ecosystems/parsers-zig.d.ts.map +1 -0
- package/types/lib/ecosystems/pep770.d.ts +38 -0
- package/types/lib/ecosystems/pep770.d.ts.map +1 -0
- package/types/lib/ecosystems/pylockutils.d.ts +68 -0
- package/types/lib/ecosystems/pylockutils.d.ts.map +1 -0
- package/types/lib/ecosystems/pythonutils.d.ts +70 -0
- package/types/lib/ecosystems/pythonutils.d.ts.map +1 -0
- package/types/lib/ecosystems/registryProvenance.d.ts +26 -0
- package/types/lib/ecosystems/registryProvenance.d.ts.map +1 -0
- package/types/lib/ecosystems/remote/huggingface.d.ts +31 -0
- package/types/lib/ecosystems/remote/huggingface.d.ts.map +1 -0
- package/types/lib/ecosystems/rubyutils.d.ts +182 -0
- package/types/lib/ecosystems/rubyutils.d.ts.map +1 -0
- package/types/lib/ecosystems/rusi.d.ts +40 -0
- package/types/lib/ecosystems/rusi.d.ts.map +1 -0
- package/types/lib/ecosystems/sbtutils.d.ts +179 -0
- package/types/lib/ecosystems/sbtutils.d.ts.map +1 -0
- package/types/lib/ecosystems/tea.d.ts +180 -0
- package/types/lib/ecosystems/tea.d.ts.map +1 -0
- package/types/lib/ecosystems/utils.d.ts +41 -0
- package/types/lib/ecosystems/utils.d.ts.map +1 -0
- package/types/lib/ecosystems/zigResolver.d.ts +70 -0
- package/types/lib/ecosystems/zigResolver.d.ts.map +1 -0
- package/types/lib/evinser/db.d.ts +17 -0
- package/types/lib/evinser/db.d.ts.map +1 -0
- package/types/lib/evinser/evinser.d.ts +354 -0
- package/types/lib/evinser/evinser.d.ts.map +1 -0
- package/types/lib/evinser/scalasem.d.ts +15 -0
- package/types/lib/evinser/scalasem.d.ts.map +1 -0
- package/types/lib/evinser/swiftsem.d.ts +103 -0
- package/types/lib/evinser/swiftsem.d.ts.map +1 -0
- package/types/lib/helpers/annotationFormatter.d.ts +23 -0
- package/types/lib/helpers/annotationFormatter.d.ts.map +1 -0
- package/types/lib/helpers/bomSigner.d.ts +28 -0
- package/types/lib/helpers/bomSigner.d.ts.map +1 -0
- package/types/lib/helpers/exportUtils.d.ts +52 -0
- package/types/lib/helpers/exportUtils.d.ts.map +1 -0
- package/types/lib/helpers/remote/dependency-track.d.ts +23 -0
- package/types/lib/helpers/remote/dependency-track.d.ts.map +1 -0
- package/types/lib/helpers/versutils.d.ts +8 -0
- package/types/lib/helpers/versutils.d.ts.map +1 -0
- package/types/lib/helpers/vsixutils.d.ts +130 -0
- package/types/lib/helpers/vsixutils.d.ts.map +1 -0
- package/types/lib/inventory/agentFormulationParser.d.ts +21 -0
- package/types/lib/inventory/agentFormulationParser.d.ts.map +1 -0
- package/types/lib/inventory/aiCollector.d.ts +61 -0
- package/types/lib/inventory/aiCollector.d.ts.map +1 -0
- package/types/lib/inventory/aiInventory.d.ts +103 -0
- package/types/lib/inventory/aiInventory.d.ts.map +1 -0
- package/types/lib/inventory/aiModelVariants.d.ts +31 -0
- package/types/lib/inventory/aiModelVariants.d.ts.map +1 -0
- package/types/lib/inventory/aiOversightCollector.d.ts +28 -0
- package/types/lib/inventory/aiOversightCollector.d.ts.map +1 -0
- package/types/lib/inventory/aiProvenanceCollector.d.ts +13 -0
- package/types/lib/inventory/aiProvenanceCollector.d.ts.map +1 -0
- package/types/lib/inventory/analyzer.d.ts +157 -0
- package/types/lib/inventory/analyzer.d.ts.map +1 -0
- package/types/lib/inventory/analyzerScope.d.ts +106 -0
- package/types/lib/inventory/analyzerScope.d.ts.map +1 -0
- package/types/lib/inventory/astWorker.d.ts +9 -0
- package/types/lib/inventory/astWorker.d.ts.map +1 -0
- package/types/lib/inventory/atomUtils.d.ts +159 -0
- package/types/lib/inventory/atomUtils.d.ts.map +1 -0
- package/types/lib/inventory/auditCategories.d.ts +80 -0
- package/types/lib/inventory/auditCategories.d.ts.map +1 -0
- package/types/lib/inventory/bomUtils.d.ts +145 -0
- package/types/lib/inventory/bomUtils.d.ts.map +1 -0
- package/types/lib/inventory/cacheCommands.d.ts +28 -0
- package/types/lib/inventory/cacheCommands.d.ts.map +1 -0
- package/types/lib/inventory/cacheDir.d.ts +55 -0
- package/types/lib/inventory/cacheDir.d.ts.map +1 -0
- package/types/lib/inventory/cbomutils.d.ts +37 -0
- package/types/lib/inventory/cbomutils.d.ts.map +1 -0
- package/types/lib/inventory/cdxrs.d.ts +90 -0
- package/types/lib/inventory/cdxrs.d.ts.map +1 -0
- package/types/lib/inventory/ciParsers/azurePipelines.d.ts +27 -0
- package/types/lib/inventory/ciParsers/azurePipelines.d.ts.map +1 -0
- package/types/lib/inventory/ciParsers/circleCi.d.ts +27 -0
- package/types/lib/inventory/ciParsers/circleCi.d.ts.map +1 -0
- package/types/lib/inventory/ciParsers/common.d.ts +11 -0
- package/types/lib/inventory/ciParsers/common.d.ts.map +1 -0
- package/types/lib/inventory/ciParsers/githubActions.d.ts +38 -0
- package/types/lib/inventory/ciParsers/githubActions.d.ts.map +1 -0
- package/types/lib/inventory/ciParsers/gitlabCi.d.ts +26 -0
- package/types/lib/inventory/ciParsers/gitlabCi.d.ts.map +1 -0
- package/types/lib/inventory/ciParsers/jenkins.d.ts +26 -0
- package/types/lib/inventory/ciParsers/jenkins.d.ts.map +1 -0
- package/types/lib/inventory/citations.d.ts +90 -0
- package/types/lib/inventory/citations.d.ts.map +1 -0
- package/types/lib/inventory/communityAiConfigParser.d.ts +14 -0
- package/types/lib/inventory/communityAiConfigParser.d.ts.map +1 -0
- package/types/lib/inventory/containerRisk.d.ts +20 -0
- package/types/lib/inventory/containerRisk.d.ts.map +1 -0
- package/types/lib/inventory/cryptoAlgorithmFamily.d.ts +37 -0
- package/types/lib/inventory/cryptoAlgorithmFamily.d.ts.map +1 -0
- package/types/lib/inventory/deps.d.ts +140 -0
- package/types/lib/inventory/deps.d.ts.map +1 -0
- package/types/lib/inventory/depsUtils.d.ts +74 -0
- package/types/lib/inventory/depsUtils.d.ts.map +1 -0
- package/types/lib/inventory/display.d.ts +227 -0
- package/types/lib/inventory/display.d.ts.map +1 -0
- package/types/lib/inventory/dosai.d.ts +130 -0
- package/types/lib/inventory/dosai.d.ts.map +1 -0
- package/types/lib/inventory/dosaiParsers.d.ts +59 -0
- package/types/lib/inventory/dosaiParsers.d.ts.map +1 -0
- package/types/lib/inventory/dynamic.d.ts +25 -0
- package/types/lib/inventory/dynamic.d.ts.map +1 -0
- package/types/lib/inventory/envcontext.d.ts +377 -0
- package/types/lib/inventory/envcontext.d.ts.map +1 -0
- package/types/lib/inventory/evidenceUtils.d.ts +74 -0
- package/types/lib/inventory/evidenceUtils.d.ts.map +1 -0
- package/types/lib/inventory/fetchBatch.d.ts +127 -0
- package/types/lib/inventory/fetchBatch.d.ts.map +1 -0
- package/types/lib/inventory/fetchRate.d.ts +118 -0
- package/types/lib/inventory/fetchRate.d.ts.map +1 -0
- package/types/lib/inventory/forgeEnricher.d.ts +31 -0
- package/types/lib/inventory/forgeEnricher.d.ts.map +1 -0
- package/types/lib/inventory/formulationParsers.d.ts +50 -0
- package/types/lib/inventory/formulationParsers.d.ts.map +1 -0
- package/types/lib/inventory/gtfobins.d.ts +27 -0
- package/types/lib/inventory/gtfobins.d.ts.map +1 -0
- package/types/lib/inventory/hbom.d.ts +58 -0
- package/types/lib/inventory/hbom.d.ts.map +1 -0
- package/types/lib/inventory/hbomAnalysis.d.ts +56 -0
- package/types/lib/inventory/hbomAnalysis.d.ts.map +1 -0
- package/types/lib/inventory/hbomLoader.d.ts +7 -0
- package/types/lib/inventory/hbomLoader.d.ts.map +1 -0
- package/types/lib/inventory/hostTopology.d.ts +47 -0
- package/types/lib/inventory/hostTopology.d.ts.map +1 -0
- package/types/lib/inventory/inventoryStats.d.ts +42 -0
- package/types/lib/inventory/inventoryStats.d.ts.map +1 -0
- package/types/lib/inventory/jsonLike.d.ts +23 -0
- package/types/lib/inventory/jsonLike.d.ts.map +1 -0
- package/types/lib/inventory/licenseEnhancer.d.ts +70 -0
- package/types/lib/inventory/licenseEnhancer.d.ts.map +1 -0
- package/types/lib/inventory/lolbas.d.ts +16 -0
- package/types/lib/inventory/lolbas.d.ts.map +1 -0
- package/types/lib/inventory/mcp.d.ts +29 -0
- package/types/lib/inventory/mcp.d.ts.map +1 -0
- package/types/lib/inventory/mcpConfigParser.d.ts +20 -0
- package/types/lib/inventory/mcpConfigParser.d.ts.map +1 -0
- package/types/lib/inventory/mcpDiscovery.d.ts +33 -0
- package/types/lib/inventory/mcpDiscovery.d.ts.map +1 -0
- package/types/lib/inventory/mcpPinning.d.ts +11 -0
- package/types/lib/inventory/mcpPinning.d.ts.map +1 -0
- package/types/lib/inventory/osPackageResolver.d.ts +49 -0
- package/types/lib/inventory/osPackageResolver.d.ts.map +1 -0
- package/types/lib/inventory/osinfo.d.ts +120 -0
- package/types/lib/inventory/osinfo.d.ts.map +1 -0
- package/types/lib/inventory/osqueryTransform.d.ts +84 -0
- package/types/lib/inventory/osqueryTransform.d.ts.map +1 -0
- package/types/lib/inventory/plugins.d.ts +58 -0
- package/types/lib/inventory/plugins.d.ts.map +1 -0
- package/types/lib/inventory/protobom.d.ts +71 -0
- package/types/lib/inventory/protobom.d.ts.map +1 -0
- package/types/lib/inventory/protobomLoader.d.ts +17 -0
- package/types/lib/inventory/protobomLoader.d.ts.map +1 -0
- package/types/lib/inventory/provenanceUtils.d.ts +98 -0
- package/types/lib/inventory/provenanceUtils.d.ts.map +1 -0
- package/types/lib/inventory/purl.d.ts +313 -0
- package/types/lib/inventory/purl.d.ts.map +1 -0
- package/types/lib/inventory/rustFormulationParser.d.ts +17 -0
- package/types/lib/inventory/rustFormulationParser.d.ts.map +1 -0
- package/types/lib/inventory/sbomDocument.d.ts +59 -0
- package/types/lib/inventory/sbomDocument.d.ts.map +1 -0
- package/types/lib/inventory/source.d.ts +163 -0
- package/types/lib/inventory/source.d.ts.map +1 -0
- package/types/lib/inventory/spdx.d.ts +66 -0
- package/types/lib/inventory/spdx.d.ts.map +1 -0
- package/types/lib/inventory/spdxExpression.d.ts +58 -0
- package/types/lib/inventory/spdxExpression.d.ts.map +1 -0
- package/types/lib/inventory/spdxUtils.d.ts +12 -0
- package/types/lib/inventory/spdxUtils.d.ts.map +1 -0
- package/types/lib/inventory/table.d.ts +19 -0
- package/types/lib/inventory/table.d.ts.map +1 -0
- package/types/lib/inventory/traceRunner.d.ts +80 -0
- package/types/lib/inventory/traceRunner.d.ts.map +1 -0
- package/types/lib/inventory/unicodeScan.d.ts +46 -0
- package/types/lib/inventory/unicodeScan.d.ts.map +1 -0
- package/types/lib/managers/binary.d.ts +76 -0
- package/types/lib/managers/binary.d.ts.map +1 -0
- package/types/lib/managers/containerutils.d.ts +30 -0
- package/types/lib/managers/containerutils.d.ts.map +1 -0
- package/types/lib/managers/docker.d.ts +157 -0
- package/types/lib/managers/docker.d.ts.map +1 -0
- package/types/lib/managers/dockerConnection.d.ts +42 -0
- package/types/lib/managers/dockerConnection.d.ts.map +1 -0
- package/types/lib/managers/oci.d.ts +21 -0
- package/types/lib/managers/oci.d.ts.map +1 -0
- package/types/lib/managers/piptree.d.ts +13 -0
- package/types/lib/managers/piptree.d.ts.map +1 -0
- package/types/lib/parsers/cmakeCache.d.ts +70 -0
- package/types/lib/parsers/cmakeCache.d.ts.map +1 -0
- package/types/lib/parsers/gguf.d.ts +39 -0
- package/types/lib/parsers/gguf.d.ts.map +1 -0
- package/types/lib/parsers/gitAiNotes.d.ts +15 -0
- package/types/lib/parsers/gitAiNotes.d.ts.map +1 -0
- package/types/lib/parsers/gitmodules.d.ts +88 -0
- package/types/lib/parsers/gitmodules.d.ts.map +1 -0
- package/types/lib/parsers/htmlExtract.d.ts +34 -0
- package/types/lib/parsers/htmlExtract.d.ts.map +1 -0
- package/types/lib/parsers/huggingfaceManifest.d.ts +153 -0
- package/types/lib/parsers/huggingfaceManifest.d.ts.map +1 -0
- package/types/lib/parsers/huggingfaceUtils.d.ts +155 -0
- package/types/lib/parsers/huggingfaceUtils.d.ts.map +1 -0
- package/types/lib/parsers/iri.d.ts +68 -0
- package/types/lib/parsers/iri.d.ts.map +1 -0
- package/types/lib/parsers/npmrc.d.ts +33 -0
- package/types/lib/parsers/npmrc.d.ts.map +1 -0
- package/types/lib/parsers/ollama.d.ts +22 -0
- package/types/lib/parsers/ollama.d.ts.map +1 -0
- package/types/lib/parsers/xml.d.ts +47 -0
- package/types/lib/parsers/xml.d.ts.map +1 -0
- package/types/lib/server/server.d.ts +51 -0
- package/types/lib/server/server.d.ts.map +1 -0
- package/types/lib/stages/postgen/annotator.d.ts +36 -0
- package/types/lib/stages/postgen/annotator.d.ts.map +1 -0
- package/types/lib/stages/postgen/auditBom.d.ts +92 -0
- package/types/lib/stages/postgen/auditBom.d.ts.map +1 -0
- package/types/lib/stages/postgen/postgen.d.ts +59 -0
- package/types/lib/stages/postgen/postgen.d.ts.map +1 -0
- package/types/lib/stages/postgen/ruleEngine.d.ts +18 -0
- package/types/lib/stages/postgen/ruleEngine.d.ts.map +1 -0
- package/types/lib/stages/postgen/sortBom.d.ts +34 -0
- package/types/lib/stages/postgen/sortBom.d.ts.map +1 -0
- package/types/lib/stages/postgen/spdxConverter.d.ts +11 -0
- package/types/lib/stages/postgen/spdxConverter.d.ts.map +1 -0
- package/types/lib/stages/postgen/specVersionCompat.d.ts +71 -0
- package/types/lib/stages/postgen/specVersionCompat.d.ts.map +1 -0
- package/types/lib/stages/pregen/envAudit.d.ts +14 -0
- package/types/lib/stages/pregen/envAudit.d.ts.map +1 -0
- package/types/lib/stages/pregen/pregen.d.ts +59 -0
- package/types/lib/stages/pregen/pregen.d.ts.map +1 -0
- package/types/lib/third-party/arborist/lib/arborist/index.d.ts +47 -0
- package/types/lib/third-party/arborist/lib/arborist/index.d.ts.map +1 -0
- package/types/lib/third-party/arborist/lib/arborist/load-actual.d.ts +4 -0
- package/types/lib/third-party/arborist/lib/arborist/load-actual.d.ts.map +1 -0
- package/types/lib/third-party/arborist/lib/arborist/load-virtual.d.ts +4 -0
- package/types/lib/third-party/arborist/lib/arborist/load-virtual.d.ts.map +1 -0
- package/types/lib/third-party/arborist/lib/bin-links.d.ts +18 -0
- package/types/lib/third-party/arborist/lib/bin-links.d.ts.map +1 -0
- package/types/lib/third-party/arborist/lib/calc-dep-flags.d.ts +3 -0
- package/types/lib/third-party/arborist/lib/calc-dep-flags.d.ts.map +1 -0
- package/types/lib/third-party/arborist/lib/case-insensitive-map.d.ts +9 -0
- package/types/lib/third-party/arborist/lib/case-insensitive-map.d.ts.map +1 -0
- package/types/lib/third-party/arborist/lib/consistent-resolve.d.ts +3 -0
- package/types/lib/third-party/arborist/lib/consistent-resolve.d.ts.map +1 -0
- package/types/lib/third-party/arborist/lib/debug.d.ts +3 -0
- package/types/lib/third-party/arborist/lib/debug.d.ts.map +1 -0
- package/types/lib/third-party/arborist/lib/dep-valid.d.ts +3 -0
- package/types/lib/third-party/arborist/lib/dep-valid.d.ts.map +1 -0
- package/types/lib/third-party/arborist/lib/edge.d.ts +46 -0
- package/types/lib/third-party/arborist/lib/edge.d.ts.map +1 -0
- package/types/lib/third-party/arborist/lib/from-path.d.ts +3 -0
- package/types/lib/third-party/arborist/lib/from-path.d.ts.map +1 -0
- package/types/lib/third-party/arborist/lib/gather-dep-set.d.ts +3 -0
- package/types/lib/third-party/arborist/lib/gather-dep-set.d.ts.map +1 -0
- package/types/lib/third-party/arborist/lib/index.d.ts +3 -0
- package/types/lib/third-party/arborist/lib/index.d.ts.map +1 -0
- package/types/lib/third-party/arborist/lib/inventory.d.ts +14 -0
- package/types/lib/third-party/arborist/lib/inventory.d.ts.map +1 -0
- package/types/lib/third-party/arborist/lib/link.d.ts +18 -0
- package/types/lib/third-party/arborist/lib/link.d.ts.map +1 -0
- package/types/lib/third-party/arborist/lib/node.d.ts +112 -0
- package/types/lib/third-party/arborist/lib/node.d.ts.map +1 -0
- package/types/lib/third-party/arborist/lib/npm-extension.d.ts +18 -0
- package/types/lib/third-party/arborist/lib/npm-extension.d.ts.map +1 -0
- package/types/lib/third-party/arborist/lib/override-resolves.d.ts +3 -0
- package/types/lib/third-party/arborist/lib/override-resolves.d.ts.map +1 -0
- package/types/lib/third-party/arborist/lib/override-set.d.ts +27 -0
- package/types/lib/third-party/arborist/lib/override-set.d.ts.map +1 -0
- package/types/lib/third-party/arborist/lib/package-extensions.d.ts +36 -0
- package/types/lib/third-party/arborist/lib/package-extensions.d.ts.map +1 -0
- package/types/lib/third-party/arborist/lib/printable.d.ts +3 -0
- package/types/lib/third-party/arborist/lib/printable.d.ts.map +1 -0
- package/types/lib/third-party/arborist/lib/proc-log.d.ts +20 -0
- package/types/lib/third-party/arborist/lib/proc-log.d.ts.map +1 -0
- package/types/lib/third-party/arborist/lib/realpath.d.ts +3 -0
- package/types/lib/third-party/arborist/lib/realpath.d.ts.map +1 -0
- package/types/lib/third-party/arborist/lib/relpath.d.ts +3 -0
- package/types/lib/third-party/arborist/lib/relpath.d.ts.map +1 -0
- package/types/lib/third-party/arborist/lib/shrinkwrap.d.ts +54 -0
- package/types/lib/third-party/arborist/lib/shrinkwrap.d.ts.map +1 -0
- package/types/lib/third-party/arborist/lib/spec-from-lock.d.ts +3 -0
- package/types/lib/third-party/arborist/lib/spec-from-lock.d.ts.map +1 -0
- package/types/lib/third-party/arborist/lib/tree-check.d.ts +3 -0
- package/types/lib/third-party/arborist/lib/tree-check.d.ts.map +1 -0
- package/types/lib/third-party/arborist/lib/validate-npm-package-name.d.ts +13 -0
- package/types/lib/third-party/arborist/lib/validate-npm-package-name.d.ts.map +1 -0
- package/types/lib/third-party/arborist/lib/version-from-tgz.d.ts +6 -0
- package/types/lib/third-party/arborist/lib/version-from-tgz.d.ts.map +1 -0
- package/types/lib/third-party/arborist/lib/yarn-lock.d.ts +35 -0
- package/types/lib/third-party/arborist/lib/yarn-lock.d.ts.map +1 -0
- package/types/lib/validator/bomValidator.d.ts +40 -0
- package/types/lib/validator/bomValidator.d.ts.map +1 -0
- package/types/lib/validator/complianceEngine.d.ts +72 -0
- package/types/lib/validator/complianceEngine.d.ts.map +1 -0
- package/types/lib/validator/complianceRules.d.ts +61 -0
- package/types/lib/validator/complianceRules.d.ts.map +1 -0
- package/types/lib/validator/index.d.ts +101 -0
- package/types/lib/validator/index.d.ts.map +1 -0
- package/types/lib/validator/reporters/annotations.d.ts +37 -0
- package/types/lib/validator/reporters/annotations.d.ts.map +1 -0
- package/types/lib/validator/reporters/console.d.ts +34 -0
- package/types/lib/validator/reporters/console.d.ts.map +1 -0
- package/types/lib/validator/reporters/index.d.ts +30 -0
- package/types/lib/validator/reporters/index.d.ts.map +1 -0
- package/types/lib/validator/reporters/json.d.ts +11 -0
- package/types/lib/validator/reporters/json.d.ts.map +1 -0
- package/types/lib/validator/reporters/sarif.d.ts +22 -0
- package/types/lib/validator/reporters/sarif.d.ts.map +1 -0
- package/mod.d.ts +0 -7
- package/mod.js +0 -22
|
@@ -0,0 +1,192 @@
|
|
|
1
|
+
import { shouldRunPredictiveBomAudit } from "../core/env.js";
|
|
2
|
+
|
|
3
|
+
/** Frozen list of hardware-bill-of-materials (HBOM) audit categories. */
|
|
4
|
+
export const HBOM_AUDIT_CATEGORIES = Object.freeze([
|
|
5
|
+
"hbom-security",
|
|
6
|
+
"hbom-performance",
|
|
7
|
+
"hbom-compliance",
|
|
8
|
+
]);
|
|
9
|
+
|
|
10
|
+
/** Frozen list of cryptographic-bill-of-materials (CBOM) audit categories. */
|
|
11
|
+
export const CBOM_AUDIT_CATEGORIES = Object.freeze([
|
|
12
|
+
"cbom-security",
|
|
13
|
+
"cbom-compliance",
|
|
14
|
+
]);
|
|
15
|
+
|
|
16
|
+
/** Frozen list of host-topology audit categories. */
|
|
17
|
+
export const HOST_TOPOLOGY_AUDIT_CATEGORIES = Object.freeze(["host-topology"]);
|
|
18
|
+
|
|
19
|
+
/** Frozen list of Golem (Go Evinse) audit categories. */
|
|
20
|
+
export const GOLEM_AUDIT_CATEGORIES = Object.freeze([
|
|
21
|
+
"golem-security",
|
|
22
|
+
"golem-performance",
|
|
23
|
+
"golem-compliance",
|
|
24
|
+
]);
|
|
25
|
+
|
|
26
|
+
/** Frozen list of AI-bill-of-materials audit categories. */
|
|
27
|
+
export const AI_BOM_AUDIT_CATEGORIES = Object.freeze([
|
|
28
|
+
"ai-governance",
|
|
29
|
+
"ai-security",
|
|
30
|
+
"ai-performance",
|
|
31
|
+
]);
|
|
32
|
+
|
|
33
|
+
/** Comma-separated default HBOM category string used when none is specified. */
|
|
34
|
+
export const DEFAULT_HBOM_AUDIT_CATEGORIES = HBOM_AUDIT_CATEGORIES.join(",");
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* Frozen map of category alias names to their expanded concrete category lists.
|
|
38
|
+
* Used by `expandBomAuditCategories` to resolve shorthand aliases.
|
|
39
|
+
*/
|
|
40
|
+
export const BOM_AUDIT_CATEGORY_ALIASES = Object.freeze({
|
|
41
|
+
"ai-inventory": ["ai-agent", "mcp-server"],
|
|
42
|
+
aibom: [...AI_BOM_AUDIT_CATEGORIES, "ai-agent", "mcp-server"],
|
|
43
|
+
"ai-bom": [...AI_BOM_AUDIT_CATEGORIES, "ai-agent", "mcp-server"],
|
|
44
|
+
"ai-provenance": ["ai-provenance", "ai-oversight"],
|
|
45
|
+
"ai-oversight": ["ai-oversight"],
|
|
46
|
+
cbom: [...CBOM_AUDIT_CATEGORIES],
|
|
47
|
+
"crypto-bom": [...CBOM_AUDIT_CATEGORIES],
|
|
48
|
+
golem: [...GOLEM_AUDIT_CATEGORIES],
|
|
49
|
+
hbom: [...HBOM_AUDIT_CATEGORIES],
|
|
50
|
+
host: [...HBOM_AUDIT_CATEGORIES, ...HOST_TOPOLOGY_AUDIT_CATEGORIES],
|
|
51
|
+
});
|
|
52
|
+
|
|
53
|
+
function uniqueNonEmptyCategories(categories) {
|
|
54
|
+
return [...new Set((categories || []).filter(Boolean))];
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
/**
|
|
58
|
+
* Normalize a category string or array into a deduplicated array of trimmed,
|
|
59
|
+
* non-empty category names.
|
|
60
|
+
*
|
|
61
|
+
* @param {string|string[]} categories Comma-separated string or array of categories.
|
|
62
|
+
* @returns {string[]} Deduplicated, trimmed category names.
|
|
63
|
+
*/
|
|
64
|
+
export function normalizeBomAuditCategories(categories) {
|
|
65
|
+
if (Array.isArray(categories)) {
|
|
66
|
+
return uniqueNonEmptyCategories(
|
|
67
|
+
categories.map((category) => String(category).trim()).filter(Boolean),
|
|
68
|
+
);
|
|
69
|
+
}
|
|
70
|
+
if (typeof categories !== "string") {
|
|
71
|
+
return [];
|
|
72
|
+
}
|
|
73
|
+
return uniqueNonEmptyCategories(
|
|
74
|
+
categories
|
|
75
|
+
.split(",")
|
|
76
|
+
.map((category) => category.trim())
|
|
77
|
+
.filter(Boolean),
|
|
78
|
+
);
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
/**
|
|
82
|
+
* Expand category aliases into their concrete category lists, returning a
|
|
83
|
+
* deduplicated array of resolved categories.
|
|
84
|
+
*
|
|
85
|
+
* @param {string|string[]} categories Comma-separated string or array of categories or aliases.
|
|
86
|
+
* @returns {string[]} Deduplicated, fully expanded category names.
|
|
87
|
+
*/
|
|
88
|
+
export function expandBomAuditCategories(categories) {
|
|
89
|
+
const normalizedCategories = normalizeBomAuditCategories(categories);
|
|
90
|
+
const expandedCategories = [];
|
|
91
|
+
for (const category of normalizedCategories) {
|
|
92
|
+
if (BOM_AUDIT_CATEGORY_ALIASES[category]?.length) {
|
|
93
|
+
expandedCategories.push(...BOM_AUDIT_CATEGORY_ALIASES[category]);
|
|
94
|
+
continue;
|
|
95
|
+
}
|
|
96
|
+
expandedCategories.push(category);
|
|
97
|
+
}
|
|
98
|
+
return uniqueNonEmptyCategories(expandedCategories);
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
/**
|
|
102
|
+
* Collect the sorted set of unique categories present in the loaded audit rules.
|
|
103
|
+
*
|
|
104
|
+
* @param {Array<{category?: string}>} rules Loaded audit rule objects.
|
|
105
|
+
* @returns {string[]} Sorted unique category names found in the rules.
|
|
106
|
+
*/
|
|
107
|
+
export function availableBomAuditCategories(rules) {
|
|
108
|
+
return uniqueNonEmptyCategories(
|
|
109
|
+
(rules || []).map((rule) => rule?.category).filter(Boolean),
|
|
110
|
+
).sort();
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
function formatBomAuditCategoryOption(category) {
|
|
114
|
+
const aliasedCategories = BOM_AUDIT_CATEGORY_ALIASES[category];
|
|
115
|
+
if (!aliasedCategories?.length) {
|
|
116
|
+
return category;
|
|
117
|
+
}
|
|
118
|
+
return `${category} (alias for ${aliasedCategories.join(",")})`;
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
/**
|
|
122
|
+
* Validate that every requested category is a known category or alias,
|
|
123
|
+
* throwing an Error listing the valid options otherwise.
|
|
124
|
+
*
|
|
125
|
+
* @param {string|string[]} categories Comma-separated string or array of categories to validate.
|
|
126
|
+
* @param {Array<{category?: string}>} rules Loaded audit rule objects to derive valid categories from.
|
|
127
|
+
* @returns {{categories: string[], expandedCategories: string[], validCategories: string[]}} Normalized, expanded, and valid category lists.
|
|
128
|
+
*/
|
|
129
|
+
export function validateBomAuditCategories(categories, rules) {
|
|
130
|
+
const normalizedCategories = normalizeBomAuditCategories(categories);
|
|
131
|
+
const validCategories = availableBomAuditCategories(rules);
|
|
132
|
+
const allowedCategories = new Set([
|
|
133
|
+
...validCategories,
|
|
134
|
+
...Object.keys(BOM_AUDIT_CATEGORY_ALIASES),
|
|
135
|
+
]);
|
|
136
|
+
const invalidCategories = normalizedCategories.filter(
|
|
137
|
+
(category) => !allowedCategories.has(category),
|
|
138
|
+
);
|
|
139
|
+
if (invalidCategories.length) {
|
|
140
|
+
const validCategoryOptions = [...allowedCategories]
|
|
141
|
+
.sort()
|
|
142
|
+
.map((category) => formatBomAuditCategoryOption(category));
|
|
143
|
+
throw new Error(
|
|
144
|
+
`Unknown BOM audit categor${invalidCategories.length === 1 ? "y" : "ies"}: ${invalidCategories.join(", ")}. Valid categories: ${validCategoryOptions.join(", ")}.`,
|
|
145
|
+
);
|
|
146
|
+
}
|
|
147
|
+
return {
|
|
148
|
+
categories: normalizedCategories,
|
|
149
|
+
expandedCategories: expandBomAuditCategories(normalizedCategories),
|
|
150
|
+
validCategories,
|
|
151
|
+
};
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
/**
|
|
155
|
+
* Determine the default BOM audit categories for the current CLI invocation.
|
|
156
|
+
*
|
|
157
|
+
* OBOM-focused runs should default to the runtime-specific rule pack unless the
|
|
158
|
+
* user explicitly requests other categories.
|
|
159
|
+
*
|
|
160
|
+
* @param {object} options CLI options
|
|
161
|
+
* @param {string} [commandPath] Invoked command path or name
|
|
162
|
+
* @returns {string | undefined} Default category string, if any
|
|
163
|
+
*/
|
|
164
|
+
export function getDefaultBomAuditCategories(options, commandPath) {
|
|
165
|
+
const normalizedCommandPath = `${commandPath || ""}`.toLowerCase();
|
|
166
|
+
const defaultHbomCategories = options?.includeRuntime
|
|
167
|
+
? `${DEFAULT_HBOM_AUDIT_CATEGORIES},host-topology`
|
|
168
|
+
: DEFAULT_HBOM_AUDIT_CATEGORIES;
|
|
169
|
+
if (normalizedCommandPath.includes("hbom")) {
|
|
170
|
+
return defaultHbomCategories;
|
|
171
|
+
}
|
|
172
|
+
const projectTypes = Array.isArray(options?.projectType)
|
|
173
|
+
? options.projectType
|
|
174
|
+
: typeof options?.projectType === "string"
|
|
175
|
+
? options.projectType.split(",")
|
|
176
|
+
: [];
|
|
177
|
+
const normalizedProjectTypes = projectTypes
|
|
178
|
+
.map((projectType) => `${projectType || ""}`.trim().toLowerCase())
|
|
179
|
+
.filter(Boolean);
|
|
180
|
+
if (
|
|
181
|
+
normalizedProjectTypes.length &&
|
|
182
|
+
normalizedProjectTypes.every((projectType) =>
|
|
183
|
+
["hbom", "hardware"].includes(projectType),
|
|
184
|
+
)
|
|
185
|
+
) {
|
|
186
|
+
return defaultHbomCategories;
|
|
187
|
+
}
|
|
188
|
+
if (!shouldRunPredictiveBomAudit(options, commandPath)) {
|
|
189
|
+
return "obom-runtime";
|
|
190
|
+
}
|
|
191
|
+
return undefined;
|
|
192
|
+
}
|
|
@@ -0,0 +1,369 @@
|
|
|
1
|
+
const SPDX_CONTEXT_PREFIX = "https://spdx.org/rdf/";
|
|
2
|
+
const CYCLONEDX_FORMAT = "CycloneDX";
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* The default CycloneDX specification version used across cdxgen when a caller
|
|
6
|
+
* does not specify one (matches the `--spec-version` CLI default).
|
|
7
|
+
*/
|
|
8
|
+
export const DEFAULT_CDX_SPEC_VERSION = 1.7;
|
|
9
|
+
|
|
10
|
+
const LEGACY_CYCLONEDX_ROOT_KEY = "bomFormat";
|
|
11
|
+
const MODERN_CYCLONEDX_ROOT_KEY = "specFormat";
|
|
12
|
+
const BOM_FORMAT_CYCLONEDX = "cyclonedx";
|
|
13
|
+
const BOM_FORMAT_SPDX = "spdx";
|
|
14
|
+
const BOM_FORMAT_UNKNOWN = "unknown";
|
|
15
|
+
const CYCLONEDX_SPEC_VERSION_PATTERN = /^(\d+)(?:\.(\d+))?$/u;
|
|
16
|
+
const CYCLONEDX_FORMAT_KEYS = new Set([
|
|
17
|
+
LEGACY_CYCLONEDX_ROOT_KEY,
|
|
18
|
+
MODERN_CYCLONEDX_ROOT_KEY,
|
|
19
|
+
"specVersion",
|
|
20
|
+
]);
|
|
21
|
+
const COMPONENT_TYPES_1_4 = [
|
|
22
|
+
"application",
|
|
23
|
+
"framework",
|
|
24
|
+
"library",
|
|
25
|
+
"container",
|
|
26
|
+
"operating-system",
|
|
27
|
+
"device",
|
|
28
|
+
"firmware",
|
|
29
|
+
"file",
|
|
30
|
+
];
|
|
31
|
+
const COMPONENT_TYPES_1_5 = [
|
|
32
|
+
"application",
|
|
33
|
+
"framework",
|
|
34
|
+
"library",
|
|
35
|
+
"container",
|
|
36
|
+
"platform",
|
|
37
|
+
"operating-system",
|
|
38
|
+
"device",
|
|
39
|
+
"device-driver",
|
|
40
|
+
"firmware",
|
|
41
|
+
"file",
|
|
42
|
+
"machine-learning-model",
|
|
43
|
+
"data",
|
|
44
|
+
];
|
|
45
|
+
const COMPONENT_TYPES_1_6 = [...COMPONENT_TYPES_1_5, "cryptographic-asset"];
|
|
46
|
+
|
|
47
|
+
/**
|
|
48
|
+
* Frozen map of CycloneDX spec versions (as "major.minor" strings) to the
|
|
49
|
+
* frozen list of component types supported by that version.
|
|
50
|
+
*/
|
|
51
|
+
export const CYCLONEDX_COMPONENT_TYPES_BY_SPEC_VERSION = Object.freeze({
|
|
52
|
+
1.4: Object.freeze(COMPONENT_TYPES_1_4),
|
|
53
|
+
1.5: Object.freeze(COMPONENT_TYPES_1_5),
|
|
54
|
+
1.6: Object.freeze(COMPONENT_TYPES_1_6),
|
|
55
|
+
1.7: Object.freeze(COMPONENT_TYPES_1_6),
|
|
56
|
+
"2.0": Object.freeze(COMPONENT_TYPES_1_6),
|
|
57
|
+
});
|
|
58
|
+
|
|
59
|
+
/**
|
|
60
|
+
* Determine whether the given BOM object is an SPDX JSON-LD document.
|
|
61
|
+
*
|
|
62
|
+
* @param {object} bomJson BOM JSON object to inspect.
|
|
63
|
+
* @returns {boolean} True when the object carries an SPDX `@context` and an `SpdxDocument` graph entry.
|
|
64
|
+
*/
|
|
65
|
+
export const isSpdxJsonLd = (bomJson) =>
|
|
66
|
+
Boolean(
|
|
67
|
+
bomJson?.["@context"]?.startsWith(SPDX_CONTEXT_PREFIX) &&
|
|
68
|
+
Array.isArray(bomJson?.["@graph"]) &&
|
|
69
|
+
bomJson["@graph"].some((element) => element?.type === "SpdxDocument"),
|
|
70
|
+
);
|
|
71
|
+
|
|
72
|
+
const parseCycloneDxSpecVersion = (specVersion) => {
|
|
73
|
+
const match = `${specVersion ?? ""}`
|
|
74
|
+
.trim()
|
|
75
|
+
.match(CYCLONEDX_SPEC_VERSION_PATTERN);
|
|
76
|
+
if (!match) {
|
|
77
|
+
return undefined;
|
|
78
|
+
}
|
|
79
|
+
return {
|
|
80
|
+
major: Number.parseInt(match[1], 10),
|
|
81
|
+
minor: Number.parseInt(match[2] || "0", 10),
|
|
82
|
+
minorText: match[2] || "0",
|
|
83
|
+
};
|
|
84
|
+
};
|
|
85
|
+
|
|
86
|
+
/**
|
|
87
|
+
* Normalize a CycloneDX spec version to a numeric major.minor value.
|
|
88
|
+
*
|
|
89
|
+
* @param {string|number} specVersion Spec version string or number (e.g. "1.5", 1.6).
|
|
90
|
+
* @returns {number|undefined} Numeric major.minor version, or undefined when unparseable.
|
|
91
|
+
*/
|
|
92
|
+
export const normalizeCycloneDxSpecVersion = (specVersion) => {
|
|
93
|
+
const parsed = parseCycloneDxSpecVersion(specVersion);
|
|
94
|
+
if (!parsed) {
|
|
95
|
+
return undefined;
|
|
96
|
+
}
|
|
97
|
+
return Number(`${parsed.major}.${parsed.minor}`);
|
|
98
|
+
};
|
|
99
|
+
|
|
100
|
+
/**
|
|
101
|
+
* Format a CycloneDX spec version as a "major.minor" string.
|
|
102
|
+
*
|
|
103
|
+
* @param {string|number} specVersion Spec version string or number.
|
|
104
|
+
* @returns {string|undefined} "major.minor" string, or undefined when unparseable.
|
|
105
|
+
*/
|
|
106
|
+
export const toCycloneDxSpecVersionString = (specVersion) => {
|
|
107
|
+
const parsed = parseCycloneDxSpecVersion(specVersion);
|
|
108
|
+
if (!parsed) {
|
|
109
|
+
return undefined;
|
|
110
|
+
}
|
|
111
|
+
if (typeof specVersion === "string" && parsed.minorText !== "0") {
|
|
112
|
+
return `${parsed.major}.${parsed.minorText}`;
|
|
113
|
+
}
|
|
114
|
+
return `${parsed.major}.${parsed.minor}`;
|
|
115
|
+
};
|
|
116
|
+
|
|
117
|
+
/**
|
|
118
|
+
* Determine whether a spec version is greater than or equal to a minimum version,
|
|
119
|
+
* comparing major then minor components.
|
|
120
|
+
*
|
|
121
|
+
* @param {string|number} specVersion The spec version to test.
|
|
122
|
+
* @param {string|number} minimumVersion The minimum required spec version.
|
|
123
|
+
* @returns {boolean} True when specVersion is at least minimumVersion.
|
|
124
|
+
*/
|
|
125
|
+
export const isCycloneDxSpecVersionAtLeast = (specVersion, minimumVersion) => {
|
|
126
|
+
const parsedSpecVersion = parseCycloneDxSpecVersion(specVersion);
|
|
127
|
+
const parsedMinimumVersion = parseCycloneDxSpecVersion(minimumVersion);
|
|
128
|
+
if (!parsedSpecVersion || !parsedMinimumVersion) {
|
|
129
|
+
return false;
|
|
130
|
+
}
|
|
131
|
+
if (parsedSpecVersion.major !== parsedMinimumVersion.major) {
|
|
132
|
+
return parsedSpecVersion.major > parsedMinimumVersion.major;
|
|
133
|
+
}
|
|
134
|
+
return parsedSpecVersion.minor >= parsedMinimumVersion.minor;
|
|
135
|
+
};
|
|
136
|
+
|
|
137
|
+
/**
|
|
138
|
+
* Determine whether a spec version is CycloneDX 2.0 or later.
|
|
139
|
+
*
|
|
140
|
+
* @param {string|number} specVersion The spec version to test.
|
|
141
|
+
* @returns {boolean} True when the spec version is at least 2.0.
|
|
142
|
+
*/
|
|
143
|
+
export const isCycloneDx20SpecVersion = (specVersion) =>
|
|
144
|
+
isCycloneDxSpecVersionAtLeast(specVersion, 2);
|
|
145
|
+
|
|
146
|
+
/**
|
|
147
|
+
* Return the list of component types supported by a given CycloneDX spec
|
|
148
|
+
* version, falling back to the 1.7 list when the version is unrecognized.
|
|
149
|
+
*
|
|
150
|
+
* @param {string|number} [specVersion=1.7] CycloneDX spec version.
|
|
151
|
+
* @returns {string[]} Supported component type names for that version.
|
|
152
|
+
*/
|
|
153
|
+
export const getSupportedCycloneDxComponentTypes = (specVersion = 1.7) => {
|
|
154
|
+
const normalizedSpecVersion = toCycloneDxSpecVersionString(specVersion);
|
|
155
|
+
return [
|
|
156
|
+
...(CYCLONEDX_COMPONENT_TYPES_BY_SPEC_VERSION[normalizedSpecVersion] ||
|
|
157
|
+
CYCLONEDX_COMPONENT_TYPES_BY_SPEC_VERSION["1.7"]),
|
|
158
|
+
];
|
|
159
|
+
};
|
|
160
|
+
|
|
161
|
+
/**
|
|
162
|
+
* Normalize a component type filter (single value, array, or falsy) into a
|
|
163
|
+
* deduplicated array of trimmed, non-empty type strings.
|
|
164
|
+
*
|
|
165
|
+
* @param {string|string[]} componentType Component type or array of types.
|
|
166
|
+
* @returns {string[]} Deduplicated, trimmed component type strings.
|
|
167
|
+
*/
|
|
168
|
+
export const normalizeCycloneDxComponentTypeFilter = (componentType) => {
|
|
169
|
+
if (!componentType) {
|
|
170
|
+
return [];
|
|
171
|
+
}
|
|
172
|
+
const componentTypes = Array.isArray(componentType)
|
|
173
|
+
? componentType
|
|
174
|
+
: [componentType];
|
|
175
|
+
return Array.from(
|
|
176
|
+
new Set(componentTypes.map((type) => `${type}`.trim()).filter(Boolean)),
|
|
177
|
+
);
|
|
178
|
+
};
|
|
179
|
+
|
|
180
|
+
/**
|
|
181
|
+
* Determine whether a component type is enabled given the configured type
|
|
182
|
+
* filter and spec version.
|
|
183
|
+
*
|
|
184
|
+
* @param {string} componentType The component type to test.
|
|
185
|
+
* @param {object} [options] Options carrying the filter and spec version.
|
|
186
|
+
* @param {string|string[]} [options.componentType] Explicit type filter from CLI options.
|
|
187
|
+
* @param {string|number} [options.specVersion] CycloneDX spec version for default support lookup.
|
|
188
|
+
* @returns {boolean} True when the component type passes the filter.
|
|
189
|
+
*/
|
|
190
|
+
export const isCycloneDxComponentTypeEnabled = (
|
|
191
|
+
componentType,
|
|
192
|
+
options = {},
|
|
193
|
+
) => {
|
|
194
|
+
if (!componentType) {
|
|
195
|
+
return false;
|
|
196
|
+
}
|
|
197
|
+
const requestedComponentTypes = normalizeCycloneDxComponentTypeFilter(
|
|
198
|
+
options.componentType,
|
|
199
|
+
);
|
|
200
|
+
if (requestedComponentTypes.length) {
|
|
201
|
+
return requestedComponentTypes.includes(componentType);
|
|
202
|
+
}
|
|
203
|
+
return getSupportedCycloneDxComponentTypes(options.specVersion).includes(
|
|
204
|
+
componentType,
|
|
205
|
+
);
|
|
206
|
+
};
|
|
207
|
+
|
|
208
|
+
/**
|
|
209
|
+
* Return the appropriate CycloneDX root format key ("bomFormat" or
|
|
210
|
+
* "specFormat") for the given spec version or BOM object.
|
|
211
|
+
*
|
|
212
|
+
* @param {string|number|object} specVersionOrBom Spec version, or a BOM object whose `specVersion` is read.
|
|
213
|
+
* @returns {string} The root format key name to use.
|
|
214
|
+
*/
|
|
215
|
+
export const getCycloneDxRootFormatKey = (specVersionOrBom) => {
|
|
216
|
+
const specVersion =
|
|
217
|
+
specVersionOrBom && typeof specVersionOrBom === "object"
|
|
218
|
+
? specVersionOrBom.specVersion
|
|
219
|
+
: specVersionOrBom;
|
|
220
|
+
return isCycloneDx20SpecVersion(specVersion)
|
|
221
|
+
? MODERN_CYCLONEDX_ROOT_KEY
|
|
222
|
+
: LEGACY_CYCLONEDX_ROOT_KEY;
|
|
223
|
+
};
|
|
224
|
+
|
|
225
|
+
/**
|
|
226
|
+
* Return the BOM format identifier string from a BOM object.
|
|
227
|
+
*
|
|
228
|
+
* @param {object} bomJson BOM JSON object.
|
|
229
|
+
* @returns {string|undefined} The `specFormat` or `bomFormat` value.
|
|
230
|
+
*/
|
|
231
|
+
export const getCycloneDxFormat = (bomJson) =>
|
|
232
|
+
bomJson?.specFormat || bomJson?.bomFormat;
|
|
233
|
+
|
|
234
|
+
/**
|
|
235
|
+
* Determine whether a BOM object carries the CycloneDX format identifier.
|
|
236
|
+
*
|
|
237
|
+
* @param {object} bomJson BOM JSON object.
|
|
238
|
+
* @returns {boolean} True when the format identifier equals "CycloneDX".
|
|
239
|
+
*/
|
|
240
|
+
export const hasCycloneDxFormat = (bomJson) =>
|
|
241
|
+
getCycloneDxFormat(bomJson) === CYCLONEDX_FORMAT;
|
|
242
|
+
|
|
243
|
+
/**
|
|
244
|
+
* Determine whether an object is a valid CycloneDX BOM by checking both the
|
|
245
|
+
* format identifier and a parseable spec version.
|
|
246
|
+
*
|
|
247
|
+
* @param {object} bomJson BOM JSON object.
|
|
248
|
+
* @returns {boolean} True when the object is a valid CycloneDX BOM.
|
|
249
|
+
*/
|
|
250
|
+
export const isCycloneDxBom = (bomJson) =>
|
|
251
|
+
hasCycloneDxFormat(bomJson) &&
|
|
252
|
+
normalizeCycloneDxSpecVersion(bomJson?.specVersion) !== undefined;
|
|
253
|
+
|
|
254
|
+
const rewriteCycloneDxRootFields = (
|
|
255
|
+
bomJson,
|
|
256
|
+
rootKey,
|
|
257
|
+
specVersion,
|
|
258
|
+
preserveLegacyBomFormat,
|
|
259
|
+
) => {
|
|
260
|
+
const remainingEntries = Object.entries(bomJson).filter(
|
|
261
|
+
([key]) => !CYCLONEDX_FORMAT_KEYS.has(key),
|
|
262
|
+
);
|
|
263
|
+
for (const key of Object.keys(bomJson)) {
|
|
264
|
+
delete bomJson[key];
|
|
265
|
+
}
|
|
266
|
+
if (rootKey === LEGACY_CYCLONEDX_ROOT_KEY) {
|
|
267
|
+
bomJson.bomFormat = CYCLONEDX_FORMAT;
|
|
268
|
+
if (specVersion !== undefined) {
|
|
269
|
+
bomJson.specVersion = specVersion;
|
|
270
|
+
}
|
|
271
|
+
} else if (preserveLegacyBomFormat) {
|
|
272
|
+
bomJson.bomFormat = CYCLONEDX_FORMAT;
|
|
273
|
+
if (specVersion !== undefined) {
|
|
274
|
+
bomJson.specVersion = specVersion;
|
|
275
|
+
}
|
|
276
|
+
bomJson.specFormat = CYCLONEDX_FORMAT;
|
|
277
|
+
} else {
|
|
278
|
+
bomJson.specFormat = CYCLONEDX_FORMAT;
|
|
279
|
+
if (specVersion !== undefined) {
|
|
280
|
+
bomJson.specVersion = specVersion;
|
|
281
|
+
}
|
|
282
|
+
}
|
|
283
|
+
for (const [key, value] of remainingEntries) {
|
|
284
|
+
bomJson[key] = value;
|
|
285
|
+
}
|
|
286
|
+
};
|
|
287
|
+
|
|
288
|
+
/**
|
|
289
|
+
* Mutates a CycloneDX BOM object so the appropriate root format key is present
|
|
290
|
+
* for the requested spec version, while preserving conventional serialized
|
|
291
|
+
* root-key ordering (`bomFormat`/`specFormat` and `specVersion` first). Only the currently
|
|
292
|
+
* supported CycloneDX major.minor version shape is accepted; multi-component
|
|
293
|
+
* future versions such as `2.0.1` intentionally return `undefined` from the
|
|
294
|
+
* normalizer rather than being silently truncated.
|
|
295
|
+
*
|
|
296
|
+
* @param {object} bomJson BOM JSON object to mutate.
|
|
297
|
+
* @param {string|number} specVersion Desired CycloneDX spec version.
|
|
298
|
+
* @param {object} options Root-key compatibility options.
|
|
299
|
+
* @returns {object} The same `bomJson` object, after in-place mutation.
|
|
300
|
+
*/
|
|
301
|
+
export const setCycloneDxFormat = (
|
|
302
|
+
bomJson,
|
|
303
|
+
specVersion,
|
|
304
|
+
{ preserveLegacyBomFormat = false } = {},
|
|
305
|
+
) => {
|
|
306
|
+
if (!bomJson || typeof bomJson !== "object" || Array.isArray(bomJson)) {
|
|
307
|
+
return bomJson;
|
|
308
|
+
}
|
|
309
|
+
const resolvedSpecVersion =
|
|
310
|
+
toCycloneDxSpecVersionString(specVersion ?? bomJson.specVersion) ||
|
|
311
|
+
bomJson.specVersion;
|
|
312
|
+
if (resolvedSpecVersion !== undefined) {
|
|
313
|
+
bomJson.specVersion = resolvedSpecVersion;
|
|
314
|
+
}
|
|
315
|
+
if (
|
|
316
|
+
getCycloneDxRootFormatKey(resolvedSpecVersion) === MODERN_CYCLONEDX_ROOT_KEY
|
|
317
|
+
) {
|
|
318
|
+
rewriteCycloneDxRootFields(
|
|
319
|
+
bomJson,
|
|
320
|
+
MODERN_CYCLONEDX_ROOT_KEY,
|
|
321
|
+
resolvedSpecVersion,
|
|
322
|
+
preserveLegacyBomFormat,
|
|
323
|
+
);
|
|
324
|
+
return bomJson;
|
|
325
|
+
}
|
|
326
|
+
rewriteCycloneDxRootFields(
|
|
327
|
+
bomJson,
|
|
328
|
+
LEGACY_CYCLONEDX_ROOT_KEY,
|
|
329
|
+
resolvedSpecVersion,
|
|
330
|
+
false,
|
|
331
|
+
);
|
|
332
|
+
return bomJson;
|
|
333
|
+
};
|
|
334
|
+
|
|
335
|
+
/**
|
|
336
|
+
* Detect the format of a BOM object, distinguishing CycloneDX, SPDX JSON-LD,
|
|
337
|
+
* and unknown formats.
|
|
338
|
+
*
|
|
339
|
+
* @param {object} bomJson BOM JSON object.
|
|
340
|
+
* @returns {string} "cyclonedx", "spdx", or "unknown".
|
|
341
|
+
*/
|
|
342
|
+
export const detectBomFormat = (bomJson) => {
|
|
343
|
+
if (isCycloneDxBom(bomJson)) {
|
|
344
|
+
return BOM_FORMAT_CYCLONEDX;
|
|
345
|
+
}
|
|
346
|
+
if (isSpdxJsonLd(bomJson)) {
|
|
347
|
+
return BOM_FORMAT_SPDX;
|
|
348
|
+
}
|
|
349
|
+
return BOM_FORMAT_UNKNOWN;
|
|
350
|
+
};
|
|
351
|
+
|
|
352
|
+
/**
|
|
353
|
+
* Build a user-facing error message explaining that the supplied BOM is not a
|
|
354
|
+
* CycloneDX document, tailored to the detected format.
|
|
355
|
+
*
|
|
356
|
+
* @param {object} bomJson BOM JSON object that was rejected.
|
|
357
|
+
* @param {string} [commandName="This command"] Name of the command requiring CycloneDX input.
|
|
358
|
+
* @returns {string} Human-readable error message.
|
|
359
|
+
*/
|
|
360
|
+
export const getNonCycloneDxErrorMessage = (
|
|
361
|
+
bomJson,
|
|
362
|
+
commandName = "This command",
|
|
363
|
+
) => {
|
|
364
|
+
const detectedFormat = detectBomFormat(bomJson);
|
|
365
|
+
if (detectedFormat === BOM_FORMAT_SPDX) {
|
|
366
|
+
return `${commandName} expects a CycloneDX BOM. SPDX input is not supported for this command.`;
|
|
367
|
+
}
|
|
368
|
+
return `${commandName} expects a CycloneDX JSON BOM.`;
|
|
369
|
+
};
|