@cyclonedx/cdxgen 11.0.4 → 11.0.6
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/lib/cli/index.js +220 -103
- package/lib/helpers/display.js +30 -20
- package/lib/helpers/utils.js +138 -79
- package/lib/helpers/utils.test.js +16 -5
- package/lib/managers/binary.js +1 -0
- package/package.json +1 -1
- package/types/lib/cli/index.d.ts.map +1 -1
- package/types/lib/helpers/display.d.ts.map +1 -1
- package/types/lib/helpers/utils.d.ts +28 -33
- package/types/lib/helpers/utils.d.ts.map +1 -1
- package/types/lib/managers/binary.d.ts.map +1 -1
package/lib/cli/index.js
CHANGED
|
@@ -883,7 +883,14 @@ function addComponent(
|
|
|
883
883
|
purl: purlString,
|
|
884
884
|
externalReferences: addExternalReferences(pkg),
|
|
885
885
|
};
|
|
886
|
-
|
|
886
|
+
if (options.specVersion >= 1.5) {
|
|
887
|
+
component.pedigree = pkg.pedigree || undefined;
|
|
888
|
+
}
|
|
889
|
+
if (options.specVersion >= 1.6) {
|
|
890
|
+
component.releaseNotes = pkg.releaseNotes || undefined;
|
|
891
|
+
component.modelCard = pkg.modelCard || undefined;
|
|
892
|
+
component.data = pkg.data || undefined;
|
|
893
|
+
}
|
|
887
894
|
component["type"] = determinePackageType(pkg);
|
|
888
895
|
component["bom-ref"] = decodeURIComponent(purlString);
|
|
889
896
|
if (
|
|
@@ -911,8 +918,22 @@ function addComponent(
|
|
|
911
918
|
pkg.evidence.identity &&
|
|
912
919
|
!Array.isArray(pkg.evidence.identity)
|
|
913
920
|
) {
|
|
921
|
+
// Automatically add concludedValue
|
|
922
|
+
if (pkg.evidence.identity?.methods?.length === 1) {
|
|
923
|
+
pkg.evidence.identity.concludedValue =
|
|
924
|
+
pkg.evidence.identity.methods[0].value;
|
|
925
|
+
}
|
|
914
926
|
component.evidence.identity = [pkg.evidence.identity];
|
|
915
927
|
}
|
|
928
|
+
// Convert evidence.identity section to an object for 1.5
|
|
929
|
+
if (
|
|
930
|
+
options.specVersion === 1.5 &&
|
|
931
|
+
pkg.evidence &&
|
|
932
|
+
pkg.evidence.identity &&
|
|
933
|
+
Array.isArray(pkg.evidence.identity)
|
|
934
|
+
) {
|
|
935
|
+
component.evidence.identity = pkg.evidence.identity[0];
|
|
936
|
+
}
|
|
916
937
|
}
|
|
917
938
|
// Upgrade authors section
|
|
918
939
|
if (options.specVersion >= 1.6 && component.author) {
|
|
@@ -1264,7 +1285,6 @@ export async function createJavaBom(path, options) {
|
|
|
1264
1285
|
// For java, this would correctly include the cyclonedx maven plugin.
|
|
1265
1286
|
let tools = undefined;
|
|
1266
1287
|
let possible_misses = false;
|
|
1267
|
-
let mavenDepsTreeInfoShown = false;
|
|
1268
1288
|
// war/ear mode
|
|
1269
1289
|
if (path.endsWith(".war") || path.endsWith(".jar")) {
|
|
1270
1290
|
// Check if the file exists
|
|
@@ -1294,6 +1314,11 @@ export async function createJavaBom(path, options) {
|
|
|
1294
1314
|
parentComponent,
|
|
1295
1315
|
});
|
|
1296
1316
|
}
|
|
1317
|
+
// -t quarkus is supported
|
|
1318
|
+
let isQuarkus = options?.projectType?.includes("quarkus");
|
|
1319
|
+
let useMavenDepsTree = isQuarkus ? false : PREFER_MAVEN_DEPS_TREE;
|
|
1320
|
+
// Is this a multi-module project
|
|
1321
|
+
let rootModules;
|
|
1297
1322
|
// maven - pom.xml
|
|
1298
1323
|
const pomFiles = getAllFiles(
|
|
1299
1324
|
path,
|
|
@@ -1305,37 +1330,72 @@ export async function createJavaBom(path, options) {
|
|
|
1305
1330
|
pomFiles?.length &&
|
|
1306
1331
|
isPackageManagerAllowed("maven", ["bazel", "sbt", "gradle"], options)
|
|
1307
1332
|
) {
|
|
1308
|
-
|
|
1309
|
-
|
|
1310
|
-
|
|
1311
|
-
|
|
1312
|
-
|
|
1313
|
-
|
|
1314
|
-
|
|
1315
|
-
|
|
1316
|
-
|
|
1317
|
-
|
|
1318
|
-
|
|
1319
|
-
|
|
1320
|
-
|
|
1321
|
-
|
|
1322
|
-
if (!DEBUG_MODE) {
|
|
1323
|
-
mvnArgs.push("-q");
|
|
1324
|
-
}
|
|
1325
|
-
// Support for passing additional settings and profile to maven
|
|
1326
|
-
if (process.env.MVN_ARGS) {
|
|
1327
|
-
const addArgs = process.env.MVN_ARGS.split(" ");
|
|
1328
|
-
mvnArgs = mvnArgs.concat(addArgs);
|
|
1333
|
+
if (!isQuarkus) {
|
|
1334
|
+
// Quarkus projects require special treatment. To detect quarkus, we parse the first 3 maven file to look for a hit
|
|
1335
|
+
for (const pf of pomFiles.slice(0, 3)) {
|
|
1336
|
+
const pomMap = parsePom(pf);
|
|
1337
|
+
if (!rootModules && pomMap?.modules?.length) {
|
|
1338
|
+
rootModules = pomMap.modules;
|
|
1339
|
+
}
|
|
1340
|
+
// In quarkus mode, we cannot use the maven deps tree
|
|
1341
|
+
if (pomMap.isQuarkus) {
|
|
1342
|
+
isQuarkus = true;
|
|
1343
|
+
useMavenDepsTree = false;
|
|
1344
|
+
break;
|
|
1345
|
+
}
|
|
1346
|
+
}
|
|
1329
1347
|
}
|
|
1330
|
-
|
|
1331
|
-
|
|
1332
|
-
if (
|
|
1333
|
-
|
|
1348
|
+
let result = undefined;
|
|
1349
|
+
let mvnArgs;
|
|
1350
|
+
if (isQuarkus) {
|
|
1351
|
+
// disable analytics. See: https://quarkus.io/usage/
|
|
1352
|
+
mvnArgs = [
|
|
1353
|
+
"-fn",
|
|
1354
|
+
"quarkus:dependency-sbom",
|
|
1355
|
+
"-Dquarkus.analytics.disabled=true",
|
|
1356
|
+
];
|
|
1357
|
+
} else {
|
|
1358
|
+
const cdxMavenPlugin =
|
|
1359
|
+
process.env.CDX_MAVEN_PLUGIN ||
|
|
1360
|
+
"org.cyclonedx:cyclonedx-maven-plugin:2.9.1";
|
|
1361
|
+
const cdxMavenGoal = process.env.CDX_MAVEN_GOAL || "makeAggregateBom";
|
|
1362
|
+
mvnArgs = [
|
|
1363
|
+
"-fn",
|
|
1364
|
+
`${cdxMavenPlugin}:${cdxMavenGoal}`,
|
|
1365
|
+
"-DoutputName=bom",
|
|
1366
|
+
];
|
|
1367
|
+
if (includeMavenTestScope) {
|
|
1368
|
+
mvnArgs.push("-DincludeTestScope=true");
|
|
1369
|
+
}
|
|
1370
|
+
// By using quiet mode we can reduce the maxBuffer used and avoid crashes
|
|
1371
|
+
if (!DEBUG_MODE) {
|
|
1372
|
+
mvnArgs.push("-q");
|
|
1373
|
+
}
|
|
1374
|
+
// Support for passing additional settings and profile to maven
|
|
1375
|
+
if (process.env.MVN_ARGS) {
|
|
1376
|
+
const addArgs = process.env.MVN_ARGS.split(" ");
|
|
1377
|
+
mvnArgs = mvnArgs.concat(addArgs);
|
|
1378
|
+
}
|
|
1379
|
+
// specVersion 1.4 doesn't support externalReferences.type=disribution-intake
|
|
1380
|
+
// so we need to run the plugin with the correct version
|
|
1381
|
+
if (options.specVersion === 1.4) {
|
|
1382
|
+
mvnArgs = mvnArgs.concat("-DschemaVersion=1.4");
|
|
1383
|
+
}
|
|
1334
1384
|
}
|
|
1335
1385
|
const firstPom = pomFiles.length ? pomFiles[0] : undefined;
|
|
1336
1386
|
let mavenCmd = getMavenCommand(path, path);
|
|
1337
1387
|
for (const f of pomFiles) {
|
|
1338
1388
|
const basePath = dirname(f);
|
|
1389
|
+
if (
|
|
1390
|
+
isQuarkus &&
|
|
1391
|
+
!options.deep &&
|
|
1392
|
+
rootModules?.includes(basename(basePath))
|
|
1393
|
+
) {
|
|
1394
|
+
if (DEBUG_MODE) {
|
|
1395
|
+
console.log("Skipped sub-module", basePath);
|
|
1396
|
+
}
|
|
1397
|
+
continue;
|
|
1398
|
+
}
|
|
1339
1399
|
const settingsXml = join(basePath, "settings.xml");
|
|
1340
1400
|
if (existsSync(settingsXml)) {
|
|
1341
1401
|
console.log(
|
|
@@ -1358,16 +1418,7 @@ export async function createJavaBom(path, options) {
|
|
|
1358
1418
|
}
|
|
1359
1419
|
}
|
|
1360
1420
|
// Use the cyclonedx maven plugin if there is no preference for maven deps tree
|
|
1361
|
-
if (!
|
|
1362
|
-
if (!mavenDepsTreeInfoShown && DEBUG_MODE) {
|
|
1363
|
-
console.log(
|
|
1364
|
-
"cdxgen now supports generating SBOM with only the maven cli without the need for the cyclonedx-maven plugin. This mode works better in enterprise environments and in multi-module projects.",
|
|
1365
|
-
);
|
|
1366
|
-
console.log(
|
|
1367
|
-
"Set the environment variable PREFER_MAVEN_DEPS_TREE to true to enable this.",
|
|
1368
|
-
);
|
|
1369
|
-
mavenDepsTreeInfoShown = true;
|
|
1370
|
-
}
|
|
1421
|
+
if (!useMavenDepsTree) {
|
|
1371
1422
|
console.log(
|
|
1372
1423
|
`Executing '${mavenCmd} ${mvnArgs.join(" ")}' in`,
|
|
1373
1424
|
basePath,
|
|
@@ -1381,19 +1432,23 @@ export async function createJavaBom(path, options) {
|
|
|
1381
1432
|
});
|
|
1382
1433
|
// Check if the cyclonedx plugin created the required bom.json file
|
|
1383
1434
|
// Sometimes the plugin fails silently for complex maven projects
|
|
1384
|
-
bomJsonFiles = getAllFiles(
|
|
1435
|
+
bomJsonFiles = getAllFiles(
|
|
1436
|
+
path,
|
|
1437
|
+
"**/target/*{cdx,bom,cyclonedx}*.json",
|
|
1438
|
+
options,
|
|
1439
|
+
);
|
|
1385
1440
|
// Check if the bom json files got created in a directory other than target
|
|
1386
1441
|
if (!bomJsonFiles.length) {
|
|
1387
1442
|
bomJsonFiles = getAllFiles(
|
|
1388
1443
|
path,
|
|
1389
|
-
"target/**/*{cdx,bom}*.json",
|
|
1444
|
+
"target/**/*{cdx,bom,cyclonedx}*.json",
|
|
1390
1445
|
options,
|
|
1391
1446
|
);
|
|
1392
1447
|
}
|
|
1393
1448
|
}
|
|
1394
1449
|
// Also check if the user has a preference for maven deps tree command
|
|
1395
1450
|
if (
|
|
1396
|
-
|
|
1451
|
+
useMavenDepsTree ||
|
|
1397
1452
|
!bomJsonFiles.length ||
|
|
1398
1453
|
result?.status !== 0 ||
|
|
1399
1454
|
result?.error
|
|
@@ -1539,7 +1594,7 @@ export async function createJavaBom(path, options) {
|
|
|
1539
1594
|
}
|
|
1540
1595
|
} // for
|
|
1541
1596
|
// Locate and parse all bom.json files from the maven plugin
|
|
1542
|
-
if (!
|
|
1597
|
+
if (!useMavenDepsTree) {
|
|
1543
1598
|
for (const abjson of bomJsonFiles) {
|
|
1544
1599
|
let bomJsonObj = undefined;
|
|
1545
1600
|
try {
|
|
@@ -1556,7 +1611,9 @@ export async function createJavaBom(path, options) {
|
|
|
1556
1611
|
!tools &&
|
|
1557
1612
|
bomJsonObj.metadata &&
|
|
1558
1613
|
bomJsonObj.metadata.tools &&
|
|
1559
|
-
Array.isArray(bomJsonObj.metadata.tools)
|
|
1614
|
+
(Array.isArray(bomJsonObj.metadata.tools) ||
|
|
1615
|
+
bomJsonObj.metadata.tools.components ||
|
|
1616
|
+
bomJsonObj.metadata.tools.services)
|
|
1560
1617
|
) {
|
|
1561
1618
|
tools = bomJsonObj.metadata.tools;
|
|
1562
1619
|
}
|
|
@@ -1621,10 +1678,6 @@ export async function createJavaBom(path, options) {
|
|
|
1621
1678
|
console.warn(
|
|
1622
1679
|
"Multiple errors occurred while building this project with maven. The SBOM is therefore incomplete!",
|
|
1623
1680
|
);
|
|
1624
|
-
} else if (!PREFER_MAVEN_DEPS_TREE) {
|
|
1625
|
-
console.log(
|
|
1626
|
-
"Try generating an SBOM with the maven dependency tree plugin. Set the environment variable PREFER_MAVEN_DEPS_TREE to true to enable this.",
|
|
1627
|
-
);
|
|
1628
1681
|
}
|
|
1629
1682
|
}
|
|
1630
1683
|
}
|
|
@@ -2270,58 +2323,71 @@ export async function createNodejsBom(path, options) {
|
|
|
2270
2323
|
}
|
|
2271
2324
|
}
|
|
2272
2325
|
}
|
|
2273
|
-
const
|
|
2274
|
-
|
|
2326
|
+
const pkgJsonLockFiles = getAllFiles(
|
|
2327
|
+
path,
|
|
2328
|
+
`${options.multiProject ? "**/" : ""}package-lock.json`,
|
|
2329
|
+
options,
|
|
2330
|
+
);
|
|
2331
|
+
const pkgJsonFiles = getAllFiles(
|
|
2275
2332
|
path,
|
|
2276
2333
|
`${options.multiProject ? "**/" : ""}package.json`,
|
|
2277
2334
|
options,
|
|
2278
2335
|
);
|
|
2279
2336
|
const yarnLockFile = getAllFiles(path, "yarn.lock", options);
|
|
2280
2337
|
const pnpmLockFile = getAllFiles(path, "pnpm-lock.yaml", options);
|
|
2338
|
+
const npmInstallCount = Number.parseInt(process.env.NPM_INSTALL_COUNT) || 2;
|
|
2339
|
+
// Automatic npm install logic.
|
|
2340
|
+
// Only perform npm install for smaller projects (< 2 package.json) without the correct number of lock files
|
|
2281
2341
|
if (
|
|
2282
|
-
|
|
2342
|
+
(pkgJsonLockFiles?.length === 0 ||
|
|
2343
|
+
pkgJsonLockFiles?.length < pkgJsonFiles?.length) &&
|
|
2283
2344
|
yarnLockFile?.length === 0 &&
|
|
2284
2345
|
pnpmLockFile?.length === 0 &&
|
|
2285
|
-
|
|
2346
|
+
pkgJsonFiles?.length <= npmInstallCount &&
|
|
2286
2347
|
options.installDeps
|
|
2287
2348
|
) {
|
|
2288
|
-
|
|
2289
|
-
|
|
2290
|
-
|
|
2291
|
-
|
|
2292
|
-
|
|
2293
|
-
|
|
2294
|
-
|
|
2295
|
-
|
|
2296
|
-
|
|
2297
|
-
|
|
2298
|
-
|
|
2299
|
-
|
|
2300
|
-
|
|
2301
|
-
|
|
2302
|
-
|
|
2303
|
-
|
|
2304
|
-
|
|
2305
|
-
|
|
2306
|
-
|
|
2307
|
-
|
|
2308
|
-
|
|
2309
|
-
|
|
2310
|
-
|
|
2311
|
-
timeout: TIMEOUT_MS,
|
|
2312
|
-
maxBuffer: MAX_BUFFER,
|
|
2313
|
-
});
|
|
2314
|
-
if (result.status !== 0 || result.error) {
|
|
2315
|
-
console.error(
|
|
2316
|
-
`${pkgMgr} install has failed. Check if ${pkgMgr} is installed and available in PATH.`,
|
|
2349
|
+
for (const apkgJson of pkgJsonFiles) {
|
|
2350
|
+
let pkgMgr = "npm";
|
|
2351
|
+
const supPkgMgrs = ["npm", "yarn", "yarnpkg", "pnpm", "pnpx"];
|
|
2352
|
+
const pkgData = JSON.parse(readFileSync(apkgJson, "utf8"));
|
|
2353
|
+
const mgrData = pkgData.packageManager;
|
|
2354
|
+
let mgr = "";
|
|
2355
|
+
let installArgs = ["install"];
|
|
2356
|
+
if (mgrData) {
|
|
2357
|
+
mgr = mgrData.split("@")[0];
|
|
2358
|
+
}
|
|
2359
|
+
if (supPkgMgrs.includes(mgr)) {
|
|
2360
|
+
pkgMgr = mgr;
|
|
2361
|
+
}
|
|
2362
|
+
// Support for passing additional args to the install command
|
|
2363
|
+
if (process.env[`${pkgMgr.toUpperCase()}_INSTALL_ARGS`]) {
|
|
2364
|
+
const addArgs =
|
|
2365
|
+
process.env[`${pkgMgr.toUpperCase()}_INSTALL_ARGS`].split(" ");
|
|
2366
|
+
installArgs = installArgs.concat(addArgs);
|
|
2367
|
+
}
|
|
2368
|
+
const basePath = dirname(apkgJson);
|
|
2369
|
+
console.log(
|
|
2370
|
+
`Executing '${pkgMgr} ${installArgs.join(" ")}' in`,
|
|
2371
|
+
basePath,
|
|
2317
2372
|
);
|
|
2318
|
-
|
|
2319
|
-
|
|
2320
|
-
|
|
2321
|
-
|
|
2322
|
-
|
|
2373
|
+
const result = spawnSync(pkgMgr, installArgs, {
|
|
2374
|
+
cwd: basePath,
|
|
2375
|
+
encoding: "utf-8",
|
|
2376
|
+
timeout: TIMEOUT_MS,
|
|
2377
|
+
maxBuffer: MAX_BUFFER,
|
|
2378
|
+
});
|
|
2379
|
+
if (result.status !== 0 || result.error) {
|
|
2380
|
+
console.error(
|
|
2381
|
+
`${pkgMgr} install has failed. Check if ${pkgMgr} is installed and available in PATH.`,
|
|
2382
|
+
);
|
|
2383
|
+
if (DEBUG_MODE && result.stdout) {
|
|
2384
|
+
console.log(result.stdout);
|
|
2385
|
+
}
|
|
2386
|
+
if (result.stderr) {
|
|
2387
|
+
console.log(result.stderr);
|
|
2388
|
+
}
|
|
2389
|
+
options.failOnError && process.exit(1);
|
|
2323
2390
|
}
|
|
2324
|
-
options.failOnError && process.exit(1);
|
|
2325
2391
|
}
|
|
2326
2392
|
pkgLockFiles = getAllFiles(
|
|
2327
2393
|
path,
|
|
@@ -4878,15 +4944,15 @@ export function createPHPBom(path, options) {
|
|
|
4878
4944
|
if (DEBUG_MODE) {
|
|
4879
4945
|
console.log(`Parsing ${f}`);
|
|
4880
4946
|
}
|
|
4881
|
-
|
|
4947
|
+
let rootRequires = [];
|
|
4882
4948
|
// Is there a composer.json to find the module parent component
|
|
4883
4949
|
if (existsSync(join(basePath, "composer.json"))) {
|
|
4884
4950
|
const retMap = parseComposerJson(join(basePath, "composer.json"));
|
|
4885
4951
|
moduleParent = retMap.moduleParent;
|
|
4886
|
-
|
|
4952
|
+
rootRequires = retMap.rootRequires;
|
|
4887
4953
|
// Track all the modules in a mono-repo
|
|
4888
4954
|
if (!Object.keys(parentComponent).length) {
|
|
4889
|
-
parentComponent = moduleParent;
|
|
4955
|
+
parentComponent = { ...moduleParent };
|
|
4890
4956
|
} else {
|
|
4891
4957
|
parentComponent.components = parentComponent.components || [];
|
|
4892
4958
|
parentComponent.components.push(moduleParent);
|
|
@@ -4895,25 +4961,21 @@ export function createPHPBom(path, options) {
|
|
|
4895
4961
|
const retMap = parseComposerLock(f, rootRequires);
|
|
4896
4962
|
if (retMap.pkgList?.length) {
|
|
4897
4963
|
pkgList = pkgList.concat(retMap.pkgList);
|
|
4898
|
-
|
|
4899
|
-
if (!moduleParent) {
|
|
4900
|
-
moduleParent = createDefaultParentComponent(
|
|
4901
|
-
basePath,
|
|
4902
|
-
"composer",
|
|
4903
|
-
options,
|
|
4904
|
-
);
|
|
4964
|
+
pkgList = trimComponents(pkgList);
|
|
4905
4965
|
}
|
|
4906
4966
|
if (retMap.dependenciesList) {
|
|
4907
|
-
|
|
4908
|
-
|
|
4909
|
-
|
|
4910
|
-
|
|
4911
|
-
|
|
4912
|
-
|
|
4913
|
-
|
|
4967
|
+
if (moduleParent?.["bom-ref"]) {
|
|
4968
|
+
// Complete the dependency tree by making parent component depend on the first level
|
|
4969
|
+
dependencies.splice(0, 0, {
|
|
4970
|
+
ref: moduleParent["bom-ref"],
|
|
4971
|
+
dependsOn: [
|
|
4972
|
+
...new Set(retMap.rootList.map((p) => p["bom-ref"])),
|
|
4973
|
+
].sort(),
|
|
4974
|
+
});
|
|
4975
|
+
}
|
|
4914
4976
|
dependencies = mergeDependencies(
|
|
4915
4977
|
dependencies,
|
|
4916
|
-
|
|
4978
|
+
retMap.dependenciesList,
|
|
4917
4979
|
parentComponent,
|
|
4918
4980
|
);
|
|
4919
4981
|
}
|
|
@@ -5551,6 +5613,43 @@ export function trimComponents(components) {
|
|
|
5551
5613
|
existingComponent.properties = comp.properties;
|
|
5552
5614
|
}
|
|
5553
5615
|
}
|
|
5616
|
+
// Retain all component.evidence.identity
|
|
5617
|
+
if (comp?.evidence?.identity) {
|
|
5618
|
+
if (!existingComponent.evidence) {
|
|
5619
|
+
existingComponent.evidence = { identity: [] };
|
|
5620
|
+
} else if (
|
|
5621
|
+
existingComponent?.evidence?.identity &&
|
|
5622
|
+
!Array.isArray(existingComponent.evidence.identity)
|
|
5623
|
+
) {
|
|
5624
|
+
existingComponent.evidence.identity = [
|
|
5625
|
+
existingComponent.evidence.identity,
|
|
5626
|
+
];
|
|
5627
|
+
}
|
|
5628
|
+
// comp.evidence.identity can be an array or object
|
|
5629
|
+
// Merge the evidence.identity based on methods or objects
|
|
5630
|
+
const identities = Array.isArray(comp.evidence.identity)
|
|
5631
|
+
? comp.evidence.identity
|
|
5632
|
+
: [comp.evidence.identity];
|
|
5633
|
+
for (const aident of identities) {
|
|
5634
|
+
let methodBasedMerge = false;
|
|
5635
|
+
if (aident?.methods?.length) {
|
|
5636
|
+
for (const amethod of aident.methods) {
|
|
5637
|
+
for (const existIdent of existingComponent.evidence.identity) {
|
|
5638
|
+
if (existIdent.field === aident.field) {
|
|
5639
|
+
if (!existIdent.methods) {
|
|
5640
|
+
existIdent.methods = [];
|
|
5641
|
+
}
|
|
5642
|
+
existIdent.methods.push(amethod);
|
|
5643
|
+
methodBasedMerge = true;
|
|
5644
|
+
}
|
|
5645
|
+
}
|
|
5646
|
+
}
|
|
5647
|
+
}
|
|
5648
|
+
if (!methodBasedMerge && aident.field && aident.confidence) {
|
|
5649
|
+
existingComponent.evidence.identity.push(aident);
|
|
5650
|
+
}
|
|
5651
|
+
}
|
|
5652
|
+
}
|
|
5554
5653
|
// If the component is required in any of the child projects, then make it required
|
|
5555
5654
|
if (
|
|
5556
5655
|
existingComponent?.scope !== "required" &&
|
|
@@ -5792,6 +5891,12 @@ export async function createMultiXBom(pathList, options) {
|
|
|
5792
5891
|
) {
|
|
5793
5892
|
parentSubComponents.push(bomData.parentComponent);
|
|
5794
5893
|
}
|
|
5894
|
+
// Retain metadata.component.components
|
|
5895
|
+
if (bomData.parentComponent?.components?.length) {
|
|
5896
|
+
parentSubComponents = parentSubComponents.concat(
|
|
5897
|
+
bomData.parentComponent.components,
|
|
5898
|
+
);
|
|
5899
|
+
}
|
|
5795
5900
|
}
|
|
5796
5901
|
}
|
|
5797
5902
|
if (hasAnyProjectType(["oci", "ruby"], options)) {
|
|
@@ -5814,6 +5919,12 @@ export async function createMultiXBom(pathList, options) {
|
|
|
5814
5919
|
) {
|
|
5815
5920
|
parentSubComponents.push(bomData.parentComponent);
|
|
5816
5921
|
}
|
|
5922
|
+
// Retain metadata.component.components
|
|
5923
|
+
if (bomData.parentComponent?.components?.length) {
|
|
5924
|
+
parentSubComponents = parentSubComponents.concat(
|
|
5925
|
+
bomData.parentComponent.components,
|
|
5926
|
+
);
|
|
5927
|
+
}
|
|
5817
5928
|
}
|
|
5818
5929
|
}
|
|
5819
5930
|
if (hasAnyProjectType(["oci", "csharp"], options)) {
|
|
@@ -5832,6 +5943,12 @@ export async function createMultiXBom(pathList, options) {
|
|
|
5832
5943
|
) {
|
|
5833
5944
|
parentSubComponents.push(bomData.parentComponent);
|
|
5834
5945
|
}
|
|
5946
|
+
// Retain metadata.component.components
|
|
5947
|
+
if (bomData.parentComponent?.components?.length) {
|
|
5948
|
+
parentSubComponents = parentSubComponents.concat(
|
|
5949
|
+
bomData.parentComponent.components,
|
|
5950
|
+
);
|
|
5951
|
+
}
|
|
5835
5952
|
}
|
|
5836
5953
|
}
|
|
5837
5954
|
if (hasAnyProjectType(["oci", "dart"], options)) {
|
package/lib/helpers/display.js
CHANGED
|
@@ -178,34 +178,44 @@ const locationComparator = (a, b) => {
|
|
|
178
178
|
};
|
|
179
179
|
|
|
180
180
|
export function printOccurrences(bomJson) {
|
|
181
|
-
const data = [["Group", "Name", "Version", "Occurrences"]];
|
|
182
181
|
if (!bomJson || !bomJson.components) {
|
|
183
182
|
return;
|
|
184
183
|
}
|
|
185
|
-
|
|
186
|
-
if (!comp.evidence || !comp.evidence.occurrences) {
|
|
187
|
-
continue;
|
|
188
|
-
}
|
|
189
|
-
data.push([
|
|
190
|
-
comp.group || "",
|
|
191
|
-
comp.name,
|
|
192
|
-
comp.version || "",
|
|
193
|
-
comp.evidence.occurrences
|
|
194
|
-
.map((l) => l.location)
|
|
195
|
-
.sort(locationComparator)
|
|
196
|
-
.join("\n"),
|
|
197
|
-
]);
|
|
198
|
-
}
|
|
184
|
+
const data = ["Group", "Name", "Version", "Occurrences"];
|
|
199
185
|
const config = {
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
content: "Component Evidence\nGenerated with \u2665 by cdxgen",
|
|
186
|
+
columnDefault: {
|
|
187
|
+
width: 30,
|
|
203
188
|
},
|
|
189
|
+
columnCount: 4,
|
|
190
|
+
columns: [
|
|
191
|
+
{ width: 30 },
|
|
192
|
+
{ width: 30 },
|
|
193
|
+
{ width: 25, alignment: "right" },
|
|
194
|
+
{ width: 80 },
|
|
195
|
+
],
|
|
204
196
|
};
|
|
205
|
-
|
|
206
|
-
|
|
197
|
+
const stream = createStream(config); // Create stream with the config
|
|
198
|
+
const header = "Component Evidence\nGenerated with \u2665 by cdxgen";
|
|
199
|
+
console.log(header);
|
|
200
|
+
stream.write(data);
|
|
201
|
+
// Stream the components
|
|
202
|
+
for (const comp of bomJson.components) {
|
|
203
|
+
if (comp.evidence?.occurrences) {
|
|
204
|
+
const row = [
|
|
205
|
+
comp.group || "",
|
|
206
|
+
comp.name,
|
|
207
|
+
comp.version || "",
|
|
208
|
+
comp.evidence.occurrences
|
|
209
|
+
.map((l) => l.location)
|
|
210
|
+
.sort(locationComparator)
|
|
211
|
+
.join("\n"),
|
|
212
|
+
];
|
|
213
|
+
stream.write(row);
|
|
214
|
+
}
|
|
207
215
|
}
|
|
216
|
+
console.log();
|
|
208
217
|
}
|
|
218
|
+
|
|
209
219
|
export function printCallStack(bomJson) {
|
|
210
220
|
const data = [["Group", "Name", "Version", "Call Stack"]];
|
|
211
221
|
if (!bomJson || !bomJson.components) {
|
package/lib/helpers/utils.js
CHANGED
|
@@ -267,6 +267,7 @@ export const PROJECT_TYPE_ALIASES = {
|
|
|
267
267
|
"maven",
|
|
268
268
|
"sbt",
|
|
269
269
|
"bazel",
|
|
270
|
+
"quarkus",
|
|
270
271
|
],
|
|
271
272
|
android: ["android", "apk", "aab"],
|
|
272
273
|
jar: ["jar", "war", "ear"],
|
|
@@ -401,15 +402,12 @@ export function isFeatureEnabled(cliOptions, feature) {
|
|
|
401
402
|
return true;
|
|
402
403
|
}
|
|
403
404
|
// Retry by replacing hyphens with underscore
|
|
404
|
-
|
|
405
|
+
return !!(
|
|
405
406
|
process.env[feature.replaceAll("-", "_").toUpperCase()] &&
|
|
406
407
|
["true", "1"].includes(
|
|
407
408
|
process.env[feature.replaceAll("-", "_").toUpperCase()],
|
|
408
409
|
)
|
|
409
|
-
)
|
|
410
|
-
return true;
|
|
411
|
-
}
|
|
412
|
-
return false;
|
|
410
|
+
);
|
|
413
411
|
}
|
|
414
412
|
|
|
415
413
|
/**
|
|
@@ -618,16 +616,10 @@ export function isSpdxLicenseExpression(license) {
|
|
|
618
616
|
if (!license) {
|
|
619
617
|
return false;
|
|
620
618
|
}
|
|
621
|
-
|
|
622
619
|
if (/[(\s]+/g.test(license)) {
|
|
623
620
|
return true;
|
|
624
621
|
}
|
|
625
|
-
|
|
626
|
-
if (license.endsWith("+")) {
|
|
627
|
-
return true; // GPL-2.0+ means GPL-2.0 or any later version, at the licensee’s option.
|
|
628
|
-
}
|
|
629
|
-
|
|
630
|
-
return false;
|
|
622
|
+
return !!license.endsWith("+");
|
|
631
623
|
}
|
|
632
624
|
|
|
633
625
|
/**
|
|
@@ -1064,8 +1056,8 @@ export async function parsePkgLock(pkgLockFile, options = {}) {
|
|
|
1064
1056
|
const scope = node.dev === true ? "optional" : undefined;
|
|
1065
1057
|
const integrity = node.integrity ? node.integrity : undefined;
|
|
1066
1058
|
|
|
1067
|
-
let pkg
|
|
1068
|
-
let purlString
|
|
1059
|
+
let pkg;
|
|
1060
|
+
let purlString;
|
|
1069
1061
|
const author = node.package.author;
|
|
1070
1062
|
const authorString =
|
|
1071
1063
|
author instanceof Object
|
|
@@ -2515,9 +2507,14 @@ export async function parseMinJs(minJsFile) {
|
|
|
2515
2507
|
* Parse pom file
|
|
2516
2508
|
*
|
|
2517
2509
|
* @param {string} pomFile pom file to parse
|
|
2510
|
+
* @returns {Object} Object containing pom properties, modules, and array of dependencies
|
|
2518
2511
|
*/
|
|
2519
2512
|
export function parsePom(pomFile) {
|
|
2520
2513
|
const deps = [];
|
|
2514
|
+
let modules;
|
|
2515
|
+
let pomPurl;
|
|
2516
|
+
const properties = {};
|
|
2517
|
+
let isQuarkus = false;
|
|
2521
2518
|
const xmlData = readFileSync(pomFile, "utf-8");
|
|
2522
2519
|
const project = xml2js(xmlData, {
|
|
2523
2520
|
compact: true,
|
|
@@ -2526,6 +2523,69 @@ export function parsePom(pomFile) {
|
|
|
2526
2523
|
attributesKey: "$",
|
|
2527
2524
|
commentKey: "value",
|
|
2528
2525
|
}).project;
|
|
2526
|
+
for (const aprop of [
|
|
2527
|
+
"groupId",
|
|
2528
|
+
"artifactId",
|
|
2529
|
+
"version",
|
|
2530
|
+
"name",
|
|
2531
|
+
"description",
|
|
2532
|
+
"url",
|
|
2533
|
+
"packaging",
|
|
2534
|
+
]) {
|
|
2535
|
+
if (project?.[aprop]?._) {
|
|
2536
|
+
properties[aprop] = project[aprop]._;
|
|
2537
|
+
}
|
|
2538
|
+
}
|
|
2539
|
+
// Take the version from the parent if available
|
|
2540
|
+
if (!properties.version && project.parent) {
|
|
2541
|
+
properties.version = project.parent.version._;
|
|
2542
|
+
}
|
|
2543
|
+
// Take the groupId from the parent if available
|
|
2544
|
+
if (!properties.groupId && project.parent) {
|
|
2545
|
+
properties.groupId = project.parent.groupId._;
|
|
2546
|
+
}
|
|
2547
|
+
if (project?.scm?.url?._) {
|
|
2548
|
+
properties.scm = project.scm.url._;
|
|
2549
|
+
}
|
|
2550
|
+
if (properties.groupId || properties.artifactId) {
|
|
2551
|
+
pomPurl = new PackageURL(
|
|
2552
|
+
"maven",
|
|
2553
|
+
properties.groupId || "",
|
|
2554
|
+
properties.artifactId,
|
|
2555
|
+
properties.version,
|
|
2556
|
+
{ type: properties.packaging || "jar" },
|
|
2557
|
+
null,
|
|
2558
|
+
).toString();
|
|
2559
|
+
}
|
|
2560
|
+
if (project?.modules?.module) {
|
|
2561
|
+
modules = project.modules.module.map((m) => m?._);
|
|
2562
|
+
}
|
|
2563
|
+
if (project?.properties) {
|
|
2564
|
+
for (const aprop of Object.keys(project.properties)) {
|
|
2565
|
+
properties[aprop] = project.properties[aprop]?._;
|
|
2566
|
+
if (!isQuarkus && aprop.startsWith("quarkus.platform")) {
|
|
2567
|
+
isQuarkus = true;
|
|
2568
|
+
}
|
|
2569
|
+
}
|
|
2570
|
+
}
|
|
2571
|
+
// Check the plugins for quarkus
|
|
2572
|
+
if (!isQuarkus && project?.build?.plugins?.plugin) {
|
|
2573
|
+
if (Array.isArray(project.build.plugins.plugin)) {
|
|
2574
|
+
for (const aplugin of project.build.plugins.plugin) {
|
|
2575
|
+
if (aplugin?.groupId?._?.includes("quarkus.platform")) {
|
|
2576
|
+
isQuarkus = true;
|
|
2577
|
+
break;
|
|
2578
|
+
}
|
|
2579
|
+
}
|
|
2580
|
+
} else if (
|
|
2581
|
+
Object.keys(project.build.plugins.plugin).length &&
|
|
2582
|
+
project.build.plugins.plugin?.groupId?._
|
|
2583
|
+
) {
|
|
2584
|
+
if (project.build.plugins.plugin.groupId._.includes("quarkus.platform")) {
|
|
2585
|
+
isQuarkus = true;
|
|
2586
|
+
}
|
|
2587
|
+
}
|
|
2588
|
+
}
|
|
2529
2589
|
if (project?.dependencies) {
|
|
2530
2590
|
let dependencies = project.dependencies.dependency;
|
|
2531
2591
|
// Convert to an array
|
|
@@ -2537,38 +2597,42 @@ export function parsePom(pomFile) {
|
|
|
2537
2597
|
for (const adep of dependencies) {
|
|
2538
2598
|
const version = adep.version;
|
|
2539
2599
|
let versionStr = undefined;
|
|
2540
|
-
if (version?._
|
|
2600
|
+
if (version?._) {
|
|
2541
2601
|
versionStr = version._;
|
|
2542
|
-
|
|
2543
|
-
|
|
2544
|
-
|
|
2545
|
-
|
|
2546
|
-
|
|
2547
|
-
|
|
2548
|
-
|
|
2549
|
-
|
|
2550
|
-
|
|
2551
|
-
|
|
2552
|
-
|
|
2553
|
-
|
|
2554
|
-
|
|
2555
|
-
|
|
2556
|
-
field: "purl",
|
|
2557
|
-
confidence: 1,
|
|
2558
|
-
methods: [
|
|
2559
|
-
{
|
|
2560
|
-
technique: "manifest-analysis",
|
|
2561
|
-
confidence: 1,
|
|
2562
|
-
value: pomFile,
|
|
2563
|
-
},
|
|
2564
|
-
],
|
|
2565
|
-
},
|
|
2602
|
+
}
|
|
2603
|
+
if (versionStr?.includes("$")) {
|
|
2604
|
+
versionStr = properties[versionStr?.replace(/[${}]/g, "")];
|
|
2605
|
+
}
|
|
2606
|
+
if (includeMavenTestScope || !adep.scope || adep.scope !== "test") {
|
|
2607
|
+
deps.push({
|
|
2608
|
+
group: adep.groupId ? adep.groupId._ : "",
|
|
2609
|
+
name: adep.artifactId ? adep.artifactId._ : "",
|
|
2610
|
+
version: versionStr,
|
|
2611
|
+
qualifiers: { type: "jar" },
|
|
2612
|
+
properties: [
|
|
2613
|
+
{
|
|
2614
|
+
name: "SrcFile",
|
|
2615
|
+
value: pomFile,
|
|
2566
2616
|
},
|
|
2567
|
-
|
|
2617
|
+
],
|
|
2618
|
+
evidence: {
|
|
2619
|
+
identity: {
|
|
2620
|
+
field: "purl",
|
|
2621
|
+
confidence: 1,
|
|
2622
|
+
methods: [
|
|
2623
|
+
{
|
|
2624
|
+
technique: "manifest-analysis",
|
|
2625
|
+
confidence: !versionStr ? 0 : 0.6,
|
|
2626
|
+
value: pomFile,
|
|
2627
|
+
},
|
|
2628
|
+
],
|
|
2629
|
+
},
|
|
2630
|
+
},
|
|
2631
|
+
});
|
|
2568
2632
|
}
|
|
2569
2633
|
}
|
|
2570
2634
|
}
|
|
2571
|
-
return deps;
|
|
2635
|
+
return { isQuarkus, pomPurl, modules, properties, dependencies: deps };
|
|
2572
2636
|
}
|
|
2573
2637
|
|
|
2574
2638
|
/**
|
|
@@ -3553,10 +3617,7 @@ export async function getMvnMetadata(
|
|
|
3553
3617
|
*/
|
|
3554
3618
|
export function composePomXmlUrl({ urlPrefix, group, name, version }) {
|
|
3555
3619
|
const groupPart = group.replace(/\./g, "/");
|
|
3556
|
-
|
|
3557
|
-
urlPrefix + groupPart
|
|
3558
|
-
}/${name}/${version}/${name}-${version}.pom`;
|
|
3559
|
-
return fullUrl;
|
|
3620
|
+
return `${urlPrefix + groupPart}/${name}/${version}/${name}-${version}.pom`;
|
|
3560
3621
|
}
|
|
3561
3622
|
|
|
3562
3623
|
/**
|
|
@@ -3593,8 +3654,7 @@ export async function fetchPomXmlAsJson({ urlPrefix, group, name, version }) {
|
|
|
3593
3654
|
return undefined;
|
|
3594
3655
|
}
|
|
3595
3656
|
const parentJson = xml2js(parentXml, options).project;
|
|
3596
|
-
|
|
3597
|
-
return result;
|
|
3657
|
+
return { ...parentJson, ...pomJson };
|
|
3598
3658
|
}
|
|
3599
3659
|
return pomJson;
|
|
3600
3660
|
}
|
|
@@ -4418,7 +4478,7 @@ export async function parseReqFile(reqData, fetchDepsInfo) {
|
|
|
4418
4478
|
export async function getPyModules(src, epkgList, options) {
|
|
4419
4479
|
const allImports = {};
|
|
4420
4480
|
const dependenciesList = [];
|
|
4421
|
-
let modList
|
|
4481
|
+
let modList;
|
|
4422
4482
|
const slicesFile = resolve(
|
|
4423
4483
|
options.depsSlicesFile || options.usagesSlicesFile,
|
|
4424
4484
|
);
|
|
@@ -4540,10 +4600,10 @@ export function parsePixiLockFile(pixiLockFileName, path) {
|
|
|
4540
4600
|
const pixiLockData = _load(pixiFileData);
|
|
4541
4601
|
|
|
4542
4602
|
// this function returns
|
|
4543
|
-
let pkgList
|
|
4603
|
+
let pkgList;
|
|
4544
4604
|
const formulationList = [];
|
|
4545
4605
|
const rootList = [];
|
|
4546
|
-
let dependenciesList
|
|
4606
|
+
let dependenciesList;
|
|
4547
4607
|
// we do not set false because we have assumed that pixi lock is accurate
|
|
4548
4608
|
const frozen = true;
|
|
4549
4609
|
|
|
@@ -4791,8 +4851,7 @@ export function getGithubUrlParts(repoUrl) {
|
|
|
4791
4851
|
repoUrl = repoUrl.slice(0, -4);
|
|
4792
4852
|
}
|
|
4793
4853
|
repoUrl.replace(/\/$/, "");
|
|
4794
|
-
|
|
4795
|
-
return parts;
|
|
4854
|
+
return repoUrl.split("/");
|
|
4796
4855
|
}
|
|
4797
4856
|
|
|
4798
4857
|
/**
|
|
@@ -4940,7 +4999,6 @@ export async function getGoPkgLicense(repoMetadata) {
|
|
|
4940
4999
|
}
|
|
4941
5000
|
|
|
4942
5001
|
export async function getGoPkgComponent(group, name, version, hash) {
|
|
4943
|
-
let pkg = {};
|
|
4944
5002
|
let license = undefined;
|
|
4945
5003
|
if (shouldFetchLicense()) {
|
|
4946
5004
|
if (DEBUG_MODE) {
|
|
@@ -4957,7 +5015,7 @@ export async function getGoPkgComponent(group, name, version, hash) {
|
|
|
4957
5015
|
const purlString = new PackageURL("golang", group, name, version)
|
|
4958
5016
|
.toString()
|
|
4959
5017
|
.replace(/%2F/g, "/");
|
|
4960
|
-
|
|
5018
|
+
return {
|
|
4961
5019
|
group: group,
|
|
4962
5020
|
name: name,
|
|
4963
5021
|
version: version,
|
|
@@ -4966,7 +5024,6 @@ export async function getGoPkgComponent(group, name, version, hash) {
|
|
|
4966
5024
|
purl: purlString,
|
|
4967
5025
|
"bom-ref": decodeURIComponent(purlString),
|
|
4968
5026
|
};
|
|
4969
|
-
return pkg;
|
|
4970
5027
|
}
|
|
4971
5028
|
|
|
4972
5029
|
/**
|
|
@@ -7698,7 +7755,7 @@ export function parseNuspecData(nupkgFile, nuspecData) {
|
|
|
7698
7755
|
}
|
|
7699
7756
|
dependenciesMap[pkg["bom-ref"]] = dependsOn;
|
|
7700
7757
|
} else if (m?.dependencies?.group) {
|
|
7701
|
-
let dependencyGroups
|
|
7758
|
+
let dependencyGroups;
|
|
7702
7759
|
if (Array.isArray(m.dependencies.group)) {
|
|
7703
7760
|
dependencyGroups = m.dependencies.group;
|
|
7704
7761
|
} else {
|
|
@@ -8604,16 +8661,15 @@ export function parseComposerJson(composerJsonFile) {
|
|
|
8604
8661
|
expression: composerData.license,
|
|
8605
8662
|
});
|
|
8606
8663
|
}
|
|
8607
|
-
moduleParent
|
|
8608
|
-
|
|
8609
|
-
|
|
8610
|
-
|
|
8611
|
-
|
|
8612
|
-
|
|
8613
|
-
|
|
8614
|
-
|
|
8615
|
-
|
|
8616
|
-
);
|
|
8664
|
+
moduleParent.purl = new PackageURL(
|
|
8665
|
+
"composer",
|
|
8666
|
+
moduleParent.group,
|
|
8667
|
+
moduleParent.name,
|
|
8668
|
+
moduleParent.version,
|
|
8669
|
+
null,
|
|
8670
|
+
null,
|
|
8671
|
+
).toString();
|
|
8672
|
+
moduleParent["bom-ref"] = decodeURIComponent(moduleParent.purl);
|
|
8617
8673
|
}
|
|
8618
8674
|
return { rootRequires, moduleParent };
|
|
8619
8675
|
}
|
|
@@ -9485,8 +9541,7 @@ export async function collectGradleDependencies(
|
|
|
9485
9541
|
for (const apom of pomFiles) {
|
|
9486
9542
|
pomPathMap[basename(apom)] = apom;
|
|
9487
9543
|
}
|
|
9488
|
-
|
|
9489
|
-
return jarNSMapping;
|
|
9544
|
+
return await collectJarNS(GRADLE_CACHE_DIR, pomPathMap);
|
|
9490
9545
|
}
|
|
9491
9546
|
|
|
9492
9547
|
/**
|
|
@@ -9516,10 +9571,9 @@ export async function collectJarNS(jarPath, pomPathMap = {}) {
|
|
|
9516
9571
|
const jarFiles = getAllFiles(jarPath, "**/*.jar");
|
|
9517
9572
|
if (jarFiles?.length) {
|
|
9518
9573
|
for (const jf of jarFiles) {
|
|
9519
|
-
const jarname = jf;
|
|
9520
9574
|
let pomname =
|
|
9521
9575
|
pomPathMap[basename(jf).replace(".jar", ".pom")] ||
|
|
9522
|
-
|
|
9576
|
+
jf.replace(".jar", ".pom");
|
|
9523
9577
|
let pomData = undefined;
|
|
9524
9578
|
let purl = undefined;
|
|
9525
9579
|
// In some cases, the pom name might be slightly different to the jar name
|
|
@@ -9536,6 +9590,7 @@ export async function collectJarNS(jarPath, pomPathMap = {}) {
|
|
|
9536
9590
|
}
|
|
9537
9591
|
}
|
|
9538
9592
|
if (existsSync(pomname)) {
|
|
9593
|
+
// TODO: Replace with parsePom which contains pomPurl
|
|
9539
9594
|
pomData = parsePomXml(readFileSync(pomname, { encoding: "utf-8" }));
|
|
9540
9595
|
if (pomData) {
|
|
9541
9596
|
const purlObj = new PackageURL(
|
|
@@ -9715,6 +9770,13 @@ export function convertJarNSToPackages(jarNSMapping) {
|
|
|
9715
9770
|
return pkgList;
|
|
9716
9771
|
}
|
|
9717
9772
|
|
|
9773
|
+
/**
|
|
9774
|
+
* Deprecated function to parse pom.xml. Use parsePom instead.
|
|
9775
|
+
*
|
|
9776
|
+
* @deprecated
|
|
9777
|
+
* @param pomXmlData XML contents
|
|
9778
|
+
* @returns {Object} Parent component data
|
|
9779
|
+
*/
|
|
9718
9780
|
export function parsePomXml(pomXmlData) {
|
|
9719
9781
|
if (!pomXmlData) {
|
|
9720
9782
|
return undefined;
|
|
@@ -10253,7 +10315,7 @@ export async function readZipEntry(
|
|
|
10253
10315
|
break;
|
|
10254
10316
|
}
|
|
10255
10317
|
}
|
|
10256
|
-
zip.close();
|
|
10318
|
+
await zip.close();
|
|
10257
10319
|
} catch (e) {
|
|
10258
10320
|
console.log(e);
|
|
10259
10321
|
}
|
|
@@ -10298,7 +10360,7 @@ export async function getJarClasses(jarFile) {
|
|
|
10298
10360
|
);
|
|
10299
10361
|
}
|
|
10300
10362
|
}
|
|
10301
|
-
zip.close();
|
|
10363
|
+
await zip.close();
|
|
10302
10364
|
} catch (e) {
|
|
10303
10365
|
// node-stream-zip seems to fail on deno with a RangeError.
|
|
10304
10366
|
// So we fallback to using jar -tf command
|
|
@@ -11726,7 +11788,7 @@ export function parseCmakeLikeFile(cmakeListFile, pkgType, options = {}) {
|
|
|
11726
11788
|
const tmpB = (tmpA[1] || "")
|
|
11727
11789
|
.trim()
|
|
11728
11790
|
.replace(/["']/g, "")
|
|
11729
|
-
.replace(/
|
|
11791
|
+
.replace(/ /g, ",")
|
|
11730
11792
|
.split(")")[0]
|
|
11731
11793
|
.split(",")
|
|
11732
11794
|
.filter((v) => v.length > 1);
|
|
@@ -11797,7 +11859,7 @@ export function parseCmakeLikeFile(cmakeListFile, pkgType, options = {}) {
|
|
|
11797
11859
|
// find_package(Boost 1.79 COMPONENTS date_time)
|
|
11798
11860
|
// find_library(PTHREADPOOL_LIB pthreadpool REQUIRED)
|
|
11799
11861
|
if (tmpB) {
|
|
11800
|
-
let working_name
|
|
11862
|
+
let working_name;
|
|
11801
11863
|
if (l.startsWith("find_library")) {
|
|
11802
11864
|
name_list.push(tmpB[1]);
|
|
11803
11865
|
working_name = tmpB[1];
|
|
@@ -11985,7 +12047,7 @@ export function getCppModules(src, options, osPkgsList, epkgList) {
|
|
|
11985
12047
|
const pkgType = "generic";
|
|
11986
12048
|
const pkgList = [];
|
|
11987
12049
|
const pkgAddedMap = {};
|
|
11988
|
-
let sliceData
|
|
12050
|
+
let sliceData;
|
|
11989
12051
|
const epkgMap = {};
|
|
11990
12052
|
let parentComponent = undefined;
|
|
11991
12053
|
const dependsOn = new Set();
|
|
@@ -12730,10 +12792,7 @@ export function isValidIriReference(iri) {
|
|
|
12730
12792
|
iriIsValid = false;
|
|
12731
12793
|
}
|
|
12732
12794
|
}
|
|
12733
|
-
|
|
12734
|
-
return true;
|
|
12735
|
-
}
|
|
12736
|
-
return false;
|
|
12795
|
+
return iriIsValid;
|
|
12737
12796
|
}
|
|
12738
12797
|
|
|
12739
12798
|
/**
|
|
@@ -2640,14 +2640,25 @@ test("get nget metadata", async () => {
|
|
|
2640
2640
|
}, 240000);
|
|
2641
2641
|
|
|
2642
2642
|
test("parsePomFile", () => {
|
|
2643
|
-
|
|
2644
|
-
expect(data.length).toEqual(
|
|
2643
|
+
let data = parsePom("./test/data/pom-quarkus.xml");
|
|
2644
|
+
expect(data.dependencies.length).toEqual(46);
|
|
2645
|
+
expect(data.modules).toBeUndefined();
|
|
2646
|
+
expect(data.properties).toBeDefined();
|
|
2647
|
+
expect(data.isQuarkus).toBeTruthy();
|
|
2648
|
+
data = parsePom("./test/data/pom-quarkus-modules.xml");
|
|
2649
|
+
expect(data.dependencies.length).toEqual(0);
|
|
2650
|
+
expect(data.modules.length).toEqual(105);
|
|
2651
|
+
expect(data.properties).toBeDefined();
|
|
2652
|
+
expect(data.isQuarkus).toBeFalsy();
|
|
2653
|
+
data = parsePom("./test/pom.xml");
|
|
2654
|
+
expect(data.dependencies.length).toEqual(13);
|
|
2655
|
+
expect(data.isQuarkus).toBeFalsy();
|
|
2645
2656
|
});
|
|
2646
2657
|
|
|
2647
2658
|
test("parsePomMetadata", async () => {
|
|
2648
2659
|
const deps = parsePom("./test/pom.xml");
|
|
2649
|
-
const data = await getMvnMetadata(deps);
|
|
2650
|
-
expect(data.length).toEqual(deps.length);
|
|
2660
|
+
const data = await getMvnMetadata(deps.dependencies);
|
|
2661
|
+
expect(data.length).toEqual(deps.dependencies.length);
|
|
2651
2662
|
});
|
|
2652
2663
|
|
|
2653
2664
|
// These tests are disabled because they are returning undefined
|
|
@@ -2689,7 +2700,6 @@ test("get repo license", async () => {
|
|
|
2689
2700
|
url: "https://github.com/ugorji/go/blob/master/LICENSE"
|
|
2690
2701
|
});
|
|
2691
2702
|
});
|
|
2692
|
-
*/
|
|
2693
2703
|
|
|
2694
2704
|
test("get go pkg license", async () => {
|
|
2695
2705
|
let license = await getGoPkgLicense({
|
|
@@ -2725,6 +2735,7 @@ test("get go pkg license", async () => {
|
|
|
2725
2735
|
},
|
|
2726
2736
|
]);
|
|
2727
2737
|
});
|
|
2738
|
+
*/
|
|
2728
2739
|
|
|
2729
2740
|
test("get licenses", () => {
|
|
2730
2741
|
let licenses = getLicenses({ license: "MIT" });
|
package/lib/managers/binary.js
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cyclonedx/cdxgen",
|
|
3
|
-
"version": "11.0.
|
|
3
|
+
"version": "11.0.6",
|
|
4
4
|
"description": "Creates CycloneDX Software Bill of Materials (SBOM) from source or container image",
|
|
5
5
|
"homepage": "http://github.com/cyclonedx/cdxgen",
|
|
6
6
|
"author": "Prabhu Subramanian <prabhu@appthreat.com>",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../lib/cli/index.js"],"names":[],"mappings":"AA4wBA;;;;;;;;GAQG;AACH,gFAFW,MAAM,SAchB;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../lib/cli/index.js"],"names":[],"mappings":"AA4wBA;;;;;;;;GAQG;AACH,gFAFW,MAAM,SAchB;AA8WD;;;;;;;GAOG;AACH,mCALW,MAAM,qBAiEhB;AAED;;;;;GAKG;AACH,uCAHW,MAAM;;;;EAKhB;AAED;;;;;GAKG;AACH,sCAHW,MAAM;;;;EAkBhB;AAED;;;;;GAKG;AACH,oCAHW,MAAM,8BAs7BhB;AAED;;;;;GAKG;AACH,sCAHW,MAAM,8BAwfhB;AAED;;;;;;;;;;GAUG;AACH,+DAsEC;AAED;;;;;GAKG;AACH,sCAHW,MAAM,8BA6bhB;AAED;;;;;GAKG;AACH,kCAHW,MAAM,8BA+YhB;AAED;;;;;GAKG;AACH,oCAHW,MAAM,8BAqIhB;AAED;;;;;GAKG;AACH,oCAHW,MAAM,8BAiDhB;AAED;;;;;GAKG;AACH,mCAHW,MAAM,qBA+KhB;AAED;;;;;GAKG;AACH,uCAHW,MAAM,qBAsHhB;AAED;;;;;GAKG;AACH,uCAHW,MAAM,qBA2BhB;AAED;;;;;GAKG;AACH,sCAHW,MAAM,qBA2BhB;AAED;;;;;GAKG;AACH,sCAHW,MAAM,qBA2BhB;AAED;;;;;GAKG;AACH,0CAHW,MAAM,qBAuBhB;AAED;;;;;GAKG;AACH,mCAHW,MAAM,8BAqDhB;AAED;;;;;GAKG;AACH,uCAHW,MAAM,8BA4ChB;AAED;;;;;GAKG;AACH,oCAHW,MAAM,qBA2BhB;AAED;;;;;GAKG;AACH,qCAHW,MAAM,8BA6FhB;AAED;;;;;GAKG;AACH,iDAHW,MAAM,qBAiUhB;AAED;;;;;GAKG;AACH,mCAHW,MAAM,qBAiJhB;AAED;;;;;GAKG;AACH,oCAHW,MAAM,8BAmFhB;AAED;;;;;GAKG;AACH,sCAHW,MAAM,8BA4XhB;AAED;;;;;GAKG;AACH,2CAHW,MAAM;;;;;;;;;;;;;;;;;;;;GAoChB;AAED;;;;;;;;KA+DC;AAED;;;;;;GAMG;AACH,yDA4EC;AAED;;;;;;;;;GASG;AACH,2GA6BC;AAED;;;;;GAKG;AACH,0CAHW,MAAM,EAAE,8BAqdlB;AAED;;;;;GAKG;AACH,iCAHW,MAAM,8BAgUhB;AAED;;;;;GAKG;AACH,gCAHW,MAAM,qBAqOhB;AAED;;;;;;GAMG;AACH,wDAFY,OAAO,CAAC;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,MAAM,EAAE,MAAM,EAAE,CAAA;CAAE,GAAG,SAAS,CAAC,CAwHxE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"display.d.ts","sourceRoot":"","sources":["../../../lib/helpers/display.js"],"names":[],"mappings":"AAoBA,mFAuEC;AAQD,iDAmBC;AACD,kDAsBC;AAED,qDAqBC;AAeD,
|
|
1
|
+
{"version":3,"file":"display.d.ts","sourceRoot":"","sources":["../../../lib/helpers/display.js"],"names":[],"mappings":"AAoBA,mFAuEC;AAQD,iDAmBC;AACD,kDAsBC;AAED,qDAqBC;AAeD,qDAqCC;AAED,mDA8CC;AACD,wFA0CC;AA4DD,2DA+BC;AAED,iEA0BC;AAED,uDAoBC;AAED,iDA8CC"}
|
|
@@ -186,30 +186,9 @@ export function parseMinJs(minJsFile: string): Promise<any[]>;
|
|
|
186
186
|
* Parse pom file
|
|
187
187
|
*
|
|
188
188
|
* @param {string} pomFile pom file to parse
|
|
189
|
+
* @returns {Object} Object containing pom properties, modules, and array of dependencies
|
|
189
190
|
*/
|
|
190
|
-
export function parsePom(pomFile: string):
|
|
191
|
-
group: any;
|
|
192
|
-
name: any;
|
|
193
|
-
version: any;
|
|
194
|
-
qualifiers: {
|
|
195
|
-
type: string;
|
|
196
|
-
};
|
|
197
|
-
properties: {
|
|
198
|
-
name: string;
|
|
199
|
-
value: string;
|
|
200
|
-
}[];
|
|
201
|
-
evidence: {
|
|
202
|
-
identity: {
|
|
203
|
-
field: string;
|
|
204
|
-
confidence: number;
|
|
205
|
-
methods: {
|
|
206
|
-
technique: string;
|
|
207
|
-
confidence: number;
|
|
208
|
-
value: string;
|
|
209
|
-
}[];
|
|
210
|
-
};
|
|
211
|
-
};
|
|
212
|
-
}[];
|
|
191
|
+
export function parsePom(pomFile: string): any;
|
|
213
192
|
/**
|
|
214
193
|
* Parse maven tree output
|
|
215
194
|
* @param {string} rawOutput Raw string output
|
|
@@ -527,7 +506,15 @@ export function getRepoLicense(repoUrl: string, repoMetadata: any): Promise<stri
|
|
|
527
506
|
* @param {Object} repoMetadata Repo metadata
|
|
528
507
|
*/
|
|
529
508
|
export function getGoPkgLicense(repoMetadata: any): Promise<any>;
|
|
530
|
-
export function getGoPkgComponent(group: any, name: any, version: any, hash: any): Promise<{
|
|
509
|
+
export function getGoPkgComponent(group: any, name: any, version: any, hash: any): Promise<{
|
|
510
|
+
group: any;
|
|
511
|
+
name: any;
|
|
512
|
+
version: any;
|
|
513
|
+
_integrity: any;
|
|
514
|
+
license: any;
|
|
515
|
+
purl: string;
|
|
516
|
+
"bom-ref": string;
|
|
517
|
+
}>;
|
|
531
518
|
/**
|
|
532
519
|
* Method to parse go.mod files
|
|
533
520
|
*
|
|
@@ -546,7 +533,15 @@ export function parseGoModData(goModData: string, gosumMap: any): any;
|
|
|
546
533
|
*/
|
|
547
534
|
export function parseGoListDep(rawOutput: string, gosumMap: any): Promise<{
|
|
548
535
|
parentComponent: {};
|
|
549
|
-
pkgList: {
|
|
536
|
+
pkgList: {
|
|
537
|
+
group: any;
|
|
538
|
+
name: any;
|
|
539
|
+
version: any;
|
|
540
|
+
_integrity: any;
|
|
541
|
+
license: any;
|
|
542
|
+
purl: string;
|
|
543
|
+
"bom-ref": string;
|
|
544
|
+
}[];
|
|
550
545
|
}>;
|
|
551
546
|
/**
|
|
552
547
|
* Parse go mod graph
|
|
@@ -965,14 +960,14 @@ export function convertJarNSToPackages(jarNSMapping: any): {
|
|
|
965
960
|
value: any;
|
|
966
961
|
}[];
|
|
967
962
|
}[];
|
|
968
|
-
|
|
969
|
-
|
|
970
|
-
|
|
971
|
-
|
|
972
|
-
|
|
973
|
-
|
|
974
|
-
|
|
975
|
-
|
|
963
|
+
/**
|
|
964
|
+
* Deprecated function to parse pom.xml. Use parsePom instead.
|
|
965
|
+
*
|
|
966
|
+
* @deprecated
|
|
967
|
+
* @param pomXmlData XML contents
|
|
968
|
+
* @returns {Object} Parent component data
|
|
969
|
+
*/
|
|
970
|
+
export function parsePomXml(pomXmlData: any): any;
|
|
976
971
|
export function parseJarManifest(jarMetadata: any): {};
|
|
977
972
|
export function parsePomProperties(pomProperties: any): {};
|
|
978
973
|
export function encodeForPurl(s: any): any;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../lib/helpers/utils.js"],"names":[],"mappings":"AAyIA,8CAKC;AAqBD,yCAYC;AAED,2CAQC;
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../lib/helpers/utils.js"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"binary.d.ts","sourceRoot":"","sources":["../../../lib/managers/binary.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"binary.d.ts","sourceRoot":"","sources":["../../../lib/managers/binary.js"],"names":[],"mappings":"AAiSA,iDA6BC;AAED,wDAkBC;AAED;;;;;GAKG;AACH,kDAFa,SAAS,MAAO,CAqB5B;AAED;;;;;;;EAqXC;AAkCD,gDAoDC;AAED;;;;;;GAMG;AACH,qCAJW,MAAM,cACN,MAAM,WA2BhB;AAED;;;;;;;;GAQG;AACH,kCANW,MAAM,iBACN,MAAM,YACN,OAAO,GAEN,OAAO,CA8BlB"}
|