@cyclonedx/cdxgen 11.2.6 → 11.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/bin/cdxgen.js CHANGED
@@ -437,6 +437,15 @@ const options = Object.assign({}, args, {
437
437
  ? resolve(join(filePath, args.output))
438
438
  : args.output,
439
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
+ }
440
449
  // Filter duplicate types. Eg: -t gradle -t gradle
441
450
  if (options.projectType && Array.isArray(options.projectType)) {
442
451
  options.projectType = Array.from(new Set(options.projectType));
@@ -658,6 +667,11 @@ const checkPermissions = (filePath, options) => {
658
667
  }
659
668
  // Secure mode checks
660
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
+ }
661
675
  if (process.permission.has("fs.read", "*")) {
662
676
  console.log(
663
677
  "\x1b[1;35mSECURE MODE: DO NOT run cdxgen with FileSystemRead permission set to wildcard.\x1b[0m",
@@ -785,10 +799,6 @@ const checkPermissions = (filePath, options) => {
785
799
  }
786
800
  return;
787
801
  }
788
- // This will prevent people from accidentally using the usages slices belonging to a different project
789
- if (!options.usagesSlicesFile) {
790
- options.usagesSlicesFile = `${options.projectName}-usages.json`;
791
- }
792
802
  prepareEnv(filePath, options);
793
803
  thoughtLog("Getting ready to generate the BOM ⚡️.");
794
804
  let bomNSData = (await createBom(filePath, options)) || {};
@@ -36,13 +36,15 @@
36
36
  "play",
37
37
  "spark",
38
38
  "struts",
39
- "angular",
40
- "react",
41
- "next",
42
- "ember",
43
- "express",
44
- "knex",
45
- "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",
46
48
  "pkg:pypi/aiohttp",
47
49
  "pkg:pypi/bottle",
48
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
@@ -785,6 +785,10 @@ function addMetadata(parentComponent = {}, options = {}, context = {}) {
785
785
  "PNPM_STORE_PATH",
786
786
  "PNPM_HOME",
787
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
788
792
  ]) {
789
793
  if (evalue.includes(senvValue)) {
790
794
  mproperties.push({
@@ -1202,6 +1206,13 @@ function determinePackageType(pkg) {
1202
1206
  return "application";
1203
1207
  }
1204
1208
  }
1209
+ // See #1760
1210
+ if (
1211
+ purl.namespace?.startsWith("@types") ||
1212
+ (purl.namespace?.includes("-types") && pkg?.type === "npm")
1213
+ ) {
1214
+ return "library";
1215
+ }
1205
1216
  for (const cf of frameworksList.all) {
1206
1217
  if (
1207
1218
  pkg.purl.startsWith(cf) ||
@@ -2308,7 +2319,7 @@ export async function createJavaBom(path, options) {
2308
2319
  query = ["--bazelrc=.bazelrc"];
2309
2320
  }
2310
2321
  if (["true", "1"].includes(process.env.BAZEL_USE_ACTION_GRAPH)) {
2311
- query = query.concat(["aquery", `outputs('.*.jar',deps(${target}))`]);
2322
+ query = query.concat(["query", `deps(${target})`, "--output=label"]);
2312
2323
  bazelParser = parseBazelActionGraph;
2313
2324
  } else {
2314
2325
  query = query.concat([
@@ -4838,7 +4849,10 @@ export function createCppBom(path, options) {
4838
4849
  parentComponent = retMap.parentComponent;
4839
4850
  } else {
4840
4851
  parentComponent.components = parentComponent.components || [];
4841
- if (!addedParentComponentsMap[retMap.parentComponent.name]) {
4852
+ if (
4853
+ retMap?.parentComponent?.name &&
4854
+ !addedParentComponentsMap[retMap.parentComponent.name]
4855
+ ) {
4842
4856
  parentComponent.components.push(retMap.parentComponent);
4843
4857
  addedParentComponentsMap[retMap.parentComponent.name] = true;
4844
4858
  }
@@ -6727,7 +6741,7 @@ export function mergeDependencies(
6727
6741
  }
6728
6742
  if (adep["dependsOn"]) {
6729
6743
  for (const eachDepends of adep["dependsOn"]) {
6730
- if (parentRef) {
6744
+ if (parentRef && eachDepends) {
6731
6745
  if (eachDepends.toLowerCase() !== parentRef.toLowerCase()) {
6732
6746
  deps_map[adep.ref].add(eachDepends);
6733
6747
  }
@@ -6807,6 +6821,8 @@ export function trimComponents(components) {
6807
6821
  if (comp?.evidence?.identity) {
6808
6822
  if (!existingComponent.evidence) {
6809
6823
  existingComponent.evidence = { identity: [] };
6824
+ } else if (!existingComponent?.evidence?.identity) {
6825
+ existingComponent.evidence.identity = [];
6810
6826
  } else if (
6811
6827
  existingComponent?.evidence?.identity &&
6812
6828
  !Array.isArray(existingComponent.evidence.identity)
@@ -259,7 +259,7 @@ export async function createSlice(
259
259
  const openapiSpecFile = basename(
260
260
  options.openapiSpecFile ||
261
261
  process.env?.ATOM_TOOLS_OPENAPI_FILENAME ||
262
- `${language}-openapi.json`,
262
+ join(sliceOutputDir, `${language}-openapi.json`),
263
263
  );
264
264
  // For some languages such as scala, semantics slices file would get created during usages slicing.
265
265
  let semanticsSlicesFile;
@@ -277,7 +277,7 @@ export async function createSlice(
277
277
  console.log(
278
278
  `Creating ${sliceType} slice for ${resolve(filePath)}. Please wait ...`,
279
279
  );
280
- const atomFile = join(sliceOutputDir, "app.atom");
280
+ const atomFile = join(sliceOutputDir, `${language}-app.atom`);
281
281
  let args = [sliceType];
282
282
  // Support for crypto slices aka CBOM
283
283
  if (sliceType === "reachables" && options.includeCrypto) {
@@ -1192,13 +1192,12 @@ export async function parsePkgLock(pkgLockFile, options = {}) {
1192
1192
  }`
1193
1193
  : author;
1194
1194
  if (node === rootNode) {
1195
- purlString = new PackageURL(
1196
- "npm",
1197
- options.projectGroup || "",
1198
- "project-name" in options ? options.projectName : node.packageName,
1199
- options.projectVersion || node.version,
1200
- null,
1201
- null,
1195
+ const projectGroup = options.projectGroup;
1196
+ const projectName =
1197
+ "project-name" in options ? options.projectName : node.packageName;
1198
+ const projectVersion = options.projectVersion || node.version;
1199
+ purlString = PackageURL.fromString(
1200
+ `pkg:npm/${projectGroup ? `${encodeURIComponent(projectGroup).replace(/%2F/g, "/")}/` : ""}${encodeURIComponent(projectName).replace(/%2F/g, "/")}@${projectVersion}`,
1202
1201
  )
1203
1202
  .toString()
1204
1203
  .replace(/%2F/g, "/");
@@ -1213,13 +1212,8 @@ export async function parsePkgLock(pkgLockFile, options = {}) {
1213
1212
  "bom-ref": decodeURIComponent(purlString),
1214
1213
  };
1215
1214
  } else {
1216
- purlString = new PackageURL(
1217
- "npm",
1218
- "",
1219
- node.packageName,
1220
- node.version,
1221
- null,
1222
- null,
1215
+ purlString = PackageURL.fromString(
1216
+ `pkg:npm/${encodeURIComponent(node.packageName).replace(/%2F/g, "/")}@${node.version}`,
1223
1217
  )
1224
1218
  .toString()
1225
1219
  .replace(/%2F/g, "/");
@@ -1558,7 +1552,9 @@ export async function parsePkgLock(pkgLockFile, options = {}) {
1558
1552
  continue;
1559
1553
  }
1560
1554
  const depPurlString = decodeURIComponent(
1561
- new PackageURL("npm", "", targetName, targetVersion, null, null)
1555
+ PackageURL.fromString(
1556
+ `pkg:npm/${encodeURIComponent(targetName).replace(/%2F/g, "/")}@${targetVersion}`,
1557
+ )
1562
1558
  .toString()
1563
1559
  .replace(/%2F/g, "/"),
1564
1560
  );
@@ -1945,13 +1941,8 @@ export async function parseYarnLock(yarnLockFile) {
1945
1941
  // Handle case where the dependency name is really an alias.
1946
1942
  // Eg: legacy-swc-helpers "npm:@swc/helpers@=0.4.14". Here the dgroupname=@swc/helpers
1947
1943
 
1948
- const depPurlString = new PackageURL(
1949
- "npm",
1950
- null,
1951
- dgroupnameToUse,
1952
- resolvedVersion,
1953
- null,
1954
- null,
1944
+ const depPurlString = PackageURL.fromString(
1945
+ `pkg:npm/${encodeURIComponent(dgroupnameToUse).replace(/%2F/g, "/")}@${resolvedVersion}`,
1955
1946
  ).toString();
1956
1947
  deplist.add(decodeURIComponent(depPurlString));
1957
1948
  }
@@ -2556,13 +2547,8 @@ export async function parsePnpmLock(
2556
2547
  if (vers?.includes("(")) {
2557
2548
  vers = vers.split("(")[0];
2558
2549
  }
2559
- const opurlString = new PackageURL(
2560
- "npm",
2561
- "",
2562
- opkgName,
2563
- vers,
2564
- null,
2565
- null,
2550
+ const opurlString = PackageURL.fromString(
2551
+ `pkg:npm/${encodeURIComponent(opkgName).replace(/%2F/g, "/")}@${vers}`,
2566
2552
  ).toString();
2567
2553
  const obomRef = decodeURIComponent(opurlString);
2568
2554
  if (possibleOptionalDeps[obomRef] === undefined) {
@@ -2700,13 +2686,8 @@ export async function parsePnpmLock(
2700
2686
  .replace(/^\//, "");
2701
2687
  vers = overrideVersion;
2702
2688
  }
2703
- const dpurlString = new PackageURL(
2704
- "npm",
2705
- "",
2706
- dpkgName,
2707
- vers,
2708
- null,
2709
- null,
2689
+ const dpurlString = PackageURL.fromString(
2690
+ `pkg:npm/${encodeURIComponent(dpkgName).replace(/%2F/g, "/")}@${vers}`,
2710
2691
  ).toString();
2711
2692
  const dbomRef = decodeURIComponent(dpurlString);
2712
2693
  deplist.push(dbomRef);
@@ -4091,12 +4072,7 @@ export function executeParallelGradleProperties(
4091
4072
  * @param {string} rawOutput Raw string output
4092
4073
  */
4093
4074
  export function parseBazelActionGraph(rawOutput) {
4094
- const mavenPrefixRegex = RegExp(
4095
- `^.*v1/https/[^/]*(?:${
4096
- process.env.BAZEL_STRIP_MAVEN_PREFIX || "/maven2/"
4097
- })?(.*)/(.*)/(.*)/(.*.jar)(?:"| \\\\)?$`,
4098
- "g",
4099
- );
4075
+ const mavenPrefixRegex = /^@maven\/\/:(.*)\/(.*)\/(.*)\/(.*\.jar)$/g;
4100
4076
 
4101
4077
  if (typeof rawOutput === "string") {
4102
4078
  const deps = [];
@@ -4104,10 +4080,7 @@ export function parseBazelActionGraph(rawOutput) {
4104
4080
  const tmpA = rawOutput.split("\n");
4105
4081
  tmpA.forEach((l) => {
4106
4082
  l = l.replace("\r", "");
4107
- if (
4108
- l.trim().startsWith("arguments") ||
4109
- l.trim().startsWith("bazel-out")
4110
- ) {
4083
+ if (l.trim().startsWith("@maven//:")) {
4111
4084
  const matches = Array.from(l.matchAll(mavenPrefixRegex));
4112
4085
 
4113
4086
  if (matches[0]?.[1]) {
@@ -5075,8 +5048,8 @@ export async function parsePyLockData(lockData, lockFile, pyProjectFile) {
5075
5048
  );
5076
5049
  }
5077
5050
  const pyProjMap = parsePyProjectTomlFile(pyProjectFile);
5078
- directDepsKeys = pyProjMap.directDepsKeys;
5079
- groupDepsKeys = pyProjMap.groupDepsKeys;
5051
+ directDepsKeys = pyProjMap.directDepsKeys || {};
5052
+ groupDepsKeys = pyProjMap.groupDepsKeys || {};
5080
5053
  parentComponent = pyProjMap.parentComponent;
5081
5054
  workspacePaths = pyProjMap.workspacePaths;
5082
5055
  if (workspacePaths?.length) {
@@ -5258,7 +5231,7 @@ export async function parsePyLockData(lockData, lockFile, pyProjectFile) {
5258
5231
  ],
5259
5232
  },
5260
5233
  };
5261
- if (groupDepsKeys[pkg.name]) {
5234
+ if (groupDepsKeys?.[pkg.name]) {
5262
5235
  pkg.scope = "optional";
5263
5236
  pkg.properties = pkg.properties.concat(
5264
5237
  groupDepsKeys[pkg.name].map((g) => {
@@ -13036,7 +13009,6 @@ export function executeAtom(src, args, extra_env = {}) {
13036
13009
  cwd,
13037
13010
  encoding: "utf-8",
13038
13011
  timeout: TIMEOUT_MS,
13039
- detached: !isWin && !process.env.CI,
13040
13012
  shell: isWin,
13041
13013
  killSignal: "SIGKILL",
13042
13014
  env,
@@ -13056,7 +13028,7 @@ export function executeAtom(src, args, extra_env = {}) {
13056
13028
  console.log(`Current JAVA_HOME: ${env["JAVA_HOME"] || ""}`);
13057
13029
  } else if (result.stderr?.includes("astgen")) {
13058
13030
  console.warn(
13059
- "WARN: Unable to locate astgen command. Install atom globally using sudo npm install -g @appthreat/atom to resolve this issue.",
13031
+ "WARN: Unable to locate astgen command. Install atom globally using sudo npm install -g @appthreat/atom-parsetools to resolve this issue.",
13060
13032
  );
13061
13033
  } else if (
13062
13034
  result.stderr?.includes(
@@ -13066,6 +13038,12 @@ export function executeAtom(src, args, extra_env = {}) {
13066
13038
  console.warn(
13067
13039
  "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",
13068
13040
  );
13041
+ } else if (
13042
+ result.stderr?.includes("Could not parse command line options")
13043
+ ) {
13044
+ console.warn(
13045
+ "Invalid command-line options passed to atom. Please file a bug in the cdxgen repository.",
13046
+ );
13069
13047
  }
13070
13048
  }
13071
13049
  if (result.stdout) {
@@ -13112,7 +13090,7 @@ export function findAppModules(
13112
13090
  slicesFile = undefined,
13113
13091
  ) {
13114
13092
  const tempDir = mkdtempSync(join(tmpdir(), "atom-deps-"));
13115
- const atomFile = join(tempDir, "app.atom");
13093
+ const atomFile = join(tempDir, `${language}-app.atom`);
13116
13094
  if (!slicesFile) {
13117
13095
  slicesFile = join(tempDir, "slices.json");
13118
13096
  }
@@ -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(
@@ -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,7 +2456,7 @@ 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",
@@ -3779,8 +3779,8 @@ test("parsePnpmLock", async () => {
3779
3779
  expect(parsedList.dependenciesList).toHaveLength(462);
3780
3780
  expect(parsedList.pkgList.filter((pkg) => !pkg.scope)).toHaveLength(3);
3781
3781
  parsedList = await parsePnpmLock("./pnpm-lock.yaml");
3782
- expect(parsedList.pkgList.length).toEqual(622);
3783
- expect(parsedList.dependenciesList.length).toEqual(622);
3782
+ expect(parsedList.pkgList.length).toEqual(625);
3783
+ expect(parsedList.dependenciesList.length).toEqual(625);
3784
3784
  expect(parsedList.pkgList[0]).toEqual({
3785
3785
  group: "@ampproject",
3786
3786
  name: "remapping",
@@ -5178,13 +5178,13 @@ test("parse bazel action graph", () => {
5178
5178
  encoding: "utf-8",
5179
5179
  }),
5180
5180
  );
5181
- expect(deps.length).toEqual(10);
5181
+ expect(deps.length).toEqual(2);
5182
5182
  expect(deps[0].group).toEqual("org.scala-lang");
5183
5183
  expect(deps[0].name).toEqual("scala-library");
5184
- expect(deps[0].version).toEqual("2.13.11");
5184
+ expect(deps[0].version).toEqual("2.13.16");
5185
5185
  expect(deps[1].group).toEqual("org.jline");
5186
5186
  expect(deps[1].name).toEqual("jline");
5187
- expect(deps[1].version).toEqual("3.21.0");
5187
+ expect(deps[1].version).toEqual("3.26.3");
5188
5188
  });
5189
5189
 
5190
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);
@@ -29,7 +29,6 @@ import {
29
29
  } from "../helpers/utils.js";
30
30
 
31
31
  const dirName = dirNameStr;
32
-
33
32
  const isWin = _platform() === "win32";
34
33
 
35
34
  let platform = _platform();
@@ -63,6 +62,7 @@ const CDXGEN_PLUGINS_VERSION = "1.6.10";
63
62
 
64
63
  // Retrieve the cdxgen plugins directory
65
64
  let CDXGEN_PLUGINS_DIR = process.env.CDXGEN_PLUGINS_DIR;
65
+ let extraNMBinPath;
66
66
  // Is there a non-empty local plugins directory
67
67
  if (
68
68
  !CDXGEN_PLUGINS_DIR &&
@@ -101,6 +101,9 @@ if (
101
101
  `cdxgen-plugins-bin${pluginsBinSuffix}`,
102
102
  "plugins",
103
103
  );
104
+ if (existsSync(join(dirName, "node_modules", ".bin"))) {
105
+ extraNMBinPath = join(dirName, "node_modules", ".bin");
106
+ }
104
107
  }
105
108
  if (!CDXGEN_PLUGINS_DIR) {
106
109
  let globalNodePath = process.env.GLOBAL_NODE_MODULES_PATH || undefined;
@@ -120,65 +123,86 @@ if (!CDXGEN_PLUGINS_DIR) {
120
123
  }
121
124
  }
122
125
  }
126
+ let globalPlugins;
123
127
  if (globalNodePath) {
124
- const globalPlugins = join(
128
+ globalPlugins = join(
125
129
  globalNodePath,
126
130
  "@cyclonedx",
127
131
  `cdxgen-plugins-bin${pluginsBinSuffix}`,
128
132
  "plugins",
129
133
  );
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(
134
+ extraNMBinPath = join(
158
135
  globalNodePath,
159
136
  "..",
160
137
  ".pnpm",
161
138
  "node_modules",
162
139
  ".bin",
163
140
  );
164
- if (existsSync(globalPlugins)) {
165
- CDXGEN_PLUGINS_DIR = globalPlugins;
166
- if (DEBUG_MODE) {
167
- console.log("Found global plugins", CDXGEN_PLUGINS_DIR);
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
- }
141
+ }
142
+ // pnpm add -g
143
+ let altGlobalPlugins;
144
+ if (dirName.includes(join("node_modules", ".pnpm", "@cyclonedx+cdxgen"))) {
145
+ const tmpA = dirName.split(join("node_modules", ".pnpm"));
146
+ altGlobalPlugins = join(
147
+ tmpA[0],
148
+ "node_modules",
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
+ if (existsSync(join(tmpA[0], "node_modules", ".bin"))) {
157
+ extraNMBinPath = join(tmpA[0], "node_modules", ".bin");
158
+ }
159
+ } else if (dirName.includes(join(".pnpm", "@cyclonedx+cdxgen"))) {
160
+ // pnpm dlx
161
+ const tmpA = dirName.split(".pnpm");
162
+ altGlobalPlugins = join(
163
+ tmpA[0],
164
+ ".pnpm",
165
+ `@cyclonedx+cdxgen-plugins-bin${pluginsBinSuffix}@${CDXGEN_PLUGINS_VERSION}`,
166
+ "node_modules",
167
+ "@cyclonedx",
168
+ `cdxgen-plugins-bin${pluginsBinSuffix}`,
169
+ "plugins",
170
+ );
171
+ if (existsSync(join(tmpA[0], ".bin"))) {
172
+ extraNMBinPath = join(tmpA[0], ".bin");
173
+ }
174
+ } else if (dirName.includes(join("caxa", "applications"))) {
175
+ // sae binaries
176
+ altGlobalPlugins = join(
177
+ dirName,
178
+ "node_modules",
179
+ "pnpm",
180
+ `@cyclonedx+cdxgen-plugins-bin${pluginsBinSuffix}@${CDXGEN_PLUGINS_VERSION}`,
181
+ "node_modules",
182
+ "@cyclonedx",
183
+ `cdxgen-plugins-bin${pluginsBinSuffix}`,
184
+ "plugins",
185
+ );
186
+ extraNMBinPath = join(dirName, "node_modules", ".bin");
187
+ }
188
+ // Set the plugins directory
189
+ if (globalPlugins && existsSync(globalPlugins)) {
190
+ CDXGEN_PLUGINS_DIR = globalPlugins;
191
+ if (DEBUG_MODE) {
192
+ console.log("Found global plugins", CDXGEN_PLUGINS_DIR);
193
+ }
194
+ } else if (altGlobalPlugins && existsSync(altGlobalPlugins)) {
195
+ CDXGEN_PLUGINS_DIR = altGlobalPlugins;
196
+ // To help detect bin commands such as atom, astgen, etc, we need to set this to the PATH variable.
197
+ if (DEBUG_MODE) {
198
+ console.log("Found global plugins", CDXGEN_PLUGINS_DIR);
178
199
  }
179
200
  }
180
201
  }
181
-
202
+ // Set bin path for commands such as atom, astgen etc.
203
+ if (extraNMBinPath && !process.env?.PATH?.includes(extraNMBinPath)) {
204
+ process.env.PATH = `${extraNMBinPath}${delimiter}${process.env.PATH}`;
205
+ }
182
206
  if (!CDXGEN_PLUGINS_DIR) {
183
207
  if (DEBUG_MODE) {
184
208
  console.warn(
@@ -13,12 +13,13 @@ import { platform as _platform, userInfo as _userInfo, homedir } from "node:os";
13
13
  import { basename, join, resolve, win32 } from "node:path";
14
14
  import process from "node:process";
15
15
  import stream from "node:stream/promises";
16
- import { parse } from "node:url";
16
+ import { URL } from "node:url";
17
17
  import { globSync } from "glob";
18
18
  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,
@@ -557,11 +558,13 @@ export const parseImageName = (fullImageName) => {
557
558
  fullImageName.includes("/") &&
558
559
  (fullImageName.includes(".") || fullImageName.includes(":"))
559
560
  ) {
560
- // TODO: Change to URL
561
- const urlObj = parse(fullImageName);
561
+ let urlObj;
562
+ if (URL.canParse(fullImageName)) {
563
+ urlObj = new URL(fullImageName);
564
+ }
562
565
  const tmpA = fullImageName.split("/");
563
566
  if (
564
- urlObj.path !== fullImageName ||
567
+ (urlObj && urlObj.pathname !== fullImageName) ||
565
568
  tmpA[0].includes(".") ||
566
569
  tmpA[0].includes(":")
567
570
  ) {
@@ -674,6 +677,7 @@ export const getImage = async (fullImageName) => {
674
677
  if (needsPull) {
675
678
  result = spawnSync(dockerCmd, ["pull", fullImageName], {
676
679
  encoding: "utf-8",
680
+ timeout: TIMEOUT_MS,
677
681
  });
678
682
  if (result.status !== 0 || result.error) {
679
683
  if (result.stderr?.includes("docker daemon is not running")) {
@@ -876,6 +880,7 @@ export const extractTar = async (fullImageName, dir, options) => {
876
880
  path.includes("usr/share/doc/") ||
877
881
  path.includes("usr/share/i18n/") ||
878
882
  path.includes("var/lib/ca-certificates") ||
883
+ path.includes("root/.gnupg") ||
879
884
  basename(path).startsWith(".") ||
880
885
  path.includes("usr/share/licenses/device-mapper-libs") ||
881
886
  [
@@ -887,6 +892,7 @@ export const extractTar = async (fullImageName, dir, options) => {
887
892
  "SymbolicLink",
888
893
  "RenamedOrSymlinked",
889
894
  "HardLink",
895
+ "Link",
890
896
  ].includes(entry.type)
891
897
  );
892
898
  },
@@ -1388,7 +1394,9 @@ export const getCredsFromHelper = (exeSuffix, serverAddress) => {
1388
1394
  encoding: "utf-8",
1389
1395
  });
1390
1396
  if (result.status !== 0 || result.error) {
1391
- console.log(result.stdout, result.stderr);
1397
+ if (result.stdout || result.stderr) {
1398
+ console.log(result.stdout, result.stderr);
1399
+ }
1392
1400
  } else if (result.stdout) {
1393
1401
  const cmdOutput = Buffer.from(result.stdout).toString();
1394
1402
  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.6",
3
+ "version": "11.3.0",
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.2",
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,17 +101,17 @@
101
101
  "yoctocolors": "^2.1.1"
102
102
  },
103
103
  "optionalDependencies": {
104
- "@appthreat/atom": "2.1.16",
104
+ "@appthreat/atom": "2.2.3",
105
105
  "@appthreat/cdx-proto": "1.0.1",
106
- "@cyclonedx/cdxgen-plugins-bin": "1.6.10",
107
- "@cyclonedx/cdxgen-plugins-bin-linux-arm": "1.6.10",
108
- "@cyclonedx/cdxgen-plugins-bin-linux-amd64": "1.6.10",
109
- "@cyclonedx/cdxgen-plugins-bin-linux-arm64": "1.6.10",
110
- "@cyclonedx/cdxgen-plugins-bin-darwin-amd64": "1.6.10",
111
- "@cyclonedx/cdxgen-plugins-bin-darwin-arm64": "1.6.10",
112
- "@cyclonedx/cdxgen-plugins-bin-linux-ppc64": "1.6.10",
113
- "@cyclonedx/cdxgen-plugins-bin-windows-amd64": "1.6.10",
114
- "@cyclonedx/cdxgen-plugins-bin-windows-arm64": "1.6.10",
106
+ "@cyclonedx/cdxgen-plugins-bin": "1.6.11",
107
+ "@cyclonedx/cdxgen-plugins-bin-linux-arm": "1.6.11",
108
+ "@cyclonedx/cdxgen-plugins-bin-linux-amd64": "1.6.11",
109
+ "@cyclonedx/cdxgen-plugins-bin-linux-arm64": "1.6.11",
110
+ "@cyclonedx/cdxgen-plugins-bin-darwin-amd64": "1.6.11",
111
+ "@cyclonedx/cdxgen-plugins-bin-darwin-arm64": "1.6.11",
112
+ "@cyclonedx/cdxgen-plugins-bin-linux-ppc64": "1.6.11",
113
+ "@cyclonedx/cdxgen-plugins-bin-windows-amd64": "1.6.11",
114
+ "@cyclonedx/cdxgen-plugins-bin-windows-arm64": "1.6.11",
115
115
  "body-parser": "^2.2.0",
116
116
  "compression": "^1.7.5",
117
117
  "connect": "^3.7.0",
@@ -133,7 +133,8 @@
133
133
  "typescript": "^5.8.3"
134
134
  },
135
135
  "overrides": {
136
- "glob": "^11.0.0",
136
+ "jwa": "^2.0.1",
137
+ "glob": "^11.0.2",
137
138
  "node-gyp": "^10.2.0",
138
139
  "prebuild": "^13.0.0",
139
140
  "pacote": "^20.0.0",
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../lib/cli/index.js"],"names":[],"mappings":"AAu7BA;;;;;;;;GAQG;AACH,gFAFW,MAAM,SAchB;AA8XD;;;;;;;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,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":"AA8EA;;;;;GAKG;AACH,0DAUC;AAED;;;;;;GAMG;AACH,yDAHmB,OAAO,UAazB;AAmFD,8CAKC;AAED,0CAIC;AAsBD,yCAYC;AAID,2CAQC;AAiOD;;;;;;;GAOG;AACH,4EAiBC;AAED;;;;;;GAMG;AACH,mGA2EC;AAED;;;;;;;;GAQG;AACH,yGAeC;AAyBD;;;;;;GAMG;AACH,qCAJW,MAAM,WACN,MAAM,2BA8BhB;AAED;;;;;;GAMG;AACH,+CAJW,MAAM,WACN,MAAM,+BA0BhB;AAYD;;;;GAIG;AACH,gCAFa,MAAM,CAIlB;AAED,iCAQC;AAED;;;;;;IAMI;AACJ,iDAJW,MAAM,GACJ,OAAO,CAWnB;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,kBA+EjB;AAED;;;;;GAKG;AACH,0CAHW,MAAM,YACN,MAAM;;;GAygBhB;AAED;;;;;;;GAOG;AACH,6CAFW,MAAM,MA2DhB;AAgCD;;;;GAIG;AACH,4CAFW,MAAM;;;GA4OhB;AAED;;;;GAIG;AACH,4CAFW,MAAM,kBAiEhB;AAoHD;;;;;GAKG;AACH,kDAHW,MAAM,GACJ,MAAM,CAgBlB;AAED;;;;;;;;;;GAUG;AACH,wCARW,MAAM;;;;;;;;;;;;;;;;;;GAuvBhB;AAED;;;;GAIG;AACH,8CAFW,MAAM,kBA+ChB;AAED;;;;GAIG;AACH,sCAFW,MAAM,kBAgFhB;AAED;;;;;GAKG;AACH,kCAHW,MAAM,OAqIhB;AAED;;;;;;GAMG;AACH,0CALW,MAAM,WACN,MAAM,OA+JhB;AAED;;;;;;;;;GASG;AACH,4CAPW,MAAM,gBACN,GAAG,aACH,GAAG,gBACH,MAAM,OA+GhB;AAiBD;;;;;;GAMG;AACH,0CALW,MAAM,oBACN,MAAM,kBACN,GAAG,mBACH,MAAM;;;;;;;;;GA6OhB;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;;;;;;;;GAQG;AACH,qDANW,MAAM,6CAIJ,MAAM,CAoFlB;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,2FA0GC;AAED;;;;;;;;;GASG;AACH,sFAGC;AAED;;;;;;;;;GASG;AACH,gFAFY,MAAO,SAAS,CA6B3B;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;;;;;GAKG;AACH,iDAHW,MAAM,OAoLhB;AAED;;;;;;GAMG;AACH,yDAHW,MAAM,iBACN,MAAM;;;;;;;;;;;;;;;;;;;;GA4bhB;AAED;;;;;GAKG;AACH,mFAgKC;AAED;;;;;;;GAOG;AACH,kCALW,MAAM;;;;;;;;GA4EhB;AAED;;;;GAIG;AACH,mEAqBC;AAeD;;;;;GAKG;AACH;;;;;;;;;EAkLC;AAED;;;;GAIG;AACH;;;;;;EAcC;AAED;;;;GAIG;AACH,+DAFY,SAAO,SAAS,CAc3B;AAED;;;;GAIG;AACH,uDAoBC;AAED;;;;GAIG;AACH,oDAFY,QAAQ,CAQnB;AAED;;;;;GAKG;AACH,oEAFY,SAAO,SAAS,CAc3B;AAED;;;;;;GAMG;AACH,oEAFY,OAAO,QAAQ,CA8D1B;AAED;;;;GAIG;AACH,iEA2CC;AA+BD;;;;;;;;GAkCC;AAyBD;;;;;;;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,kBAsBhB;AAED,+DA+CC;AAED,uEAwBC;AA6BD;;;;GAIG;AACH,oEAmGC;AAMD;;;;GAIG;AACH,sDAsBC;AAED;;;;;;;;;;GAUG;AACH,uIAFa,KAAK,CAAC,MAAM,CAAC,CA0IzB;AAED;;;;;GAKG;AACH,8CAHW,MAAM,eACN,MAAM,kBAwKhB;AAED;;;;;GAKG;AACH,kDAHW,MAAM,YACN,MAAM;;;;;;;GAoQhB;AAED;;;;GAIG;AACH,kEAqEC;AAED;;;;GAIG;AACH,gEA+CC;AAyFD;;;;;;;;;;;;;;;;;GAiBG;AACH,mEALW,OAAO,4BAuIjB;AAED;;;;;;;;GAQG;AACH,+DALW,OAAO,4BA4GjB;AAED,oEAyDC;AAED,wEA0BC;AAED;;;;;;;GAOG;AACH,uEAgEC;AAED,0DAwBC;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,kGAiVC;AAED;;;EAqPC;AAED;;;;EAsHC;AAED;;;EA+GC;AAED;;;;;;GAMG;AACH,oDAJW,MAAM,OAsChB;AAED;;;;;GAKG;AACH,+CAHW,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAsJhB;AAED;;;;;;EAmIC;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,UAqFhB;AAED;;;;GAIG;AACH,8CAHW,MAAM,WACN,MAAM;;;;;;;;EAuBhB;AAED;;;GAGG;AACH,iDAFW,MAAM;;;;;;;;;;;;;;;;;;;;;IAwDhB;AAED;;;;;;;GAOG;AACH,iDALW,MAAM,YACN,MAAM,YACN,OAAO,oBACP,OAAO,eA6DjB;AAED,wIA+BC;AAED;;;;;;;GAOG;AACH,sCALW,MAAM,eACN,MAAM,eA8JhB;AAED;;;;;;;;;;;;;;;;;;;;;;IA6DC;AAED;;;;;;GAMG;AACH,kDA8BC;AAED,uDAeC;AAED,2DAeC;AAED,2CAIC;AAED;;;;;;GAMG;AACH,uDAJW,MAAM,MAgBhB;AAED;;;;;;GAMG;AACH,uCAJW,MAAM,QACN,MAAM,GACJ,OAAO,QAAQ,CAU3B;AAED;;;;;;GAMG;AACH,yDAHW,MAAM,GACJ,OAAO,KAAQ,CAkB3B;AAED;;;;;;;;GAQG;AACH,2CANW,MAAM,WACN,MAAM,iBACN,MAAM,kBA2UhB;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;;;;GAIG;AACH,wCAFW,MAAM,UAehB;AAED;;;;;;;;;GASG;AACH,6DAPW,MAAM,EAAE,qBACR,MAAM,EAAE,6BACR,MAAM,EAAE,uBACR,GAAG,GAED,MAAM,EAAE,CA2CpB;AAcD;;;;;;GAMG;AAEH,uDALW,MAAM,iBACN,MAAM,EAAE,GACN,GAAG,CAsCf;AAED;;;;;;GAMG;AACH,uFAuHC;AAED;;;;;;GAMG;AACH,wGA6BC;AAED;;;;;;GAMG;AACH,4EAHW,OAAO,OAajB;AAED;;;;;;;GAOG;AACH,8CALW,QAAQ,mCA6ClB;AAED;;;;;;;GAOG;AACH,0FAgFC;AAsRD;;;;;;GAMG;AACH,iDAJW,MAAM,YACN,MAAM,GACJ,MAAM,CA6ClB;AAED;;;;;GAKG;AACH,yCAHW,MAAM,YACN,MAAM,UAsEhB;AAED;;GAEG;AACH,sCAmBC;AAED,0EAkGC;AAED;;;;;;;;GAQG;AACH,oCANW,MAAM,YACN,MAAM,gBACN,MAAM,eACN,MAAM,OA6ChB;AA2FD;;;;;GAKG;AACH,uCAHW,MAAM,sBAuDhB;AAED;;;;;;;;;GASG;AACH,2CAPW,MAAM,kBACN,MAAM,eACN,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA4chB;AAED;;;;;;;;;;;GAWG;AACH,gDAPW,MAAM,+BAEN,MAAM;;;;;;;;;;;;;;;;EA+KhB;AAGD;;;;;EAmBC;AAED;;;;;;;GAOG;AACH,kEAJW,MAAM,cACN,MAAM,iCA2IhB;AAED,qDASC;AAED;;;;;;;EA2GC;AAED;;;EAgQC;AAED,sEA6BC;AAED;;;;;;;GAOG;AACH,mCALW,MAAM,WACN,MAAM;;;;;;;EAuQhB;AAED;;;;;;GAMG;AACH,2CAHW,MAAM,OAKhB;AAED,qDA0CC;AAgID;;;;;GAKG;AACH;;;GA2HC;AAED,yEAiIC;AAED;;;;;;GAMG;AACH,mDAkBC;AAED;;;;;;;;;;GAUG;AACH,0DAkBC;AAED;;;;;;GAMG;AACH,sFAsBC;AAED;;;;;;;GAOG;AACH,2EAgCC;AAED;;;;;GAKG;AACH,oDAsCC;AAED;;;;;;GAMG;AACH,sEA0BC;AAED;;;;;;;;;GASG;AACH,+GA+CC;AAtleD,gCAEc;AAEd,+BAEsD;AAEtD,4BAA4C;AAC5C,4BAA6C;AAC7C,2BAAmE;AA2DnE,iCAEE;AA2BF,iCAE0C;AAG1C,gCACmE;AAGnE,gCACsE;AAGtE,8BAA+B;AAe/B,4CAEmE;AAGnE,6CAEE;AAgBF,oCAAkD;AAGlD,uCAEuD;AAYvD,8BAAyC;AAgBzC,gCAA6C;AAY7C,8BAAiC;AAIjC,4BAA6B;AAI7B,2BAA2B;AAI3B,4BAA6B;AAI7B,2BAA2B;AAI3B,6BAA+B;AAI/B,0BAAyB;AAIzB,6BAA+B;AAM/B,2BAA2B;AAK3B,4BAA6B;AAK7B,mCAAoC;AAOpC,gDAC2D;AAE3D,2BAAuD;AAGvD,kDAWE;AAGF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAiJE;;;;AA6JF,8BAQG;AAqgMH,8CAUE"}
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":"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
+ {"version":3,"file":"binary.d.ts","sourceRoot":"","sources":["../../../lib/managers/binary.js"],"names":[],"mappings":"AAgXA,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,2DAsMN;AAgBM,yFAqGN;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;;;;;;;;EA2EN;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"}