@cyclonedx/cdxgen 11.0.4 → 11.0.5

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 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 (
@@ -1264,7 +1271,6 @@ export async function createJavaBom(path, options) {
1264
1271
  // For java, this would correctly include the cyclonedx maven plugin.
1265
1272
  let tools = undefined;
1266
1273
  let possible_misses = false;
1267
- let mavenDepsTreeInfoShown = false;
1268
1274
  // war/ear mode
1269
1275
  if (path.endsWith(".war") || path.endsWith(".jar")) {
1270
1276
  // Check if the file exists
@@ -1294,6 +1300,11 @@ export async function createJavaBom(path, options) {
1294
1300
  parentComponent,
1295
1301
  });
1296
1302
  }
1303
+ // -t quarkus is supported
1304
+ let isQuarkus = options?.projectType?.includes("quarkus");
1305
+ let useMavenDepsTree = isQuarkus ? false : PREFER_MAVEN_DEPS_TREE;
1306
+ // Is this a multi-module project
1307
+ let rootModules;
1297
1308
  // maven - pom.xml
1298
1309
  const pomFiles = getAllFiles(
1299
1310
  path,
@@ -1305,37 +1316,72 @@ export async function createJavaBom(path, options) {
1305
1316
  pomFiles?.length &&
1306
1317
  isPackageManagerAllowed("maven", ["bazel", "sbt", "gradle"], options)
1307
1318
  ) {
1308
- let result = undefined;
1309
- const cdxMavenPlugin =
1310
- process.env.CDX_MAVEN_PLUGIN ||
1311
- "org.cyclonedx:cyclonedx-maven-plugin:2.8.0";
1312
- const cdxMavenGoal = process.env.CDX_MAVEN_GOAL || "makeAggregateBom";
1313
- let mvnArgs = [
1314
- "-fn",
1315
- `${cdxMavenPlugin}:${cdxMavenGoal}`,
1316
- "-DoutputName=bom",
1317
- ];
1318
- if (includeMavenTestScope) {
1319
- mvnArgs.push("-DincludeTestScope=true");
1320
- }
1321
- // By using quiet mode we can reduce the maxBuffer used and avoid crashes
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);
1319
+ if (!isQuarkus) {
1320
+ // Quarkus projects require special treatment. To detect quarkus, we parse the first 3 maven file to look for a hit
1321
+ for (const pf of pomFiles.slice(0, 3)) {
1322
+ const pomMap = parsePom(pf);
1323
+ if (!rootModules && pomMap?.modules?.length) {
1324
+ rootModules = pomMap.modules;
1325
+ }
1326
+ // In quarkus mode, we cannot use the maven deps tree
1327
+ if (pomMap.isQuarkus) {
1328
+ isQuarkus = true;
1329
+ useMavenDepsTree = false;
1330
+ break;
1331
+ }
1332
+ }
1329
1333
  }
1330
- // specVersion 1.4 doesn't support externalReferences.type=disribution-intake
1331
- // so we need to run the plugin with the correct version
1332
- if (options.specVersion === 1.4) {
1333
- mvnArgs = mvnArgs.concat("-DschemaVersion=1.4");
1334
+ let result = undefined;
1335
+ let mvnArgs;
1336
+ if (isQuarkus) {
1337
+ // disable analytics. See: https://quarkus.io/usage/
1338
+ mvnArgs = [
1339
+ "-fn",
1340
+ "quarkus:dependency-sbom",
1341
+ "-Dquarkus.analytics.disabled=true",
1342
+ ];
1343
+ } else {
1344
+ const cdxMavenPlugin =
1345
+ process.env.CDX_MAVEN_PLUGIN ||
1346
+ "org.cyclonedx:cyclonedx-maven-plugin:2.9.1";
1347
+ const cdxMavenGoal = process.env.CDX_MAVEN_GOAL || "makeAggregateBom";
1348
+ mvnArgs = [
1349
+ "-fn",
1350
+ `${cdxMavenPlugin}:${cdxMavenGoal}`,
1351
+ "-DoutputName=bom",
1352
+ ];
1353
+ if (includeMavenTestScope) {
1354
+ mvnArgs.push("-DincludeTestScope=true");
1355
+ }
1356
+ // By using quiet mode we can reduce the maxBuffer used and avoid crashes
1357
+ if (!DEBUG_MODE) {
1358
+ mvnArgs.push("-q");
1359
+ }
1360
+ // Support for passing additional settings and profile to maven
1361
+ if (process.env.MVN_ARGS) {
1362
+ const addArgs = process.env.MVN_ARGS.split(" ");
1363
+ mvnArgs = mvnArgs.concat(addArgs);
1364
+ }
1365
+ // specVersion 1.4 doesn't support externalReferences.type=disribution-intake
1366
+ // so we need to run the plugin with the correct version
1367
+ if (options.specVersion === 1.4) {
1368
+ mvnArgs = mvnArgs.concat("-DschemaVersion=1.4");
1369
+ }
1334
1370
  }
1335
1371
  const firstPom = pomFiles.length ? pomFiles[0] : undefined;
1336
1372
  let mavenCmd = getMavenCommand(path, path);
1337
1373
  for (const f of pomFiles) {
1338
1374
  const basePath = dirname(f);
1375
+ if (
1376
+ isQuarkus &&
1377
+ !options.deep &&
1378
+ rootModules?.includes(basename(basePath))
1379
+ ) {
1380
+ if (DEBUG_MODE) {
1381
+ console.log("Skipped sub-module", basePath);
1382
+ }
1383
+ continue;
1384
+ }
1339
1385
  const settingsXml = join(basePath, "settings.xml");
1340
1386
  if (existsSync(settingsXml)) {
1341
1387
  console.log(
@@ -1358,16 +1404,7 @@ export async function createJavaBom(path, options) {
1358
1404
  }
1359
1405
  }
1360
1406
  // Use the cyclonedx maven plugin if there is no preference for maven deps tree
1361
- if (!PREFER_MAVEN_DEPS_TREE) {
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
- }
1407
+ if (!useMavenDepsTree) {
1371
1408
  console.log(
1372
1409
  `Executing '${mavenCmd} ${mvnArgs.join(" ")}' in`,
1373
1410
  basePath,
@@ -1381,19 +1418,23 @@ export async function createJavaBom(path, options) {
1381
1418
  });
1382
1419
  // Check if the cyclonedx plugin created the required bom.json file
1383
1420
  // Sometimes the plugin fails silently for complex maven projects
1384
- bomJsonFiles = getAllFiles(path, "**/target/*.json", options);
1421
+ bomJsonFiles = getAllFiles(
1422
+ path,
1423
+ "**/target/*{cdx,bom,cyclonedx}*.json",
1424
+ options,
1425
+ );
1385
1426
  // Check if the bom json files got created in a directory other than target
1386
1427
  if (!bomJsonFiles.length) {
1387
1428
  bomJsonFiles = getAllFiles(
1388
1429
  path,
1389
- "target/**/*{cdx,bom}*.json",
1430
+ "target/**/*{cdx,bom,cyclonedx}*.json",
1390
1431
  options,
1391
1432
  );
1392
1433
  }
1393
1434
  }
1394
1435
  // Also check if the user has a preference for maven deps tree command
1395
1436
  if (
1396
- PREFER_MAVEN_DEPS_TREE ||
1437
+ useMavenDepsTree ||
1397
1438
  !bomJsonFiles.length ||
1398
1439
  result?.status !== 0 ||
1399
1440
  result?.error
@@ -1539,7 +1580,7 @@ export async function createJavaBom(path, options) {
1539
1580
  }
1540
1581
  } // for
1541
1582
  // Locate and parse all bom.json files from the maven plugin
1542
- if (!PREFER_MAVEN_DEPS_TREE) {
1583
+ if (!useMavenDepsTree) {
1543
1584
  for (const abjson of bomJsonFiles) {
1544
1585
  let bomJsonObj = undefined;
1545
1586
  try {
@@ -1556,7 +1597,9 @@ export async function createJavaBom(path, options) {
1556
1597
  !tools &&
1557
1598
  bomJsonObj.metadata &&
1558
1599
  bomJsonObj.metadata.tools &&
1559
- Array.isArray(bomJsonObj.metadata.tools)
1600
+ (Array.isArray(bomJsonObj.metadata.tools) ||
1601
+ bomJsonObj.metadata.tools.components ||
1602
+ bomJsonObj.metadata.tools.services)
1560
1603
  ) {
1561
1604
  tools = bomJsonObj.metadata.tools;
1562
1605
  }
@@ -1621,10 +1664,6 @@ export async function createJavaBom(path, options) {
1621
1664
  console.warn(
1622
1665
  "Multiple errors occurred while building this project with maven. The SBOM is therefore incomplete!",
1623
1666
  );
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
1667
  }
1629
1668
  }
1630
1669
  }
@@ -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
- for (const comp of bomJson.components) {
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
- header: {
201
- alignment: "center",
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
- if (data.length > 1) {
206
- console.log(table(data, config));
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) {
@@ -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
- if (
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?._ && version._.indexOf("$") === -1) {
2600
+ if (version?._) {
2541
2601
  versionStr = version._;
2542
- if (includeMavenTestScope || !adep.scope || adep.scope !== "test")
2543
- deps.push({
2544
- group: adep.groupId ? adep.groupId._ : "",
2545
- name: adep.artifactId ? adep.artifactId._ : "",
2546
- version: versionStr,
2547
- qualifiers: { type: "jar" },
2548
- properties: [
2549
- {
2550
- name: "SrcFile",
2551
- value: pomFile,
2552
- },
2553
- ],
2554
- evidence: {
2555
- identity: {
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
- const fullUrl = `${
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
- const result = { ...parentJson, ...pomJson };
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
- const parts = repoUrl.split("/");
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
- pkg = {
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 {
@@ -9485,8 +9542,7 @@ export async function collectGradleDependencies(
9485
9542
  for (const apom of pomFiles) {
9486
9543
  pomPathMap[basename(apom)] = apom;
9487
9544
  }
9488
- const jarNSMapping = await collectJarNS(GRADLE_CACHE_DIR, pomPathMap);
9489
- return jarNSMapping;
9545
+ return await collectJarNS(GRADLE_CACHE_DIR, pomPathMap);
9490
9546
  }
9491
9547
 
9492
9548
  /**
@@ -9516,10 +9572,9 @@ export async function collectJarNS(jarPath, pomPathMap = {}) {
9516
9572
  const jarFiles = getAllFiles(jarPath, "**/*.jar");
9517
9573
  if (jarFiles?.length) {
9518
9574
  for (const jf of jarFiles) {
9519
- const jarname = jf;
9520
9575
  let pomname =
9521
9576
  pomPathMap[basename(jf).replace(".jar", ".pom")] ||
9522
- jarname.replace(".jar", ".pom");
9577
+ jf.replace(".jar", ".pom");
9523
9578
  let pomData = undefined;
9524
9579
  let purl = undefined;
9525
9580
  // In some cases, the pom name might be slightly different to the jar name
@@ -9536,6 +9591,7 @@ export async function collectJarNS(jarPath, pomPathMap = {}) {
9536
9591
  }
9537
9592
  }
9538
9593
  if (existsSync(pomname)) {
9594
+ // TODO: Replace with parsePom which contains pomPurl
9539
9595
  pomData = parsePomXml(readFileSync(pomname, { encoding: "utf-8" }));
9540
9596
  if (pomData) {
9541
9597
  const purlObj = new PackageURL(
@@ -9715,6 +9771,13 @@ export function convertJarNSToPackages(jarNSMapping) {
9715
9771
  return pkgList;
9716
9772
  }
9717
9773
 
9774
+ /**
9775
+ * Deprecated function to parse pom.xml. Use parsePom instead.
9776
+ *
9777
+ * @deprecated
9778
+ * @param pomXmlData XML contents
9779
+ * @returns {Object} Parent component data
9780
+ */
9718
9781
  export function parsePomXml(pomXmlData) {
9719
9782
  if (!pomXmlData) {
9720
9783
  return undefined;
@@ -10253,7 +10316,7 @@ export async function readZipEntry(
10253
10316
  break;
10254
10317
  }
10255
10318
  }
10256
- zip.close();
10319
+ await zip.close();
10257
10320
  } catch (e) {
10258
10321
  console.log(e);
10259
10322
  }
@@ -10298,7 +10361,7 @@ export async function getJarClasses(jarFile) {
10298
10361
  );
10299
10362
  }
10300
10363
  }
10301
- zip.close();
10364
+ await zip.close();
10302
10365
  } catch (e) {
10303
10366
  // node-stream-zip seems to fail on deno with a RangeError.
10304
10367
  // So we fallback to using jar -tf command
@@ -11726,7 +11789,7 @@ export function parseCmakeLikeFile(cmakeListFile, pkgType, options = {}) {
11726
11789
  const tmpB = (tmpA[1] || "")
11727
11790
  .trim()
11728
11791
  .replace(/["']/g, "")
11729
- .replace(/[ ]/g, ",")
11792
+ .replace(/ /g, ",")
11730
11793
  .split(")")[0]
11731
11794
  .split(",")
11732
11795
  .filter((v) => v.length > 1);
@@ -11797,7 +11860,7 @@ export function parseCmakeLikeFile(cmakeListFile, pkgType, options = {}) {
11797
11860
  // find_package(Boost 1.79 COMPONENTS date_time)
11798
11861
  // find_library(PTHREADPOOL_LIB pthreadpool REQUIRED)
11799
11862
  if (tmpB) {
11800
- let working_name = undefined;
11863
+ let working_name;
11801
11864
  if (l.startsWith("find_library")) {
11802
11865
  name_list.push(tmpB[1]);
11803
11866
  working_name = tmpB[1];
@@ -11985,7 +12048,7 @@ export function getCppModules(src, options, osPkgsList, epkgList) {
11985
12048
  const pkgType = "generic";
11986
12049
  const pkgList = [];
11987
12050
  const pkgAddedMap = {};
11988
- let sliceData = {};
12051
+ let sliceData;
11989
12052
  const epkgMap = {};
11990
12053
  let parentComponent = undefined;
11991
12054
  const dependsOn = new Set();
@@ -12730,10 +12793,7 @@ export function isValidIriReference(iri) {
12730
12793
  iriIsValid = false;
12731
12794
  }
12732
12795
  }
12733
- if (iriIsValid) {
12734
- return true;
12735
- }
12736
- return false;
12796
+ return iriIsValid;
12737
12797
  }
12738
12798
 
12739
12799
  /**
@@ -2640,14 +2640,25 @@ test("get nget metadata", async () => {
2640
2640
  }, 240000);
2641
2641
 
2642
2642
  test("parsePomFile", () => {
2643
- const data = parsePom("./test/pom.xml");
2644
- expect(data.length).toEqual(13);
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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cyclonedx/cdxgen",
3
- "version": "11.0.4",
3
+ "version": "11.0.5",
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;AAyVD;;;;;;;GAOG;AACH,mCALW,MAAM,qBAiEhB;AAED;;;;;GAKG;AACH,uCAHW,MAAM;;;;EAKhB;AAED;;;;;GAKG;AACH,sCAHW,MAAM;;;;EAkBhB;AAED;;;;;GAKG;AACH,oCAHW,MAAM,8BAs5BhB;AAED;;;;;GAKG;AACH,sCAHW,MAAM,8BA2ehB;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,qBAqJhB;AAED;;;;;GAKG;AACH,oCAHW,MAAM,8BAmFhB;AAED;;;;;GAKG;AACH,sCAHW,MAAM,8BA4XhB;AAED;;;;;GAKG;AACH,2CAHW,MAAM;;;;;;;;;;;;;;;;;;;;GAoChB;AAED;;;;;;;;KA+DC;AAED;;;;;;GAMG;AACH,yDAuCC;AAED;;;;;;;;;GASG;AACH,2GA6BC;AAED;;;;;GAKG;AACH,0CAHW,MAAM,EAAE,8BAmclB;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
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../lib/cli/index.js"],"names":[],"mappings":"AA4wBA;;;;;;;;GAQG;AACH,gFAFW,MAAM,SAchB;AAgWD;;;;;;;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,8BA2ehB;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,qBAqJhB;AAED;;;;;GAKG;AACH,oCAHW,MAAM,8BAmFhB;AAED;;;;;GAKG;AACH,sCAHW,MAAM,8BA4XhB;AAED;;;;;GAKG;AACH,2CAHW,MAAM;;;;;;;;;;;;;;;;;;;;GAoChB;AAED;;;;;;;;KA+DC;AAED;;;;;;GAMG;AACH,yDAuCC;AAED;;;;;;;;;GASG;AACH,2GA6BC;AAED;;;;;GAKG;AACH,0CAHW,MAAM,EAAE,8BAmclB;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,qDA4BC;AACD,mDA8CC;AACD,wFA0CC;AA4DD,2DA+BC;AAED,iEA0BC;AAED,uDAoBC;AAED,iDA8CC"}
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
- export function parsePomXml(pomXmlData: any): {
969
- artifactId: any;
970
- groupId: any;
971
- version: any;
972
- description: any;
973
- url: any;
974
- scm: any;
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;AAuMD;;;;;;;GAOG;AACH,4EAoBC;AAED;;;;;;GAMG;AACH,mGAuEC;AAED;;;;;;;;GAQG;AACH,yGASC;AAgBD;;;;;;GAMG;AACH,qCAJW,MAAM,WACN,MAAM,2BA8BhB;AAED;;;;;;GAMG;AACH,+CAJW,MAAM,WACN,MAAM,+BAoBhB;AAYD;;;;GAIG;AACH,gCAFa,MAAM,CAIlB;AAED;;;;;;IAMI;AACJ,iDAJW,MAAM,GACJ,OAAO,CAiBnB;AAED;;;;;;;;;GASG;AACH,iEA2BC;AAED;;;;;GAKG;AACH,6CAqDC;AAED;;;;;;GAMG;AACH,sEA0DC;AAED;;;;GAIG;AACH,4EAoCC;AAED;;;GAGG;AACH;;EAUC;AAED,sEA0BC;AAED;;;;GAIG;AACH,+DA4CC;AAED;;;;;GAKG;AACH,0CAHW,MAAM,WACN,OAAO,kBAkFjB;AAED;;;;;GAKG;AACH,0CAHW,MAAM,YACN,MAAM;;;GAuVhB;AAED;;;;;;;GAOG;AACH,6CAFW,MAAM,MA2DhB;AAwBD;;;;GAIG;AACH,4CAFW,MAAM;;;GAkOhB;AAED;;;;GAIG;AACH,4CAFW,MAAM,kBAiEhB;AA+DD;;;;;GAKG;AACH,wCAHW,MAAM,oBACN,MAAM;;;;;;;;;;;;;;;;;;GAiiBhB;AAED;;;;GAIG;AACH,8CAFW,MAAM,kBA+ChB;AAED;;;;GAIG;AACH,sCAFW,MAAM,kBAgFhB;AAED;;;;GAIG;AACH,kCAFW,MAAM;;;;;;;;;;;;;;;;;;;;;;IAuDhB;AAED;;;;;;GAMG;AACH,0CALW,MAAM,WACN,MAAM,OA+JhB;AAED;;;;;;GAMG;AACH,0CALW,MAAM,oBACN,MAAM,kBACN,GAAG,mBACH,MAAM;;;;;;;;;GAqOhB;AAED;;;GAGG;AACH,uCAFW,MAAM,SAoChB;AAED;;;GAGG;AACH,wCAFW,MAAM,OAahB;AAED,yEAwBC;AAED;;;;GAIG;AACH,+CAFW,MAAM;;;EAwDhB;AAED;;;;;GAKG;AACH,iDAHW,MAAM,qBACN,MAAM;;;;;;;;EAmDhB;AAED;;;;;;;GAOG;AACH,qDALW,MAAM,0BAGJ,MAAM,CA2ClB;AAED;;;GAGG;AACH,iDAFW,MAAM,SA4ChB;AAED;;;GAGG;AACH,8CAFW,MAAM,SAsDhB;AAED;;;GAGG;AACH,2CAFW,MAAM,SAiBhB;AAED;;GAEG;AACH,kDAoCC;AAED;;;;GAIG;AACH,oCAFW,MAAM,OAchB;AAED;;;;GAIG;AACH,wCAFW,MAAM,OAYhB;AAED;;;;;;;;GAQG;AACH,2FAuGC;AAED;;;;;;;;;GASG;AACH,sFAMC;AAED;;;;;;;;;GASG;AACH,gFAFY,MAAO,SAAS,CA8B3B;AAED;;;;;;;;;GASG;AACH,0EAFY,OAAO,QAAQ,CAU1B;AAED;;;;GAIG;AACH,4DAFW,WAAY,SAYtB;AAED;;;;;;;;;GASG;AACH,+FAFY,OAAO,QAAQ,CAc1B;AAED;;;;GAIG;AACH;;;EAqBC;AAED;;;;;GAKG;AACH,iFAFW,GAAC,OA0BX;AAED;;;;;GAKG;AACH,sFAsNC;AAED;;;;GAIG;AACH,qDAmBC;AAED;;;;GAIG;AACH,gEAeC;AAED;;;;GAIG;AACH,6CAFW,MAAM,MAmEhB;AAED;;;;;;GAMG;AACH,6DAHW,MAAM,iBACN,MAAM;;;;;;;;;;;GA0KhB;AAED;;;;;GAKG;AACH,mFAgKC;AAED;;;;;;;GAOG;AACH,kCALW,MAAM;;;;;;;;GA4EhB;AAED;;;;GAIG;AACH,mEAqBC;AAeD;;;;;GAKG;AACH;;;;;;;;;EAiLC;AAED;;;;GAIG;AACH;;;;;;EAcC;AAED;;;;GAIG;AACH,+DAFY,SAAO,SAAS,CAc3B;AAED;;;;GAIG;AACH,uDAoBC;AAED;;;;GAIG;AACH,oDAFY,QAAQ,CASnB;AAED;;;;;GAKG;AACH,oEAFY,SAAO,SAAS,CAc3B;AAED;;;;;;GAMG;AACH,oEAFY,OAAO,QAAQ,CA8D1B;AAED;;;;GAIG;AACH,iEAgDC;AAED,+FA4BC;AAED;;;;;;;GAOG;AACH,sEA4FC;AAED;;;;;;GAMG;AACH,0CAJW,MAAM;;;GA2DhB;AA4BD;;;;;;;;;;GAUG;AACH,2CARW,MAAM,aACN,MAAM;;;;;;;;GAkMhB;AAED;;;;GAIG;AACH,yCAHW,MAAM,OAehB;AAED;;;;GAIG;AACH,0CAHW,MAAM,kBAuChB;AAED,+DA+CC;AAED,uEAwBC;AA6BD;;;;GAIG;AACH,oEAmGC;AAED;;;;GAIG;AACH,8CAFW,MAAM,kBAgChB;AAED;;;;;GAKG;AACH,kDAHW,MAAM,YACN,MAAM;;;;;;;GAoQhB;AAED;;;;GAIG;AACH,kEAqEC;AAED;;;;GAIG;AACH,gEA+CC;AA0BD;;;;;;;;;;;;;;;;;GAiBG;AACH,mEALW,OAAO,4BAiLjB;AAED;;;;;;;;GAQG;AACH,+DALW,OAAO,4BAsIjB;AAED;;;IA4IC;AAED,wEA0BC;AAED,mEAqCC;AAED,0DAkBC;AAED,wDA+DC;AAED,0FAkEC;AAmBD;;IAiEC;AAED;;IA2DC;AAED,2DAiEC;AAED,yDAaC;AAaD,gDA+EC;AAED,yDAkDC;AAED,sDA0BC;AAED,sDAyBC;AAED,6DAwCC;AAED,yDAmCC;AAyCD,qFA2HC;AAED,8DA0BC;AAED,sDAiCC;AAED,yDAgCC;AAED,qDAkDC;AAED;;;;;GAKG;AACH,mDASC;AAED;;;;;;GAMG;AACH,4EAyJC;AAED,kEAoDC;AAED;;;;;;;;GAQG;AACH,kGA2RC;AAED;;;EAoNC;AAED;;;;EAsHC;AAED;;;EA+GC;AAED;;;;;;GAMG;AACH,oDAJW,MAAM,OAuChB;AAED;;;;;GAKG;AACH,+CAHW,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAsJhB;AAED;;;;;;EA+HC;AAED;;;;GAIG;AACH,0CAFW,MAAM;;;;;;;;;;;;;;;;;;;;;IAqDhB;AAmBD;;;;;GAKG;AACH,yCAHW,MAAM,YAQhB;AAED;;;;;GAKG;AACH,wCAHW,MAAM,YAchB;AAED;;;;;GAKG;AACH,wCAHW,MAAM,YAQhB;AAED;;;;;GAKG;AACH,yCAHW,MAAM,YAQhB;AAED;;;;;GAKG;AACH,2CAHW,MAAM,YAQhB;AAED;;;;;;;GAOG;AACH,qDALW,MAAM;;;;;;;;;;IAgJhB;AA0CD;;;;;;;GAOG;AACH,8FAHW,MAAM,WACN,MAAM,UAuDhB;AAED;;;;GAIG;AACH,8CAHW,MAAM,WACN,MAAM;;;;;;EAqBhB;AAED;;;GAGG;AACH,iDAFW,MAAM;;;;;;;;;;;;;;;;;;;;;IAwDhB;AAED;;;;;;;GAOG;AACH,iDALW,MAAM,YACN,MAAM,YACN,OAAO,oBACP,OAAO,eA6DjB;AAED,wIAgCC;AAED;;;;;;;GAOG;AACH,sCALW,MAAM,eACN,MAAM,eA6JhB;AAED;;;;;;;;;;;;;;;;;;;;;;IA6DC;AAED;;;;;;;EA8BC;AAED,uDAeC;AAED,2DAeC;AAED,2CAIC;AAED;;;;;;GAMG;AACH,uDAJW,MAAM,MAgBhB;AAED;;;;;;GAMG;AACH,uCAJW,MAAM,QACN,MAAM,GACJ,OAAO,QAAQ,CAU3B;AAED;;;;;;;;GAQG;AACH,2CANW,MAAM,WACN,MAAM,iBACN,MAAM,kBAsThB;AAED;;;;;;;GAOG;AACH,iDAFW,MAAM,OAehB;AAED;;;;;;;;;;;GAWG;AACH,uCAHW,MAAM,UACN,MAAM,UAYhB;AAED;;;;;;GAMG;AACH,2CAHW,MAAM,uBACN,MAAM,WAgBhB;AAED;;;;GAIG;AACH,4CAFW,MAAM,UAIhB;AAED;;;;;;;;GAQG;AACH,sCANW,MAAM,eACN,MAAM,oBACN,MAAM,gBAgChB;AAED;;;;;;GAMG;AACH,uCAJW,MAAM,kBA2EhB;AAED;;;;;GAKG;AACH,0CAHW,MAAM,YACN,MAAM,GAAC,IAAI,UAiCrB;AAED;;;;;;;;GAQG;AACH,6DANW,MAAM,EAAE,qBACR,MAAM,EAAE,6BACR,MAAM,EAAE,GAEN,MAAM,EAAE,CAkBpB;AAED;;;;;;GAMG;AAEH,uDALW,MAAM,iBACN,MAAM,EAAE,GACN,GAAG,CAsCf;AAED;;;;;;GAMG;AACH,iDAJW,MAAM,YACN,MAAM,GACJ,MAAM,CA0ClB;AAED;;;;;GAKG;AACH,yCAHW,MAAM,YACN,MAAM,UAsEhB;AAED;;GAEG;AACH,sCAmBC;AAED,0DA2EC;AAED;;;;;;;;GAQG;AACH,oCANW,MAAM,YACN,MAAM,gBACN,MAAM,eACN,MAAM,OA6ChB;AAuFD;;;;;;;;;GASG;AACH,2CAPW,MAAM,kBACN,MAAM,eACN,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAuYhB;AAED;;;;;;;;;;;GAWG;AACH,gDAPW,MAAM,+BAEN,MAAM;;;;;;;;;;;;;;;;EA+KhB;AAGD;;;;;EAmBC;AAED;;;;;;;GAOG;AACH,kEAJW,MAAM,cACN,MAAM,iCA2IhB;AAED,qDASC;AAED;;;;;;;EA2GC;AAED;;;EA8PC;AAED,sEA6BC;AAED;;;;;;;GAOG;AACH,mCALW,MAAM,WACN,MAAM;;;;;;;EAuQhB;AAED;;;;;;GAMG;AACH,2CAHW,MAAM,OAKhB;AAED,qDA0CC;AA8HD;;;;;GAKG;AACH;;;GA2HC;AAED,yEA0HC;AAED;;;;;;GAMG;AACH,mDAkBC;AAED;;;;;;;;;;GAUG;AACH,0DAqBC;AAED;;;;;;GAMG;AACH,sFAiBC;AAED;;;;;;;GAOG;AACH,2EAgCC;AA18YD,gCAEc;AACd,4BAA4C;AAC5C,4BAA6C;AAC7C,2BAAmE;AAsBnE,iCAEE;AAqBF,iCAIyC;AAGzC,gCACmE;AAGnE,gCACsE;AAGtE,8BAA+B;AAK/B,4CAEmE;AAGnE,6CAEE;AAUF,oCAAkD;AAGlD,uCAEuD;AAYvD,8BAAyC;AAczC,gCAA6C;AAU7C,8BAAiC;AAIjC,4BAA6B;AAI7B,2BAA2B;AAI3B,4BAA6B;AAI7B,2BAA2B;AAI3B,6BAA+B;AAI/B,0BAAyB;AAIzB,6BAA+B;AAM/B,2BAA2B;AAK3B,4BAA6B;AAO7B,gDAC2D;AAG3D,kDAWE;AAGF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA+HE;;;;AA6IF,8BAQG;AA82JH,8CAUE"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../lib/helpers/utils.js"],"names":[],"mappings":"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"}