@cyclonedx/cdxgen 11.2.5 → 11.2.7

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 CHANGED
@@ -516,7 +516,7 @@ Please check out our [contribute to CycloneDX/cdxgen documentation][github-contr
516
516
 
517
517
  Before raising a PR, please run the following commands.
518
518
 
519
- ```bash
519
+ ```shell
520
520
  corepack enable pnpm
521
521
  pnpm install --config.strict-dep-builds=true
522
522
  # Generate types using jsdoc syntax
@@ -527,6 +527,17 @@ pnpm run lint
527
527
  pnpm test
528
528
  ```
529
529
 
530
+ ### Testing main branch
531
+
532
+ Use `pnpm add -g` command to quickly test the main branch.
533
+
534
+ ```shell
535
+ corepack pnpm bin -g
536
+ corepack pnpm setup
537
+ corepack pnpm add -g --allow-build sqlite3 https://github.com/CycloneDX/cdxgen
538
+ cdxgen --help
539
+ ```
540
+
530
541
  ## Sponsors
531
542
 
532
543
  <img src="./docs/_media/LevoLogo-LightBg.jpg" width="200" height="auto">
package/bin/cdxgen.js CHANGED
@@ -196,17 +196,14 @@ const args = yargs(hideBin(process.argv))
196
196
  })
197
197
  .option("usages-slices-file", {
198
198
  description: "Path for the usages slices file created by atom.",
199
- default: "usages.slices.json",
200
199
  hidden: true,
201
200
  })
202
201
  .option("data-flow-slices-file", {
203
202
  description: "Path for the data-flow slices file created by atom.",
204
- default: "data-flow.slices.json",
205
203
  hidden: true,
206
204
  })
207
205
  .option("reachables-slices-file", {
208
206
  description: "Path for the reachables slices file created by atom.",
209
- default: "reachables.slices.json",
210
207
  hidden: true,
211
208
  })
212
209
  .option("semantics-slices-file", {
@@ -440,6 +437,15 @@ const options = Object.assign({}, args, {
440
437
  ? resolve(join(filePath, args.output))
441
438
  : args.output,
442
439
  });
440
+ // Should we create the output directory?
441
+ const outputDirectory = dirname(options.output);
442
+ if (
443
+ outputDirectory &&
444
+ outputDirectory !== process.cwd() &&
445
+ !safeExistsSync(outputDirectory)
446
+ ) {
447
+ fs.mkdirSync(outputDirectory, { recursive: true });
448
+ }
443
449
  // Filter duplicate types. Eg: -t gradle -t gradle
444
450
  if (options.projectType && Array.isArray(options.projectType)) {
445
451
  options.projectType = Array.from(new Set(options.projectType));
@@ -661,6 +667,11 @@ const checkPermissions = (filePath, options) => {
661
667
  }
662
668
  // Secure mode checks
663
669
  if (isSecureMode) {
670
+ if (process.env?.GITHUB_TOKEN) {
671
+ console.log(
672
+ "Ensure that the GitHub token provided to cdxgen is restricted to read-only scopes.",
673
+ );
674
+ }
664
675
  if (process.permission.has("fs.read", "*")) {
665
676
  console.log(
666
677
  "\x1b[1;35mSECURE MODE: DO NOT run cdxgen with FileSystemRead permission set to wildcard.\x1b[0m",
@@ -788,10 +799,6 @@ const checkPermissions = (filePath, options) => {
788
799
  }
789
800
  return;
790
801
  }
791
- // This will prevent people from accidentally using the usages slices belonging to a different project
792
- if (!options.usagesSlicesFile) {
793
- options.usagesSlicesFile = `${options.projectName}-usages.json`;
794
- }
795
802
  prepareEnv(filePath, options);
796
803
  thoughtLog("Getting ready to generate the BOM ⚡️.");
797
804
  let bomNSData = (await createBom(filePath, options)) || {};
@@ -231,7 +231,7 @@
231
231
  "sbom": [
232
232
  {
233
233
  "test": [
234
- "(junit|xmlunit|testng|mocha|jest|test4j|xunit|coverlet|Test\\.Sdk)",
234
+ "(junit|xmlunit|testng|mocha|jest|test4j|xunit|coverlet|Test\\.Sdk|Moq)",
235
235
  "^(chai)$"
236
236
  ]
237
237
  },
@@ -5,6 +5,16 @@
5
5
  "System.Data",
6
6
  "Microsoft.AspNetCore",
7
7
  "Microsoft.NETCore",
8
+ "Microsoft.EntityFrameworkCore",
9
+ "pkg:nuget/EntityFramework",
10
+ "pkg:nuget/Microsoft.Build.Framework",
11
+ "EntityFrameworkCore",
12
+ "Microsoft.Data.OData",
13
+ "Microsoft.NETCore.Targets",
14
+ "System.Diagnostics.DiagnosticSource",
15
+ "Microsoft.OData.",
16
+ "Google.Cloud.",
17
+ "PnP.Framework",
8
18
  "springframework",
9
19
  "pkg:maven/us.springett/alpine",
10
20
  "pkg:pypi/flask",
@@ -26,13 +36,15 @@
26
36
  "play",
27
37
  "spark",
28
38
  "struts",
29
- "angular",
30
- "react",
31
- "next",
32
- "ember",
33
- "express",
34
- "knex",
35
- "vue",
39
+ "pkg:npm/%40angular",
40
+ "pkg:npm/react",
41
+ "pkg:npm/next",
42
+ "pkg:npm/ember",
43
+ "pkg:npm/%40electron",
44
+ "pkg:npm/%40protobufjs",
45
+ "pkg:npm/express",
46
+ "pkg:npm/knex",
47
+ "pkg:npm/vue",
36
48
  "pkg:pypi/aiohttp",
37
49
  "pkg:pypi/bottle",
38
50
  "pkg:pypi/cherrypy",
@@ -1144,6 +1144,7 @@
1144
1144
  "uwsgidecorators": "uwsgi",
1145
1145
  "valentine": "ab",
1146
1146
  "validate": "configobj",
1147
+ "vdb": "appthreat-vulnerability-db",
1147
1148
  "version": "chartio",
1148
1149
  "virtualenvapi": "ar-virtualenv-api",
1149
1150
  "vyatta": "brocade-plugins",
package/lib/cli/index.js CHANGED
@@ -15,7 +15,6 @@ import {
15
15
  import { platform as _platform, arch, homedir } from "node:os";
16
16
  import { basename, dirname, join, relative, resolve, sep } from "node:path";
17
17
  import process from "node:process";
18
- import { URL } from "node:url";
19
18
  import got from "got";
20
19
  import { load as loadYaml } from "js-yaml";
21
20
  import { PackageURL } from "packageurl-js";
@@ -786,6 +785,10 @@ function addMetadata(parentComponent = {}, options = {}, context = {}) {
786
785
  "PNPM_STORE_PATH",
787
786
  "PNPM_HOME",
788
787
  "PNPM_CONFIG_",
788
+ "GIO_MODULE_DIR",
789
+ "GST_PLUGIN_PATH",
790
+ "GST_PLUGIN_SYSTEM_PATH",
791
+ "APPDIR_LIBRARY_PATH", // appimage specific which gets prepended to LD_LIBRARY_PATH
789
792
  ]) {
790
793
  if (evalue.includes(senvValue)) {
791
794
  mproperties.push({
@@ -1203,6 +1206,13 @@ function determinePackageType(pkg) {
1203
1206
  return "application";
1204
1207
  }
1205
1208
  }
1209
+ // See #1760
1210
+ if (
1211
+ purl.namespace?.startsWith("@types") ||
1212
+ (purl.namespace?.includes("-types") && pkg?.type === "npm")
1213
+ ) {
1214
+ return "library";
1215
+ }
1206
1216
  for (const cf of frameworksList.all) {
1207
1217
  if (
1208
1218
  pkg.purl.startsWith(cf) ||
@@ -1232,6 +1242,13 @@ function determinePackageType(pkg) {
1232
1242
  }
1233
1243
  }
1234
1244
  }
1245
+ if (Object.prototype.hasOwnProperty.call(pkg, "tags")) {
1246
+ for (const tag of pkg.tags) {
1247
+ if (tag && tag.toLowerCase() === "framework") {
1248
+ return "framework";
1249
+ }
1250
+ }
1251
+ }
1235
1252
  return "library";
1236
1253
  }
1237
1254
 
@@ -1965,46 +1982,45 @@ export async function createJavaBom(path, options) {
1965
1982
  options,
1966
1983
  )
1967
1984
  ) {
1985
+ let includedBuilds = [];
1968
1986
  let allProjectsStr = [];
1969
1987
  if (process.env.GRADLE_INCLUDED_BUILDS) {
1970
- // Automatically add the colon prefix
1971
- allProjectsStr = process.env.GRADLE_INCLUDED_BUILDS.split(",").map((b) =>
1988
+ includedBuilds = process.env.GRADLE_INCLUDED_BUILDS.split(",").map((b) =>
1972
1989
  !b.startsWith(":") ? `:${b}` : b,
1973
1990
  );
1974
1991
  }
1975
1992
  let parallelPropTaskOut = executeParallelGradleProperties(
1976
1993
  gradleRootPath,
1977
- [null],
1994
+ [null].concat(includedBuilds),
1978
1995
  process.env.GRADLE_INCLUDED_BUILDS
1979
1996
  ? []
1980
1997
  : ["--init-script", GRADLE_INIT_SCRIPT],
1981
1998
  );
1982
- if (!process.env.GRADLE_INCLUDED_BUILDS) {
1999
+ if (process.env.GRADLE_INCLUDED_BUILDS === undefined) {
1983
2000
  const outputLines = parallelPropTaskOut.split("\n");
1984
2001
  for (const [i, line] of outputLines.entries()) {
1985
- if (line.startsWith("Root project '")) {
2002
+ if (line.startsWith("Root project '") || line.startsWith("Project '")) {
1986
2003
  break;
1987
2004
  }
1988
2005
  if (line.startsWith("<CDXGEN:includedBuild>")) {
1989
2006
  const includedBuild = line.split(">");
1990
- if (!allProjectsStr.includes(includedBuild[1].trim())) {
1991
- allProjectsStr.push(includedBuild[1].trim());
2007
+ if (!includedBuilds.includes(includedBuild[1].trim())) {
2008
+ includedBuilds.push(includedBuild[1].trim());
1992
2009
  }
1993
2010
  }
1994
2011
  }
1995
- }
1996
- if (allProjectsStr.length > 0) {
1997
- thoughtLog(
1998
- `Wait, this gradle project uses composite builds. I must carefully process these ${allProjectsStr.length} projects, in addition to the root.`,
1999
- );
2000
- if (DEBUG_MODE) {
2001
- console.log(`Composite builds: ${allProjectsStr.join(" ").trim()}.`);
2012
+ if (includedBuilds.length > 0) {
2013
+ thoughtLog(
2014
+ `Wait, this gradle project uses composite builds. I must carefully process these ${includedBuilds.length} projects, in addition to the root.`,
2015
+ );
2016
+ if (DEBUG_MODE) {
2017
+ console.log(`Composite builds: ${includedBuilds.join(" ").trim()}.`);
2018
+ }
2019
+ parallelPropTaskOut = parallelPropTaskOut.concat(
2020
+ "\n",
2021
+ executeParallelGradleProperties(gradleRootPath, includedBuilds),
2022
+ );
2002
2023
  }
2003
- parallelPropTaskOut = parallelPropTaskOut.concat(
2004
- "\n",
2005
- executeParallelGradleProperties(gradleRootPath, allProjectsStr),
2006
- );
2007
- allProjectsStr = [];
2008
2024
  }
2009
2025
  const splitPropTaskOut = splitOutputByGradleProjects(parallelPropTaskOut, [
2010
2026
  "properties",
@@ -2017,7 +2033,7 @@ export async function createJavaBom(path, options) {
2017
2033
  rootProject,
2018
2034
  retMap.metadata,
2019
2035
  );
2020
- if (!key.startsWith(":")) {
2036
+ if (!includedBuilds.includes(key)) {
2021
2037
  parentComponent = rootComponent;
2022
2038
  }
2023
2039
  gradleModules.set(key, rootComponent);
@@ -2303,7 +2319,7 @@ export async function createJavaBom(path, options) {
2303
2319
  query = ["--bazelrc=.bazelrc"];
2304
2320
  }
2305
2321
  if (["true", "1"].includes(process.env.BAZEL_USE_ACTION_GRAPH)) {
2306
- query = query.concat(["aquery", `outputs('.*.jar',deps(${target}))`]);
2322
+ query = query.concat(["query", `deps(${target})`, "--output=label"]);
2307
2323
  bazelParser = parseBazelActionGraph;
2308
2324
  } else {
2309
2325
  query = query.concat([
@@ -2762,11 +2778,7 @@ export async function createNodejsBom(path, options) {
2762
2778
  let allImports = {};
2763
2779
  let allExports = {};
2764
2780
  if (
2765
- !hasAnyProjectType(
2766
- ["docker", "oci", "container", "os", "pnpm"],
2767
- options,
2768
- false,
2769
- ) &&
2781
+ !hasAnyProjectType(["docker", "oci", "container", "os"], options, false) &&
2770
2782
  !options.noBabel
2771
2783
  ) {
2772
2784
  if (DEBUG_MODE) {
@@ -4837,7 +4849,10 @@ export function createCppBom(path, options) {
4837
4849
  parentComponent = retMap.parentComponent;
4838
4850
  } else {
4839
4851
  parentComponent.components = parentComponent.components || [];
4840
- if (!addedParentComponentsMap[retMap.parentComponent.name]) {
4852
+ if (
4853
+ retMap?.parentComponent?.name &&
4854
+ !addedParentComponentsMap[retMap.parentComponent.name]
4855
+ ) {
4841
4856
  parentComponent.components.push(retMap.parentComponent);
4842
4857
  addedParentComponentsMap[retMap.parentComponent.name] = true;
4843
4858
  }
@@ -6806,6 +6821,8 @@ export function trimComponents(components) {
6806
6821
  if (comp?.evidence?.identity) {
6807
6822
  if (!existingComponent.evidence) {
6808
6823
  existingComponent.evidence = { identity: [] };
6824
+ } else if (!existingComponent?.evidence?.identity) {
6825
+ existingComponent.evidence.identity = [];
6809
6826
  } else if (
6810
6827
  existingComponent?.evidence?.identity &&
6811
6828
  !Array.isArray(existingComponent.evidence.identity)
@@ -235,6 +235,8 @@ export async function createSlice(
235
235
  language = "js";
236
236
  } else if (language.startsWith("python")) {
237
237
  language = "python";
238
+ } else if (PROJECT_TYPE_ALIASES.scala.includes(language)) {
239
+ language = "scala";
238
240
  }
239
241
  if (
240
242
  PROJECT_TYPE_ALIASES.swift.includes(language) &&
@@ -253,11 +255,11 @@ export async function createSlice(
253
255
  }
254
256
  const slicesFile =
255
257
  options[`${sliceType}SlicesFile`] ||
256
- join(sliceOutputDir, `${sliceType}.slices.json`);
258
+ join(sliceOutputDir, `${language}-${sliceType}.slices.json`);
257
259
  const openapiSpecFile = basename(
258
260
  options.openapiSpecFile ||
259
261
  process.env?.ATOM_TOOLS_OPENAPI_FILENAME ||
260
- "openapi.json",
262
+ join(sliceOutputDir, `${language}-openapi.json`),
261
263
  );
262
264
  // For some languages such as scala, semantics slices file would get created during usages slicing.
263
265
  let semanticsSlicesFile;
@@ -275,7 +277,7 @@ export async function createSlice(
275
277
  console.log(
276
278
  `Creating ${sliceType} slice for ${resolve(filePath)}. Please wait ...`,
277
279
  );
278
- const atomFile = join(sliceOutputDir, "app.atom");
280
+ const atomFile = join(sliceOutputDir, `${language}-app.atom`);
279
281
  let args = [sliceType];
280
282
  // Support for crypto slices aka CBOM
281
283
  if (sliceType === "reachables" && options.includeCrypto) {
@@ -319,7 +321,7 @@ export async function createSlice(
319
321
  ATOM_TOOLS_OPENAPI_FILENAME: openapiSpecFile, // The file would get over-written
320
322
  ATOM_TOOLS_OPENAPI_FORMAT:
321
323
  process.env?.ATOM_TOOLS_OPENAPI_FORMAT || "openapi3.1.0", // editor.swagger.io doesn't support 3.1.0 yet
322
- ATOM_TOOLS_WORK_DIR: resolve(filePath), // This must be the directory containing semantics.slices.json
324
+ ATOM_TOOLS_WORK_DIR: process.env?.ATOM_TOOLS_WORK_DIR || resolve(filePath), // This must be the directory containing semantics.slices.json
323
325
  OPENAPI_SERVER_URL: process.env?.OPENAPI_SERVER_URL,
324
326
  });
325
327
  if (!result || !safeExistsSync(slicesFile)) {
@@ -1410,7 +1412,6 @@ export function createEvinseFile(sliceArtefacts, options) {
1410
1412
  dataFlowFrames,
1411
1413
  cryptoComponents,
1412
1414
  cryptoGeneratePurls,
1413
- openapiSpecFile,
1414
1415
  } = sliceArtefacts;
1415
1416
  const bomFile = options.input;
1416
1417
  const evinseOutFile = options.output;
@@ -29,10 +29,10 @@ export const GIT_COMMAND = process.env.GIT_CMD || "git";
29
29
 
30
30
  // sdkman tool aliases
31
31
  export const SDKMAN_JAVA_TOOL_ALIASES = {
32
- java8: process.env.JAVA8_TOOL || "8.0.442-amzn", // Temurin no longer offers java8 :(
33
- java11: process.env.JAVA11_TOOL || "11.0.25-tem",
34
- java17: process.env.JAVA17_TOOL || "17.0.14-tem",
35
- java21: process.env.JAVA21_TOOL || "21.0.6-tem",
32
+ java8: process.env.JAVA8_TOOL || "8.0.452-amzn", // Temurin no longer offers java8 :(
33
+ java11: process.env.JAVA11_TOOL || "11.0.26-tem",
34
+ java17: process.env.JAVA17_TOOL || "17.0.15-tem",
35
+ java21: process.env.JAVA21_TOOL || "21.0.7-tem",
36
36
  java22: process.env.JAVA22_TOOL || "22.0.2-tem",
37
37
  java23: process.env.JAVA23_TOOL || "23.0.2-tem",
38
38
  java24: process.env.JAVA24_TOOL || "24-tem",
@@ -4091,12 +4091,7 @@ export function executeParallelGradleProperties(
4091
4091
  * @param {string} rawOutput Raw string output
4092
4092
  */
4093
4093
  export function parseBazelActionGraph(rawOutput) {
4094
- const mavenPrefixRegex = RegExp(
4095
- `^.*v1/https/[^/]*(?:${
4096
- process.env.BAZEL_STRIP_MAVEN_PREFIX || "/maven2/"
4097
- })?(.*)/(.*)/(.*)/(.*.jar)(?:"| \\\\)?$`,
4098
- "g",
4099
- );
4094
+ const mavenPrefixRegex = /^@maven\/\/:(.*)\/(.*)\/(.*)\/(.*\.jar)$/g;
4100
4095
 
4101
4096
  if (typeof rawOutput === "string") {
4102
4097
  const deps = [];
@@ -4104,10 +4099,7 @@ export function parseBazelActionGraph(rawOutput) {
4104
4099
  const tmpA = rawOutput.split("\n");
4105
4100
  tmpA.forEach((l) => {
4106
4101
  l = l.replace("\r", "");
4107
- if (
4108
- l.trim().startsWith("arguments") ||
4109
- l.trim().startsWith("bazel-out")
4110
- ) {
4102
+ if (l.trim().startsWith("@maven//:")) {
4111
4103
  const matches = Array.from(l.matchAll(mavenPrefixRegex));
4112
4104
 
4113
4105
  if (matches[0]?.[1]) {
@@ -12665,7 +12657,9 @@ function fullScanCocoaPod(dependency, component, options) {
12665
12657
  component.authors = [];
12666
12658
  if (podspec.authors.constructor === Object) {
12667
12659
  Object.entries(podspec.authors).forEach(([name, email]) =>
12668
- component.authors.push({ name, email }),
12660
+ email.includes("@")
12661
+ ? component.authors.push({ name, email })
12662
+ : component.authors.push({ name }),
12669
12663
  );
12670
12664
  } else if (podspec.authors.constructor === Array) {
12671
12665
  podspec.authors.forEach((name) => component.authors.push({ name }));
@@ -13034,7 +13028,6 @@ export function executeAtom(src, args, extra_env = {}) {
13034
13028
  cwd,
13035
13029
  encoding: "utf-8",
13036
13030
  timeout: TIMEOUT_MS,
13037
- detached: !isWin && !process.env.CI,
13038
13031
  shell: isWin,
13039
13032
  killSignal: "SIGKILL",
13040
13033
  env,
@@ -13064,6 +13057,12 @@ export function executeAtom(src, args, extra_env = {}) {
13064
13057
  console.warn(
13065
13058
  "WARN: The binary plugin used by atom has crashed. Please try an alternative container image and file an issue with steps to reproduce at: https://github.com/AppThreat/atom/issues",
13066
13059
  );
13060
+ } else if (
13061
+ result.stderr?.includes("Could not parse command line options")
13062
+ ) {
13063
+ console.warn(
13064
+ "Invalid command-line options passed to atom. Please file a bug in the cdxgen repository.",
13065
+ );
13067
13066
  }
13068
13067
  }
13069
13068
  if (result.stdout) {
@@ -13110,7 +13109,7 @@ export function findAppModules(
13110
13109
  slicesFile = undefined,
13111
13110
  ) {
13112
13111
  const tempDir = mkdtempSync(join(tmpdir(), "atom-deps-"));
13113
- const atomFile = join(tempDir, "app.atom");
13112
+ const atomFile = join(tempDir, `${language}-app.atom`);
13114
13113
  if (!slicesFile) {
13115
13114
  slicesFile = join(tempDir, "slices.json");
13116
13115
  }
@@ -1318,7 +1318,7 @@ describe("go data with licenses", () => {
1318
1318
  afterAll(() => {
1319
1319
  delete process.env.FETCH_LICENSE;
1320
1320
  });
1321
- test("parseGoSumData with licenses", async () => {
1321
+ test.skip("parseGoSumData with licenses", async () => {
1322
1322
  let dep_list = await parseGosumData(null);
1323
1323
  expect(dep_list).toEqual([]);
1324
1324
  dep_list = await parseGosumData(
@@ -1386,7 +1386,7 @@ describe("go data with licenses", () => {
1386
1386
  });
1387
1387
  }, 120000);
1388
1388
 
1389
- test("parseGoModData with licenses", async () => {
1389
+ test.skip("parseGoModData with licenses", async () => {
1390
1390
  let retMap = await parseGoModData(null);
1391
1391
  expect(retMap).toEqual({});
1392
1392
  const gosumMap = {
@@ -2447,7 +2447,7 @@ test("parse github actions workflow data", () => {
2447
2447
  let dep_list = parseGitHubWorkflowData(
2448
2448
  readFileSync("./.github/workflows/nodejs.yml", { encoding: "utf-8" }),
2449
2449
  );
2450
- expect(dep_list.length).toEqual(4);
2450
+ expect(dep_list.length).toEqual(5);
2451
2451
  expect(dep_list[0]).toEqual({
2452
2452
  group: "actions",
2453
2453
  name: "checkout",
@@ -2456,18 +2456,12 @@ test("parse github actions workflow data", () => {
2456
2456
  dep_list = parseGitHubWorkflowData(
2457
2457
  readFileSync("./.github/workflows/repotests.yml", { encoding: "utf-8" }),
2458
2458
  );
2459
- expect(dep_list.length).toEqual(14);
2459
+ expect(dep_list.length).toEqual(13);
2460
2460
  expect(dep_list[0]).toEqual({
2461
2461
  group: "actions",
2462
2462
  name: "checkout",
2463
2463
  version: "v4",
2464
2464
  });
2465
- dep_list = parseGitHubWorkflowData(
2466
- readFileSync("./.github/workflows/app-release.yml", {
2467
- encoding: "utf-8",
2468
- }),
2469
- );
2470
- expect(dep_list.length).toEqual(3);
2471
2465
  });
2472
2466
 
2473
2467
  test("parse cs pkg data", () => {
@@ -3785,8 +3779,8 @@ test("parsePnpmLock", async () => {
3785
3779
  expect(parsedList.dependenciesList).toHaveLength(462);
3786
3780
  expect(parsedList.pkgList.filter((pkg) => !pkg.scope)).toHaveLength(3);
3787
3781
  parsedList = await parsePnpmLock("./pnpm-lock.yaml");
3788
- expect(parsedList.pkgList.length).toEqual(622);
3789
- expect(parsedList.dependenciesList.length).toEqual(622);
3782
+ expect(parsedList.pkgList.length).toEqual(623);
3783
+ expect(parsedList.dependenciesList.length).toEqual(623);
3790
3784
  expect(parsedList.pkgList[0]).toEqual({
3791
3785
  group: "@ampproject",
3792
3786
  name: "remapping",
@@ -5184,13 +5178,13 @@ test("parse bazel action graph", () => {
5184
5178
  encoding: "utf-8",
5185
5179
  }),
5186
5180
  );
5187
- expect(deps.length).toEqual(10);
5181
+ expect(deps.length).toEqual(2);
5188
5182
  expect(deps[0].group).toEqual("org.scala-lang");
5189
5183
  expect(deps[0].name).toEqual("scala-library");
5190
- expect(deps[0].version).toEqual("2.13.11");
5184
+ expect(deps[0].version).toEqual("2.13.16");
5191
5185
  expect(deps[1].group).toEqual("org.jline");
5192
5186
  expect(deps[1].name).toEqual("jline");
5193
- expect(deps[1].version).toEqual("3.21.0");
5187
+ expect(deps[1].version).toEqual("3.26.3");
5194
5188
  });
5195
5189
 
5196
5190
  test("parse bazel build", () => {
@@ -137,8 +137,12 @@ export const validateMetadata = (bomJson) => {
137
137
  export const validatePurls = (bomJson) => {
138
138
  const errorList = [];
139
139
  const warningsList = [];
140
+ let frameworksCount = 0;
140
141
  if (bomJson?.components) {
141
142
  for (const comp of bomJson.components) {
143
+ if (comp.type === "framework") {
144
+ frameworksCount += 1;
145
+ }
142
146
  if (comp.type === "cryptographic-asset") {
143
147
  if (comp.purl?.length) {
144
148
  errorList.push(
@@ -187,6 +191,11 @@ export const validatePurls = (bomJson) => {
187
191
  }
188
192
  }
189
193
  }
194
+ if (frameworksCount > 20) {
195
+ warningsList.push(
196
+ `BOM likey has too many framework components. Count: ${frameworksCount}`,
197
+ );
198
+ }
190
199
  if (DEBUG_MODE && warningsList.length !== 0) {
191
200
  console.log("===== WARNINGS =====");
192
201
  console.log(warningsList);
@@ -9,7 +9,7 @@ import {
9
9
  statSync,
10
10
  } from "node:fs";
11
11
  import { arch as _arch, platform as _platform, homedir } from "node:os";
12
- import { basename, dirname, join, resolve } from "node:path";
12
+ import { basename, delimiter, dirname, join, resolve } from "node:path";
13
13
  import process from "node:process";
14
14
  import { PackageURL } from "packageurl-js";
15
15
  import {
@@ -28,8 +28,6 @@ import {
28
28
  safeMkdirSync,
29
29
  } from "../helpers/utils.js";
30
30
 
31
- import { URL } from "node:url";
32
-
33
31
  const dirName = dirNameStr;
34
32
 
35
33
  const isWin = _platform() === "win32";
@@ -60,6 +58,9 @@ switch (arch) {
60
58
  break;
61
59
  }
62
60
 
61
+ // cdxgen plugins version
62
+ const CDXGEN_PLUGINS_VERSION = "1.6.10";
63
+
63
64
  // Retrieve the cdxgen plugins directory
64
65
  let CDXGEN_PLUGINS_DIR = process.env.CDXGEN_PLUGINS_DIR;
65
66
  // Is there a non-empty local plugins directory
@@ -126,11 +127,54 @@ if (!CDXGEN_PLUGINS_DIR) {
126
127
  `cdxgen-plugins-bin${pluginsBinSuffix}`,
127
128
  "plugins",
128
129
  );
130
+ // pnpm add -g
131
+ let altGlobalPlugins;
132
+ if (dirName.includes(join("node_modules", ".pnpm", "@cyclonedx+cdxgen"))) {
133
+ const tmpA = dirName.split(join("node_modules", ".pnpm"));
134
+ altGlobalPlugins = join(
135
+ tmpA[0],
136
+ "node_modules",
137
+ ".pnpm",
138
+ `@cyclonedx+cdxgen-plugins-bin${pluginsBinSuffix}@${CDXGEN_PLUGINS_VERSION}`,
139
+ "node_modules",
140
+ "@cyclonedx",
141
+ `cdxgen-plugins-bin${pluginsBinSuffix}`,
142
+ "plugins",
143
+ );
144
+ } else if (dirName.includes(join(".pnpm", "@cyclonedx+cdxgen"))) {
145
+ // pnpm dlx
146
+ const tmpA = dirName.split(".pnpm");
147
+ altGlobalPlugins = join(
148
+ tmpA[0],
149
+ ".pnpm",
150
+ `@cyclonedx+cdxgen-plugins-bin${pluginsBinSuffix}@${CDXGEN_PLUGINS_VERSION}`,
151
+ "node_modules",
152
+ "@cyclonedx",
153
+ `cdxgen-plugins-bin${pluginsBinSuffix}`,
154
+ "plugins",
155
+ );
156
+ }
157
+ const extraNMBinPath = join(
158
+ globalNodePath,
159
+ "..",
160
+ ".pnpm",
161
+ "node_modules",
162
+ ".bin",
163
+ );
129
164
  if (existsSync(globalPlugins)) {
130
165
  CDXGEN_PLUGINS_DIR = globalPlugins;
131
166
  if (DEBUG_MODE) {
132
167
  console.log("Found global plugins", CDXGEN_PLUGINS_DIR);
133
168
  }
169
+ } else if (altGlobalPlugins && existsSync(altGlobalPlugins)) {
170
+ CDXGEN_PLUGINS_DIR = altGlobalPlugins;
171
+ // To help detect bin commands such as atom, astgen, etc, we need to set this to the PATH variable.
172
+ if (!process.env?.PATH?.includes(extraNMBinPath)) {
173
+ process.env.PATH = `${extraNMBinPath}${delimiter}${process.env.PATH}`;
174
+ }
175
+ if (DEBUG_MODE) {
176
+ console.log("Found global plugins", CDXGEN_PLUGINS_DIR);
177
+ }
134
178
  }
135
179
  }
136
180
  }
@@ -19,6 +19,7 @@ import got from "got";
19
19
  import { x } from "tar";
20
20
  import {
21
21
  DEBUG_MODE,
22
+ TIMEOUT_MS,
22
23
  extractPathEnv,
23
24
  getAllFiles,
24
25
  getTmpDir,
@@ -650,22 +651,45 @@ export const getImage = async (fullImageName) => {
650
651
  dockerCmd = "nerdctl";
651
652
  }
652
653
  }
653
- let result = spawnSync(dockerCmd, ["pull", fullImageName], {
654
+ let needsPull = true;
655
+ // Let's check the local cache first
656
+ let result = spawnSync(dockerCmd, ["images", "--format=json"], {
654
657
  encoding: "utf-8",
655
658
  });
656
- if (result.status !== 0 || result.error) {
657
- if (result.stderr?.includes("docker daemon is not running")) {
658
- console.log(
659
- "Ensure Docker for Desktop is running as an administrator with 'Exposing daemon on TCP without TLS' setting turned on.",
660
- );
661
- } else if (result.stderr?.includes("not found")) {
662
- console.log(
663
- "Set the environment variable DOCKER_CMD to use an alternative command such as nerdctl or podman.",
664
- );
665
- } else {
666
- console.log(result.stderr);
659
+ if (result.status === 0 && result.stdout) {
660
+ for (const imgLine of result.stdout.split("\n")) {
661
+ try {
662
+ const imgObj = JSON.parse(Buffer.from(imgLine).toString());
663
+ if (
664
+ imgObj.Repository === fullImageName ||
665
+ imgObj?.Name?.endsWith(fullImageName)
666
+ ) {
667
+ needsPull = false;
668
+ break;
669
+ }
670
+ } catch (err) {
671
+ // continue regardless of error
672
+ }
673
+ }
674
+ }
675
+ if (needsPull) {
676
+ result = spawnSync(dockerCmd, ["pull", fullImageName], {
677
+ encoding: "utf-8",
678
+ timeout: TIMEOUT_MS,
679
+ });
680
+ if (result.status !== 0 || result.error) {
681
+ if (result.stderr?.includes("docker daemon is not running")) {
682
+ console.log(
683
+ "Ensure Docker for Desktop is running as an administrator with 'Exposing daemon on TCP without TLS' setting turned on.",
684
+ );
685
+ } else if (result.stderr?.includes("not found")) {
686
+ console.log(
687
+ "Set the environment variable DOCKER_CMD to use an alternative command such as nerdctl or podman.",
688
+ );
689
+ } else {
690
+ console.log(result.stderr);
691
+ }
667
692
  }
668
- return localData;
669
693
  }
670
694
  result = spawnSync(dockerCmd, ["inspect", fullImageName], {
671
695
  encoding: "utf-8",
@@ -854,6 +878,7 @@ export const extractTar = async (fullImageName, dir, options) => {
854
878
  path.includes("usr/share/doc/") ||
855
879
  path.includes("usr/share/i18n/") ||
856
880
  path.includes("var/lib/ca-certificates") ||
881
+ path.includes("root/.gnupg") ||
857
882
  basename(path).startsWith(".") ||
858
883
  path.includes("usr/share/licenses/device-mapper-libs") ||
859
884
  [
@@ -865,6 +890,7 @@ export const extractTar = async (fullImageName, dir, options) => {
865
890
  "SymbolicLink",
866
891
  "RenamedOrSymlinked",
867
892
  "HardLink",
893
+ "Link",
868
894
  ].includes(entry.type)
869
895
  );
870
896
  },
@@ -901,22 +927,16 @@ export const extractTar = async (fullImageName, dir, options) => {
901
927
  return false;
902
928
  } else if (["EACCES"].includes(err.code)) {
903
929
  console.log(err);
904
- /*
905
- * We do not display errors messages for errors:
906
- * 1) TAR_ENTRY_INFO is an informative error indicating that an entry is being modified.
907
- * 2) TAR_ENTRY_INVALID indicates that a given entry is not valid tar archive entry and will be skipped.
908
- */
909
- } else if (
910
- DEBUG_MODE &&
911
- ["TAR_ENTRY_INFO", "TAR_ENTRY_INVALID"].includes(err.code)
912
- ) {
930
+ } else if (["TAR_ENTRY_INFO", "TAR_ENTRY_INVALID"].includes(err.code)) {
913
931
  if (
914
932
  err?.header?.path?.includes("{") ||
915
933
  err?.message?.includes("linkpath required")
916
934
  ) {
917
935
  return false;
918
936
  }
919
- console.log(err);
937
+ if (DEBUG_MODE) {
938
+ console.log(err);
939
+ }
920
940
  } else if (DEBUG_MODE) {
921
941
  console.log(err.code, "is not handled yet in extractTar method.");
922
942
  }
@@ -1372,7 +1392,9 @@ export const getCredsFromHelper = (exeSuffix, serverAddress) => {
1372
1392
  encoding: "utf-8",
1373
1393
  });
1374
1394
  if (result.status !== 0 || result.error) {
1375
- console.log(result.stdout, result.stderr);
1395
+ if (result.stdout || result.stderr) {
1396
+ console.log(result.stdout, result.stderr);
1397
+ }
1376
1398
  } else if (result.stdout) {
1377
1399
  const cmdOutput = Buffer.from(result.stdout).toString();
1378
1400
  try {
@@ -147,7 +147,9 @@ export const getTreeWithPlugin = (env, python_cmd, basePath) => {
147
147
  env,
148
148
  });
149
149
  if (result.status !== 0 || result.error) {
150
- console.log(result.stdout, result.stderr);
150
+ if (result.stdout || result.stderr) {
151
+ console.log(result.stdout, result.stderr);
152
+ }
151
153
  }
152
154
  if (existsSync(pipTreeJson)) {
153
155
  tree = JSON.parse(
@@ -338,6 +338,10 @@ components:
338
338
  $ref: '#/components/schemas/Services'
339
339
  dependencies:
340
340
  $ref: '#/components/schemas/Dependencies'
341
+ annotations:
342
+ $ref: '#/components/schemas/Annotations'
343
+ formulation:
344
+ $ref: '#/components/schemas/Formulation'
341
345
 
342
346
  ErrorResponse:
343
347
  type: object
@@ -362,5 +366,9 @@ components:
362
366
 
363
367
  Dependencies:
364
368
  type: object
365
- xml:
366
- name: pet
369
+
370
+ Annotations:
371
+ type: object
372
+
373
+ Formulation:
374
+ type: object
@@ -178,6 +178,14 @@ const start = (options) => {
178
178
  process.exit(1);
179
179
  }
180
180
  }
181
+ if (!process.env.CDXGEN_SERVER_ALLOWED_HOSTS) {
182
+ console.log(
183
+ "No allowlist for hosts has been specified. This is a security risk that could expose the system to SSRF vulnerabilities!",
184
+ );
185
+ if (isSecureMode) {
186
+ process.exit(1);
187
+ }
188
+ }
181
189
  const cdxgenServer = http
182
190
  .createServer(app)
183
191
  .listen(options.serverPort, options.serverHost);
@@ -189,6 +197,15 @@ const start = (options) => {
189
197
  });
190
198
 
191
199
  app.use("/sbom", async (req, res) => {
200
+ // Limit to only GET and POST requests
201
+ if (req.method && !["GET", "POST"].includes(req.method.toUpperCase())) {
202
+ res.writeHead(405, { "Content-Type": "application/json" });
203
+ return res.end(
204
+ JSON.stringify({
205
+ error: "Method Not Allowed",
206
+ }),
207
+ );
208
+ }
192
209
  const requestUrl = new URL(req.url, `http://${req.headers.host}`);
193
210
  const q = Object.fromEntries(requestUrl.searchParams.entries());
194
211
  let cleanup = false;
@@ -202,7 +219,7 @@ const start = (options) => {
202
219
  res.writeHead(500, { "Content-Type": "application/json" });
203
220
  return res.end(
204
221
  JSON.stringify({
205
- error: "path or url is required.",
222
+ error: "Path or URL is required.",
206
223
  }),
207
224
  );
208
225
  }
@@ -215,7 +232,7 @@ const start = (options) => {
215
232
  return res.end(
216
233
  JSON.stringify({
217
234
  error: "Host Not Allowed",
218
- details: `The Git URL host is not allowed: '${gitUrlObj.hostname}'.`,
235
+ details: "The Git URL host is not allowed as per the allowlist.",
219
236
  }),
220
237
  );
221
238
  }
@@ -227,20 +244,20 @@ const start = (options) => {
227
244
  return res.end(
228
245
  JSON.stringify({
229
246
  error: "Path Not Allowed",
230
- details: `Path is not allowed: '${srcDir}'.`,
247
+ details: "Path is not allowed as per the allowlist.",
231
248
  }),
232
249
  );
233
250
  }
234
251
  }
235
252
  if (srcDir !== path.resolve(srcDir)) {
236
253
  console.log(
237
- `Invoke the API with an absolute path '${path.resolve(srcDir)}' instead of '${srcDir}' to reduce security risks.`,
254
+ `Invoke the API with an absolute path '${path.resolve(srcDir)}' to reduce security risks.`,
238
255
  );
239
256
  if (isSecureMode) {
240
257
  res.writeHead(500, { "Content-Type": "application/json" });
241
258
  return res.end(
242
259
  JSON.stringify({
243
- error: `Provide an absolute path instead of '${srcDir}'`,
260
+ error: "Absolute path needed",
244
261
  details: "Relative paths are not supported in secure mode.",
245
262
  }),
246
263
  );
@@ -250,6 +267,15 @@ const start = (options) => {
250
267
  let bomNSData = (await createBom(srcDir, reqOptions)) || {};
251
268
  bomNSData = postProcess(bomNSData, reqOptions);
252
269
  if (reqOptions.serverUrl && reqOptions.apiKey) {
270
+ if (!isAllowedHost(reqOptions.serverUrl)) {
271
+ res.writeHead(403, { "Content-Type": "application/json" });
272
+ return res.end(
273
+ JSON.stringify({
274
+ error: "Host Not Allowed",
275
+ details: "The URL host is not allowed as per the allowlist.",
276
+ }),
277
+ );
278
+ }
253
279
  if (isSecureMode && !reqOptions.serverUrl?.startsWith("https://")) {
254
280
  console.log(
255
281
  "Dependency Track API server is used with a non-https url, which poses a security risk.",
@@ -267,7 +293,7 @@ const start = (options) => {
267
293
  res.writeHead(500, { "Content-Type": "application/json" });
268
294
  return res.end(
269
295
  JSON.stringify({
270
- error: `Unable to submit the SBOM ${reqOptions.projectName} to the Dependency Track server ${reqOptions.serverUrl}`,
296
+ error: "Unable to submit the SBOM to the Dependency-Track server",
271
297
  details: errorMessages,
272
298
  }),
273
299
  );
@@ -79,7 +79,11 @@ export function prepareSdkmanBuild(projectType) {
79
79
  */
80
80
  export function preparePythonEnv(_filePath, options) {
81
81
  if (hasAnyProjectType(["python"], options, false)) {
82
- if (process.env?.CDXGEN_IN_CONTAINER !== "true" && arch() !== "x64") {
82
+ if (
83
+ DEBUG_MODE &&
84
+ process.env?.CDXGEN_IN_CONTAINER !== "true" &&
85
+ arch() !== "x64"
86
+ ) {
83
87
  console.log(
84
88
  `INFO: Many pypi packages have limited support for ${arch()} architecture. Run the cdxgen container image with --platform=linux/amd64 for best experience.`,
85
89
  );
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cyclonedx/cdxgen",
3
- "version": "11.2.5",
3
+ "version": "11.2.7",
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>",
@@ -71,8 +71,8 @@
71
71
  "*": "biome check --fix --no-errors-on-unmatched"
72
72
  },
73
73
  "dependencies": {
74
- "@babel/parser": "^7.27.0",
75
- "@babel/traverse": "^7.27.0",
74
+ "@babel/parser": "^7.27.1",
75
+ "@babel/traverse": "^7.27.1",
76
76
  "@iarna/toml": "2.2.5",
77
77
  "@npmcli/arborist": "9.0.2",
78
78
  "ajv": "^8.17.1",
@@ -80,7 +80,7 @@
80
80
  "cheerio": "^1.0.0",
81
81
  "edn-data": "1.1.2",
82
82
  "find-up": "7.0.0",
83
- "glob": "^11.0.0",
83
+ "glob": "^11.0.2",
84
84
  "global-agent": "^3.0.0",
85
85
  "got": "^14.4.7",
86
86
  "iconv-lite": "^0.6.3",
@@ -101,7 +101,7 @@
101
101
  "yoctocolors": "^2.1.1"
102
102
  },
103
103
  "optionalDependencies": {
104
- "@appthreat/atom": "2.1.15",
104
+ "@appthreat/atom": "2.1.18",
105
105
  "@appthreat/cdx-proto": "1.0.1",
106
106
  "@cyclonedx/cdxgen-plugins-bin": "1.6.10",
107
107
  "@cyclonedx/cdxgen-plugins-bin-linux-arm": "1.6.10",
@@ -133,7 +133,7 @@
133
133
  "typescript": "^5.8.3"
134
134
  },
135
135
  "overrides": {
136
- "glob": "^11.0.0",
136
+ "glob": "^11.0.2",
137
137
  "node-gyp": "^10.2.0",
138
138
  "prebuild": "^13.0.0",
139
139
  "pacote": "^20.0.0",
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../lib/cli/index.js"],"names":[],"mappings":"AAw7BA;;;;;;;;GAQG;AACH,gFAFW,MAAM,SAchB;AAuXD;;;;;;;GAOG;AACH,mCALW,MAAM,qBAyEhB;AAED;;;;;GAKG;AACH,uCAHW,MAAM;;;;EAKhB;AAED;;;;;GAKG;AACH,sCAHW,MAAM;;;;EAkBhB;AAED;;;;;GAKG;AACH,oCAHW,MAAM,8BAivChB;AAED;;;;;GAKG;AACH,sCAHW,MAAM,8BAuvBhB;AAED;;;;;;;;;;GAUG;AACH,+DAsEC;AAED;;;;;GAKG;AACH,sCAHW,MAAM,8BAkehB;AAED;;;;;GAKG;AACH,kCAHW,MAAM,8BA+YhB;AAED;;;;;GAKG;AACH,oCAHW,MAAM,8BAuIhB;AAED;;;;;GAKG;AACH,oCAHW,MAAM,8BAkEhB;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,8BA8IhB;AAED;;;;;GAKG;AACH,qCAHW,MAAM,8BAmJhB;AAED;;;;;GAKG;AACH,iDAHW,MAAM,qBAmUhB;AAED;;;;;GAKG;AACH,mCAHW,MAAM,qBAiJhB;AAED;;;;;GAKG;AACH,oCAHW,MAAM,8BAwNhB;AAED;;;;;GAKG;AACH,sCAHW,MAAM,8BA8ZhB;AAED;;;;;GAKG;AACH,2CAHW,MAAM;;;;;;;;;;;;;;;;;;;;GAoChB;AAED;;;;;;;;KA+DC;AAED;;;;;;GAMG;AACH,yDA+FC;AAED;;;;;;;;;GASG;AACH,2GAuCC;AAED;;;;;GAKG;AACH,0CAHW,MAAM,EAAE,8BA6vBlB;AAED;;;;;GAKG;AACH,iCAHW,MAAM,8BAqUhB;AAED;;;;;GAKG;AACH,gCAHW,MAAM,qBA2QhB;AAED;;;;;;;GAOG;AACH,wDAHY,OAAO,CAAC;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,CAAC,CA2HjD"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../lib/cli/index.js"],"names":[],"mappings":"AA27BA;;;;;;;;GAQG;AACH,gFAFW,MAAM,SAchB;AAqYD;;;;;;;GAOG;AACH,mCALW,MAAM,qBAyEhB;AAED;;;;;GAKG;AACH,uCAHW,MAAM;;;;EAKhB;AAED;;;;;GAKG;AACH,sCAHW,MAAM;;;;EAkBhB;AAED;;;;;GAKG;AACH,oCAHW,MAAM,8BAgvChB;AAED;;;;;GAKG;AACH,sCAHW,MAAM,8BAmvBhB;AAED;;;;;;;;;;GAUG;AACH,+DAsEC;AAED;;;;;GAKG;AACH,sCAHW,MAAM,8BAkehB;AAED;;;;;GAKG;AACH,kCAHW,MAAM,8BA+YhB;AAED;;;;;GAKG;AACH,oCAHW,MAAM,8BAuIhB;AAED;;;;;GAKG;AACH,oCAHW,MAAM,8BAkEhB;AAED;;;;;GAKG;AACH,mCAHW,MAAM,qBAkLhB;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,8BA8IhB;AAED;;;;;GAKG;AACH,qCAHW,MAAM,8BAmJhB;AAED;;;;;GAKG;AACH,iDAHW,MAAM,qBAmUhB;AAED;;;;;GAKG;AACH,mCAHW,MAAM,qBAiJhB;AAED;;;;;GAKG;AACH,oCAHW,MAAM,8BAwNhB;AAED;;;;;GAKG;AACH,sCAHW,MAAM,8BA8ZhB;AAED;;;;;GAKG;AACH,2CAHW,MAAM;;;;;;;;;;;;;;;;;;;;GAoChB;AAED;;;;;;;;KA+DC;AAED;;;;;;GAMG;AACH,yDAiGC;AAED;;;;;;;;;GASG;AACH,2GAuCC;AAED;;;;;GAKG;AACH,0CAHW,MAAM,EAAE,8BA6vBlB;AAED;;;;;GAKG;AACH,iCAHW,MAAM,8BAqUhB;AAED;;;;;GAKG;AACH,gCAHW,MAAM,qBA2QhB;AAED;;;;;;;GAOG;AACH,wDAHY,OAAO,CAAC;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,CAAC,CA2HjD"}
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../lib/helpers/utils.js"],"names":[],"mappings":"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"}
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":"validator.d.ts","sourceRoot":"","sources":["../../../lib/helpers/validator.js"],"names":[],"mappings":"AA8TA;;;;GAIG;AACH,uCAFW,MAAM,WA0FhB;AAxYM,qCAJI,MAAM,WAkDhB;AAOM,0CAFI,MAAM,WA2DhB;AAOM,uCAFI,MAAM,WAmEhB;AA6BM,sCAFI,MAAM,WAwFhB"}
1
+ {"version":3,"file":"validator.d.ts","sourceRoot":"","sources":["../../../lib/helpers/validator.js"],"names":[],"mappings":"AAuUA;;;;GAIG;AACH,uCAFW,MAAM,WA0FhB;AAjZM,qCAJI,MAAM,WAkDhB;AAOM,0CAFI,MAAM,WA2DhB;AAOM,uCAFI,MAAM,WA4EhB;AA6BM,sCAFI,MAAM,WAwFhB"}
@@ -1 +1 @@
1
- {"version":3,"file":"binary.d.ts","sourceRoot":"","sources":["../../../lib/managers/binary.js"],"names":[],"mappings":"AA4SA,wDAkBC;AAED;;;;;GAKG;AACH,kDAFa,SAAS,MAAO,CAqB5B;AAED;;;;;;;GAOG;AACH,kEAqaC;AAsDD,gDAoDC;AAED;;;;;;GAMG;AACH,qCAJW,MAAM,cACN,MAAM,WA0ChB;AAED;;;;;;;;GAQG;AACH,kCANW,MAAM,iBACN,MAAM,YACN,OAAO,GAEN,OAAO,CA8BlB"}
1
+ {"version":3,"file":"binary.d.ts","sourceRoot":"","sources":["../../../lib/managers/binary.js"],"names":[],"mappings":"AAwVA,wDAkBC;AAED;;;;;GAKG;AACH,kDAFa,SAAS,MAAO,CAqB5B;AAED;;;;;;;GAOG;AACH,kEAqaC;AAsDD,gDAoDC;AAED;;;;;;GAMG;AACH,qCAJW,MAAM,cACN,MAAM,WA0ChB;AAED;;;;;;;;GAQG;AACH,kCANW,MAAM,iBACN,MAAM,YACN,OAAO,GAEN,OAAO,CA8BlB"}
@@ -1 +1 @@
1
- {"version":3,"file":"docker.d.ts","sourceRoot":"","sources":["../../../lib/managers/docker.js"],"names":[],"mappings":"AAiFA;;GAEG;AACH,oCAmBC;AAED;;GAEG;AACH,4CA6CC;AA7HD,4BAA6C;AAC7C,kCAAmC,WAAW,CAAC;AAmCxC,kDAeN;AAqFM,iCAHI,MAAM,WACN,MAAM,iDAehB;AAqBM,6DAmBN;AAgLM,4EAsGN;AAEM,oFAwBN;AAUM;;;;;;;;EAyEN;AAsBM,2DAgLN;AAgBM,yFA2GN;AAMM;;;;;;;;;;;;;;GAwDN;AAEM;;;;;;;;GAyGN;AAMM,4EA+IN;AAKM,4EA2GN;AAEM,+EAEN;AAEM,4EAyCN;AAEM,iFA0BN"}
1
+ {"version":3,"file":"docker.d.ts","sourceRoot":"","sources":["../../../lib/managers/docker.js"],"names":[],"mappings":"AAkFA;;GAEG;AACH,oCAmBC;AAED;;GAEG;AACH,4CA6CC;AA7HD,4BAA6C;AAC7C,kCAAmC,WAAW,CAAC;AAmCxC,kDAeN;AAqFM,iCAHI,MAAM,WACN,MAAM,iDAehB;AAqBM,6DAmBN;AAgLM,4EAsGN;AAEM,oFAwBN;AAUM;;;;;;;;EAyEN;AAsBM,2DAuMN;AAgBM,yFAuGN;AAMM;;;;;;;;;;;;;;GAwDN;AAEM;;;;;;;;GAyGN;AAMM,4EA+IN;AAKM,4EA2GN;AAEM,+EAEN;AAEM,4EA2CN;AAEM,iFA0BN"}
@@ -1 +1 @@
1
- {"version":3,"file":"piptree.d.ts","sourceRoot":"","sources":["../../../lib/managers/piptree.js"],"names":[],"mappings":"AAgIO,uFAkCN"}
1
+ {"version":3,"file":"piptree.d.ts","sourceRoot":"","sources":["../../../lib/managers/piptree.js"],"names":[],"mappings":"AAgIO,uFAoCN"}
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../../lib/server/server.js"],"names":[],"mappings":"AA8IA,yDAKC;AAED,0CAgJC"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../../lib/server/server.js"],"names":[],"mappings":"AA8IA,yDAKC;AAED,0CA0KC"}
@@ -1 +1 @@
1
- {"version":3,"file":"pregen.d.ts","sourceRoot":"","sources":["../../../../lib/stages/pregen/pregen.js"],"names":[],"mappings":"AA+BA;;;;;GAKG;AACH,iEAkBC;AAED;;;;GAIG;AACH,iEASC;AAED;;;;;GAKG;AACH,wEAqCC;AAED;;;;;GAKG;AACH,qEAyDC;AAED;;;;;;;;GAQG;AACH,uEAmBC;AAED;;;;;GAKG;AACH,0EAyCC;AAED;;;;;GAKG;AACH,sEA6EC;AAED;;;;;GAKG;AACH,qEA8PC"}
1
+ {"version":3,"file":"pregen.d.ts","sourceRoot":"","sources":["../../../../lib/stages/pregen/pregen.js"],"names":[],"mappings":"AA+BA;;;;;GAKG;AACH,iEAkBC;AAED;;;;GAIG;AACH,iEASC;AAED;;;;;GAKG;AACH,wEAyCC;AAED;;;;;GAKG;AACH,qEAyDC;AAED;;;;;;;;GAQG;AACH,uEAmBC;AAED;;;;;GAKG;AACH,0EAyCC;AAED;;;;;GAKG;AACH,sEA6EC;AAED;;;;;GAKG;AACH,qEA8PC"}