@coana-tech/cli 15.2.0 → 15.2.2
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/cli.mjs +186 -319
- package/package.json +1 -1
- package/reachability-analyzers-cli.mjs +52 -52
- package/repos/coana-tech/goana/bin/goana-darwin-amd64.gz +0 -0
- package/repos/coana-tech/goana/bin/goana-darwin-arm64.gz +0 -0
- package/repos/coana-tech/goana/bin/goana-linux-amd64.gz +0 -0
- package/repos/coana-tech/goana/bin/goana-linux-arm64.gz +0 -0
- package/repos/coana-tech/javap-service/javap-service.jar +0 -0
package/cli.mjs
CHANGED
|
@@ -14563,8 +14563,8 @@ var require_follow_redirects = __commonJS({
|
|
|
14563
14563
|
}
|
|
14564
14564
|
return parsed;
|
|
14565
14565
|
}
|
|
14566
|
-
function resolveUrl(
|
|
14567
|
-
return useNativeURL ? new URL3(
|
|
14566
|
+
function resolveUrl(relative25, base) {
|
|
14567
|
+
return useNativeURL ? new URL3(relative25, base) : parseUrl(url2.resolve(base, relative25));
|
|
14568
14568
|
}
|
|
14569
14569
|
function validateUrl(input) {
|
|
14570
14570
|
if (/^\[/.test(input.hostname) && !/^\[[:0-9a-f]+\]$/i.test(input.hostname)) {
|
|
@@ -17420,7 +17420,7 @@ var require_safe_stable_stringify = __commonJS({
|
|
|
17420
17420
|
return circularValue;
|
|
17421
17421
|
}
|
|
17422
17422
|
let res = "";
|
|
17423
|
-
let
|
|
17423
|
+
let join35 = ",";
|
|
17424
17424
|
const originalIndentation = indentation;
|
|
17425
17425
|
if (Array.isArray(value2)) {
|
|
17426
17426
|
if (value2.length === 0) {
|
|
@@ -17434,7 +17434,7 @@ var require_safe_stable_stringify = __commonJS({
|
|
|
17434
17434
|
indentation += spacer;
|
|
17435
17435
|
res += `
|
|
17436
17436
|
${indentation}`;
|
|
17437
|
-
|
|
17437
|
+
join35 = `,
|
|
17438
17438
|
${indentation}`;
|
|
17439
17439
|
}
|
|
17440
17440
|
const maximumValuesToStringify = Math.min(value2.length, maximumBreadth);
|
|
@@ -17442,13 +17442,13 @@ ${indentation}`;
|
|
|
17442
17442
|
for (; i7 < maximumValuesToStringify - 1; i7++) {
|
|
17443
17443
|
const tmp2 = stringifyFnReplacer(String(i7), value2, stack2, replacer, spacer, indentation);
|
|
17444
17444
|
res += tmp2 !== void 0 ? tmp2 : "null";
|
|
17445
|
-
res +=
|
|
17445
|
+
res += join35;
|
|
17446
17446
|
}
|
|
17447
17447
|
const tmp = stringifyFnReplacer(String(i7), value2, stack2, replacer, spacer, indentation);
|
|
17448
17448
|
res += tmp !== void 0 ? tmp : "null";
|
|
17449
17449
|
if (value2.length - 1 > maximumBreadth) {
|
|
17450
17450
|
const removedKeys = value2.length - maximumBreadth - 1;
|
|
17451
|
-
res += `${
|
|
17451
|
+
res += `${join35}"... ${getItemCount(removedKeys)} not stringified"`;
|
|
17452
17452
|
}
|
|
17453
17453
|
if (spacer !== "") {
|
|
17454
17454
|
res += `
|
|
@@ -17469,7 +17469,7 @@ ${originalIndentation}`;
|
|
|
17469
17469
|
let separator = "";
|
|
17470
17470
|
if (spacer !== "") {
|
|
17471
17471
|
indentation += spacer;
|
|
17472
|
-
|
|
17472
|
+
join35 = `,
|
|
17473
17473
|
${indentation}`;
|
|
17474
17474
|
whitespace2 = " ";
|
|
17475
17475
|
}
|
|
@@ -17483,13 +17483,13 @@ ${indentation}`;
|
|
|
17483
17483
|
const tmp = stringifyFnReplacer(key2, value2, stack2, replacer, spacer, indentation);
|
|
17484
17484
|
if (tmp !== void 0) {
|
|
17485
17485
|
res += `${separator}${strEscape(key2)}:${whitespace2}${tmp}`;
|
|
17486
|
-
separator =
|
|
17486
|
+
separator = join35;
|
|
17487
17487
|
}
|
|
17488
17488
|
}
|
|
17489
17489
|
if (keyLength > maximumBreadth) {
|
|
17490
17490
|
const removedKeys = keyLength - maximumBreadth;
|
|
17491
17491
|
res += `${separator}"...":${whitespace2}"${getItemCount(removedKeys)} not stringified"`;
|
|
17492
|
-
separator =
|
|
17492
|
+
separator = join35;
|
|
17493
17493
|
}
|
|
17494
17494
|
if (spacer !== "" && separator.length > 1) {
|
|
17495
17495
|
res = `
|
|
@@ -17530,7 +17530,7 @@ ${originalIndentation}`;
|
|
|
17530
17530
|
}
|
|
17531
17531
|
const originalIndentation = indentation;
|
|
17532
17532
|
let res = "";
|
|
17533
|
-
let
|
|
17533
|
+
let join35 = ",";
|
|
17534
17534
|
if (Array.isArray(value2)) {
|
|
17535
17535
|
if (value2.length === 0) {
|
|
17536
17536
|
return "[]";
|
|
@@ -17543,7 +17543,7 @@ ${originalIndentation}`;
|
|
|
17543
17543
|
indentation += spacer;
|
|
17544
17544
|
res += `
|
|
17545
17545
|
${indentation}`;
|
|
17546
|
-
|
|
17546
|
+
join35 = `,
|
|
17547
17547
|
${indentation}`;
|
|
17548
17548
|
}
|
|
17549
17549
|
const maximumValuesToStringify = Math.min(value2.length, maximumBreadth);
|
|
@@ -17551,13 +17551,13 @@ ${indentation}`;
|
|
|
17551
17551
|
for (; i7 < maximumValuesToStringify - 1; i7++) {
|
|
17552
17552
|
const tmp2 = stringifyArrayReplacer(String(i7), value2[i7], stack2, replacer, spacer, indentation);
|
|
17553
17553
|
res += tmp2 !== void 0 ? tmp2 : "null";
|
|
17554
|
-
res +=
|
|
17554
|
+
res += join35;
|
|
17555
17555
|
}
|
|
17556
17556
|
const tmp = stringifyArrayReplacer(String(i7), value2[i7], stack2, replacer, spacer, indentation);
|
|
17557
17557
|
res += tmp !== void 0 ? tmp : "null";
|
|
17558
17558
|
if (value2.length - 1 > maximumBreadth) {
|
|
17559
17559
|
const removedKeys = value2.length - maximumBreadth - 1;
|
|
17560
|
-
res += `${
|
|
17560
|
+
res += `${join35}"... ${getItemCount(removedKeys)} not stringified"`;
|
|
17561
17561
|
}
|
|
17562
17562
|
if (spacer !== "") {
|
|
17563
17563
|
res += `
|
|
@@ -17570,7 +17570,7 @@ ${originalIndentation}`;
|
|
|
17570
17570
|
let whitespace2 = "";
|
|
17571
17571
|
if (spacer !== "") {
|
|
17572
17572
|
indentation += spacer;
|
|
17573
|
-
|
|
17573
|
+
join35 = `,
|
|
17574
17574
|
${indentation}`;
|
|
17575
17575
|
whitespace2 = " ";
|
|
17576
17576
|
}
|
|
@@ -17579,7 +17579,7 @@ ${indentation}`;
|
|
|
17579
17579
|
const tmp = stringifyArrayReplacer(key2, value2[key2], stack2, replacer, spacer, indentation);
|
|
17580
17580
|
if (tmp !== void 0) {
|
|
17581
17581
|
res += `${separator}${strEscape(key2)}:${whitespace2}${tmp}`;
|
|
17582
|
-
separator =
|
|
17582
|
+
separator = join35;
|
|
17583
17583
|
}
|
|
17584
17584
|
}
|
|
17585
17585
|
if (spacer !== "" && separator.length > 1) {
|
|
@@ -17637,20 +17637,20 @@ ${originalIndentation}`;
|
|
|
17637
17637
|
indentation += spacer;
|
|
17638
17638
|
let res2 = `
|
|
17639
17639
|
${indentation}`;
|
|
17640
|
-
const
|
|
17640
|
+
const join36 = `,
|
|
17641
17641
|
${indentation}`;
|
|
17642
17642
|
const maximumValuesToStringify = Math.min(value2.length, maximumBreadth);
|
|
17643
17643
|
let i7 = 0;
|
|
17644
17644
|
for (; i7 < maximumValuesToStringify - 1; i7++) {
|
|
17645
17645
|
const tmp2 = stringifyIndent(String(i7), value2[i7], stack2, spacer, indentation);
|
|
17646
17646
|
res2 += tmp2 !== void 0 ? tmp2 : "null";
|
|
17647
|
-
res2 +=
|
|
17647
|
+
res2 += join36;
|
|
17648
17648
|
}
|
|
17649
17649
|
const tmp = stringifyIndent(String(i7), value2[i7], stack2, spacer, indentation);
|
|
17650
17650
|
res2 += tmp !== void 0 ? tmp : "null";
|
|
17651
17651
|
if (value2.length - 1 > maximumBreadth) {
|
|
17652
17652
|
const removedKeys = value2.length - maximumBreadth - 1;
|
|
17653
|
-
res2 += `${
|
|
17653
|
+
res2 += `${join36}"... ${getItemCount(removedKeys)} not stringified"`;
|
|
17654
17654
|
}
|
|
17655
17655
|
res2 += `
|
|
17656
17656
|
${originalIndentation}`;
|
|
@@ -17666,16 +17666,16 @@ ${originalIndentation}`;
|
|
|
17666
17666
|
return '"[Object]"';
|
|
17667
17667
|
}
|
|
17668
17668
|
indentation += spacer;
|
|
17669
|
-
const
|
|
17669
|
+
const join35 = `,
|
|
17670
17670
|
${indentation}`;
|
|
17671
17671
|
let res = "";
|
|
17672
17672
|
let separator = "";
|
|
17673
17673
|
let maximumPropertiesToStringify = Math.min(keyLength, maximumBreadth);
|
|
17674
17674
|
if (isTypedArrayWithEntries(value2)) {
|
|
17675
|
-
res += stringifyTypedArray(value2,
|
|
17675
|
+
res += stringifyTypedArray(value2, join35, maximumBreadth);
|
|
17676
17676
|
keys = keys.slice(value2.length);
|
|
17677
17677
|
maximumPropertiesToStringify -= value2.length;
|
|
17678
|
-
separator =
|
|
17678
|
+
separator = join35;
|
|
17679
17679
|
}
|
|
17680
17680
|
if (deterministic) {
|
|
17681
17681
|
keys = insertSort(keys);
|
|
@@ -17686,13 +17686,13 @@ ${indentation}`;
|
|
|
17686
17686
|
const tmp = stringifyIndent(key2, value2[key2], stack2, spacer, indentation);
|
|
17687
17687
|
if (tmp !== void 0) {
|
|
17688
17688
|
res += `${separator}${strEscape(key2)}: ${tmp}`;
|
|
17689
|
-
separator =
|
|
17689
|
+
separator = join35;
|
|
17690
17690
|
}
|
|
17691
17691
|
}
|
|
17692
17692
|
if (keyLength > maximumBreadth) {
|
|
17693
17693
|
const removedKeys = keyLength - maximumBreadth;
|
|
17694
17694
|
res += `${separator}"...": "${getItemCount(removedKeys)} not stringified"`;
|
|
17695
|
-
separator =
|
|
17695
|
+
separator = join35;
|
|
17696
17696
|
}
|
|
17697
17697
|
if (separator !== "") {
|
|
17698
17698
|
res = `
|
|
@@ -19259,7 +19259,7 @@ var require_buffer_list = __commonJS({
|
|
|
19259
19259
|
}
|
|
19260
19260
|
}, {
|
|
19261
19261
|
key: "join",
|
|
19262
|
-
value: function
|
|
19262
|
+
value: function join35(s6) {
|
|
19263
19263
|
if (this.length === 0) return "";
|
|
19264
19264
|
var p3 = this.head;
|
|
19265
19265
|
var ret = "" + p3.data;
|
|
@@ -30493,7 +30493,7 @@ var require_lodash = __commonJS({
|
|
|
30493
30493
|
}
|
|
30494
30494
|
return mapped.length && mapped[0] === arrays[0] ? baseIntersection(mapped, undefined2, comparator) : [];
|
|
30495
30495
|
});
|
|
30496
|
-
function
|
|
30496
|
+
function join35(array, separator) {
|
|
30497
30497
|
return array == null ? "" : nativeJoin.call(array, separator);
|
|
30498
30498
|
}
|
|
30499
30499
|
function last2(array) {
|
|
@@ -32412,7 +32412,7 @@ var require_lodash = __commonJS({
|
|
|
32412
32412
|
lodash16.isUndefined = isUndefined2;
|
|
32413
32413
|
lodash16.isWeakMap = isWeakMap;
|
|
32414
32414
|
lodash16.isWeakSet = isWeakSet;
|
|
32415
|
-
lodash16.join =
|
|
32415
|
+
lodash16.join = join35;
|
|
32416
32416
|
lodash16.kebabCase = kebabCase;
|
|
32417
32417
|
lodash16.last = last2;
|
|
32418
32418
|
lodash16.lastIndexOf = lastIndexOf;
|
|
@@ -46046,7 +46046,7 @@ var require_builder = __commonJS({
|
|
|
46046
46046
|
}
|
|
46047
46047
|
};
|
|
46048
46048
|
exports2.SeqBuilder = SeqBuilder;
|
|
46049
|
-
function
|
|
46049
|
+
function join35(first2, second, ...others) {
|
|
46050
46050
|
const seq = new SeqBuilder(first2, second);
|
|
46051
46051
|
if (!others.length) {
|
|
46052
46052
|
return seq;
|
|
@@ -46055,7 +46055,7 @@ var require_builder = __commonJS({
|
|
|
46055
46055
|
return res.join(query);
|
|
46056
46056
|
}, seq);
|
|
46057
46057
|
}
|
|
46058
|
-
exports2.join =
|
|
46058
|
+
exports2.join = join35;
|
|
46059
46059
|
var SymBuilder = class extends AbstractBuilder {
|
|
46060
46060
|
constructor(opts) {
|
|
46061
46061
|
super();
|
|
@@ -69980,16 +69980,16 @@ var require_lockfile = __commonJS({
|
|
|
69980
69980
|
if (process.platform === "win32") {
|
|
69981
69981
|
yield fsSymlink(src, dest, "junction");
|
|
69982
69982
|
} else {
|
|
69983
|
-
let
|
|
69983
|
+
let relative25;
|
|
69984
69984
|
try {
|
|
69985
|
-
|
|
69985
|
+
relative25 = (_path2 || _load_path()).default.relative((_fs || _load_fs()).default.realpathSync((_path2 || _load_path()).default.dirname(dest)), (_fs || _load_fs()).default.realpathSync(src));
|
|
69986
69986
|
} catch (err) {
|
|
69987
69987
|
if (err.code !== "ENOENT") {
|
|
69988
69988
|
throw err;
|
|
69989
69989
|
}
|
|
69990
|
-
|
|
69990
|
+
relative25 = (_path2 || _load_path()).default.relative((_path2 || _load_path()).default.dirname(dest), src);
|
|
69991
69991
|
}
|
|
69992
|
-
yield fsSymlink(
|
|
69992
|
+
yield fsSymlink(relative25 || ".", dest);
|
|
69993
69993
|
}
|
|
69994
69994
|
});
|
|
69995
69995
|
return function symlink2(_x24, _x25) {
|
|
@@ -70016,17 +70016,17 @@ var require_lockfile = __commonJS({
|
|
|
70016
70016
|
_ref28 = _i14.value;
|
|
70017
70017
|
}
|
|
70018
70018
|
const name2 = _ref28;
|
|
70019
|
-
const
|
|
70019
|
+
const relative25 = relativeDir ? (_path2 || _load_path()).default.join(relativeDir, name2) : name2;
|
|
70020
70020
|
const loc = (_path2 || _load_path()).default.join(dir, name2);
|
|
70021
70021
|
const stat6 = yield lstat3(loc);
|
|
70022
70022
|
files.push({
|
|
70023
|
-
relative:
|
|
70023
|
+
relative: relative25,
|
|
70024
70024
|
basename: name2,
|
|
70025
70025
|
absolute: loc,
|
|
70026
70026
|
mtime: +stat6.mtime
|
|
70027
70027
|
});
|
|
70028
70028
|
if (stat6.isDirectory()) {
|
|
70029
|
-
files = files.concat(yield walk(loc,
|
|
70029
|
+
files = files.concat(yield walk(loc, relative25, ignoreBasenames));
|
|
70030
70030
|
}
|
|
70031
70031
|
}
|
|
70032
70032
|
return files;
|
|
@@ -199710,7 +199710,7 @@ var {
|
|
|
199710
199710
|
// dist/index.js
|
|
199711
199711
|
import { mkdir as mkdir7, mkdtemp as mkdtemp2, readFile as readFile38, rm as rm4, writeFile as writeFile17 } from "fs/promises";
|
|
199712
199712
|
import { tmpdir as tmpdir5 } from "os";
|
|
199713
|
-
import { dirname as dirname27, join as
|
|
199713
|
+
import { dirname as dirname27, join as join34, resolve as resolve44 } from "path";
|
|
199714
199714
|
|
|
199715
199715
|
// ../../node_modules/.pnpm/remeda@2.14.0/node_modules/remeda/dist/chunk-ANXBDSUI.js
|
|
199716
199716
|
var s = { done: false, hasNext: false };
|
|
@@ -223680,10 +223680,10 @@ var Ignore = class {
|
|
|
223680
223680
|
ignored(p3) {
|
|
223681
223681
|
const fullpath = p3.fullpath();
|
|
223682
223682
|
const fullpaths = `${fullpath}/`;
|
|
223683
|
-
const
|
|
223684
|
-
const relatives = `${
|
|
223683
|
+
const relative25 = p3.relative() || ".";
|
|
223684
|
+
const relatives = `${relative25}/`;
|
|
223685
223685
|
for (const m4 of this.relative) {
|
|
223686
|
-
if (m4.match(
|
|
223686
|
+
if (m4.match(relative25) || m4.match(relatives))
|
|
223687
223687
|
return true;
|
|
223688
223688
|
}
|
|
223689
223689
|
for (const m4 of this.absolute) {
|
|
@@ -223694,9 +223694,9 @@ var Ignore = class {
|
|
|
223694
223694
|
}
|
|
223695
223695
|
childrenIgnored(p3) {
|
|
223696
223696
|
const fullpath = p3.fullpath() + "/";
|
|
223697
|
-
const
|
|
223697
|
+
const relative25 = (p3.relative() || ".") + "/";
|
|
223698
223698
|
for (const m4 of this.relativeChildren) {
|
|
223699
|
-
if (m4.match(
|
|
223699
|
+
if (m4.match(relative25))
|
|
223700
223700
|
return true;
|
|
223701
223701
|
}
|
|
223702
223702
|
for (const m4 of this.absoluteChildren) {
|
|
@@ -229111,7 +229111,7 @@ var NuGetSocketUpgradeManager = class {
|
|
|
229111
229111
|
};
|
|
229112
229112
|
|
|
229113
229113
|
// ../fixing-management/src/fixing-management/rust/cargo-socket-upgrade-manager.ts
|
|
229114
|
-
import { dirname as dirname18, relative as
|
|
229114
|
+
import { dirname as dirname18, relative as relative14, resolve as resolve28 } from "node:path";
|
|
229115
229115
|
var import_picomatch6 = __toESM(require_picomatch2(), 1);
|
|
229116
229116
|
var import_semver5 = __toESM(require_semver2(), 1);
|
|
229117
229117
|
import assert12 from "node:assert";
|
|
@@ -229119,7 +229119,7 @@ import { readFile as readFile24, writeFile as writeFile10 } from "node:fs/promis
|
|
|
229119
229119
|
|
|
229120
229120
|
// ../utils/src/cargo-utils.ts
|
|
229121
229121
|
import { readFile as readFile23 } from "node:fs/promises";
|
|
229122
|
-
import { dirname as dirname17, resolve as resolve27 } from "node:path";
|
|
229122
|
+
import { dirname as dirname17, relative as relative13, resolve as resolve27 } from "node:path";
|
|
229123
229123
|
var import_picomatch5 = __toESM(require_picomatch2(), 1);
|
|
229124
229124
|
async function getCargoTomlFilesForCargoLockFile(rootDir, cargoLockFile, cargoTomlFiles) {
|
|
229125
229125
|
const lockDir = dirname17(cargoLockFile);
|
|
@@ -229148,7 +229148,10 @@ async function getCargoTomlFilesForCargoLockFile(rootDir, cargoLockFile, cargoTo
|
|
|
229148
229148
|
const matcher = (0, import_picomatch5.default)(memberPatterns, {
|
|
229149
229149
|
ignore: excludePatterns
|
|
229150
229150
|
});
|
|
229151
|
-
const
|
|
229151
|
+
const absLockDir = resolve27(rootDir, lockDir);
|
|
229152
|
+
const memberTomlFiles = cargoTomlFiles.filter(
|
|
229153
|
+
(file) => matcher(relative13(absLockDir, resolve27(rootDir, dirname17(file))) || ".")
|
|
229154
|
+
);
|
|
229152
229155
|
return { rootTomlFile, memberTomlFiles };
|
|
229153
229156
|
}
|
|
229154
229157
|
|
|
@@ -229263,14 +229266,14 @@ var CargoSocketUpgradeManager = class {
|
|
|
229263
229266
|
await writeFile10(path9, content);
|
|
229264
229267
|
ctxt.statusUpdater?.({
|
|
229265
229268
|
status: "success",
|
|
229266
|
-
file:
|
|
229269
|
+
file: relative14(this.rootDir, path9),
|
|
229267
229270
|
message: "File restored",
|
|
229268
229271
|
artifacts: i3(artifacts)
|
|
229269
229272
|
});
|
|
229270
229273
|
} catch (e) {
|
|
229271
229274
|
ctxt.statusUpdater?.({
|
|
229272
229275
|
status: "error",
|
|
229273
|
-
file:
|
|
229276
|
+
file: relative14(this.rootDir, path9),
|
|
229274
229277
|
message: "Could not restore file",
|
|
229275
229278
|
artifacts: i3(artifacts)
|
|
229276
229279
|
});
|
|
@@ -229470,7 +229473,7 @@ ${newDependencyLine}`
|
|
|
229470
229473
|
|
|
229471
229474
|
// ../fixing-management/src/fixing-management/pip/pip-socket-upgrade-manager.ts
|
|
229472
229475
|
var import_picomatch8 = __toESM(require_picomatch2(), 1);
|
|
229473
|
-
import { dirname as dirname20,
|
|
229476
|
+
import { dirname as dirname20, resolve as resolve31 } from "node:path";
|
|
229474
229477
|
import assert13 from "node:assert";
|
|
229475
229478
|
import { readFile as readFile27 } from "node:fs/promises";
|
|
229476
229479
|
|
|
@@ -229826,7 +229829,7 @@ function createPep508VersionPatches(file, idx, requirement, oldVersion, upgradeV
|
|
|
229826
229829
|
// ../utils/src/pip-utils.ts
|
|
229827
229830
|
import { existsSync as existsSync19 } from "node:fs";
|
|
229828
229831
|
import { readFile as readFile26 } from "node:fs/promises";
|
|
229829
|
-
import { dirname as dirname19, resolve as resolve30 } from "node:path";
|
|
229832
|
+
import { dirname as dirname19, resolve as resolve30, relative as relative15 } from "node:path";
|
|
229830
229833
|
import util4 from "node:util";
|
|
229831
229834
|
|
|
229832
229835
|
// ../utils/src/python-versions-manager.ts
|
|
@@ -229887,7 +229890,10 @@ async function getPyprojectTomlFilesForLockFile(rootDir, uvLockfile, pyprojectFi
|
|
|
229887
229890
|
const matcher = (0, import_picomatch7.default)(memberPatterns, {
|
|
229888
229891
|
ignore: excludePatterns
|
|
229889
229892
|
});
|
|
229890
|
-
const
|
|
229893
|
+
const absLockDir = resolve30(rootDir, lockDir);
|
|
229894
|
+
const memberTomlFiles = pyprojectFiles.filter(
|
|
229895
|
+
(file) => matcher(relative15(absLockDir, resolve30(rootDir, dirname19(file))) || ".")
|
|
229896
|
+
);
|
|
229891
229897
|
return { rootTomlFile, memberTomlFiles };
|
|
229892
229898
|
}
|
|
229893
229899
|
|
|
@@ -229906,82 +229912,43 @@ var PipSocketUpgradeManager = class {
|
|
|
229906
229912
|
uvLockMatcher = (0, import_picomatch8.default)("uv.lock", { basename: true });
|
|
229907
229913
|
poetryLockMatcher = (0, import_picomatch8.default)("poetry.lock", { basename: true });
|
|
229908
229914
|
async applySocketArtifactUpgrades(ctxt) {
|
|
229909
|
-
const pyprojectTomlFiles = ctxt.manifestFiles.filter((f5) => this.pyprojectTomlMatcher(f5));
|
|
229910
229915
|
const patches = [];
|
|
229911
229916
|
const uvLockFilesToValidate = /* @__PURE__ */ new Set();
|
|
229912
|
-
const
|
|
229917
|
+
const patchedNamesByLockFile = /* @__PURE__ */ new Map();
|
|
229918
|
+
const pyprojectTomlFiles = ctxt.manifestFiles.filter((f5) => this.pyprojectTomlMatcher(f5));
|
|
229919
|
+
const uvLockFiles = ctxt.manifestFiles.filter((f5) => this.uvLockMatcher(f5));
|
|
229920
|
+
const lockFileToRootToml = /* @__PURE__ */ new Map();
|
|
229921
|
+
for (const lockFile of uvLockFiles) {
|
|
229922
|
+
const tomlFiles = await getPyprojectTomlFilesForLockFile(this.rootDir, lockFile, pyprojectTomlFiles);
|
|
229923
|
+
if (!tomlFiles) continue;
|
|
229924
|
+
lockFileToRootToml.set(lockFile, tomlFiles.rootTomlFile);
|
|
229925
|
+
}
|
|
229913
229926
|
const poetryLockArtifacts = /* @__PURE__ */ new Map();
|
|
229914
229927
|
for (const [idx, upgradeVersion] of ctxt.upgrades) {
|
|
229915
229928
|
const artifact = ctxt.artifacts[idx];
|
|
229916
229929
|
assert13(artifact.name);
|
|
229917
229930
|
assert13(artifact.version);
|
|
229918
|
-
const packageName = normalizePackageName(artifact.name);
|
|
229919
229931
|
const directRequirementsTxts = /* @__PURE__ */ new Set();
|
|
229920
229932
|
for (const mf of artifact.manifestFiles ?? []) {
|
|
229921
229933
|
if (this.requirementsTxtMatcher(mf.file)) {
|
|
229922
229934
|
if (ctxt.wsFilter && !ctxt.wsFilter(dirname20(mf.file) || ".")) continue;
|
|
229923
229935
|
directRequirementsTxts.add(mf.file);
|
|
229924
229936
|
patches.push(...await this.createRequirementsTxtDirectDependencyPatches(mf, idx, upgradeVersion, ctxt));
|
|
229937
|
+
} else if (this.pyprojectTomlMatcher(mf.file)) {
|
|
229938
|
+
if (ctxt.wsFilter && !ctxt.wsFilter(dirname20(mf.file) || ".")) continue;
|
|
229939
|
+
patches.push(...await this.createPyprojectTomlDirectDependencyPatches(mf.file, idx, upgradeVersion, ctxt));
|
|
229925
229940
|
} else if (this.uvLockMatcher(mf.file)) {
|
|
229926
|
-
const tomlFiles = await getPyprojectTomlFilesForLockFile(this.rootDir, mf.file, pyprojectTomlFiles);
|
|
229927
|
-
if (!tomlFiles) {
|
|
229928
|
-
ctxt.statusUpdater?.({
|
|
229929
|
-
status: "error",
|
|
229930
|
-
file: mf.file,
|
|
229931
|
-
artifacts: [idx],
|
|
229932
|
-
message: "No pyproject.toml found for uv.lock"
|
|
229933
|
-
});
|
|
229934
|
-
continue;
|
|
229935
|
-
}
|
|
229936
|
-
const { rootTomlFile, memberTomlFiles } = tomlFiles;
|
|
229937
|
-
let depTree = lockFileToDepTree.get(mf.file);
|
|
229938
|
-
if (!depTree) {
|
|
229939
|
-
depTree = await buildDependencyTreesFromUvLock(this.rootDir, mf.file);
|
|
229940
|
-
if (depTree) {
|
|
229941
|
-
lockFileToDepTree.set(mf.file, depTree);
|
|
229942
|
-
} else {
|
|
229943
|
-
ctxt.statusUpdater?.({
|
|
229944
|
-
status: "error",
|
|
229945
|
-
file: mf.file,
|
|
229946
|
-
artifacts: [idx],
|
|
229947
|
-
message: "Failed to parse uv.lock"
|
|
229948
|
-
});
|
|
229949
|
-
continue;
|
|
229950
|
-
}
|
|
229951
|
-
}
|
|
229952
|
-
const lookupKey = getPackageKey(packageName, artifact.version);
|
|
229953
|
-
for (const [projectDir, projectInfo] of depTree) {
|
|
229954
|
-
if (ctxt.wsFilter && !ctxt.wsFilter(projectDir)) continue;
|
|
229955
|
-
const nodesByNameVersion = /* @__PURE__ */ new Map();
|
|
229956
|
-
for (const [, node] of projectInfo.nodes) {
|
|
229957
|
-
const key = getPackageKey(node.packageName, node.version);
|
|
229958
|
-
const existing = nodesByNameVersion.get(key) ?? [];
|
|
229959
|
-
existing.push(node);
|
|
229960
|
-
nodesByNameVersion.set(key, existing);
|
|
229961
|
-
}
|
|
229962
|
-
const matchingNodes = nodesByNameVersion.get(lookupKey) ?? [];
|
|
229963
|
-
const isDirectDep = matchingNodes.some((node) => projectInfo.direct.has(node.nodeKey));
|
|
229964
|
-
if (isDirectDep) {
|
|
229965
|
-
const tomlFile = [rootTomlFile, ...memberTomlFiles ?? []].find(
|
|
229966
|
-
(f5) => (dirname20(f5) || ".") === projectDir
|
|
229967
|
-
);
|
|
229968
|
-
if (tomlFile) {
|
|
229969
|
-
patches.push(
|
|
229970
|
-
...await this.createPyprojectTomlDirectDependencyPatches(tomlFile, idx, upgradeVersion, ctxt)
|
|
229971
|
-
);
|
|
229972
|
-
} else {
|
|
229973
|
-
ctxt.statusUpdater?.({
|
|
229974
|
-
status: "error",
|
|
229975
|
-
file: mf.file,
|
|
229976
|
-
artifacts: [idx],
|
|
229977
|
-
message: `No pyproject.toml found for project at ${projectDir}`
|
|
229978
|
-
});
|
|
229979
|
-
}
|
|
229980
|
-
}
|
|
229981
|
-
}
|
|
229982
229941
|
patches.push(...await this.createUvLockPatches(mf.file, idx, upgradeVersion, ctxt));
|
|
229983
229942
|
uvLockFilesToValidate.add(mf.file);
|
|
229984
|
-
|
|
229943
|
+
const namesSet = patchedNamesByLockFile.get(mf.file) ?? /* @__PURE__ */ new Set();
|
|
229944
|
+
namesSet.add(normalizePackageName(artifact.name));
|
|
229945
|
+
patchedNamesByLockFile.set(mf.file, namesSet);
|
|
229946
|
+
const rootTomlFile = lockFileToRootToml.get(mf.file);
|
|
229947
|
+
if (rootTomlFile) {
|
|
229948
|
+
patches.push(
|
|
229949
|
+
...await this.createOverrideDependencyUpdatePatches(rootTomlFile, idx, upgradeVersion, ctxt)
|
|
229950
|
+
);
|
|
229951
|
+
}
|
|
229985
229952
|
} else if (this.poetryLockMatcher(mf.file)) {
|
|
229986
229953
|
const existing = poetryLockArtifacts.get(mf.file) ?? [];
|
|
229987
229954
|
existing.push(idx);
|
|
@@ -230028,7 +229995,14 @@ var PipSocketUpgradeManager = class {
|
|
|
230028
229995
|
}
|
|
230029
229996
|
}
|
|
230030
229997
|
await this.removeDuplicateUvLockEntries(lockFile, ctxt);
|
|
230031
|
-
const
|
|
229998
|
+
const refreshFlags = Array.from(patchedNamesByLockFile.get(lockFile) ?? []).flatMap((name2) => [
|
|
229999
|
+
"--refresh-package",
|
|
230000
|
+
name2
|
|
230001
|
+
]);
|
|
230002
|
+
const result = await execNeverFail2(
|
|
230003
|
+
["uv", "lock", ...refreshFlags],
|
|
230004
|
+
dirname20(resolve31(this.rootDir, lockFile))
|
|
230005
|
+
);
|
|
230032
230006
|
if (result.error) {
|
|
230033
230007
|
logger.debug("update lockfile stdout", result.stdout);
|
|
230034
230008
|
logger.debug("update lockfile stderr", result.stderr);
|
|
@@ -230566,113 +230540,6 @@ function parseSourceString(source) {
|
|
|
230566
230540
|
}
|
|
230567
230541
|
return void 0;
|
|
230568
230542
|
}
|
|
230569
|
-
async function buildDependencyTreesFromUvLock(rootDir, uvLockFile) {
|
|
230570
|
-
let lockToml;
|
|
230571
|
-
try {
|
|
230572
|
-
const lockContent = await readFile27(resolve31(rootDir, uvLockFile), "utf-8");
|
|
230573
|
-
lockToml = parseTOML2(lockContent);
|
|
230574
|
-
} catch {
|
|
230575
|
-
return void 0;
|
|
230576
|
-
}
|
|
230577
|
-
if (!lockToml) return void 0;
|
|
230578
|
-
const packages = lockToml.package;
|
|
230579
|
-
if (!(packages instanceof TOMLArray)) return void 0;
|
|
230580
|
-
const nodes = /* @__PURE__ */ new Map();
|
|
230581
|
-
const nameToFullKeys = /* @__PURE__ */ new Map();
|
|
230582
|
-
const nameVersionToFullKeys = /* @__PURE__ */ new Map();
|
|
230583
|
-
const localProjectNodeKeys = /* @__PURE__ */ new Map();
|
|
230584
|
-
for (const pkg of packages) {
|
|
230585
|
-
if (!(pkg instanceof TOMLTable)) continue;
|
|
230586
|
-
const nameScalar = pkg.name;
|
|
230587
|
-
const versionScalar = pkg.version;
|
|
230588
|
-
const source = pkg.source;
|
|
230589
|
-
if (!(nameScalar instanceof TOMLScalar) || !(versionScalar instanceof TOMLScalar)) continue;
|
|
230590
|
-
if (typeof nameScalar[value] !== "string" || typeof versionScalar[value] !== "string") continue;
|
|
230591
|
-
const pkgName = nameScalar[value];
|
|
230592
|
-
const pkgVersion = versionScalar[value];
|
|
230593
|
-
const pkgSource = source instanceof TOMLTable ? parseSourceString(source) : void 0;
|
|
230594
|
-
const nodeKey = getPackageKey(pkgName, pkgVersion, pkgSource);
|
|
230595
|
-
const normalizedName = normalizePackageName(pkgName);
|
|
230596
|
-
const node = {
|
|
230597
|
-
packageName: normalizedName,
|
|
230598
|
-
version: pkgVersion,
|
|
230599
|
-
nodeKey,
|
|
230600
|
-
deps: /* @__PURE__ */ new Set()
|
|
230601
|
-
// Populated in pass 2
|
|
230602
|
-
};
|
|
230603
|
-
if (!nodes.has(nodeKey)) {
|
|
230604
|
-
nodes.set(nodeKey, node);
|
|
230605
|
-
}
|
|
230606
|
-
const fullKeys = nameToFullKeys.get(normalizedName) ?? [];
|
|
230607
|
-
fullKeys.push(nodeKey);
|
|
230608
|
-
nameToFullKeys.set(normalizedName, fullKeys);
|
|
230609
|
-
const nameVersionKey = `${normalizedName}==${pkgVersion}`;
|
|
230610
|
-
const nameVersionFullKeys = nameVersionToFullKeys.get(nameVersionKey) ?? [];
|
|
230611
|
-
nameVersionFullKeys.push(nodeKey);
|
|
230612
|
-
nameVersionToFullKeys.set(nameVersionKey, nameVersionFullKeys);
|
|
230613
|
-
if (source instanceof TOMLTable) {
|
|
230614
|
-
const virtualPath = source.virtual;
|
|
230615
|
-
const editablePath = source.editable;
|
|
230616
|
-
if (virtualPath instanceof TOMLScalar && typeof virtualPath[value] === "string") {
|
|
230617
|
-
localProjectNodeKeys.set(join19(dirname20(uvLockFile), virtualPath[value]), nodeKey);
|
|
230618
|
-
} else if (editablePath instanceof TOMLScalar && typeof editablePath[value] === "string") {
|
|
230619
|
-
localProjectNodeKeys.set(join19(dirname20(uvLockFile), editablePath[value]), nodeKey);
|
|
230620
|
-
}
|
|
230621
|
-
}
|
|
230622
|
-
}
|
|
230623
|
-
for (const pkg of packages) {
|
|
230624
|
-
if (!(pkg instanceof TOMLTable)) continue;
|
|
230625
|
-
const nameScalar = pkg.name;
|
|
230626
|
-
const versionScalar = pkg.version;
|
|
230627
|
-
const source = pkg.source;
|
|
230628
|
-
if (!(nameScalar instanceof TOMLScalar) || !(versionScalar instanceof TOMLScalar)) continue;
|
|
230629
|
-
if (typeof nameScalar[value] !== "string" || typeof versionScalar[value] !== "string") continue;
|
|
230630
|
-
const pkgSource = source instanceof TOMLTable ? parseSourceString(source) : void 0;
|
|
230631
|
-
const nodeKey = getPackageKey(nameScalar[value], versionScalar[value], pkgSource);
|
|
230632
|
-
const node = nodes.get(nodeKey);
|
|
230633
|
-
if (!node) continue;
|
|
230634
|
-
const depsArray = pkg.dependencies;
|
|
230635
|
-
if (!(depsArray instanceof TOMLArray)) continue;
|
|
230636
|
-
for (const dep of depsArray) {
|
|
230637
|
-
if (!(dep instanceof TOMLTable)) continue;
|
|
230638
|
-
const depNameScalar = dep.name;
|
|
230639
|
-
if (!(depNameScalar instanceof TOMLScalar) || typeof depNameScalar[value] !== "string") continue;
|
|
230640
|
-
const depName = depNameScalar[value];
|
|
230641
|
-
const depVersionScalar = dep.version;
|
|
230642
|
-
const depSource = dep.source;
|
|
230643
|
-
let resolvedKeys;
|
|
230644
|
-
if (depVersionScalar instanceof TOMLScalar && typeof depVersionScalar[value] === "string" && depSource instanceof TOMLTable) {
|
|
230645
|
-
const depSourceStr = parseSourceString(depSource);
|
|
230646
|
-
resolvedKeys = [getPackageKey(depName, depVersionScalar[value], depSourceStr)];
|
|
230647
|
-
} else if (depVersionScalar instanceof TOMLScalar && typeof depVersionScalar[value] === "string") {
|
|
230648
|
-
const nameVersionKey = `${normalizePackageName(depName)}==${depVersionScalar[value]}`;
|
|
230649
|
-
resolvedKeys = nameVersionToFullKeys.get(nameVersionKey) ?? [];
|
|
230650
|
-
} else {
|
|
230651
|
-
resolvedKeys = nameToFullKeys.get(normalizePackageName(depName)) ?? [];
|
|
230652
|
-
}
|
|
230653
|
-
for (const key of resolvedKeys) {
|
|
230654
|
-
node.deps.add(key);
|
|
230655
|
-
}
|
|
230656
|
-
}
|
|
230657
|
-
}
|
|
230658
|
-
const localProjectNodeKeySet = new Set(localProjectNodeKeys.values());
|
|
230659
|
-
const result = /* @__PURE__ */ new Map();
|
|
230660
|
-
for (const [projectDir, projectNodeKey] of localProjectNodeKeys.entries()) {
|
|
230661
|
-
const projectNode = nodes.get(projectNodeKey);
|
|
230662
|
-
if (!projectNode) {
|
|
230663
|
-
result.set(projectDir, { direct: /* @__PURE__ */ new Set(), nodes });
|
|
230664
|
-
continue;
|
|
230665
|
-
}
|
|
230666
|
-
const resolvedDirect = /* @__PURE__ */ new Set();
|
|
230667
|
-
for (const depKey of projectNode.deps) {
|
|
230668
|
-
if (!localProjectNodeKeySet.has(depKey)) {
|
|
230669
|
-
resolvedDirect.add(depKey);
|
|
230670
|
-
}
|
|
230671
|
-
}
|
|
230672
|
-
result.set(projectDir, { direct: resolvedDirect, nodes });
|
|
230673
|
-
}
|
|
230674
|
-
return result;
|
|
230675
|
-
}
|
|
230676
230543
|
function satisfiestVersionSpecs(version4, versionSpec) {
|
|
230677
230544
|
return pipVersionSatisfiesConstraints(
|
|
230678
230545
|
version4,
|
|
@@ -230681,14 +230548,14 @@ function satisfiestVersionSpecs(version4, versionSpec) {
|
|
|
230681
230548
|
}
|
|
230682
230549
|
|
|
230683
230550
|
// ../fixing-management/src/fixing-management/rubygems/rubygems-socket-upgrade-manager.ts
|
|
230684
|
-
import { dirname as dirname22, relative as
|
|
230551
|
+
import { dirname as dirname22, relative as relative17, resolve as resolve33 } from "node:path";
|
|
230685
230552
|
var import_picomatch9 = __toESM(require_picomatch2(), 1);
|
|
230686
230553
|
import assert14 from "node:assert";
|
|
230687
230554
|
|
|
230688
230555
|
// ../fixing-management/src/fixing-management/rubygems/gemfile-utils.ts
|
|
230689
230556
|
var import_good_enough_parser4 = __toESM(require_cjs(), 1);
|
|
230690
230557
|
init_ruby_lang();
|
|
230691
|
-
import { resolve as resolve32, dirname as dirname21, relative as
|
|
230558
|
+
import { resolve as resolve32, dirname as dirname21, relative as relative16 } from "node:path";
|
|
230692
230559
|
import { existsSync as existsSync20, readFileSync as readFileSync5, readdirSync as readdirSync4 } from "node:fs";
|
|
230693
230560
|
init_gemspec_utils();
|
|
230694
230561
|
var booleanQuery2 = import_good_enough_parser4.query.alt(
|
|
@@ -230797,13 +230664,13 @@ var evalGemfileQuery = import_good_enough_parser4.query.sym("eval_gemfile").join
|
|
|
230797
230664
|
ctx.exprEndOffset = void 0;
|
|
230798
230665
|
if (ctx.depth > 50) {
|
|
230799
230666
|
logger.warn(
|
|
230800
|
-
`Recursion limit hit while evaluating gemfile: ${
|
|
230667
|
+
`Recursion limit hit while evaluating gemfile: ${relative16(ctx.gemfile.rootDir, resolve32(ctx.gemfile.rootDir, ctx.gemfile.file))}`
|
|
230801
230668
|
);
|
|
230802
230669
|
return ctx;
|
|
230803
230670
|
}
|
|
230804
230671
|
if (pathEvaluated === void 0) return ctx;
|
|
230805
230672
|
const rootDir = ctx.gemfile.rootDir;
|
|
230806
|
-
const file =
|
|
230673
|
+
const file = relative16(rootDir, resolve32(rootDir, dirname21(ctx.gemfile.file), pathEvaluated));
|
|
230807
230674
|
if (!existsSync20(resolve32(rootDir, file))) return ctx;
|
|
230808
230675
|
const sourceText = readFileSync5(resolve32(rootDir, file), "utf-8");
|
|
230809
230676
|
const parser2 = import_good_enough_parser4.lang.createLang(lang3);
|
|
@@ -230856,7 +230723,7 @@ var gemspecQuery = import_good_enough_parser4.query.sym("gemspec").opt(
|
|
|
230856
230723
|
).handler((ctx) => {
|
|
230857
230724
|
if (ctx.depth > 50) {
|
|
230858
230725
|
logger.warn(
|
|
230859
|
-
`Recursion limit hit while evaluating gemspec: ${
|
|
230726
|
+
`Recursion limit hit while evaluating gemspec: ${relative16(ctx.gemfile.rootDir, resolve32(ctx.gemfile.rootDir, ctx.gemfile.file))}`
|
|
230860
230727
|
);
|
|
230861
230728
|
ctx.currentGem = void 0;
|
|
230862
230729
|
return ctx;
|
|
@@ -230895,7 +230762,7 @@ var gemspecQuery = import_good_enough_parser4.query.sym("gemspec").opt(
|
|
|
230895
230762
|
if (gemspecFiles.length === 0) return ctx;
|
|
230896
230763
|
const gemspecFile = gemspecFiles[0];
|
|
230897
230764
|
const gemspecFullPath = resolve32(searchDir, gemspecFile);
|
|
230898
|
-
const gemspecRelativePath =
|
|
230765
|
+
const gemspecRelativePath = relative16(rootDir, gemspecFullPath);
|
|
230899
230766
|
try {
|
|
230900
230767
|
const sourceText = readFileSync5(gemspecFullPath, "utf-8");
|
|
230901
230768
|
const gemspec = parseGemspec(rootDir, gemspecRelativePath, sourceText);
|
|
@@ -231271,7 +231138,7 @@ var RubygemsSocketUpgradeManager = class {
|
|
|
231271
231138
|
});
|
|
231272
231139
|
continue;
|
|
231273
231140
|
}
|
|
231274
|
-
const gemfileName =
|
|
231141
|
+
const gemfileName = relative17(this.rootDir, resolve33(this.rootDir, dirname22(mf.file), "Gemfile"));
|
|
231275
231142
|
gemfileToLockfile.set(gemfileName, mf.file);
|
|
231276
231143
|
if (pathGems.length > 0) {
|
|
231277
231144
|
const { gemspecPatches, gemfilePatches } = await this.handleGemspecDependency(
|
|
@@ -231350,14 +231217,14 @@ var RubygemsSocketUpgradeManager = class {
|
|
|
231350
231217
|
await writeFile11(path9, content);
|
|
231351
231218
|
ctxt.statusUpdater?.({
|
|
231352
231219
|
status: "success",
|
|
231353
|
-
file:
|
|
231220
|
+
file: relative17(this.rootDir, path9),
|
|
231354
231221
|
message: "File restored",
|
|
231355
231222
|
artifacts: i3(artifacts)
|
|
231356
231223
|
});
|
|
231357
231224
|
} catch (e) {
|
|
231358
231225
|
ctxt.statusUpdater?.({
|
|
231359
231226
|
status: "error",
|
|
231360
|
-
file:
|
|
231227
|
+
file: relative17(this.rootDir, path9),
|
|
231361
231228
|
message: "Could not restore file",
|
|
231362
231229
|
artifacts: i3(artifacts)
|
|
231363
231230
|
});
|
|
@@ -231614,7 +231481,7 @@ import { resolve as resolve35 } from "path";
|
|
|
231614
231481
|
|
|
231615
231482
|
// ../utils/dist/constants.js
|
|
231616
231483
|
var import_lodash8 = __toESM(require_lodash(), 1);
|
|
231617
|
-
import { dirname as dirname23, join as
|
|
231484
|
+
import { dirname as dirname23, join as join20 } from "node:path";
|
|
231618
231485
|
import { fileURLToPath as fileURLToPath3 } from "node:url";
|
|
231619
231486
|
|
|
231620
231487
|
// ../utils/dist/file-utils.js
|
|
@@ -231622,7 +231489,7 @@ var import_lodash7 = __toESM(require_lodash(), 1);
|
|
|
231622
231489
|
var import_micromatch2 = __toESM(require_micromatch(), 1);
|
|
231623
231490
|
import { existsSync as existsSync21 } from "fs";
|
|
231624
231491
|
import { access as access4, cp as cp3, readdir as readdir4, stat as stat4 } from "fs/promises";
|
|
231625
|
-
import { basename as basename9, join as
|
|
231492
|
+
import { basename as basename9, join as join19, relative as relative18, resolve as resolve34 } from "path";
|
|
231626
231493
|
var { uniq: uniq2 } = import_lodash7.default;
|
|
231627
231494
|
var { isMatch: isMatch2 } = import_micromatch2.default;
|
|
231628
231495
|
function* parents2(dir) {
|
|
@@ -231651,10 +231518,10 @@ var COANA_ROOT = once3(() => {
|
|
|
231651
231518
|
return coanaRoot;
|
|
231652
231519
|
});
|
|
231653
231520
|
var REPOS_PATH = once3(() => {
|
|
231654
|
-
return process.env.REPOS_PATH ??
|
|
231521
|
+
return process.env.REPOS_PATH ?? join20(COANA_ROOT(), "repos");
|
|
231655
231522
|
});
|
|
231656
231523
|
var COANA_REPOS_PATH = once3(() => {
|
|
231657
|
-
return process.env.COANA_REPOS_PATH ??
|
|
231524
|
+
return process.env.COANA_REPOS_PATH ?? join20(REPOS_PATH(), "coana-tech");
|
|
231658
231525
|
});
|
|
231659
231526
|
|
|
231660
231527
|
// ../docker-management/src/constants.ts
|
|
@@ -231668,32 +231535,32 @@ var getImageTag = () => {
|
|
|
231668
231535
|
};
|
|
231669
231536
|
|
|
231670
231537
|
// ../docker-management/src/docker-spec.ts
|
|
231671
|
-
import { join as
|
|
231538
|
+
import { join as join21 } from "path";
|
|
231672
231539
|
var builderSpecs = [
|
|
231673
231540
|
{
|
|
231674
231541
|
name: "maven-builder",
|
|
231675
|
-
file:
|
|
231542
|
+
file: join21("builders", "maven", "Dockerfile"),
|
|
231676
231543
|
isBuilder: true
|
|
231677
231544
|
},
|
|
231678
231545
|
{
|
|
231679
231546
|
name: "python-builder",
|
|
231680
|
-
file:
|
|
231547
|
+
file: join21("builders", "python", "Dockerfile"),
|
|
231681
231548
|
isBuilder: true
|
|
231682
231549
|
},
|
|
231683
231550
|
{
|
|
231684
231551
|
name: "go-builder",
|
|
231685
|
-
file:
|
|
231552
|
+
file: join21("builders", "go", "Dockerfile"),
|
|
231686
231553
|
isBuilder: true
|
|
231687
231554
|
}
|
|
231688
231555
|
];
|
|
231689
231556
|
var packageManagerDockerSpecs = [
|
|
231690
231557
|
{
|
|
231691
231558
|
name: "npm-package-managers",
|
|
231692
|
-
file:
|
|
231559
|
+
file: join21("package-management", "npm", "Dockerfile")
|
|
231693
231560
|
},
|
|
231694
231561
|
{
|
|
231695
231562
|
name: "maven-package-managers",
|
|
231696
|
-
file:
|
|
231563
|
+
file: join21("package-management", "maven", "Dockerfile"),
|
|
231697
231564
|
variants: {
|
|
231698
231565
|
jdk8: {
|
|
231699
231566
|
JDK_URL_AMD64: "https://github.com/adoptium/temurin8-binaries/releases/download/jdk8u442-b06/OpenJDK8U-jdk_x64_linux_hotspot_8u442b06.tar.gz",
|
|
@@ -231718,57 +231585,57 @@ var packageManagerDockerSpecs = [
|
|
|
231718
231585
|
},
|
|
231719
231586
|
{
|
|
231720
231587
|
name: "pip-package-managers",
|
|
231721
|
-
file:
|
|
231588
|
+
file: join21("package-management", "pip", "Dockerfile"),
|
|
231722
231589
|
from: {
|
|
231723
231590
|
name: "python-builder"
|
|
231724
231591
|
}
|
|
231725
231592
|
},
|
|
231726
231593
|
{
|
|
231727
231594
|
name: "go-package-manager",
|
|
231728
|
-
file:
|
|
231595
|
+
file: join21("package-management", "go", "Dockerfile"),
|
|
231729
231596
|
from: {
|
|
231730
231597
|
name: "go-builder"
|
|
231731
231598
|
}
|
|
231732
231599
|
},
|
|
231733
231600
|
{
|
|
231734
231601
|
name: "nuget-package-manager",
|
|
231735
|
-
file:
|
|
231602
|
+
file: join21("package-management", "nuget", "Dockerfile")
|
|
231736
231603
|
},
|
|
231737
231604
|
{
|
|
231738
231605
|
name: "cargo-package-manager",
|
|
231739
|
-
file:
|
|
231606
|
+
file: join21("package-management", "cargo", "Dockerfile")
|
|
231740
231607
|
}
|
|
231741
231608
|
];
|
|
231742
231609
|
var reachabilityAnalyzerDockerSpecs = [
|
|
231743
231610
|
{
|
|
231744
231611
|
name: "jelly-analyzer",
|
|
231745
|
-
file:
|
|
231612
|
+
file: join21("reachability-analyzers", "jelly", "Dockerfile")
|
|
231746
231613
|
},
|
|
231747
231614
|
{
|
|
231748
231615
|
name: "alucard-analyzer",
|
|
231749
|
-
file:
|
|
231616
|
+
file: join21("reachability-analyzers", "alucard", "Dockerfile")
|
|
231750
231617
|
},
|
|
231751
231618
|
{
|
|
231752
231619
|
name: "mambalade-analyzer",
|
|
231753
|
-
file:
|
|
231620
|
+
file: join21("reachability-analyzers", "mambalade", "Dockerfile"),
|
|
231754
231621
|
from: {
|
|
231755
231622
|
name: "python-builder"
|
|
231756
231623
|
}
|
|
231757
231624
|
},
|
|
231758
231625
|
{
|
|
231759
231626
|
name: "goana-analyzer",
|
|
231760
|
-
file:
|
|
231627
|
+
file: join21("reachability-analyzers", "goana", "Dockerfile"),
|
|
231761
231628
|
from: {
|
|
231762
231629
|
name: "go-builder"
|
|
231763
231630
|
}
|
|
231764
231631
|
},
|
|
231765
231632
|
{
|
|
231766
231633
|
name: "cocoa-analyzer",
|
|
231767
|
-
file:
|
|
231634
|
+
file: join21("reachability-analyzers", "cocoa", "Dockerfile")
|
|
231768
231635
|
},
|
|
231769
231636
|
{
|
|
231770
231637
|
name: "rustica-analyzer",
|
|
231771
|
-
file:
|
|
231638
|
+
file: join21("reachability-analyzers", "rustica", "Dockerfile")
|
|
231772
231639
|
}
|
|
231773
231640
|
];
|
|
231774
231641
|
function getAllPackageManagerSpecs() {
|
|
@@ -232061,13 +231928,13 @@ async function detectVariantMaven(projectDir) {
|
|
|
232061
231928
|
|
|
232062
231929
|
// ../docker-management/src/maven/gradle-version-detector.ts
|
|
232063
231930
|
import { existsSync as existsSync22 } from "fs";
|
|
232064
|
-
import { join as
|
|
231931
|
+
import { join as join22 } from "path";
|
|
232065
231932
|
import { readFile as readFile30 } from "fs/promises";
|
|
232066
231933
|
async function detectVariantGradle(projectDir) {
|
|
232067
231934
|
return sanitizeJvmVariant("GRADLE", projectDir, await detect(projectDir));
|
|
232068
231935
|
}
|
|
232069
231936
|
async function detect(projectDir) {
|
|
232070
|
-
const gradleWrapperPropertiesPath =
|
|
231937
|
+
const gradleWrapperPropertiesPath = join22(projectDir, "gradle", "wrapper", "gradle-wrapper.properties");
|
|
232071
231938
|
const gradleWrapperProperties = existsSync22(gradleWrapperPropertiesPath) ? (await readFile30(gradleWrapperPropertiesPath, "utf-8")).split("\n").map((line) => line.trim()).filter((line) => !line.startsWith("#")).filter((line) => line) : void 0;
|
|
232072
231939
|
if (!gradleWrapperProperties) return void 0;
|
|
232073
231940
|
const distributionUrlRegex = /.*gradle-(\d+(\.\d+(\.\d+)?)?)/;
|
|
@@ -232083,13 +231950,13 @@ async function detect(projectDir) {
|
|
|
232083
231950
|
|
|
232084
231951
|
// ../docker-management/src/maven/sbt-version-detector.ts
|
|
232085
231952
|
import { existsSync as existsSync23 } from "fs";
|
|
232086
|
-
import { join as
|
|
231953
|
+
import { join as join23 } from "path";
|
|
232087
231954
|
import { readFile as readFile31 } from "fs/promises";
|
|
232088
231955
|
async function detectVariantSbt(projectDir) {
|
|
232089
231956
|
return sanitizeJvmVariant("SBT", projectDir, await detect2(projectDir));
|
|
232090
231957
|
}
|
|
232091
231958
|
async function detect2(projectDir) {
|
|
232092
|
-
const sbtBuildPropertiesPath =
|
|
231959
|
+
const sbtBuildPropertiesPath = join23(projectDir, "project", "build.properties");
|
|
232093
231960
|
const sbtBuildProperties = existsSync23(sbtBuildPropertiesPath) ? (await readFile31(sbtBuildPropertiesPath, "utf-8")).split("\n").map((line) => line.trim()).filter((line) => !line.startsWith("#")).filter((line) => line) : void 0;
|
|
232094
231961
|
if (!sbtBuildProperties) return void 0;
|
|
232095
231962
|
for (const prop2 of sbtBuildProperties) {
|
|
@@ -232207,7 +232074,7 @@ import { rmSync } from "fs";
|
|
|
232207
232074
|
import { mkdir as mkdir5, readFile as readFile32, writeFile as writeFile12 } from "fs/promises";
|
|
232208
232075
|
import assert15 from "node:assert";
|
|
232209
232076
|
import { platform as platform8 } from "os";
|
|
232210
|
-
import { join as
|
|
232077
|
+
import { join as join26, posix as posix2, relative as relative20, sep as sep3 } from "path";
|
|
232211
232078
|
|
|
232212
232079
|
// ../web-compat-utils/dist/analysis-error-keys.js
|
|
232213
232080
|
var InstallError = class extends Error {
|
|
@@ -232222,10 +232089,10 @@ var InstallError = class extends Error {
|
|
|
232222
232089
|
// ../utils/src/tmp-file.ts
|
|
232223
232090
|
import { rm, mkdtemp, cp as cp4, lstat as lstat2 } from "fs/promises";
|
|
232224
232091
|
import { tmpdir as tmpdir4 } from "os";
|
|
232225
|
-
import { join as
|
|
232092
|
+
import { join as join24, relative as relative19, sep as sep2, extname as extname2 } from "path";
|
|
232226
232093
|
async function createTmpDirectory(prefix) {
|
|
232227
232094
|
try {
|
|
232228
|
-
const tmpDir = await mkdtemp(
|
|
232095
|
+
const tmpDir = await mkdtemp(join24(tmpdir4(), prefix));
|
|
232229
232096
|
return tmpDir;
|
|
232230
232097
|
} catch (err) {
|
|
232231
232098
|
console.log("Error creating tmp directory", err);
|
|
@@ -232259,7 +232126,7 @@ async function copyForNpmAnalysis(srcDir, prefix) {
|
|
|
232259
232126
|
verbatimSymlinks: true,
|
|
232260
232127
|
// Preserve symlinks as symlinks instead of dereferencing them
|
|
232261
232128
|
filter: async (src) => {
|
|
232262
|
-
const relativePath =
|
|
232129
|
+
const relativePath = relative19(srcDir, src);
|
|
232263
232130
|
if (relativePath === "") return true;
|
|
232264
232131
|
const pathSegments = relativePath.split(sep2);
|
|
232265
232132
|
if (pathSegments.some((segment) => EXCLUDED_DIRECTORIES.has(segment))) {
|
|
@@ -232500,7 +232367,7 @@ import { resolve as resolve36 } from "path";
|
|
|
232500
232367
|
|
|
232501
232368
|
// ../utils/src/constants.ts
|
|
232502
232369
|
var import_lodash10 = __toESM(require_lodash(), 1);
|
|
232503
|
-
import { dirname as dirname24, join as
|
|
232370
|
+
import { dirname as dirname24, join as join25 } from "node:path";
|
|
232504
232371
|
import { fileURLToPath as fileURLToPath4 } from "node:url";
|
|
232505
232372
|
var { once: once5 } = import_lodash10.default;
|
|
232506
232373
|
var fileName2 = fileURLToPath4(import.meta.url);
|
|
@@ -232513,10 +232380,10 @@ var COANA_ROOT2 = once5(() => {
|
|
|
232513
232380
|
return coanaRoot;
|
|
232514
232381
|
});
|
|
232515
232382
|
var REPOS_PATH2 = once5(() => {
|
|
232516
|
-
return process.env.REPOS_PATH ??
|
|
232383
|
+
return process.env.REPOS_PATH ?? join25(COANA_ROOT2(), "repos");
|
|
232517
232384
|
});
|
|
232518
232385
|
var COANA_REPOS_PATH2 = once5(() => {
|
|
232519
|
-
return process.env.COANA_REPOS_PATH ??
|
|
232386
|
+
return process.env.COANA_REPOS_PATH ?? join25(REPOS_PATH2(), "coana-tech");
|
|
232520
232387
|
});
|
|
232521
232388
|
var REQUIREMENTS_FILES_SEARCH_DEPTH = 2;
|
|
232522
232389
|
|
|
@@ -232555,7 +232422,7 @@ var { memoize, once: once7, take } = import_lodash12.default;
|
|
|
232555
232422
|
async function getReachabilityAnalyzersScriptPath() {
|
|
232556
232423
|
if (isNexeMode()) {
|
|
232557
232424
|
const extractedPath = await extractTool("reachability-analyzers", "reachability-analyzers-cli.mjs");
|
|
232558
|
-
return
|
|
232425
|
+
return join26(extractedPath, "reachability-analyzers-cli.mjs");
|
|
232559
232426
|
}
|
|
232560
232427
|
return REACHABILITY_ANALYZERS_SCRIPT_PATH();
|
|
232561
232428
|
}
|
|
@@ -232643,7 +232510,7 @@ var OtherModulesCommunicator = class {
|
|
|
232643
232510
|
}
|
|
232644
232511
|
if (cmd === "getWorkspacePathsMultipleSubprojects")
|
|
232645
232512
|
return `${_cmdStr()}: (${packageManagerName}) ${abbreviateList(subprojects, 10)}`;
|
|
232646
|
-
return `${_cmdStr()}: (${packageManagerName}) ${
|
|
232513
|
+
return `${_cmdStr()}: (${packageManagerName}) ${relative20(this.rootWorkingDir, subprojectPath) || "."}`;
|
|
232647
232514
|
}
|
|
232648
232515
|
getSpinnerTextForReachabilityAnalyzerCommand(cmd, ecosystem, subprojectPath, workspacePath) {
|
|
232649
232516
|
function _cmdStr() {
|
|
@@ -232658,10 +232525,10 @@ var OtherModulesCommunicator = class {
|
|
|
232658
232525
|
return "Running reachability analysis on package registry package";
|
|
232659
232526
|
}
|
|
232660
232527
|
}
|
|
232661
|
-
return `${_cmdStr()}: (${ecosystem}) ${
|
|
232528
|
+
return `${_cmdStr()}: (${ecosystem}) ${relative20(this.rootWorkingDir, join26(subprojectPath, workspacePath)) || "."}`;
|
|
232662
232529
|
}
|
|
232663
232530
|
getProjectPath(subprojectPath) {
|
|
232664
|
-
return this.options.runWithoutDocker ? subprojectPath : posix2.resolve("/project",
|
|
232531
|
+
return this.options.runWithoutDocker ? subprojectPath : posix2.resolve("/project", relative20(this.rootWorkingDir, subprojectPath).replaceAll(sep3, posix2.sep));
|
|
232665
232532
|
}
|
|
232666
232533
|
// options shared between package-management and reachability-analyzers
|
|
232667
232534
|
commonOptions = once7(
|
|
@@ -232707,7 +232574,7 @@ var OtherModulesCommunicator = class {
|
|
|
232707
232574
|
async runPackageManagerCommandWithOutput(commandName, packageManagerName, subprojectPath, args2 = [], extraDockerArgs, env) {
|
|
232708
232575
|
const tmpDir = await this.getTmpDirForSubproject(subprojectPath);
|
|
232709
232576
|
const outputFileName = `${v4_default()}-${commandName}-output.json`;
|
|
232710
|
-
const outputFilePathThisProcess =
|
|
232577
|
+
const outputFilePathThisProcess = join26(tmpDir, outputFileName);
|
|
232711
232578
|
const outputFilePathOtherProcess = this.options.runWithoutDocker ? outputFilePathThisProcess : posix2.join(TMP_DIR_IN_DOCKER, outputFileName);
|
|
232712
232579
|
await this.runPackageManagerCommand(
|
|
232713
232580
|
commandName,
|
|
@@ -232745,8 +232612,8 @@ var OtherModulesCommunicator = class {
|
|
|
232745
232612
|
if (isNexeMode()) {
|
|
232746
232613
|
const baseDir = getExtractionBaseDir();
|
|
232747
232614
|
env.COANA_ROOT = baseDir;
|
|
232748
|
-
env.REPOS_PATH =
|
|
232749
|
-
env.COANA_REPOS_PATH =
|
|
232615
|
+
env.REPOS_PATH = join26(baseDir, "repos");
|
|
232616
|
+
env.COANA_REPOS_PATH = join26(baseDir, "repos", "coana-tech");
|
|
232750
232617
|
env.REACHABILITY_ANALYZERS_SCRIPT_PATH = scriptPath;
|
|
232751
232618
|
}
|
|
232752
232619
|
return Spinner.instance().wrap(
|
|
@@ -232784,7 +232651,7 @@ var OtherModulesCommunicator = class {
|
|
|
232784
232651
|
async runReachabilityAnalyzerCommandWithOutput(commandName, ecosystem, subprojectPath, workspacePath, args2, env, rootWorkingDirOverride, displaySubprojectPath, extraDockerArgs) {
|
|
232785
232652
|
const tmpDir = await this.getTmpDirForSubproject(displaySubprojectPath ?? subprojectPath);
|
|
232786
232653
|
const outputFileName = `${v4_default()}-${commandName}-output.json`;
|
|
232787
|
-
const outputFilePathThisProcess =
|
|
232654
|
+
const outputFilePathThisProcess = join26(tmpDir, outputFileName);
|
|
232788
232655
|
const outputFilePathOtherProcess = this.options.runWithoutDocker ? outputFilePathThisProcess : posix2.join(TMP_DIR_IN_DOCKER, outputFileName);
|
|
232789
232656
|
await this.runReachabilityAnalyzerCommand(
|
|
232790
232657
|
commandName,
|
|
@@ -232821,7 +232688,7 @@ var OtherModulesCommunicator = class {
|
|
|
232821
232688
|
"getWorkspacePathsMultipleSubprojects",
|
|
232822
232689
|
packageManagerName,
|
|
232823
232690
|
this.rootWorkingDir,
|
|
232824
|
-
subprojectPaths.map((subprojectPath) =>
|
|
232691
|
+
subprojectPaths.map((subprojectPath) => relative20(this.rootWorkingDir, subprojectPath) || ".")
|
|
232825
232692
|
);
|
|
232826
232693
|
}
|
|
232827
232694
|
async getProvidedArgsForSubproject(subprojectPath, providedOptions) {
|
|
@@ -232829,7 +232696,7 @@ var OtherModulesCommunicator = class {
|
|
|
232829
232696
|
if (providedOptions.type === "providee") {
|
|
232830
232697
|
const tmpDir = await this.getTmpDirForSubproject(subprojectPath);
|
|
232831
232698
|
const providerFileName = "provider.json";
|
|
232832
|
-
const providerFileThisProcess =
|
|
232699
|
+
const providerFileThisProcess = join26(tmpDir, providerFileName);
|
|
232833
232700
|
const providerFileOtherProcess = this.options.runWithoutDocker ? providerFileThisProcess : posix2.join(TMP_DIR_IN_DOCKER, providerFileName);
|
|
232834
232701
|
await writeFile12(providerFileThisProcess, JSON.stringify(providedOptions.provider));
|
|
232835
232702
|
return ["--provider", providerFileOtherProcess];
|
|
@@ -232876,7 +232743,7 @@ var OtherModulesCommunicator = class {
|
|
|
232876
232743
|
await extractAllToolsForNexeMode();
|
|
232877
232744
|
}
|
|
232878
232745
|
const inputFileName = `${v4_default()}-installDependencies-input.json`;
|
|
232879
|
-
const inputFileThisProcess =
|
|
232746
|
+
const inputFileThisProcess = join26(tmpDir, inputFileName);
|
|
232880
232747
|
const inputFileOtherProcess = this.options.runWithoutDocker ? inputFileThisProcess : posix2.join(TMP_DIR_IN_DOCKER, inputFileName);
|
|
232881
232748
|
const preinstallDirOtherProcess = this.options.runWithoutDocker ? preinstallDir : PREINSTALL_DIR_IN_DOCKER;
|
|
232882
232749
|
const extraDockerArgs = this.options.runWithoutDocker ? void 0 : ["-v", `${preinstallDir}:${PREINSTALL_DIR_IN_DOCKER}`];
|
|
@@ -232911,7 +232778,7 @@ var OtherModulesCommunicator = class {
|
|
|
232911
232778
|
await extractAllToolsForNexeMode();
|
|
232912
232779
|
}
|
|
232913
232780
|
const inputFileName = `${v4_default()}-runReachabilityAnalysis-input.json`;
|
|
232914
|
-
const inputFileThisProcess =
|
|
232781
|
+
const inputFileThisProcess = join26(tmpDir, inputFileName);
|
|
232915
232782
|
const inputFileOtherProcess = this.options.runWithoutDocker ? inputFileThisProcess : posix2.join(TMP_DIR_IN_DOCKER, inputFileName);
|
|
232916
232783
|
const preinstallDirOtherProcess = preinstallDir ? this.options.runWithoutDocker ? preinstallDir : PREINSTALL_DIR_IN_DOCKER : void 0;
|
|
232917
232784
|
const extraDockerArgs = preinstallDir && !this.options.runWithoutDocker ? ["-v", `${preinstallDir}:${PREINSTALL_DIR_IN_DOCKER}`] : void 0;
|
|
@@ -232959,7 +232826,7 @@ var setUpGoModuleCache = once7(async () => {
|
|
|
232959
232826
|
execFileSync2("chmod", ["--recursive", "+rw", tmpDir]);
|
|
232960
232827
|
rmSync(tmpDir, { recursive: true, force: true });
|
|
232961
232828
|
});
|
|
232962
|
-
const [upper, work] = [
|
|
232829
|
+
const [upper, work] = [join26(tmpDir, "upper"), join26(tmpDir, "work")];
|
|
232963
232830
|
for (const dir of [upper, work]) await mkdir5(dir);
|
|
232964
232831
|
const o7 = await execNeverFail2(
|
|
232965
232832
|
cmdt`docker volume create --driver local --opt type=overlay
|
|
@@ -234210,21 +234077,21 @@ function getVulnerabilitiesFromReport(report) {
|
|
|
234210
234077
|
var import_packageurl_js = __toESM(require_packageurl_js(), 1);
|
|
234211
234078
|
|
|
234212
234079
|
// dist/cli-upgrade-purl.js
|
|
234213
|
-
import { join as
|
|
234080
|
+
import { join as join29, relative as relative23, resolve as resolve40 } from "node:path";
|
|
234214
234081
|
var import_picomatch10 = __toESM(require_picomatch2(), 1);
|
|
234215
234082
|
|
|
234216
234083
|
// ../project-management/src/project-management/project-manager.ts
|
|
234217
|
-
import { relative as
|
|
234084
|
+
import { relative as relative22, resolve as resolve39 } from "path";
|
|
234218
234085
|
|
|
234219
234086
|
// ../project-management/src/project-management/ecosystem-management/ecosystem-manager.ts
|
|
234220
234087
|
var import_micromatch3 = __toESM(require_micromatch2(), 1);
|
|
234221
234088
|
import { readdir as readdir6 } from "fs/promises";
|
|
234222
|
-
import { join as
|
|
234089
|
+
import { join as join28, relative as relative21, resolve as resolve38 } from "path";
|
|
234223
234090
|
|
|
234224
234091
|
// ../project-management/src/project-management/ecosystem-management/ecosystem-specs.ts
|
|
234225
234092
|
import { existsSync as existsSync25 } from "fs";
|
|
234226
234093
|
import { readdir as readdir5, readFile as readFile33 } from "fs/promises";
|
|
234227
|
-
import { join as
|
|
234094
|
+
import { join as join27, sep as sep4 } from "path";
|
|
234228
234095
|
var specs = {
|
|
234229
234096
|
NPM: [
|
|
234230
234097
|
/* @__PURE__ */ new Map([["package.json", packageManagerIfPackageJSONExistsAndValid("NPM")]]),
|
|
@@ -234255,7 +234122,7 @@ var specs = {
|
|
|
234255
234122
|
[
|
|
234256
234123
|
/^(pyproject.toml|setup.py|requirements.*\.txt)/,
|
|
234257
234124
|
async (projectDir) => {
|
|
234258
|
-
const isPythonProject = await exists(
|
|
234125
|
+
const isPythonProject = await exists(join27(projectDir, "pyproject.toml")) || await exists(join27(projectDir, "setup.py")) && await isSetupPySetuptools(join27(projectDir, "setup.py"));
|
|
234259
234126
|
if (isPythonProject) {
|
|
234260
234127
|
properPythonProjects.push(projectDir + sep4);
|
|
234261
234128
|
return "PIP_REQUIREMENTS";
|
|
@@ -234278,7 +234145,7 @@ var specs = {
|
|
|
234278
234145
|
[
|
|
234279
234146
|
"uv.lock",
|
|
234280
234147
|
async (projectDir) => {
|
|
234281
|
-
if (await exists(
|
|
234148
|
+
if (await exists(join27(projectDir, "pyproject.toml"))) {
|
|
234282
234149
|
logger.warn("uv is not supported yet, using plain pyproject.toml as a fallback");
|
|
234283
234150
|
return "PIP_REQUIREMENTS";
|
|
234284
234151
|
} else logger.error("uv.lock found without pyproject.toml");
|
|
@@ -234299,8 +234166,8 @@ function getEcosystemSpecs(ecosystems) {
|
|
|
234299
234166
|
}
|
|
234300
234167
|
function packageManagerIfPackageJSONExistsAndValid(packageManager) {
|
|
234301
234168
|
return async (projectDir) => {
|
|
234302
|
-
if (!existsSync25(
|
|
234303
|
-
const packageJSONPath =
|
|
234169
|
+
if (!existsSync25(join27(projectDir, "package.json"))) return void 0;
|
|
234170
|
+
const packageJSONPath = join27(projectDir, "package.json");
|
|
234304
234171
|
try {
|
|
234305
234172
|
JSON.parse(await readFile33(packageJSONPath, "utf-8"));
|
|
234306
234173
|
return packageManager;
|
|
@@ -234357,7 +234224,7 @@ var EcosystemManager = class _EcosystemManager {
|
|
|
234357
234224
|
const resolvedProjectDir = resolve38(mainProjectDir, relativeProjectDir);
|
|
234358
234225
|
if (config3.includeDirs.length > 0)
|
|
234359
234226
|
workspacePaths = workspacePaths.filter(
|
|
234360
|
-
(workspacePath) => isMatch3(
|
|
234227
|
+
(workspacePath) => isMatch3(relative21(mainProjectDir, join28(resolvedProjectDir, workspacePath)), config3.includeDirs)
|
|
234361
234228
|
);
|
|
234362
234229
|
workspacePaths.filter((workspacePath) => workspacePath !== ".").forEach((workspacePath) => projectDirsAlreadyCovered.push(resolve38(resolvedProjectDir, workspacePath)));
|
|
234363
234230
|
if (workspacePaths.length > 0)
|
|
@@ -234385,7 +234252,7 @@ var EcosystemManager = class _EcosystemManager {
|
|
|
234385
234252
|
}
|
|
234386
234253
|
}
|
|
234387
234254
|
for (const dir of directoriesToTraverse) {
|
|
234388
|
-
await recHelper(
|
|
234255
|
+
await recHelper(join28(projectDir, dir), true);
|
|
234389
234256
|
}
|
|
234390
234257
|
}
|
|
234391
234258
|
async function getPackageManagerName(projectDir, foundProjectFiles, foundLockFiles) {
|
|
@@ -234398,7 +234265,7 @@ var EcosystemManager = class _EcosystemManager {
|
|
|
234398
234265
|
return typeof packageManagerNameProvider === "function" ? await packageManagerNameProvider(projectDir) : packageManagerNameProvider;
|
|
234399
234266
|
} catch (e) {
|
|
234400
234267
|
if (e instanceof InvalidProjectFileError) {
|
|
234401
|
-
const projectDirRelative =
|
|
234268
|
+
const projectDirRelative = relative21(mainProjectDir, projectDir) || ".";
|
|
234402
234269
|
logger.error(
|
|
234403
234270
|
`Invalid ${e.fileName} file in ${projectDirRelative}. If the project is intentionally invalid, and you want Coana to skip it in the scan, then add "--exclude-dirs ${projectDirRelative}" to the Coana command.`
|
|
234404
234271
|
);
|
|
@@ -234414,7 +234281,7 @@ var EcosystemManager = class _EcosystemManager {
|
|
|
234414
234281
|
const filesAndDirectories = await readdir6(projectDir, { withFileTypes: true });
|
|
234415
234282
|
for (const dirent of filesAndDirectories) {
|
|
234416
234283
|
const fileOrDirectory = dirent.name;
|
|
234417
|
-
const fullPath =
|
|
234284
|
+
const fullPath = join28(projectDir, fileOrDirectory);
|
|
234418
234285
|
if (dirent.isDirectory()) {
|
|
234419
234286
|
if (shouldIgnoreDir(fileOrDirectory) || shouldIgnoreDueToExcludeDirsOrChangedFiles(config3, fullPath))
|
|
234420
234287
|
continue;
|
|
@@ -234441,7 +234308,7 @@ var EcosystemManager = class _EcosystemManager {
|
|
|
234441
234308
|
packageManagerName,
|
|
234442
234309
|
subprojectPath,
|
|
234443
234310
|
workspacePaths: workspacePaths.filter(
|
|
234444
|
-
(workspacePath) => !shouldIgnoreDueToExcludeDirsOrChangedFiles(this.config,
|
|
234311
|
+
(workspacePath) => !shouldIgnoreDueToExcludeDirsOrChangedFiles(this.config, join28(subprojectPath, workspacePath))
|
|
234445
234312
|
)
|
|
234446
234313
|
}));
|
|
234447
234314
|
}
|
|
@@ -234490,13 +234357,13 @@ function shouldIgnoreDir(dir) {
|
|
|
234490
234357
|
return dirsToIgnore.includes(dir);
|
|
234491
234358
|
}
|
|
234492
234359
|
function shouldIgnoreDueToExcludeDirsOrChangedFiles({ mainProjectDir, excludeDirs, changedFiles }, fullPath) {
|
|
234493
|
-
const relativeToProjectDir =
|
|
234360
|
+
const relativeToProjectDir = relative21(mainProjectDir, fullPath) || ".";
|
|
234494
234361
|
return !!(isMatch3(relativeToProjectDir, excludeDirs) || changedFiles && !changedFiles.some((changedFile) => changedFile.startsWith(relativeToProjectDir)));
|
|
234495
234362
|
}
|
|
234496
234363
|
function shouldIncludeWorkspaceForAnalysis(config3, workspaceFullPath) {
|
|
234497
234364
|
if (shouldIgnoreDueToExcludeDirsOrChangedFiles(config3, workspaceFullPath)) return false;
|
|
234498
234365
|
if (config3.includeDirs.length > 0) {
|
|
234499
|
-
const relPath =
|
|
234366
|
+
const relPath = relative21(config3.mainProjectDir, workspaceFullPath);
|
|
234500
234367
|
if (!isMatch3(relPath, config3.includeDirs)) return false;
|
|
234501
234368
|
}
|
|
234502
234369
|
return true;
|
|
@@ -234546,7 +234413,7 @@ var ProjectManager = class _ProjectManager {
|
|
|
234546
234413
|
if (subprojects.length === 0) return void 0;
|
|
234547
234414
|
return ` ${ecosystem}:
|
|
234548
234415
|
${subprojects.map(
|
|
234549
|
-
({ subprojectPath, workspacePaths }) => ` ${
|
|
234416
|
+
({ subprojectPath, workspacePaths }) => ` ${relative22(this.projectDir, subprojectPath) || ". (Root)"}${workspacePaths.length > 1 || workspacePaths[0] !== "." ? ` (${workspacePaths.length} ${ecosystem === "MAVEN" ? "modules" : "workspaces"})` : ""}`
|
|
234550
234417
|
).join("\n")}`;
|
|
234551
234418
|
}).filter((line) => line).join("\n");
|
|
234552
234419
|
const detailsString = Object.entries(this.ecosystemToEcosystemManager).map(([ecosystem, manager]) => {
|
|
@@ -234554,7 +234421,7 @@ ${subprojects.map(
|
|
|
234554
234421
|
if (subprojects.length === 0) return void 0;
|
|
234555
234422
|
const subprojectsString = subprojects.map(({ subprojectPath, workspacePaths, packageManagerName }) => {
|
|
234556
234423
|
if (workspacePaths.length === 1 && workspacePaths[0] === ".") return void 0;
|
|
234557
|
-
return ` ${
|
|
234424
|
+
return ` ${relative22(this.projectDir, subprojectPath) || ". (Root)"}
|
|
234558
234425
|
${workspacePaths.map((ws) => ` ${ws === "." ? ". (Root)" : ws} - ${packageManagerName}`).join("\n")}`;
|
|
234559
234426
|
}).filter((line) => line).join("\n");
|
|
234560
234427
|
if (!subprojectsString) return void 0;
|
|
@@ -234869,7 +234736,7 @@ ${Array.from(upgrades).map(([idx, upgradeVersion]) => ` ${prettyPrintPurlUpgrade
|
|
|
234869
234736
|
warn: "\u26A0\uFE0F",
|
|
234870
234737
|
error: "\u274C"
|
|
234871
234738
|
};
|
|
234872
|
-
logger.info(`${statusIcons[update3.status]} ${update3.message} \u2500 ${
|
|
234739
|
+
logger.info(`${statusIcons[update3.status]} ${update3.message} \u2500 ${relative23(rootDir, resolve40(rootDir, update3.file))}`);
|
|
234873
234740
|
update3.artifacts.forEach((idx, i7) => {
|
|
234874
234741
|
logger.info(`${" ".repeat(3)}${i7 === update3.artifacts.length - 1 ? "\u2514\u2500" : "\u251C\u2500"} ${prettyPrintSocketFactArtifactUpgrade(artifacts[idx], upgrades2.get(idx))}`);
|
|
234875
234742
|
});
|
|
@@ -234937,7 +234804,7 @@ ${total}/${total} workspaces were upgraded successfully.`));
|
|
|
234937
234804
|
const subprojectPromiseQueue = new PromiseQueue(Number(options.concurrency));
|
|
234938
234805
|
supportedSubprojects.forEach((subproject) => {
|
|
234939
234806
|
subprojectPromiseQueue.enqueueTask(async () => {
|
|
234940
|
-
const workspacePathsMatchingGlob = subproject.workspacePaths.filter((wsPath) => wsFilter(
|
|
234807
|
+
const workspacePathsMatchingGlob = subproject.workspacePaths.filter((wsPath) => wsFilter(relative23(rootDir, resolve40(rootDir, subproject.subprojectPath, wsPath)) || "."));
|
|
234941
234808
|
if (workspacePathsMatchingGlob.length === 0)
|
|
234942
234809
|
return;
|
|
234943
234810
|
const filterDescription = options.include !== void 0 || options.exclude !== void 0 ? `matching filters ${options.include ? `include: [${options.include.join(", ")}]` : ""}${options.include && options.exclude ? " " : ""}${options.exclude ? `exclude: [${options.exclude.join(", ")}]` : ""}` : "";
|
|
@@ -234967,7 +234834,7 @@ ${workspacePathsMatchingGlob.map((wsPath) => ` ${wsPath}`).join("\n")}`);
|
|
|
234967
234834
|
});
|
|
234968
234835
|
if (vulnerabilityFixes.length === 0)
|
|
234969
234836
|
return;
|
|
234970
|
-
logger.info(`Found ${vulnerabilityFixes.length} ${vulnerabilityFixes.length === 1 ? "dependency" : "dependencies"} matching upgrade specs for ${
|
|
234837
|
+
logger.info(`Found ${vulnerabilityFixes.length} ${vulnerabilityFixes.length === 1 ? "dependency" : "dependencies"} matching upgrade specs for ${join29(subproject.subprojectPath, wsPath)}`);
|
|
234971
234838
|
workspaceToFixes[wsPath] = [
|
|
234972
234839
|
{
|
|
234973
234840
|
fixId: "dummy",
|
|
@@ -234979,7 +234846,7 @@ ${workspacePathsMatchingGlob.map((wsPath) => ` ${wsPath}`).join("\n")}`);
|
|
|
234979
234846
|
logger.info(`No dependencies matching upgrade specs found for subproject ${subproject.subprojectPath}`);
|
|
234980
234847
|
return;
|
|
234981
234848
|
}
|
|
234982
|
-
await applySecurityFixes(subproject.packageManagerName, rootDir,
|
|
234849
|
+
await applySecurityFixes(subproject.packageManagerName, rootDir, relative23(rootDir, subproject.subprojectPath) || ".", otherModulesCommunicator, workspaceToFixes, fixingData, signalFixApplied);
|
|
234983
234850
|
});
|
|
234984
234851
|
});
|
|
234985
234852
|
await subprojectPromiseQueue.onIdle();
|
|
@@ -234988,7 +234855,7 @@ ${workspacePathsMatchingGlob.map((wsPath) => ` ${wsPath}`).join("\n")}`);
|
|
|
234988
234855
|
}
|
|
234989
234856
|
}
|
|
234990
234857
|
var signalFixApplied = (_fixId, subprojectPath, workspacePath, vulnerabilityFixes) => {
|
|
234991
|
-
logger.info(`Successfully upgraded purls for: ${
|
|
234858
|
+
logger.info(`Successfully upgraded purls for: ${join29(subprojectPath, workspacePath)}`);
|
|
234992
234859
|
logger.info(`Upgraded:
|
|
234993
234860
|
${vulnerabilityFixes.map((fix) => ` ${fix.dependencyName} from ${fix.currentVersion} to ${fix.fixedVersion}`).join("\n")}`);
|
|
234994
234861
|
};
|
|
@@ -235395,7 +235262,7 @@ import { existsSync as existsSync30, writeFileSync as writeFileSync3 } from "fs"
|
|
|
235395
235262
|
import { mkdir as mkdir6, rm as rm3, writeFile as writeFile15 } from "fs/promises";
|
|
235396
235263
|
var import_lodash15 = __toESM(require_lodash(), 1);
|
|
235397
235264
|
import os2 from "os";
|
|
235398
|
-
import { join as
|
|
235265
|
+
import { join as join33, relative as relative24, resolve as resolve42 } from "path";
|
|
235399
235266
|
|
|
235400
235267
|
// ../utils/src/dashboard-api/shared-api.ts
|
|
235401
235268
|
var DashboardAPI = class {
|
|
@@ -236289,7 +236156,7 @@ async function inferExcludeDirsFromSocketConfig(socketConfigFile) {
|
|
|
236289
236156
|
var import_fast_glob = __toESM(require_out4(), 1);
|
|
236290
236157
|
var import_ignore3 = __toESM(require_ignore(), 1);
|
|
236291
236158
|
import { readFile as readFile36 } from "fs/promises";
|
|
236292
|
-
import { join as
|
|
236159
|
+
import { join as join30 } from "path";
|
|
236293
236160
|
var DEFAULT_IGNORE_PATTERNS = [
|
|
236294
236161
|
"**/node_modules/**",
|
|
236295
236162
|
"**/.git/**",
|
|
@@ -236303,7 +236170,7 @@ var DEFAULT_IGNORE_PATTERNS = [
|
|
|
236303
236170
|
];
|
|
236304
236171
|
async function loadGitignore(rootDir) {
|
|
236305
236172
|
try {
|
|
236306
|
-
const gitignorePath =
|
|
236173
|
+
const gitignorePath = join30(rootDir, ".gitignore");
|
|
236307
236174
|
const content = await readFile36(gitignorePath, "utf-8");
|
|
236308
236175
|
return (0, import_ignore3.default)().add(content);
|
|
236309
236176
|
} catch {
|
|
@@ -236488,7 +236355,7 @@ function transformToVulnChainNode(dependencyTree) {
|
|
|
236488
236355
|
}
|
|
236489
236356
|
|
|
236490
236357
|
// dist/internal/socket-mode-helpers-socket-dependency-trees.js
|
|
236491
|
-
import { basename as basename13, dirname as dirname26, join as
|
|
236358
|
+
import { basename as basename13, dirname as dirname26, join as join31, sep as sep5 } from "path";
|
|
236492
236359
|
var REQUIREMENTS_FILES_SEARCH_DEPTH2 = 3;
|
|
236493
236360
|
var venvExcludes = [
|
|
236494
236361
|
"venv",
|
|
@@ -236613,7 +236480,7 @@ async function fetchArtifactsFromSocket(rootWorkingDirectory, manifestsTarHash,
|
|
|
236613
236480
|
for (const file of allFiles) {
|
|
236614
236481
|
const base = basename13(file);
|
|
236615
236482
|
const workspaceDir = dirname26(file) || ".";
|
|
236616
|
-
if (base === "pyproject.toml" || base === "setup.py" && await isSetupPySetuptools(
|
|
236483
|
+
if (base === "pyproject.toml" || base === "setup.py" && await isSetupPySetuptools(join31(rootWorkingDirectory, file))) {
|
|
236617
236484
|
if (!properPythonProjects.includes(workspaceDir)) {
|
|
236618
236485
|
properPythonProjects.push(workspaceDir);
|
|
236619
236486
|
}
|
|
@@ -239182,10 +239049,10 @@ function compareDocumentPosition(nodeA, nodeB) {
|
|
|
239182
239049
|
function uniqueSort(nodes) {
|
|
239183
239050
|
nodes = nodes.filter((node, i7, arr) => !arr.includes(node, i7 + 1));
|
|
239184
239051
|
nodes.sort((a4, b) => {
|
|
239185
|
-
const
|
|
239186
|
-
if (
|
|
239052
|
+
const relative25 = compareDocumentPosition(a4, b);
|
|
239053
|
+
if (relative25 & DocumentPosition.PRECEDING) {
|
|
239187
239054
|
return -1;
|
|
239188
|
-
} else if (
|
|
239055
|
+
} else if (relative25 & DocumentPosition.FOLLOWING) {
|
|
239189
239056
|
return 1;
|
|
239190
239057
|
}
|
|
239191
239058
|
return 0;
|
|
@@ -251044,7 +250911,7 @@ var { root: root2 } = static_exports;
|
|
|
251044
250911
|
// ../utils/src/maven-utils.ts
|
|
251045
250912
|
var import_lodash14 = __toESM(require_lodash(), 1);
|
|
251046
250913
|
import { existsSync as existsSync29, readdirSync as readdirSync5, statSync as statSync5 } from "fs";
|
|
251047
|
-
import { join as
|
|
250914
|
+
import { join as join32 } from "path";
|
|
251048
250915
|
|
|
251049
250916
|
// ../utils/src/download-utils.ts
|
|
251050
250917
|
import { existsSync as existsSync28 } from "fs";
|
|
@@ -252415,7 +252282,7 @@ async function onlineScan(dependencyTree, apiKey, timeout) {
|
|
|
252415
252282
|
}
|
|
252416
252283
|
|
|
252417
252284
|
// dist/version.js
|
|
252418
|
-
var version3 = "15.2.
|
|
252285
|
+
var version3 = "15.2.2";
|
|
252419
252286
|
|
|
252420
252287
|
// dist/cli-core.js
|
|
252421
252288
|
var { mapValues, omit, partition, pickBy: pickBy2 } = import_lodash15.default;
|
|
@@ -252592,8 +252459,8 @@ var CliCore = class {
|
|
|
252592
252459
|
}
|
|
252593
252460
|
async main() {
|
|
252594
252461
|
const tmpDir = await createTmpDirectory("coana-cli-");
|
|
252595
|
-
this.coanaLogPath =
|
|
252596
|
-
this.coanaSocketPath =
|
|
252462
|
+
this.coanaLogPath = join33(tmpDir, "coana-log.txt");
|
|
252463
|
+
this.coanaSocketPath = join33(tmpDir, "coana.sock");
|
|
252597
252464
|
if (this.options.socketMode) {
|
|
252598
252465
|
logger.enableStreamBuffering();
|
|
252599
252466
|
}
|
|
@@ -252787,7 +252654,7 @@ var CliCore = class {
|
|
|
252787
252654
|
if (!isEcosystemToAnalyze) {
|
|
252788
252655
|
logger.info(`Skipping reachability analysis for ecosystem ${getPurlType(ecosystem)} since it is not included in the list of ecosystems to analyze.`);
|
|
252789
252656
|
}
|
|
252790
|
-
const ecosystemPreinstallDir = preinstallDir ?
|
|
252657
|
+
const ecosystemPreinstallDir = preinstallDir ? join33(preinstallDir, ecosystem) : void 0;
|
|
252791
252658
|
const { vulnerabilities, diagnostics, timings } = await this.runReachabilityAnalysisForWorkspaces(
|
|
252792
252659
|
workspaceToAnalysisData,
|
|
252793
252660
|
ecosystemToWorkspaceToVulnerabilities[ecosystem] ?? {},
|
|
@@ -252930,7 +252797,7 @@ var CliCore = class {
|
|
|
252930
252797
|
const { reachabilitySupport, traditionalScaSupport, noSupport } = manager.getSubprojectsWithWorkspacePaths();
|
|
252931
252798
|
await this.dashboardAPI.registerSubprojects([...reachabilitySupport, ...traditionalScaSupport, ...noSupport].map((sp) => ({
|
|
252932
252799
|
...sp,
|
|
252933
|
-
subprojectPath:
|
|
252800
|
+
subprojectPath: relative24(this.rootWorkingDirectory, sp.subprojectPath) || "."
|
|
252934
252801
|
})), this.reportId, this.apiKey);
|
|
252935
252802
|
for (const unsupported of noSupport)
|
|
252936
252803
|
logger.warn(unsupported.unsupportedMsg);
|
|
@@ -252959,7 +252826,7 @@ var CliCore = class {
|
|
|
252959
252826
|
await this.spinner.succeed();
|
|
252960
252827
|
} catch (error) {
|
|
252961
252828
|
if (this.options.ignoreFailingWorkspaces) {
|
|
252962
|
-
const relativeSubprojectPath =
|
|
252829
|
+
const relativeSubprojectPath = relative24(this.rootWorkingDirectory, subprojectAndWsPath.subprojectPath) || ".";
|
|
252963
252830
|
this.failedSubprojects.push({
|
|
252964
252831
|
subproject: relativeSubprojectPath,
|
|
252965
252832
|
error: error.message || "Unknown error"
|
|
@@ -253018,7 +252885,7 @@ Subproject: ${subproject}`);
|
|
|
253018
252885
|
}
|
|
253019
252886
|
async updateSpinnerTextOnNewSubproject(subprojectAndWsPath, numberSubprojects, index2) {
|
|
253020
252887
|
this.spinner.start();
|
|
253021
|
-
const relativeSubprojectPath =
|
|
252888
|
+
const relativeSubprojectPath = relative24(this.rootWorkingDirectory, subprojectAndWsPath.subprojectPath) || ".";
|
|
253022
252889
|
await this.spinner.setText(numberSubprojects > 1 ? `Processing subproject ${relativeSubprojectPath} (${index2 + 1}/${numberSubprojects})${+this.options.concurrency > 1 ? `. May process up to ${+this.options.concurrency - 1} other workspaces in parallel` : ""}` : `Processing ${relativeSubprojectPath}`);
|
|
253023
252890
|
}
|
|
253024
252891
|
async initialize() {
|
|
@@ -253101,7 +252968,7 @@ Subproject: ${subproject}`);
|
|
|
253101
252968
|
return workspaceToAugmentedVulnerabilities[workspacePath] !== void 0;
|
|
253102
252969
|
}).map((workspacePath) => {
|
|
253103
252970
|
return {
|
|
253104
|
-
subprojectPath:
|
|
252971
|
+
subprojectPath: relative24(this.rootWorkingDirectory, subprojectPath) || ".",
|
|
253105
252972
|
workspacePath,
|
|
253106
252973
|
directDependencies: projectInfo[workspacePath].dataForAnalysis.directDependenciesMap ?? {},
|
|
253107
252974
|
vulnerabilities: workspaceToAugmentedVulnerabilities[workspacePath],
|
|
@@ -253178,7 +253045,7 @@ Subproject: ${subproject}`);
|
|
|
253178
253045
|
}
|
|
253179
253046
|
try {
|
|
253180
253047
|
const perProjectEcosystems = ["PIP", "RUBYGEMS", "COMPOSER"];
|
|
253181
|
-
const effectivePreinstallDir = preinstallDir && perProjectEcosystems.includes(ecosystem) ?
|
|
253048
|
+
const effectivePreinstallDir = preinstallDir && perProjectEcosystems.includes(ecosystem) ? join33(preinstallDir, workspacePath.replace(/\//g, "_")) : preinstallDir;
|
|
253182
253049
|
const resAndDiagnostics = await this.runReachabilityAnalysis(
|
|
253183
253050
|
otherModulesCommunicator,
|
|
253184
253051
|
effectiveSubprojectPath,
|
|
@@ -253303,11 +253170,11 @@ Subproject: ${subproject}`);
|
|
|
253303
253170
|
for (const [ecosystem, workspaceToAnalysisData] of Object.entries(ecosystemToWorkspaceToAnalysisData)) {
|
|
253304
253171
|
if (ecosystem === "GO" && this.options.reachContinueOnInstallErrors)
|
|
253305
253172
|
continue;
|
|
253306
|
-
const ecosystemDir =
|
|
253173
|
+
const ecosystemDir = join33(preinstallDir, ecosystem);
|
|
253307
253174
|
await mkdir6(ecosystemDir, { recursive: true });
|
|
253308
253175
|
for (const [workspace, analysisData] of Object.entries(workspaceToAnalysisData)) {
|
|
253309
253176
|
const perProjectEcosystems = ["PIP", "RUBYGEMS", "COMPOSER"];
|
|
253310
|
-
const installDir = perProjectEcosystems.includes(ecosystem) ?
|
|
253177
|
+
const installDir = perProjectEcosystems.includes(ecosystem) ? join33(ecosystemDir, workspace.replace(/\//g, "_")) : ecosystemDir;
|
|
253311
253178
|
if (installDir !== ecosystemDir) {
|
|
253312
253179
|
await mkdir6(installDir, { recursive: true });
|
|
253313
253180
|
}
|
|
@@ -253516,7 +253383,7 @@ Subproject: ${subproject}`);
|
|
|
253516
253383
|
async sendProgress(type, isStartEvent, subprojectPath, workspacePath) {
|
|
253517
253384
|
await this.dashboardAPI.registerCLIProgress({
|
|
253518
253385
|
type,
|
|
253519
|
-
...subprojectPath ? { subprojectPath:
|
|
253386
|
+
...subprojectPath ? { subprojectPath: relative24(this.rootWorkingDirectory, subprojectPath) || "." } : {},
|
|
253520
253387
|
...workspacePath ? { workspacePath } : {}
|
|
253521
253388
|
}, isStartEvent, this.reportId, this.apiKey);
|
|
253522
253389
|
}
|
|
@@ -253573,7 +253440,7 @@ Subproject: ${subproject}`);
|
|
|
253573
253440
|
dependencyTree: workspaceToPlainDependencyTree[workspacePath],
|
|
253574
253441
|
ecosystem: workspaceToPlainDependencyTree[workspacePath].ecosystem ?? "NPM",
|
|
253575
253442
|
workspacePath,
|
|
253576
|
-
subprojectPath:
|
|
253443
|
+
subprojectPath: relative24(rootWorkingDirectory, subprojectPath) || "."
|
|
253577
253444
|
}));
|
|
253578
253445
|
if (this.options.socketMode) {
|
|
253579
253446
|
this.reportDependencyTrees = workspacePaths.map((workspacePath) => ({
|
|
@@ -253581,7 +253448,7 @@ Subproject: ${subproject}`);
|
|
|
253581
253448
|
dependencyTree: projectInfo[workspacePath].dataForAnalysis.data.dependencyTree,
|
|
253582
253449
|
ecosystem: projectInfo[workspacePath].dataForAnalysis.data.dependencyTree.ecosystem ?? "NPM",
|
|
253583
253450
|
workspacePath,
|
|
253584
|
-
subprojectPath:
|
|
253451
|
+
subprojectPath: relative24(rootWorkingDirectory, subprojectPath) || "."
|
|
253585
253452
|
}));
|
|
253586
253453
|
}
|
|
253587
253454
|
if (this.shareWithDashboard)
|
|
@@ -253597,7 +253464,7 @@ Subproject: ${subproject}`);
|
|
|
253597
253464
|
} catch (e) {
|
|
253598
253465
|
logger.error(`Scanning for vulnerabilities failed for subproject ${subprojectPath} in workspace ${workspacePath}`);
|
|
253599
253466
|
if (this.options.ignoreFailingWorkspaces) {
|
|
253600
|
-
const relativeSubprojectPath =
|
|
253467
|
+
const relativeSubprojectPath = relative24(this.rootWorkingDirectory, subprojectPath) || ".";
|
|
253601
253468
|
this.failedWorkspaces.push({
|
|
253602
253469
|
subproject: relativeSubprojectPath,
|
|
253603
253470
|
workspace: workspacePath,
|
|
@@ -253616,7 +253483,7 @@ Subproject: ${subproject}`);
|
|
|
253616
253483
|
}
|
|
253617
253484
|
};
|
|
253618
253485
|
function getRelativeSubprojectPath(subprojectPath, projectDir) {
|
|
253619
|
-
return
|
|
253486
|
+
return relative24(projectDir, subprojectPath) || ".";
|
|
253620
253487
|
}
|
|
253621
253488
|
function getDependencyType(vulnChainDetails, codeAwareScanResults, directDependencies, reachability) {
|
|
253622
253489
|
if (reachability === "UNREACHABLE" || reachability === "UNKNOWN") {
|
|
@@ -253841,8 +253708,8 @@ computeFixesAndUpgradePurlsCmd.name("compute-fixes-and-upgrade-purls").argument(
|
|
|
253841
253708
|
}
|
|
253842
253709
|
options.purlTypes = options.purlTypes?.map((t4) => t4.toLowerCase());
|
|
253843
253710
|
options.packageManagers = normalizeAndValidatePackageManagers(options.packageManagers);
|
|
253844
|
-
const tmpDir = await mkdtemp2(
|
|
253845
|
-
const logFile =
|
|
253711
|
+
const tmpDir = await mkdtemp2(join34(tmpdir5(), "compute-fixes-and-upgrade-purls-"));
|
|
253712
|
+
const logFile = join34(tmpDir, "compute-fixes-and-upgrade-purls.log");
|
|
253846
253713
|
logger.initWinstonLogger(options.debug, logFile);
|
|
253847
253714
|
try {
|
|
253848
253715
|
if (options.minimumReleaseAge) {
|