@qawolf/cli 1.4.0 → 1.4.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/dist/cli.js +997 -839
- package/package.json +3 -2
package/dist/cli.js
CHANGED
|
@@ -4087,7 +4087,7 @@ var require_thread_stream = __commonJS((exports, module) => {
|
|
|
4087
4087
|
var { version: version2 } = require_package();
|
|
4088
4088
|
var { EventEmitter } = __require("events");
|
|
4089
4089
|
var { Worker } = __require("worker_threads");
|
|
4090
|
-
var { join:
|
|
4090
|
+
var { join: join5 } = __require("path");
|
|
4091
4091
|
var { pathToFileURL } = __require("url");
|
|
4092
4092
|
var { wait } = require_wait();
|
|
4093
4093
|
var {
|
|
@@ -4137,7 +4137,7 @@ var require_thread_stream = __commonJS((exports, module) => {
|
|
|
4137
4137
|
function createWorker(stream, opts) {
|
|
4138
4138
|
const { filename, workerData } = opts;
|
|
4139
4139
|
const bundlerOverrides = "__bundlerPathsOverrides" in globalThis ? globalThis.__bundlerPathsOverrides : {};
|
|
4140
|
-
const toExecute = bundlerOverrides["thread-stream-worker"] ||
|
|
4140
|
+
const toExecute = bundlerOverrides["thread-stream-worker"] || join5(__dirname, "lib", "worker.js");
|
|
4141
4141
|
const worker = new Worker(toExecute, {
|
|
4142
4142
|
...opts.workerOpts,
|
|
4143
4143
|
name: opts.workerOpts?.name || "thread-stream",
|
|
@@ -4603,7 +4603,7 @@ var require_transport = __commonJS((exports, module) => {
|
|
|
4603
4603
|
var { createRequire: createRequire2 } = __require("module");
|
|
4604
4604
|
var { existsSync: existsSync2 } = __require("node:fs");
|
|
4605
4605
|
var getCallers = require_caller();
|
|
4606
|
-
var { join:
|
|
4606
|
+
var { join: join5, isAbsolute, sep } = __require("node:path");
|
|
4607
4607
|
var { fileURLToPath } = __require("node:url");
|
|
4608
4608
|
var sleep = require_atomic_sleep();
|
|
4609
4609
|
var onExit = require_on_exit_leak_free();
|
|
@@ -4756,7 +4756,7 @@ var require_transport = __commonJS((exports, module) => {
|
|
|
4756
4756
|
throw new Error("only one of target or targets can be specified");
|
|
4757
4757
|
}
|
|
4758
4758
|
if (targets) {
|
|
4759
|
-
target = bundlerOverrides["pino-worker"] ||
|
|
4759
|
+
target = bundlerOverrides["pino-worker"] || join5(__dirname, "worker.js");
|
|
4760
4760
|
options.targets = targets.filter((dest) => dest.target).map((dest) => {
|
|
4761
4761
|
return {
|
|
4762
4762
|
...dest,
|
|
@@ -4773,7 +4773,7 @@ var require_transport = __commonJS((exports, module) => {
|
|
|
4773
4773
|
});
|
|
4774
4774
|
});
|
|
4775
4775
|
} else if (pipeline) {
|
|
4776
|
-
target = bundlerOverrides["pino-worker"] ||
|
|
4776
|
+
target = bundlerOverrides["pino-worker"] || join5(__dirname, "worker.js");
|
|
4777
4777
|
options.pipelines = [pipeline.map((dest) => {
|
|
4778
4778
|
return {
|
|
4779
4779
|
...dest,
|
|
@@ -4796,7 +4796,7 @@ var require_transport = __commonJS((exports, module) => {
|
|
|
4796
4796
|
return origin;
|
|
4797
4797
|
}
|
|
4798
4798
|
if (origin === "pino/file") {
|
|
4799
|
-
return
|
|
4799
|
+
return join5(__dirname, "..", "file.js");
|
|
4800
4800
|
}
|
|
4801
4801
|
let fixTarget2;
|
|
4802
4802
|
for (const filePath of callers) {
|
|
@@ -5725,7 +5725,7 @@ var require_safe_stable_stringify = __commonJS((exports, module) => {
|
|
|
5725
5725
|
return circularValue;
|
|
5726
5726
|
}
|
|
5727
5727
|
let res = "";
|
|
5728
|
-
let
|
|
5728
|
+
let join5 = ",";
|
|
5729
5729
|
const originalIndentation = indentation;
|
|
5730
5730
|
if (Array.isArray(value)) {
|
|
5731
5731
|
if (value.length === 0) {
|
|
@@ -5739,7 +5739,7 @@ var require_safe_stable_stringify = __commonJS((exports, module) => {
|
|
|
5739
5739
|
indentation += spacer;
|
|
5740
5740
|
res += `
|
|
5741
5741
|
${indentation}`;
|
|
5742
|
-
|
|
5742
|
+
join5 = `,
|
|
5743
5743
|
${indentation}`;
|
|
5744
5744
|
}
|
|
5745
5745
|
const maximumValuesToStringify = Math.min(value.length, maximumBreadth);
|
|
@@ -5747,13 +5747,13 @@ ${indentation}`;
|
|
|
5747
5747
|
for (;i < maximumValuesToStringify - 1; i++) {
|
|
5748
5748
|
const tmp2 = stringifyFnReplacer(String(i), value, stack, replacer, spacer, indentation);
|
|
5749
5749
|
res += tmp2 !== undefined ? tmp2 : "null";
|
|
5750
|
-
res +=
|
|
5750
|
+
res += join5;
|
|
5751
5751
|
}
|
|
5752
5752
|
const tmp = stringifyFnReplacer(String(i), value, stack, replacer, spacer, indentation);
|
|
5753
5753
|
res += tmp !== undefined ? tmp : "null";
|
|
5754
5754
|
if (value.length - 1 > maximumBreadth) {
|
|
5755
5755
|
const removedKeys = value.length - maximumBreadth - 1;
|
|
5756
|
-
res += `${
|
|
5756
|
+
res += `${join5}"... ${getItemCount(removedKeys)} not stringified"`;
|
|
5757
5757
|
}
|
|
5758
5758
|
if (spacer !== "") {
|
|
5759
5759
|
res += `
|
|
@@ -5774,7 +5774,7 @@ ${originalIndentation}`;
|
|
|
5774
5774
|
let separator = "";
|
|
5775
5775
|
if (spacer !== "") {
|
|
5776
5776
|
indentation += spacer;
|
|
5777
|
-
|
|
5777
|
+
join5 = `,
|
|
5778
5778
|
${indentation}`;
|
|
5779
5779
|
whitespace = " ";
|
|
5780
5780
|
}
|
|
@@ -5788,13 +5788,13 @@ ${indentation}`;
|
|
|
5788
5788
|
const tmp = stringifyFnReplacer(key2, value, stack, replacer, spacer, indentation);
|
|
5789
5789
|
if (tmp !== undefined) {
|
|
5790
5790
|
res += `${separator}${strEscape(key2)}:${whitespace}${tmp}`;
|
|
5791
|
-
separator =
|
|
5791
|
+
separator = join5;
|
|
5792
5792
|
}
|
|
5793
5793
|
}
|
|
5794
5794
|
if (keyLength > maximumBreadth) {
|
|
5795
5795
|
const removedKeys = keyLength - maximumBreadth;
|
|
5796
5796
|
res += `${separator}"...":${whitespace}"${getItemCount(removedKeys)} not stringified"`;
|
|
5797
|
-
separator =
|
|
5797
|
+
separator = join5;
|
|
5798
5798
|
}
|
|
5799
5799
|
if (spacer !== "" && separator.length > 1) {
|
|
5800
5800
|
res = `
|
|
@@ -5834,7 +5834,7 @@ ${originalIndentation}`;
|
|
|
5834
5834
|
}
|
|
5835
5835
|
const originalIndentation = indentation;
|
|
5836
5836
|
let res = "";
|
|
5837
|
-
let
|
|
5837
|
+
let join5 = ",";
|
|
5838
5838
|
if (Array.isArray(value)) {
|
|
5839
5839
|
if (value.length === 0) {
|
|
5840
5840
|
return "[]";
|
|
@@ -5847,7 +5847,7 @@ ${originalIndentation}`;
|
|
|
5847
5847
|
indentation += spacer;
|
|
5848
5848
|
res += `
|
|
5849
5849
|
${indentation}`;
|
|
5850
|
-
|
|
5850
|
+
join5 = `,
|
|
5851
5851
|
${indentation}`;
|
|
5852
5852
|
}
|
|
5853
5853
|
const maximumValuesToStringify = Math.min(value.length, maximumBreadth);
|
|
@@ -5855,13 +5855,13 @@ ${indentation}`;
|
|
|
5855
5855
|
for (;i < maximumValuesToStringify - 1; i++) {
|
|
5856
5856
|
const tmp2 = stringifyArrayReplacer(String(i), value[i], stack, replacer, spacer, indentation);
|
|
5857
5857
|
res += tmp2 !== undefined ? tmp2 : "null";
|
|
5858
|
-
res +=
|
|
5858
|
+
res += join5;
|
|
5859
5859
|
}
|
|
5860
5860
|
const tmp = stringifyArrayReplacer(String(i), value[i], stack, replacer, spacer, indentation);
|
|
5861
5861
|
res += tmp !== undefined ? tmp : "null";
|
|
5862
5862
|
if (value.length - 1 > maximumBreadth) {
|
|
5863
5863
|
const removedKeys = value.length - maximumBreadth - 1;
|
|
5864
|
-
res += `${
|
|
5864
|
+
res += `${join5}"... ${getItemCount(removedKeys)} not stringified"`;
|
|
5865
5865
|
}
|
|
5866
5866
|
if (spacer !== "") {
|
|
5867
5867
|
res += `
|
|
@@ -5874,7 +5874,7 @@ ${originalIndentation}`;
|
|
|
5874
5874
|
let whitespace = "";
|
|
5875
5875
|
if (spacer !== "") {
|
|
5876
5876
|
indentation += spacer;
|
|
5877
|
-
|
|
5877
|
+
join5 = `,
|
|
5878
5878
|
${indentation}`;
|
|
5879
5879
|
whitespace = " ";
|
|
5880
5880
|
}
|
|
@@ -5883,7 +5883,7 @@ ${indentation}`;
|
|
|
5883
5883
|
const tmp = stringifyArrayReplacer(key2, value[key2], stack, replacer, spacer, indentation);
|
|
5884
5884
|
if (tmp !== undefined) {
|
|
5885
5885
|
res += `${separator}${strEscape(key2)}:${whitespace}${tmp}`;
|
|
5886
|
-
separator =
|
|
5886
|
+
separator = join5;
|
|
5887
5887
|
}
|
|
5888
5888
|
}
|
|
5889
5889
|
if (spacer !== "" && separator.length > 1) {
|
|
@@ -5940,20 +5940,20 @@ ${originalIndentation}`;
|
|
|
5940
5940
|
indentation += spacer;
|
|
5941
5941
|
let res2 = `
|
|
5942
5942
|
${indentation}`;
|
|
5943
|
-
const
|
|
5943
|
+
const join6 = `,
|
|
5944
5944
|
${indentation}`;
|
|
5945
5945
|
const maximumValuesToStringify = Math.min(value.length, maximumBreadth);
|
|
5946
5946
|
let i = 0;
|
|
5947
5947
|
for (;i < maximumValuesToStringify - 1; i++) {
|
|
5948
5948
|
const tmp2 = stringifyIndent(String(i), value[i], stack, spacer, indentation);
|
|
5949
5949
|
res2 += tmp2 !== undefined ? tmp2 : "null";
|
|
5950
|
-
res2 +=
|
|
5950
|
+
res2 += join6;
|
|
5951
5951
|
}
|
|
5952
5952
|
const tmp = stringifyIndent(String(i), value[i], stack, spacer, indentation);
|
|
5953
5953
|
res2 += tmp !== undefined ? tmp : "null";
|
|
5954
5954
|
if (value.length - 1 > maximumBreadth) {
|
|
5955
5955
|
const removedKeys = value.length - maximumBreadth - 1;
|
|
5956
|
-
res2 += `${
|
|
5956
|
+
res2 += `${join6}"... ${getItemCount(removedKeys)} not stringified"`;
|
|
5957
5957
|
}
|
|
5958
5958
|
res2 += `
|
|
5959
5959
|
${originalIndentation}`;
|
|
@@ -5969,16 +5969,16 @@ ${originalIndentation}`;
|
|
|
5969
5969
|
return '"[Object]"';
|
|
5970
5970
|
}
|
|
5971
5971
|
indentation += spacer;
|
|
5972
|
-
const
|
|
5972
|
+
const join5 = `,
|
|
5973
5973
|
${indentation}`;
|
|
5974
5974
|
let res = "";
|
|
5975
5975
|
let separator = "";
|
|
5976
5976
|
let maximumPropertiesToStringify = Math.min(keyLength, maximumBreadth);
|
|
5977
5977
|
if (isTypedArrayWithEntries(value)) {
|
|
5978
|
-
res += stringifyTypedArray(value,
|
|
5978
|
+
res += stringifyTypedArray(value, join5, maximumBreadth);
|
|
5979
5979
|
keys = keys.slice(value.length);
|
|
5980
5980
|
maximumPropertiesToStringify -= value.length;
|
|
5981
|
-
separator =
|
|
5981
|
+
separator = join5;
|
|
5982
5982
|
}
|
|
5983
5983
|
if (deterministic) {
|
|
5984
5984
|
keys = sort(keys, comparator);
|
|
@@ -5989,13 +5989,13 @@ ${indentation}`;
|
|
|
5989
5989
|
const tmp = stringifyIndent(key2, value[key2], stack, spacer, indentation);
|
|
5990
5990
|
if (tmp !== undefined) {
|
|
5991
5991
|
res += `${separator}${strEscape(key2)}: ${tmp}`;
|
|
5992
|
-
separator =
|
|
5992
|
+
separator = join5;
|
|
5993
5993
|
}
|
|
5994
5994
|
}
|
|
5995
5995
|
if (keyLength > maximumBreadth) {
|
|
5996
5996
|
const removedKeys = keyLength - maximumBreadth;
|
|
5997
5997
|
res += `${separator}"...": "${getItemCount(removedKeys)} not stringified"`;
|
|
5998
|
-
separator =
|
|
5998
|
+
separator = join5;
|
|
5999
5999
|
}
|
|
6000
6000
|
if (separator !== "") {
|
|
6001
6001
|
res = `
|
|
@@ -10517,8 +10517,8 @@ var require_lib2 = __commonJS((exports, module) => {
|
|
|
10517
10517
|
return this;
|
|
10518
10518
|
}
|
|
10519
10519
|
var p3 = this.constructor;
|
|
10520
|
-
return this.then(
|
|
10521
|
-
function
|
|
10520
|
+
return this.then(resolve11, reject2);
|
|
10521
|
+
function resolve11(value) {
|
|
10522
10522
|
function yes() {
|
|
10523
10523
|
return value;
|
|
10524
10524
|
}
|
|
@@ -10671,8 +10671,8 @@ var require_lib2 = __commonJS((exports, module) => {
|
|
|
10671
10671
|
}
|
|
10672
10672
|
return out;
|
|
10673
10673
|
}
|
|
10674
|
-
Promise2.resolve =
|
|
10675
|
-
function
|
|
10674
|
+
Promise2.resolve = resolve10;
|
|
10675
|
+
function resolve10(value) {
|
|
10676
10676
|
if (value instanceof this) {
|
|
10677
10677
|
return value;
|
|
10678
10678
|
}
|
|
@@ -11171,10 +11171,10 @@ var require_utils2 = __commonJS((exports) => {
|
|
|
11171
11171
|
var promise3 = external2.Promise.resolve(inputData).then(function(data) {
|
|
11172
11172
|
var isBlob2 = support.blob && (data instanceof Blob || ["[object File]", "[object Blob]"].indexOf(Object.prototype.toString.call(data)) !== -1);
|
|
11173
11173
|
if (isBlob2 && typeof FileReader !== "undefined") {
|
|
11174
|
-
return new external2.Promise(function(
|
|
11174
|
+
return new external2.Promise(function(resolve10, reject) {
|
|
11175
11175
|
var reader = new FileReader;
|
|
11176
11176
|
reader.onload = function(e) {
|
|
11177
|
-
|
|
11177
|
+
resolve10(e.target.result);
|
|
11178
11178
|
};
|
|
11179
11179
|
reader.onerror = function(e) {
|
|
11180
11180
|
reject(e.target.error);
|
|
@@ -11638,7 +11638,7 @@ var require_StreamHelper = __commonJS((exports, module) => {
|
|
|
11638
11638
|
}
|
|
11639
11639
|
}
|
|
11640
11640
|
function accumulate(helper, updateCallback) {
|
|
11641
|
-
return new external2.Promise(function(
|
|
11641
|
+
return new external2.Promise(function(resolve10, reject) {
|
|
11642
11642
|
var dataArray = [];
|
|
11643
11643
|
var { _internalType: chunkType, _outputType: resultType, _mimeType: mimeType } = helper;
|
|
11644
11644
|
helper.on("data", function(data, meta3) {
|
|
@@ -11652,7 +11652,7 @@ var require_StreamHelper = __commonJS((exports, module) => {
|
|
|
11652
11652
|
}).on("end", function() {
|
|
11653
11653
|
try {
|
|
11654
11654
|
var result = transformZipOutput(resultType, concat(chunkType, dataArray), mimeType);
|
|
11655
|
-
|
|
11655
|
+
resolve10(result);
|
|
11656
11656
|
} catch (e) {
|
|
11657
11657
|
reject(e);
|
|
11658
11658
|
}
|
|
@@ -17228,7 +17228,7 @@ var require_load = __commonJS((exports, module) => {
|
|
|
17228
17228
|
var Crc32Probe = require_Crc32Probe();
|
|
17229
17229
|
var nodejsUtils = require_nodejsUtils();
|
|
17230
17230
|
function checkEntryCRC32(zipEntry) {
|
|
17231
|
-
return new external2.Promise(function(
|
|
17231
|
+
return new external2.Promise(function(resolve10, reject) {
|
|
17232
17232
|
var worker = zipEntry.decompressed.getContentWorker().pipe(new Crc32Probe);
|
|
17233
17233
|
worker.on("error", function(e) {
|
|
17234
17234
|
reject(e);
|
|
@@ -17236,7 +17236,7 @@ var require_load = __commonJS((exports, module) => {
|
|
|
17236
17236
|
if (worker.streamInfo.crc32 !== zipEntry.decompressed.crc32) {
|
|
17237
17237
|
reject(new Error("Corrupted zip : CRC32 mismatch"));
|
|
17238
17238
|
} else {
|
|
17239
|
-
|
|
17239
|
+
resolve10();
|
|
17240
17240
|
}
|
|
17241
17241
|
}).resume();
|
|
17242
17242
|
});
|
|
@@ -19133,14 +19133,14 @@ var init_build = __esm(() => {
|
|
|
19133
19133
|
maskingPatternsConfig = {};
|
|
19134
19134
|
logCache = /* @__PURE__ */ new Set;
|
|
19135
19135
|
originalFactory = import_loglevel.default.methodFactory;
|
|
19136
|
-
getLogger.waitForBuffer = async () => new Promise((
|
|
19136
|
+
getLogger.waitForBuffer = async () => new Promise((resolve10) => {
|
|
19137
19137
|
if (logFile && Array.isArray(logFile.writableBuffer) && logFile.writableBuffer.length !== 0) {
|
|
19138
19138
|
return setTimeout(async () => {
|
|
19139
19139
|
await getLogger.waitForBuffer();
|
|
19140
|
-
|
|
19140
|
+
resolve10();
|
|
19141
19141
|
}, 20);
|
|
19142
19142
|
}
|
|
19143
|
-
|
|
19143
|
+
resolve10();
|
|
19144
19144
|
});
|
|
19145
19145
|
getLogger.setLevel = (name, level) => loggers[name].setLevel(level);
|
|
19146
19146
|
getLogger.clearLogger = () => {
|
|
@@ -20046,9 +20046,9 @@ var require_readdir_glob = __commonJS((exports, module) => {
|
|
|
20046
20046
|
var fs4 = __require("fs");
|
|
20047
20047
|
var { EventEmitter } = __require("events");
|
|
20048
20048
|
var { Minimatch } = require_minimatch();
|
|
20049
|
-
var { resolve:
|
|
20049
|
+
var { resolve: resolve10 } = __require("path");
|
|
20050
20050
|
function readdir3(dir, strict) {
|
|
20051
|
-
return new Promise((
|
|
20051
|
+
return new Promise((resolve11, reject) => {
|
|
20052
20052
|
fs4.readdir(dir, { withFileTypes: true }, (err, files) => {
|
|
20053
20053
|
if (err) {
|
|
20054
20054
|
switch (err.code) {
|
|
@@ -20056,14 +20056,14 @@ var require_readdir_glob = __commonJS((exports, module) => {
|
|
|
20056
20056
|
if (strict) {
|
|
20057
20057
|
reject(err);
|
|
20058
20058
|
} else {
|
|
20059
|
-
|
|
20059
|
+
resolve11([]);
|
|
20060
20060
|
}
|
|
20061
20061
|
break;
|
|
20062
20062
|
case "ENOTSUP":
|
|
20063
20063
|
case "ENOENT":
|
|
20064
20064
|
case "ENAMETOOLONG":
|
|
20065
20065
|
case "UNKNOWN":
|
|
20066
|
-
|
|
20066
|
+
resolve11([]);
|
|
20067
20067
|
break;
|
|
20068
20068
|
case "ELOOP":
|
|
20069
20069
|
default:
|
|
@@ -20071,30 +20071,30 @@ var require_readdir_glob = __commonJS((exports, module) => {
|
|
|
20071
20071
|
break;
|
|
20072
20072
|
}
|
|
20073
20073
|
} else {
|
|
20074
|
-
|
|
20074
|
+
resolve11(files);
|
|
20075
20075
|
}
|
|
20076
20076
|
});
|
|
20077
20077
|
});
|
|
20078
20078
|
}
|
|
20079
20079
|
function stat2(file2, followSymlinks) {
|
|
20080
|
-
return new Promise((
|
|
20080
|
+
return new Promise((resolve11, reject) => {
|
|
20081
20081
|
const statFunc = followSymlinks ? fs4.stat : fs4.lstat;
|
|
20082
20082
|
statFunc(file2, (err, stats) => {
|
|
20083
20083
|
if (err) {
|
|
20084
20084
|
switch (err.code) {
|
|
20085
20085
|
case "ENOENT":
|
|
20086
20086
|
if (followSymlinks) {
|
|
20087
|
-
|
|
20087
|
+
resolve11(stat2(file2, false));
|
|
20088
20088
|
} else {
|
|
20089
|
-
|
|
20089
|
+
resolve11(null);
|
|
20090
20090
|
}
|
|
20091
20091
|
break;
|
|
20092
20092
|
default:
|
|
20093
|
-
|
|
20093
|
+
resolve11(null);
|
|
20094
20094
|
break;
|
|
20095
20095
|
}
|
|
20096
20096
|
} else {
|
|
20097
|
-
|
|
20097
|
+
resolve11(stats);
|
|
20098
20098
|
}
|
|
20099
20099
|
});
|
|
20100
20100
|
});
|
|
@@ -20179,7 +20179,7 @@ var require_readdir_glob = __commonJS((exports, module) => {
|
|
|
20179
20179
|
const skipPatterns = Array.isArray(this.options.skip) ? this.options.skip : [this.options.skip];
|
|
20180
20180
|
this.skipMatchers = skipPatterns.map((skip) => new Minimatch(skip, { dot: true }));
|
|
20181
20181
|
}
|
|
20182
|
-
this.iterator = explore(
|
|
20182
|
+
this.iterator = explore(resolve10(cwd || "."), this.options.follow, this.options.stat, this._shouldSkipDirectory.bind(this));
|
|
20183
20183
|
this.paused = false;
|
|
20184
20184
|
this.inactive = false;
|
|
20185
20185
|
this.aborted = false;
|
|
@@ -20346,11 +20346,11 @@ var require_async = __commonJS((exports, module) => {
|
|
|
20346
20346
|
if (typeof args[arity - 1] === "function") {
|
|
20347
20347
|
return asyncFn.apply(this, args);
|
|
20348
20348
|
}
|
|
20349
|
-
return new Promise((
|
|
20349
|
+
return new Promise((resolve10, reject2) => {
|
|
20350
20350
|
args[arity - 1] = (err, ...cbArgs) => {
|
|
20351
20351
|
if (err)
|
|
20352
20352
|
return reject2(err);
|
|
20353
|
-
|
|
20353
|
+
resolve10(cbArgs.length > 1 ? cbArgs : cbArgs[0]);
|
|
20354
20354
|
};
|
|
20355
20355
|
asyncFn.apply(this, args);
|
|
20356
20356
|
});
|
|
@@ -20605,14 +20605,14 @@ var require_async = __commonJS((exports, module) => {
|
|
|
20605
20605
|
var applyEachSeries = applyEach$1(mapSeries$1);
|
|
20606
20606
|
const PROMISE_SYMBOL = Symbol("promiseCallback");
|
|
20607
20607
|
function promiseCallback() {
|
|
20608
|
-
let
|
|
20608
|
+
let resolve10, reject2;
|
|
20609
20609
|
function callback2(err, ...args) {
|
|
20610
20610
|
if (err)
|
|
20611
20611
|
return reject2(err);
|
|
20612
|
-
|
|
20612
|
+
resolve10(args.length > 1 ? args : args[0]);
|
|
20613
20613
|
}
|
|
20614
20614
|
callback2[PROMISE_SYMBOL] = new Promise((res, rej) => {
|
|
20615
|
-
|
|
20615
|
+
resolve10 = res, reject2 = rej;
|
|
20616
20616
|
});
|
|
20617
20617
|
return callback2;
|
|
20618
20618
|
}
|
|
@@ -20980,8 +20980,8 @@ Source:
|
|
|
20980
20980
|
});
|
|
20981
20981
|
}
|
|
20982
20982
|
if (rejectOnError || !callback2) {
|
|
20983
|
-
return new Promise((
|
|
20984
|
-
res =
|
|
20983
|
+
return new Promise((resolve10, reject2) => {
|
|
20984
|
+
res = resolve10;
|
|
20985
20985
|
rej = reject2;
|
|
20986
20986
|
});
|
|
20987
20987
|
}
|
|
@@ -21020,11 +21020,11 @@ Source:
|
|
|
21020
21020
|
}
|
|
21021
21021
|
const eventMethod = (name) => (handler) => {
|
|
21022
21022
|
if (!handler) {
|
|
21023
|
-
return new Promise((
|
|
21023
|
+
return new Promise((resolve10, reject2) => {
|
|
21024
21024
|
once2(name, (err, data) => {
|
|
21025
21025
|
if (err)
|
|
21026
21026
|
return reject2(err);
|
|
21027
|
-
|
|
21027
|
+
resolve10(data);
|
|
21028
21028
|
});
|
|
21029
21029
|
});
|
|
21030
21030
|
}
|
|
@@ -26584,25 +26584,25 @@ var require_util3 = __commonJS((exports, module) => {
|
|
|
26584
26584
|
};
|
|
26585
26585
|
},
|
|
26586
26586
|
createDeferredPromise: function() {
|
|
26587
|
-
let
|
|
26587
|
+
let resolve10;
|
|
26588
26588
|
let reject;
|
|
26589
26589
|
const promise3 = new Promise((res, rej) => {
|
|
26590
|
-
|
|
26590
|
+
resolve10 = res;
|
|
26591
26591
|
reject = rej;
|
|
26592
26592
|
});
|
|
26593
26593
|
return {
|
|
26594
26594
|
promise: promise3,
|
|
26595
|
-
resolve:
|
|
26595
|
+
resolve: resolve10,
|
|
26596
26596
|
reject
|
|
26597
26597
|
};
|
|
26598
26598
|
},
|
|
26599
26599
|
promisify(fn2) {
|
|
26600
|
-
return new Promise((
|
|
26600
|
+
return new Promise((resolve10, reject) => {
|
|
26601
26601
|
fn2((err, ...args) => {
|
|
26602
26602
|
if (err) {
|
|
26603
26603
|
return reject(err);
|
|
26604
26604
|
}
|
|
26605
|
-
return
|
|
26605
|
+
return resolve10(...args);
|
|
26606
26606
|
});
|
|
26607
26607
|
});
|
|
26608
26608
|
},
|
|
@@ -27392,7 +27392,7 @@ var require_end_of_stream = __commonJS((exports, module) => {
|
|
|
27392
27392
|
validateBoolean(opts.cleanup, "cleanup");
|
|
27393
27393
|
autoCleanup = opts.cleanup;
|
|
27394
27394
|
}
|
|
27395
|
-
return new Promise2((
|
|
27395
|
+
return new Promise2((resolve10, reject) => {
|
|
27396
27396
|
const cleanup = eos(stream, opts, (err) => {
|
|
27397
27397
|
if (autoCleanup) {
|
|
27398
27398
|
cleanup();
|
|
@@ -27400,7 +27400,7 @@ var require_end_of_stream = __commonJS((exports, module) => {
|
|
|
27400
27400
|
if (err) {
|
|
27401
27401
|
reject(err);
|
|
27402
27402
|
} else {
|
|
27403
|
-
|
|
27403
|
+
resolve10();
|
|
27404
27404
|
}
|
|
27405
27405
|
});
|
|
27406
27406
|
});
|
|
@@ -28562,7 +28562,7 @@ var require_readable3 = __commonJS((exports, module) => {
|
|
|
28562
28562
|
error51 = this.readableEnded ? null : new AbortError;
|
|
28563
28563
|
this.destroy(error51);
|
|
28564
28564
|
}
|
|
28565
|
-
return new Promise2((
|
|
28565
|
+
return new Promise2((resolve10, reject) => eos(this, (err) => err && err !== error51 ? reject(err) : resolve10(null)));
|
|
28566
28566
|
};
|
|
28567
28567
|
Readable.prototype.push = function(chunk, encoding) {
|
|
28568
28568
|
return readableAddChunk(this, chunk, encoding, false);
|
|
@@ -29140,12 +29140,12 @@ var require_readable3 = __commonJS((exports, module) => {
|
|
|
29140
29140
|
}
|
|
29141
29141
|
async function* createAsyncIterator(stream, options) {
|
|
29142
29142
|
let callback2 = nop;
|
|
29143
|
-
function next(
|
|
29143
|
+
function next(resolve10) {
|
|
29144
29144
|
if (this === stream) {
|
|
29145
29145
|
callback2();
|
|
29146
29146
|
callback2 = nop;
|
|
29147
29147
|
} else {
|
|
29148
|
-
callback2 =
|
|
29148
|
+
callback2 = resolve10;
|
|
29149
29149
|
}
|
|
29150
29150
|
}
|
|
29151
29151
|
stream.on("readable", next);
|
|
@@ -30181,7 +30181,7 @@ var require_duplexify = __commonJS((exports, module) => {
|
|
|
30181
30181
|
], body);
|
|
30182
30182
|
};
|
|
30183
30183
|
function fromAsyncGen(fn2) {
|
|
30184
|
-
let { promise: promise3, resolve:
|
|
30184
|
+
let { promise: promise3, resolve: resolve10 } = createDeferredPromise();
|
|
30185
30185
|
const ac = new AbortController2;
|
|
30186
30186
|
const signal = ac.signal;
|
|
30187
30187
|
const value = fn2(async function* () {
|
|
@@ -30196,7 +30196,7 @@ var require_duplexify = __commonJS((exports, module) => {
|
|
|
30196
30196
|
throw new AbortError(undefined, {
|
|
30197
30197
|
cause: signal.reason
|
|
30198
30198
|
});
|
|
30199
|
-
({ promise: promise3, resolve:
|
|
30199
|
+
({ promise: promise3, resolve: resolve10 } = createDeferredPromise());
|
|
30200
30200
|
yield chunk;
|
|
30201
30201
|
}
|
|
30202
30202
|
}(), {
|
|
@@ -30205,8 +30205,8 @@ var require_duplexify = __commonJS((exports, module) => {
|
|
|
30205
30205
|
return {
|
|
30206
30206
|
value,
|
|
30207
30207
|
write(chunk, encoding, cb) {
|
|
30208
|
-
const _resolve =
|
|
30209
|
-
|
|
30208
|
+
const _resolve = resolve10;
|
|
30209
|
+
resolve10 = null;
|
|
30210
30210
|
_resolve({
|
|
30211
30211
|
chunk,
|
|
30212
30212
|
done: false,
|
|
@@ -30214,8 +30214,8 @@ var require_duplexify = __commonJS((exports, module) => {
|
|
|
30214
30214
|
});
|
|
30215
30215
|
},
|
|
30216
30216
|
final(cb) {
|
|
30217
|
-
const _resolve =
|
|
30218
|
-
|
|
30217
|
+
const _resolve = resolve10;
|
|
30218
|
+
resolve10 = null;
|
|
30219
30219
|
_resolve({
|
|
30220
30220
|
done: true,
|
|
30221
30221
|
cb
|
|
@@ -30652,7 +30652,7 @@ var require_pipeline = __commonJS((exports, module) => {
|
|
|
30652
30652
|
callback2();
|
|
30653
30653
|
}
|
|
30654
30654
|
};
|
|
30655
|
-
const wait = () => new Promise2((
|
|
30655
|
+
const wait = () => new Promise2((resolve10, reject) => {
|
|
30656
30656
|
if (error51) {
|
|
30657
30657
|
reject(error51);
|
|
30658
30658
|
} else {
|
|
@@ -30660,7 +30660,7 @@ var require_pipeline = __commonJS((exports, module) => {
|
|
|
30660
30660
|
if (error51) {
|
|
30661
30661
|
reject(error51);
|
|
30662
30662
|
} else {
|
|
30663
|
-
|
|
30663
|
+
resolve10();
|
|
30664
30664
|
}
|
|
30665
30665
|
};
|
|
30666
30666
|
}
|
|
@@ -31267,8 +31267,8 @@ var require_operators = __commonJS((exports, module) => {
|
|
|
31267
31267
|
next = null;
|
|
31268
31268
|
}
|
|
31269
31269
|
if (!done && (queue.length >= highWaterMark || cnt >= concurrency)) {
|
|
31270
|
-
await new Promise2((
|
|
31271
|
-
resume =
|
|
31270
|
+
await new Promise2((resolve10) => {
|
|
31271
|
+
resume = resolve10;
|
|
31272
31272
|
});
|
|
31273
31273
|
}
|
|
31274
31274
|
}
|
|
@@ -31302,8 +31302,8 @@ var require_operators = __commonJS((exports, module) => {
|
|
|
31302
31302
|
queue.shift();
|
|
31303
31303
|
maybeResume();
|
|
31304
31304
|
}
|
|
31305
|
-
await new Promise2((
|
|
31306
|
-
next =
|
|
31305
|
+
await new Promise2((resolve10) => {
|
|
31306
|
+
next = resolve10;
|
|
31307
31307
|
});
|
|
31308
31308
|
}
|
|
31309
31309
|
} finally {
|
|
@@ -31555,7 +31555,7 @@ var require_promises = __commonJS((exports, module) => {
|
|
|
31555
31555
|
var { finished } = require_end_of_stream();
|
|
31556
31556
|
require_stream();
|
|
31557
31557
|
function pipeline(...streams) {
|
|
31558
|
-
return new Promise2((
|
|
31558
|
+
return new Promise2((resolve10, reject) => {
|
|
31559
31559
|
let signal;
|
|
31560
31560
|
let end;
|
|
31561
31561
|
const lastArg = streams[streams.length - 1];
|
|
@@ -31568,7 +31568,7 @@ var require_promises = __commonJS((exports, module) => {
|
|
|
31568
31568
|
if (err) {
|
|
31569
31569
|
reject(err);
|
|
31570
31570
|
} else {
|
|
31571
|
-
|
|
31571
|
+
resolve10(value);
|
|
31572
31572
|
}
|
|
31573
31573
|
}, {
|
|
31574
31574
|
signal,
|
|
@@ -35801,10 +35801,10 @@ var require_commonjs3 = __commonJS((exports) => {
|
|
|
35801
35801
|
return this[ENCODING] ? buf.join("") : Buffer.concat(buf, buf.dataLength);
|
|
35802
35802
|
}
|
|
35803
35803
|
async promise() {
|
|
35804
|
-
return new Promise((
|
|
35804
|
+
return new Promise((resolve10, reject) => {
|
|
35805
35805
|
this.on(DESTROYED, () => reject(new Error("stream destroyed")));
|
|
35806
35806
|
this.on("error", (er2) => reject(er2));
|
|
35807
|
-
this.on("end", () =>
|
|
35807
|
+
this.on("end", () => resolve10());
|
|
35808
35808
|
});
|
|
35809
35809
|
}
|
|
35810
35810
|
[Symbol.asyncIterator]() {
|
|
@@ -35823,7 +35823,7 @@ var require_commonjs3 = __commonJS((exports) => {
|
|
|
35823
35823
|
return Promise.resolve({ done: false, value: res });
|
|
35824
35824
|
if (this[EOF])
|
|
35825
35825
|
return stop();
|
|
35826
|
-
let
|
|
35826
|
+
let resolve10;
|
|
35827
35827
|
let reject;
|
|
35828
35828
|
const onerr = (er2) => {
|
|
35829
35829
|
this.off("data", ondata);
|
|
@@ -35837,19 +35837,19 @@ var require_commonjs3 = __commonJS((exports) => {
|
|
|
35837
35837
|
this.off("end", onend);
|
|
35838
35838
|
this.off(DESTROYED, ondestroy);
|
|
35839
35839
|
this.pause();
|
|
35840
|
-
|
|
35840
|
+
resolve10({ value, done: !!this[EOF] });
|
|
35841
35841
|
};
|
|
35842
35842
|
const onend = () => {
|
|
35843
35843
|
this.off("error", onerr);
|
|
35844
35844
|
this.off("data", ondata);
|
|
35845
35845
|
this.off(DESTROYED, ondestroy);
|
|
35846
35846
|
stop();
|
|
35847
|
-
|
|
35847
|
+
resolve10({ done: true, value: undefined });
|
|
35848
35848
|
};
|
|
35849
35849
|
const ondestroy = () => onerr(new Error("stream destroyed"));
|
|
35850
35850
|
return new Promise((res2, rej) => {
|
|
35851
35851
|
reject = rej;
|
|
35852
|
-
|
|
35852
|
+
resolve10 = res2;
|
|
35853
35853
|
this.once(DESTROYED, ondestroy);
|
|
35854
35854
|
this.once("error", onerr);
|
|
35855
35855
|
this.once("end", onend);
|
|
@@ -36597,8 +36597,8 @@ var require_commonjs4 = __commonJS((exports) => {
|
|
|
36597
36597
|
if (this.#asyncReaddirInFlight) {
|
|
36598
36598
|
await this.#asyncReaddirInFlight;
|
|
36599
36599
|
} else {
|
|
36600
|
-
let
|
|
36601
|
-
this.#asyncReaddirInFlight = new Promise((res) =>
|
|
36600
|
+
let resolve10 = () => {};
|
|
36601
|
+
this.#asyncReaddirInFlight = new Promise((res) => resolve10 = res);
|
|
36602
36602
|
try {
|
|
36603
36603
|
for (const e of await this.#fs.promises.readdir(fullpath, {
|
|
36604
36604
|
withFileTypes: true
|
|
@@ -36611,7 +36611,7 @@ var require_commonjs4 = __commonJS((exports) => {
|
|
|
36611
36611
|
children.provisional = 0;
|
|
36612
36612
|
}
|
|
36613
36613
|
this.#asyncReaddirInFlight = undefined;
|
|
36614
|
-
|
|
36614
|
+
resolve10();
|
|
36615
36615
|
}
|
|
36616
36616
|
return children.slice(0, children.provisional);
|
|
36617
36617
|
}
|
|
@@ -39134,25 +39134,25 @@ var require_util4 = __commonJS((exports, module) => {
|
|
|
39134
39134
|
};
|
|
39135
39135
|
},
|
|
39136
39136
|
createDeferredPromise: function() {
|
|
39137
|
-
let
|
|
39137
|
+
let resolve10;
|
|
39138
39138
|
let reject;
|
|
39139
39139
|
const promise3 = new Promise((res, rej) => {
|
|
39140
|
-
|
|
39140
|
+
resolve10 = res;
|
|
39141
39141
|
reject = rej;
|
|
39142
39142
|
});
|
|
39143
39143
|
return {
|
|
39144
39144
|
promise: promise3,
|
|
39145
|
-
resolve:
|
|
39145
|
+
resolve: resolve10,
|
|
39146
39146
|
reject
|
|
39147
39147
|
};
|
|
39148
39148
|
},
|
|
39149
39149
|
promisify(fn2) {
|
|
39150
|
-
return new Promise((
|
|
39150
|
+
return new Promise((resolve10, reject) => {
|
|
39151
39151
|
fn2((err, ...args) => {
|
|
39152
39152
|
if (err) {
|
|
39153
39153
|
return reject(err);
|
|
39154
39154
|
}
|
|
39155
|
-
return
|
|
39155
|
+
return resolve10(...args);
|
|
39156
39156
|
});
|
|
39157
39157
|
});
|
|
39158
39158
|
},
|
|
@@ -39937,7 +39937,7 @@ var require_end_of_stream2 = __commonJS((exports, module) => {
|
|
|
39937
39937
|
validateBoolean(opts.cleanup, "cleanup");
|
|
39938
39938
|
autoCleanup = opts.cleanup;
|
|
39939
39939
|
}
|
|
39940
|
-
return new Promise2((
|
|
39940
|
+
return new Promise2((resolve10, reject) => {
|
|
39941
39941
|
const cleanup = eos(stream, opts, (err) => {
|
|
39942
39942
|
if (autoCleanup) {
|
|
39943
39943
|
cleanup();
|
|
@@ -39945,7 +39945,7 @@ var require_end_of_stream2 = __commonJS((exports, module) => {
|
|
|
39945
39945
|
if (err) {
|
|
39946
39946
|
reject(err);
|
|
39947
39947
|
} else {
|
|
39948
|
-
|
|
39948
|
+
resolve10();
|
|
39949
39949
|
}
|
|
39950
39950
|
});
|
|
39951
39951
|
});
|
|
@@ -40793,7 +40793,7 @@ var require_readable4 = __commonJS((exports, module) => {
|
|
|
40793
40793
|
error51 = this.readableEnded ? null : new AbortError;
|
|
40794
40794
|
this.destroy(error51);
|
|
40795
40795
|
}
|
|
40796
|
-
return new Promise2((
|
|
40796
|
+
return new Promise2((resolve10, reject) => eos(this, (err) => err && err !== error51 ? reject(err) : resolve10(null)));
|
|
40797
40797
|
};
|
|
40798
40798
|
Readable.prototype.push = function(chunk, encoding) {
|
|
40799
40799
|
return readableAddChunk(this, chunk, encoding, false);
|
|
@@ -41371,12 +41371,12 @@ var require_readable4 = __commonJS((exports, module) => {
|
|
|
41371
41371
|
}
|
|
41372
41372
|
async function* createAsyncIterator(stream, options) {
|
|
41373
41373
|
let callback2 = nop;
|
|
41374
|
-
function next(
|
|
41374
|
+
function next(resolve10) {
|
|
41375
41375
|
if (this === stream) {
|
|
41376
41376
|
callback2();
|
|
41377
41377
|
callback2 = nop;
|
|
41378
41378
|
} else {
|
|
41379
|
-
callback2 =
|
|
41379
|
+
callback2 = resolve10;
|
|
41380
41380
|
}
|
|
41381
41381
|
}
|
|
41382
41382
|
stream.on("readable", next);
|
|
@@ -42412,7 +42412,7 @@ var require_duplexify2 = __commonJS((exports, module) => {
|
|
|
42412
42412
|
], body);
|
|
42413
42413
|
};
|
|
42414
42414
|
function fromAsyncGen(fn2) {
|
|
42415
|
-
let { promise: promise3, resolve:
|
|
42415
|
+
let { promise: promise3, resolve: resolve10 } = createDeferredPromise();
|
|
42416
42416
|
const ac = new AbortController2;
|
|
42417
42417
|
const signal = ac.signal;
|
|
42418
42418
|
const value = fn2(async function* () {
|
|
@@ -42427,7 +42427,7 @@ var require_duplexify2 = __commonJS((exports, module) => {
|
|
|
42427
42427
|
throw new AbortError(undefined, {
|
|
42428
42428
|
cause: signal.reason
|
|
42429
42429
|
});
|
|
42430
|
-
({ promise: promise3, resolve:
|
|
42430
|
+
({ promise: promise3, resolve: resolve10 } = createDeferredPromise());
|
|
42431
42431
|
yield chunk;
|
|
42432
42432
|
}
|
|
42433
42433
|
}(), {
|
|
@@ -42436,8 +42436,8 @@ var require_duplexify2 = __commonJS((exports, module) => {
|
|
|
42436
42436
|
return {
|
|
42437
42437
|
value,
|
|
42438
42438
|
write(chunk, encoding, cb) {
|
|
42439
|
-
const _resolve =
|
|
42440
|
-
|
|
42439
|
+
const _resolve = resolve10;
|
|
42440
|
+
resolve10 = null;
|
|
42441
42441
|
_resolve({
|
|
42442
42442
|
chunk,
|
|
42443
42443
|
done: false,
|
|
@@ -42445,8 +42445,8 @@ var require_duplexify2 = __commonJS((exports, module) => {
|
|
|
42445
42445
|
});
|
|
42446
42446
|
},
|
|
42447
42447
|
final(cb) {
|
|
42448
|
-
const _resolve =
|
|
42449
|
-
|
|
42448
|
+
const _resolve = resolve10;
|
|
42449
|
+
resolve10 = null;
|
|
42450
42450
|
_resolve({
|
|
42451
42451
|
done: true,
|
|
42452
42452
|
cb
|
|
@@ -42883,7 +42883,7 @@ var require_pipeline2 = __commonJS((exports, module) => {
|
|
|
42883
42883
|
callback2();
|
|
42884
42884
|
}
|
|
42885
42885
|
};
|
|
42886
|
-
const wait = () => new Promise2((
|
|
42886
|
+
const wait = () => new Promise2((resolve10, reject) => {
|
|
42887
42887
|
if (error51) {
|
|
42888
42888
|
reject(error51);
|
|
42889
42889
|
} else {
|
|
@@ -42891,7 +42891,7 @@ var require_pipeline2 = __commonJS((exports, module) => {
|
|
|
42891
42891
|
if (error51) {
|
|
42892
42892
|
reject(error51);
|
|
42893
42893
|
} else {
|
|
42894
|
-
|
|
42894
|
+
resolve10();
|
|
42895
42895
|
}
|
|
42896
42896
|
};
|
|
42897
42897
|
}
|
|
@@ -43498,8 +43498,8 @@ var require_operators2 = __commonJS((exports, module) => {
|
|
|
43498
43498
|
next = null;
|
|
43499
43499
|
}
|
|
43500
43500
|
if (!done && (queue.length >= highWaterMark || cnt >= concurrency)) {
|
|
43501
|
-
await new Promise2((
|
|
43502
|
-
resume =
|
|
43501
|
+
await new Promise2((resolve10) => {
|
|
43502
|
+
resume = resolve10;
|
|
43503
43503
|
});
|
|
43504
43504
|
}
|
|
43505
43505
|
}
|
|
@@ -43533,8 +43533,8 @@ var require_operators2 = __commonJS((exports, module) => {
|
|
|
43533
43533
|
queue.shift();
|
|
43534
43534
|
maybeResume();
|
|
43535
43535
|
}
|
|
43536
|
-
await new Promise2((
|
|
43537
|
-
next =
|
|
43536
|
+
await new Promise2((resolve10) => {
|
|
43537
|
+
next = resolve10;
|
|
43538
43538
|
});
|
|
43539
43539
|
}
|
|
43540
43540
|
} finally {
|
|
@@ -43786,7 +43786,7 @@ var require_promises2 = __commonJS((exports, module) => {
|
|
|
43786
43786
|
var { finished } = require_end_of_stream2();
|
|
43787
43787
|
require_stream2();
|
|
43788
43788
|
function pipeline(...streams) {
|
|
43789
|
-
return new Promise2((
|
|
43789
|
+
return new Promise2((resolve10, reject) => {
|
|
43790
43790
|
let signal;
|
|
43791
43791
|
let end;
|
|
43792
43792
|
const lastArg = streams[streams.length - 1];
|
|
@@ -43799,7 +43799,7 @@ var require_promises2 = __commonJS((exports, module) => {
|
|
|
43799
43799
|
if (err) {
|
|
43800
43800
|
reject(err);
|
|
43801
43801
|
} else {
|
|
43802
|
-
|
|
43802
|
+
resolve10(value);
|
|
43803
43803
|
}
|
|
43804
43804
|
}, {
|
|
43805
43805
|
signal,
|
|
@@ -44447,11 +44447,11 @@ var require_core = __commonJS((exports, module) => {
|
|
|
44447
44447
|
this._finalize();
|
|
44448
44448
|
}
|
|
44449
44449
|
var self2 = this;
|
|
44450
|
-
return new Promise(function(
|
|
44450
|
+
return new Promise(function(resolve10, reject) {
|
|
44451
44451
|
var errored;
|
|
44452
44452
|
self2._module.on("end", function() {
|
|
44453
44453
|
if (!errored) {
|
|
44454
|
-
|
|
44454
|
+
resolve10();
|
|
44455
44455
|
}
|
|
44456
44456
|
});
|
|
44457
44457
|
self2._module.on("error", function(err) {
|
|
@@ -45397,25 +45397,25 @@ var require_util6 = __commonJS((exports, module) => {
|
|
|
45397
45397
|
};
|
|
45398
45398
|
},
|
|
45399
45399
|
createDeferredPromise: function() {
|
|
45400
|
-
let
|
|
45400
|
+
let resolve10;
|
|
45401
45401
|
let reject;
|
|
45402
45402
|
const promise3 = new Promise((res, rej) => {
|
|
45403
|
-
|
|
45403
|
+
resolve10 = res;
|
|
45404
45404
|
reject = rej;
|
|
45405
45405
|
});
|
|
45406
45406
|
return {
|
|
45407
45407
|
promise: promise3,
|
|
45408
|
-
resolve:
|
|
45408
|
+
resolve: resolve10,
|
|
45409
45409
|
reject
|
|
45410
45410
|
};
|
|
45411
45411
|
},
|
|
45412
45412
|
promisify(fn2) {
|
|
45413
|
-
return new Promise((
|
|
45413
|
+
return new Promise((resolve10, reject) => {
|
|
45414
45414
|
fn2((err, ...args) => {
|
|
45415
45415
|
if (err) {
|
|
45416
45416
|
return reject(err);
|
|
45417
45417
|
}
|
|
45418
|
-
return
|
|
45418
|
+
return resolve10(...args);
|
|
45419
45419
|
});
|
|
45420
45420
|
});
|
|
45421
45421
|
},
|
|
@@ -46200,7 +46200,7 @@ var require_end_of_stream3 = __commonJS((exports, module) => {
|
|
|
46200
46200
|
validateBoolean(opts.cleanup, "cleanup");
|
|
46201
46201
|
autoCleanup = opts.cleanup;
|
|
46202
46202
|
}
|
|
46203
|
-
return new Promise2((
|
|
46203
|
+
return new Promise2((resolve10, reject) => {
|
|
46204
46204
|
const cleanup = eos(stream, opts, (err) => {
|
|
46205
46205
|
if (autoCleanup) {
|
|
46206
46206
|
cleanup();
|
|
@@ -46208,7 +46208,7 @@ var require_end_of_stream3 = __commonJS((exports, module) => {
|
|
|
46208
46208
|
if (err) {
|
|
46209
46209
|
reject(err);
|
|
46210
46210
|
} else {
|
|
46211
|
-
|
|
46211
|
+
resolve10();
|
|
46212
46212
|
}
|
|
46213
46213
|
});
|
|
46214
46214
|
});
|
|
@@ -47056,7 +47056,7 @@ var require_readable5 = __commonJS((exports, module) => {
|
|
|
47056
47056
|
error51 = this.readableEnded ? null : new AbortError;
|
|
47057
47057
|
this.destroy(error51);
|
|
47058
47058
|
}
|
|
47059
|
-
return new Promise2((
|
|
47059
|
+
return new Promise2((resolve10, reject) => eos(this, (err) => err && err !== error51 ? reject(err) : resolve10(null)));
|
|
47060
47060
|
};
|
|
47061
47061
|
Readable.prototype.push = function(chunk, encoding) {
|
|
47062
47062
|
return readableAddChunk(this, chunk, encoding, false);
|
|
@@ -47634,12 +47634,12 @@ var require_readable5 = __commonJS((exports, module) => {
|
|
|
47634
47634
|
}
|
|
47635
47635
|
async function* createAsyncIterator(stream, options) {
|
|
47636
47636
|
let callback2 = nop;
|
|
47637
|
-
function next(
|
|
47637
|
+
function next(resolve10) {
|
|
47638
47638
|
if (this === stream) {
|
|
47639
47639
|
callback2();
|
|
47640
47640
|
callback2 = nop;
|
|
47641
47641
|
} else {
|
|
47642
|
-
callback2 =
|
|
47642
|
+
callback2 = resolve10;
|
|
47643
47643
|
}
|
|
47644
47644
|
}
|
|
47645
47645
|
stream.on("readable", next);
|
|
@@ -48675,7 +48675,7 @@ var require_duplexify3 = __commonJS((exports, module) => {
|
|
|
48675
48675
|
], body);
|
|
48676
48676
|
};
|
|
48677
48677
|
function fromAsyncGen(fn2) {
|
|
48678
|
-
let { promise: promise3, resolve:
|
|
48678
|
+
let { promise: promise3, resolve: resolve10 } = createDeferredPromise();
|
|
48679
48679
|
const ac = new AbortController2;
|
|
48680
48680
|
const signal = ac.signal;
|
|
48681
48681
|
const value = fn2(async function* () {
|
|
@@ -48690,7 +48690,7 @@ var require_duplexify3 = __commonJS((exports, module) => {
|
|
|
48690
48690
|
throw new AbortError(undefined, {
|
|
48691
48691
|
cause: signal.reason
|
|
48692
48692
|
});
|
|
48693
|
-
({ promise: promise3, resolve:
|
|
48693
|
+
({ promise: promise3, resolve: resolve10 } = createDeferredPromise());
|
|
48694
48694
|
yield chunk;
|
|
48695
48695
|
}
|
|
48696
48696
|
}(), {
|
|
@@ -48699,8 +48699,8 @@ var require_duplexify3 = __commonJS((exports, module) => {
|
|
|
48699
48699
|
return {
|
|
48700
48700
|
value,
|
|
48701
48701
|
write(chunk, encoding, cb) {
|
|
48702
|
-
const _resolve =
|
|
48703
|
-
|
|
48702
|
+
const _resolve = resolve10;
|
|
48703
|
+
resolve10 = null;
|
|
48704
48704
|
_resolve({
|
|
48705
48705
|
chunk,
|
|
48706
48706
|
done: false,
|
|
@@ -48708,8 +48708,8 @@ var require_duplexify3 = __commonJS((exports, module) => {
|
|
|
48708
48708
|
});
|
|
48709
48709
|
},
|
|
48710
48710
|
final(cb) {
|
|
48711
|
-
const _resolve =
|
|
48712
|
-
|
|
48711
|
+
const _resolve = resolve10;
|
|
48712
|
+
resolve10 = null;
|
|
48713
48713
|
_resolve({
|
|
48714
48714
|
done: true,
|
|
48715
48715
|
cb
|
|
@@ -49146,7 +49146,7 @@ var require_pipeline3 = __commonJS((exports, module) => {
|
|
|
49146
49146
|
callback2();
|
|
49147
49147
|
}
|
|
49148
49148
|
};
|
|
49149
|
-
const wait = () => new Promise2((
|
|
49149
|
+
const wait = () => new Promise2((resolve10, reject) => {
|
|
49150
49150
|
if (error51) {
|
|
49151
49151
|
reject(error51);
|
|
49152
49152
|
} else {
|
|
@@ -49154,7 +49154,7 @@ var require_pipeline3 = __commonJS((exports, module) => {
|
|
|
49154
49154
|
if (error51) {
|
|
49155
49155
|
reject(error51);
|
|
49156
49156
|
} else {
|
|
49157
|
-
|
|
49157
|
+
resolve10();
|
|
49158
49158
|
}
|
|
49159
49159
|
};
|
|
49160
49160
|
}
|
|
@@ -49761,8 +49761,8 @@ var require_operators3 = __commonJS((exports, module) => {
|
|
|
49761
49761
|
next = null;
|
|
49762
49762
|
}
|
|
49763
49763
|
if (!done && (queue.length >= highWaterMark || cnt >= concurrency)) {
|
|
49764
|
-
await new Promise2((
|
|
49765
|
-
resume =
|
|
49764
|
+
await new Promise2((resolve10) => {
|
|
49765
|
+
resume = resolve10;
|
|
49766
49766
|
});
|
|
49767
49767
|
}
|
|
49768
49768
|
}
|
|
@@ -49796,8 +49796,8 @@ var require_operators3 = __commonJS((exports, module) => {
|
|
|
49796
49796
|
queue.shift();
|
|
49797
49797
|
maybeResume();
|
|
49798
49798
|
}
|
|
49799
|
-
await new Promise2((
|
|
49800
|
-
next =
|
|
49799
|
+
await new Promise2((resolve10) => {
|
|
49800
|
+
next = resolve10;
|
|
49801
49801
|
});
|
|
49802
49802
|
}
|
|
49803
49803
|
} finally {
|
|
@@ -50049,7 +50049,7 @@ var require_promises3 = __commonJS((exports, module) => {
|
|
|
50049
50049
|
var { finished } = require_end_of_stream3();
|
|
50050
50050
|
require_stream3();
|
|
50051
50051
|
function pipeline(...streams) {
|
|
50052
|
-
return new Promise2((
|
|
50052
|
+
return new Promise2((resolve10, reject) => {
|
|
50053
50053
|
let signal;
|
|
50054
50054
|
let end;
|
|
50055
50055
|
const lastArg = streams[streams.length - 1];
|
|
@@ -50062,7 +50062,7 @@ var require_promises3 = __commonJS((exports, module) => {
|
|
|
50062
50062
|
if (err) {
|
|
50063
50063
|
reject(err);
|
|
50064
50064
|
} else {
|
|
50065
|
-
|
|
50065
|
+
resolve10(value);
|
|
50066
50066
|
}
|
|
50067
50067
|
}, {
|
|
50068
50068
|
signal,
|
|
@@ -50954,25 +50954,25 @@ var require_util8 = __commonJS((exports, module) => {
|
|
|
50954
50954
|
};
|
|
50955
50955
|
},
|
|
50956
50956
|
createDeferredPromise: function() {
|
|
50957
|
-
let
|
|
50957
|
+
let resolve10;
|
|
50958
50958
|
let reject;
|
|
50959
50959
|
const promise3 = new Promise((res, rej) => {
|
|
50960
|
-
|
|
50960
|
+
resolve10 = res;
|
|
50961
50961
|
reject = rej;
|
|
50962
50962
|
});
|
|
50963
50963
|
return {
|
|
50964
50964
|
promise: promise3,
|
|
50965
|
-
resolve:
|
|
50965
|
+
resolve: resolve10,
|
|
50966
50966
|
reject
|
|
50967
50967
|
};
|
|
50968
50968
|
},
|
|
50969
50969
|
promisify(fn2) {
|
|
50970
|
-
return new Promise((
|
|
50970
|
+
return new Promise((resolve10, reject) => {
|
|
50971
50971
|
fn2((err, ...args) => {
|
|
50972
50972
|
if (err) {
|
|
50973
50973
|
return reject(err);
|
|
50974
50974
|
}
|
|
50975
|
-
return
|
|
50975
|
+
return resolve10(...args);
|
|
50976
50976
|
});
|
|
50977
50977
|
});
|
|
50978
50978
|
},
|
|
@@ -51757,7 +51757,7 @@ var require_end_of_stream4 = __commonJS((exports, module) => {
|
|
|
51757
51757
|
validateBoolean(opts.cleanup, "cleanup");
|
|
51758
51758
|
autoCleanup = opts.cleanup;
|
|
51759
51759
|
}
|
|
51760
|
-
return new Promise2((
|
|
51760
|
+
return new Promise2((resolve10, reject) => {
|
|
51761
51761
|
const cleanup = eos(stream, opts, (err) => {
|
|
51762
51762
|
if (autoCleanup) {
|
|
51763
51763
|
cleanup();
|
|
@@ -51765,7 +51765,7 @@ var require_end_of_stream4 = __commonJS((exports, module) => {
|
|
|
51765
51765
|
if (err) {
|
|
51766
51766
|
reject(err);
|
|
51767
51767
|
} else {
|
|
51768
|
-
|
|
51768
|
+
resolve10();
|
|
51769
51769
|
}
|
|
51770
51770
|
});
|
|
51771
51771
|
});
|
|
@@ -52613,7 +52613,7 @@ var require_readable6 = __commonJS((exports, module) => {
|
|
|
52613
52613
|
error51 = this.readableEnded ? null : new AbortError;
|
|
52614
52614
|
this.destroy(error51);
|
|
52615
52615
|
}
|
|
52616
|
-
return new Promise2((
|
|
52616
|
+
return new Promise2((resolve10, reject) => eos(this, (err) => err && err !== error51 ? reject(err) : resolve10(null)));
|
|
52617
52617
|
};
|
|
52618
52618
|
Readable.prototype.push = function(chunk, encoding) {
|
|
52619
52619
|
return readableAddChunk(this, chunk, encoding, false);
|
|
@@ -53191,12 +53191,12 @@ var require_readable6 = __commonJS((exports, module) => {
|
|
|
53191
53191
|
}
|
|
53192
53192
|
async function* createAsyncIterator(stream, options) {
|
|
53193
53193
|
let callback2 = nop;
|
|
53194
|
-
function next(
|
|
53194
|
+
function next(resolve10) {
|
|
53195
53195
|
if (this === stream) {
|
|
53196
53196
|
callback2();
|
|
53197
53197
|
callback2 = nop;
|
|
53198
53198
|
} else {
|
|
53199
|
-
callback2 =
|
|
53199
|
+
callback2 = resolve10;
|
|
53200
53200
|
}
|
|
53201
53201
|
}
|
|
53202
53202
|
stream.on("readable", next);
|
|
@@ -54232,7 +54232,7 @@ var require_duplexify4 = __commonJS((exports, module) => {
|
|
|
54232
54232
|
], body);
|
|
54233
54233
|
};
|
|
54234
54234
|
function fromAsyncGen(fn2) {
|
|
54235
|
-
let { promise: promise3, resolve:
|
|
54235
|
+
let { promise: promise3, resolve: resolve10 } = createDeferredPromise();
|
|
54236
54236
|
const ac = new AbortController2;
|
|
54237
54237
|
const signal = ac.signal;
|
|
54238
54238
|
const value = fn2(async function* () {
|
|
@@ -54247,7 +54247,7 @@ var require_duplexify4 = __commonJS((exports, module) => {
|
|
|
54247
54247
|
throw new AbortError(undefined, {
|
|
54248
54248
|
cause: signal.reason
|
|
54249
54249
|
});
|
|
54250
|
-
({ promise: promise3, resolve:
|
|
54250
|
+
({ promise: promise3, resolve: resolve10 } = createDeferredPromise());
|
|
54251
54251
|
yield chunk;
|
|
54252
54252
|
}
|
|
54253
54253
|
}(), {
|
|
@@ -54256,8 +54256,8 @@ var require_duplexify4 = __commonJS((exports, module) => {
|
|
|
54256
54256
|
return {
|
|
54257
54257
|
value,
|
|
54258
54258
|
write(chunk, encoding, cb) {
|
|
54259
|
-
const _resolve =
|
|
54260
|
-
|
|
54259
|
+
const _resolve = resolve10;
|
|
54260
|
+
resolve10 = null;
|
|
54261
54261
|
_resolve({
|
|
54262
54262
|
chunk,
|
|
54263
54263
|
done: false,
|
|
@@ -54265,8 +54265,8 @@ var require_duplexify4 = __commonJS((exports, module) => {
|
|
|
54265
54265
|
});
|
|
54266
54266
|
},
|
|
54267
54267
|
final(cb) {
|
|
54268
|
-
const _resolve =
|
|
54269
|
-
|
|
54268
|
+
const _resolve = resolve10;
|
|
54269
|
+
resolve10 = null;
|
|
54270
54270
|
_resolve({
|
|
54271
54271
|
done: true,
|
|
54272
54272
|
cb
|
|
@@ -54703,7 +54703,7 @@ var require_pipeline4 = __commonJS((exports, module) => {
|
|
|
54703
54703
|
callback2();
|
|
54704
54704
|
}
|
|
54705
54705
|
};
|
|
54706
|
-
const wait = () => new Promise2((
|
|
54706
|
+
const wait = () => new Promise2((resolve10, reject) => {
|
|
54707
54707
|
if (error51) {
|
|
54708
54708
|
reject(error51);
|
|
54709
54709
|
} else {
|
|
@@ -54711,7 +54711,7 @@ var require_pipeline4 = __commonJS((exports, module) => {
|
|
|
54711
54711
|
if (error51) {
|
|
54712
54712
|
reject(error51);
|
|
54713
54713
|
} else {
|
|
54714
|
-
|
|
54714
|
+
resolve10();
|
|
54715
54715
|
}
|
|
54716
54716
|
};
|
|
54717
54717
|
}
|
|
@@ -55318,8 +55318,8 @@ var require_operators4 = __commonJS((exports, module) => {
|
|
|
55318
55318
|
next = null;
|
|
55319
55319
|
}
|
|
55320
55320
|
if (!done && (queue.length >= highWaterMark || cnt >= concurrency)) {
|
|
55321
|
-
await new Promise2((
|
|
55322
|
-
resume =
|
|
55321
|
+
await new Promise2((resolve10) => {
|
|
55322
|
+
resume = resolve10;
|
|
55323
55323
|
});
|
|
55324
55324
|
}
|
|
55325
55325
|
}
|
|
@@ -55353,8 +55353,8 @@ var require_operators4 = __commonJS((exports, module) => {
|
|
|
55353
55353
|
queue.shift();
|
|
55354
55354
|
maybeResume();
|
|
55355
55355
|
}
|
|
55356
|
-
await new Promise2((
|
|
55357
|
-
next =
|
|
55356
|
+
await new Promise2((resolve10) => {
|
|
55357
|
+
next = resolve10;
|
|
55358
55358
|
});
|
|
55359
55359
|
}
|
|
55360
55360
|
} finally {
|
|
@@ -55606,7 +55606,7 @@ var require_promises4 = __commonJS((exports, module) => {
|
|
|
55606
55606
|
var { finished } = require_end_of_stream4();
|
|
55607
55607
|
require_stream4();
|
|
55608
55608
|
function pipeline(...streams) {
|
|
55609
|
-
return new Promise2((
|
|
55609
|
+
return new Promise2((resolve10, reject) => {
|
|
55610
55610
|
let signal;
|
|
55611
55611
|
let end;
|
|
55612
55612
|
const lastArg = streams[streams.length - 1];
|
|
@@ -55619,7 +55619,7 @@ var require_promises4 = __commonJS((exports, module) => {
|
|
|
55619
55619
|
if (err) {
|
|
55620
55620
|
reject(err);
|
|
55621
55621
|
} else {
|
|
55622
|
-
|
|
55622
|
+
resolve10(value);
|
|
55623
55623
|
}
|
|
55624
55624
|
}, {
|
|
55625
55625
|
signal,
|
|
@@ -57564,8 +57564,8 @@ var require_streamx = __commonJS((exports, module) => {
|
|
|
57564
57564
|
return this;
|
|
57565
57565
|
},
|
|
57566
57566
|
next() {
|
|
57567
|
-
return new Promise(function(
|
|
57568
|
-
promiseResolve =
|
|
57567
|
+
return new Promise(function(resolve10, reject) {
|
|
57568
|
+
promiseResolve = resolve10;
|
|
57569
57569
|
promiseReject = reject;
|
|
57570
57570
|
const data = stream.read();
|
|
57571
57571
|
if (data !== null)
|
|
@@ -57602,14 +57602,14 @@ var require_streamx = __commonJS((exports, module) => {
|
|
|
57602
57602
|
}
|
|
57603
57603
|
function destroy(err) {
|
|
57604
57604
|
stream.destroy(err);
|
|
57605
|
-
return new Promise((
|
|
57605
|
+
return new Promise((resolve10, reject) => {
|
|
57606
57606
|
if (stream._duplexState & DESTROYED)
|
|
57607
|
-
return
|
|
57607
|
+
return resolve10({ value: undefined, done: true });
|
|
57608
57608
|
stream.once("close", function() {
|
|
57609
57609
|
if (err)
|
|
57610
57610
|
reject(err);
|
|
57611
57611
|
else
|
|
57612
|
-
|
|
57612
|
+
resolve10({ value: undefined, done: true });
|
|
57613
57613
|
});
|
|
57614
57614
|
});
|
|
57615
57615
|
}
|
|
@@ -57661,8 +57661,8 @@ var require_streamx = __commonJS((exports, module) => {
|
|
|
57661
57661
|
return Promise.resolve(true);
|
|
57662
57662
|
if (state.drains === null)
|
|
57663
57663
|
state.drains = [];
|
|
57664
|
-
return new Promise((
|
|
57665
|
-
state.drains.push({ writes, resolve:
|
|
57664
|
+
return new Promise((resolve10) => {
|
|
57665
|
+
state.drains.push({ writes, resolve: resolve10 });
|
|
57666
57666
|
});
|
|
57667
57667
|
}
|
|
57668
57668
|
write(data) {
|
|
@@ -57776,11 +57776,11 @@ var require_streamx = __commonJS((exports, module) => {
|
|
|
57776
57776
|
cb(null);
|
|
57777
57777
|
}
|
|
57778
57778
|
function pipelinePromise(...streams) {
|
|
57779
|
-
return new Promise((
|
|
57779
|
+
return new Promise((resolve10, reject) => {
|
|
57780
57780
|
return pipeline(...streams, (err) => {
|
|
57781
57781
|
if (err)
|
|
57782
57782
|
return reject(err);
|
|
57783
|
-
|
|
57783
|
+
resolve10();
|
|
57784
57784
|
});
|
|
57785
57785
|
});
|
|
57786
57786
|
}
|
|
@@ -58505,16 +58505,16 @@ var require_extract = __commonJS((exports, module) => {
|
|
|
58505
58505
|
entryCallback = null;
|
|
58506
58506
|
cb(err);
|
|
58507
58507
|
}
|
|
58508
|
-
function onnext(
|
|
58508
|
+
function onnext(resolve10, reject) {
|
|
58509
58509
|
if (error51) {
|
|
58510
58510
|
return reject(error51);
|
|
58511
58511
|
}
|
|
58512
58512
|
if (entryStream) {
|
|
58513
|
-
|
|
58513
|
+
resolve10({ value: entryStream, done: false });
|
|
58514
58514
|
entryStream = null;
|
|
58515
58515
|
return;
|
|
58516
58516
|
}
|
|
58517
|
-
promiseResolve =
|
|
58517
|
+
promiseResolve = resolve10;
|
|
58518
58518
|
promiseReject = reject;
|
|
58519
58519
|
consumeCallback(null);
|
|
58520
58520
|
if (extract._finished && promiseResolve) {
|
|
@@ -58545,14 +58545,14 @@ var require_extract = __commonJS((exports, module) => {
|
|
|
58545
58545
|
function destroy(err) {
|
|
58546
58546
|
extract.destroy(err);
|
|
58547
58547
|
consumeCallback(err);
|
|
58548
|
-
return new Promise((
|
|
58548
|
+
return new Promise((resolve10, reject) => {
|
|
58549
58549
|
if (extract.destroyed)
|
|
58550
|
-
return
|
|
58550
|
+
return resolve10({ value: undefined, done: true });
|
|
58551
58551
|
extract.once("close", function() {
|
|
58552
58552
|
if (err)
|
|
58553
58553
|
reject(err);
|
|
58554
58554
|
else
|
|
58555
|
-
|
|
58555
|
+
resolve10({ value: undefined, done: true });
|
|
58556
58556
|
});
|
|
58557
58557
|
});
|
|
58558
58558
|
}
|
|
@@ -59703,7 +59703,7 @@ async function executeHooksWithArgs(hookName, hooks = [], args = []) {
|
|
|
59703
59703
|
return true;
|
|
59704
59704
|
}
|
|
59705
59705
|
};
|
|
59706
|
-
const hooksPromises = hooks.map((hook) => new Promise((
|
|
59706
|
+
const hooksPromises = hooks.map((hook) => new Promise((resolve10, reject) => {
|
|
59707
59707
|
let result2;
|
|
59708
59708
|
try {
|
|
59709
59709
|
result2 = hook.apply(this, args);
|
|
@@ -59712,18 +59712,18 @@ async function executeHooksWithArgs(hookName, hooks = [], args = []) {
|
|
|
59712
59712
|
return;
|
|
59713
59713
|
}
|
|
59714
59714
|
log32.error(e.stack);
|
|
59715
|
-
return
|
|
59715
|
+
return resolve10(e);
|
|
59716
59716
|
}
|
|
59717
59717
|
if (result2 && typeof result2.then === "function") {
|
|
59718
|
-
return result2.then(
|
|
59718
|
+
return result2.then(resolve10, (e) => {
|
|
59719
59719
|
if (rejectIfSkipped(e, reject)) {
|
|
59720
59720
|
return;
|
|
59721
59721
|
}
|
|
59722
59722
|
log32.error(e.stack || e.message);
|
|
59723
|
-
|
|
59723
|
+
resolve10(e);
|
|
59724
59724
|
});
|
|
59725
59725
|
}
|
|
59726
|
-
|
|
59726
|
+
resolve10(result2);
|
|
59727
59727
|
}));
|
|
59728
59728
|
const start = Date.now();
|
|
59729
59729
|
const result = await Promise.all(hooksPromises);
|
|
@@ -60018,17 +60018,17 @@ var __defProp2, __export2 = (target, all) => {
|
|
|
60018
60018
|
}
|
|
60019
60019
|
return result;
|
|
60020
60020
|
}, find2 = (array2, callback2, thisArg) => {
|
|
60021
|
-
return new Promise((
|
|
60021
|
+
return new Promise((resolve10, reject) => {
|
|
60022
60022
|
if (array2.length === 0) {
|
|
60023
|
-
return
|
|
60023
|
+
return resolve10(undefined);
|
|
60024
60024
|
}
|
|
60025
60025
|
let counter = 1;
|
|
60026
60026
|
for (let i2 = 0;i2 < array2.length; i2++) {
|
|
60027
60027
|
const check2 = (found) => {
|
|
60028
60028
|
if (found) {
|
|
60029
|
-
|
|
60029
|
+
resolve10(array2[i2]);
|
|
60030
60030
|
} else if (counter === array2.length) {
|
|
60031
|
-
|
|
60031
|
+
resolve10(undefined);
|
|
60032
60032
|
}
|
|
60033
60033
|
counter++;
|
|
60034
60034
|
};
|
|
@@ -60042,17 +60042,17 @@ var __defProp2, __export2 = (target, all) => {
|
|
|
60042
60042
|
}
|
|
60043
60043
|
}
|
|
60044
60044
|
}, findIndex = (array2, callback2, thisArg) => {
|
|
60045
|
-
return new Promise((
|
|
60045
|
+
return new Promise((resolve10, reject) => {
|
|
60046
60046
|
if (array2.length === 0) {
|
|
60047
|
-
return
|
|
60047
|
+
return resolve10(-1);
|
|
60048
60048
|
}
|
|
60049
60049
|
let counter = 1;
|
|
60050
60050
|
for (let i2 = 0;i2 < array2.length; i2++) {
|
|
60051
60051
|
const check2 = (found) => {
|
|
60052
60052
|
if (found) {
|
|
60053
|
-
|
|
60053
|
+
resolve10(i2);
|
|
60054
60054
|
} else if (counter === array2.length) {
|
|
60055
|
-
|
|
60055
|
+
resolve10(-1);
|
|
60056
60056
|
}
|
|
60057
60057
|
counter++;
|
|
60058
60058
|
};
|
|
@@ -60066,9 +60066,9 @@ var __defProp2, __export2 = (target, all) => {
|
|
|
60066
60066
|
}
|
|
60067
60067
|
}
|
|
60068
60068
|
}, some = (array2, callback2, thisArg) => {
|
|
60069
|
-
return new Promise((
|
|
60069
|
+
return new Promise((resolve10, reject) => {
|
|
60070
60070
|
if (array2.length === 0) {
|
|
60071
|
-
return
|
|
60071
|
+
return resolve10(false);
|
|
60072
60072
|
}
|
|
60073
60073
|
let counter = 1;
|
|
60074
60074
|
for (let i2 = 0;i2 < array2.length; i2++) {
|
|
@@ -60078,9 +60078,9 @@ var __defProp2, __export2 = (target, all) => {
|
|
|
60078
60078
|
}
|
|
60079
60079
|
const check2 = (found) => {
|
|
60080
60080
|
if (found) {
|
|
60081
|
-
|
|
60081
|
+
resolve10(true);
|
|
60082
60082
|
} else if (counter === array2.length) {
|
|
60083
|
-
|
|
60083
|
+
resolve10(false);
|
|
60084
60084
|
}
|
|
60085
60085
|
counter++;
|
|
60086
60086
|
};
|
|
@@ -60095,9 +60095,9 @@ var __defProp2, __export2 = (target, all) => {
|
|
|
60095
60095
|
}
|
|
60096
60096
|
return false;
|
|
60097
60097
|
}, every = (array2, callback2, thisArg) => {
|
|
60098
|
-
return new Promise((
|
|
60098
|
+
return new Promise((resolve10, reject) => {
|
|
60099
60099
|
if (array2.length === 0) {
|
|
60100
|
-
return
|
|
60100
|
+
return resolve10(true);
|
|
60101
60101
|
}
|
|
60102
60102
|
let counter = 1;
|
|
60103
60103
|
for (let i2 = 0;i2 < array2.length; i2++) {
|
|
@@ -60107,9 +60107,9 @@ var __defProp2, __export2 = (target, all) => {
|
|
|
60107
60107
|
}
|
|
60108
60108
|
const check2 = (found) => {
|
|
60109
60109
|
if (!found) {
|
|
60110
|
-
|
|
60110
|
+
resolve10(false);
|
|
60111
60111
|
} else if (counter === array2.length) {
|
|
60112
|
-
|
|
60112
|
+
resolve10(true);
|
|
60113
60113
|
}
|
|
60114
60114
|
counter++;
|
|
60115
60115
|
};
|
|
@@ -60124,7 +60124,7 @@ var __defProp2, __export2 = (target, all) => {
|
|
|
60124
60124
|
}
|
|
60125
60125
|
return true;
|
|
60126
60126
|
}, filter = (array2, callback2, thisArg) => {
|
|
60127
|
-
return new Promise((
|
|
60127
|
+
return new Promise((resolve10, reject) => {
|
|
60128
60128
|
const promiseArray = [];
|
|
60129
60129
|
for (let i2 = 0;i2 < array2.length; i2++) {
|
|
60130
60130
|
if (i2 in array2) {
|
|
@@ -60138,7 +60138,7 @@ var __defProp2, __export2 = (target, all) => {
|
|
|
60138
60138
|
return await array2[i2];
|
|
60139
60139
|
}
|
|
60140
60140
|
return;
|
|
60141
|
-
})).then((result) => result.filter((val) => typeof val !== "undefined")).then(
|
|
60141
|
+
})).then((result) => result.filter((val) => typeof val !== "undefined")).then(resolve10, reject);
|
|
60142
60142
|
});
|
|
60143
60143
|
}, filterSeries = async (array2, callback2, thisArg) => {
|
|
60144
60144
|
const result = [];
|
|
@@ -61984,7 +61984,7 @@ var require_websocket = __commonJS((exports, module) => {
|
|
|
61984
61984
|
var http = __require("http");
|
|
61985
61985
|
var net2 = __require("net");
|
|
61986
61986
|
var tls = __require("tls");
|
|
61987
|
-
var { randomBytes: randomBytes4, createHash:
|
|
61987
|
+
var { randomBytes: randomBytes4, createHash: createHash5 } = __require("crypto");
|
|
61988
61988
|
var { Duplex, Readable } = __require("stream");
|
|
61989
61989
|
var { URL: URL2 } = __require("url");
|
|
61990
61990
|
var PerMessageDeflate = require_permessage_deflate();
|
|
@@ -62523,7 +62523,7 @@ var require_websocket = __commonJS((exports, module) => {
|
|
|
62523
62523
|
abortHandshake(websocket, socket, "Invalid Upgrade header");
|
|
62524
62524
|
return;
|
|
62525
62525
|
}
|
|
62526
|
-
const digest =
|
|
62526
|
+
const digest = createHash5("sha1").update(key + GUID).digest("base64");
|
|
62527
62527
|
if (res.headers["sec-websocket-accept"] !== digest) {
|
|
62528
62528
|
abortHandshake(websocket, socket, "Invalid Sec-WebSocket-Accept header");
|
|
62529
62529
|
return;
|
|
@@ -62896,7 +62896,7 @@ var require_websocket_server = __commonJS((exports, module) => {
|
|
|
62896
62896
|
var EventEmitter = __require("events");
|
|
62897
62897
|
var http = __require("http");
|
|
62898
62898
|
var { Duplex } = __require("stream");
|
|
62899
|
-
var { createHash:
|
|
62899
|
+
var { createHash: createHash5 } = __require("crypto");
|
|
62900
62900
|
var extension = require_extension();
|
|
62901
62901
|
var PerMessageDeflate = require_permessage_deflate();
|
|
62902
62902
|
var subprotocol = require_subprotocol();
|
|
@@ -63109,7 +63109,7 @@ var require_websocket_server = __commonJS((exports, module) => {
|
|
|
63109
63109
|
}
|
|
63110
63110
|
if (this._state > RUNNING)
|
|
63111
63111
|
return abortHandshake(socket, 503);
|
|
63112
|
-
const digest =
|
|
63112
|
+
const digest = createHash5("sha1").update(key + GUID).digest("base64");
|
|
63113
63113
|
const headers = [
|
|
63114
63114
|
"HTTP/1.1 101 Switching Protocols",
|
|
63115
63115
|
"Upgrade: websocket",
|
|
@@ -71654,9 +71654,9 @@ var require_dispatcher_base = __commonJS((exports, module) => {
|
|
|
71654
71654
|
}
|
|
71655
71655
|
close(callback2) {
|
|
71656
71656
|
if (callback2 === undefined) {
|
|
71657
|
-
return new Promise((
|
|
71657
|
+
return new Promise((resolve10, reject) => {
|
|
71658
71658
|
this.close((err, data) => {
|
|
71659
|
-
return err ? reject(err) :
|
|
71659
|
+
return err ? reject(err) : resolve10(data);
|
|
71660
71660
|
});
|
|
71661
71661
|
});
|
|
71662
71662
|
}
|
|
@@ -71694,9 +71694,9 @@ var require_dispatcher_base = __commonJS((exports, module) => {
|
|
|
71694
71694
|
err = null;
|
|
71695
71695
|
}
|
|
71696
71696
|
if (callback2 === undefined) {
|
|
71697
|
-
return new Promise((
|
|
71697
|
+
return new Promise((resolve10, reject) => {
|
|
71698
71698
|
this.destroy(err, (err2, data) => {
|
|
71699
|
-
return err2 ? reject(err2) :
|
|
71699
|
+
return err2 ? reject(err2) : resolve10(data);
|
|
71700
71700
|
});
|
|
71701
71701
|
});
|
|
71702
71702
|
}
|
|
@@ -73702,8 +73702,8 @@ var require_util10 = __commonJS((exports, module) => {
|
|
|
73702
73702
|
function createDeferredPromise() {
|
|
73703
73703
|
let res;
|
|
73704
73704
|
let rej;
|
|
73705
|
-
const promise3 = new Promise((
|
|
73706
|
-
res =
|
|
73705
|
+
const promise3 = new Promise((resolve10, reject) => {
|
|
73706
|
+
res = resolve10;
|
|
73707
73707
|
rej = reject;
|
|
73708
73708
|
});
|
|
73709
73709
|
return { promise: promise3, resolve: res, reject: rej };
|
|
@@ -75756,12 +75756,12 @@ upgrade: ${upgrade}\r
|
|
|
75756
75756
|
cb();
|
|
75757
75757
|
}
|
|
75758
75758
|
}
|
|
75759
|
-
const waitForDrain = () => new Promise((
|
|
75759
|
+
const waitForDrain = () => new Promise((resolve10, reject) => {
|
|
75760
75760
|
assert2(callback2 === null);
|
|
75761
75761
|
if (socket[kError]) {
|
|
75762
75762
|
reject(socket[kError]);
|
|
75763
75763
|
} else {
|
|
75764
|
-
callback2 =
|
|
75764
|
+
callback2 = resolve10;
|
|
75765
75765
|
}
|
|
75766
75766
|
});
|
|
75767
75767
|
socket.on("close", onDrain).on("drain", onDrain);
|
|
@@ -76342,12 +76342,12 @@ var require_client_h2 = __commonJS((exports, module) => {
|
|
|
76342
76342
|
cb();
|
|
76343
76343
|
}
|
|
76344
76344
|
}
|
|
76345
|
-
const waitForDrain = () => new Promise((
|
|
76345
|
+
const waitForDrain = () => new Promise((resolve10, reject) => {
|
|
76346
76346
|
assert2(callback2 === null);
|
|
76347
76347
|
if (socket[kError]) {
|
|
76348
76348
|
reject(socket[kError]);
|
|
76349
76349
|
} else {
|
|
76350
|
-
callback2 =
|
|
76350
|
+
callback2 = resolve10;
|
|
76351
76351
|
}
|
|
76352
76352
|
});
|
|
76353
76353
|
h2stream.on("close", onDrain).on("drain", onDrain);
|
|
@@ -76807,16 +76807,16 @@ var require_client = __commonJS((exports, module) => {
|
|
|
76807
76807
|
return this[kNeedDrain] < 2;
|
|
76808
76808
|
}
|
|
76809
76809
|
async[kClose]() {
|
|
76810
|
-
return new Promise((
|
|
76810
|
+
return new Promise((resolve10) => {
|
|
76811
76811
|
if (this[kSize]) {
|
|
76812
|
-
this[kClosedResolve] =
|
|
76812
|
+
this[kClosedResolve] = resolve10;
|
|
76813
76813
|
} else {
|
|
76814
|
-
|
|
76814
|
+
resolve10(null);
|
|
76815
76815
|
}
|
|
76816
76816
|
});
|
|
76817
76817
|
}
|
|
76818
76818
|
async[kDestroy](err) {
|
|
76819
|
-
return new Promise((
|
|
76819
|
+
return new Promise((resolve10) => {
|
|
76820
76820
|
const requests = this[kQueue].splice(this[kPendingIdx]);
|
|
76821
76821
|
for (let i2 = 0;i2 < requests.length; i2++) {
|
|
76822
76822
|
const request = requests[i2];
|
|
@@ -76827,7 +76827,7 @@ var require_client = __commonJS((exports, module) => {
|
|
|
76827
76827
|
this[kClosedResolve]();
|
|
76828
76828
|
this[kClosedResolve] = null;
|
|
76829
76829
|
}
|
|
76830
|
-
|
|
76830
|
+
resolve10(null);
|
|
76831
76831
|
};
|
|
76832
76832
|
if (this[kHTTPContext]) {
|
|
76833
76833
|
this[kHTTPContext].destroy(err, callback2);
|
|
@@ -76878,7 +76878,7 @@ var require_client = __commonJS((exports, module) => {
|
|
|
76878
76878
|
});
|
|
76879
76879
|
}
|
|
76880
76880
|
try {
|
|
76881
|
-
const socket = await new Promise((
|
|
76881
|
+
const socket = await new Promise((resolve10, reject) => {
|
|
76882
76882
|
client[kConnector]({
|
|
76883
76883
|
host,
|
|
76884
76884
|
hostname: hostname3,
|
|
@@ -76890,7 +76890,7 @@ var require_client = __commonJS((exports, module) => {
|
|
|
76890
76890
|
if (err) {
|
|
76891
76891
|
reject(err);
|
|
76892
76892
|
} else {
|
|
76893
|
-
|
|
76893
|
+
resolve10(socket2);
|
|
76894
76894
|
}
|
|
76895
76895
|
});
|
|
76896
76896
|
});
|
|
@@ -77221,8 +77221,8 @@ var require_pool_base = __commonJS((exports, module) => {
|
|
|
77221
77221
|
if (this[kQueue].isEmpty()) {
|
|
77222
77222
|
await Promise.all(this[kClients].map((c2) => c2.close()));
|
|
77223
77223
|
} else {
|
|
77224
|
-
await new Promise((
|
|
77225
|
-
this[kClosedResolve] =
|
|
77224
|
+
await new Promise((resolve10) => {
|
|
77225
|
+
this[kClosedResolve] = resolve10;
|
|
77226
77226
|
});
|
|
77227
77227
|
}
|
|
77228
77228
|
}
|
|
@@ -78367,7 +78367,7 @@ var require_readable7 = __commonJS((exports, module) => {
|
|
|
78367
78367
|
if (this._readableState.closeEmitted) {
|
|
78368
78368
|
return null;
|
|
78369
78369
|
}
|
|
78370
|
-
return await new Promise((
|
|
78370
|
+
return await new Promise((resolve10, reject) => {
|
|
78371
78371
|
if (this[kContentLength] > limit) {
|
|
78372
78372
|
this.destroy(new AbortError);
|
|
78373
78373
|
}
|
|
@@ -78380,7 +78380,7 @@ var require_readable7 = __commonJS((exports, module) => {
|
|
|
78380
78380
|
if (signal?.aborted) {
|
|
78381
78381
|
reject(signal.reason ?? new AbortError);
|
|
78382
78382
|
} else {
|
|
78383
|
-
|
|
78383
|
+
resolve10(null);
|
|
78384
78384
|
}
|
|
78385
78385
|
}).on("error", noop).on("data", function(chunk) {
|
|
78386
78386
|
limit -= chunk.length;
|
|
@@ -78399,7 +78399,7 @@ var require_readable7 = __commonJS((exports, module) => {
|
|
|
78399
78399
|
}
|
|
78400
78400
|
async function consume(stream, type) {
|
|
78401
78401
|
assert2(!stream[kConsume]);
|
|
78402
|
-
return new Promise((
|
|
78402
|
+
return new Promise((resolve10, reject) => {
|
|
78403
78403
|
if (isUnusable(stream)) {
|
|
78404
78404
|
const rState = stream._readableState;
|
|
78405
78405
|
if (rState.destroyed && rState.closeEmitted === false) {
|
|
@@ -78416,7 +78416,7 @@ var require_readable7 = __commonJS((exports, module) => {
|
|
|
78416
78416
|
stream[kConsume] = {
|
|
78417
78417
|
type,
|
|
78418
78418
|
stream,
|
|
78419
|
-
resolve:
|
|
78419
|
+
resolve: resolve10,
|
|
78420
78420
|
reject,
|
|
78421
78421
|
length: 0,
|
|
78422
78422
|
body: []
|
|
@@ -78485,18 +78485,18 @@ var require_readable7 = __commonJS((exports, module) => {
|
|
|
78485
78485
|
return buffer;
|
|
78486
78486
|
}
|
|
78487
78487
|
function consumeEnd(consume2) {
|
|
78488
|
-
const { type, body, resolve:
|
|
78488
|
+
const { type, body, resolve: resolve10, stream, length } = consume2;
|
|
78489
78489
|
try {
|
|
78490
78490
|
if (type === "text") {
|
|
78491
|
-
|
|
78491
|
+
resolve10(chunksDecode(body, length));
|
|
78492
78492
|
} else if (type === "json") {
|
|
78493
|
-
|
|
78493
|
+
resolve10(JSON.parse(chunksDecode(body, length)));
|
|
78494
78494
|
} else if (type === "arrayBuffer") {
|
|
78495
|
-
|
|
78495
|
+
resolve10(chunksConcat(body, length).buffer);
|
|
78496
78496
|
} else if (type === "blob") {
|
|
78497
|
-
|
|
78497
|
+
resolve10(new Blob(body, { type: stream[kContentType] }));
|
|
78498
78498
|
} else if (type === "bytes") {
|
|
78499
|
-
|
|
78499
|
+
resolve10(chunksConcat(body, length));
|
|
78500
78500
|
}
|
|
78501
78501
|
consumeFinish(consume2);
|
|
78502
78502
|
} catch (err) {
|
|
@@ -78744,9 +78744,9 @@ var require_api_request = __commonJS((exports, module) => {
|
|
|
78744
78744
|
}
|
|
78745
78745
|
function request(opts, callback2) {
|
|
78746
78746
|
if (callback2 === undefined) {
|
|
78747
|
-
return new Promise((
|
|
78747
|
+
return new Promise((resolve10, reject) => {
|
|
78748
78748
|
request.call(this, opts, (err, data) => {
|
|
78749
|
-
return err ? reject(err) :
|
|
78749
|
+
return err ? reject(err) : resolve10(data);
|
|
78750
78750
|
});
|
|
78751
78751
|
});
|
|
78752
78752
|
}
|
|
@@ -78961,9 +78961,9 @@ var require_api_stream = __commonJS((exports, module) => {
|
|
|
78961
78961
|
}
|
|
78962
78962
|
function stream(opts, factory, callback2) {
|
|
78963
78963
|
if (callback2 === undefined) {
|
|
78964
|
-
return new Promise((
|
|
78964
|
+
return new Promise((resolve10, reject) => {
|
|
78965
78965
|
stream.call(this, opts, factory, (err, data) => {
|
|
78966
|
-
return err ? reject(err) :
|
|
78966
|
+
return err ? reject(err) : resolve10(data);
|
|
78967
78967
|
});
|
|
78968
78968
|
});
|
|
78969
78969
|
}
|
|
@@ -79246,9 +79246,9 @@ var require_api_upgrade = __commonJS((exports, module) => {
|
|
|
79246
79246
|
}
|
|
79247
79247
|
function upgrade(opts, callback2) {
|
|
79248
79248
|
if (callback2 === undefined) {
|
|
79249
|
-
return new Promise((
|
|
79249
|
+
return new Promise((resolve10, reject) => {
|
|
79250
79250
|
upgrade.call(this, opts, (err, data) => {
|
|
79251
|
-
return err ? reject(err) :
|
|
79251
|
+
return err ? reject(err) : resolve10(data);
|
|
79252
79252
|
});
|
|
79253
79253
|
});
|
|
79254
79254
|
}
|
|
@@ -79338,9 +79338,9 @@ var require_api_connect = __commonJS((exports, module) => {
|
|
|
79338
79338
|
}
|
|
79339
79339
|
function connect(opts, callback2) {
|
|
79340
79340
|
if (callback2 === undefined) {
|
|
79341
|
-
return new Promise((
|
|
79341
|
+
return new Promise((resolve10, reject) => {
|
|
79342
79342
|
connect.call(this, opts, (err, data) => {
|
|
79343
|
-
return err ? reject(err) :
|
|
79343
|
+
return err ? reject(err) : resolve10(data);
|
|
79344
79344
|
});
|
|
79345
79345
|
});
|
|
79346
79346
|
}
|
|
@@ -79844,7 +79844,7 @@ var require_mock_interceptor = __commonJS((exports, module) => {
|
|
|
79844
79844
|
|
|
79845
79845
|
// node_modules/webdriver/node_modules/undici/lib/mock/mock-client.js
|
|
79846
79846
|
var require_mock_client = __commonJS((exports, module) => {
|
|
79847
|
-
var { promisify:
|
|
79847
|
+
var { promisify: promisify2 } = __require("node:util");
|
|
79848
79848
|
var Client = require_client();
|
|
79849
79849
|
var { buildMockDispatch } = require_mock_utils();
|
|
79850
79850
|
var {
|
|
@@ -79882,7 +79882,7 @@ var require_mock_client = __commonJS((exports, module) => {
|
|
|
79882
79882
|
return new MockInterceptor(opts, this[kDispatches]);
|
|
79883
79883
|
}
|
|
79884
79884
|
async[kClose]() {
|
|
79885
|
-
await
|
|
79885
|
+
await promisify2(this[kOriginalClose])();
|
|
79886
79886
|
this[kConnected] = 0;
|
|
79887
79887
|
this[kMockAgent][Symbols.kClients].delete(this[kOrigin]);
|
|
79888
79888
|
}
|
|
@@ -79892,7 +79892,7 @@ var require_mock_client = __commonJS((exports, module) => {
|
|
|
79892
79892
|
|
|
79893
79893
|
// node_modules/webdriver/node_modules/undici/lib/mock/mock-pool.js
|
|
79894
79894
|
var require_mock_pool = __commonJS((exports, module) => {
|
|
79895
|
-
var { promisify:
|
|
79895
|
+
var { promisify: promisify2 } = __require("node:util");
|
|
79896
79896
|
var Pool = require_pool();
|
|
79897
79897
|
var { buildMockDispatch } = require_mock_utils();
|
|
79898
79898
|
var {
|
|
@@ -79930,7 +79930,7 @@ var require_mock_pool = __commonJS((exports, module) => {
|
|
|
79930
79930
|
return new MockInterceptor(opts, this[kDispatches]);
|
|
79931
79931
|
}
|
|
79932
79932
|
async[kClose]() {
|
|
79933
|
-
await
|
|
79933
|
+
await promisify2(this[kOriginalClose])();
|
|
79934
79934
|
this[kConnected] = 0;
|
|
79935
79935
|
this[kMockAgent][Symbols.kClients].delete(this[kOrigin]);
|
|
79936
79936
|
}
|
|
@@ -82842,7 +82842,7 @@ var require_fetch = __commonJS((exports, module) => {
|
|
|
82842
82842
|
function dispatch({ body }) {
|
|
82843
82843
|
const url2 = requestCurrentURL(request);
|
|
82844
82844
|
const agent = fetchParams.controller.dispatcher;
|
|
82845
|
-
return new Promise((
|
|
82845
|
+
return new Promise((resolve10, reject) => agent.dispatch({
|
|
82846
82846
|
path: url2.pathname + url2.search,
|
|
82847
82847
|
origin: url2.origin,
|
|
82848
82848
|
method: request.method,
|
|
@@ -82912,7 +82912,7 @@ var require_fetch = __commonJS((exports, module) => {
|
|
|
82912
82912
|
}
|
|
82913
82913
|
}
|
|
82914
82914
|
const onError = this.onError.bind(this);
|
|
82915
|
-
|
|
82915
|
+
resolve10({
|
|
82916
82916
|
status,
|
|
82917
82917
|
statusText,
|
|
82918
82918
|
headersList,
|
|
@@ -82958,7 +82958,7 @@ var require_fetch = __commonJS((exports, module) => {
|
|
|
82958
82958
|
for (let i2 = 0;i2 < rawHeaders.length; i2 += 2) {
|
|
82959
82959
|
headersList.append(bufferToLowerCasedHeaderName(rawHeaders[i2]), rawHeaders[i2 + 1].toString("latin1"), true);
|
|
82960
82960
|
}
|
|
82961
|
-
|
|
82961
|
+
resolve10({
|
|
82962
82962
|
status,
|
|
82963
82963
|
statusText: STATUS_CODES[status],
|
|
82964
82964
|
headersList,
|
|
@@ -86334,8 +86334,8 @@ var require_util16 = __commonJS((exports, module) => {
|
|
|
86334
86334
|
return true;
|
|
86335
86335
|
}
|
|
86336
86336
|
function delay(ms2) {
|
|
86337
|
-
return new Promise((
|
|
86338
|
-
setTimeout(
|
|
86337
|
+
return new Promise((resolve10) => {
|
|
86338
|
+
setTimeout(resolve10, ms2).unref();
|
|
86339
86339
|
});
|
|
86340
86340
|
}
|
|
86341
86341
|
module.exports = {
|
|
@@ -87716,8 +87716,8 @@ var require_helpers = __commonJS((exports) => {
|
|
|
87716
87716
|
function req(url2, opts = {}) {
|
|
87717
87717
|
const href = typeof url2 === "string" ? url2 : url2.href;
|
|
87718
87718
|
const req2 = (href.startsWith("https:") ? https : http).request(url2, opts);
|
|
87719
|
-
const promise3 = new Promise((
|
|
87720
|
-
req2.once("response",
|
|
87719
|
+
const promise3 = new Promise((resolve10, reject) => {
|
|
87720
|
+
req2.once("response", resolve10).once("error", reject).end();
|
|
87721
87721
|
});
|
|
87722
87722
|
req2.then = promise3.then.bind(promise3);
|
|
87723
87723
|
return req2;
|
|
@@ -87886,7 +87886,7 @@ var require_parse_proxy_response = __commonJS((exports) => {
|
|
|
87886
87886
|
var debug_1 = __importDefault(require_src2());
|
|
87887
87887
|
var debug = (0, debug_1.default)("https-proxy-agent:parse-proxy-response");
|
|
87888
87888
|
function parseProxyResponse(socket) {
|
|
87889
|
-
return new Promise((
|
|
87889
|
+
return new Promise((resolve10, reject) => {
|
|
87890
87890
|
let buffersLength = 0;
|
|
87891
87891
|
const buffers = [];
|
|
87892
87892
|
function read() {
|
|
@@ -87955,7 +87955,7 @@ var require_parse_proxy_response = __commonJS((exports) => {
|
|
|
87955
87955
|
}
|
|
87956
87956
|
debug("got proxy server response: %o %o", firstLine3, headers);
|
|
87957
87957
|
cleanup();
|
|
87958
|
-
|
|
87958
|
+
resolve10({
|
|
87959
87959
|
connect: {
|
|
87960
87960
|
statusCode,
|
|
87961
87961
|
statusText,
|
|
@@ -88582,20 +88582,20 @@ async function connectWebsocket(candidateUrls, options) {
|
|
|
88582
88582
|
}
|
|
88583
88583
|
}).filter(Boolean);
|
|
88584
88584
|
const wsConnectPromises = websockets.map((ws2, index) => {
|
|
88585
|
-
const promise3 = new Promise((
|
|
88586
|
-
ws2.once("open", () =>
|
|
88585
|
+
const promise3 = new Promise((resolve10) => {
|
|
88586
|
+
ws2.once("open", () => resolve10({ ws: ws2, isConnected: true, index }));
|
|
88587
88587
|
ws2.once("error", (err) => {
|
|
88588
88588
|
log6.debug(`Could not connect to Bidi protocol at ${candidateUrls[index]}: ${err.message}`);
|
|
88589
|
-
|
|
88589
|
+
resolve10({ ws: ws2, isConnected: false, errorMessage: err.message, index });
|
|
88590
88590
|
});
|
|
88591
88591
|
});
|
|
88592
88592
|
return { promise: promise3, index };
|
|
88593
88593
|
});
|
|
88594
88594
|
let timeoutId;
|
|
88595
|
-
const connectionTimeoutPromise = new Promise((
|
|
88595
|
+
const connectionTimeoutPromise = new Promise((resolve10) => {
|
|
88596
88596
|
timeoutId = setTimeout(() => {
|
|
88597
88597
|
log6.error(`Could not connect to Bidi protocol of any candidate url in time: "${candidateUrls.join('", "')}"`);
|
|
88598
|
-
return
|
|
88598
|
+
return resolve10(undefined);
|
|
88599
88599
|
}, CONNECTION_TIMEOUT);
|
|
88600
88600
|
});
|
|
88601
88601
|
const wsInfo = await Promise.race([
|
|
@@ -88667,8 +88667,8 @@ var import_https_proxy_agent, isNode, environment, CommandRuntimeOptions = class
|
|
|
88667
88667
|
this.#webSocketUrl = webSocketUrl;
|
|
88668
88668
|
this.#clientOptions = opts;
|
|
88669
88669
|
this.#resolveWaitForConnected = () => {};
|
|
88670
|
-
this.#waitForConnected = new Promise((
|
|
88671
|
-
this.#resolveWaitForConnected =
|
|
88670
|
+
this.#waitForConnected = new Promise((resolve10) => {
|
|
88671
|
+
this.#resolveWaitForConnected = resolve10;
|
|
88672
88672
|
});
|
|
88673
88673
|
}
|
|
88674
88674
|
attachClient(client) {
|
|
@@ -88731,13 +88731,13 @@ var import_https_proxy_agent, isNode, environment, CommandRuntimeOptions = class
|
|
|
88731
88731
|
}
|
|
88732
88732
|
log5.info("BIDI RESULT", resultLog);
|
|
88733
88733
|
this.client?.emit("bidiResult", payload);
|
|
88734
|
-
const
|
|
88735
|
-
if (!
|
|
88734
|
+
const resolve10 = this.#pendingCommands.get(payload.id);
|
|
88735
|
+
if (!resolve10) {
|
|
88736
88736
|
log5.error(`Couldn't resolve command with id ${payload.id}`);
|
|
88737
88737
|
return;
|
|
88738
88738
|
}
|
|
88739
88739
|
this.#pendingCommands.delete(payload.id);
|
|
88740
|
-
|
|
88740
|
+
resolve10(payload);
|
|
88741
88741
|
} catch (err) {
|
|
88742
88742
|
const error51 = err instanceof Error ? err : new Error(`Failed parse message: ${String(err)}`);
|
|
88743
88743
|
log5.error(`Failed parse message: ${error51.message}`);
|
|
@@ -88746,14 +88746,14 @@ var import_https_proxy_agent, isNode, environment, CommandRuntimeOptions = class
|
|
|
88746
88746
|
async send(params) {
|
|
88747
88747
|
const id = this.sendAsync(params);
|
|
88748
88748
|
const failError = new Error(`WebDriver Bidi command "${params.method}" failed`);
|
|
88749
|
-
const payload = await new Promise((
|
|
88749
|
+
const payload = await new Promise((resolve10, reject) => {
|
|
88750
88750
|
const t2 = setTimeout(() => {
|
|
88751
88751
|
reject(new Error(`Command ${params.method} with id ${id} (with the following parameter: ${JSON.stringify(params.params)}) timed out`));
|
|
88752
88752
|
this.#pendingCommands.delete(id);
|
|
88753
88753
|
}, RESPONSE_TIMEOUT);
|
|
88754
88754
|
this.#pendingCommands.set(id, (payload2) => {
|
|
88755
88755
|
clearTimeout(t2);
|
|
88756
|
-
|
|
88756
|
+
resolve10(payload2);
|
|
88757
88757
|
});
|
|
88758
88758
|
});
|
|
88759
88759
|
if (payload.type === "error" || "error" in payload) {
|
|
@@ -91273,8 +91273,8 @@ var init_build6 = __esm(() => {
|
|
|
91273
91273
|
};
|
|
91274
91274
|
}
|
|
91275
91275
|
this._replServer = repl.start(this._config);
|
|
91276
|
-
return new Promise((
|
|
91277
|
-
return this._replServer.on("exit",
|
|
91276
|
+
return new Promise((resolve10) => {
|
|
91277
|
+
return this._replServer.on("exit", resolve10);
|
|
91278
91278
|
});
|
|
91279
91279
|
}
|
|
91280
91280
|
};
|
|
@@ -124103,9 +124103,9 @@ var require_dispatcher_base2 = __commonJS((exports, module) => {
|
|
|
124103
124103
|
}
|
|
124104
124104
|
close(callback2) {
|
|
124105
124105
|
if (callback2 === undefined) {
|
|
124106
|
-
return new Promise((
|
|
124106
|
+
return new Promise((resolve10, reject) => {
|
|
124107
124107
|
this.close((err, data2) => {
|
|
124108
|
-
return err ? reject(err) :
|
|
124108
|
+
return err ? reject(err) : resolve10(data2);
|
|
124109
124109
|
});
|
|
124110
124110
|
});
|
|
124111
124111
|
}
|
|
@@ -124143,9 +124143,9 @@ var require_dispatcher_base2 = __commonJS((exports, module) => {
|
|
|
124143
124143
|
err = null;
|
|
124144
124144
|
}
|
|
124145
124145
|
if (callback2 === undefined) {
|
|
124146
|
-
return new Promise((
|
|
124146
|
+
return new Promise((resolve10, reject) => {
|
|
124147
124147
|
this.destroy(err, (err2, data2) => {
|
|
124148
|
-
return err2 ? reject(err2) :
|
|
124148
|
+
return err2 ? reject(err2) : resolve10(data2);
|
|
124149
124149
|
});
|
|
124150
124150
|
});
|
|
124151
124151
|
}
|
|
@@ -127269,8 +127269,8 @@ var require_promise = __commonJS((exports, module) => {
|
|
|
127269
127269
|
function createDeferredPromise() {
|
|
127270
127270
|
let res;
|
|
127271
127271
|
let rej;
|
|
127272
|
-
const promise3 = new Promise((
|
|
127273
|
-
res =
|
|
127272
|
+
const promise3 = new Promise((resolve10, reject) => {
|
|
127273
|
+
res = resolve10;
|
|
127274
127274
|
rej = reject;
|
|
127275
127275
|
});
|
|
127276
127276
|
return { promise: promise3, resolve: res, reject: rej };
|
|
@@ -128460,12 +128460,12 @@ upgrade: ${upgrade}\r
|
|
|
128460
128460
|
cb();
|
|
128461
128461
|
}
|
|
128462
128462
|
}
|
|
128463
|
-
const waitForDrain = () => new Promise((
|
|
128463
|
+
const waitForDrain = () => new Promise((resolve10, reject) => {
|
|
128464
128464
|
assert2(callback2 === null);
|
|
128465
128465
|
if (socket[kError]) {
|
|
128466
128466
|
reject(socket[kError]);
|
|
128467
128467
|
} else {
|
|
128468
|
-
callback2 =
|
|
128468
|
+
callback2 = resolve10;
|
|
128469
128469
|
}
|
|
128470
128470
|
});
|
|
128471
128471
|
socket.on("close", onDrain).on("drain", onDrain);
|
|
@@ -129216,12 +129216,12 @@ var require_client_h22 = __commonJS((exports, module) => {
|
|
|
129216
129216
|
cb();
|
|
129217
129217
|
}
|
|
129218
129218
|
}
|
|
129219
|
-
const waitForDrain = () => new Promise((
|
|
129219
|
+
const waitForDrain = () => new Promise((resolve10, reject) => {
|
|
129220
129220
|
assert2(callback2 === null);
|
|
129221
129221
|
if (socket[kError]) {
|
|
129222
129222
|
reject(socket[kError]);
|
|
129223
129223
|
} else {
|
|
129224
|
-
callback2 =
|
|
129224
|
+
callback2 = resolve10;
|
|
129225
129225
|
}
|
|
129226
129226
|
});
|
|
129227
129227
|
h2stream.on("close", onDrain).on("drain", onDrain);
|
|
@@ -129520,16 +129520,16 @@ var require_client2 = __commonJS((exports, module) => {
|
|
|
129520
129520
|
return this[kNeedDrain] < 2;
|
|
129521
129521
|
}
|
|
129522
129522
|
[kClose]() {
|
|
129523
|
-
return new Promise((
|
|
129523
|
+
return new Promise((resolve10) => {
|
|
129524
129524
|
if (this[kSize]) {
|
|
129525
|
-
this[kClosedResolve] =
|
|
129525
|
+
this[kClosedResolve] = resolve10;
|
|
129526
129526
|
} else {
|
|
129527
|
-
|
|
129527
|
+
resolve10(null);
|
|
129528
129528
|
}
|
|
129529
129529
|
});
|
|
129530
129530
|
}
|
|
129531
129531
|
[kDestroy](err) {
|
|
129532
|
-
return new Promise((
|
|
129532
|
+
return new Promise((resolve10) => {
|
|
129533
129533
|
const requests = this[kQueue].splice(this[kPendingIdx]);
|
|
129534
129534
|
for (let i2 = 0;i2 < requests.length; i2++) {
|
|
129535
129535
|
const request = requests[i2];
|
|
@@ -129540,7 +129540,7 @@ var require_client2 = __commonJS((exports, module) => {
|
|
|
129540
129540
|
this[kClosedResolve]();
|
|
129541
129541
|
this[kClosedResolve] = null;
|
|
129542
129542
|
}
|
|
129543
|
-
|
|
129543
|
+
resolve10(null);
|
|
129544
129544
|
};
|
|
129545
129545
|
if (this[kHTTPContext]) {
|
|
129546
129546
|
this[kHTTPContext].destroy(err, callback2);
|
|
@@ -129927,8 +129927,8 @@ var require_pool_base2 = __commonJS((exports, module) => {
|
|
|
129927
129927
|
}
|
|
129928
129928
|
return Promise.all(closeAll);
|
|
129929
129929
|
} else {
|
|
129930
|
-
return new Promise((
|
|
129931
|
-
this[kClosedResolve] =
|
|
129930
|
+
return new Promise((resolve10) => {
|
|
129931
|
+
this[kClosedResolve] = resolve10;
|
|
129932
129932
|
});
|
|
129933
129933
|
}
|
|
129934
129934
|
}
|
|
@@ -130961,10 +130961,10 @@ var require_socks5_proxy_agent = __commonJS((exports, module) => {
|
|
|
130961
130961
|
const proxyHost = this[kProxyUrl].hostname;
|
|
130962
130962
|
const proxyPort = parseInt(this[kProxyUrl].port) || 1080;
|
|
130963
130963
|
debug("creating SOCKS5 connection to", proxyHost, proxyPort);
|
|
130964
|
-
const socket = await new Promise((
|
|
130964
|
+
const socket = await new Promise((resolve10, reject) => {
|
|
130965
130965
|
const onConnect = () => {
|
|
130966
130966
|
socket2.removeListener("error", onError);
|
|
130967
|
-
|
|
130967
|
+
resolve10(socket2);
|
|
130968
130968
|
};
|
|
130969
130969
|
const onError = (err) => {
|
|
130970
130970
|
socket2.removeListener("connect", onConnect);
|
|
@@ -130983,14 +130983,14 @@ var require_socks5_proxy_agent = __commonJS((exports, module) => {
|
|
|
130983
130983
|
socket.destroy();
|
|
130984
130984
|
});
|
|
130985
130985
|
await socks5Client.handshake();
|
|
130986
|
-
await new Promise((
|
|
130986
|
+
await new Promise((resolve10, reject) => {
|
|
130987
130987
|
const timeout = setTimeout(() => {
|
|
130988
130988
|
reject(new Error("SOCKS5 authentication timeout"));
|
|
130989
130989
|
}, 5000);
|
|
130990
130990
|
const onAuthenticated = () => {
|
|
130991
130991
|
clearTimeout(timeout);
|
|
130992
130992
|
socks5Client.removeListener("error", onError);
|
|
130993
|
-
|
|
130993
|
+
resolve10();
|
|
130994
130994
|
};
|
|
130995
130995
|
const onError = (err) => {
|
|
130996
130996
|
clearTimeout(timeout);
|
|
@@ -130999,14 +130999,14 @@ var require_socks5_proxy_agent = __commonJS((exports, module) => {
|
|
|
130999
130999
|
};
|
|
131000
131000
|
if (socks5Client.state === "authenticated") {
|
|
131001
131001
|
clearTimeout(timeout);
|
|
131002
|
-
|
|
131002
|
+
resolve10();
|
|
131003
131003
|
} else {
|
|
131004
131004
|
socks5Client.once("authenticated", onAuthenticated);
|
|
131005
131005
|
socks5Client.once("error", onError);
|
|
131006
131006
|
}
|
|
131007
131007
|
});
|
|
131008
131008
|
await socks5Client.connect(targetHost, targetPort);
|
|
131009
|
-
await new Promise((
|
|
131009
|
+
await new Promise((resolve10, reject) => {
|
|
131010
131010
|
const timeout = setTimeout(() => {
|
|
131011
131011
|
reject(new Error("SOCKS5 connection timeout"));
|
|
131012
131012
|
}, 5000);
|
|
@@ -131014,7 +131014,7 @@ var require_socks5_proxy_agent = __commonJS((exports, module) => {
|
|
|
131014
131014
|
debug("SOCKS5 tunnel established to", targetHost, targetPort, "via", info);
|
|
131015
131015
|
clearTimeout(timeout);
|
|
131016
131016
|
socks5Client.removeListener("error", onError);
|
|
131017
|
-
|
|
131017
|
+
resolve10();
|
|
131018
131018
|
};
|
|
131019
131019
|
const onError = (err) => {
|
|
131020
131020
|
clearTimeout(timeout);
|
|
@@ -131052,8 +131052,8 @@ var require_socks5_proxy_agent = __commonJS((exports, module) => {
|
|
|
131052
131052
|
servername: targetHost,
|
|
131053
131053
|
...connectOpts.tls || {}
|
|
131054
131054
|
});
|
|
131055
|
-
await new Promise((
|
|
131056
|
-
finalSocket.once("secureConnect",
|
|
131055
|
+
await new Promise((resolve10, reject) => {
|
|
131056
|
+
finalSocket.once("secureConnect", resolve10);
|
|
131057
131057
|
finalSocket.once("error", reject);
|
|
131058
131058
|
});
|
|
131059
131059
|
}
|
|
@@ -131929,7 +131929,7 @@ var require_readable8 = __commonJS((exports, module) => {
|
|
|
131929
131929
|
if (this._readableState.closeEmitted) {
|
|
131930
131930
|
return Promise.resolve(null);
|
|
131931
131931
|
}
|
|
131932
|
-
return new Promise((
|
|
131932
|
+
return new Promise((resolve10, reject) => {
|
|
131933
131933
|
if (this[kContentLength] && this[kContentLength] > limit || this[kBytesRead] > limit) {
|
|
131934
131934
|
this.destroy(new AbortError);
|
|
131935
131935
|
}
|
|
@@ -131943,11 +131943,11 @@ var require_readable8 = __commonJS((exports, module) => {
|
|
|
131943
131943
|
if (signal.aborted) {
|
|
131944
131944
|
reject(signal.reason ?? new AbortError);
|
|
131945
131945
|
} else {
|
|
131946
|
-
|
|
131946
|
+
resolve10(null);
|
|
131947
131947
|
}
|
|
131948
131948
|
});
|
|
131949
131949
|
} else {
|
|
131950
|
-
this.on("close",
|
|
131950
|
+
this.on("close", resolve10);
|
|
131951
131951
|
}
|
|
131952
131952
|
this.on("error", noop).on("data", () => {
|
|
131953
131953
|
if (this[kBytesRead] > limit) {
|
|
@@ -131971,7 +131971,7 @@ var require_readable8 = __commonJS((exports, module) => {
|
|
|
131971
131971
|
}
|
|
131972
131972
|
function consume(stream, type) {
|
|
131973
131973
|
assert2(!stream[kConsume]);
|
|
131974
|
-
return new Promise((
|
|
131974
|
+
return new Promise((resolve10, reject) => {
|
|
131975
131975
|
if (isUnusable(stream)) {
|
|
131976
131976
|
const rState = stream._readableState;
|
|
131977
131977
|
if (rState.destroyed && rState.closeEmitted === false) {
|
|
@@ -131986,7 +131986,7 @@ var require_readable8 = __commonJS((exports, module) => {
|
|
|
131986
131986
|
stream[kConsume] = {
|
|
131987
131987
|
type,
|
|
131988
131988
|
stream,
|
|
131989
|
-
resolve:
|
|
131989
|
+
resolve: resolve10,
|
|
131990
131990
|
reject,
|
|
131991
131991
|
length: 0,
|
|
131992
131992
|
body: []
|
|
@@ -132059,18 +132059,18 @@ var require_readable8 = __commonJS((exports, module) => {
|
|
|
132059
132059
|
return buffer;
|
|
132060
132060
|
}
|
|
132061
132061
|
function consumeEnd(consume2, encoding) {
|
|
132062
|
-
const { type, body, resolve:
|
|
132062
|
+
const { type, body, resolve: resolve10, stream, length } = consume2;
|
|
132063
132063
|
try {
|
|
132064
132064
|
if (type === "text") {
|
|
132065
|
-
|
|
132065
|
+
resolve10(chunksDecode(body, length, encoding));
|
|
132066
132066
|
} else if (type === "json") {
|
|
132067
|
-
|
|
132067
|
+
resolve10(JSON.parse(chunksDecode(body, length, encoding)));
|
|
132068
132068
|
} else if (type === "arrayBuffer") {
|
|
132069
|
-
|
|
132069
|
+
resolve10(chunksConcat(body, length).buffer);
|
|
132070
132070
|
} else if (type === "blob") {
|
|
132071
|
-
|
|
132071
|
+
resolve10(new Blob(body, { type: stream[kContentType] }));
|
|
132072
132072
|
} else if (type === "bytes") {
|
|
132073
|
-
|
|
132073
|
+
resolve10(chunksConcat(body, length));
|
|
132074
132074
|
}
|
|
132075
132075
|
consumeFinish(consume2);
|
|
132076
132076
|
} catch (err) {
|
|
@@ -132257,9 +132257,9 @@ var require_api_request2 = __commonJS((exports, module) => {
|
|
|
132257
132257
|
}
|
|
132258
132258
|
function request(opts, callback2) {
|
|
132259
132259
|
if (callback2 === undefined) {
|
|
132260
|
-
return new Promise((
|
|
132260
|
+
return new Promise((resolve10, reject) => {
|
|
132261
132261
|
request.call(this, opts, (err, data2) => {
|
|
132262
|
-
return err ? reject(err) :
|
|
132262
|
+
return err ? reject(err) : resolve10(data2);
|
|
132263
132263
|
});
|
|
132264
132264
|
});
|
|
132265
132265
|
}
|
|
@@ -132465,9 +132465,9 @@ var require_api_stream2 = __commonJS((exports, module) => {
|
|
|
132465
132465
|
}
|
|
132466
132466
|
function stream(opts, factory, callback2) {
|
|
132467
132467
|
if (callback2 === undefined) {
|
|
132468
|
-
return new Promise((
|
|
132468
|
+
return new Promise((resolve10, reject) => {
|
|
132469
132469
|
stream.call(this, opts, factory, (err, data2) => {
|
|
132470
|
-
return err ? reject(err) :
|
|
132470
|
+
return err ? reject(err) : resolve10(data2);
|
|
132471
132471
|
});
|
|
132472
132472
|
});
|
|
132473
132473
|
}
|
|
@@ -132752,9 +132752,9 @@ var require_api_upgrade2 = __commonJS((exports, module) => {
|
|
|
132752
132752
|
}
|
|
132753
132753
|
function upgrade(opts, callback2) {
|
|
132754
132754
|
if (callback2 === undefined) {
|
|
132755
|
-
return new Promise((
|
|
132755
|
+
return new Promise((resolve10, reject) => {
|
|
132756
132756
|
upgrade.call(this, opts, (err, data2) => {
|
|
132757
|
-
return err ? reject(err) :
|
|
132757
|
+
return err ? reject(err) : resolve10(data2);
|
|
132758
132758
|
});
|
|
132759
132759
|
});
|
|
132760
132760
|
}
|
|
@@ -132845,9 +132845,9 @@ var require_api_connect2 = __commonJS((exports, module) => {
|
|
|
132845
132845
|
}
|
|
132846
132846
|
function connect(opts, callback2) {
|
|
132847
132847
|
if (callback2 === undefined) {
|
|
132848
|
-
return new Promise((
|
|
132848
|
+
return new Promise((resolve10, reject) => {
|
|
132849
132849
|
connect.call(this, opts, (err, data2) => {
|
|
132850
|
-
return err ? reject(err) :
|
|
132850
|
+
return err ? reject(err) : resolve10(data2);
|
|
132851
132851
|
});
|
|
132852
132852
|
});
|
|
132853
132853
|
}
|
|
@@ -133445,7 +133445,7 @@ var require_mock_interceptor2 = __commonJS((exports, module) => {
|
|
|
133445
133445
|
|
|
133446
133446
|
// node_modules/undici/lib/mock/mock-client.js
|
|
133447
133447
|
var require_mock_client2 = __commonJS((exports, module) => {
|
|
133448
|
-
var { promisify:
|
|
133448
|
+
var { promisify: promisify2 } = __require("node:util");
|
|
133449
133449
|
var Client2 = require_client2();
|
|
133450
133450
|
var { buildMockDispatch } = require_mock_utils2();
|
|
133451
133451
|
var {
|
|
@@ -133488,7 +133488,7 @@ var require_mock_client2 = __commonJS((exports, module) => {
|
|
|
133488
133488
|
this[kDispatches] = [];
|
|
133489
133489
|
}
|
|
133490
133490
|
async[kClose]() {
|
|
133491
|
-
await
|
|
133491
|
+
await promisify2(this[kOriginalClose])();
|
|
133492
133492
|
this[kConnected] = 0;
|
|
133493
133493
|
this[kMockAgent][Symbols.kClients].delete(this[kOrigin]);
|
|
133494
133494
|
}
|
|
@@ -133695,7 +133695,7 @@ var require_mock_call_history = __commonJS((exports, module) => {
|
|
|
133695
133695
|
|
|
133696
133696
|
// node_modules/undici/lib/mock/mock-pool.js
|
|
133697
133697
|
var require_mock_pool2 = __commonJS((exports, module) => {
|
|
133698
|
-
var { promisify:
|
|
133698
|
+
var { promisify: promisify2 } = __require("node:util");
|
|
133699
133699
|
var Pool2 = require_pool2();
|
|
133700
133700
|
var { buildMockDispatch } = require_mock_utils2();
|
|
133701
133701
|
var {
|
|
@@ -133738,7 +133738,7 @@ var require_mock_pool2 = __commonJS((exports, module) => {
|
|
|
133738
133738
|
this[kDispatches] = [];
|
|
133739
133739
|
}
|
|
133740
133740
|
async[kClose]() {
|
|
133741
|
-
await
|
|
133741
|
+
await promisify2(this[kOriginalClose])();
|
|
133742
133742
|
this[kConnected] = 0;
|
|
133743
133743
|
this[kMockAgent][Symbols.kClients].delete(this[kOrigin]);
|
|
133744
133744
|
}
|
|
@@ -134044,7 +134044,7 @@ var require_snapshot_utils = __commonJS((exports, module) => {
|
|
|
134044
134044
|
// node_modules/undici/lib/mock/snapshot-recorder.js
|
|
134045
134045
|
var require_snapshot_recorder = __commonJS((exports, module) => {
|
|
134046
134046
|
var { writeFile, readFile, mkdir } = __require("node:fs/promises");
|
|
134047
|
-
var { dirname: dirname11, resolve:
|
|
134047
|
+
var { dirname: dirname11, resolve: resolve10 } = __require("node:path");
|
|
134048
134048
|
var { setTimeout: setTimeout3, clearTimeout: clearTimeout2 } = __require("node:timers");
|
|
134049
134049
|
var { InvalidArgumentError: InvalidArgumentError3, UndiciError } = require_errors6();
|
|
134050
134050
|
var { hashId, isUrlExcludedFactory, normalizeHeaders, createHeaderFilters } = require_snapshot_utils();
|
|
@@ -134215,7 +134215,7 @@ var require_snapshot_recorder = __commonJS((exports, module) => {
|
|
|
134215
134215
|
throw new InvalidArgumentError3("Snapshot path is required");
|
|
134216
134216
|
}
|
|
134217
134217
|
try {
|
|
134218
|
-
const data2 = await readFile(
|
|
134218
|
+
const data2 = await readFile(resolve10(path4), "utf8");
|
|
134219
134219
|
const parsed = JSON.parse(data2);
|
|
134220
134220
|
if (Array.isArray(parsed)) {
|
|
134221
134221
|
this.#snapshots.clear();
|
|
@@ -134238,7 +134238,7 @@ var require_snapshot_recorder = __commonJS((exports, module) => {
|
|
|
134238
134238
|
if (!path4) {
|
|
134239
134239
|
throw new InvalidArgumentError3("Snapshot path is required");
|
|
134240
134240
|
}
|
|
134241
|
-
const resolvedPath =
|
|
134241
|
+
const resolvedPath = resolve10(path4);
|
|
134242
134242
|
await mkdir(dirname11(resolvedPath), { recursive: true });
|
|
134243
134243
|
const data2 = Array.from(this.#snapshots.entries()).map(([hash2, snapshot]) => ({
|
|
134244
134244
|
hash: hash2,
|
|
@@ -140186,7 +140186,7 @@ var require_fetch2 = __commonJS((exports, module) => {
|
|
|
140186
140186
|
const agent = fetchParams.controller.dispatcher;
|
|
140187
140187
|
const path4 = url2.pathname + url2.search;
|
|
140188
140188
|
const hasTrailingQuestionMark = url2.search.length === 0 && url2.href[url2.href.length - url2.hash.length - 1] === "?";
|
|
140189
|
-
return new Promise((
|
|
140189
|
+
return new Promise((resolve10, reject) => agent.dispatch({
|
|
140190
140190
|
path: hasTrailingQuestionMark ? `${path4}?` : path4,
|
|
140191
140191
|
origin: url2.origin,
|
|
140192
140192
|
method: request.method,
|
|
@@ -140268,7 +140268,7 @@ var require_fetch2 = __commonJS((exports, module) => {
|
|
|
140268
140268
|
}
|
|
140269
140269
|
}
|
|
140270
140270
|
const onError = this.onError.bind(this);
|
|
140271
|
-
|
|
140271
|
+
resolve10({
|
|
140272
140272
|
status,
|
|
140273
140273
|
statusText,
|
|
140274
140274
|
headersList,
|
|
@@ -140321,7 +140321,7 @@ var require_fetch2 = __commonJS((exports, module) => {
|
|
|
140321
140321
|
headersList.append(headerName, String(value), true);
|
|
140322
140322
|
}
|
|
140323
140323
|
}
|
|
140324
|
-
|
|
140324
|
+
resolve10({
|
|
140325
140325
|
status,
|
|
140326
140326
|
statusText: STATUS_CODES[status],
|
|
140327
140327
|
headersList,
|
|
@@ -140345,7 +140345,7 @@ var require_fetch2 = __commonJS((exports, module) => {
|
|
|
140345
140345
|
headersList.append(nameStr, value.toString("latin1"), true);
|
|
140346
140346
|
}
|
|
140347
140347
|
}
|
|
140348
|
-
|
|
140348
|
+
resolve10({
|
|
140349
140349
|
status,
|
|
140350
140350
|
statusText: STATUS_CODES[status],
|
|
140351
140351
|
headersList,
|
|
@@ -144354,7 +144354,7 @@ async function fromURL(url2, options = {}) {
|
|
|
144354
144354
|
path: urlObject.pathname + urlObject.search,
|
|
144355
144355
|
...requestOptions
|
|
144356
144356
|
};
|
|
144357
|
-
const promise3 = new Promise((
|
|
144357
|
+
const promise3 = new Promise((resolve10, reject) => {
|
|
144358
144358
|
undiciStream = new $Client(urlObject.origin).compose($interceptors2.redirect({ maxRedirections: 5 })).stream(streamOptions, (res) => {
|
|
144359
144359
|
var _a6, _b;
|
|
144360
144360
|
if (res.statusCode < 200 || res.statusCode >= 300) {
|
|
@@ -144376,7 +144376,7 @@ async function fromURL(url2, options = {}) {
|
|
|
144376
144376
|
baseURI,
|
|
144377
144377
|
...cheerioOptions
|
|
144378
144378
|
};
|
|
144379
|
-
return decodeStream(opts, (err, $3) => err ? reject(err) :
|
|
144379
|
+
return decodeStream(opts, (err, $3) => err ? reject(err) : resolve10($3));
|
|
144380
144380
|
});
|
|
144381
144381
|
});
|
|
144382
144382
|
await undiciStream;
|
|
@@ -144506,8 +144506,8 @@ async function uploadFile(localPath) {
|
|
|
144506
144506
|
}
|
|
144507
144507
|
const zipData = [];
|
|
144508
144508
|
const source = fs52.createReadStream(localPath);
|
|
144509
|
-
return new Promise((
|
|
144510
|
-
import_archiver.default("zip").on("error", (err) => reject(err)).on("data", (data2) => zipData.push(data2)).on("end", () => this.file(Buffer.concat(zipData).toString("base64")).then((localPath2) =>
|
|
144509
|
+
return new Promise((resolve10, reject) => {
|
|
144510
|
+
import_archiver.default("zip").on("error", (err) => reject(err)).on("data", (data2) => zipData.push(data2)).on("end", () => this.file(Buffer.concat(zipData).toString("base64")).then((localPath2) => resolve10(localPath2), reject)).append(source, { name: path5.basename(localPath) }).finalize();
|
|
144511
144511
|
});
|
|
144512
144512
|
}
|
|
144513
144513
|
function isUnknownMethodError(err) {
|
|
@@ -144620,19 +144620,19 @@ async function takeScreenshotBidi(filepath, options) {
|
|
|
144620
144620
|
type: imageFormat,
|
|
144621
144621
|
quality
|
|
144622
144622
|
};
|
|
144623
|
-
const
|
|
144623
|
+
const clip2 = options?.clip ? {
|
|
144624
144624
|
type: "box",
|
|
144625
144625
|
x: options.clip.x,
|
|
144626
144626
|
y: options.clip.y,
|
|
144627
144627
|
width: options.clip.width,
|
|
144628
144628
|
height: options.clip.height
|
|
144629
144629
|
} : undefined;
|
|
144630
|
-
if (
|
|
144631
|
-
if (typeof
|
|
144630
|
+
if (clip2) {
|
|
144631
|
+
if (typeof clip2.x !== "number" || typeof clip2.y !== "number" || typeof clip2.width !== "number" || typeof clip2.height !== "number") {
|
|
144632
144632
|
throw new Error("Invalid clip, use an object with x, y, width and height properties");
|
|
144633
144633
|
}
|
|
144634
144634
|
}
|
|
144635
|
-
const { data: data2 } = contextManager.findParentContext(context, tree.contexts) ? await browser.$("html").getElement().then((el) => this.takeElementScreenshot(el.elementId).then((data22) => ({ data: data22 }))) : await this.browsingContextCaptureScreenshot({ context, origin, format, clip });
|
|
144635
|
+
const { data: data2 } = contextManager.findParentContext(context, tree.contexts) ? await browser.$("html").getElement().then((el) => this.takeElementScreenshot(el.elementId).then((data22) => ({ data: data22 }))) : await this.browsingContextCaptureScreenshot({ context, origin, format, clip: clip2 });
|
|
144636
144636
|
return data2;
|
|
144637
144637
|
}
|
|
144638
144638
|
async function saveElementScreenshot(filepath) {
|
|
@@ -145021,7 +145021,7 @@ function debug(commandTimeout = 5000) {
|
|
|
145021
145021
|
});
|
|
145022
145022
|
}
|
|
145023
145023
|
});
|
|
145024
|
-
return new Promise((
|
|
145024
|
+
return new Promise((resolve10) => commandResolve = resolve10);
|
|
145025
145025
|
}
|
|
145026
145026
|
async function deleteCookies(filter5) {
|
|
145027
145027
|
const filterArray2 = typeof filter5 === "undefined" ? undefined : Array.isArray(filter5) ? filter5 : [filter5];
|
|
@@ -145599,7 +145599,7 @@ async function newWindow2(url2, { type = "window", windowName = "", windowFeatur
|
|
|
145599
145599
|
return { handle: newTab, type };
|
|
145600
145600
|
}
|
|
145601
145601
|
function pause(milliseconds = 1000) {
|
|
145602
|
-
return new Promise((
|
|
145602
|
+
return new Promise((resolve10) => setTimeout(resolve10, milliseconds));
|
|
145603
145603
|
}
|
|
145604
145604
|
async function react$$3(selector, { props = {}, state: state2 = {} } = {}) {
|
|
145605
145605
|
await this.executeScript(resqScript, []);
|
|
@@ -146528,7 +146528,7 @@ async function getCurrentContexts({
|
|
|
146528
146528
|
}
|
|
146529
146529
|
return parsedContexts;
|
|
146530
146530
|
}
|
|
146531
|
-
await new Promise((
|
|
146531
|
+
await new Promise((resolve10) => setTimeout(resolve10, retryInterval));
|
|
146532
146532
|
}
|
|
146533
146533
|
throw new Error(`The packageName '${packageName}' ${isPackageNameMissing ? "could not be found!" : "matches, but no webview with pages was loaded in this response: " + JSON.stringify(contexts) + "'"}`);
|
|
146534
146534
|
}
|
|
@@ -151128,8 +151128,8 @@ window.__wdio_sinon = withGlobal(globalThis);
|
|
|
151128
151128
|
this._fn = _fn;
|
|
151129
151129
|
this._leading = _leading;
|
|
151130
151130
|
this._signal = _signal;
|
|
151131
|
-
this.#retPromise = new Promise((
|
|
151132
|
-
this._resolve =
|
|
151131
|
+
this.#retPromise = new Promise((resolve10, reject) => {
|
|
151132
|
+
this._resolve = resolve10;
|
|
151133
151133
|
this._reject = reject;
|
|
151134
151134
|
});
|
|
151135
151135
|
this._start();
|
|
@@ -155130,6 +155130,9 @@ function errorCode(err) {
|
|
|
155130
155130
|
function isNoEntError(err) {
|
|
155131
155131
|
return errorCode(err) === "ENOENT";
|
|
155132
155132
|
}
|
|
155133
|
+
function isTimeoutError(err) {
|
|
155134
|
+
return err instanceof Error && err.name === "TimeoutError";
|
|
155135
|
+
}
|
|
155133
155136
|
var missingPackagePattern = /Cannot find (?:package|module) '([^']+)'/;
|
|
155134
155137
|
var pathLikeSpecifierPattern = /^(?:\.|\/|[A-Za-z]:[\\/])/;
|
|
155135
155138
|
function extractMissingPackage(text) {
|
|
@@ -155140,6 +155143,11 @@ function extractMissingPackage(text) {
|
|
|
155140
155143
|
return specifier;
|
|
155141
155144
|
}
|
|
155142
155145
|
|
|
155146
|
+
// src/core/formatSeconds.ts
|
|
155147
|
+
function formatSeconds(ms) {
|
|
155148
|
+
return `${Math.round(ms / 1000)}s`;
|
|
155149
|
+
}
|
|
155150
|
+
|
|
155143
155151
|
// src/core/messages/auth.ts
|
|
155144
155152
|
var authMessages = {
|
|
155145
155153
|
title: "QA Wolf Authentication",
|
|
@@ -155174,7 +155182,8 @@ var authMessages = {
|
|
|
155174
155182
|
invalidOrUnauthorized: "API key is invalid or unauthorized",
|
|
155175
155183
|
unexpectedFormat: "Could not verify API key: unexpected response format",
|
|
155176
155184
|
couldNotVerify: (detail, status) => `Could not verify API key: ${detail || `HTTP ${status}`}`,
|
|
155177
|
-
couldNotVerifyNetwork: (cause) => `Could not verify API key: ${cause}
|
|
155185
|
+
couldNotVerifyNetwork: (cause) => `Could not verify API key: ${cause}`,
|
|
155186
|
+
timedOut: (timeoutMs) => `Could not verify API key: the QA Wolf API did not answer within ${formatSeconds(timeoutMs)}.`
|
|
155178
155187
|
},
|
|
155179
155188
|
request: {
|
|
155180
155189
|
rejected401: (noun) => `QA Wolf API rejected the${noun ? ` ${noun}` : ""} request (HTTP 401). Check your API key.`,
|
|
@@ -155182,12 +155191,14 @@ var authMessages = {
|
|
|
155182
155191
|
notFound404: (noun) => `QA Wolf API could not find ${noun ? `${noun} for that environment` : "that environment"} (HTTP 404). Check the --env value.`,
|
|
155183
155192
|
failedWithStatus: (status, noun) => `QA Wolf API${noun ? ` ${noun}` : ""} request failed (HTTP ${status}).`,
|
|
155184
155193
|
networkUnreachable: (baseUrl, noun) => `Could not reach the QA Wolf API at ${baseUrl}${noun ? ` to fetch ${noun}` : ""}. Check your network connection and QAWOLF_HOST_URL.`,
|
|
155194
|
+
timedOut: (timeoutMs, noun) => `The QA Wolf API${noun ? ` ${noun}` : ""} request timed out after ${formatSeconds(timeoutMs)}. The work may still be finishing on the platform.`,
|
|
155185
155195
|
unexpectedResponse: (noun) => `Unexpected${noun ? ` ${noun}` : ""} response from the QA Wolf API.`
|
|
155186
155196
|
},
|
|
155187
155197
|
bundle: {
|
|
155188
155198
|
linkExpired: "The flow bundle download link has expired. Please run `qawolf flows pull` again to refresh.",
|
|
155189
155199
|
failedWithStatus: (status) => `Could not download the flow bundle (HTTP ${status}).`,
|
|
155190
155200
|
networkUnreachable: "Could not reach the flow bundle storage. Check your network connection and try again.",
|
|
155201
|
+
timedOut: (timeoutMs) => `Downloading the flow bundle timed out after ${formatSeconds(timeoutMs)}. Please try again.`,
|
|
155191
155202
|
malformed: "The flow bundle download was malformed. Please run `qawolf flows pull` again."
|
|
155192
155203
|
}
|
|
155193
155204
|
},
|
|
@@ -155205,6 +155216,21 @@ var authMessages = {
|
|
|
155205
155216
|
`)
|
|
155206
155217
|
}
|
|
155207
155218
|
};
|
|
155219
|
+
// src/core/messages/toolNotFound.ts
|
|
155220
|
+
var installRemedy = "Run `qawolf install` to install the runtime dependencies.";
|
|
155221
|
+
function toolNotInstalled(tool, path) {
|
|
155222
|
+
const located = path === undefined ? `${tool} is not installed.` : `${tool} not found at ${path}.`;
|
|
155223
|
+
return `${located}
|
|
155224
|
+
${installRemedy}`;
|
|
155225
|
+
}
|
|
155226
|
+
function toolNotRunnable(what, detail) {
|
|
155227
|
+
return `${what} (${detail}).
|
|
155228
|
+
${installRemedy}`;
|
|
155229
|
+
}
|
|
155230
|
+
function packageLoadFailed(pkg, envDir, detail) {
|
|
155231
|
+
return toolNotRunnable(`Could not load ${pkg} from ${envDir}`, detail);
|
|
155232
|
+
}
|
|
155233
|
+
|
|
155208
155234
|
// src/core/messages/doctor.ts
|
|
155209
155235
|
var doctorMessages = {
|
|
155210
155236
|
intro: "qawolf doctor",
|
|
@@ -155242,14 +155268,13 @@ var doctorMessages = {
|
|
|
155242
155268
|
notInstalled: "npm is not installed or not on PATH"
|
|
155243
155269
|
},
|
|
155244
155270
|
playwright: {
|
|
155245
|
-
notFound:
|
|
155271
|
+
notFound: (path) => toolNotInstalled("Playwright", path),
|
|
155246
155272
|
launchFailed: "Could not launch Playwright. Try reinstalling the qawolf CLI.",
|
|
155247
155273
|
versionUnparseable: "Could not parse playwright version output"
|
|
155248
155274
|
},
|
|
155249
155275
|
appium: {
|
|
155250
|
-
|
|
155251
|
-
|
|
155252
|
-
driverListFailed: (detail) => `Could not run \`appium driver list\` (${detail}). The Appium binary may be broken — try \`qawolf flows run\` to reinstall.`,
|
|
155276
|
+
notFound: (path) => toolNotInstalled("Appium", path),
|
|
155277
|
+
driverListFailed: (detail) => toolNotRunnable("Could not run `appium driver list`", detail),
|
|
155253
155278
|
cannotCheckDriverList: "Cannot check driver list without Appium binary.",
|
|
155254
155279
|
uiautomator2NotInstalled: "uiautomator2 driver not installed. Run `qawolf install android` to install it."
|
|
155255
155280
|
},
|
|
@@ -155355,6 +155380,7 @@ var installMessages = {
|
|
|
155355
155380
|
` + "Install Android Studio and open Tools > SDK Manager to install the SDK.",
|
|
155356
155381
|
installingBrowser: (browser) => `Install ${browser}`,
|
|
155357
155382
|
browsersInstalled: (count) => `Installed ${pluralize(count, "browser")}.`,
|
|
155383
|
+
playwrightNotFound: (playwrightPath) => toolNotInstalled("Playwright", playwrightPath),
|
|
155358
155384
|
playwrightInstallFailed: (browser, detail) => `playwright install ${browser} failed: ${detail}`,
|
|
155359
155385
|
playwrightInstallLaunchFailed: (browser) => `playwright install ${browser} failed: process failed to launch`,
|
|
155360
155386
|
clear: {
|
|
@@ -155381,11 +155407,13 @@ var installMessages = {
|
|
|
155381
155407
|
avdAlreadyExists: (avdName) => `AVD ${avdName} already exists, skipping.`,
|
|
155382
155408
|
creatingAvd: (avdName) => `Creating AVD ${avdName}`,
|
|
155383
155409
|
avdmanagerCreateFailed: (avdName, detail) => `avdmanager failed to create ${avdName}: ${detail}`,
|
|
155384
|
-
uiautomator2InstallFailed: (detail) => `appium driver install uiautomator2 failed: ${detail}
|
|
155410
|
+
uiautomator2InstallFailed: (detail) => `appium driver install uiautomator2 failed: ${detail}`,
|
|
155411
|
+
appiumNotFound: (appiumPath) => toolNotInstalled("Appium", appiumPath)
|
|
155385
155412
|
}
|
|
155386
155413
|
};
|
|
155387
155414
|
// src/core/messages/runner.ts
|
|
155388
155415
|
var runnerMessages = {
|
|
155416
|
+
playwrightLoadFailed: (envDir, detail) => packageLoadFailed("Playwright", envDir, detail),
|
|
155389
155417
|
androidWorkersUnsupported: "Android flows are not yet supported with --workers > 1; rerun Android flows with --workers 1.",
|
|
155390
155418
|
noFlowsMatched: "No flows matched.",
|
|
155391
155419
|
androidBootFailed: "Android boot failed",
|
|
@@ -155406,9 +155434,18 @@ var runnerMessages = {
|
|
|
155406
155434
|
managedRuntimeNote: (dir) => `Using managed runtime — override with --deps <dir> or QAWOLF_RUNTIME_DIR:
|
|
155407
155435
|
${dir}`,
|
|
155408
155436
|
installingProjectDeps: (count) => `Installing ${pluralize(count, "project dependency", "project dependencies")}…`,
|
|
155437
|
+
depsDirIncomplete: (dir, failures) => [
|
|
155438
|
+
`--deps directory ${dir} is missing required pinned dependencies:`,
|
|
155439
|
+
...failures.map((failure) => ` - ${failure}`),
|
|
155440
|
+
`Run 'npm install' in that directory or point to a valid managed env directory.`
|
|
155441
|
+
].join(`
|
|
155442
|
+
`),
|
|
155409
155443
|
outerHopCandidateRejected: (dir, missing) => `outer-hop candidate rejected: ${dir} missing ${missing.join(", ")}`,
|
|
155410
155444
|
moduleNotFoundHint: (pkg, projectDir) => projectDir === undefined ? `Hint: '${pkg}' could not be resolved. Run from within your flows project so its dependencies can be found.` : `Hint: '${pkg}' could not be resolved. Ensure it is declared in ${projectDir}/package.json "dependencies" and run npm install in that project.`
|
|
155411
155445
|
};
|
|
155446
|
+
// src/core/paths.ts
|
|
155447
|
+
import { join } from "node:path";
|
|
155448
|
+
|
|
155412
155449
|
// node_modules/env-paths/index.js
|
|
155413
155450
|
import path from "node:path";
|
|
155414
155451
|
import os from "node:os";
|
|
@@ -155509,6 +155546,9 @@ function getDataDir() {
|
|
|
155509
155546
|
_paths ??= envPaths("qawolf");
|
|
155510
155547
|
return _paths.data;
|
|
155511
155548
|
}
|
|
155549
|
+
function getAppiumHome() {
|
|
155550
|
+
return join(getDataDir(), "appium");
|
|
155551
|
+
}
|
|
155512
155552
|
|
|
155513
155553
|
// src/shell/exit.ts
|
|
155514
155554
|
var exitCodes = {
|
|
@@ -155639,7 +155679,7 @@ function resolveHostUrl(env2) {
|
|
|
155639
155679
|
import { Entry as Entry3 } from "@napi-rs/keyring";
|
|
155640
155680
|
|
|
155641
155681
|
// src/domains/auth/store/delete.ts
|
|
155642
|
-
import { join } from "node:path";
|
|
155682
|
+
import { join as join2 } from "node:path";
|
|
155643
155683
|
import { Entry } from "@napi-rs/keyring";
|
|
155644
155684
|
|
|
155645
155685
|
// src/domains/auth/store/constants.ts
|
|
@@ -155658,7 +155698,7 @@ function deleteFromKeychain() {
|
|
|
155658
155698
|
}
|
|
155659
155699
|
async function deleteFromFile(configDir, fs2) {
|
|
155660
155700
|
try {
|
|
155661
|
-
await fs2.unlink(
|
|
155701
|
+
await fs2.unlink(join2(configDir, credentialsFile));
|
|
155662
155702
|
return "deleted";
|
|
155663
155703
|
} catch {
|
|
155664
155704
|
return "not-found";
|
|
@@ -155672,7 +155712,7 @@ async function deleteApiKey(configDir, fs2) {
|
|
|
155672
155712
|
return { keychain, file };
|
|
155673
155713
|
}
|
|
155674
155714
|
// src/domains/auth/store/load.ts
|
|
155675
|
-
import { join as
|
|
155715
|
+
import { join as join3 } from "node:path";
|
|
155676
155716
|
|
|
155677
155717
|
// node_modules/zod/v4/classic/external.js
|
|
155678
155718
|
var exports_external = {};
|
|
@@ -169967,7 +170007,7 @@ async function loadApiKey(configDir, deps) {
|
|
|
169967
170007
|
errors3.keychain = errorMessage(err);
|
|
169968
170008
|
}
|
|
169969
170009
|
try {
|
|
169970
|
-
const content = await deps.fs.readFile(
|
|
170010
|
+
const content = await deps.fs.readFile(join3(configDir, credentialsFile));
|
|
169971
170011
|
const parsed = credentialsFileSchema.safeParse(JSON.parse(content));
|
|
169972
170012
|
if (parsed.success) {
|
|
169973
170013
|
return { found: true, key: parsed.data.apiKey, source: "file" };
|
|
@@ -169979,12 +170019,12 @@ async function loadApiKey(configDir, deps) {
|
|
|
169979
170019
|
return { found: false, errors: errors3 };
|
|
169980
170020
|
}
|
|
169981
170021
|
// src/domains/auth/store/save.ts
|
|
169982
|
-
import { join as
|
|
170022
|
+
import { join as join4 } from "node:path";
|
|
169983
170023
|
import { Entry as Entry2 } from "@napi-rs/keyring";
|
|
169984
170024
|
async function saveToFile(configDir, key, fs2) {
|
|
169985
170025
|
const payload = { apiKey: key };
|
|
169986
170026
|
await fs2.mkdir(configDir, { recursive: true, mode: 448 });
|
|
169987
|
-
await fs2.writeFile(
|
|
170027
|
+
await fs2.writeFile(join4(configDir, credentialsFile), JSON.stringify(payload, undefined, 2), { mode: 384 });
|
|
169988
170028
|
}
|
|
169989
170029
|
async function saveApiKey(configDir, key, fs2) {
|
|
169990
170030
|
try {
|
|
@@ -170024,7 +170064,7 @@ async function requireApiKey(configDir, fs2, deps) {
|
|
|
170024
170064
|
}
|
|
170025
170065
|
// src/domains/auth/validate.ts
|
|
170026
170066
|
async function validateApiKey(deps) {
|
|
170027
|
-
const result = await deps.
|
|
170067
|
+
const result = await deps.platformClient.getIdentity();
|
|
170028
170068
|
if (!result.ok) {
|
|
170029
170069
|
return { valid: false, error: result.error };
|
|
170030
170070
|
}
|
|
@@ -170036,9 +170076,9 @@ async function validateApiKey(deps) {
|
|
|
170036
170076
|
// src/shell/logger.ts
|
|
170037
170077
|
var import_pino = __toESM(require_pino(), 1);
|
|
170038
170078
|
import { mkdirSync as mkdirSync2, openSync } from "node:fs";
|
|
170039
|
-
import { dirname, join as
|
|
170079
|
+
import { dirname, join as join5 } from "node:path";
|
|
170040
170080
|
function defaultLogPath() {
|
|
170041
|
-
return
|
|
170081
|
+
return join5(envPaths("qawolf", { suffix: "" }).log, "cli.log");
|
|
170042
170082
|
}
|
|
170043
170083
|
function resolveStderrLevel(env2, verbose) {
|
|
170044
170084
|
if (verbose)
|
|
@@ -170118,6 +170158,8 @@ function describeIdentityError(err) {
|
|
|
170118
170158
|
if (err.kind === "network") {
|
|
170119
170159
|
return m.identity.couldNotVerifyNetwork(err.cause.message);
|
|
170120
170160
|
}
|
|
170161
|
+
if (err.kind === "timeout")
|
|
170162
|
+
return m.identity.timedOut(err.timeoutMs);
|
|
170121
170163
|
return m.identity.unexpectedFormat;
|
|
170122
170164
|
}
|
|
170123
170165
|
function parseErrorBody(body) {
|
|
@@ -170144,6 +170186,8 @@ function describeRequestError(err, baseUrl, noun) {
|
|
|
170144
170186
|
if (err.kind === "network") {
|
|
170145
170187
|
return m.request.networkUnreachable(baseUrl, noun);
|
|
170146
170188
|
}
|
|
170189
|
+
if (err.kind === "timeout")
|
|
170190
|
+
return m.request.timedOut(err.timeoutMs, noun);
|
|
170147
170191
|
return m.request.unexpectedResponse(noun);
|
|
170148
170192
|
}
|
|
170149
170193
|
function describeBundleDownloadError(err) {
|
|
@@ -170154,6 +170198,8 @@ function describeBundleDownloadError(err) {
|
|
|
170154
170198
|
}
|
|
170155
170199
|
if (err.kind === "network")
|
|
170156
170200
|
return m.bundle.networkUnreachable;
|
|
170201
|
+
if (err.kind === "timeout")
|
|
170202
|
+
return m.bundle.timedOut(err.timeoutMs);
|
|
170157
170203
|
return m.bundle.malformed;
|
|
170158
170204
|
}
|
|
170159
170205
|
function describeTeamStorageDownloadError(path2, err) {
|
|
@@ -170166,6 +170212,9 @@ function describeTeamStorageDownloadError(path2, err) {
|
|
|
170166
170212
|
if (err.kind === "network") {
|
|
170167
170213
|
return `Could not reach team-storage while downloading ${path2}. Check your network connection and try again.`;
|
|
170168
170214
|
}
|
|
170215
|
+
if (err.kind === "timeout") {
|
|
170216
|
+
return `Downloading the team-storage asset ${path2} timed out after ${formatSeconds(err.timeoutMs)}. Please try again.`;
|
|
170217
|
+
}
|
|
170169
170218
|
return `The team-storage download for ${path2} was malformed. Please run \`qawolf flows pull\` again.`;
|
|
170170
170219
|
}
|
|
170171
170220
|
|
|
@@ -170181,7 +170230,7 @@ async function requestWithRetry(args) {
|
|
|
170181
170230
|
if (result.ok)
|
|
170182
170231
|
return { ok: true, value: result.data };
|
|
170183
170232
|
const backoff = args.backoffMs[attempt];
|
|
170184
|
-
const retryable = result.error.kind === "network";
|
|
170233
|
+
const retryable = result.error.kind === "network" || result.error.kind === "timeout";
|
|
170185
170234
|
if (backoff === undefined || !retryable) {
|
|
170186
170235
|
return { ok: false, error: args.describe(result.error) };
|
|
170187
170236
|
}
|
|
@@ -170190,16 +170239,16 @@ async function requestWithRetry(args) {
|
|
|
170190
170239
|
}
|
|
170191
170240
|
|
|
170192
170241
|
// src/shell/platform/callPublicApi.ts
|
|
170193
|
-
function callPublicApi(trpc, contract, input) {
|
|
170242
|
+
function callPublicApi(trpc, contract, input, options) {
|
|
170194
170243
|
const path2 = `public.${contract.name}`;
|
|
170195
170244
|
if (contract.kind === "read") {
|
|
170196
|
-
return trpc.query(path2, input, contract.output);
|
|
170245
|
+
return trpc.query(path2, input, contract.output, options);
|
|
170197
170246
|
}
|
|
170198
|
-
return trpc.mutation(path2, input, contract.output);
|
|
170247
|
+
return trpc.mutation(path2, input, contract.output, options);
|
|
170199
170248
|
}
|
|
170200
170249
|
function makeCallPublicApiMethod(trpc, deps, readBackoffMs) {
|
|
170201
|
-
return async (contract, input) => requestWithRetry({
|
|
170202
|
-
call: () => callPublicApi(trpc, contract, input),
|
|
170250
|
+
return async (contract, input, options) => requestWithRetry({
|
|
170251
|
+
call: () => callPublicApi(trpc, contract, input, options),
|
|
170203
170252
|
backoffMs: contract.kind === "read" ? readBackoffMs : [],
|
|
170204
170253
|
describe: (err) => describeRequestError(err, deps.baseUrl, contract.name),
|
|
170205
170254
|
sleep: deps.sleep
|
|
@@ -171002,52 +171051,18 @@ function toError(value) {
|
|
|
171002
171051
|
return value instanceof Error ? value : new Error(String(value));
|
|
171003
171052
|
}
|
|
171004
171053
|
|
|
171005
|
-
// src/shell/platform/
|
|
171006
|
-
|
|
171007
|
-
function createTrpcClient(apiKey, deps) {
|
|
171008
|
-
const authHeader = { Authorization: `Bearer ${apiKey}` };
|
|
171009
|
-
const { logger } = deps;
|
|
171010
|
-
async function withLogging(path2, call) {
|
|
171011
|
-
logger?.debug(`→ ${path2}`);
|
|
171012
|
-
const result = await call();
|
|
171013
|
-
if (result.ok) {
|
|
171014
|
-
logger?.debug(`← ${path2} ok`);
|
|
171015
|
-
} else {
|
|
171016
|
-
const e = result.error;
|
|
171017
|
-
const raw = e.kind === "http" ? e.body : e.cause.message;
|
|
171018
|
-
const clipped = raw.length > 200 ? raw.slice(0, 200) + "…" : raw;
|
|
171019
|
-
const msg = e.kind === "http" ? `${e.status} ${clipped}` : clipped;
|
|
171020
|
-
logger?.warn(`← ${path2} error (${e.kind}): ${msg}`);
|
|
171021
|
-
}
|
|
171022
|
-
return result;
|
|
171023
|
-
}
|
|
171024
|
-
return {
|
|
171025
|
-
query: (path2, input, schema) => {
|
|
171026
|
-
const encoded = encodeURIComponent(JSON.stringify(dist_default.serialize(input)));
|
|
171027
|
-
const url2 = `${deps.baseUrl}/api/trpc/${path2}?input=${encoded}`;
|
|
171028
|
-
return withLogging(path2, () => send(deps.fetch, url2, {
|
|
171029
|
-
headers: authHeader,
|
|
171030
|
-
method: "GET",
|
|
171031
|
-
signal: AbortSignal.timeout(timeoutMs)
|
|
171032
|
-
}, schema));
|
|
171033
|
-
},
|
|
171034
|
-
mutation: (path2, input, schema) => {
|
|
171035
|
-
const url2 = `${deps.baseUrl}/api/trpc/${path2}`;
|
|
171036
|
-
const body = JSON.stringify(dist_default.serialize(input));
|
|
171037
|
-
return withLogging(path2, () => send(deps.fetch, url2, {
|
|
171038
|
-
body,
|
|
171039
|
-
headers: { ...authHeader, "content-type": "application/json" },
|
|
171040
|
-
method: "POST",
|
|
171041
|
-
signal: AbortSignal.timeout(timeoutMs)
|
|
171042
|
-
}, schema));
|
|
171043
|
-
}
|
|
171044
|
-
};
|
|
171045
|
-
}
|
|
171046
|
-
async function send(fetchFn, url2, init, schema) {
|
|
171054
|
+
// src/shell/platform/sendWireRequest.ts
|
|
171055
|
+
async function sendWireRequest(fetchFn, url2, init, schema, timeoutMs) {
|
|
171047
171056
|
let response;
|
|
171048
171057
|
try {
|
|
171049
|
-
response = await fetchFn(url2,
|
|
171058
|
+
response = await fetchFn(url2, {
|
|
171059
|
+
...init,
|
|
171060
|
+
signal: AbortSignal.timeout(timeoutMs)
|
|
171061
|
+
});
|
|
171050
171062
|
} catch (error51) {
|
|
171063
|
+
if (isTimeoutError(error51)) {
|
|
171064
|
+
return { ok: false, error: { kind: "timeout", timeoutMs } };
|
|
171065
|
+
}
|
|
171051
171066
|
return { ok: false, error: { cause: toError(error51), kind: "network" } };
|
|
171052
171067
|
}
|
|
171053
171068
|
if (!response.ok) {
|
|
@@ -171061,6 +171076,9 @@ async function send(fetchFn, url2, init, schema) {
|
|
|
171061
171076
|
try {
|
|
171062
171077
|
body = await response.json();
|
|
171063
171078
|
} catch (error51) {
|
|
171079
|
+
if (isTimeoutError(error51)) {
|
|
171080
|
+
return { ok: false, error: { kind: "timeout", timeoutMs } };
|
|
171081
|
+
}
|
|
171064
171082
|
return { ok: false, error: { cause: toError(error51), kind: "parse" } };
|
|
171065
171083
|
}
|
|
171066
171084
|
try {
|
|
@@ -171082,23 +171100,71 @@ function unwrap(body) {
|
|
|
171082
171100
|
return dist_default.deserialize(data);
|
|
171083
171101
|
return data;
|
|
171084
171102
|
}
|
|
171085
|
-
var isRecord = (
|
|
171086
|
-
var isSuperJSONResult = (
|
|
171103
|
+
var isRecord = (value) => typeof value === "object" && value !== null;
|
|
171104
|
+
var isSuperJSONResult = (value) => isRecord(value) && ("json" in value);
|
|
171105
|
+
|
|
171106
|
+
// src/shell/platform/createTrpcClient.ts
|
|
171107
|
+
var defaultRequestTimeoutMs = 15000;
|
|
171108
|
+
function createTrpcClient(apiKey, deps) {
|
|
171109
|
+
const authHeader = { Authorization: `Bearer ${apiKey}` };
|
|
171110
|
+
const { logger } = deps;
|
|
171111
|
+
const defaultTimeoutMs2 = deps.defaultTimeoutMs ?? defaultRequestTimeoutMs;
|
|
171112
|
+
async function withLogging(path2, call) {
|
|
171113
|
+
logger?.debug(`→ ${path2}`);
|
|
171114
|
+
const result = await call();
|
|
171115
|
+
if (result.ok) {
|
|
171116
|
+
logger?.debug(`← ${path2} ok`);
|
|
171117
|
+
} else {
|
|
171118
|
+
const e = result.error;
|
|
171119
|
+
logger?.warn(`← ${path2} error (${e.kind}): ${summarize(e)}`);
|
|
171120
|
+
}
|
|
171121
|
+
return result;
|
|
171122
|
+
}
|
|
171123
|
+
return {
|
|
171124
|
+
query: (path2, input, schema, options) => {
|
|
171125
|
+
const encoded = encodeURIComponent(JSON.stringify(dist_default.serialize(input)));
|
|
171126
|
+
const url2 = `${deps.baseUrl}/api/trpc/${path2}?input=${encoded}`;
|
|
171127
|
+
return withLogging(path2, () => sendWireRequest(deps.fetch, url2, { headers: authHeader, method: "GET" }, schema, options?.timeoutMs ?? defaultTimeoutMs2));
|
|
171128
|
+
},
|
|
171129
|
+
mutation: (path2, input, schema, options) => {
|
|
171130
|
+
const url2 = `${deps.baseUrl}/api/trpc/${path2}`;
|
|
171131
|
+
const body = JSON.stringify(dist_default.serialize(input));
|
|
171132
|
+
return withLogging(path2, () => sendWireRequest(deps.fetch, url2, {
|
|
171133
|
+
body,
|
|
171134
|
+
headers: { ...authHeader, "content-type": "application/json" },
|
|
171135
|
+
method: "POST"
|
|
171136
|
+
}, schema, options?.timeoutMs ?? defaultTimeoutMs2));
|
|
171137
|
+
}
|
|
171138
|
+
};
|
|
171139
|
+
}
|
|
171140
|
+
function clip(text) {
|
|
171141
|
+
return text.length > 200 ? text.slice(0, 200) + "…" : text;
|
|
171142
|
+
}
|
|
171143
|
+
function summarize(error51) {
|
|
171144
|
+
if (error51.kind === "http")
|
|
171145
|
+
return `${error51.status} ${clip(error51.body)}`;
|
|
171146
|
+
if (error51.kind === "timeout")
|
|
171147
|
+
return `timed out after ${error51.timeoutMs}ms`;
|
|
171148
|
+
return clip(error51.cause.message);
|
|
171149
|
+
}
|
|
171087
171150
|
|
|
171088
171151
|
// src/shell/platform/downloadBundle.ts
|
|
171089
171152
|
import { randomBytes } from "node:crypto";
|
|
171090
171153
|
import { tmpdir as tmpdir2 } from "node:os";
|
|
171091
|
-
import { join as
|
|
171154
|
+
import { join as join6 } from "node:path";
|
|
171092
171155
|
|
|
171093
171156
|
// src/shell/platform/fetchSignedUrl.ts
|
|
171094
|
-
var
|
|
171157
|
+
var timeoutMs = 30000;
|
|
171095
171158
|
async function fetchSignedUrl(args, deps = { fetch: globalThis.fetch }) {
|
|
171096
171159
|
let response;
|
|
171097
171160
|
try {
|
|
171098
171161
|
response = await deps.fetch(args.url, {
|
|
171099
|
-
signal: AbortSignal.timeout(
|
|
171162
|
+
signal: AbortSignal.timeout(timeoutMs)
|
|
171100
171163
|
});
|
|
171101
171164
|
} catch (error51) {
|
|
171165
|
+
if (isTimeoutError(error51)) {
|
|
171166
|
+
return { ok: false, error: { kind: "timeout", timeoutMs } };
|
|
171167
|
+
}
|
|
171102
171168
|
return { ok: false, error: { cause: toError(error51), kind: "network" } };
|
|
171103
171169
|
}
|
|
171104
171170
|
if (!response.ok) {
|
|
@@ -171114,8 +171180,17 @@ async function fetchSignedUrl(args, deps = { fetch: globalThis.fetch }) {
|
|
|
171114
171180
|
error: { cause: new Error("response had no body"), kind: "network" }
|
|
171115
171181
|
};
|
|
171116
171182
|
}
|
|
171183
|
+
let downloaded;
|
|
171117
171184
|
try {
|
|
171118
|
-
|
|
171185
|
+
downloaded = await response.arrayBuffer();
|
|
171186
|
+
} catch (error51) {
|
|
171187
|
+
if (isTimeoutError(error51)) {
|
|
171188
|
+
return { ok: false, error: { kind: "timeout", timeoutMs } };
|
|
171189
|
+
}
|
|
171190
|
+
return { ok: false, error: { cause: toError(error51), kind: "network" } };
|
|
171191
|
+
}
|
|
171192
|
+
try {
|
|
171193
|
+
await (deps.fs ?? makeDefaultFs()).writeFile(args.dest, new Uint8Array(downloaded));
|
|
171119
171194
|
} catch (error51) {
|
|
171120
171195
|
return { ok: false, error: { cause: toError(error51), kind: "network" } };
|
|
171121
171196
|
}
|
|
@@ -171124,7 +171199,7 @@ async function fetchSignedUrl(args, deps = { fetch: globalThis.fetch }) {
|
|
|
171124
171199
|
|
|
171125
171200
|
// src/shell/platform/downloadBundle.ts
|
|
171126
171201
|
async function downloadBundle(signedUrl, deps) {
|
|
171127
|
-
const tmpArchive =
|
|
171202
|
+
const tmpArchive = join6(tmpdir2(), `qawolf-pull-${randomBytes(8).toString("hex")}.tar.gz`);
|
|
171128
171203
|
const result = await fetchSignedUrl({ url: signedUrl, dest: tmpArchive }, { fetch: deps.fetch, fs: deps.fs });
|
|
171129
171204
|
if (!result.ok) {
|
|
171130
171205
|
await deps.fs.unlink(tmpArchive).catch(() => {});
|
|
@@ -171142,15 +171217,19 @@ var identityResponseSchema = exports_external.object({
|
|
|
171142
171217
|
slug: exports_external.string().optional()
|
|
171143
171218
|
})
|
|
171144
171219
|
});
|
|
171220
|
+
var timeoutMs2 = 1e4;
|
|
171145
171221
|
async function getIdentity(apiKey, deps) {
|
|
171146
171222
|
const url2 = `${deps.baseUrl}/api/v0/identity`;
|
|
171147
171223
|
let response;
|
|
171148
171224
|
try {
|
|
171149
171225
|
response = await deps.fetch(url2, {
|
|
171150
171226
|
headers: { Authorization: `Bearer ${apiKey}` },
|
|
171151
|
-
signal: AbortSignal.timeout(
|
|
171227
|
+
signal: AbortSignal.timeout(timeoutMs2)
|
|
171152
171228
|
});
|
|
171153
171229
|
} catch (error51) {
|
|
171230
|
+
if (isTimeoutError(error51)) {
|
|
171231
|
+
return { ok: false, error: { kind: "timeout", timeoutMs: timeoutMs2 } };
|
|
171232
|
+
}
|
|
171154
171233
|
return {
|
|
171155
171234
|
ok: false,
|
|
171156
171235
|
error: { kind: "network", cause: toError(error51) }
|
|
@@ -171163,9 +171242,15 @@ async function getIdentity(apiKey, deps) {
|
|
|
171163
171242
|
error: { kind: "http", status: response.status, body }
|
|
171164
171243
|
};
|
|
171165
171244
|
}
|
|
171166
|
-
|
|
171167
|
-
|
|
171168
|
-
|
|
171245
|
+
let json2;
|
|
171246
|
+
try {
|
|
171247
|
+
json2 = await response.json();
|
|
171248
|
+
} catch (error51) {
|
|
171249
|
+
if (isTimeoutError(error51)) {
|
|
171250
|
+
return { ok: false, error: { kind: "timeout", timeoutMs: timeoutMs2 } };
|
|
171251
|
+
}
|
|
171252
|
+
json2 = undefined;
|
|
171253
|
+
}
|
|
171169
171254
|
const parsed = identityResponseSchema.safeParse(json2);
|
|
171170
171255
|
if (!parsed.success) {
|
|
171171
171256
|
return { ok: false, error: { kind: "parse", cause: parsed.error } };
|
|
@@ -171226,7 +171311,7 @@ async function listTeamStorageFiles(trpc, args, deps) {
|
|
|
171226
171311
|
}
|
|
171227
171312
|
|
|
171228
171313
|
// src/shell/platform/teamStorageAssets.ts
|
|
171229
|
-
import { dirname as dirname3, join as
|
|
171314
|
+
import { dirname as dirname3, join as join9 } from "node:path";
|
|
171230
171315
|
|
|
171231
171316
|
// src/shell/platform/teamStorageAssetManifest.ts
|
|
171232
171317
|
import { dirname as dirname2 } from "node:path";
|
|
@@ -171303,7 +171388,7 @@ function isUnsafeSegment(segment) {
|
|
|
171303
171388
|
|
|
171304
171389
|
// src/shell/platform/teamStorageAssetSnapshot.ts
|
|
171305
171390
|
import { randomBytes as randomBytes2 } from "node:crypto";
|
|
171306
|
-
import { join as
|
|
171391
|
+
import { join as join7, sep as sep2 } from "node:path";
|
|
171307
171392
|
function mintAssetSnapshotPath(assetsAbs, label) {
|
|
171308
171393
|
return `${assetsAbs}.${label}-${randomBytes2(8).toString("hex")}`;
|
|
171309
171394
|
}
|
|
@@ -171353,9 +171438,9 @@ function expectedEntries(filePaths) {
|
|
|
171353
171438
|
return entries;
|
|
171354
171439
|
}
|
|
171355
171440
|
async function collectEntries(root, relDir, out, fs2) {
|
|
171356
|
-
const current = relDir ?
|
|
171441
|
+
const current = relDir ? join7(root, relDir) : root;
|
|
171357
171442
|
for (const entry of await fs2.readdirWithTypes(current)) {
|
|
171358
|
-
const relPath = relDir ?
|
|
171443
|
+
const relPath = relDir ? join7(relDir, entry.name) : entry.name;
|
|
171359
171444
|
out.add(relPath);
|
|
171360
171445
|
if (entry.isDirectory()) {
|
|
171361
171446
|
await collectEntries(root, relPath, out, fs2);
|
|
@@ -171369,7 +171454,7 @@ function setsEqual(left, right) {
|
|
|
171369
171454
|
}
|
|
171370
171455
|
|
|
171371
171456
|
// src/shell/platform/teamStorageAssetReuse.ts
|
|
171372
|
-
import { join as
|
|
171457
|
+
import { join as join8 } from "node:path";
|
|
171373
171458
|
async function reusableAssetPaths(assetsAbs, safeFiles, manifest, fs2) {
|
|
171374
171459
|
const reusable = new Set;
|
|
171375
171460
|
for (const { file: file2, relativePath } of safeFiles) {
|
|
@@ -171385,7 +171470,7 @@ async function canReuseAsset(assetsAbs, relativePath, file2, manifest, fs2) {
|
|
|
171385
171470
|
const previous = manifest.get(relativePath);
|
|
171386
171471
|
if (previous?.etag !== file2.etag)
|
|
171387
171472
|
return false;
|
|
171388
|
-
return fs2.pathExists(
|
|
171473
|
+
return fs2.pathExists(join8(assetsAbs, relativePath));
|
|
171389
171474
|
}
|
|
171390
171475
|
|
|
171391
171476
|
// src/shell/platform/teamStorageAssets.ts
|
|
@@ -171438,10 +171523,10 @@ async function writeAssetSnapshot(args) {
|
|
|
171438
171523
|
let downloadedCount = 0;
|
|
171439
171524
|
await args.deps.fs.mkdir(args.tmpAssets, { recursive: true });
|
|
171440
171525
|
for (const { file: file2, relativePath } of args.safeFiles) {
|
|
171441
|
-
const dest =
|
|
171526
|
+
const dest = join9(args.tmpAssets, relativePath);
|
|
171442
171527
|
await args.deps.fs.mkdir(dirname3(dest), { recursive: true });
|
|
171443
171528
|
if (args.reusable.has(relativePath)) {
|
|
171444
|
-
await args.deps.fs.copyFile(
|
|
171529
|
+
await args.deps.fs.copyFile(join9(args.assetsAbs, relativePath), dest);
|
|
171445
171530
|
continue;
|
|
171446
171531
|
}
|
|
171447
171532
|
const result = await fetchSignedUrl({ url: file2.signedUrl, dest }, { fetch: args.deps.fetch, fs: args.deps.fs });
|
|
@@ -173437,11 +173522,11 @@ function withAuthContext(signals, fn, deps = {}) {
|
|
|
173437
173522
|
loggingSystem.flush();
|
|
173438
173523
|
return;
|
|
173439
173524
|
}
|
|
173440
|
-
const
|
|
173525
|
+
const platformClient = (deps.createPlatform ?? createPlatformClient)(resolved.key, { baseUrl: apiBaseUrl, fetch: globalThis.fetch, logger: ctx.log("trpc") });
|
|
173441
173526
|
try {
|
|
173442
173527
|
const result = await fn({
|
|
173443
173528
|
...ctx,
|
|
173444
|
-
|
|
173529
|
+
platformClient,
|
|
173445
173530
|
apiKeySource: resolved.source
|
|
173446
173531
|
});
|
|
173447
173532
|
if (result !== undefined) {
|
|
@@ -173487,7 +173572,7 @@ async function handleLogin(ctx) {
|
|
|
173487
173572
|
message: authMessages.verifying,
|
|
173488
173573
|
task: async () => {
|
|
173489
173574
|
const v = await validateApiKey({
|
|
173490
|
-
|
|
173575
|
+
platformClient: createPlatformClient(result.value, {
|
|
173491
173576
|
baseUrl: ctx.apiBaseUrl,
|
|
173492
173577
|
fetch: globalThis.fetch
|
|
173493
173578
|
})
|
|
@@ -173553,12 +173638,12 @@ async function handleWhoami(ctx, deps = {}) {
|
|
|
173553
173638
|
}
|
|
173554
173639
|
return { error: "not authenticated" };
|
|
173555
173640
|
}
|
|
173556
|
-
const
|
|
173641
|
+
const platformClient = (deps.createPlatform ?? createPlatformClient)(resolved.key, {
|
|
173557
173642
|
baseUrl: ctx.apiBaseUrl,
|
|
173558
173643
|
fetch: globalThis.fetch,
|
|
173559
173644
|
logger: ctx.log("trpc")
|
|
173560
173645
|
});
|
|
173561
|
-
const identity = await
|
|
173646
|
+
const identity = await platformClient.getIdentity();
|
|
173562
173647
|
if (!identity.ok) {
|
|
173563
173648
|
if (ctx.ui.mode === "human") {
|
|
173564
173649
|
ctx.ui.note(authMessages.whoami.source(resolved.source), authMessages.whoamiFailed);
|
|
@@ -173598,7 +173683,7 @@ function registerAuthCommand(program2, signals) {
|
|
|
173598
173683
|
// package.json
|
|
173599
173684
|
var package_default = {
|
|
173600
173685
|
name: "@qawolf/cli",
|
|
173601
|
-
version: "1.4.
|
|
173686
|
+
version: "1.4.2",
|
|
173602
173687
|
description: "Run and manage QA Wolf flows from the terminal, CI, or an AI agent",
|
|
173603
173688
|
keywords: [
|
|
173604
173689
|
"automation",
|
|
@@ -173633,7 +173718,8 @@ var package_default = {
|
|
|
173633
173718
|
access: "public"
|
|
173634
173719
|
},
|
|
173635
173720
|
scripts: {
|
|
173636
|
-
build: "bun run
|
|
173721
|
+
build: "bun run build:bundle",
|
|
173722
|
+
"build:bundle": "bun run generate && bun scripts/build.ts",
|
|
173637
173723
|
"build:binary": "bun run build && bun scripts/buildBinary.ts",
|
|
173638
173724
|
dev: "bun run src/main.ts",
|
|
173639
173725
|
format: "oxfmt .",
|
|
@@ -173741,38 +173827,41 @@ async function* batchMap(items, fn, size) {
|
|
|
173741
173827
|
}
|
|
173742
173828
|
}
|
|
173743
173829
|
|
|
173830
|
+
// src/core/nodeModulesBins.ts
|
|
173831
|
+
import { join as join10 } from "node:path";
|
|
173832
|
+
function nodeModulesBinCandidates(envDir, name, platform) {
|
|
173833
|
+
const binDir = join10(envDir, "node_modules", ".bin");
|
|
173834
|
+
const names = platform === "win32" ? [`${name}.cmd`, `${name}.exe`] : [name];
|
|
173835
|
+
return names.map((shim) => join10(binDir, shim));
|
|
173836
|
+
}
|
|
173837
|
+
function appiumCliCandidates(envDir, platform) {
|
|
173838
|
+
return nodeModulesBinCandidates(envDir, "appium", platform);
|
|
173839
|
+
}
|
|
173840
|
+
function playwrightCliCandidates(envDir, platform) {
|
|
173841
|
+
return nodeModulesBinCandidates(envDir, "playwright", platform);
|
|
173842
|
+
}
|
|
173843
|
+
|
|
173744
173844
|
// src/domains/doctor/checks/androidAppium.ts
|
|
173745
|
-
import { join as join9 } from "node:path";
|
|
173746
173845
|
function firstLine(result) {
|
|
173747
173846
|
return (result.stderr || result.stdout).split(`
|
|
173748
173847
|
`)[0]?.trim() || `exit code ${result.exitCode}`;
|
|
173749
173848
|
}
|
|
173750
|
-
|
|
173751
|
-
|
|
173752
|
-
|
|
173753
|
-
|
|
173754
|
-
appium: {
|
|
173755
|
-
name: "appium",
|
|
173756
|
-
status: "warn",
|
|
173757
|
-
detail: doctorMessages.appium.noEnvDir
|
|
173758
|
-
},
|
|
173759
|
-
bin: undefined
|
|
173760
|
-
};
|
|
173761
|
-
}
|
|
173762
|
-
const bin = resolveAppiumBin(envDir);
|
|
173763
|
-
if (!checkExists(bin)) {
|
|
173849
|
+
function checkAppium(envDir, platform, checkExists) {
|
|
173850
|
+
const candidates = envDir ? appiumCliCandidates(envDir, platform) : [];
|
|
173851
|
+
const bin = candidates.find(checkExists);
|
|
173852
|
+
if (!bin) {
|
|
173764
173853
|
return {
|
|
173765
173854
|
appium: {
|
|
173766
173855
|
name: "appium",
|
|
173767
173856
|
status: "warn",
|
|
173768
|
-
detail: doctorMessages.appium.
|
|
173857
|
+
detail: doctorMessages.appium.notFound(candidates[0])
|
|
173769
173858
|
},
|
|
173770
173859
|
bin: undefined
|
|
173771
173860
|
};
|
|
173772
173861
|
}
|
|
173773
173862
|
return { appium: { name: "appium", status: "pass" }, bin };
|
|
173774
173863
|
}
|
|
173775
|
-
async function checkUiautomator2(spawn, appiumBin) {
|
|
173864
|
+
async function checkUiautomator2(spawn, appiumBin, platform) {
|
|
173776
173865
|
if (!appiumBin) {
|
|
173777
173866
|
return {
|
|
173778
173867
|
name: "uiautomator2-driver",
|
|
@@ -173781,7 +173870,8 @@ async function checkUiautomator2(spawn, appiumBin) {
|
|
|
173781
173870
|
};
|
|
173782
173871
|
}
|
|
173783
173872
|
const result = await spawn(appiumBin, ["driver", "list", "--installed"], {
|
|
173784
|
-
env: { APPIUM_HOME:
|
|
173873
|
+
env: { APPIUM_HOME: getAppiumHome() },
|
|
173874
|
+
platform
|
|
173785
173875
|
});
|
|
173786
173876
|
if (result.exitCode !== 0) {
|
|
173787
173877
|
return {
|
|
@@ -173801,6 +173891,30 @@ async function checkUiautomator2(spawn, appiumBin) {
|
|
|
173801
173891
|
};
|
|
173802
173892
|
}
|
|
173803
173893
|
|
|
173894
|
+
// src/core/androidBins.ts
|
|
173895
|
+
import { join as join11 } from "node:path";
|
|
173896
|
+
function withExeSuffix(name, platform) {
|
|
173897
|
+
return platform === "win32" ? `${name}.exe` : name;
|
|
173898
|
+
}
|
|
173899
|
+
function emulatorBin(home, platform) {
|
|
173900
|
+
const name = withExeSuffix("emulator", platform);
|
|
173901
|
+
return home ? join11(home, "emulator", name) : name;
|
|
173902
|
+
}
|
|
173903
|
+
function adbBin(home, platform) {
|
|
173904
|
+
const name = withExeSuffix("adb", platform);
|
|
173905
|
+
return home ? join11(home, "platform-tools", name) : name;
|
|
173906
|
+
}
|
|
173907
|
+
function cmdlineToolsBin(home, name, platform) {
|
|
173908
|
+
const file2 = platform === "win32" ? `${name}.bat` : name;
|
|
173909
|
+
return join11(home, "cmdline-tools", "latest", "bin", file2);
|
|
173910
|
+
}
|
|
173911
|
+
function sdkManagerBin(home, platform) {
|
|
173912
|
+
return cmdlineToolsBin(home, "sdkmanager", platform);
|
|
173913
|
+
}
|
|
173914
|
+
function avdManagerBin(home, platform) {
|
|
173915
|
+
return cmdlineToolsBin(home, "avdmanager", platform);
|
|
173916
|
+
}
|
|
173917
|
+
|
|
173804
173918
|
// src/domains/doctor/checks/androidSdk.ts
|
|
173805
173919
|
function firstLine2(result) {
|
|
173806
173920
|
return (result.stderr || result.stdout).split(`
|
|
@@ -173823,9 +173937,9 @@ function checkHome(androidHome, checkExists) {
|
|
|
173823
173937
|
}
|
|
173824
173938
|
return { name: "android-home", status: "pass", detail: androidHome };
|
|
173825
173939
|
}
|
|
173826
|
-
async function checkAdb(spawn, androidHome) {
|
|
173827
|
-
const bin = androidHome
|
|
173828
|
-
const result = await spawn(bin, ["--version"]);
|
|
173940
|
+
async function checkAdb(spawn, androidHome, platform) {
|
|
173941
|
+
const bin = adbBin(androidHome, platform);
|
|
173942
|
+
const result = await spawn(bin, ["--version"], { platform });
|
|
173829
173943
|
if (result.exitCode < 0) {
|
|
173830
173944
|
return {
|
|
173831
173945
|
name: "adb",
|
|
@@ -173838,9 +173952,9 @@ async function checkAdb(spawn, androidHome) {
|
|
|
173838
173952
|
}
|
|
173839
173953
|
return { name: "adb", status: "pass" };
|
|
173840
173954
|
}
|
|
173841
|
-
async function checkEmulatorBin(spawn, androidHome) {
|
|
173842
|
-
const bin = androidHome
|
|
173843
|
-
const result = await spawn(bin, ["-version"]);
|
|
173955
|
+
async function checkEmulatorBin(spawn, androidHome, platform) {
|
|
173956
|
+
const bin = emulatorBin(androidHome, platform);
|
|
173957
|
+
const result = await spawn(bin, ["-version"], { platform });
|
|
173844
173958
|
if (result.exitCode < 0) {
|
|
173845
173959
|
return {
|
|
173846
173960
|
name: "android-emulator",
|
|
@@ -173857,11 +173971,11 @@ async function checkEmulatorBin(spawn, androidHome) {
|
|
|
173857
173971
|
}
|
|
173858
173972
|
return { name: "android-emulator", status: "pass" };
|
|
173859
173973
|
}
|
|
173860
|
-
async function checkAvds(spawn, androidHome, requiredAvds) {
|
|
173974
|
+
async function checkAvds(spawn, androidHome, requiredAvds, platform) {
|
|
173861
173975
|
if (requiredAvds.length === 0)
|
|
173862
173976
|
return [];
|
|
173863
|
-
const bin = androidHome
|
|
173864
|
-
const result = await spawn(bin, ["-list-avds"]);
|
|
173977
|
+
const bin = emulatorBin(androidHome, platform);
|
|
173978
|
+
const result = await spawn(bin, ["-list-avds"], { platform });
|
|
173865
173979
|
if (result.exitCode < 0) {
|
|
173866
173980
|
return [
|
|
173867
173981
|
{
|
|
@@ -173898,12 +174012,12 @@ async function checkAvds(spawn, androidHome, requiredAvds) {
|
|
|
173898
174012
|
async function checkAndroid(deps) {
|
|
173899
174013
|
const home = checkHome(deps.androidHome, deps.checkExists);
|
|
173900
174014
|
const [adb, emulator, avds] = await Promise.all([
|
|
173901
|
-
checkAdb(deps.spawn, deps.androidHome),
|
|
173902
|
-
checkEmulatorBin(deps.spawn, deps.androidHome),
|
|
173903
|
-
checkAvds(deps.spawn, deps.androidHome, deps.requiredAvds)
|
|
174015
|
+
checkAdb(deps.spawn, deps.androidHome, deps.platform),
|
|
174016
|
+
checkEmulatorBin(deps.spawn, deps.androidHome, deps.platform),
|
|
174017
|
+
checkAvds(deps.spawn, deps.androidHome, deps.requiredAvds, deps.platform)
|
|
173904
174018
|
]);
|
|
173905
|
-
const { appium, bin } = checkAppium(deps.envDir, deps.
|
|
173906
|
-
const uiautomator2 = await checkUiautomator2(deps.spawn, bin);
|
|
174019
|
+
const { appium, bin } = checkAppium(deps.envDir, deps.platform, deps.checkExists);
|
|
174020
|
+
const uiautomator2 = await checkUiautomator2(deps.spawn, bin, deps.platform);
|
|
173907
174021
|
return [home, adb, emulator, ...avds, appium, uiautomator2];
|
|
173908
174022
|
}
|
|
173909
174023
|
|
|
@@ -174061,10 +174175,19 @@ function compareVersions(a2, b2) {
|
|
|
174061
174175
|
return a2[0] - b2[0] || a2[1] - b2[1] || a2[2] - b2[2];
|
|
174062
174176
|
}
|
|
174063
174177
|
|
|
174178
|
+
// src/shell/npm.ts
|
|
174179
|
+
function resolveNpmCommand(platform) {
|
|
174180
|
+
return platform === "win32" ? "npm.cmd" : "npm";
|
|
174181
|
+
}
|
|
174182
|
+
|
|
174064
174183
|
// src/domains/doctor/checks/npmRegistry.ts
|
|
174065
174184
|
async function checkNpmRegistry(deps) {
|
|
174066
|
-
const
|
|
174067
|
-
|
|
174185
|
+
const { platform } = deps;
|
|
174186
|
+
const result = await deps.spawn(resolveNpmCommand(platform), ["ping"], {
|
|
174187
|
+
platform
|
|
174188
|
+
});
|
|
174189
|
+
const cmdNotFound = deps.platform === "win32" && result.exitCode === 9009;
|
|
174190
|
+
if (result.exitCode < 0 || cmdNotFound) {
|
|
174068
174191
|
return {
|
|
174069
174192
|
name: "npm-registry",
|
|
174070
174193
|
status: "warn",
|
|
@@ -174081,14 +174204,18 @@ async function checkNpmRegistry(deps) {
|
|
|
174081
174204
|
|
|
174082
174205
|
// src/domains/doctor/checks/playwright.ts
|
|
174083
174206
|
async function checkPlaywright(deps) {
|
|
174084
|
-
|
|
174207
|
+
const candidates = deps.envDir ? playwrightCliCandidates(deps.envDir, deps.platform) : [];
|
|
174208
|
+
const cliPath = candidates.find(deps.checkExists);
|
|
174209
|
+
if (cliPath === undefined) {
|
|
174085
174210
|
return {
|
|
174086
174211
|
name: "playwright",
|
|
174087
174212
|
status: "fail",
|
|
174088
|
-
detail: doctorMessages.playwright.notFound
|
|
174213
|
+
detail: doctorMessages.playwright.notFound(candidates[0])
|
|
174089
174214
|
};
|
|
174090
174215
|
}
|
|
174091
|
-
const result = await deps.spawn(
|
|
174216
|
+
const result = await deps.spawn(cliPath, ["--version"], {
|
|
174217
|
+
platform: deps.platform
|
|
174218
|
+
});
|
|
174092
174219
|
if (result.exitCode < 0) {
|
|
174093
174220
|
return {
|
|
174094
174221
|
name: "playwright",
|
|
@@ -174129,11 +174256,13 @@ async function runChecks(deps) {
|
|
|
174129
174256
|
}),
|
|
174130
174257
|
checkPlaywright({
|
|
174131
174258
|
spawn: deps.spawn,
|
|
174132
|
-
|
|
174259
|
+
envDir: deps.envDir,
|
|
174260
|
+
platform: deps.platform,
|
|
174261
|
+
checkExists: deps.checkExists
|
|
174133
174262
|
}),
|
|
174134
174263
|
checkApiKey({ apiKey: deps.apiKey }),
|
|
174135
174264
|
checkApiUrl({ fetch: deps.fetch, apiBaseUrl: deps.apiBaseUrl }),
|
|
174136
|
-
checkNpmRegistry({ spawn: deps.spawn }),
|
|
174265
|
+
checkNpmRegistry({ spawn: deps.spawn, platform: deps.platform }),
|
|
174137
174266
|
checkFileAssets({
|
|
174138
174267
|
files: deps.flowFiles,
|
|
174139
174268
|
readFile: deps.readFile,
|
|
@@ -174144,8 +174273,8 @@ async function runChecks(deps) {
|
|
|
174144
174273
|
androidHome: deps.androidHome,
|
|
174145
174274
|
checkExists: deps.checkExists,
|
|
174146
174275
|
envDir: deps.envDir,
|
|
174147
|
-
|
|
174148
|
-
|
|
174276
|
+
requiredAvds: deps.requiredAvds,
|
|
174277
|
+
platform: deps.platform
|
|
174149
174278
|
}) : Promise.resolve([])
|
|
174150
174279
|
]);
|
|
174151
174280
|
return [
|
|
@@ -174186,11 +174315,11 @@ function renderResults(ui, results) {
|
|
|
174186
174315
|
}
|
|
174187
174316
|
|
|
174188
174317
|
// src/domains/flows/ensureDeps.ts
|
|
174189
|
-
import { dirname as dirname4, join as
|
|
174318
|
+
import { dirname as dirname4, join as join12 } from "node:path";
|
|
174190
174319
|
function findEnvDir(flowPath, fs2) {
|
|
174191
174320
|
let dir = dirname4(flowPath);
|
|
174192
174321
|
while (true) {
|
|
174193
|
-
if (fs2.existsSync(
|
|
174322
|
+
if (fs2.existsSync(join12(dir, "package.json")))
|
|
174194
174323
|
return dir;
|
|
174195
174324
|
const parent = dirname4(dir);
|
|
174196
174325
|
if (parent === dir)
|
|
@@ -174216,7 +174345,7 @@ function resolveProjectDirSafe(files, fs2) {
|
|
|
174216
174345
|
}
|
|
174217
174346
|
|
|
174218
174347
|
// src/domains/flows/expand.ts
|
|
174219
|
-
import { join as
|
|
174348
|
+
import { join as join13, resolve as resolve3 } from "node:path";
|
|
174220
174349
|
|
|
174221
174350
|
// node_modules/tinyglobby/dist/index.mjs
|
|
174222
174351
|
import { readdir, readdirSync, realpath, realpathSync, stat, statSync } from "fs";
|
|
@@ -175107,11 +175236,11 @@ function makePeekFlowMeta(fs2) {
|
|
|
175107
175236
|
};
|
|
175108
175237
|
}
|
|
175109
175238
|
async function resolveGlobRoots(cwd, fs2) {
|
|
175110
|
-
const qawolfPath =
|
|
175239
|
+
const qawolfPath = join13(cwd, ".qawolf");
|
|
175111
175240
|
let envDirs = [];
|
|
175112
175241
|
try {
|
|
175113
175242
|
const entries = await fs2.readdirWithTypes(qawolfPath);
|
|
175114
|
-
envDirs = entries.filter((e) => e.isDirectory()).map((e) =>
|
|
175243
|
+
envDirs = entries.filter((e) => e.isDirectory()).map((e) => join13(qawolfPath, e.name));
|
|
175115
175244
|
} catch {}
|
|
175116
175245
|
return [cwd, ...envDirs];
|
|
175117
175246
|
}
|
|
@@ -175125,7 +175254,8 @@ async function expandPatterns(patterns, cwd, logger, fs2) {
|
|
|
175125
175254
|
cwd: root,
|
|
175126
175255
|
absolute: true
|
|
175127
175256
|
});
|
|
175128
|
-
for (const
|
|
175257
|
+
for (const match of matches) {
|
|
175258
|
+
const file2 = resolve3(match);
|
|
175129
175259
|
seen.add(file2);
|
|
175130
175260
|
logger?.trace(`found: ${file2}`);
|
|
175131
175261
|
}
|
|
@@ -175135,11 +175265,11 @@ async function expandPatterns(patterns, cwd, logger, fs2) {
|
|
|
175135
175265
|
}
|
|
175136
175266
|
|
|
175137
175267
|
// src/domains/runtimeEnv/clearRuntimeEnv.ts
|
|
175138
|
-
import { join as
|
|
175268
|
+
import { join as join15 } from "node:path";
|
|
175139
175269
|
|
|
175140
175270
|
// src/domains/runtimeEnv/managedEnvDir.ts
|
|
175141
175271
|
import { createHash } from "node:crypto";
|
|
175142
|
-
import { join as
|
|
175272
|
+
import { join as join14, resolve as resolve4 } from "node:path";
|
|
175143
175273
|
|
|
175144
175274
|
// src/generated/dependencyVersions.ts
|
|
175145
175275
|
var flowsVersion = "0.1.4";
|
|
@@ -175181,20 +175311,20 @@ function managedEnvHash() {
|
|
|
175181
175311
|
function managedEnvBaseDir() {
|
|
175182
175312
|
const override = process.env["QAWOLF_RUNTIME_DIR"]?.trim();
|
|
175183
175313
|
if (override)
|
|
175184
|
-
return
|
|
175185
|
-
return
|
|
175314
|
+
return resolve4(override);
|
|
175315
|
+
return join14(getDataDir(), "runtime");
|
|
175186
175316
|
}
|
|
175187
175317
|
function runStagingRoot() {
|
|
175188
175318
|
return `${managedEnvBaseDir()}-runs`;
|
|
175189
175319
|
}
|
|
175190
175320
|
function managedEnvDir() {
|
|
175191
|
-
return
|
|
175321
|
+
return join14(managedEnvBaseDir(), managedEnvHash());
|
|
175192
175322
|
}
|
|
175193
175323
|
async function scaffoldManagedEnv(dir, fs2) {
|
|
175194
175324
|
await fs2.mkdir(dir, { recursive: true });
|
|
175195
175325
|
const dependencies = Object.fromEntries(pinnedPackages.map(({ name, version: version2 }) => [name, version2]));
|
|
175196
|
-
await fs2.writeFile(
|
|
175197
|
-
await fs2.writeFile(
|
|
175326
|
+
await fs2.writeFile(join14(dir, "package.json"), JSON.stringify({ name: "qawolf-runtime", private: true, dependencies }, undefined, 2));
|
|
175327
|
+
await fs2.writeFile(join14(dir, ".npmrc"), `@qawolf:registry=https://registry.npmjs.org/
|
|
175198
175328
|
`);
|
|
175199
175329
|
}
|
|
175200
175330
|
|
|
@@ -175216,14 +175346,14 @@ async function isManagedRuntimeBase(dir, fs2) {
|
|
|
175216
175346
|
for (const entry of entries) {
|
|
175217
175347
|
if (!entry.isDirectory())
|
|
175218
175348
|
return false;
|
|
175219
|
-
if (!await hasRuntimeSentinel(
|
|
175349
|
+
if (!await hasRuntimeSentinel(join15(dir, entry.name), fs2))
|
|
175220
175350
|
return false;
|
|
175221
175351
|
}
|
|
175222
175352
|
return true;
|
|
175223
175353
|
}
|
|
175224
175354
|
async function hasRuntimeSentinel(hashDir, fs2) {
|
|
175225
175355
|
try {
|
|
175226
|
-
const pkg = JSON.parse(await fs2.readFile(
|
|
175356
|
+
const pkg = JSON.parse(await fs2.readFile(join15(hashDir, "package.json")));
|
|
175227
175357
|
return pkg.name === runtimeSentinel;
|
|
175228
175358
|
} catch {
|
|
175229
175359
|
return false;
|
|
@@ -175231,17 +175361,36 @@ async function hasRuntimeSentinel(hashDir, fs2) {
|
|
|
175231
175361
|
}
|
|
175232
175362
|
// src/shell/spawn.ts
|
|
175233
175363
|
import { spawn } from "node:child_process";
|
|
175234
|
-
|
|
175235
|
-
|
|
175364
|
+
|
|
175365
|
+
// src/core/cmdEscape.ts
|
|
175366
|
+
var metaChars = /([()\][%!^"`<>&|;, *?])/g;
|
|
175367
|
+
function escapeCommand(command) {
|
|
175368
|
+
return command.replace(metaChars, "^$1");
|
|
175369
|
+
}
|
|
175370
|
+
function escapeArgument(arg) {
|
|
175371
|
+
const escaped = arg.replace(/(?=(\\+?)?)\1"/g, "$1$1\\\"").replace(/(?=(\\+?)?)\1$/, "$1$1");
|
|
175372
|
+
return `"${escaped}"`.replace(metaChars, "^$1").replace(metaChars, "^$1");
|
|
175373
|
+
}
|
|
175374
|
+
|
|
175375
|
+
// src/shell/spawn.ts
|
|
175376
|
+
function buildSpawnCommand(cmd, args, platform, env2) {
|
|
175377
|
+
const options = {};
|
|
175236
175378
|
if (env2)
|
|
175237
|
-
|
|
175238
|
-
if (platform
|
|
175239
|
-
|
|
175240
|
-
|
|
175379
|
+
options.env = env2;
|
|
175380
|
+
if (platform !== "win32" || !/\.(cmd|bat)$/i.test(cmd)) {
|
|
175381
|
+
return { cmd, args, options };
|
|
175382
|
+
}
|
|
175383
|
+
const line = [escapeCommand(cmd), ...args.map(escapeArgument)].join(" ");
|
|
175384
|
+
return {
|
|
175385
|
+
cmd: process.env["ComSpec"] ?? "cmd.exe",
|
|
175386
|
+
args: ["/d", "/s", "/c", `"${line}"`],
|
|
175387
|
+
options: { ...options, windowsVerbatimArguments: true }
|
|
175388
|
+
};
|
|
175241
175389
|
}
|
|
175242
|
-
var defaultSpawn = (cmd, args, opts) => new Promise((
|
|
175243
|
-
const env2 = opts
|
|
175244
|
-
const
|
|
175390
|
+
var defaultSpawn = (cmd, args, opts) => new Promise((resolve5) => {
|
|
175391
|
+
const env2 = opts.env ? { ...process.env, ...opts.env } : undefined;
|
|
175392
|
+
const built = buildSpawnCommand(cmd, args, opts.platform, env2);
|
|
175393
|
+
const child = spawn(built.cmd, built.args, built.options);
|
|
175245
175394
|
let stdout2 = "";
|
|
175246
175395
|
let stderr = "";
|
|
175247
175396
|
child.stdout?.on("data", (chunk) => {
|
|
@@ -175254,29 +175403,34 @@ var defaultSpawn = (cmd, args, opts) => new Promise((resolve4) => {
|
|
|
175254
175403
|
child.stdin?.write(opts.stdin);
|
|
175255
175404
|
child.stdin?.end();
|
|
175256
175405
|
}
|
|
175257
|
-
child.on("error", (err) =>
|
|
175258
|
-
child.on("close", (code) =>
|
|
175406
|
+
child.on("error", (err) => resolve5({ exitCode: -1, stdout: stdout2, stderr: stderr || err.message }));
|
|
175407
|
+
child.on("close", (code) => resolve5({ exitCode: code ?? -1, stdout: stdout2, stderr }));
|
|
175259
175408
|
});
|
|
175260
175409
|
|
|
175261
175410
|
// src/domains/runtimeEnv/npmInstall.ts
|
|
175262
|
-
function
|
|
175263
|
-
|
|
175264
|
-
|
|
175411
|
+
function buildNpmInstallSpawn(cwd, platform) {
|
|
175412
|
+
const built = buildSpawnCommand(resolveNpmCommand(platform), ["install", "--legacy-peer-deps"], platform, undefined);
|
|
175413
|
+
return { ...built, options: { ...built.options, cwd } };
|
|
175414
|
+
}
|
|
175415
|
+
function spawnNpmInstall(cwd, spawn2 = spawn) {
|
|
175416
|
+
return new Promise((resolve5) => {
|
|
175417
|
+
const { cmd, args, options } = buildNpmInstallSpawn(cwd, process.platform);
|
|
175418
|
+
const child = spawn2(cmd, args, options);
|
|
175265
175419
|
let stderr = "";
|
|
175266
175420
|
child.stdout?.resume();
|
|
175267
175421
|
child.stderr?.on("data", (chunk) => {
|
|
175268
175422
|
stderr += String(chunk);
|
|
175269
175423
|
});
|
|
175270
|
-
child.on("error", (err) =>
|
|
175271
|
-
child.on("close", (code) =>
|
|
175424
|
+
child.on("error", (err) => resolve5({ exitCode: -1, stderr: stderr || err.message }));
|
|
175425
|
+
child.on("close", (code) => resolve5({ exitCode: code ?? -1, stderr }));
|
|
175272
175426
|
});
|
|
175273
175427
|
}
|
|
175274
175428
|
|
|
175275
175429
|
// src/domains/runtimeEnv/resolvePinned.ts
|
|
175276
|
-
import { join as
|
|
175430
|
+
import { join as join16 } from "node:path";
|
|
175277
175431
|
function readInstalledVersion(dir, pkgName, fs2) {
|
|
175278
175432
|
try {
|
|
175279
|
-
const pkgPath =
|
|
175433
|
+
const pkgPath = join16(dir, "node_modules", ...pkgName.split("/"), "package.json");
|
|
175280
175434
|
const raw = JSON.parse(fs2.readFileSync(pkgPath));
|
|
175281
175435
|
const { version: version2 } = raw;
|
|
175282
175436
|
return typeof version2 === "string" ? version2 : undefined;
|
|
@@ -175284,20 +175438,40 @@ function readInstalledVersion(dir, pkgName, fs2) {
|
|
|
175284
175438
|
return;
|
|
175285
175439
|
}
|
|
175286
175440
|
}
|
|
175287
|
-
|
|
175288
|
-
|
|
175289
|
-
|
|
175290
|
-
|
|
175291
|
-
|
|
175441
|
+
var shims = [
|
|
175442
|
+
{ name: "playwright", candidates: playwrightCliCandidates },
|
|
175443
|
+
{ name: "appium", candidates: appiumCliCandidates }
|
|
175444
|
+
];
|
|
175445
|
+
function pinnedResolutionFailures(dir, fs2, platform) {
|
|
175446
|
+
const failures = [];
|
|
175447
|
+
for (const { name, version: version2 } of pinnedPackages) {
|
|
175448
|
+
const installed = readInstalledVersion(dir, name, fs2);
|
|
175449
|
+
if (installed !== version2) {
|
|
175450
|
+
failures.push({ kind: "package", name, pinned: version2, installed });
|
|
175451
|
+
}
|
|
175292
175452
|
}
|
|
175293
|
-
|
|
175453
|
+
for (const { name, candidates } of shims) {
|
|
175454
|
+
if (!candidates(dir, platform).some((p2) => fs2.existsSync(p2))) {
|
|
175455
|
+
failures.push({ kind: "shim", name });
|
|
175456
|
+
}
|
|
175457
|
+
}
|
|
175458
|
+
return failures;
|
|
175459
|
+
}
|
|
175460
|
+
function describePinnedFailure(failure) {
|
|
175461
|
+
if (failure.kind === "shim") {
|
|
175462
|
+
return `node_modules/.bin/${failure.name} (missing)`;
|
|
175463
|
+
}
|
|
175464
|
+
return failure.installed === undefined ? `${failure.name} (missing, pinned ${failure.pinned})` : `${failure.name} ${failure.installed} (pinned ${failure.pinned})`;
|
|
175465
|
+
}
|
|
175466
|
+
function allPinnedResolved(dir, fs2, platform) {
|
|
175467
|
+
return pinnedResolutionFailures(dir, fs2, platform).length === 0;
|
|
175294
175468
|
}
|
|
175295
175469
|
|
|
175296
175470
|
// src/domains/runtimeEnv/shimDeps.ts
|
|
175297
|
-
import { join as
|
|
175471
|
+
import { join as join18 } from "node:path";
|
|
175298
175472
|
|
|
175299
175473
|
// src/shell/resolveExport.ts
|
|
175300
|
-
import { join as
|
|
175474
|
+
import { join as join17 } from "node:path";
|
|
175301
175475
|
function pickPath(entry, preference) {
|
|
175302
175476
|
if (typeof entry === "string")
|
|
175303
175477
|
return entry;
|
|
@@ -175329,28 +175503,28 @@ function resolveFromEnvDir(envDir, specifier, preference = "esm", fs2 = makeDefa
|
|
|
175329
175503
|
const pkgName = parts.slice(0, pkgPartCount).join("/");
|
|
175330
175504
|
const rest = parts.slice(pkgPartCount);
|
|
175331
175505
|
const subpath = rest.length > 0 ? "./" + rest.join("/") : ".";
|
|
175332
|
-
const pkgDir =
|
|
175506
|
+
const pkgDir = join17(envDir, "node_modules", ...pkgName.split("/"));
|
|
175333
175507
|
let pkg;
|
|
175334
175508
|
try {
|
|
175335
|
-
pkg = JSON.parse(fs2.readFileSync(
|
|
175509
|
+
pkg = JSON.parse(fs2.readFileSync(join17(pkgDir, "package.json")));
|
|
175336
175510
|
} catch (err) {
|
|
175337
175511
|
if (isNoEntError(err))
|
|
175338
|
-
throw new Error(`Package '${pkgName}' not found in ${
|
|
175512
|
+
throw new Error(`Package '${pkgName}' not found in ${join17(envDir, "node_modules")}`, { cause: err });
|
|
175339
175513
|
throw err;
|
|
175340
175514
|
}
|
|
175341
175515
|
const exportsMap = normalizeExports(pkg.exports);
|
|
175342
175516
|
const entry = exportsMap?.[subpath];
|
|
175343
175517
|
const relative3 = pickPath(entry, preference) ?? (subpath === "." ? pkg.module ?? pkg.main : undefined);
|
|
175344
175518
|
if (!relative3) {
|
|
175345
|
-
throw new Error(`No entry for "${subpath}" in exports of ${
|
|
175519
|
+
throw new Error(`No entry for "${subpath}" in exports of ${join17(pkgDir, "package.json")}`);
|
|
175346
175520
|
}
|
|
175347
|
-
return
|
|
175521
|
+
return join17(pkgDir, relative3);
|
|
175348
175522
|
}
|
|
175349
175523
|
|
|
175350
175524
|
// src/domains/runtimeEnv/shimDeps.ts
|
|
175351
175525
|
function readShimMarker(shimDir, fs2) {
|
|
175352
175526
|
try {
|
|
175353
|
-
const pkg = JSON.parse(fs2.readFileSync(
|
|
175527
|
+
const pkg = JSON.parse(fs2.readFileSync(join18(shimDir, "package.json")));
|
|
175354
175528
|
if (pkg._qawolf_format) {
|
|
175355
175529
|
return {
|
|
175356
175530
|
_qawolf_version: pkg._qawolf_version ?? "",
|
|
@@ -175366,11 +175540,11 @@ function resolveBunBuild(bunBuild) {
|
|
|
175366
175540
|
return bunBuild === false ? undefined : { build: bunBuild };
|
|
175367
175541
|
}
|
|
175368
175542
|
async function removeStaleShims(flowsDir, flowsDeps, fs2) {
|
|
175369
|
-
const shimsDir =
|
|
175543
|
+
const shimsDir = join18(flowsDir, "node_modules");
|
|
175370
175544
|
if (!fs2.existsSync(shimsDir))
|
|
175371
175545
|
return;
|
|
175372
175546
|
for (const dep of flowsDeps) {
|
|
175373
|
-
const shimDepDir =
|
|
175547
|
+
const shimDepDir = join18(shimsDir, ...dep.split("/"));
|
|
175374
175548
|
if (readShimMarker(shimDepDir, fs2)) {
|
|
175375
175549
|
await fs2.rm(shimDepDir, { recursive: true, force: true });
|
|
175376
175550
|
}
|
|
@@ -175379,17 +175553,17 @@ async function removeStaleShims(flowsDir, flowsDeps, fs2) {
|
|
|
175379
175553
|
async function buildDepShim(args) {
|
|
175380
175554
|
const { envDir, flowsDir, dep, fs: fs2, build: build2 } = args;
|
|
175381
175555
|
const depParts = dep.split("/");
|
|
175382
|
-
const depDir =
|
|
175556
|
+
const depDir = join18(envDir, "node_modules", ...depParts);
|
|
175383
175557
|
if (!fs2.existsSync(depDir))
|
|
175384
175558
|
return;
|
|
175385
175559
|
let depVersion;
|
|
175386
175560
|
try {
|
|
175387
|
-
const pkg = JSON.parse(fs2.readFileSync(
|
|
175561
|
+
const pkg = JSON.parse(fs2.readFileSync(join18(depDir, "package.json")));
|
|
175388
175562
|
depVersion = pkg.version ?? "unknown";
|
|
175389
175563
|
} catch {
|
|
175390
175564
|
depVersion = "unknown";
|
|
175391
175565
|
}
|
|
175392
|
-
const shimDir =
|
|
175566
|
+
const shimDir = join18(flowsDir, "node_modules", ...depParts);
|
|
175393
175567
|
if (fs2.existsSync(shimDir)) {
|
|
175394
175568
|
const marker = readShimMarker(shimDir, fs2);
|
|
175395
175569
|
if (!marker)
|
|
@@ -175416,20 +175590,20 @@ async function buildDepShim(args) {
|
|
|
175416
175590
|
}
|
|
175417
175591
|
const shimCode = await output.text();
|
|
175418
175592
|
await fs2.mkdir(shimDir, { recursive: true });
|
|
175419
|
-
await fs2.writeFile(
|
|
175593
|
+
await fs2.writeFile(join18(shimDir, "package.json"), JSON.stringify({
|
|
175420
175594
|
name: dep,
|
|
175421
175595
|
_qawolf_version: depVersion,
|
|
175422
175596
|
_qawolf_format: "bun-build-v1"
|
|
175423
175597
|
}));
|
|
175424
|
-
await fs2.writeFile(
|
|
175598
|
+
await fs2.writeFile(join18(shimDir, "index.js"), shimCode);
|
|
175425
175599
|
}
|
|
175426
175600
|
async function shimFlowsDeps(envDir, fs2 = makeDefaultFs(), bunBuild) {
|
|
175427
|
-
const flowsDir =
|
|
175601
|
+
const flowsDir = join18(envDir, "node_modules", "@qawolf", "flows");
|
|
175428
175602
|
if (!fs2.existsSync(flowsDir))
|
|
175429
175603
|
return;
|
|
175430
175604
|
let flowsDeps;
|
|
175431
175605
|
try {
|
|
175432
|
-
const flowsPkg = JSON.parse(fs2.readFileSync(
|
|
175606
|
+
const flowsPkg = JSON.parse(fs2.readFileSync(join18(flowsDir, "package.json")));
|
|
175433
175607
|
flowsDeps = Object.keys(flowsPkg.dependencies ?? {});
|
|
175434
175608
|
} catch {
|
|
175435
175609
|
return;
|
|
@@ -175446,11 +175620,8 @@ async function shimFlowsDeps(envDir, fs2 = makeDefaultFs(), bunBuild) {
|
|
|
175446
175620
|
|
|
175447
175621
|
// src/domains/runtimeEnv/installPinned.ts
|
|
175448
175622
|
var defaultSpawnInstall = spawnNpmInstall;
|
|
175449
|
-
async function installPinned(targetDir, deps
|
|
175450
|
-
fs
|
|
175451
|
-
spawnInstall: defaultSpawnInstall
|
|
175452
|
-
}) {
|
|
175453
|
-
if (allPinnedResolved(targetDir, deps.fs)) {
|
|
175623
|
+
async function installPinned(targetDir, deps) {
|
|
175624
|
+
if (allPinnedResolved(targetDir, deps.fs, deps.platform)) {
|
|
175454
175625
|
return;
|
|
175455
175626
|
}
|
|
175456
175627
|
const tempDir = `${targetDir}.installing.${process.pid}`;
|
|
@@ -175465,7 +175636,7 @@ async function installPinned(targetDir, deps = {
|
|
|
175465
175636
|
try {
|
|
175466
175637
|
await deps.fs.rename(tempDir, targetDir);
|
|
175467
175638
|
} catch (err) {
|
|
175468
|
-
const anotherShardWon = allPinnedResolved(targetDir, deps.fs);
|
|
175639
|
+
const anotherShardWon = allPinnedResolved(targetDir, deps.fs, deps.platform);
|
|
175469
175640
|
if (anotherShardWon) {
|
|
175470
175641
|
await deps.fs.rm(tempDir, { recursive: true, force: true });
|
|
175471
175642
|
return;
|
|
@@ -175478,60 +175649,49 @@ async function installPinned(targetDir, deps = {
|
|
|
175478
175649
|
async function ensureRuntimeEnv(args, deps = {}) {
|
|
175479
175650
|
const fs2 = deps.fs ?? makeDefaultFs();
|
|
175480
175651
|
const resolveManagedDir = deps.resolveManagedDir ?? managedEnvDir;
|
|
175481
|
-
const install = deps.install ?? ((t2) => installPinned(t2, {
|
|
175652
|
+
const install = deps.install ?? ((t2) => installPinned(t2, {
|
|
175653
|
+
fs: fs2,
|
|
175654
|
+
spawnInstall: defaultSpawnInstall,
|
|
175655
|
+
platform: args.platform
|
|
175656
|
+
}));
|
|
175482
175657
|
if (args.overrideDir !== undefined) {
|
|
175483
|
-
|
|
175658
|
+
const failures = pinnedResolutionFailures(args.overrideDir, fs2, args.platform);
|
|
175659
|
+
if (failures.length === 0) {
|
|
175484
175660
|
return {
|
|
175485
175661
|
depsRoot: args.overrideDir,
|
|
175486
175662
|
source: "override",
|
|
175487
175663
|
installed: false
|
|
175488
175664
|
};
|
|
175489
175665
|
}
|
|
175490
|
-
throw new Error(
|
|
175666
|
+
throw new Error(runnerMessages.depsDirIncomplete(args.overrideDir, failures.map(describePinnedFailure)));
|
|
175491
175667
|
}
|
|
175492
|
-
if (args.projectDir !== undefined && allPinnedResolved(args.projectDir, fs2)) {
|
|
175668
|
+
if (args.projectDir !== undefined && allPinnedResolved(args.projectDir, fs2, args.platform)) {
|
|
175493
175669
|
return { depsRoot: args.projectDir, source: "project", installed: false };
|
|
175494
175670
|
}
|
|
175495
175671
|
const managed = resolveManagedDir();
|
|
175496
|
-
if (allPinnedResolved(managed, fs2)) {
|
|
175672
|
+
if (allPinnedResolved(managed, fs2, args.platform)) {
|
|
175497
175673
|
return { depsRoot: managed, source: "managed", installed: false };
|
|
175498
175674
|
}
|
|
175499
175675
|
await install(managed);
|
|
175500
|
-
if (!allPinnedResolved(managed, fs2)) {
|
|
175676
|
+
if (!allPinnedResolved(managed, fs2, args.platform)) {
|
|
175501
175677
|
throw new Error(`Managed runtime is incomplete after install at ${managed}.`);
|
|
175502
175678
|
}
|
|
175503
175679
|
return { depsRoot: managed, source: "managed", installed: true };
|
|
175504
175680
|
}
|
|
175505
175681
|
// src/domains/runtimeEnv/resolveDepsRootIfPresent.ts
|
|
175506
175682
|
function resolveDepsRootIfPresent(args, fs2 = makeDefaultFs()) {
|
|
175507
|
-
if (args.overrideDir !== undefined && allPinnedResolved(args.overrideDir, fs2))
|
|
175683
|
+
if (args.overrideDir !== undefined && allPinnedResolved(args.overrideDir, fs2, args.platform))
|
|
175508
175684
|
return args.overrideDir;
|
|
175509
|
-
if (args.projectDir !== undefined && allPinnedResolved(args.projectDir, fs2))
|
|
175685
|
+
if (args.projectDir !== undefined && allPinnedResolved(args.projectDir, fs2, args.platform))
|
|
175510
175686
|
return args.projectDir;
|
|
175511
175687
|
const managed = managedEnvDir();
|
|
175512
|
-
if (allPinnedResolved(managed, fs2))
|
|
175688
|
+
if (allPinnedResolved(managed, fs2, args.platform))
|
|
175513
175689
|
return managed;
|
|
175514
175690
|
return;
|
|
175515
175691
|
}
|
|
175516
|
-
// src/shell/
|
|
175517
|
-
|
|
175518
|
-
|
|
175519
|
-
return join17(envDir, "node_modules", ".bin", "appium");
|
|
175520
|
-
}
|
|
175521
|
-
|
|
175522
|
-
// src/shell/playwright.ts
|
|
175523
|
-
import { existsSync as existsSync2 } from "node:fs";
|
|
175524
|
-
import { join as join18 } from "node:path";
|
|
175525
|
-
var notFoundMessage = "Could not find Playwright. Install it in your project (`npm install playwright` or `bun add playwright`).";
|
|
175526
|
-
function resolvePlaywrightCli(envDir, platform) {
|
|
175527
|
-
const binDir = join18(envDir, "node_modules", ".bin");
|
|
175528
|
-
const candidates = platform === "win32" ? ["playwright.cmd", "playwright"] : ["playwright"];
|
|
175529
|
-
for (const candidate of candidates) {
|
|
175530
|
-
const full = join18(binDir, candidate);
|
|
175531
|
-
if (existsSync2(full))
|
|
175532
|
-
return full;
|
|
175533
|
-
}
|
|
175534
|
-
throw new Error(notFoundMessage);
|
|
175692
|
+
// src/shell/androidSdkHome.ts
|
|
175693
|
+
function androidSdkHome() {
|
|
175694
|
+
return process.env["ANDROID_HOME"] ?? process.env["ANDROID_SDK_ROOT"];
|
|
175535
175695
|
}
|
|
175536
175696
|
|
|
175537
175697
|
// src/commands/doctor/handler.ts
|
|
@@ -175551,13 +175711,10 @@ async function handleDoctor(ctx, opts) {
|
|
|
175551
175711
|
const cwd = process.cwd();
|
|
175552
175712
|
const flowFiles = await expandPatterns([], cwd, undefined, fs2);
|
|
175553
175713
|
const projectDir = resolveProjectDirSafe([...flowFiles], fs2);
|
|
175554
|
-
const envDir = resolveDepsRootIfPresent(
|
|
175555
|
-
|
|
175556
|
-
|
|
175557
|
-
|
|
175558
|
-
} catch {
|
|
175559
|
-
playwrightCliPath = undefined;
|
|
175560
|
-
}
|
|
175714
|
+
const envDir = resolveDepsRootIfPresent({
|
|
175715
|
+
platform: process.platform,
|
|
175716
|
+
...projectDir !== undefined ? { projectDir } : {}
|
|
175717
|
+
}, fs2);
|
|
175561
175718
|
const resolved = await resolveApiKey(ctx.configDir, fs2);
|
|
175562
175719
|
const requiredAvds = await collectRequiredAvds(flowFiles, makePeekFlowMeta(fs2));
|
|
175563
175720
|
const runAndroidChecks = opts.all || requiredAvds.length > 0;
|
|
@@ -175576,13 +175733,12 @@ async function handleDoctor(ctx, opts) {
|
|
|
175576
175733
|
flowFiles,
|
|
175577
175734
|
readFile: (path2) => ctx.fs.readFile(path2),
|
|
175578
175735
|
cwd,
|
|
175579
|
-
playwrightCliPath,
|
|
175580
175736
|
runAndroidChecks,
|
|
175581
|
-
androidHome:
|
|
175737
|
+
androidHome: androidSdkHome(),
|
|
175582
175738
|
checkExists: (path2) => ctx.fs.existsSync(path2),
|
|
175583
175739
|
envDir,
|
|
175584
|
-
|
|
175585
|
-
|
|
175740
|
+
requiredAvds,
|
|
175741
|
+
platform: process.platform
|
|
175586
175742
|
});
|
|
175587
175743
|
const allResults = [cliCheck, ...results];
|
|
175588
175744
|
renderResults(ctx.ui, allResults);
|
|
@@ -176051,7 +176207,7 @@ var publicContractsV1 = makeContractsV1(defaultIdSchemas);
|
|
|
176051
176207
|
|
|
176052
176208
|
// src/domains/flows/listRemote.ts
|
|
176053
176209
|
async function flowsListRemote(ctx, pattern, options) {
|
|
176054
|
-
const result = await ctx.
|
|
176210
|
+
const result = await ctx.platformClient.callPublicApi(publicContractsV1.flow.list, {
|
|
176055
176211
|
environmentId: options.env,
|
|
176056
176212
|
includeDrafts: options.includeDrafts
|
|
176057
176213
|
});
|
|
@@ -176090,7 +176246,7 @@ async function flowsListRemote(ctx, pattern, options) {
|
|
|
176090
176246
|
}
|
|
176091
176247
|
|
|
176092
176248
|
// src/domains/flows/pull/handler.ts
|
|
176093
|
-
import { dirname as dirname7, join as join23, resolve as
|
|
176249
|
+
import { dirname as dirname7, join as join23, resolve as resolve8 } from "node:path";
|
|
176094
176250
|
|
|
176095
176251
|
// src/shell/manifest/io.ts
|
|
176096
176252
|
import { createHash as createHash2 } from "node:crypto";
|
|
@@ -176145,18 +176301,18 @@ async function writeManifest(envDir, manifest, fs2 = makeDefaultFs()) {
|
|
|
176145
176301
|
`);
|
|
176146
176302
|
}
|
|
176147
176303
|
function hashFile(absPath, fs2 = makeDefaultFs()) {
|
|
176148
|
-
return new Promise((
|
|
176304
|
+
return new Promise((resolve5, reject) => {
|
|
176149
176305
|
const hash2 = createHash2("sha256");
|
|
176150
176306
|
const stream = fs2.createReadStream(absPath);
|
|
176151
176307
|
stream.on("data", (chunk) => hash2.update(chunk));
|
|
176152
|
-
stream.on("end", () =>
|
|
176308
|
+
stream.on("end", () => resolve5(hash2.digest("hex")));
|
|
176153
176309
|
stream.on("error", reject);
|
|
176154
176310
|
});
|
|
176155
176311
|
}
|
|
176156
176312
|
|
|
176157
176313
|
// src/domains/flows/pull/fetchPhase.ts
|
|
176158
176314
|
async function fetchBundleAndEnvVars(ctx, envId) {
|
|
176159
|
-
const {
|
|
176315
|
+
const { platformClient } = ctx;
|
|
176160
176316
|
let tmpArchive;
|
|
176161
176317
|
let bundleFetchedAt;
|
|
176162
176318
|
let envVars;
|
|
@@ -176165,7 +176321,7 @@ async function fetchBundleAndEnvVars(ctx, envId) {
|
|
|
176165
176321
|
{
|
|
176166
176322
|
message: flowsMessages.pull.downloadingBundle,
|
|
176167
176323
|
task: async () => {
|
|
176168
|
-
const result = await
|
|
176324
|
+
const result = await platformClient.downloadBundle(envId);
|
|
176169
176325
|
if (!result.ok)
|
|
176170
176326
|
throw new Error(result.error);
|
|
176171
176327
|
tmpArchive = result.value.tmpArchive;
|
|
@@ -176175,7 +176331,7 @@ async function fetchBundleAndEnvVars(ctx, envId) {
|
|
|
176175
176331
|
{
|
|
176176
176332
|
message: flowsMessages.pull.fetchingEnvVars,
|
|
176177
176333
|
task: async () => {
|
|
176178
|
-
const result = await
|
|
176334
|
+
const result = await platformClient.getEnvVars(envId);
|
|
176179
176335
|
if (!result.ok)
|
|
176180
176336
|
throw new Error(result.error);
|
|
176181
176337
|
envVars = result.value;
|
|
@@ -176190,10 +176346,10 @@ async function fetchBundleAndEnvVars(ctx, envId) {
|
|
|
176190
176346
|
}
|
|
176191
176347
|
|
|
176192
176348
|
// src/domains/flows/pull/safety.ts
|
|
176193
|
-
import { resolve as
|
|
176349
|
+
import { resolve as resolve6 } from "node:path";
|
|
176194
176350
|
|
|
176195
176351
|
// src/domains/flows/pull/entryPath.ts
|
|
176196
|
-
import { isAbsolute as isAbsolute3, posix as posix2, relative as relative3, resolve as
|
|
176352
|
+
import { isAbsolute as isAbsolute3, posix as posix2, relative as relative3, resolve as resolve5 } from "node:path";
|
|
176197
176353
|
function validateEntryPath(name, destResolved) {
|
|
176198
176354
|
if (!name)
|
|
176199
176355
|
throw new Error("empty entry name");
|
|
@@ -176204,7 +176360,7 @@ function validateEntryPath(name, destResolved) {
|
|
|
176204
176360
|
if (normalized === ".." || normalized.startsWith("../")) {
|
|
176205
176361
|
throw new Error(`path traversal: entry escapes destination (${name})`);
|
|
176206
176362
|
}
|
|
176207
|
-
const target =
|
|
176363
|
+
const target = resolve5(destResolved, name);
|
|
176208
176364
|
const rel = relative3(destResolved, target);
|
|
176209
176365
|
if (rel.startsWith("..") || isAbsolute3(rel)) {
|
|
176210
176366
|
throw new Error(`path traversal: entry resolves outside destination (${name})`);
|
|
@@ -176214,7 +176370,7 @@ function validateEntryPath(name, destResolved) {
|
|
|
176214
176370
|
|
|
176215
176371
|
// src/domains/flows/pull/safety.ts
|
|
176216
176372
|
async function detectLocalModifications(envDir, manifest) {
|
|
176217
|
-
const envDirResolved =
|
|
176373
|
+
const envDirResolved = resolve6(envDir);
|
|
176218
176374
|
const mods = [];
|
|
176219
176375
|
for (const entry of manifest.flows) {
|
|
176220
176376
|
const abs = validateEntryPath(entry.path, envDirResolved);
|
|
@@ -176481,7 +176637,7 @@ async function writeEnvFile(envDir, vars, fs2 = makeDefaultFs()) {
|
|
|
176481
176637
|
}
|
|
176482
176638
|
|
|
176483
176639
|
// src/domains/flows/pull/extract.ts
|
|
176484
|
-
import { dirname as dirname6, resolve as
|
|
176640
|
+
import { dirname as dirname6, resolve as resolve7 } from "node:path";
|
|
176485
176641
|
import { createGunzip } from "node:zlib";
|
|
176486
176642
|
|
|
176487
176643
|
// node_modules/tar/dist/esm/index.min.js
|
|
@@ -179679,7 +179835,7 @@ async function extractTarGz(tgzPath, destDir, opts = {}, fs3 = makeDefaultFs())
|
|
|
179679
179835
|
const maxEntryBytes = opts.maxEntryBytes ?? defaultMaxEntryBytes;
|
|
179680
179836
|
const maxTotalBytes = opts.maxTotalBytes ?? defaultMaxTotalBytes;
|
|
179681
179837
|
await fs3.mkdir(destDir, { recursive: true });
|
|
179682
|
-
const destResolved =
|
|
179838
|
+
const destResolved = resolve7(destDir);
|
|
179683
179839
|
return new Promise((resolveOuter, rejectOuter) => {
|
|
179684
179840
|
let total = 0;
|
|
179685
179841
|
let aborted2 = false;
|
|
@@ -179848,7 +180004,7 @@ async function handleFlowsPull(ctx, opts, deps) {
|
|
|
179848
180004
|
ctx.ui.error(validation.error);
|
|
179849
180005
|
return { error: validation.error };
|
|
179850
180006
|
}
|
|
179851
|
-
const destAbs =
|
|
180007
|
+
const destAbs = resolve8(opts.out ?? join23(".qawolf", opts.env));
|
|
179852
180008
|
const assetsAbs = join23(dirname7(destAbs), "assets");
|
|
179853
180009
|
await resolvedDeps.fs.mkdir(assetsAbs, { recursive: true });
|
|
179854
180010
|
const yes = opts.yes ?? false;
|
|
@@ -179891,7 +180047,7 @@ async function handleFlowsPull(ctx, opts, deps) {
|
|
|
179891
180047
|
{
|
|
179892
180048
|
message: flowsMessages.pull.downloadingTeamStorageAssets,
|
|
179893
180049
|
task: async () => {
|
|
179894
|
-
const result2 = await ctx.
|
|
180050
|
+
const result2 = await ctx.platformClient.syncTeamStorageAssets(assetsAbs);
|
|
179895
180051
|
if (!result2.ok)
|
|
179896
180052
|
throw new Error(result2.error);
|
|
179897
180053
|
return result2.value;
|
|
@@ -180337,19 +180493,6 @@ import { AsyncLocalStorage } from "node:async_hooks";
|
|
|
180337
180493
|
function createRunnerDeps(signals, depsRoot) {
|
|
180338
180494
|
return {
|
|
180339
180495
|
fs: makeDefaultFs(),
|
|
180340
|
-
spawn: (cmd, args) => {
|
|
180341
|
-
const child = spawn(cmd, args);
|
|
180342
|
-
const exitCode = new Promise((resolve8) => {
|
|
180343
|
-
child.on("error", () => resolve8(-1));
|
|
180344
|
-
child.on("close", (code) => resolve8(code ?? -1));
|
|
180345
|
-
});
|
|
180346
|
-
return {
|
|
180347
|
-
exitCode,
|
|
180348
|
-
kill: () => {
|
|
180349
|
-
child.kill();
|
|
180350
|
-
}
|
|
180351
|
-
};
|
|
180352
|
-
},
|
|
180353
180496
|
signals,
|
|
180354
180497
|
depsRoot,
|
|
180355
180498
|
createStorage: () => {
|
|
@@ -180364,46 +180507,43 @@ function createRunnerDeps(signals, depsRoot) {
|
|
|
180364
180507
|
};
|
|
180365
180508
|
}
|
|
180366
180509
|
|
|
180510
|
+
// src/shell/importFromPath.ts
|
|
180511
|
+
import { pathToFileURL } from "node:url";
|
|
180512
|
+
function importFromPath(absPath) {
|
|
180513
|
+
return import(pathToFileURL(absPath).href);
|
|
180514
|
+
}
|
|
180515
|
+
|
|
180367
180516
|
// src/domains/runner/runWebFlowDeps.ts
|
|
180368
|
-
async function defaultRunWebFlowDeps(
|
|
180517
|
+
async function defaultRunWebFlowDeps(envDir = process.cwd(), signals) {
|
|
180369
180518
|
let playwright;
|
|
180370
180519
|
try {
|
|
180371
|
-
const playwrightPath = resolveFromEnvDir(
|
|
180372
|
-
playwright = await
|
|
180520
|
+
const playwrightPath = resolveFromEnvDir(envDir, "playwright");
|
|
180521
|
+
playwright = await importFromPath(playwrightPath);
|
|
180373
180522
|
} catch (err) {
|
|
180374
|
-
throw new Error(
|
|
180523
|
+
throw new Error(runnerMessages.playwrightLoadFailed(envDir, errorMessage(err)), {
|
|
180524
|
+
cause: err
|
|
180525
|
+
});
|
|
180375
180526
|
}
|
|
180376
180527
|
const { chromium, firefox, webkit } = playwright;
|
|
180377
180528
|
return {
|
|
180378
180529
|
chromium,
|
|
180379
180530
|
firefox,
|
|
180380
180531
|
webkit,
|
|
180381
|
-
...createRunnerDeps(signals,
|
|
180532
|
+
...createRunnerDeps(signals, envDir)
|
|
180382
180533
|
};
|
|
180383
180534
|
}
|
|
180384
180535
|
|
|
180385
180536
|
// src/domains/runtimeEnv/prepareRunDir.ts
|
|
180386
|
-
import { createHash as
|
|
180387
|
-
import {
|
|
180388
|
-
|
|
180389
|
-
// src/shell/copyDir.ts
|
|
180390
|
-
import { cp, readdir as readdir2 } from "node:fs/promises";
|
|
180391
|
-
import { basename as basename3, join as join24 } from "node:path";
|
|
180392
|
-
async function copyDirExcluding(source, destination, excludedNames) {
|
|
180393
|
-
const entries = await readdir2(source, { withFileTypes: true });
|
|
180394
|
-
await Promise.all(entries.filter((entry) => !excludedNames.has(entry.name)).map((entry) => cp(join24(source, entry.name), join24(destination, entry.name), {
|
|
180395
|
-
recursive: true,
|
|
180396
|
-
filter: (path3) => !excludedNames.has(basename3(path3))
|
|
180397
|
-
})));
|
|
180398
|
-
}
|
|
180537
|
+
import { createHash as createHash4 } from "node:crypto";
|
|
180538
|
+
import { join as join30, resolve as resolve9 } from "node:path";
|
|
180399
180539
|
|
|
180400
180540
|
// src/domains/runtimeEnv/execSubpathImports.ts
|
|
180401
|
-
import { join as
|
|
180541
|
+
import { join as join24 } from "node:path";
|
|
180402
180542
|
var flowSubpathImports = { "#playwright": "playwright" };
|
|
180403
180543
|
var packageJsonSchema = exports_external.looseObject({ imports: exports_external.record(exports_external.string(), exports_external.unknown()).catch({}) }).catch({ imports: {} });
|
|
180404
180544
|
async function writeExecSubpathImports(args) {
|
|
180405
180545
|
const { execDir, fs: fs3 } = args;
|
|
180406
|
-
const pkgPath =
|
|
180546
|
+
const pkgPath = join24(execDir, "package.json");
|
|
180407
180547
|
const pkg = packageJsonSchema.parse(await readPackageJson(pkgPath, fs3));
|
|
180408
180548
|
const merged = { ...pkg, imports: { ...pkg.imports, ...flowSubpathImports } };
|
|
180409
180549
|
await fs3.writeFile(pkgPath, JSON.stringify(merged, undefined, 2));
|
|
@@ -180425,10 +180565,10 @@ async function readPackageJson(pkgPath, fs3) {
|
|
|
180425
180565
|
}
|
|
180426
180566
|
|
|
180427
180567
|
// src/domains/runtimeEnv/innerHop.ts
|
|
180428
|
-
import { join as
|
|
180568
|
+
import { join as join26 } from "node:path";
|
|
180429
180569
|
|
|
180430
180570
|
// src/domains/runtimeEnv/linkPinnedPackages.ts
|
|
180431
|
-
import { dirname as dirname8, join as
|
|
180571
|
+
import { dirname as dirname8, join as join25 } from "node:path";
|
|
180432
180572
|
|
|
180433
180573
|
// src/domains/runtimeEnv/symlinkDir.ts
|
|
180434
180574
|
import { symlink } from "node:fs/promises";
|
|
@@ -180440,16 +180580,16 @@ async function createDirSymlink(source, target) {
|
|
|
180440
180580
|
// src/domains/runtimeEnv/linkPinnedPackages.ts
|
|
180441
180581
|
async function linkPinnedPackages(args) {
|
|
180442
180582
|
const { depsRoot, nodeModulesDir, fs: fs3 } = args;
|
|
180443
|
-
const managedModules =
|
|
180583
|
+
const managedModules = join25(depsRoot, "node_modules");
|
|
180444
180584
|
await fs3.mkdir(nodeModulesDir, { recursive: true });
|
|
180445
180585
|
for (const { name } of pinnedPackages) {
|
|
180446
180586
|
const segments = name.split("/");
|
|
180447
|
-
const target =
|
|
180587
|
+
const target = join25(nodeModulesDir, ...segments);
|
|
180448
180588
|
if (segments.length > 1) {
|
|
180449
180589
|
await fs3.mkdir(dirname8(target), { recursive: true });
|
|
180450
180590
|
}
|
|
180451
180591
|
await fs3.rm(target, { recursive: true, force: true });
|
|
180452
|
-
await createDirSymlink(
|
|
180592
|
+
await createDirSymlink(join25(managedModules, ...segments), target);
|
|
180453
180593
|
}
|
|
180454
180594
|
}
|
|
180455
180595
|
|
|
@@ -180458,14 +180598,14 @@ async function populateInnerHop(args) {
|
|
|
180458
180598
|
const { depsRoot, execDir, fs: fs3 } = args;
|
|
180459
180599
|
await linkPinnedPackages({
|
|
180460
180600
|
depsRoot,
|
|
180461
|
-
nodeModulesDir:
|
|
180601
|
+
nodeModulesDir: join26(execDir, "node_modules"),
|
|
180462
180602
|
fs: fs3
|
|
180463
180603
|
});
|
|
180464
180604
|
}
|
|
180465
180605
|
|
|
180466
180606
|
// src/domains/runtimeEnv/outerHop.ts
|
|
180467
180607
|
import { lstat } from "node:fs/promises";
|
|
180468
|
-
import { dirname as dirname9, join as
|
|
180608
|
+
import { dirname as dirname9, join as join27 } from "node:path";
|
|
180469
180609
|
var executorPackageNames = new Set(pinnedPackages.map((p3) => p3.name));
|
|
180470
180610
|
async function populateOuterHop(args) {
|
|
180471
180611
|
const { projectDir, runDir, fs: fs3 } = args;
|
|
@@ -180475,7 +180615,7 @@ async function populateOuterHop(args) {
|
|
|
180475
180615
|
const depNames = Object.keys(installableDeps);
|
|
180476
180616
|
const { satisfying, rejected } = await findSatisfyingNodeModulesDir(projectDir, depNames, fs3);
|
|
180477
180617
|
if (satisfying !== undefined) {
|
|
180478
|
-
await createDirSymlink(satisfying,
|
|
180618
|
+
await createDirSymlink(satisfying, join27(runDir, "node_modules"));
|
|
180479
180619
|
return { mode: "symlink", nodeModulesDir: satisfying };
|
|
180480
180620
|
}
|
|
180481
180621
|
if (depNames.length === 0)
|
|
@@ -180484,7 +180624,7 @@ async function populateOuterHop(args) {
|
|
|
180484
180624
|
await installOuterDeps(runDir, installableDeps, fs3, args.install ?? spawnNpmInstall);
|
|
180485
180625
|
await linkPinnedPackages({
|
|
180486
180626
|
depsRoot: args.depsRoot,
|
|
180487
|
-
nodeModulesDir:
|
|
180627
|
+
nodeModulesDir: join27(runDir, "node_modules"),
|
|
180488
180628
|
fs: fs3
|
|
180489
180629
|
});
|
|
180490
180630
|
return { mode: "install", depCount: depNames.length, rejected };
|
|
@@ -180493,10 +180633,10 @@ async function findSatisfyingNodeModulesDir(startDir, depNames, fs3) {
|
|
|
180493
180633
|
const rejected = [];
|
|
180494
180634
|
let dir = startDir;
|
|
180495
180635
|
while (true) {
|
|
180496
|
-
const candidate =
|
|
180636
|
+
const candidate = join27(dir, "node_modules");
|
|
180497
180637
|
const stats = await lstatSafe(candidate);
|
|
180498
180638
|
if (stats !== undefined && stats.isDirectory() && !stats.isSymbolicLink()) {
|
|
180499
|
-
const missing = depNames.filter((name) => !fs3.existsSync(
|
|
180639
|
+
const missing = depNames.filter((name) => !fs3.existsSync(join27(candidate, name, "package.json")));
|
|
180500
180640
|
if (missing.length === 0)
|
|
180501
180641
|
return { satisfying: candidate, rejected };
|
|
180502
180642
|
rejected.push({ dir: candidate, missing });
|
|
@@ -180517,7 +180657,7 @@ async function lstatSafe(path3) {
|
|
|
180517
180657
|
async function readInstallableDeps(projectDir, fs3) {
|
|
180518
180658
|
let content;
|
|
180519
180659
|
try {
|
|
180520
|
-
content = await fs3.readFile(
|
|
180660
|
+
content = await fs3.readFile(join27(projectDir, "package.json"));
|
|
180521
180661
|
} catch {
|
|
180522
180662
|
return {};
|
|
180523
180663
|
}
|
|
@@ -180535,8 +180675,8 @@ async function readInstallableDeps(projectDir, fs3) {
|
|
|
180535
180675
|
return Object.fromEntries(Object.entries(rawDeps).filter(([name]) => !executorPackageNames.has(name)).filter((entry) => typeof entry[1] === "string"));
|
|
180536
180676
|
}
|
|
180537
180677
|
async function installOuterDeps(runDir, deps, fs3, install) {
|
|
180538
|
-
await fs3.writeFile(
|
|
180539
|
-
await fs3.writeFile(
|
|
180678
|
+
await fs3.writeFile(join27(runDir, "package.json"), JSON.stringify({ name: "qawolf-run", private: true, dependencies: deps }, undefined, 2));
|
|
180679
|
+
await fs3.writeFile(join27(runDir, ".npmrc"), `@qawolf:registry=https://registry.npmjs.org/
|
|
180540
180680
|
`);
|
|
180541
180681
|
const result = await install(runDir);
|
|
180542
180682
|
if (result.exitCode !== 0) {
|
|
@@ -180544,16 +180684,61 @@ async function installOuterDeps(runDir, deps, fs3, install) {
|
|
|
180544
180684
|
}
|
|
180545
180685
|
}
|
|
180546
180686
|
|
|
180547
|
-
// src/domains/runtimeEnv/
|
|
180687
|
+
// src/domains/runtimeEnv/stageFlowFiles.ts
|
|
180688
|
+
import { createHash as createHash3 } from "node:crypto";
|
|
180689
|
+
import { basename as basename4, dirname as dirname10, join as join29, sep as sep4 } from "node:path";
|
|
180690
|
+
|
|
180691
|
+
// src/shell/copyDir.ts
|
|
180692
|
+
import { cp, readdir as readdir2 } from "node:fs/promises";
|
|
180693
|
+
import { basename as basename3, join as join28 } from "node:path";
|
|
180694
|
+
async function copyDirExcluding(source, destination, excludedNames) {
|
|
180695
|
+
const entries = await readdir2(source, { withFileTypes: true });
|
|
180696
|
+
await Promise.all(entries.filter((entry) => !excludedNames.has(entry.name)).map((entry) => cp(join28(source, entry.name), join28(destination, entry.name), {
|
|
180697
|
+
recursive: true,
|
|
180698
|
+
filter: (path3) => !excludedNames.has(basename3(path3))
|
|
180699
|
+
})));
|
|
180700
|
+
}
|
|
180701
|
+
|
|
180702
|
+
// src/domains/runtimeEnv/stageFlowFiles.ts
|
|
180548
180703
|
var excludedDirs = new Set(["node_modules", ".git", ".qawolf"]);
|
|
180704
|
+
async function stageFlowFiles(args) {
|
|
180705
|
+
const { files, projectDir, execDir, fs: fs3 } = args;
|
|
180706
|
+
if (projectDir !== undefined) {
|
|
180707
|
+
await copyDirExcluding(projectDir, execDir, excludedDirs);
|
|
180708
|
+
return Promise.all(files.map(async (f3) => remapPath(f3, projectDir, execDir) ?? stageOneFile(f3, execDir, fs3)));
|
|
180709
|
+
}
|
|
180710
|
+
if (files.length > 1) {
|
|
180711
|
+
return Promise.all(files.map((f3) => stageOneFile(f3, execDir, fs3)));
|
|
180712
|
+
}
|
|
180713
|
+
await Promise.all(files.map((f3) => fs3.copyFile(f3, join29(execDir, basename4(f3)))));
|
|
180714
|
+
return files.map((f3) => join29(execDir, basename4(f3)));
|
|
180715
|
+
}
|
|
180716
|
+
async function stageOneFile(file2, execDir, fs3) {
|
|
180717
|
+
const dirHash = createHash3("sha256").update(dirname10(file2)).digest("hex").slice(0, 8);
|
|
180718
|
+
const subDir = join29(execDir, dirHash);
|
|
180719
|
+
await fs3.mkdir(subDir, { recursive: true });
|
|
180720
|
+
const dest = join29(subDir, basename4(file2));
|
|
180721
|
+
await fs3.copyFile(file2, dest);
|
|
180722
|
+
return dest;
|
|
180723
|
+
}
|
|
180724
|
+
function remapPath(file2, projectDir, execDir) {
|
|
180725
|
+
if (file2 === projectDir)
|
|
180726
|
+
return execDir;
|
|
180727
|
+
if (file2.startsWith(projectDir + sep4)) {
|
|
180728
|
+
return join29(execDir, file2.slice(projectDir.length + 1));
|
|
180729
|
+
}
|
|
180730
|
+
return;
|
|
180731
|
+
}
|
|
180732
|
+
|
|
180733
|
+
// src/domains/runtimeEnv/prepareRunDir.ts
|
|
180549
180734
|
async function prepareRunDir(args) {
|
|
180550
180735
|
const { files, projectDir, depsRoot, runRoot } = args;
|
|
180551
180736
|
const fs3 = args.fs ?? makeDefaultFs();
|
|
180552
180737
|
const runId = buildRunId(projectDir, files);
|
|
180553
|
-
const runDir =
|
|
180738
|
+
const runDir = join30(runRoot, runId);
|
|
180554
180739
|
await fs3.rm(runDir, { recursive: true, force: true });
|
|
180555
180740
|
await fs3.mkdir(runDir, { recursive: true });
|
|
180556
|
-
const execDir =
|
|
180741
|
+
const execDir = join30(runDir, "exec");
|
|
180557
180742
|
await fs3.mkdir(execDir, { recursive: true });
|
|
180558
180743
|
await populateInnerHop({ depsRoot, execDir, fs: fs3 });
|
|
180559
180744
|
const stagedFiles = await stageFlowFiles({ files, projectDir, execDir, fs: fs3 });
|
|
@@ -180579,49 +180764,22 @@ function buildRunId(projectDir, files) {
|
|
|
180579
180764
|
if (seedPath === undefined) {
|
|
180580
180765
|
throw new Error("prepareRunDir: files must be non-empty when projectDir is undefined");
|
|
180581
180766
|
}
|
|
180582
|
-
const hash2 =
|
|
180767
|
+
const hash2 = createHash4("sha256").update(resolve9(seedPath)).digest("hex").slice(0, 16);
|
|
180583
180768
|
return `${hash2}-${process.pid}`;
|
|
180584
180769
|
}
|
|
180585
|
-
async function stageFlowFiles(args) {
|
|
180586
|
-
const { files, projectDir, execDir, fs: fs3 } = args;
|
|
180587
|
-
if (projectDir !== undefined) {
|
|
180588
|
-
await copyDirExcluding(projectDir, execDir, excludedDirs);
|
|
180589
|
-
return files.map((f3) => remapPath(f3, projectDir, execDir));
|
|
180590
|
-
}
|
|
180591
|
-
if (files.length > 1) {
|
|
180592
|
-
return Promise.all(files.map(async (f3) => {
|
|
180593
|
-
const dirHash = createHash3("sha256").update(dirname10(f3)).digest("hex").slice(0, 8);
|
|
180594
|
-
const subDir = join29(execDir, dirHash);
|
|
180595
|
-
await fs3.mkdir(subDir, { recursive: true });
|
|
180596
|
-
const dest = join29(subDir, basename4(f3));
|
|
180597
|
-
await fs3.copyFile(f3, dest);
|
|
180598
|
-
return dest;
|
|
180599
|
-
}));
|
|
180600
|
-
}
|
|
180601
|
-
await Promise.all(files.map((f3) => fs3.copyFile(f3, join29(execDir, basename4(f3)))));
|
|
180602
|
-
return files.map((f3) => join29(execDir, basename4(f3)));
|
|
180603
|
-
}
|
|
180604
|
-
function remapPath(file2, projectDir, execDir) {
|
|
180605
|
-
if (file2 === projectDir)
|
|
180606
|
-
return execDir;
|
|
180607
|
-
if (file2.startsWith(projectDir + sep4)) {
|
|
180608
|
-
return join29(execDir, file2.slice(projectDir.length + 1));
|
|
180609
|
-
}
|
|
180610
|
-
return file2;
|
|
180611
|
-
}
|
|
180612
180770
|
|
|
180613
180771
|
// src/shell/testkit.ts
|
|
180614
|
-
import { join as
|
|
180772
|
+
import { join as join31 } from "node:path";
|
|
180615
180773
|
function notAvailableLocally(name) {
|
|
180616
180774
|
throw new Error(runnerMessages.notAvailableLocally(name));
|
|
180617
180775
|
}
|
|
180618
180776
|
async function loadSdkDeps(cwd) {
|
|
180619
|
-
const testkitDir =
|
|
180777
|
+
const testkitDir = join31(cwd, "node_modules", "@qawolf", "testkit");
|
|
180620
180778
|
try {
|
|
180621
|
-
const clientMod = await
|
|
180779
|
+
const clientMod = await importFromPath(resolveFromEnvDir(cwd, "@qawolf/testkit/client"));
|
|
180622
180780
|
if (typeof clientMod.createTestkitClient !== "function")
|
|
180623
180781
|
throw new Error("createTestkitClient is not a function");
|
|
180624
|
-
const scopeMod = await
|
|
180782
|
+
const scopeMod = await importFromPath(join31(testkitDir, "dist", "clientScope.js"));
|
|
180625
180783
|
if (typeof scopeMod.configureTestkitClient !== "function")
|
|
180626
180784
|
throw new Error("configureTestkitClient is not a function");
|
|
180627
180785
|
return {
|
|
@@ -180629,7 +180787,7 @@ async function loadSdkDeps(cwd) {
|
|
|
180629
180787
|
configureTestkitClient: scopeMod.configureTestkitClient
|
|
180630
180788
|
};
|
|
180631
180789
|
} catch (err) {
|
|
180632
|
-
throw new Error("
|
|
180790
|
+
throw new Error(packageLoadFailed("@qawolf/testkit", cwd, errorMessage(err)), { cause: err });
|
|
180633
180791
|
}
|
|
180634
180792
|
}
|
|
180635
180793
|
async function configureTestkit(cwd, deps) {
|
|
@@ -180648,6 +180806,7 @@ function resolveDepsRoot(args) {
|
|
|
180648
180806
|
const fs3 = args.fs ?? makeDefaultFs();
|
|
180649
180807
|
const projectDir = resolveProjectDirSafe(args.files, fs3);
|
|
180650
180808
|
return ensureRuntimeEnv({
|
|
180809
|
+
platform: args.platform,
|
|
180651
180810
|
...projectDir !== undefined ? { projectDir } : {},
|
|
180652
180811
|
...args.overrideDir !== undefined ? { overrideDir: args.overrideDir } : {}
|
|
180653
180812
|
}, { fs: fs3 });
|
|
@@ -180657,9 +180816,9 @@ function resolveDepsRoot(args) {
|
|
|
180657
180816
|
async function loadSdkDeps2(cwd) {
|
|
180658
180817
|
try {
|
|
180659
180818
|
const emailsPath = resolveFromEnvDir(cwd, "@qawolf/emails");
|
|
180660
|
-
return await
|
|
180819
|
+
return await importFromPath(emailsPath);
|
|
180661
180820
|
} catch (err) {
|
|
180662
|
-
throw new Error("
|
|
180821
|
+
throw new Error(packageLoadFailed("@qawolf/emails", cwd, errorMessage(err)), { cause: err });
|
|
180663
180822
|
}
|
|
180664
180823
|
}
|
|
180665
180824
|
async function configureEmails(config2, cwd, deps) {
|
|
@@ -180678,9 +180837,9 @@ async function registerLazyEmailsClient(getInbox, cwd, deps) {
|
|
|
180678
180837
|
}
|
|
180679
180838
|
|
|
180680
180839
|
// src/commands/flows/envVarDeps.ts
|
|
180681
|
-
import { join as
|
|
180840
|
+
import { join as join32 } from "node:path";
|
|
180682
180841
|
function envFilePath(envDir) {
|
|
180683
|
-
return
|
|
180842
|
+
return join32(envDir, ".env");
|
|
180684
180843
|
}
|
|
180685
180844
|
async function readEnv(envDir, fs3) {
|
|
180686
180845
|
try {
|
|
@@ -180715,14 +180874,13 @@ function makeEnvVarDeps(envDir, fs3) {
|
|
|
180715
180874
|
}
|
|
180716
180875
|
|
|
180717
180876
|
// src/commands/flows/flowRuntimeDeps.ts
|
|
180718
|
-
async function maybeGetIdentityTeamId(
|
|
180719
|
-
const identity = await
|
|
180877
|
+
async function maybeGetIdentityTeamId(platformClient) {
|
|
180878
|
+
const identity = await platformClient.getIdentity();
|
|
180720
180879
|
return identity.ok ? identity.value.team.id : undefined;
|
|
180721
180880
|
}
|
|
180722
180881
|
function lazyGetInbox({
|
|
180723
180882
|
envDir,
|
|
180724
180883
|
ctx,
|
|
180725
|
-
platform,
|
|
180726
180884
|
env: env2,
|
|
180727
180885
|
resolveApiKeyFn,
|
|
180728
180886
|
configureEmailsFn,
|
|
@@ -180733,16 +180891,13 @@ function lazyGetInbox({
|
|
|
180733
180891
|
const explicitEmailerUrl = env2["EMAILER_URL"];
|
|
180734
180892
|
let teamId = env2["CLOUD_AGENTS_INBOX_TEAM_ID"];
|
|
180735
180893
|
const apiKeyResult = explicitEmailerUrl === undefined ? await resolveApiKeyFn(ctx.configDir, ctx.fs) : undefined;
|
|
180736
|
-
if (teamId === undefined && platform !== undefined) {
|
|
180737
|
-
teamId = await maybeGetIdentityTeamId(platform);
|
|
180738
|
-
}
|
|
180739
180894
|
if (teamId === undefined && apiKeyResult !== undefined) {
|
|
180740
|
-
const
|
|
180895
|
+
const identityClient = createPlatform(apiKeyResult.key, {
|
|
180741
180896
|
baseUrl: ctx.apiBaseUrl,
|
|
180742
180897
|
fetch: globalThis.fetch,
|
|
180743
180898
|
...ctx.log ? { logger: ctx.log("trpc") } : {}
|
|
180744
180899
|
});
|
|
180745
|
-
teamId = await maybeGetIdentityTeamId(
|
|
180900
|
+
teamId = await maybeGetIdentityTeamId(identityClient);
|
|
180746
180901
|
}
|
|
180747
180902
|
const teamIdPart = teamId !== undefined ? { teamId } : {};
|
|
180748
180903
|
if (explicitEmailerUrl !== undefined) {
|
|
@@ -180764,7 +180919,6 @@ function lazyGetInbox({
|
|
|
180764
180919
|
async function createFlowRuntimeDeps({
|
|
180765
180920
|
envDir,
|
|
180766
180921
|
ctx,
|
|
180767
|
-
platform,
|
|
180768
180922
|
env: env2 = process.env,
|
|
180769
180923
|
resolveApiKeyFn = resolveApiKey,
|
|
180770
180924
|
configureEmailsFn = configureEmails,
|
|
@@ -180773,7 +180927,6 @@ async function createFlowRuntimeDeps({
|
|
|
180773
180927
|
const getInbox = lazyGetInbox({
|
|
180774
180928
|
envDir,
|
|
180775
180929
|
ctx,
|
|
180776
|
-
platform,
|
|
180777
180930
|
env: env2,
|
|
180778
180931
|
resolveApiKeyFn,
|
|
180779
180932
|
configureEmailsFn,
|
|
@@ -180789,30 +180942,38 @@ async function createFlowRuntimeDeps({
|
|
|
180789
180942
|
}
|
|
180790
180943
|
|
|
180791
180944
|
// src/shell/appium/createAppiumServer.ts
|
|
180792
|
-
import {
|
|
180945
|
+
import { existsSync as existsSync2 } from "node:fs";
|
|
180793
180946
|
|
|
180794
180947
|
// src/shell/appium/spawnAppium.ts
|
|
180795
180948
|
import { spawn as spawn2 } from "node:child_process";
|
|
180796
180949
|
import net from "node:net";
|
|
180797
180950
|
import { PassThrough } from "node:stream";
|
|
180798
|
-
var findFreePort = () => new Promise((
|
|
180951
|
+
var findFreePort = () => new Promise((resolve10, reject) => {
|
|
180799
180952
|
const server = net.createServer();
|
|
180800
180953
|
server.listen(0, () => {
|
|
180801
180954
|
const addr = server.address();
|
|
180802
|
-
server.close(() =>
|
|
180955
|
+
server.close(() => resolve10(addr.port));
|
|
180803
180956
|
});
|
|
180804
180957
|
server.on("error", reject);
|
|
180805
180958
|
});
|
|
180806
|
-
|
|
180807
|
-
const
|
|
180959
|
+
function buildAppiumSpawn(bin, args, platform, env2) {
|
|
180960
|
+
const built = buildSpawnCommand(bin, args, platform, env2);
|
|
180961
|
+
return {
|
|
180962
|
+
...built,
|
|
180963
|
+
options: { stdio: ["ignore", "pipe", "pipe"], ...built.options }
|
|
180964
|
+
};
|
|
180965
|
+
}
|
|
180966
|
+
var defaultSpawnAppium = (bin, args, platform, env2) => {
|
|
180967
|
+
const built = buildAppiumSpawn(bin, args, platform, env2);
|
|
180968
|
+
const child = spawn2(built.cmd, built.args, built.options);
|
|
180808
180969
|
const output = new PassThrough;
|
|
180809
180970
|
child.stdout?.pipe(output, { end: false });
|
|
180810
180971
|
child.stderr?.pipe(output, { end: false });
|
|
180811
|
-
const exitCode = new Promise((
|
|
180972
|
+
const exitCode = new Promise((resolve10, reject) => {
|
|
180812
180973
|
child.on("error", (err) => reject(new Error(`Failed to spawn Appium: ${err.message}`)));
|
|
180813
180974
|
child.on("close", (code, signal) => {
|
|
180814
180975
|
if (code !== null)
|
|
180815
|
-
|
|
180976
|
+
resolve10(code);
|
|
180816
180977
|
else
|
|
180817
180978
|
reject(new Error(`Appium process killed by signal ${signal ?? "unknown"}`));
|
|
180818
180979
|
});
|
|
@@ -180825,7 +180986,7 @@ var readyBanner = "Appium REST http interface listener started on";
|
|
|
180825
180986
|
var defaultStartTimeoutMs = 30000;
|
|
180826
180987
|
var bannerBufferMaxBytes = 1024;
|
|
180827
180988
|
function waitForBanner(output, exitCode, timeoutMs3) {
|
|
180828
|
-
return new Promise((
|
|
180989
|
+
return new Promise((resolve10, reject) => {
|
|
180829
180990
|
let done = false;
|
|
180830
180991
|
function cleanup() {
|
|
180831
180992
|
done = true;
|
|
@@ -180843,7 +181004,7 @@ function waitForBanner(output, exitCode, timeoutMs3) {
|
|
|
180843
181004
|
if (buffer.includes(readyBanner)) {
|
|
180844
181005
|
cleanup();
|
|
180845
181006
|
output.resume();
|
|
180846
|
-
|
|
181007
|
+
resolve10();
|
|
180847
181008
|
}
|
|
180848
181009
|
};
|
|
180849
181010
|
const timer = setTimeout(() => {
|
|
@@ -180863,15 +181024,17 @@ function waitForBanner(output, exitCode, timeoutMs3) {
|
|
|
180863
181024
|
async function createAppiumServer(envDir, signals, params) {
|
|
180864
181025
|
const spawnFn = params?.deps?.spawn ?? defaultSpawnAppium;
|
|
180865
181026
|
const findFreePortFn = params?.deps?.findFreePort ?? findFreePort;
|
|
180866
|
-
const
|
|
180867
|
-
const
|
|
181027
|
+
const checkExists = params?.deps?.checkExists ?? existsSync2;
|
|
181028
|
+
const appiumHome = params?.options?.appiumHome ?? getAppiumHome();
|
|
180868
181029
|
const timeoutMs3 = params?.options?.startTimeoutMs ?? defaultStartTimeoutMs;
|
|
180869
|
-
const
|
|
181030
|
+
const platform = params?.options?.platform ?? process.platform;
|
|
181031
|
+
const candidates = appiumCliCandidates(envDir, platform);
|
|
181032
|
+
const bin = candidates.find(checkExists);
|
|
181033
|
+
if (!bin) {
|
|
181034
|
+
throw new Error(installMessages.android.appiumNotFound(candidates[0] ?? envDir));
|
|
181035
|
+
}
|
|
180870
181036
|
const port = await findFreePortFn();
|
|
180871
|
-
const proc = spawnFn(bin, ["--port", String(port), "--log-level", "info"], {
|
|
180872
|
-
...process.env,
|
|
180873
|
-
APPIUM_HOME: appiumHome2
|
|
180874
|
-
});
|
|
181037
|
+
const proc = spawnFn(bin, ["--port", String(port), "--log-level", "info"], platform, { ...process.env, APPIUM_HOME: appiumHome });
|
|
180875
181038
|
let stopped = false;
|
|
180876
181039
|
const stop = () => {
|
|
180877
181040
|
if (stopped)
|
|
@@ -180887,7 +181050,7 @@ async function createAppiumServer(envDir, signals, params) {
|
|
|
180887
181050
|
});
|
|
180888
181051
|
return {
|
|
180889
181052
|
port,
|
|
180890
|
-
home:
|
|
181053
|
+
home: appiumHome,
|
|
180891
181054
|
exited: proc.exitCode,
|
|
180892
181055
|
stop: () => {
|
|
180893
181056
|
unregister();
|
|
@@ -180897,31 +181060,25 @@ async function createAppiumServer(envDir, signals, params) {
|
|
|
180897
181060
|
}
|
|
180898
181061
|
|
|
180899
181062
|
// src/shell/appium/createAndroidEmulator.ts
|
|
180900
|
-
import {
|
|
181063
|
+
import { spawn as spawn3 } from "node:child_process";
|
|
181064
|
+
|
|
181065
|
+
// src/shell/appium/adb.ts
|
|
181066
|
+
import { execFile } from "node:child_process";
|
|
180901
181067
|
import { promisify } from "node:util";
|
|
180902
181068
|
var execFileAsync = promisify(execFile);
|
|
181069
|
+
var defaultAdb = async (args) => {
|
|
181070
|
+
const { stdout: stdout2 } = await execFileAsync(adbBin(androidSdkHome(), process.platform), args);
|
|
181071
|
+
return { stdout: stdout2 };
|
|
181072
|
+
};
|
|
181073
|
+
|
|
181074
|
+
// src/shell/appium/createAndroidEmulator.ts
|
|
180903
181075
|
var defaultBootTimeoutMs = 120000;
|
|
180904
181076
|
var pollIntervalMs = 2000;
|
|
180905
|
-
|
|
180906
|
-
return process.env["ANDROID_HOME"] ?? process.env["ANDROID_SDK_ROOT"];
|
|
180907
|
-
}
|
|
180908
|
-
function emulatorBin() {
|
|
180909
|
-
const home = androidHome();
|
|
180910
|
-
return home ? `${home}/emulator/emulator` : "emulator";
|
|
180911
|
-
}
|
|
180912
|
-
function adbBin() {
|
|
180913
|
-
const home = androidHome();
|
|
180914
|
-
return home ? `${home}/platform-tools/adb` : "adb";
|
|
180915
|
-
}
|
|
180916
|
-
var defaultSpawn2 = (bin, args) => {
|
|
181077
|
+
var defaultSpawnEmulator = (bin, args) => {
|
|
180917
181078
|
const child = spawn3(bin, args, { stdio: "ignore" });
|
|
180918
181079
|
child.unref();
|
|
180919
181080
|
return { stop: () => child.kill() };
|
|
180920
181081
|
};
|
|
180921
|
-
var defaultAdb = async (args) => {
|
|
180922
|
-
const { stdout: stdout2 } = await execFileAsync(adbBin(), args);
|
|
180923
|
-
return { stdout: stdout2 };
|
|
180924
|
-
};
|
|
180925
181082
|
async function bootSequence(adb, serial, cancelled) {
|
|
180926
181083
|
await adb(["-s", serial, "wait-for-device"]);
|
|
180927
181084
|
while (!cancelled()) {
|
|
@@ -180938,7 +181095,7 @@ async function bootSequence(adb, serial, cancelled) {
|
|
|
180938
181095
|
}
|
|
180939
181096
|
}
|
|
180940
181097
|
function waitForBoot(adb, serial, timeoutMs3) {
|
|
180941
|
-
return new Promise((
|
|
181098
|
+
return new Promise((resolve10, reject) => {
|
|
180942
181099
|
let done = false;
|
|
180943
181100
|
const timer = setTimeout(() => {
|
|
180944
181101
|
done = true;
|
|
@@ -180948,7 +181105,7 @@ function waitForBoot(adb, serial, timeoutMs3) {
|
|
|
180948
181105
|
if (!done) {
|
|
180949
181106
|
done = true;
|
|
180950
181107
|
clearTimeout(timer);
|
|
180951
|
-
|
|
181108
|
+
resolve10();
|
|
180952
181109
|
}
|
|
180953
181110
|
}).catch((err) => {
|
|
180954
181111
|
if (!done) {
|
|
@@ -180961,11 +181118,11 @@ function waitForBoot(adb, serial, timeoutMs3) {
|
|
|
180961
181118
|
}
|
|
180962
181119
|
async function createAndroidEmulator(params) {
|
|
180963
181120
|
const { avdName, port } = params;
|
|
180964
|
-
const spawnFn = params.deps?.spawn ??
|
|
181121
|
+
const spawnFn = params.deps?.spawn ?? defaultSpawnEmulator;
|
|
180965
181122
|
const adbFn = params.deps?.adb ?? defaultAdb;
|
|
180966
181123
|
const timeoutMs3 = params.options?.bootTimeoutMs ?? defaultBootTimeoutMs;
|
|
180967
181124
|
const serial = `emulator-${port}`;
|
|
180968
|
-
const proc = spawnFn(emulatorBin(), [
|
|
181125
|
+
const proc = spawnFn(emulatorBin(androidSdkHome(), process.platform), [
|
|
180969
181126
|
"-avd",
|
|
180970
181127
|
avdName,
|
|
180971
181128
|
"-no-audio",
|
|
@@ -181052,10 +181209,10 @@ function createEmulatorPool(params) {
|
|
|
181052
181209
|
const next = freeSlots.get(avdName)?.shift();
|
|
181053
181210
|
if (next)
|
|
181054
181211
|
return Promise.resolve(next);
|
|
181055
|
-
return new Promise((
|
|
181212
|
+
return new Promise((resolve10, reject) => {
|
|
181056
181213
|
const pending = waiters.get(avdName) ?? [];
|
|
181057
181214
|
waiters.set(avdName, pending);
|
|
181058
|
-
pending.push({ resolve:
|
|
181215
|
+
pending.push({ resolve: resolve10, reject });
|
|
181059
181216
|
});
|
|
181060
181217
|
},
|
|
181061
181218
|
checkIn(slot) {
|
|
@@ -181095,61 +181252,6 @@ function createEmulatorPool(params) {
|
|
|
181095
181252
|
return pool;
|
|
181096
181253
|
}
|
|
181097
181254
|
|
|
181098
|
-
// src/shell/appium/emulatorSetup.ts
|
|
181099
|
-
import { execFile as execFile2 } from "node:child_process";
|
|
181100
|
-
import { promisify as promisify2 } from "node:util";
|
|
181101
|
-
var execFileAsync2 = promisify2(execFile2);
|
|
181102
|
-
function adbBin2() {
|
|
181103
|
-
const home = process.env["ANDROID_HOME"] ?? process.env["ANDROID_SDK_ROOT"];
|
|
181104
|
-
return home ? `${home}/platform-tools/adb` : "adb";
|
|
181105
|
-
}
|
|
181106
|
-
var defaultAdb2 = async (args) => {
|
|
181107
|
-
const { stdout: stdout2 } = await execFileAsync2(adbBin2(), args);
|
|
181108
|
-
return { stdout: stdout2 };
|
|
181109
|
-
};
|
|
181110
|
-
async function disableAnimations(adb, serial) {
|
|
181111
|
-
await Promise.all([
|
|
181112
|
-
adb([
|
|
181113
|
-
"-s",
|
|
181114
|
-
serial,
|
|
181115
|
-
"shell",
|
|
181116
|
-
"settings",
|
|
181117
|
-
"put",
|
|
181118
|
-
"global",
|
|
181119
|
-
"window_animation_scale",
|
|
181120
|
-
"0.0"
|
|
181121
|
-
]),
|
|
181122
|
-
adb([
|
|
181123
|
-
"-s",
|
|
181124
|
-
serial,
|
|
181125
|
-
"shell",
|
|
181126
|
-
"settings",
|
|
181127
|
-
"put",
|
|
181128
|
-
"global",
|
|
181129
|
-
"transition_animation_scale",
|
|
181130
|
-
"0.0"
|
|
181131
|
-
]),
|
|
181132
|
-
adb([
|
|
181133
|
-
"-s",
|
|
181134
|
-
serial,
|
|
181135
|
-
"shell",
|
|
181136
|
-
"settings",
|
|
181137
|
-
"put",
|
|
181138
|
-
"global",
|
|
181139
|
-
"animator_duration_scale",
|
|
181140
|
-
"0.0"
|
|
181141
|
-
])
|
|
181142
|
-
]);
|
|
181143
|
-
}
|
|
181144
|
-
async function dismissKeyguard(adb, serial) {
|
|
181145
|
-
await adb(["-s", serial, "shell", "input", "keyevent", "KEYCODE_WAKEUP"]);
|
|
181146
|
-
await adb(["-s", serial, "shell", "wm", "dismiss-keyguard"]);
|
|
181147
|
-
}
|
|
181148
|
-
async function configureEmulator(adb, serial) {
|
|
181149
|
-
await disableAnimations(adb, serial);
|
|
181150
|
-
await dismissKeyguard(adb, serial);
|
|
181151
|
-
}
|
|
181152
|
-
|
|
181153
181255
|
// src/domains/runner/runAndroidFlowDeps.ts
|
|
181154
181256
|
async function createSession(port, serial) {
|
|
181155
181257
|
const { remote: remote2 } = await Promise.resolve().then(() => (init_node3(), exports_node));
|
|
@@ -181171,7 +181273,7 @@ async function createSession(port, serial) {
|
|
|
181171
181273
|
};
|
|
181172
181274
|
}
|
|
181173
181275
|
function createAndroidDeps(envDir, signals) {
|
|
181174
|
-
const pool = createEmulatorPool({ signals, deps: { adb:
|
|
181276
|
+
const pool = createEmulatorPool({ signals, deps: { adb: defaultAdb } });
|
|
181175
181277
|
const serverHandle = { port: 0, home: "", stop: () => {} };
|
|
181176
181278
|
let serverStarted = false;
|
|
181177
181279
|
const deps = {
|
|
@@ -181179,11 +181281,10 @@ function createAndroidDeps(envDir, signals) {
|
|
|
181179
181281
|
appiumServer: serverHandle,
|
|
181180
181282
|
emulatorPool: pool,
|
|
181181
181283
|
createSession,
|
|
181182
|
-
adb:
|
|
181284
|
+
adb: defaultAdb
|
|
181183
181285
|
};
|
|
181184
181286
|
const boot = async (avdNames) => {
|
|
181185
|
-
|
|
181186
|
-
if (!androidHome2) {
|
|
181287
|
+
if (!androidSdkHome()) {
|
|
181187
181288
|
throw new Error(`ANDROID_HOME is not set. Set it to the Android SDK path.
|
|
181188
181289
|
Install Android Studio and open Tools > SDK Manager.`);
|
|
181189
181290
|
}
|
|
@@ -181233,11 +181334,18 @@ async function findFlowStamp(flowAbsPath) {
|
|
|
181233
181334
|
|
|
181234
181335
|
// src/domains/install/browsers.ts
|
|
181235
181336
|
async function installBrowserList(ctx, browsers, deps) {
|
|
181337
|
+
const candidates = playwrightCliCandidates(deps.envDir, deps.platform);
|
|
181338
|
+
const cliPath = candidates.find(deps.checkExists);
|
|
181339
|
+
if (!cliPath) {
|
|
181340
|
+
throw new Error(installMessages.playwrightNotFound(candidates[0] ?? deps.envDir));
|
|
181341
|
+
}
|
|
181236
181342
|
await ctx.ui.withProgress(browsers.map((browser) => ({
|
|
181237
181343
|
message: installMessages.installingBrowser(browser),
|
|
181238
181344
|
task: async () => {
|
|
181239
181345
|
const args = buildArgs(browser, deps.platform, deps.browserDeps);
|
|
181240
|
-
const result = await deps.spawn(
|
|
181346
|
+
const result = await deps.spawn(cliPath, args, {
|
|
181347
|
+
platform: deps.platform
|
|
181348
|
+
});
|
|
181241
181349
|
if (result.exitCode !== 0) {
|
|
181242
181350
|
throw new Error(formatError2(browser, result));
|
|
181243
181351
|
}
|
|
@@ -181252,12 +181360,12 @@ async function installBrowsers(ctx, pattern, deps) {
|
|
|
181252
181360
|
ctx.ui.info(installMessages.noBrowserFlows);
|
|
181253
181361
|
return;
|
|
181254
181362
|
}
|
|
181255
|
-
const playwrightCliPath = await deps.resolvePlaywrightCliPath(files);
|
|
181256
181363
|
await installBrowserList(ctx, browsers, {
|
|
181257
181364
|
spawn: deps.spawn,
|
|
181258
181365
|
platform: deps.platform,
|
|
181259
181366
|
browserDeps: deps.browserDeps,
|
|
181260
|
-
|
|
181367
|
+
envDir: await deps.resolveDepsRoot(files),
|
|
181368
|
+
checkExists: deps.checkExists
|
|
181261
181369
|
});
|
|
181262
181370
|
}
|
|
181263
181371
|
async function collectBrowsers(files, peekFlowMeta) {
|
|
@@ -181289,12 +181397,58 @@ import path12 from "node:path";
|
|
|
181289
181397
|
// src/shell/appium/createAndroidLaunchContext.ts
|
|
181290
181398
|
import { writeFile } from "node:fs/promises";
|
|
181291
181399
|
import path8 from "node:path";
|
|
181400
|
+
|
|
181401
|
+
// src/shell/appium/emulatorSetup.ts
|
|
181402
|
+
async function disableAnimations(adb, serial) {
|
|
181403
|
+
await Promise.all([
|
|
181404
|
+
adb([
|
|
181405
|
+
"-s",
|
|
181406
|
+
serial,
|
|
181407
|
+
"shell",
|
|
181408
|
+
"settings",
|
|
181409
|
+
"put",
|
|
181410
|
+
"global",
|
|
181411
|
+
"window_animation_scale",
|
|
181412
|
+
"0.0"
|
|
181413
|
+
]),
|
|
181414
|
+
adb([
|
|
181415
|
+
"-s",
|
|
181416
|
+
serial,
|
|
181417
|
+
"shell",
|
|
181418
|
+
"settings",
|
|
181419
|
+
"put",
|
|
181420
|
+
"global",
|
|
181421
|
+
"transition_animation_scale",
|
|
181422
|
+
"0.0"
|
|
181423
|
+
]),
|
|
181424
|
+
adb([
|
|
181425
|
+
"-s",
|
|
181426
|
+
serial,
|
|
181427
|
+
"shell",
|
|
181428
|
+
"settings",
|
|
181429
|
+
"put",
|
|
181430
|
+
"global",
|
|
181431
|
+
"animator_duration_scale",
|
|
181432
|
+
"0.0"
|
|
181433
|
+
])
|
|
181434
|
+
]);
|
|
181435
|
+
}
|
|
181436
|
+
async function dismissKeyguard(adb, serial) {
|
|
181437
|
+
await adb(["-s", serial, "shell", "input", "keyevent", "KEYCODE_WAKEUP"]);
|
|
181438
|
+
await adb(["-s", serial, "shell", "wm", "dismiss-keyguard"]);
|
|
181439
|
+
}
|
|
181440
|
+
async function configureEmulator(adb, serial) {
|
|
181441
|
+
await disableAnimations(adb, serial);
|
|
181442
|
+
await dismissKeyguard(adb, serial);
|
|
181443
|
+
}
|
|
181444
|
+
|
|
181445
|
+
// src/shell/appium/createAndroidLaunchContext.ts
|
|
181292
181446
|
var defaultWriteFile = (filePath, data2) => writeFile(filePath, data2);
|
|
181293
181447
|
function createAndroidLaunchContext({
|
|
181294
181448
|
deps,
|
|
181295
181449
|
options
|
|
181296
181450
|
}) {
|
|
181297
|
-
const adbFn = deps.adb ??
|
|
181451
|
+
const adbFn = deps.adb ?? defaultAdb;
|
|
181298
181452
|
const writeFileFn = deps.writeFile ?? defaultWriteFile;
|
|
181299
181453
|
let slot;
|
|
181300
181454
|
let driver;
|
|
@@ -181349,7 +181503,7 @@ function createAndroidLaunchContext({
|
|
|
181349
181503
|
|
|
181350
181504
|
// src/domains/runner/loadFlowDefault.ts
|
|
181351
181505
|
import path11 from "node:path";
|
|
181352
|
-
import { pathToFileURL } from "node:url";
|
|
181506
|
+
import { pathToFileURL as pathToFileURL2 } from "node:url";
|
|
181353
181507
|
|
|
181354
181508
|
// src/shell/resolver/detectRuntimeCapabilities.ts
|
|
181355
181509
|
import nodeModule2 from "node:module";
|
|
@@ -181550,7 +181704,7 @@ async function importBundledFlow(flowPath, code, fs9) {
|
|
|
181550
181704
|
const tempPath = path11.join(path11.dirname(flowPath), `.${path11.basename(flowPath)}.qawolf-bundle.mjs`);
|
|
181551
181705
|
await fs9.writeFile(tempPath, code);
|
|
181552
181706
|
try {
|
|
181553
|
-
return await importDefaultExport(
|
|
181707
|
+
return await importDefaultExport(pathToFileURL2(tempPath).href, flowPath);
|
|
181554
181708
|
} finally {
|
|
181555
181709
|
await fs9.rm(tempPath, { force: true });
|
|
181556
181710
|
}
|
|
@@ -181564,7 +181718,7 @@ async function loadFlowDefault(args) {
|
|
|
181564
181718
|
} = args;
|
|
181565
181719
|
if (bundleFlow === undefined) {
|
|
181566
181720
|
await registerFlowLoader();
|
|
181567
|
-
return importDefaultExport(
|
|
181721
|
+
return importDefaultExport(pathToFileURL2(flowPath).href, flowPath);
|
|
181568
181722
|
}
|
|
181569
181723
|
const code = await bundleFlow(flowPath, depsRoot);
|
|
181570
181724
|
return importBundledFlow(flowPath, code, fs9);
|
|
@@ -181741,7 +181895,7 @@ import path17 from "node:path";
|
|
|
181741
181895
|
|
|
181742
181896
|
// src/domains/runner/initFlowRuntime.ts
|
|
181743
181897
|
import path13 from "node:path";
|
|
181744
|
-
import { pathToFileURL as
|
|
181898
|
+
import { pathToFileURL as pathToFileURL3 } from "node:url";
|
|
181745
181899
|
async function runnerPathInDir(dir, fs9) {
|
|
181746
181900
|
const pkgPath = path13.join(dir, "node_modules", "@qawolf", "flows", "package.json");
|
|
181747
181901
|
try {
|
|
@@ -181782,7 +181936,7 @@ async function doInit(flowPath, timeout, fs9, depsRoot) {
|
|
|
181782
181936
|
} else {
|
|
181783
181937
|
runnerPath = await findFlowsRunnerPath(flowPath, fs9);
|
|
181784
181938
|
}
|
|
181785
|
-
const mod = await import(
|
|
181939
|
+
const mod = await import(pathToFileURL3(runnerPath).href);
|
|
181786
181940
|
if (typeof mod.configureFlowRuntime !== "function")
|
|
181787
181941
|
throw new Error(`@qawolf/flows _runner at ${runnerPath} does not export configureFlowRuntime`);
|
|
181788
181942
|
await mod.configureFlowRuntime({
|
|
@@ -182190,8 +182344,8 @@ function lastNonEmptyLine(text3) {
|
|
|
182190
182344
|
return lines[lines.length - 1];
|
|
182191
182345
|
}
|
|
182192
182346
|
async function runWorkerOnce(args) {
|
|
182193
|
-
const { spawn: spawn4, command, prefixArgs, flow, optionsJson, workerEnv } = args;
|
|
182194
|
-
const result = await spawn4(command, [...prefixArgs, "flows", "__run-worker", flow.file], workerEnv !== undefined ? { stdin: optionsJson, env: workerEnv } : { stdin: optionsJson });
|
|
182347
|
+
const { spawn: spawn4, command, prefixArgs, flow, optionsJson, platform, workerEnv } = args;
|
|
182348
|
+
const result = await spawn4(command, [...prefixArgs, "flows", "__run-worker", flow.file], workerEnv !== undefined ? { stdin: optionsJson, env: workerEnv, platform } : { stdin: optionsJson, platform });
|
|
182195
182349
|
const line = lastNonEmptyLine(result.stdout);
|
|
182196
182350
|
if (line !== undefined) {
|
|
182197
182351
|
try {
|
|
@@ -182214,6 +182368,7 @@ function createSubprocessDispatch(env3) {
|
|
|
182214
182368
|
spawn: env3.spawn,
|
|
182215
182369
|
command: env3.command,
|
|
182216
182370
|
prefixArgs: env3.prefixArgs,
|
|
182371
|
+
platform: env3.platform,
|
|
182217
182372
|
workerEnv: env3.workerEnv,
|
|
182218
182373
|
flow,
|
|
182219
182374
|
optionsJson: serializeWorkerInput({
|
|
@@ -182233,6 +182388,7 @@ function makePooledDispatch(resolvedDir) {
|
|
|
182233
182388
|
spawn: defaultSpawn,
|
|
182234
182389
|
command,
|
|
182235
182390
|
prefixArgs,
|
|
182391
|
+
platform: process.platform,
|
|
182236
182392
|
workerEnv,
|
|
182237
182393
|
resolvedDir,
|
|
182238
182394
|
webOptions,
|
|
@@ -182495,7 +182651,8 @@ function buildFlowsRunDeps(args) {
|
|
|
182495
182651
|
spawn: defaultSpawn,
|
|
182496
182652
|
platform: process.platform,
|
|
182497
182653
|
browserDeps: flags.browserDeps,
|
|
182498
|
-
|
|
182654
|
+
envDir: resolvedDir,
|
|
182655
|
+
checkExists: (path9) => ctx.fs.existsSync(path9)
|
|
182499
182656
|
}),
|
|
182500
182657
|
runWebFlow,
|
|
182501
182658
|
runWebFlowDeps: { ...runWebFlowDeps, flowRuntimeDeps },
|
|
@@ -182546,6 +182703,7 @@ async function runStagedFlows(args) {
|
|
|
182546
182703
|
message: runnerMessages.preparingEnvironment,
|
|
182547
182704
|
task: () => deps.resolveDepsRoot({
|
|
182548
182705
|
files,
|
|
182706
|
+
platform: process.platform,
|
|
182549
182707
|
...flags.deps !== undefined ? { overrideDir: flags.deps } : {}
|
|
182550
182708
|
})
|
|
182551
182709
|
}
|
|
@@ -182623,7 +182781,7 @@ async function handleFlowsRun(ctx, pattern, flags, deps) {
|
|
|
182623
182781
|
}
|
|
182624
182782
|
|
|
182625
182783
|
// src/commands/flows/hybridRunDefaults.ts
|
|
182626
|
-
import { join as join36, resolve as
|
|
182784
|
+
import { join as join36, resolve as resolve10 } from "node:path";
|
|
182627
182785
|
function makeDefaultHybridDeps(fs9) {
|
|
182628
182786
|
return {
|
|
182629
182787
|
expandPatterns: (patterns, cwd, logger) => expandPatterns(patterns, cwd, logger, fs9),
|
|
@@ -182642,7 +182800,7 @@ async function handleHybridFlowsRun(ctx, pattern, flags, deps) {
|
|
|
182642
182800
|
if (validation !== "ok") {
|
|
182643
182801
|
return { error: validation.error, exitCode: 2 };
|
|
182644
182802
|
}
|
|
182645
|
-
const envDir =
|
|
182803
|
+
const envDir = resolve10(join36(".qawolf", flags.env));
|
|
182646
182804
|
const patternArgs = buildPatternArgs(pattern);
|
|
182647
182805
|
const globFlows = () => resolvedDeps.expandPatterns(patternArgs, envDir, ctx.log("flows"));
|
|
182648
182806
|
let files = await globFlows();
|
|
@@ -182918,27 +183076,29 @@ Examples:
|
|
|
182918
183076
|
});
|
|
182919
183077
|
}
|
|
182920
183078
|
|
|
182921
|
-
// src/commands/install/android.ts
|
|
182922
|
-
import { join as join40 } from "node:path";
|
|
182923
|
-
|
|
182924
183079
|
// src/domains/install/android/index.ts
|
|
182925
183080
|
import { parseExecutionTarget as parseExecutionTarget4 } from "@qawolf/flow-targets";
|
|
182926
183081
|
|
|
182927
183082
|
// src/domains/install/android/avd.ts
|
|
182928
183083
|
import { join as join38 } from "node:path";
|
|
182929
183084
|
async function installAvds(ctx, specs, deps) {
|
|
182930
|
-
const
|
|
183085
|
+
const sdkManagerPath = sdkManagerBin(deps.androidHome, deps.platform);
|
|
183086
|
+
const avdManagerPath = avdManagerBin(deps.androidHome, deps.platform);
|
|
183087
|
+
const versionResult = await deps.spawn(sdkManagerPath, ["--version"], {
|
|
183088
|
+
platform: deps.platform
|
|
183089
|
+
});
|
|
182931
183090
|
if (versionResult.exitCode !== 0) {
|
|
182932
|
-
throw new Error(installMessages.android.sdkmanagerNotFound(
|
|
183091
|
+
throw new Error(installMessages.android.sdkmanagerNotFound(sdkManagerPath));
|
|
182933
183092
|
}
|
|
182934
183093
|
const licenseFile = join38(deps.androidHome, "licenses", "android-sdk-license");
|
|
182935
183094
|
if (deps.checkExists(licenseFile)) {
|
|
182936
183095
|
ctx.ui.info(installMessages.android.licensesAlreadyAccepted);
|
|
182937
183096
|
} else {
|
|
182938
183097
|
ctx.ui.step(installMessages.android.acceptingLicenses);
|
|
182939
|
-
await deps.spawn(
|
|
183098
|
+
await deps.spawn(sdkManagerPath, ["--licenses"], {
|
|
182940
183099
|
stdin: `y
|
|
182941
|
-
`.repeat(20)
|
|
183100
|
+
`.repeat(20),
|
|
183101
|
+
platform: deps.platform
|
|
182942
183102
|
});
|
|
182943
183103
|
}
|
|
182944
183104
|
const installedImages = new Set;
|
|
@@ -182952,7 +183112,9 @@ async function installAvds(ctx, specs, deps) {
|
|
|
182952
183112
|
continue;
|
|
182953
183113
|
}
|
|
182954
183114
|
ctx.ui.step(installMessages.android.installingSystemImage(spec.systemImage));
|
|
182955
|
-
const result = await deps.spawn(
|
|
183115
|
+
const result = await deps.spawn(sdkManagerPath, [spec.systemImage], {
|
|
183116
|
+
platform: deps.platform
|
|
183117
|
+
});
|
|
182956
183118
|
if (result.exitCode !== 0) {
|
|
182957
183119
|
const detail = (result.stderr || result.stdout).split(`
|
|
182958
183120
|
`).map((l2) => l2.trim()).find(Boolean) ?? `exit code ${result.exitCode}`;
|
|
@@ -182960,11 +183122,9 @@ async function installAvds(ctx, specs, deps) {
|
|
|
182960
183122
|
}
|
|
182961
183123
|
installedImages.add(spec.systemImage);
|
|
182962
183124
|
}
|
|
182963
|
-
const listResult = await deps.spawn(
|
|
182964
|
-
|
|
182965
|
-
|
|
182966
|
-
"-c"
|
|
182967
|
-
]);
|
|
183125
|
+
const listResult = await deps.spawn(avdManagerPath, ["list", "avd", "-c"], {
|
|
183126
|
+
platform: deps.platform
|
|
183127
|
+
});
|
|
182968
183128
|
const existingAvds = new Set(listResult.stdout.split(`
|
|
182969
183129
|
`).map((s3) => s3.trim()).filter(Boolean));
|
|
182970
183130
|
for (const spec of specs) {
|
|
@@ -182973,7 +183133,7 @@ async function installAvds(ctx, specs, deps) {
|
|
|
182973
183133
|
continue;
|
|
182974
183134
|
}
|
|
182975
183135
|
ctx.ui.step(installMessages.android.creatingAvd(spec.avdName));
|
|
182976
|
-
const result = await deps.spawn(
|
|
183136
|
+
const result = await deps.spawn(avdManagerPath, [
|
|
182977
183137
|
"create",
|
|
182978
183138
|
"avd",
|
|
182979
183139
|
"-n",
|
|
@@ -182983,7 +183143,7 @@ async function installAvds(ctx, specs, deps) {
|
|
|
182983
183143
|
"-d",
|
|
182984
183144
|
spec.deviceId,
|
|
182985
183145
|
"--force"
|
|
182986
|
-
]);
|
|
183146
|
+
], { platform: deps.platform });
|
|
182987
183147
|
if (result.exitCode !== 0) {
|
|
182988
183148
|
const detail = (result.stderr || result.stdout).split(`
|
|
182989
183149
|
`).map((l2) => l2.trim()).find(Boolean) ?? `exit code ${result.exitCode}`;
|
|
@@ -182993,18 +183153,20 @@ async function installAvds(ctx, specs, deps) {
|
|
|
182993
183153
|
}
|
|
182994
183154
|
|
|
182995
183155
|
// src/domains/install/android/driver.ts
|
|
182996
|
-
import { join as join39 } from "node:path";
|
|
182997
|
-
var appiumEnv = {
|
|
182998
|
-
APPIUM_HOME: join39(envPaths("qawolf").data, "appium")
|
|
182999
|
-
};
|
|
183000
183156
|
async function installUiautomator2Driver(ctx, deps) {
|
|
183001
|
-
const
|
|
183157
|
+
const appiumEnv = { APPIUM_HOME: getAppiumHome() };
|
|
183158
|
+
const candidates = appiumCliCandidates(deps.envDir, deps.platform);
|
|
183159
|
+
const appiumBinPath = candidates.find(deps.checkExists);
|
|
183160
|
+
if (!appiumBinPath) {
|
|
183161
|
+
throw new Error(installMessages.android.appiumNotFound(candidates[0] ?? deps.envDir));
|
|
183162
|
+
}
|
|
183163
|
+
const listResult = await deps.spawn(appiumBinPath, ["driver", "list", "--installed"], { env: appiumEnv, platform: deps.platform });
|
|
183002
183164
|
if ((listResult.stdout + listResult.stderr).includes("uiautomator2")) {
|
|
183003
183165
|
ctx.ui.info(installMessages.android.uiautomator2AlreadyInstalled);
|
|
183004
183166
|
return;
|
|
183005
183167
|
}
|
|
183006
183168
|
ctx.ui.step(installMessages.android.installingUiautomator2);
|
|
183007
|
-
const installResult = await deps.spawn(
|
|
183169
|
+
const installResult = await deps.spawn(appiumBinPath, ["driver", "install", `uiautomator2@${appiumUiautomator2DriverVersion}`], { env: appiumEnv, platform: deps.platform });
|
|
183008
183170
|
if (installResult.exitCode !== 0) {
|
|
183009
183171
|
const output = installResult.stderr + installResult.stdout;
|
|
183010
183172
|
if (output.includes("already installed")) {
|
|
@@ -183029,15 +183191,15 @@ async function installAndroid(ctx, pattern, deps) {
|
|
|
183029
183191
|
const specs = buildAvdSpecs(targets, deps.arch);
|
|
183030
183192
|
await installAvds(ctx, specs, {
|
|
183031
183193
|
spawn: deps.spawn,
|
|
183032
|
-
sdkManagerPath: deps.sdkManagerPath,
|
|
183033
|
-
avdManagerPath: deps.avdManagerPath,
|
|
183034
183194
|
androidHome: deps.androidHome,
|
|
183035
|
-
checkExists: deps.checkExists
|
|
183195
|
+
checkExists: deps.checkExists,
|
|
183196
|
+
platform: deps.platform
|
|
183036
183197
|
});
|
|
183037
|
-
const depsRoot = await deps.resolveDepsRoot(files);
|
|
183038
183198
|
await installUiautomator2Driver(ctx, {
|
|
183039
183199
|
spawn: deps.spawn,
|
|
183040
|
-
|
|
183200
|
+
envDir: await deps.resolveDepsRoot(files),
|
|
183201
|
+
platform: deps.platform,
|
|
183202
|
+
checkExists: deps.checkExists
|
|
183041
183203
|
});
|
|
183042
183204
|
ctx.ui.success(`Android install complete. ${pluralize(specs.length, "unique AVD")} ready.`);
|
|
183043
183205
|
}
|
|
@@ -183071,8 +183233,8 @@ function buildAvdSpecs(targets, arch) {
|
|
|
183071
183233
|
|
|
183072
183234
|
// src/commands/install/android.ts
|
|
183073
183235
|
async function handleInstallAndroid(ctx, pattern, envDir) {
|
|
183074
|
-
const
|
|
183075
|
-
if (!
|
|
183236
|
+
const androidHome = androidSdkHome();
|
|
183237
|
+
if (!androidHome) {
|
|
183076
183238
|
return { error: installMessages.androidSdkNotFound };
|
|
183077
183239
|
}
|
|
183078
183240
|
const { fs: fs9 } = ctx;
|
|
@@ -183080,14 +183242,12 @@ async function handleInstallAndroid(ctx, pattern, envDir) {
|
|
|
183080
183242
|
cwd: process.cwd(),
|
|
183081
183243
|
spawn: defaultSpawn,
|
|
183082
183244
|
arch: process.arch,
|
|
183083
|
-
androidHome
|
|
183245
|
+
androidHome,
|
|
183084
183246
|
checkExists: (path9) => fs9.existsSync(path9),
|
|
183085
|
-
|
|
183086
|
-
avdManagerPath: join40(androidHome2, "cmdline-tools", "latest", "bin", "avdmanager"),
|
|
183247
|
+
platform: process.platform,
|
|
183087
183248
|
expandPatterns: (patterns, cwd) => expandPatterns(patterns, cwd ?? process.cwd(), undefined, fs9),
|
|
183088
183249
|
peekFlowMeta: makePeekFlowMeta(fs9),
|
|
183089
|
-
resolveDepsRoot: async (files) => envDir ?? (await resolveDepsRoot({ files, fs: fs9 })).depsRoot
|
|
183090
|
-
resolveAppiumBin
|
|
183250
|
+
resolveDepsRoot: async (files) => envDir ?? (await resolveDepsRoot({ files, fs: fs9, platform: process.platform })).depsRoot
|
|
183091
183251
|
});
|
|
183092
183252
|
}
|
|
183093
183253
|
|
|
@@ -183103,10 +183263,8 @@ async function handleInstallBrowsers(ctx, pattern, options) {
|
|
|
183103
183263
|
browserDeps,
|
|
183104
183264
|
expandPatterns: (patterns, dir) => expandPatterns(patterns, dir ?? cwd, undefined, fs9),
|
|
183105
183265
|
peekFlowMeta: makePeekFlowMeta(fs9),
|
|
183106
|
-
|
|
183107
|
-
|
|
183108
|
-
return resolvePlaywrightCli(depsRoot, process.platform);
|
|
183109
|
-
}
|
|
183266
|
+
checkExists: (path9) => fs9.existsSync(path9),
|
|
183267
|
+
resolveDepsRoot: async (files) => envDir ?? (await resolveDepsRoot({ files, fs: fs9, platform: process.platform })).depsRoot
|
|
183110
183268
|
});
|
|
183111
183269
|
}
|
|
183112
183270
|
|
|
@@ -183171,7 +183329,7 @@ async function handleInstall(ctx, pattern, options) {
|
|
|
183171
183329
|
cwd: process.cwd(),
|
|
183172
183330
|
expandPatterns: (patterns, cwd) => expandPatterns(patterns, cwd ?? process.cwd(), undefined, fs9),
|
|
183173
183331
|
peekFlowMeta: makePeekFlowMeta(fs9),
|
|
183174
|
-
resolveDepsRoot: (files) => resolveDepsRoot({ files, fs: fs9 }),
|
|
183332
|
+
resolveDepsRoot: (files) => resolveDepsRoot({ files, fs: fs9, platform: process.platform }),
|
|
183175
183333
|
installBrowsers: (innerCtx, innerPattern, envDir) => handleInstallBrowsers(innerCtx, innerPattern, {
|
|
183176
183334
|
envDir,
|
|
183177
183335
|
browserDeps: options.browserDeps
|
|
@@ -183507,7 +183665,7 @@ async function handlePublicApiCommand(ctx, spec, options) {
|
|
|
183507
183665
|
const parsed = spec.contract.input.safeParse(assembled.input);
|
|
183508
183666
|
if (!parsed.success)
|
|
183509
183667
|
return { error: exports_external.prettifyError(parsed.error) };
|
|
183510
|
-
const result = await ctx.
|
|
183668
|
+
const result = await ctx.platformClient.callPublicApi(spec.contract, parsed.data);
|
|
183511
183669
|
if (!result.ok)
|
|
183512
183670
|
return { error: result.error };
|
|
183513
183671
|
ctx.ui.output(result.value, renderHuman(result.value));
|
|
@@ -183587,4 +183745,4 @@ createProgram({ signals }).parseAsync().catch(() => {
|
|
|
183587
183745
|
process.exitCode = 1;
|
|
183588
183746
|
}).finally(() => flushAndExit(typeof process.exitCode === "number" ? process.exitCode : 0));
|
|
183589
183747
|
|
|
183590
|
-
//# debugId=
|
|
183748
|
+
//# debugId=393CFE300FA7E35C64756E2164756E21
|