@cdxgen/cdxgen 13.5.0 → 13.6.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 +6 -6
- package/bin/cdxgen.js +4 -0
- package/bin/evinse.js +3 -0
- package/bin/validate.js +6 -0
- package/data/license-aliases.json +24 -2
- package/data/remediations.json +124 -0
- package/data/rules/ai-bom.yaml +1 -1
- package/data/rules/brotli-decoder.yaml +107 -0
- package/data/rules/vscode-extensions.yaml +75 -0
- package/data/spdx-license-list.json +121 -7
- package/data/spdx-licenses.json +69 -0
- package/data/spdx.schema.json +845 -2
- package/lib/cli/bomAssembly.js +92 -3
- package/lib/cli/index.js +108 -1
- package/lib/cli/jsBom.js +153 -64
- package/lib/cli/jvmBom.js +237 -46
- package/lib/cli/managedBom.js +142 -16
- package/lib/cli/nativeBom.js +42 -5
- package/lib/core/boundedFile.js +344 -0
- package/lib/core/brotliProbe.js +182 -0
- package/lib/core/env.js +8 -0
- package/lib/core/fs.js +12 -0
- package/lib/core/httpClient.js +98 -1
- package/lib/core/lockPaths.js +38 -0
- package/lib/core/paths.js +24 -1
- package/lib/core/processTree.js +5 -0
- package/lib/core/toolRegistry.js +170 -0
- package/lib/ecosystems/cppEvidence.js +263 -106
- package/lib/ecosystems/cppIncludeResolver.js +16 -5
- package/lib/ecosystems/ecosystems.js +25 -10
- package/lib/ecosystems/gemHostProbe.js +301 -0
- package/lib/ecosystems/gradleutils.js +828 -224
- package/lib/ecosystems/parsers-bazel.js +107 -6
- package/lib/ecosystems/parsers-js.js +505 -22
- package/lib/ecosystems/parsers-misc.js +209 -20
- package/lib/ecosystems/parsers-python.js +89 -2
- package/lib/ecosystems/pythonutils.js +128 -2
- package/lib/ecosystems/rubyutils.js +538 -31
- package/lib/ecosystems/scalacliutils.js +2 -0
- package/lib/ecosystems/scalasem.js +796 -151
- package/lib/ecosystems/vendoredCode.js +237 -3
- package/lib/ecosystems/venvProbe.js +360 -0
- package/lib/evinser/evinser.js +346 -43
- package/lib/helpers/agenticToolutils.js +413 -93
- package/lib/helpers/vsixutils.js +1574 -315
- package/lib/inventory/atomUtils.js +77 -0
- package/lib/inventory/brotliDecoder.js +142 -0
- package/lib/inventory/buildToolRateLimit.js +1 -1
- package/lib/inventory/cbomutils.js +56 -7
- package/lib/inventory/deps.js +35 -0
- package/lib/inventory/dosai.js +139 -5
- package/lib/inventory/dotnetRuntime.js +217 -0
- package/lib/inventory/envcontext.js +307 -13
- package/lib/inventory/evidenceUtils.js +11 -0
- package/lib/inventory/fetchBatch.js +1 -1
- package/lib/inventory/formulationParsers.js +31 -3
- package/lib/inventory/gtfobins.js +13 -0
- package/lib/inventory/hostRuntimeProbe.js +686 -0
- package/lib/inventory/jvmLocalRepos.js +9 -2
- package/lib/inventory/jvmToolEnv.js +29 -0
- package/lib/inventory/licenseEnhancer.js +12 -0
- package/lib/inventory/mavenCentralMirror.js +534 -0
- package/lib/inventory/nodeBuildInfo.js +218 -0
- package/lib/inventory/nodeHostProbe.js +202 -0
- package/lib/inventory/osPackageResolver.js +182 -0
- package/lib/inventory/phpBuildInfo.js +10 -59
- package/lib/inventory/phpHostProbe.js +32 -488
- package/lib/inventory/rubyBuildInfo.js +972 -0
- package/lib/inventory/rubyHostProbe.js +218 -0
- package/lib/inventory/scalaCoords.js +4 -3
- package/lib/inventory/scalaDedupe.js +440 -0
- package/lib/inventory/source.js +49 -2
- package/lib/managers/binary.js +337 -3
- package/lib/managers/docker.js +79 -0
- package/lib/parsers/largeJson.js +28 -11
- package/lib/parsers/vscodeExtensionId.js +183 -0
- package/lib/server/server.js +12 -1
- package/lib/stages/postgen/ruleEngine.js +13 -5
- package/lib/stages/pregen/envAudit.js +1 -0
- package/lib/stages/pregen/pregen.js +114 -57
- package/lib/validator/bomValidator.js +6 -1
- package/lib/validator/generated/validate-1.6.mjs +1 -1
- package/lib/validator/generated/validate-1.7.mjs +1 -1
- package/lib/validator/generated/validate-2.0.mjs +1 -1
- package/lib/validator/index.js +1 -1
- package/package.json +3 -2
- package/types/lib/cli/bomAssembly.d.ts +13 -1
- package/types/lib/cli/bomAssembly.d.ts.map +1 -1
- package/types/lib/cli/index.d.ts.map +1 -1
- package/types/lib/cli/jsBom.d.ts +1 -17
- package/types/lib/cli/jsBom.d.ts.map +1 -1
- package/types/lib/cli/jvmBom.d.ts.map +1 -1
- package/types/lib/cli/managedBom.d.ts.map +1 -1
- package/types/lib/cli/nativeBom.d.ts.map +1 -1
- package/types/lib/core/boundedFile.d.ts +70 -0
- package/types/lib/core/boundedFile.d.ts.map +1 -0
- package/types/lib/core/brotliProbe.d.ts +37 -0
- package/types/lib/core/brotliProbe.d.ts.map +1 -0
- package/types/lib/core/env.d.ts +4 -0
- package/types/lib/core/env.d.ts.map +1 -1
- package/types/lib/core/fs.d.ts.map +1 -1
- package/types/lib/core/httpClient.d.ts +24 -0
- package/types/lib/core/httpClient.d.ts.map +1 -1
- package/types/lib/core/lockPaths.d.ts +19 -0
- package/types/lib/core/lockPaths.d.ts.map +1 -0
- package/types/lib/core/processTree.d.ts +2 -0
- package/types/lib/core/processTree.d.ts.map +1 -1
- package/types/lib/core/toolRegistry.d.ts +36 -0
- package/types/lib/core/toolRegistry.d.ts.map +1 -0
- package/types/lib/ecosystems/cppEvidence.d.ts +40 -13
- package/types/lib/ecosystems/cppEvidence.d.ts.map +1 -1
- package/types/lib/ecosystems/cppIncludeResolver.d.ts +2 -1
- package/types/lib/ecosystems/cppIncludeResolver.d.ts.map +1 -1
- package/types/lib/ecosystems/ecosystems.d.ts.map +1 -1
- package/types/lib/ecosystems/gemHostProbe.d.ts +28 -0
- package/types/lib/ecosystems/gemHostProbe.d.ts.map +1 -0
- package/types/lib/ecosystems/gradleutils.d.ts +47 -13
- package/types/lib/ecosystems/gradleutils.d.ts.map +1 -1
- package/types/lib/ecosystems/parsers-bazel.d.ts.map +1 -1
- package/types/lib/ecosystems/parsers-js.d.ts +17 -20
- package/types/lib/ecosystems/parsers-js.d.ts.map +1 -1
- package/types/lib/ecosystems/parsers-misc.d.ts +19 -0
- package/types/lib/ecosystems/parsers-misc.d.ts.map +1 -1
- package/types/lib/ecosystems/parsers-python.d.ts +10 -0
- package/types/lib/ecosystems/parsers-python.d.ts.map +1 -1
- package/types/lib/ecosystems/pythonutils.d.ts +20 -2
- package/types/lib/ecosystems/pythonutils.d.ts.map +1 -1
- package/types/lib/ecosystems/rubyutils.d.ts +144 -12
- package/types/lib/ecosystems/rubyutils.d.ts.map +1 -1
- package/types/lib/ecosystems/scalacliutils.d.ts.map +1 -1
- package/types/lib/ecosystems/vendoredCode.d.ts +26 -0
- package/types/lib/ecosystems/vendoredCode.d.ts.map +1 -1
- package/types/lib/ecosystems/venvProbe.d.ts +40 -0
- package/types/lib/ecosystems/venvProbe.d.ts.map +1 -0
- package/types/lib/evinser/evinser.d.ts +63 -8
- package/types/lib/evinser/evinser.d.ts.map +1 -1
- package/types/lib/inventory/atomUtils.d.ts +19 -0
- package/types/lib/inventory/atomUtils.d.ts.map +1 -1
- package/types/lib/inventory/brotliDecoder.d.ts +58 -0
- package/types/lib/inventory/brotliDecoder.d.ts.map +1 -0
- package/types/lib/inventory/cbomutils.d.ts +17 -0
- package/types/lib/inventory/cbomutils.d.ts.map +1 -1
- package/types/lib/inventory/deps.d.ts.map +1 -1
- package/types/lib/inventory/dosai.d.ts +17 -1
- package/types/lib/inventory/dosai.d.ts.map +1 -1
- package/types/lib/inventory/dotnetRuntime.d.ts +44 -0
- package/types/lib/inventory/dotnetRuntime.d.ts.map +1 -0
- package/types/lib/inventory/envcontext.d.ts +52 -6
- package/types/lib/inventory/envcontext.d.ts.map +1 -1
- package/types/lib/inventory/evidenceUtils.d.ts.map +1 -1
- package/types/lib/inventory/formulationParsers.d.ts.map +1 -1
- package/types/lib/inventory/gtfobins.d.ts.map +1 -1
- package/types/lib/inventory/hostRuntimeProbe.d.ts +44 -0
- package/types/lib/inventory/hostRuntimeProbe.d.ts.map +1 -0
- package/types/lib/inventory/jvmToolEnv.d.ts +12 -0
- package/types/lib/inventory/jvmToolEnv.d.ts.map +1 -1
- package/types/lib/inventory/licenseEnhancer.d.ts.map +1 -1
- package/types/lib/inventory/mavenCentralMirror.d.ts +170 -0
- package/types/lib/inventory/mavenCentralMirror.d.ts.map +1 -0
- package/types/lib/inventory/nodeBuildInfo.d.ts +95 -0
- package/types/lib/inventory/nodeBuildInfo.d.ts.map +1 -0
- package/types/lib/inventory/nodeHostProbe.d.ts +15 -0
- package/types/lib/inventory/nodeHostProbe.d.ts.map +1 -0
- package/types/lib/inventory/osPackageResolver.d.ts +38 -0
- package/types/lib/inventory/osPackageResolver.d.ts.map +1 -1
- package/types/lib/inventory/phpBuildInfo.d.ts.map +1 -1
- package/types/lib/inventory/phpHostProbe.d.ts.map +1 -1
- package/types/lib/inventory/rubyBuildInfo.d.ts +271 -0
- package/types/lib/inventory/rubyBuildInfo.d.ts.map +1 -0
- package/types/lib/inventory/rubyHostProbe.d.ts +47 -0
- package/types/lib/inventory/rubyHostProbe.d.ts.map +1 -0
- package/types/lib/inventory/source.d.ts +10 -0
- package/types/lib/inventory/source.d.ts.map +1 -1
- package/types/lib/managers/binary.d.ts.map +1 -1
- package/types/lib/managers/docker.d.ts +12 -0
- package/types/lib/managers/docker.d.ts.map +1 -1
- package/types/lib/parsers/largeJson.d.ts +4 -3
- package/types/lib/parsers/largeJson.d.ts.map +1 -1
- package/types/lib/server/server.d.ts.map +1 -1
- package/types/lib/stages/pregen/envAudit.d.ts.map +1 -1
- package/types/lib/stages/pregen/pregen.d.ts +12 -8
- package/types/lib/stages/pregen/pregen.d.ts.map +1 -1
|
@@ -79,12 +79,62 @@ export function parseModuleBazel(moduleFile) {
|
|
|
79
79
|
});
|
|
80
80
|
}
|
|
81
81
|
|
|
82
|
+
// Overrides replace where a bazel_dep comes from, and Bazel then ignores
|
|
83
|
+
// the version the bazel_dep names.
|
|
84
|
+
// https://bazel.build/external/module#overrides
|
|
85
|
+
const overrides = new Map();
|
|
86
|
+
for (const kind of [
|
|
87
|
+
"local_path_override",
|
|
88
|
+
"git_override",
|
|
89
|
+
"archive_override",
|
|
90
|
+
"single_version_override",
|
|
91
|
+
]) {
|
|
92
|
+
for (const call of findAllCalls(src, kind)) {
|
|
93
|
+
const moduleName = scalarArg(call, "module_name");
|
|
94
|
+
if (moduleName && !overrides.has(moduleName)) {
|
|
95
|
+
overrides.set(moduleName, {
|
|
96
|
+
kind,
|
|
97
|
+
version: scalarArg(call, "version"),
|
|
98
|
+
remote: scalarArg(call, "remote"),
|
|
99
|
+
revision:
|
|
100
|
+
scalarArg(call, "commit") ||
|
|
101
|
+
scalarArg(call, "tag") ||
|
|
102
|
+
scalarArg(call, "branch"),
|
|
103
|
+
url: scalarArg(call, "urls") || scalarArg(call, "url"),
|
|
104
|
+
});
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
|
|
82
109
|
for (const call of findAllCalls(src, "bazel_dep")) {
|
|
83
110
|
const name = scalarArg(call, "name");
|
|
84
|
-
|
|
111
|
+
let version = scalarArg(call, "version");
|
|
85
112
|
const repoName = scalarArg(call, "repo_name");
|
|
86
113
|
if (!name || !version) continue;
|
|
87
|
-
|
|
114
|
+
const override = overrides.get(name);
|
|
115
|
+
// A module taken from a local directory is the project's own tree, not a
|
|
116
|
+
// BCR release, and the version it declares is not what gets built.
|
|
117
|
+
if (override?.kind === "local_path_override") continue;
|
|
118
|
+
if (override?.kind === "single_version_override" && override.version) {
|
|
119
|
+
version = override.version;
|
|
120
|
+
}
|
|
121
|
+
// A git or archive override fetches the module from elsewhere, so it is
|
|
122
|
+
// no BCR release: the purl names where it comes from instead of the BCR.
|
|
123
|
+
const source = overrideSource(override);
|
|
124
|
+
const pkg = buildBcrPackage(
|
|
125
|
+
repoName || name,
|
|
126
|
+
name,
|
|
127
|
+
source ? null : version,
|
|
128
|
+
moduleFile,
|
|
129
|
+
source,
|
|
130
|
+
);
|
|
131
|
+
if (override && override.kind !== "single_version_override") {
|
|
132
|
+
pkg.properties.push({
|
|
133
|
+
name: "cdx:bazel:override",
|
|
134
|
+
value: override.kind.replace(/_override$/, ""),
|
|
135
|
+
});
|
|
136
|
+
}
|
|
137
|
+
pkgList.push(pkg);
|
|
88
138
|
}
|
|
89
139
|
|
|
90
140
|
for (const call of findAllCalls(src, "maven.artifact")) {
|
|
@@ -425,6 +475,37 @@ function buildEcosystemPackage(coords, context) {
|
|
|
425
475
|
return pkg;
|
|
426
476
|
}
|
|
427
477
|
|
|
478
|
+
/**
|
|
479
|
+
* Where a git_override or archive_override takes a module from, as purl
|
|
480
|
+
* qualifiers and an external reference.
|
|
481
|
+
*
|
|
482
|
+
* @param {Object|undefined} override override recorded for the module
|
|
483
|
+
* @returns {{qualifiers: Object, externalReferences: Object[]}|undefined}
|
|
484
|
+
* undefined for no override, or one that keeps the module a BCR release
|
|
485
|
+
*/
|
|
486
|
+
function overrideSource(override) {
|
|
487
|
+
if (override?.kind === "git_override") {
|
|
488
|
+
if (!override.remote) {
|
|
489
|
+
return { qualifiers: {}, externalReferences: [] };
|
|
490
|
+
}
|
|
491
|
+
const vcsUrl = `git+${override.remote}${override.revision ? `@${override.revision}` : ""}`;
|
|
492
|
+
return {
|
|
493
|
+
qualifiers: { vcs_url: vcsUrl },
|
|
494
|
+
externalReferences: [{ type: "vcs", url: override.remote }],
|
|
495
|
+
};
|
|
496
|
+
}
|
|
497
|
+
if (override?.kind === "archive_override") {
|
|
498
|
+
if (!override.url) {
|
|
499
|
+
return { qualifiers: {}, externalReferences: [] };
|
|
500
|
+
}
|
|
501
|
+
return {
|
|
502
|
+
qualifiers: { download_url: override.url },
|
|
503
|
+
externalReferences: [{ type: "distribution", url: override.url }],
|
|
504
|
+
};
|
|
505
|
+
}
|
|
506
|
+
return undefined;
|
|
507
|
+
}
|
|
508
|
+
|
|
428
509
|
/**
|
|
429
510
|
* Build a component record for a BCR (Bazel Central Registry) module.
|
|
430
511
|
*
|
|
@@ -435,26 +516,46 @@ function buildEcosystemPackage(coords, context) {
|
|
|
435
516
|
* @param {string} moduleName Canonical module name
|
|
436
517
|
* @param {string} version Resolved version
|
|
437
518
|
* @param {string} srcFile Source file for evidence
|
|
519
|
+
* @param {{qualifiers: Object, externalReferences: Object[]}} [source] where
|
|
520
|
+
* an override takes the module from, in place of the BCR
|
|
438
521
|
* @returns {object} Package record
|
|
439
522
|
*/
|
|
440
|
-
function buildBcrPackage(
|
|
523
|
+
function buildBcrPackage(
|
|
524
|
+
displayRepoName,
|
|
525
|
+
moduleName,
|
|
526
|
+
version,
|
|
527
|
+
srcFile,
|
|
528
|
+
source,
|
|
529
|
+
) {
|
|
441
530
|
const purl = tryBuildPurl({
|
|
442
531
|
type: "bazel",
|
|
443
532
|
name: moduleName,
|
|
444
533
|
version,
|
|
445
|
-
qualifiers:
|
|
534
|
+
qualifiers: source
|
|
535
|
+
? source.qualifiers
|
|
536
|
+
: { repository_url: BCR_DEFAULT_REPOSITORY_URL },
|
|
446
537
|
});
|
|
447
538
|
return {
|
|
448
539
|
name: moduleName,
|
|
449
|
-
version,
|
|
540
|
+
...(version ? { version } : {}),
|
|
450
541
|
type: "library",
|
|
451
542
|
scope: "required",
|
|
452
543
|
purl,
|
|
453
544
|
"bom-ref": decodeURIComponent(purl),
|
|
545
|
+
...(source?.externalReferences.length
|
|
546
|
+
? { externalReferences: source.externalReferences }
|
|
547
|
+
: {}),
|
|
454
548
|
properties: [
|
|
455
549
|
{ name: "internal:SrcFile", value: srcFile },
|
|
456
550
|
{ name: "cdx:bazel:module", value: moduleName },
|
|
457
|
-
|
|
551
|
+
...(source
|
|
552
|
+
? []
|
|
553
|
+
: [
|
|
554
|
+
{
|
|
555
|
+
name: "cdx:bazel:repository_url",
|
|
556
|
+
value: BCR_DEFAULT_REPOSITORY_URL,
|
|
557
|
+
},
|
|
558
|
+
]),
|
|
458
559
|
...(displayRepoName !== moduleName
|
|
459
560
|
? [{ name: "cdx:bazel:repo_name", value: displayRepoName }]
|
|
460
561
|
: []),
|