@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,513 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CLI argument → options conversion for cdxgen.
|
|
3
|
+
*
|
|
4
|
+
* Extracts the complex arg-to-options mapping from `bin/cdxgen.js` into
|
|
5
|
+
* pure, testable functions with no side-effects (no process.exit, no
|
|
6
|
+
* console output).
|
|
7
|
+
*
|
|
8
|
+
* Architecture note: This module is a helper and must NOT import from
|
|
9
|
+
* `lib/cli/index.js` or `lib/stages/`. See AGENTS.md "Module layering
|
|
10
|
+
* rules".
|
|
11
|
+
*
|
|
12
|
+
*/
|
|
13
|
+
|
|
14
|
+
import { join, resolve } from "node:path";
|
|
15
|
+
|
|
16
|
+
import { isSecureMode, readEnvironmentVariable } from "../core/activity.js";
|
|
17
|
+
import {
|
|
18
|
+
DEFAULT_CDX_SPEC_VERSION,
|
|
19
|
+
normalizeCycloneDxComponentTypeFilter,
|
|
20
|
+
} from "../inventory/bomUtils.js";
|
|
21
|
+
import { isHbomOnlyProjectTypes } from "../inventory/hbom.js";
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* CycloneDX spec versions accepted as generation targets in v13.
|
|
25
|
+
* 1.4 and 1.5 are below the floor; output downgrade is still supported
|
|
26
|
+
* internally by postgen.js.
|
|
27
|
+
* @type {number[]}
|
|
28
|
+
*/
|
|
29
|
+
const ACCEPTED_SPEC_VERSIONS = [1.6, 1.7, 2.0];
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* Validate the `--spec-version` value against the v13 spec floor (1.6).
|
|
33
|
+
*
|
|
34
|
+
* Returns `null` when the value is an accepted generation target, or an
|
|
35
|
+
* actionable error string when it is rejected. The error message for
|
|
36
|
+
* sub-floor versions (1.4 / 1.5) explains that output downgrade still
|
|
37
|
+
* exists, so users are not left without a migration path.
|
|
38
|
+
*
|
|
39
|
+
* @param {number} specVersion The parsed `--spec-version` value.
|
|
40
|
+
* @param {string} [commandName] The invoked binary name for the message.
|
|
41
|
+
* @returns {string|null} Error message, or `null` when valid.
|
|
42
|
+
*/
|
|
43
|
+
export function validateSpecVersion(specVersion, commandName = "cdxgen") {
|
|
44
|
+
if (specVersion === 1.4 || specVersion === 1.5) {
|
|
45
|
+
return (
|
|
46
|
+
`${commandName}: --spec-version ${specVersion} is below the v13 spec floor (1.6) and is no longer accepted as a generation target. ` +
|
|
47
|
+
"Accepted values: --spec-version 1.6, --spec-version 1.7, or --spec-version 2.0. " +
|
|
48
|
+
`Generating with 1.6 or 1.7 produces a 1.6 or 1.7 document — it will not emit CycloneDX ${specVersion}. ` +
|
|
49
|
+
`cdxgen still contains the ${specVersion} output-downgrade logic and it remains reachable by library callers that pass \`specVersion: ${specVersion}\` to createBom(); only the CLI target is restricted. ` +
|
|
50
|
+
`To get a ${specVersion} document from the CLI, generate 1.6 and convert the result with an external tool such as \`cyclonedx-cli convert --output-version v1_${String(specVersion).split(".")[1]}\`. ` +
|
|
51
|
+
"See MIGRATING-TO-V13.md for details."
|
|
52
|
+
);
|
|
53
|
+
}
|
|
54
|
+
if (!ACCEPTED_SPEC_VERSIONS.includes(Number(specVersion))) {
|
|
55
|
+
const shown = Number.isNaN(Number(specVersion))
|
|
56
|
+
? `'${specVersion}' (not a number)`
|
|
57
|
+
: String(specVersion);
|
|
58
|
+
return `${commandName}: --spec-version ${shown} is not supported. Accepted values: 1.6, 1.7, 2.0.`;
|
|
59
|
+
}
|
|
60
|
+
return null;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
/**
|
|
64
|
+
* The set of valid CycloneDX lifecycle values for the `post-build`
|
|
65
|
+
* lifecycle that have dedicated SBOM support.
|
|
66
|
+
* @type {ReadonlySet<string>}
|
|
67
|
+
*/
|
|
68
|
+
const POST_BUILD_SUPPORTED_PROJECT_TYPES = new Set([
|
|
69
|
+
"csharp",
|
|
70
|
+
"dotnet",
|
|
71
|
+
"container",
|
|
72
|
+
"docker",
|
|
73
|
+
"podman",
|
|
74
|
+
"oci",
|
|
75
|
+
"android",
|
|
76
|
+
"apk",
|
|
77
|
+
"aab",
|
|
78
|
+
"go",
|
|
79
|
+
"golang",
|
|
80
|
+
"rust",
|
|
81
|
+
"rust-lang",
|
|
82
|
+
"cargo",
|
|
83
|
+
"caxa",
|
|
84
|
+
]);
|
|
85
|
+
|
|
86
|
+
// ---------------------------------------------------------------------------
|
|
87
|
+
// Helpers
|
|
88
|
+
// ---------------------------------------------------------------------------
|
|
89
|
+
|
|
90
|
+
/**
|
|
91
|
+
* Check whether a value was explicitly provided by the user (i.e., is not
|
|
92
|
+
* the yargs default). Yargs always populates default values, so we cannot
|
|
93
|
+
* simply check for truthiness.
|
|
94
|
+
*
|
|
95
|
+
* We detect "user-provided" by checking whether the actual value differs
|
|
96
|
+
* from the declared yargs default. This is robust for primitive types
|
|
97
|
+
* (number, string, boolean) which is the case for all cdxgen CLI flags.
|
|
98
|
+
*
|
|
99
|
+
* @param {*} value The value from the parsed args
|
|
100
|
+
* @param {*} yaDefault The default declared in yargs `.option()`
|
|
101
|
+
* @returns {boolean} True when the user explicitly set this flag
|
|
102
|
+
*/
|
|
103
|
+
export function isUserProvided(value, yaDefault) {
|
|
104
|
+
return value !== undefined && value !== yaDefault;
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
/**
|
|
108
|
+
* Apply command-name-based defaults to the raw parsed args. When cdxgen is
|
|
109
|
+
* invoked via a symlink or alias (e.g. `obom`, `cbom`, `spdxgen`, `aibom`),
|
|
110
|
+
* certain args receive implicit values.
|
|
111
|
+
*
|
|
112
|
+
* **Pure function** — returns a shallow copy of `args` with mutations; the
|
|
113
|
+
* original `args` object is not modified.
|
|
114
|
+
*
|
|
115
|
+
* @param {object} args Parsed yargs argv
|
|
116
|
+
* @param {string} invokedCommandName Binary name without extension
|
|
117
|
+
* @returns {object} A shallow copy of args with alias-based defaults applied
|
|
118
|
+
*/
|
|
119
|
+
export function applyCommandNameDefaults(args, invokedCommandName) {
|
|
120
|
+
const result = { ...args };
|
|
121
|
+
|
|
122
|
+
if (invokedCommandName.includes("obom") && !result.type) {
|
|
123
|
+
result.type = ["os"];
|
|
124
|
+
}
|
|
125
|
+
if (invokedCommandName.includes("spdxgen") && !result.format) {
|
|
126
|
+
result.format = "spdx";
|
|
127
|
+
}
|
|
128
|
+
if (invokedCommandName.includes("aibom") && !result.type) {
|
|
129
|
+
result.type = ["ai"];
|
|
130
|
+
result.includeFormulation = true;
|
|
131
|
+
if (!result.bomAuditCategories) {
|
|
132
|
+
result.bomAuditCategories = "ai-bom";
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
return result;
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
/**
|
|
140
|
+
* Build the initial `options` object from parsed CLI args. This performs
|
|
141
|
+
* the field renames and derived-value computations that create the shape
|
|
142
|
+
* expected by `createBom`.
|
|
143
|
+
*
|
|
144
|
+
* @param {object} args Parsed yargs argv (after command-name
|
|
145
|
+
* defaults have been applied)
|
|
146
|
+
* @param {object} context
|
|
147
|
+
* @param {string} context.filePath Resolved source path
|
|
148
|
+
* @param {boolean} context.isRemoteOrPurl True when source is a URL or purl
|
|
149
|
+
* @returns {object} The initial options object
|
|
150
|
+
*/
|
|
151
|
+
/**
|
|
152
|
+
* Resolve the BOM output target.
|
|
153
|
+
*
|
|
154
|
+
* `-` is the stdout marker and is kept literal rather than resolved to a path,
|
|
155
|
+
* so downstream logic recognizes it before any sandbox check treats it as a
|
|
156
|
+
* writable file. Under secure mode the default filename is resolved to an
|
|
157
|
+
* absolute path so the permission prompt names a real location.
|
|
158
|
+
*
|
|
159
|
+
* @param {object} args Parsed CLI arguments
|
|
160
|
+
* @param {object} context Resolution context
|
|
161
|
+
* @param {string} context.filePath Scan path
|
|
162
|
+
* @param {boolean} context.isRemoteOrPurl Whether the scan target is remote
|
|
163
|
+
* @returns {string} Output path, or "-" for stdout
|
|
164
|
+
*/
|
|
165
|
+
function resolveOutputTarget(args, { filePath, isRemoteOrPurl }) {
|
|
166
|
+
if (args.output === "-") {
|
|
167
|
+
return "-";
|
|
168
|
+
}
|
|
169
|
+
if (!isSecureMode || args.output !== "bom.json") {
|
|
170
|
+
return args.output;
|
|
171
|
+
}
|
|
172
|
+
return isRemoteOrPurl
|
|
173
|
+
? resolve(args.output)
|
|
174
|
+
: resolve(join(filePath, args.output));
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
export function buildInitialOptions(args, { filePath, isRemoteOrPurl }) {
|
|
178
|
+
const res = Object.assign({}, args, {
|
|
179
|
+
projectType: args.type,
|
|
180
|
+
multiProject: args.recurse,
|
|
181
|
+
noBabel: args.noBabel || args.babel === false,
|
|
182
|
+
project: args.projectId,
|
|
183
|
+
deep: args.deep || args.evidence,
|
|
184
|
+
aiProvenance: args.aiProvenance,
|
|
185
|
+
output: resolveOutputTarget(args, { filePath, isRemoteOrPurl }),
|
|
186
|
+
exclude: args.exclude || args.excludeRegex,
|
|
187
|
+
include: args.include || args.includeRegex,
|
|
188
|
+
noIgnore: args.noIgnore,
|
|
189
|
+
gitAiNotesRef: args.gitAiNotesRef || "refs/notes/ai",
|
|
190
|
+
// License normalization and enrichment are on by default; the only escape
|
|
191
|
+
// hatch is the corresponding environment variable.
|
|
192
|
+
licenseEnhance:
|
|
193
|
+
readEnvironmentVariable("CDXGEN_LICENSE_ENHANCE") !== "false",
|
|
194
|
+
licenseEnrich: readEnvironmentVariable("CDXGEN_LICENSE_ENRICH") !== "false",
|
|
195
|
+
licensePolicy:
|
|
196
|
+
args.licensePolicy || readEnvironmentVariable("CDXGEN_LICENSE_POLICY"),
|
|
197
|
+
licenseRef:
|
|
198
|
+
args.licenseRef === true ||
|
|
199
|
+
readEnvironmentVariable("CDXGEN_LICENSE_REF") === "true",
|
|
200
|
+
});
|
|
201
|
+
|
|
202
|
+
if (res.licenseEnhance !== undefined) {
|
|
203
|
+
process.env.CDXGEN_LICENSE_ENHANCE = String(res.licenseEnhance);
|
|
204
|
+
}
|
|
205
|
+
if (res.licenseEnrich !== undefined) {
|
|
206
|
+
process.env.CDXGEN_LICENSE_ENRICH = String(res.licenseEnrich);
|
|
207
|
+
}
|
|
208
|
+
if (res.licensePolicy !== undefined) {
|
|
209
|
+
process.env.CDXGEN_LICENSE_POLICY = String(res.licensePolicy);
|
|
210
|
+
} else {
|
|
211
|
+
delete process.env.CDXGEN_LICENSE_POLICY;
|
|
212
|
+
}
|
|
213
|
+
if (res.licenseRef !== undefined) {
|
|
214
|
+
process.env.CDXGEN_LICENSE_REF = String(res.licenseRef);
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
return res;
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
/**
|
|
221
|
+
* @typedef {object} OptionsWarning
|
|
222
|
+
* @property {"info"|"warn"|"error"} level Severity level
|
|
223
|
+
* @property {string} message Human-readable description
|
|
224
|
+
*/
|
|
225
|
+
|
|
226
|
+
/**
|
|
227
|
+
* Apply command-specific, standard, and security overrides to the options
|
|
228
|
+
* object. This covers:
|
|
229
|
+
*
|
|
230
|
+
* - Dedup of `projectType`
|
|
231
|
+
* - `cbom` / `saasbom` command overrides
|
|
232
|
+
* - `cdxgen-secure` mode
|
|
233
|
+
* - Dry-run mode
|
|
234
|
+
* - Standards-driven specVersion default
|
|
235
|
+
* - HBOM formulation suppression
|
|
236
|
+
*
|
|
237
|
+
* **Mutates `options` in place** and returns a list of warnings that the
|
|
238
|
+
* caller should surface to the user (e.g. via `console.warn`).
|
|
239
|
+
*
|
|
240
|
+
* @param {object} options The options object from Phase 2
|
|
241
|
+
* @param {object} context
|
|
242
|
+
* @param {string} context.invokedCommandName Binary name (e.g. "cbom")
|
|
243
|
+
* @param {boolean} context.userSetSpecVersion True when the user explicitly
|
|
244
|
+
* passed `--spec-version`
|
|
245
|
+
* @param {boolean} [context.isDryRun=false] Current dry-run state
|
|
246
|
+
* @returns {OptionsWarning[]} Warnings to surface to the user
|
|
247
|
+
*/
|
|
248
|
+
export function applyPostConstructionOverrides(options, context) {
|
|
249
|
+
const { invokedCommandName, userSetSpecVersion, isDryRun = false } = context;
|
|
250
|
+
const warnings = [];
|
|
251
|
+
|
|
252
|
+
if (options.projectType && Array.isArray(options.projectType)) {
|
|
253
|
+
options.projectType = Array.from(new Set(options.projectType));
|
|
254
|
+
}
|
|
255
|
+
|
|
256
|
+
// --- cbom / saasbom command overrides ----------------------------------
|
|
257
|
+
if (["cbom", "saasbom"].includes(invokedCommandName)) {
|
|
258
|
+
if (invokedCommandName.includes("cbom")) {
|
|
259
|
+
if (normalizeCycloneDxComponentTypeFilter(options.componentType).length) {
|
|
260
|
+
warnings.push({
|
|
261
|
+
level: "error",
|
|
262
|
+
message:
|
|
263
|
+
"The cbom command does not support --component-type. Use cdxgen with --include-crypto when you need component-type filtering.",
|
|
264
|
+
});
|
|
265
|
+
}
|
|
266
|
+
options.includeCrypto = true;
|
|
267
|
+
}
|
|
268
|
+
options.evidence = true;
|
|
269
|
+
// Only set the default spec version if the user did not explicitly provide one
|
|
270
|
+
if (!userSetSpecVersion) {
|
|
271
|
+
options.specVersion = DEFAULT_CDX_SPEC_VERSION;
|
|
272
|
+
}
|
|
273
|
+
options.deep = true;
|
|
274
|
+
}
|
|
275
|
+
|
|
276
|
+
// --- cdxgen-secure command overrides -----------------------------------
|
|
277
|
+
if (invokedCommandName.includes("cdxgen-secure")) {
|
|
278
|
+
warnings.push({
|
|
279
|
+
level: "info",
|
|
280
|
+
message:
|
|
281
|
+
"NOTE: Secure mode only restricts cdxgen from performing certain activities such as package installation. It does not provide security guarantees in the presence of malicious code.",
|
|
282
|
+
});
|
|
283
|
+
options.installDeps = false;
|
|
284
|
+
}
|
|
285
|
+
|
|
286
|
+
// --- Dry-run mode overrides --------------------------------------------
|
|
287
|
+
if (isDryRun) {
|
|
288
|
+
options.installDeps = false;
|
|
289
|
+
}
|
|
290
|
+
|
|
291
|
+
// When a standard is requested, the minimum spec version is 1.6
|
|
292
|
+
if (options.standard) {
|
|
293
|
+
if (!userSetSpecVersion) {
|
|
294
|
+
options.specVersion = DEFAULT_CDX_SPEC_VERSION;
|
|
295
|
+
} else if (options.specVersion < 1.6) {
|
|
296
|
+
warnings.push({
|
|
297
|
+
level: "warn",
|
|
298
|
+
message:
|
|
299
|
+
"WARNING: Standards (definition.standards) requires CycloneDX specifications version 1.6 or above. Overriding the version to 1.6 automatically.",
|
|
300
|
+
});
|
|
301
|
+
options.specVersion = 1.6;
|
|
302
|
+
}
|
|
303
|
+
}
|
|
304
|
+
|
|
305
|
+
// --- HBOM formulation suppression --------------------------------------
|
|
306
|
+
const isHbomOnly = isHbomOnlyProjectTypes(options.projectType);
|
|
307
|
+
if (options.includeFormulation && isHbomOnly) {
|
|
308
|
+
warnings.push({
|
|
309
|
+
level: "info",
|
|
310
|
+
message:
|
|
311
|
+
"NOTE: Ignoring formulation collection for HBOM-only invocations because the resulting hardware BOM does not need workflow or dependency-tree enrichment.",
|
|
312
|
+
});
|
|
313
|
+
options.includeFormulation = false;
|
|
314
|
+
} else if (options.includeFormulation) {
|
|
315
|
+
if (options.serverUrl) {
|
|
316
|
+
warnings.push({
|
|
317
|
+
level: "warn",
|
|
318
|
+
message: `WARNING: The formulation section may include sensitive data such as emails and secrets. This data will be submitted to '${options.serverUrl}' automatically.`,
|
|
319
|
+
});
|
|
320
|
+
} else {
|
|
321
|
+
warnings.push({
|
|
322
|
+
level: "info",
|
|
323
|
+
message:
|
|
324
|
+
"NOTE: The formulation section may include sensitive data such as emails and secrets.\nPlease review the generated SBOM before distribution or LLM training.",
|
|
325
|
+
});
|
|
326
|
+
}
|
|
327
|
+
}
|
|
328
|
+
|
|
329
|
+
return warnings;
|
|
330
|
+
}
|
|
331
|
+
|
|
332
|
+
/**
|
|
333
|
+
* Apply advanced option expansion based on `profile`, `lifecycle`, and
|
|
334
|
+
* `technique` settings. This is the extracted form of the
|
|
335
|
+
* `applyAdvancedOptions()` function that was previously inline in
|
|
336
|
+
* `bin/cdxgen.js`.
|
|
337
|
+
*
|
|
338
|
+
* **Mutates `options` in place.**
|
|
339
|
+
*
|
|
340
|
+
* Design note: Several profiles unconditionally override user flags like
|
|
341
|
+
* `deep`, `evidence`, and `installDeps`. This is intentional — the profile
|
|
342
|
+
* is a "meta-flag" that sets a curated combination. When users select a
|
|
343
|
+
* profile, they opt into its opinionated defaults.
|
|
344
|
+
*
|
|
345
|
+
* @param {object} options The options object
|
|
346
|
+
* @param {object} [context]
|
|
347
|
+
* @param {boolean} [context.isSecureMode] Whether cdxgen runs in secure mode
|
|
348
|
+
* @returns {OptionsWarning[]} Warnings for the caller
|
|
349
|
+
*/
|
|
350
|
+
export function applyAdvancedOptions(options, context = {}) {
|
|
351
|
+
const secureMode = context.isSecureMode ?? isSecureMode;
|
|
352
|
+
const warnings = [];
|
|
353
|
+
const isHbomOnly = isHbomOnlyProjectTypes(options.projectType);
|
|
354
|
+
|
|
355
|
+
// --- Profile expansion -------------------------------------------------
|
|
356
|
+
switch (options.profile) {
|
|
357
|
+
case "appsec":
|
|
358
|
+
options.deep = true;
|
|
359
|
+
options.bomAudit = true;
|
|
360
|
+
break;
|
|
361
|
+
case "research":
|
|
362
|
+
options.deep = true;
|
|
363
|
+
options.evidence = true;
|
|
364
|
+
options.includeCrypto = true;
|
|
365
|
+
break;
|
|
366
|
+
case "operational":
|
|
367
|
+
if (options?.projectType) {
|
|
368
|
+
// Avoid duplicate "os" entries when the user already specified it
|
|
369
|
+
if (!options.projectType.includes("os")) {
|
|
370
|
+
options.projectType.push("os");
|
|
371
|
+
}
|
|
372
|
+
} else {
|
|
373
|
+
options.projectType = ["os"];
|
|
374
|
+
}
|
|
375
|
+
options.bomAudit = true;
|
|
376
|
+
break;
|
|
377
|
+
case "threat-modeling":
|
|
378
|
+
options.deep = true;
|
|
379
|
+
options.evidence = true;
|
|
380
|
+
options.bomAudit = true;
|
|
381
|
+
break;
|
|
382
|
+
case "license-compliance":
|
|
383
|
+
process.env.FETCH_LICENSE = "true";
|
|
384
|
+
break;
|
|
385
|
+
case "ml-tiny":
|
|
386
|
+
process.env.FETCH_LICENSE = "true";
|
|
387
|
+
options.deep = false;
|
|
388
|
+
options.evidence = false;
|
|
389
|
+
options.includeCrypto = false;
|
|
390
|
+
options.installDeps = false;
|
|
391
|
+
options.bomAudit = false;
|
|
392
|
+
break;
|
|
393
|
+
case "machine-learning":
|
|
394
|
+
case "ml":
|
|
395
|
+
process.env.FETCH_LICENSE = "true";
|
|
396
|
+
options.deep = true;
|
|
397
|
+
options.evidence = false;
|
|
398
|
+
options.includeCrypto = false;
|
|
399
|
+
options.installDeps = !secureMode;
|
|
400
|
+
break;
|
|
401
|
+
case "deep-learning":
|
|
402
|
+
case "ml-deep":
|
|
403
|
+
process.env.FETCH_LICENSE = "true";
|
|
404
|
+
options.deep = true;
|
|
405
|
+
options.evidence = true;
|
|
406
|
+
options.includeCrypto = true;
|
|
407
|
+
options.installDeps = !secureMode;
|
|
408
|
+
options.bomAudit = true;
|
|
409
|
+
break;
|
|
410
|
+
default:
|
|
411
|
+
break;
|
|
412
|
+
}
|
|
413
|
+
|
|
414
|
+
// --- Lifecycle expansion -----------------------------------------------
|
|
415
|
+
switch (options.lifecycle) {
|
|
416
|
+
case "pre-build":
|
|
417
|
+
options.installDeps = false;
|
|
418
|
+
break;
|
|
419
|
+
case "post-build":
|
|
420
|
+
if (
|
|
421
|
+
!options.projectType ||
|
|
422
|
+
!POST_BUILD_SUPPORTED_PROJECT_TYPES.has(options.projectType[0])
|
|
423
|
+
) {
|
|
424
|
+
warnings.push({
|
|
425
|
+
level: "error",
|
|
426
|
+
message:
|
|
427
|
+
"PREVIEW: post-build lifecycle SBOM generation is supported only for limited project types.",
|
|
428
|
+
});
|
|
429
|
+
}
|
|
430
|
+
options.installDeps = true;
|
|
431
|
+
break;
|
|
432
|
+
default:
|
|
433
|
+
break;
|
|
434
|
+
}
|
|
435
|
+
|
|
436
|
+
// --- Technique expansion -----------------------------------------------
|
|
437
|
+
if (options?.technique && Array.isArray(options.technique)) {
|
|
438
|
+
if (options.technique.includes("source-code-analysis")) {
|
|
439
|
+
options.deep = true;
|
|
440
|
+
options.evidence = true;
|
|
441
|
+
}
|
|
442
|
+
}
|
|
443
|
+
|
|
444
|
+
// --- BOM audit → auto-formulation --------------------------------------
|
|
445
|
+
if (options.bomAudit) {
|
|
446
|
+
if (isHbomOnly) {
|
|
447
|
+
// HBOM-only: skip formulation
|
|
448
|
+
} else if (!options.includeFormulation) {
|
|
449
|
+
warnings.push({
|
|
450
|
+
level: "info",
|
|
451
|
+
message:
|
|
452
|
+
"NOTE: Automatically collecting formulation information. The section may include sensitive data such as emails and secrets.\nPlease review the generated SBOM before distribution or LLM training.",
|
|
453
|
+
});
|
|
454
|
+
options.includeFormulation = true;
|
|
455
|
+
}
|
|
456
|
+
}
|
|
457
|
+
|
|
458
|
+
return warnings;
|
|
459
|
+
}
|
|
460
|
+
|
|
461
|
+
/**
|
|
462
|
+
* Build the complete `options` object from parsed CLI arguments.
|
|
463
|
+
*
|
|
464
|
+
* This is the single entry point that replaces the ~330 lines of inline
|
|
465
|
+
* imperative code in `bin/cdxgen.js`. It orchestrates all four phases:
|
|
466
|
+
*
|
|
467
|
+
* 1. Command-name alias expansion
|
|
468
|
+
* 2. Initial options construction (field renames, derived values)
|
|
469
|
+
* 3. Post-construction overrides (dedup, command flags, specVersion)
|
|
470
|
+
* 4. Advanced options (profile, lifecycle, technique)
|
|
471
|
+
*
|
|
472
|
+
* Returns both the options object and a list of warnings that the caller
|
|
473
|
+
* (typically `bin/cdxgen.js`) should surface to the user.
|
|
474
|
+
*
|
|
475
|
+
* @param {object} args Raw parsed yargs argv
|
|
476
|
+
* @param {object} context
|
|
477
|
+
* @param {string} context.invokedCommandName Binary name without extension
|
|
478
|
+
* @param {string} context.filePath Resolved source path
|
|
479
|
+
* @param {boolean} context.isRemoteOrPurl True for URL/purl sources
|
|
480
|
+
* @param {boolean} context.userSetSpecVersion True when the user explicitly
|
|
481
|
+
* passed `--spec-version`
|
|
482
|
+
* @param {boolean} [context.isDryRun=false] Dry-run mode
|
|
483
|
+
* @param {boolean} [context.isSecureMode] Secure mode
|
|
484
|
+
* @returns {{ options: object, warnings: OptionsWarning[] }}
|
|
485
|
+
*/
|
|
486
|
+
export function buildOptionsFromArgs(args, context) {
|
|
487
|
+
const {
|
|
488
|
+
invokedCommandName,
|
|
489
|
+
filePath,
|
|
490
|
+
isRemoteOrPurl,
|
|
491
|
+
userSetSpecVersion,
|
|
492
|
+
isDryRun = false,
|
|
493
|
+
} = context;
|
|
494
|
+
|
|
495
|
+
const expandedArgs = applyCommandNameDefaults(args, invokedCommandName);
|
|
496
|
+
const options = buildInitialOptions(expandedArgs, {
|
|
497
|
+
filePath,
|
|
498
|
+
isRemoteOrPurl,
|
|
499
|
+
});
|
|
500
|
+
const phase3Warnings = applyPostConstructionOverrides(options, {
|
|
501
|
+
invokedCommandName,
|
|
502
|
+
userSetSpecVersion,
|
|
503
|
+
isDryRun,
|
|
504
|
+
});
|
|
505
|
+
const phase4Warnings = applyAdvancedOptions(options, {
|
|
506
|
+
isSecureMode: context.isSecureMode,
|
|
507
|
+
});
|
|
508
|
+
|
|
509
|
+
return {
|
|
510
|
+
options,
|
|
511
|
+
warnings: [...phase3Warnings, ...phase4Warnings],
|
|
512
|
+
};
|
|
513
|
+
}
|