@cdxgen/cdxgen 0.0.1 → 13.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +921 -87
- package/bin/audit.js +239 -0
- package/bin/cdxgen.js +2335 -0
- package/bin/convert.js +220 -0
- package/bin/evinse.js +353 -0
- package/bin/hbom.js +504 -0
- package/bin/repl.js +2224 -0
- package/bin/sign.js +195 -0
- package/bin/tracebom.js +303 -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 +1882 -0
- package/lib/cli/cliOptions.js +543 -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 +280 -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 +920 -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 +583 -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 +1793 -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 +383 -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 +267 -0
- package/lib/inventory/traceRunner.js +439 -0
- package/lib/inventory/unicodeScan.js +147 -0
- package/lib/managers/binary.js +3459 -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 +329 -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 +50 -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 +201 -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 +22 -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 +147 -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
package/lib/core/env.js
ADDED
|
@@ -0,0 +1,719 @@
|
|
|
1
|
+
import { join } from "node:path";
|
|
2
|
+
|
|
3
|
+
import {
|
|
4
|
+
buildReadCountSuffix,
|
|
5
|
+
readEnvironmentVariable,
|
|
6
|
+
recordObservedActivity,
|
|
7
|
+
} from "./activity.js";
|
|
8
|
+
import { safeExistsSync } from "./fs.js";
|
|
9
|
+
import { thoughtLog } from "./logger.js";
|
|
10
|
+
|
|
11
|
+
/** True when running under Node.js. */
|
|
12
|
+
export const isNode = globalThis.process?.versions?.node !== undefined;
|
|
13
|
+
/** True when running under Bun. */
|
|
14
|
+
export const isBun = globalThis.Bun?.version !== undefined;
|
|
15
|
+
/** True when running under Deno. */
|
|
16
|
+
export const isDeno = globalThis.Deno?.version?.deno !== undefined;
|
|
17
|
+
|
|
18
|
+
/** Value of the CDXGEN_SPDX_CREATED_BY environment variable, or undefined when unset. */
|
|
19
|
+
export const CDXGEN_SPDX_CREATED_BY = readEnvironmentVariable(
|
|
20
|
+
"CDXGEN_SPDX_CREATED_BY",
|
|
21
|
+
);
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* Resolved table border style for console output ("ascii", "unicode", or
|
|
25
|
+
* "auto"), driven by the CDXGEN_TABLE_BORDER environment variable.
|
|
26
|
+
*/
|
|
27
|
+
export const TABLE_BORDER_STYLE = ["ascii", "unicode", "auto"].includes(
|
|
28
|
+
`${readEnvironmentVariable("CDXGEN_TABLE_BORDER") || ""}`.toLowerCase(),
|
|
29
|
+
)
|
|
30
|
+
? `${readEnvironmentVariable("CDXGEN_TABLE_BORDER")}`.toLowerCase()
|
|
31
|
+
: "auto";
|
|
32
|
+
|
|
33
|
+
/** True when test scope dependencies should be included for Maven projects (default true unless CDX_MAVEN_INCLUDE_TEST_SCOPE is explicitly false). */
|
|
34
|
+
export const includeMavenTestScope =
|
|
35
|
+
!readEnvironmentVariable("CDX_MAVEN_INCLUDE_TEST_SCOPE") ||
|
|
36
|
+
["true", "1"].includes(
|
|
37
|
+
readEnvironmentVariable("CDX_MAVEN_INCLUDE_TEST_SCOPE"),
|
|
38
|
+
);
|
|
39
|
+
|
|
40
|
+
/** True when the native Maven dependency tree command should be preferred (default true unless PREFER_MAVEN_DEPS_TREE is false/0). */
|
|
41
|
+
export const PREFER_MAVEN_DEPS_TREE = !["false", "0"].includes(
|
|
42
|
+
readEnvironmentVariable("PREFER_MAVEN_DEPS_TREE"),
|
|
43
|
+
);
|
|
44
|
+
|
|
45
|
+
/**
|
|
46
|
+
* Split a Maven arguments string into an argv array, honoring shell quoting
|
|
47
|
+
* (single and double quotes) and backslash escaping of whitespace and quotes.
|
|
48
|
+
*
|
|
49
|
+
* @param {string} argsString Raw Maven arguments string.
|
|
50
|
+
* @returns {string[]} Parsed argument array, or an empty array when input is falsy.
|
|
51
|
+
*/
|
|
52
|
+
export function parseMavenArgs(argsString) {
|
|
53
|
+
if (!argsString) {
|
|
54
|
+
return [];
|
|
55
|
+
}
|
|
56
|
+
const args = [];
|
|
57
|
+
let currentArg = "";
|
|
58
|
+
let quoteChar = "";
|
|
59
|
+
for (let i = 0; i < argsString.length; i++) {
|
|
60
|
+
const char = argsString[i];
|
|
61
|
+
if (char === "\\") {
|
|
62
|
+
const nextChar = argsString[i + 1];
|
|
63
|
+
if (
|
|
64
|
+
nextChar &&
|
|
65
|
+
(/\s/.test(nextChar) || nextChar === '"' || nextChar === "'")
|
|
66
|
+
) {
|
|
67
|
+
currentArg += nextChar;
|
|
68
|
+
i++;
|
|
69
|
+
} else {
|
|
70
|
+
currentArg += char;
|
|
71
|
+
}
|
|
72
|
+
continue;
|
|
73
|
+
}
|
|
74
|
+
if (quoteChar) {
|
|
75
|
+
if (char === quoteChar) {
|
|
76
|
+
quoteChar = "";
|
|
77
|
+
} else {
|
|
78
|
+
currentArg += char;
|
|
79
|
+
}
|
|
80
|
+
continue;
|
|
81
|
+
}
|
|
82
|
+
if (char === '"' || char === "'") {
|
|
83
|
+
quoteChar = char;
|
|
84
|
+
continue;
|
|
85
|
+
}
|
|
86
|
+
if (/\s/.test(char)) {
|
|
87
|
+
if (currentArg) {
|
|
88
|
+
args.push(currentArg);
|
|
89
|
+
currentArg = "";
|
|
90
|
+
}
|
|
91
|
+
continue;
|
|
92
|
+
}
|
|
93
|
+
currentArg += char;
|
|
94
|
+
}
|
|
95
|
+
if (currentArg) {
|
|
96
|
+
args.push(currentArg);
|
|
97
|
+
}
|
|
98
|
+
return args;
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
/**
|
|
102
|
+
* Determines whether license information should be fetched from remote sources,
|
|
103
|
+
* based on the FETCH_LICENSE environment variable.
|
|
104
|
+
*
|
|
105
|
+
* @returns {boolean} True if the FETCH_LICENSE env var is set to "true" or "1"
|
|
106
|
+
*/
|
|
107
|
+
export function shouldFetchLicense() {
|
|
108
|
+
return (
|
|
109
|
+
readEnvironmentVariable("FETCH_LICENSE") &&
|
|
110
|
+
["true", "1"].includes(readEnvironmentVariable("FETCH_LICENSE"))
|
|
111
|
+
);
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
/**
|
|
115
|
+
* Determines whether remote package metadata should be fetched for enrichment.
|
|
116
|
+
*
|
|
117
|
+
* @returns {boolean} True when registry metadata enrichment is enabled.
|
|
118
|
+
*/
|
|
119
|
+
export function shouldFetchPackageMetadata() {
|
|
120
|
+
return (
|
|
121
|
+
shouldFetchLicense() ||
|
|
122
|
+
(readEnvironmentVariable("CDXGEN_FETCH_PKG_METADATA") &&
|
|
123
|
+
["true", "1"].includes(
|
|
124
|
+
readEnvironmentVariable("CDXGEN_FETCH_PKG_METADATA"),
|
|
125
|
+
))
|
|
126
|
+
);
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
/**
|
|
130
|
+
* Determines whether VCS (version control system) information should be fetched
|
|
131
|
+
* for Go packages, based on the GO_FETCH_VCS environment variable.
|
|
132
|
+
*
|
|
133
|
+
* @returns {boolean} True if the GO_FETCH_VCS env var is set to "true" or "1"
|
|
134
|
+
*/
|
|
135
|
+
export function shouldFetchVCS() {
|
|
136
|
+
return (
|
|
137
|
+
readEnvironmentVariable("GO_FETCH_VCS") &&
|
|
138
|
+
["true", "1"].includes(readEnvironmentVariable("GO_FETCH_VCS"))
|
|
139
|
+
);
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
/** True when license information should be fetched from remote sources (FETCH_LICENSE env var). */
|
|
143
|
+
export const FETCH_LICENSE = shouldFetchLicense();
|
|
144
|
+
|
|
145
|
+
/** True when search.maven.org should be used to identify jars without Maven metadata (default true unless SEARCH_MAVEN_ORG is explicitly false). */
|
|
146
|
+
export const SEARCH_MAVEN_ORG =
|
|
147
|
+
!readEnvironmentVariable("SEARCH_MAVEN_ORG") ||
|
|
148
|
+
["true", "1"].includes(readEnvironmentVariable("SEARCH_MAVEN_ORG"));
|
|
149
|
+
|
|
150
|
+
/** Resolved Java executable command (JAVA_CMD env var > JAVA_HOME/bin/java > "java"). */
|
|
151
|
+
export const JAVA_CMD = getJavaCommand();
|
|
152
|
+
|
|
153
|
+
/**
|
|
154
|
+
* Returns the Java executable command to use, resolved in priority order:
|
|
155
|
+
* JAVA_CMD env var > JAVA_HOME/bin/java > "java".
|
|
156
|
+
*
|
|
157
|
+
* @returns {string} Path or name of the Java executable
|
|
158
|
+
*/
|
|
159
|
+
export function getJavaCommand() {
|
|
160
|
+
let javaCmd = "java";
|
|
161
|
+
if (readEnvironmentVariable("JAVA_CMD")) {
|
|
162
|
+
javaCmd = readEnvironmentVariable("JAVA_CMD");
|
|
163
|
+
} else if (
|
|
164
|
+
readEnvironmentVariable("JAVA_HOME") &&
|
|
165
|
+
safeExistsSync(readEnvironmentVariable("JAVA_HOME")) &&
|
|
166
|
+
safeExistsSync(join(readEnvironmentVariable("JAVA_HOME"), "bin", "java"))
|
|
167
|
+
) {
|
|
168
|
+
javaCmd = join(readEnvironmentVariable("JAVA_HOME"), "bin", "java");
|
|
169
|
+
}
|
|
170
|
+
return javaCmd;
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
/** Resolved Python executable command (PYTHON_CMD env var > CONDA_PYTHON_EXE > "python"). */
|
|
174
|
+
export const PYTHON_CMD = getPythonCommand();
|
|
175
|
+
|
|
176
|
+
/**
|
|
177
|
+
* Returns the Python executable command to use, resolved in priority order:
|
|
178
|
+
* PYTHON_CMD env var > CONDA_PYTHON_EXE env var > "python".
|
|
179
|
+
*
|
|
180
|
+
* @returns {string} Path or name of the Python executable
|
|
181
|
+
*/
|
|
182
|
+
export function getPythonCommand() {
|
|
183
|
+
let pythonCmd = "python";
|
|
184
|
+
if (readEnvironmentVariable("PYTHON_CMD")) {
|
|
185
|
+
pythonCmd = readEnvironmentVariable("PYTHON_CMD");
|
|
186
|
+
} else if (readEnvironmentVariable("CONDA_PYTHON_EXE")) {
|
|
187
|
+
pythonCmd = readEnvironmentVariable("CONDA_PYTHON_EXE");
|
|
188
|
+
}
|
|
189
|
+
return pythonCmd;
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
/** Resolved .NET CLI command (DOTNET_CMD env var, or "dotnet"). */
|
|
193
|
+
export let DOTNET_CMD = "dotnet";
|
|
194
|
+
if (readEnvironmentVariable("DOTNET_CMD")) {
|
|
195
|
+
DOTNET_CMD = readEnvironmentVariable("DOTNET_CMD");
|
|
196
|
+
}
|
|
197
|
+
/** Resolved Node.js executable command (NODE_CMD env var, or "node"). */
|
|
198
|
+
export let NODE_CMD = "node";
|
|
199
|
+
if (readEnvironmentVariable("NODE_CMD")) {
|
|
200
|
+
NODE_CMD = readEnvironmentVariable("NODE_CMD");
|
|
201
|
+
}
|
|
202
|
+
/** Resolved npm executable command (NPM_CMD env var, or "npm"). */
|
|
203
|
+
export let NPM_CMD = "npm";
|
|
204
|
+
if (readEnvironmentVariable("NPM_CMD")) {
|
|
205
|
+
NPM_CMD = readEnvironmentVariable("NPM_CMD");
|
|
206
|
+
}
|
|
207
|
+
/** Resolved Yarn executable command (YARN_CMD env var, or "yarn"). */
|
|
208
|
+
export let YARN_CMD = "yarn";
|
|
209
|
+
if (readEnvironmentVariable("YARN_CMD")) {
|
|
210
|
+
YARN_CMD = readEnvironmentVariable("YARN_CMD");
|
|
211
|
+
}
|
|
212
|
+
/** Resolved GCC executable command (GCC_CMD env var, or "gcc"). */
|
|
213
|
+
export let GCC_CMD = "gcc";
|
|
214
|
+
if (readEnvironmentVariable("GCC_CMD")) {
|
|
215
|
+
GCC_CMD = readEnvironmentVariable("GCC_CMD");
|
|
216
|
+
}
|
|
217
|
+
/** Resolved rustc executable command (RUSTC_CMD env var, or "rustc"). */
|
|
218
|
+
export let RUSTC_CMD = "rustc";
|
|
219
|
+
if (readEnvironmentVariable("RUSTC_CMD")) {
|
|
220
|
+
RUSTC_CMD = readEnvironmentVariable("RUSTC_CMD");
|
|
221
|
+
}
|
|
222
|
+
/** Resolved Go executable command (GO_CMD env var, or "go"). */
|
|
223
|
+
export let GO_CMD = "go";
|
|
224
|
+
if (readEnvironmentVariable("GO_CMD")) {
|
|
225
|
+
GO_CMD = readEnvironmentVariable("GO_CMD");
|
|
226
|
+
}
|
|
227
|
+
/** Resolved Cargo executable command (CARGO_CMD env var, or "cargo"). */
|
|
228
|
+
export let CARGO_CMD = "cargo";
|
|
229
|
+
if (readEnvironmentVariable("CARGO_CMD")) {
|
|
230
|
+
CARGO_CMD = readEnvironmentVariable("CARGO_CMD");
|
|
231
|
+
}
|
|
232
|
+
|
|
233
|
+
/** Resolved Clojure CLI executable command (CLJ_CMD env var, or "clj"). */
|
|
234
|
+
export let CLJ_CMD = "clj";
|
|
235
|
+
if (readEnvironmentVariable("CLJ_CMD")) {
|
|
236
|
+
CLJ_CMD = readEnvironmentVariable("CLJ_CMD");
|
|
237
|
+
}
|
|
238
|
+
|
|
239
|
+
/** Resolved Leiningen executable command (LEIN_CMD env var, or "lein"). */
|
|
240
|
+
export let LEIN_CMD = "lein";
|
|
241
|
+
if (readEnvironmentVariable("LEIN_CMD")) {
|
|
242
|
+
LEIN_CMD = readEnvironmentVariable("LEIN_CMD");
|
|
243
|
+
}
|
|
244
|
+
|
|
245
|
+
/** Resolved temp directory used by cdxgen (CDXGEN_TEMP_DIR env var, or "temp"). */
|
|
246
|
+
export let CDXGEN_TEMP_DIR = "temp";
|
|
247
|
+
if (readEnvironmentVariable("CDXGEN_TEMP_DIR")) {
|
|
248
|
+
CDXGEN_TEMP_DIR = readEnvironmentVariable("CDXGEN_TEMP_DIR");
|
|
249
|
+
}
|
|
250
|
+
|
|
251
|
+
/** Resolved Swift executable command (SWIFT_CMD env var, or "swift"). */
|
|
252
|
+
export const SWIFT_CMD = readEnvironmentVariable("SWIFT_CMD") || "swift";
|
|
253
|
+
|
|
254
|
+
/** Resolved Ruby executable command (RUBY_CMD env var, or "ruby"). */
|
|
255
|
+
export const RUBY_CMD = readEnvironmentVariable("RUBY_CMD") || "ruby";
|
|
256
|
+
|
|
257
|
+
/** Python package components that can be excluded from the generated BOM. */
|
|
258
|
+
export const PYTHON_EXCLUDED_COMPONENTS = [
|
|
259
|
+
"pip",
|
|
260
|
+
"setuptools",
|
|
261
|
+
"wheel",
|
|
262
|
+
"conda",
|
|
263
|
+
"conda-build",
|
|
264
|
+
"conda-index",
|
|
265
|
+
"conda-libmamba-solver",
|
|
266
|
+
"conda-package-handling",
|
|
267
|
+
"conda-package-streaming",
|
|
268
|
+
"conda-content-trust",
|
|
269
|
+
];
|
|
270
|
+
|
|
271
|
+
/** Map of base cdxgen project type to the array of accepted alias strings. */
|
|
272
|
+
export const PROJECT_TYPE_ALIASES = {
|
|
273
|
+
java: [
|
|
274
|
+
"java",
|
|
275
|
+
"java8",
|
|
276
|
+
"java11",
|
|
277
|
+
"java17",
|
|
278
|
+
"java21",
|
|
279
|
+
"java22",
|
|
280
|
+
"java23",
|
|
281
|
+
"java24",
|
|
282
|
+
"java25",
|
|
283
|
+
"java26",
|
|
284
|
+
"groovy",
|
|
285
|
+
"kotlin",
|
|
286
|
+
"kt",
|
|
287
|
+
"scala",
|
|
288
|
+
"jvm",
|
|
289
|
+
"gradle",
|
|
290
|
+
"mvn",
|
|
291
|
+
"maven",
|
|
292
|
+
"sbt",
|
|
293
|
+
"bazel",
|
|
294
|
+
"quarkus",
|
|
295
|
+
"mill",
|
|
296
|
+
],
|
|
297
|
+
android: ["android", "apk", "aab"],
|
|
298
|
+
jar: ["jar", "war", "ear"],
|
|
299
|
+
"gradle-index": ["gradle-index", "gradle-cache"],
|
|
300
|
+
"sbt-index": ["sbt-index", "sbt-cache"],
|
|
301
|
+
"maven-index": ["maven-index", "maven-cache", "maven-core"],
|
|
302
|
+
"cargo-cache": ["cargo-cache", "cargo-index"],
|
|
303
|
+
js: [
|
|
304
|
+
"npm",
|
|
305
|
+
"pnpm",
|
|
306
|
+
"nodejs",
|
|
307
|
+
"nodejs8",
|
|
308
|
+
"nodejs10",
|
|
309
|
+
"nodejs12",
|
|
310
|
+
"nodejs14",
|
|
311
|
+
"nodejs16",
|
|
312
|
+
"nodejs18",
|
|
313
|
+
"nodejs20",
|
|
314
|
+
"nodejs22",
|
|
315
|
+
"nodejs23",
|
|
316
|
+
"node",
|
|
317
|
+
"node8",
|
|
318
|
+
"node10",
|
|
319
|
+
"node12",
|
|
320
|
+
"node14",
|
|
321
|
+
"node16",
|
|
322
|
+
"node18",
|
|
323
|
+
"node20",
|
|
324
|
+
"node22",
|
|
325
|
+
"node23",
|
|
326
|
+
"js",
|
|
327
|
+
"javascript",
|
|
328
|
+
"typescript",
|
|
329
|
+
"ts",
|
|
330
|
+
"tsx",
|
|
331
|
+
"yarn",
|
|
332
|
+
"rush",
|
|
333
|
+
"bun",
|
|
334
|
+
"deno",
|
|
335
|
+
],
|
|
336
|
+
mcp: ["mcp"],
|
|
337
|
+
"ai-skill": ["ai-skill", "skill", "skills"],
|
|
338
|
+
py: [
|
|
339
|
+
"py",
|
|
340
|
+
"python",
|
|
341
|
+
"pypi",
|
|
342
|
+
"python36",
|
|
343
|
+
"python38",
|
|
344
|
+
"python39",
|
|
345
|
+
"python310",
|
|
346
|
+
"python311",
|
|
347
|
+
"python312",
|
|
348
|
+
"python313",
|
|
349
|
+
"pixi",
|
|
350
|
+
"pip",
|
|
351
|
+
"poetry",
|
|
352
|
+
"uv",
|
|
353
|
+
"pdm",
|
|
354
|
+
"rye",
|
|
355
|
+
"hatch",
|
|
356
|
+
"conda",
|
|
357
|
+
"miniconda",
|
|
358
|
+
"pyenv",
|
|
359
|
+
"mojo",
|
|
360
|
+
],
|
|
361
|
+
go: ["go", "golang", "gomod", "gopkg"],
|
|
362
|
+
rust: ["rust", "rust-lang", "cargo", "rs"],
|
|
363
|
+
php: ["php", "composer", "wordpress"],
|
|
364
|
+
ruby: ["ruby", "gems", "rubygems", "bundler", "rb", "gemspec"],
|
|
365
|
+
csharp: [
|
|
366
|
+
"csharp",
|
|
367
|
+
"netcore",
|
|
368
|
+
"netcore2.1",
|
|
369
|
+
"netcore3.1",
|
|
370
|
+
"dotnet",
|
|
371
|
+
"dotnet6",
|
|
372
|
+
"dotnet7",
|
|
373
|
+
"dotnet8",
|
|
374
|
+
"dotnet9",
|
|
375
|
+
"dotnet-framework",
|
|
376
|
+
"dotnet-framework47",
|
|
377
|
+
"dotnet-framework48",
|
|
378
|
+
"vb",
|
|
379
|
+
"vbnet",
|
|
380
|
+
"visualbasic",
|
|
381
|
+
"f#",
|
|
382
|
+
"fs",
|
|
383
|
+
"fsharp",
|
|
384
|
+
"twincat",
|
|
385
|
+
"csproj",
|
|
386
|
+
"tsproj",
|
|
387
|
+
"vbproj",
|
|
388
|
+
"sln",
|
|
389
|
+
"fsproj",
|
|
390
|
+
"plcproj",
|
|
391
|
+
"hmiproj",
|
|
392
|
+
],
|
|
393
|
+
dart: ["dart", "flutter", "pub"],
|
|
394
|
+
haskell: ["haskell", "hackage", "cabal"],
|
|
395
|
+
elixir: ["elixir", "hex", "mix"],
|
|
396
|
+
c: ["c", "cpp", "c++", "conan", "collider"],
|
|
397
|
+
clojure: ["clojure", "edn", "clj", "leiningen"],
|
|
398
|
+
github: ["github", "actions"],
|
|
399
|
+
hbom: ["hbom", "hardware"],
|
|
400
|
+
os: ["os", "osquery", "windows", "linux", "mac", "macos", "darwin"],
|
|
401
|
+
jenkins: ["jenkins", "hpi"],
|
|
402
|
+
helm: ["helm", "charts"],
|
|
403
|
+
"helm-index": ["helm-index", "helm-repo"],
|
|
404
|
+
universal: [
|
|
405
|
+
"universal",
|
|
406
|
+
"containerfile",
|
|
407
|
+
"docker-compose",
|
|
408
|
+
"dockerfile",
|
|
409
|
+
"swarm",
|
|
410
|
+
"tekton",
|
|
411
|
+
"kustomize",
|
|
412
|
+
"operator",
|
|
413
|
+
"skaffold",
|
|
414
|
+
"kubernetes",
|
|
415
|
+
"openshift",
|
|
416
|
+
"yaml-manifest",
|
|
417
|
+
],
|
|
418
|
+
cloudbuild: ["cloudbuild"],
|
|
419
|
+
swift: [
|
|
420
|
+
"swift",
|
|
421
|
+
"ios",
|
|
422
|
+
"macos",
|
|
423
|
+
"swiftpm",
|
|
424
|
+
"ipados",
|
|
425
|
+
"tvos",
|
|
426
|
+
"watchos",
|
|
427
|
+
"visionos",
|
|
428
|
+
],
|
|
429
|
+
binary: ["binary", "blint"],
|
|
430
|
+
oci: ["docker", "oci", "container", "podman", "rootfs", "oci-dir"],
|
|
431
|
+
cocoa: ["cocoa", "cocoapods", "objective-c", "swift", "ios"],
|
|
432
|
+
scala: ["scala", "scala3", "sbt", "mill"],
|
|
433
|
+
nix: ["nix", "nixos", "flake"],
|
|
434
|
+
zig: ["zig", "zon"],
|
|
435
|
+
gleam: ["gleam"],
|
|
436
|
+
caxa: ["caxa"],
|
|
437
|
+
asar: ["asar", "electron", "electron-asar"],
|
|
438
|
+
"vscode-extension": [
|
|
439
|
+
"vscode-extension",
|
|
440
|
+
"vsix",
|
|
441
|
+
"vscode",
|
|
442
|
+
"openvsx",
|
|
443
|
+
"vscode-extensions",
|
|
444
|
+
"ide-extension",
|
|
445
|
+
"ide-extensions",
|
|
446
|
+
],
|
|
447
|
+
"chrome-extension": [
|
|
448
|
+
"chrome-extension",
|
|
449
|
+
"chrome-extensions",
|
|
450
|
+
"chromium-extension",
|
|
451
|
+
"chromium-extensions",
|
|
452
|
+
],
|
|
453
|
+
dynamic: ["dynamic", "trace"],
|
|
454
|
+
"ai-provenance": ["ai-provenance", "ai-authorship", "aicode", "ai-codegen"],
|
|
455
|
+
};
|
|
456
|
+
|
|
457
|
+
/** Map of base package manager to the array of accepted alias strings. */
|
|
458
|
+
export const PACKAGE_MANAGER_ALIASES = {
|
|
459
|
+
scala: ["sbt"],
|
|
460
|
+
};
|
|
461
|
+
|
|
462
|
+
/**
|
|
463
|
+
* Method to check if a given feature flag is enabled.
|
|
464
|
+
*
|
|
465
|
+
* @param {Object} cliOptions CLI options
|
|
466
|
+
* @param {String} feature Feature flag
|
|
467
|
+
*
|
|
468
|
+
* @returns {Boolean} True if the feature is enabled
|
|
469
|
+
*/
|
|
470
|
+
export function isFeatureEnabled(cliOptions, feature) {
|
|
471
|
+
if (cliOptions?.featureFlags?.includes(feature)) {
|
|
472
|
+
return true;
|
|
473
|
+
}
|
|
474
|
+
if (
|
|
475
|
+
readEnvironmentVariable(feature.toUpperCase()) &&
|
|
476
|
+
["true", "1"].includes(readEnvironmentVariable(feature.toUpperCase()))
|
|
477
|
+
) {
|
|
478
|
+
return true;
|
|
479
|
+
}
|
|
480
|
+
// Retry by replacing hyphens with underscore
|
|
481
|
+
return !!(
|
|
482
|
+
readEnvironmentVariable(feature.replaceAll("-", "_").toUpperCase()) &&
|
|
483
|
+
["true", "1"].includes(
|
|
484
|
+
readEnvironmentVariable(feature.replaceAll("-", "_").toUpperCase()),
|
|
485
|
+
)
|
|
486
|
+
);
|
|
487
|
+
}
|
|
488
|
+
|
|
489
|
+
/**
|
|
490
|
+
* Method to check if the given project types are allowed by checking against include and exclude types passed from the CLI arguments.
|
|
491
|
+
*
|
|
492
|
+
* @param {Array} projectTypes project types to check
|
|
493
|
+
* @param {Object} options CLI options
|
|
494
|
+
* @param {Boolean} defaultStatus Default return value if there are no types provided
|
|
495
|
+
*/
|
|
496
|
+
export function hasAnyProjectType(projectTypes, options, defaultStatus = true) {
|
|
497
|
+
// If no project type is specified, then consider it as yes
|
|
498
|
+
if (
|
|
499
|
+
!projectTypes ||
|
|
500
|
+
(!options.projectType?.length && !options.excludeType?.length)
|
|
501
|
+
) {
|
|
502
|
+
return defaultStatus;
|
|
503
|
+
}
|
|
504
|
+
// Convert string project types to an array
|
|
505
|
+
if (
|
|
506
|
+
projectTypes &&
|
|
507
|
+
(typeof projectTypes === "string" || projectTypes instanceof String)
|
|
508
|
+
) {
|
|
509
|
+
projectTypes = projectTypes.split(",");
|
|
510
|
+
}
|
|
511
|
+
// If only exclude type is specified, then do not allow oci type
|
|
512
|
+
if (
|
|
513
|
+
(projectTypes?.length === 1 || !defaultStatus) &&
|
|
514
|
+
!options.projectType?.length &&
|
|
515
|
+
options.excludeType?.length
|
|
516
|
+
) {
|
|
517
|
+
const isExcluded = projectTypes.some((pt) => {
|
|
518
|
+
const ptLower = pt.toLowerCase();
|
|
519
|
+
if (options.excludeType.includes(ptLower)) {
|
|
520
|
+
return true;
|
|
521
|
+
}
|
|
522
|
+
for (const et of options.excludeType) {
|
|
523
|
+
const etLower = et.toLowerCase();
|
|
524
|
+
for (const [key, aliases] of Object.entries(PROJECT_TYPE_ALIASES)) {
|
|
525
|
+
if (
|
|
526
|
+
(key === etLower || aliases.includes(etLower)) &&
|
|
527
|
+
(key === ptLower || aliases.includes(ptLower))
|
|
528
|
+
) {
|
|
529
|
+
return true;
|
|
530
|
+
}
|
|
531
|
+
}
|
|
532
|
+
}
|
|
533
|
+
return false;
|
|
534
|
+
});
|
|
535
|
+
if (isExcluded) {
|
|
536
|
+
return false;
|
|
537
|
+
}
|
|
538
|
+
return (
|
|
539
|
+
!projectTypes.includes("oci") &&
|
|
540
|
+
!projectTypes.includes("oci-dir") &&
|
|
541
|
+
!projectTypes.includes("os") &&
|
|
542
|
+
!projectTypes.includes("docker") &&
|
|
543
|
+
!options.excludeType.includes("oci")
|
|
544
|
+
);
|
|
545
|
+
}
|
|
546
|
+
const allProjectTypes = [...projectTypes];
|
|
547
|
+
// Convert the project types into base types
|
|
548
|
+
const baseProjectTypes = [];
|
|
549
|
+
// Support for arbitrary versioned ruby type
|
|
550
|
+
if (
|
|
551
|
+
options.projectType?.length &&
|
|
552
|
+
projectTypes.filter((p) => p.startsWith("ruby")).length
|
|
553
|
+
) {
|
|
554
|
+
baseProjectTypes.push("ruby");
|
|
555
|
+
}
|
|
556
|
+
const baseExcludeTypes = [];
|
|
557
|
+
for (const abt of Object.keys(PROJECT_TYPE_ALIASES)) {
|
|
558
|
+
if (
|
|
559
|
+
PROJECT_TYPE_ALIASES[abt].filter((pt) =>
|
|
560
|
+
new Set(options?.projectType).has(pt),
|
|
561
|
+
).length
|
|
562
|
+
) {
|
|
563
|
+
baseProjectTypes.push(abt);
|
|
564
|
+
}
|
|
565
|
+
if (
|
|
566
|
+
PROJECT_TYPE_ALIASES[abt].filter((pt) => new Set(projectTypes).has(pt))
|
|
567
|
+
.length
|
|
568
|
+
) {
|
|
569
|
+
allProjectTypes.push(abt);
|
|
570
|
+
}
|
|
571
|
+
if (
|
|
572
|
+
PROJECT_TYPE_ALIASES[abt].filter((pt) =>
|
|
573
|
+
new Set(options?.excludeType).has(pt),
|
|
574
|
+
).length
|
|
575
|
+
) {
|
|
576
|
+
baseExcludeTypes.push(abt);
|
|
577
|
+
}
|
|
578
|
+
}
|
|
579
|
+
const shouldInclude =
|
|
580
|
+
!options.projectType?.length ||
|
|
581
|
+
options.projectType?.includes("universal") ||
|
|
582
|
+
options.projectType?.filter((pt) => new Set(allProjectTypes).has(pt))
|
|
583
|
+
.length > 0 ||
|
|
584
|
+
baseProjectTypes.filter((pt) => new Set(allProjectTypes).has(pt)).length >
|
|
585
|
+
0;
|
|
586
|
+
if (shouldInclude && options.excludeType) {
|
|
587
|
+
return (
|
|
588
|
+
!baseExcludeTypes.filter((pt) => pt && new Set(baseProjectTypes).has(pt))
|
|
589
|
+
.length &&
|
|
590
|
+
!baseExcludeTypes.filter((pt) => pt && new Set(allProjectTypes).has(pt))
|
|
591
|
+
.length
|
|
592
|
+
);
|
|
593
|
+
}
|
|
594
|
+
return shouldInclude;
|
|
595
|
+
}
|
|
596
|
+
|
|
597
|
+
/**
|
|
598
|
+
* Determine whether the predictive dependency audit should run for the current
|
|
599
|
+
* CLI invocation.
|
|
600
|
+
*
|
|
601
|
+
* OBOM-focused runs (`obom` or explicit `-t os` / OS aliases only) should keep
|
|
602
|
+
* the direct BOM audit findings but skip the predictive dependency audit.
|
|
603
|
+
*
|
|
604
|
+
* @param {object} options CLI options
|
|
605
|
+
* @param {string} [commandPath] Invoked command path or name
|
|
606
|
+
* @returns {boolean} True when predictive dependency audit should run
|
|
607
|
+
*/
|
|
608
|
+
export function shouldRunPredictiveBomAudit(options, commandPath) {
|
|
609
|
+
const normalizedCommandPath = `${commandPath || ""}`.toLowerCase();
|
|
610
|
+
if (normalizedCommandPath.includes("obom")) {
|
|
611
|
+
return false;
|
|
612
|
+
}
|
|
613
|
+
if (normalizedCommandPath.includes("hbom")) {
|
|
614
|
+
return false;
|
|
615
|
+
}
|
|
616
|
+
const projectTypes = Array.isArray(options?.projectType)
|
|
617
|
+
? options.projectType
|
|
618
|
+
: typeof options?.projectType === "string"
|
|
619
|
+
? options.projectType.split(",")
|
|
620
|
+
: [];
|
|
621
|
+
const normalizedProjectTypes = projectTypes
|
|
622
|
+
.map((projectType) => `${projectType || ""}`.trim().toLowerCase())
|
|
623
|
+
.filter(Boolean);
|
|
624
|
+
if (!normalizedProjectTypes.length) {
|
|
625
|
+
return true;
|
|
626
|
+
}
|
|
627
|
+
const hbomProjectTypes = new Set(["hbom", "hardware"]);
|
|
628
|
+
if (
|
|
629
|
+
normalizedProjectTypes.every((projectType) =>
|
|
630
|
+
hbomProjectTypes.has(projectType),
|
|
631
|
+
)
|
|
632
|
+
) {
|
|
633
|
+
return false;
|
|
634
|
+
}
|
|
635
|
+
const osProjectTypes = new Set(["os", ...(PROJECT_TYPE_ALIASES.os || [])]);
|
|
636
|
+
return !normalizedProjectTypes.every((projectType) =>
|
|
637
|
+
osProjectTypes.has(projectType),
|
|
638
|
+
);
|
|
639
|
+
}
|
|
640
|
+
|
|
641
|
+
/**
|
|
642
|
+
* Convenient method to check if the given package manager is allowed.
|
|
643
|
+
*
|
|
644
|
+
* @param {String} name Package manager name
|
|
645
|
+
* @param {Array} conflictingManagers List of package managers
|
|
646
|
+
* @param {Object} options CLI options
|
|
647
|
+
*
|
|
648
|
+
* @returns {Boolean} True if the package manager is allowed
|
|
649
|
+
*/
|
|
650
|
+
export function isPackageManagerAllowed(name, conflictingManagers, options) {
|
|
651
|
+
for (const apm of conflictingManagers) {
|
|
652
|
+
if (options?.projectType?.includes(apm)) {
|
|
653
|
+
return false;
|
|
654
|
+
}
|
|
655
|
+
}
|
|
656
|
+
const res = !options.excludeType?.filter(
|
|
657
|
+
(p) => p === name || PACKAGE_MANAGER_ALIASES[p]?.includes(name),
|
|
658
|
+
).length;
|
|
659
|
+
if (res) {
|
|
660
|
+
thoughtLog(
|
|
661
|
+
`**PACKAGE MANAGER**: Let's make use of the package manager '${name}', which is allowed.`,
|
|
662
|
+
);
|
|
663
|
+
}
|
|
664
|
+
return res;
|
|
665
|
+
}
|
|
666
|
+
|
|
667
|
+
/**
|
|
668
|
+
* Function to parse a list of environment variables to identify the paths containing executable binaries
|
|
669
|
+
*
|
|
670
|
+
* @param envValues {Array[String]} Environment variables list
|
|
671
|
+
* @returns {Array[String]} Binary Paths identified from the environment variables
|
|
672
|
+
*/
|
|
673
|
+
export function extractPathEnv(envValues) {
|
|
674
|
+
if (!envValues) {
|
|
675
|
+
return [];
|
|
676
|
+
}
|
|
677
|
+
let binPaths = new Set();
|
|
678
|
+
const shellVariables = {};
|
|
679
|
+
// Let's focus only on linux container images for now
|
|
680
|
+
for (const env of envValues) {
|
|
681
|
+
if (env.startsWith("PATH=")) {
|
|
682
|
+
binPaths = new Set(env.replace("PATH=", "").split(":"));
|
|
683
|
+
} else {
|
|
684
|
+
const tmpA = env.split("=");
|
|
685
|
+
if (tmpA.length === 2) {
|
|
686
|
+
shellVariables[`$${tmpA[0]}`] = tmpA[1];
|
|
687
|
+
shellVariables[`\${${tmpA[0]}}`] = tmpA[1];
|
|
688
|
+
}
|
|
689
|
+
}
|
|
690
|
+
}
|
|
691
|
+
binPaths = Array.from(binPaths);
|
|
692
|
+
const expandedBinPaths = [];
|
|
693
|
+
for (let apath of binPaths) {
|
|
694
|
+
// Filter empty paths
|
|
695
|
+
if (!apath.length) {
|
|
696
|
+
continue;
|
|
697
|
+
}
|
|
698
|
+
if (apath.includes("$")) {
|
|
699
|
+
for (const k of Object.keys(shellVariables)) {
|
|
700
|
+
apath = apath.replace(k, shellVariables[k]);
|
|
701
|
+
}
|
|
702
|
+
}
|
|
703
|
+
// We're here, but not all paths got substituted
|
|
704
|
+
// Let's ignore them for now instead of risking substitution based on host values.
|
|
705
|
+
// Eg: ${GITHUB_TOKEN} could get expanded with the values from the host
|
|
706
|
+
if (apath.length && !apath.includes("$")) {
|
|
707
|
+
expandedBinPaths.push(apath);
|
|
708
|
+
}
|
|
709
|
+
}
|
|
710
|
+
recordObservedActivity("path-resolution", "PATH", {
|
|
711
|
+
metadata: {
|
|
712
|
+
capability: "path-lookup",
|
|
713
|
+
pathCount: expandedBinPaths.length,
|
|
714
|
+
},
|
|
715
|
+
reasonBuilder: (count) =>
|
|
716
|
+
`Expanded PATH into ${expandedBinPaths.length} executable search path(s)${buildReadCountSuffix(count)}.`,
|
|
717
|
+
});
|
|
718
|
+
return expandedBinPaths;
|
|
719
|
+
}
|