wxt 0.17.4 → 0.17.6
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/{chunk-E5MGUY6P.js → chunk-3ZE2CHPV.js} +313 -35
- package/dist/chunk-VBXJIVYU.js +38 -0
- package/dist/cli.d.ts +2 -0
- package/dist/cli.js +455 -101
- package/dist/execa-4F7CCWCA.js +2191 -0
- package/dist/{index-vpYNIeCJ.d.cts → index-l43sonfW.d.cts} +83 -3
- package/dist/{index-vpYNIeCJ.d.ts → index-l43sonfW.d.ts} +83 -3
- package/dist/index.cjs +2914 -182
- package/dist/index.d.cts +5 -4
- package/dist/index.d.ts +5 -4
- package/dist/index.js +105 -27
- package/dist/storage.js +1 -1
- package/dist/testing.cjs +71 -44
- package/dist/testing.d.cts +2 -1
- package/dist/testing.d.ts +2 -1
- package/dist/testing.js +2 -2
- package/package.json +5 -3
- package/dist/chunk-P57PW2II.js +0 -11
package/dist/index.cjs
CHANGED
|
@@ -5,6 +5,12 @@ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
|
5
5
|
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
6
|
var __getProtoOf = Object.getPrototypeOf;
|
|
7
7
|
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
+
var __esm = (fn, res) => function __init() {
|
|
9
|
+
return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res;
|
|
10
|
+
};
|
|
11
|
+
var __commonJS = (cb, mod) => function __require() {
|
|
12
|
+
return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
|
|
13
|
+
};
|
|
8
14
|
var __export = (target, all) => {
|
|
9
15
|
for (var name in all)
|
|
10
16
|
__defProp(target, name, { get: all[name], enumerable: true });
|
|
@@ -15,17 +21,2396 @@ var __copyProps = (to, from, except, desc) => {
|
|
|
15
21
|
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
16
22
|
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
17
23
|
}
|
|
18
|
-
return to;
|
|
19
|
-
};
|
|
20
|
-
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
21
|
-
// If the importer is in node compatibility mode or this is not an ESM
|
|
22
|
-
// file that has been converted to a CommonJS file using a Babel-
|
|
23
|
-
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
24
|
-
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
25
|
-
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
26
|
-
mod
|
|
27
|
-
));
|
|
28
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
24
|
+
return to;
|
|
25
|
+
};
|
|
26
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
27
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
28
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
29
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
30
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
31
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
32
|
+
mod
|
|
33
|
+
));
|
|
34
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
35
|
+
|
|
36
|
+
// node_modules/.pnpm/isexe@2.0.0/node_modules/isexe/windows.js
|
|
37
|
+
var require_windows = __commonJS({
|
|
38
|
+
"node_modules/.pnpm/isexe@2.0.0/node_modules/isexe/windows.js"(exports, module2) {
|
|
39
|
+
"use strict";
|
|
40
|
+
module2.exports = isexe;
|
|
41
|
+
isexe.sync = sync;
|
|
42
|
+
var fs17 = require("fs");
|
|
43
|
+
function checkPathExt(path13, options) {
|
|
44
|
+
var pathext = options.pathExt !== void 0 ? options.pathExt : process.env.PATHEXT;
|
|
45
|
+
if (!pathext) {
|
|
46
|
+
return true;
|
|
47
|
+
}
|
|
48
|
+
pathext = pathext.split(";");
|
|
49
|
+
if (pathext.indexOf("") !== -1) {
|
|
50
|
+
return true;
|
|
51
|
+
}
|
|
52
|
+
for (var i = 0; i < pathext.length; i++) {
|
|
53
|
+
var p = pathext[i].toLowerCase();
|
|
54
|
+
if (p && path13.substr(-p.length).toLowerCase() === p) {
|
|
55
|
+
return true;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
return false;
|
|
59
|
+
}
|
|
60
|
+
function checkStat(stat, path13, options) {
|
|
61
|
+
if (!stat.isSymbolicLink() && !stat.isFile()) {
|
|
62
|
+
return false;
|
|
63
|
+
}
|
|
64
|
+
return checkPathExt(path13, options);
|
|
65
|
+
}
|
|
66
|
+
function isexe(path13, options, cb) {
|
|
67
|
+
fs17.stat(path13, function(er, stat) {
|
|
68
|
+
cb(er, er ? false : checkStat(stat, path13, options));
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
function sync(path13, options) {
|
|
72
|
+
return checkStat(fs17.statSync(path13), path13, options);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
});
|
|
76
|
+
|
|
77
|
+
// node_modules/.pnpm/isexe@2.0.0/node_modules/isexe/mode.js
|
|
78
|
+
var require_mode = __commonJS({
|
|
79
|
+
"node_modules/.pnpm/isexe@2.0.0/node_modules/isexe/mode.js"(exports, module2) {
|
|
80
|
+
"use strict";
|
|
81
|
+
module2.exports = isexe;
|
|
82
|
+
isexe.sync = sync;
|
|
83
|
+
var fs17 = require("fs");
|
|
84
|
+
function isexe(path13, options, cb) {
|
|
85
|
+
fs17.stat(path13, function(er, stat) {
|
|
86
|
+
cb(er, er ? false : checkStat(stat, options));
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
function sync(path13, options) {
|
|
90
|
+
return checkStat(fs17.statSync(path13), options);
|
|
91
|
+
}
|
|
92
|
+
function checkStat(stat, options) {
|
|
93
|
+
return stat.isFile() && checkMode(stat, options);
|
|
94
|
+
}
|
|
95
|
+
function checkMode(stat, options) {
|
|
96
|
+
var mod = stat.mode;
|
|
97
|
+
var uid = stat.uid;
|
|
98
|
+
var gid = stat.gid;
|
|
99
|
+
var myUid = options.uid !== void 0 ? options.uid : process.getuid && process.getuid();
|
|
100
|
+
var myGid = options.gid !== void 0 ? options.gid : process.getgid && process.getgid();
|
|
101
|
+
var u = parseInt("100", 8);
|
|
102
|
+
var g = parseInt("010", 8);
|
|
103
|
+
var o = parseInt("001", 8);
|
|
104
|
+
var ug = u | g;
|
|
105
|
+
var ret = mod & o || mod & g && gid === myGid || mod & u && uid === myUid || mod & ug && myUid === 0;
|
|
106
|
+
return ret;
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
});
|
|
110
|
+
|
|
111
|
+
// node_modules/.pnpm/isexe@2.0.0/node_modules/isexe/index.js
|
|
112
|
+
var require_isexe = __commonJS({
|
|
113
|
+
"node_modules/.pnpm/isexe@2.0.0/node_modules/isexe/index.js"(exports, module2) {
|
|
114
|
+
"use strict";
|
|
115
|
+
var fs17 = require("fs");
|
|
116
|
+
var core;
|
|
117
|
+
if (process.platform === "win32" || global.TESTING_WINDOWS) {
|
|
118
|
+
core = require_windows();
|
|
119
|
+
} else {
|
|
120
|
+
core = require_mode();
|
|
121
|
+
}
|
|
122
|
+
module2.exports = isexe;
|
|
123
|
+
isexe.sync = sync;
|
|
124
|
+
function isexe(path13, options, cb) {
|
|
125
|
+
if (typeof options === "function") {
|
|
126
|
+
cb = options;
|
|
127
|
+
options = {};
|
|
128
|
+
}
|
|
129
|
+
if (!cb) {
|
|
130
|
+
if (typeof Promise !== "function") {
|
|
131
|
+
throw new TypeError("callback not provided");
|
|
132
|
+
}
|
|
133
|
+
return new Promise(function(resolve13, reject) {
|
|
134
|
+
isexe(path13, options || {}, function(er, is) {
|
|
135
|
+
if (er) {
|
|
136
|
+
reject(er);
|
|
137
|
+
} else {
|
|
138
|
+
resolve13(is);
|
|
139
|
+
}
|
|
140
|
+
});
|
|
141
|
+
});
|
|
142
|
+
}
|
|
143
|
+
core(path13, options || {}, function(er, is) {
|
|
144
|
+
if (er) {
|
|
145
|
+
if (er.code === "EACCES" || options && options.ignoreErrors) {
|
|
146
|
+
er = null;
|
|
147
|
+
is = false;
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
cb(er, is);
|
|
151
|
+
});
|
|
152
|
+
}
|
|
153
|
+
function sync(path13, options) {
|
|
154
|
+
try {
|
|
155
|
+
return core.sync(path13, options || {});
|
|
156
|
+
} catch (er) {
|
|
157
|
+
if (options && options.ignoreErrors || er.code === "EACCES") {
|
|
158
|
+
return false;
|
|
159
|
+
} else {
|
|
160
|
+
throw er;
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
});
|
|
166
|
+
|
|
167
|
+
// node_modules/.pnpm/which@2.0.2/node_modules/which/which.js
|
|
168
|
+
var require_which = __commonJS({
|
|
169
|
+
"node_modules/.pnpm/which@2.0.2/node_modules/which/which.js"(exports, module2) {
|
|
170
|
+
"use strict";
|
|
171
|
+
var isWindows = process.platform === "win32" || process.env.OSTYPE === "cygwin" || process.env.OSTYPE === "msys";
|
|
172
|
+
var path13 = require("path");
|
|
173
|
+
var COLON = isWindows ? ";" : ":";
|
|
174
|
+
var isexe = require_isexe();
|
|
175
|
+
var getNotFoundError = (cmd) => Object.assign(new Error(`not found: ${cmd}`), { code: "ENOENT" });
|
|
176
|
+
var getPathInfo = (cmd, opt) => {
|
|
177
|
+
const colon = opt.colon || COLON;
|
|
178
|
+
const pathEnv = cmd.match(/\//) || isWindows && cmd.match(/\\/) ? [""] : [
|
|
179
|
+
// windows always checks the cwd first
|
|
180
|
+
...isWindows ? [process.cwd()] : [],
|
|
181
|
+
...(opt.path || process.env.PATH || /* istanbul ignore next: very unusual */
|
|
182
|
+
"").split(colon)
|
|
183
|
+
];
|
|
184
|
+
const pathExtExe = isWindows ? opt.pathExt || process.env.PATHEXT || ".EXE;.CMD;.BAT;.COM" : "";
|
|
185
|
+
const pathExt = isWindows ? pathExtExe.split(colon) : [""];
|
|
186
|
+
if (isWindows) {
|
|
187
|
+
if (cmd.indexOf(".") !== -1 && pathExt[0] !== "")
|
|
188
|
+
pathExt.unshift("");
|
|
189
|
+
}
|
|
190
|
+
return {
|
|
191
|
+
pathEnv,
|
|
192
|
+
pathExt,
|
|
193
|
+
pathExtExe
|
|
194
|
+
};
|
|
195
|
+
};
|
|
196
|
+
var which = (cmd, opt, cb) => {
|
|
197
|
+
if (typeof opt === "function") {
|
|
198
|
+
cb = opt;
|
|
199
|
+
opt = {};
|
|
200
|
+
}
|
|
201
|
+
if (!opt)
|
|
202
|
+
opt = {};
|
|
203
|
+
const { pathEnv, pathExt, pathExtExe } = getPathInfo(cmd, opt);
|
|
204
|
+
const found = [];
|
|
205
|
+
const step = (i) => new Promise((resolve13, reject) => {
|
|
206
|
+
if (i === pathEnv.length)
|
|
207
|
+
return opt.all && found.length ? resolve13(found) : reject(getNotFoundError(cmd));
|
|
208
|
+
const ppRaw = pathEnv[i];
|
|
209
|
+
const pathPart = /^".*"$/.test(ppRaw) ? ppRaw.slice(1, -1) : ppRaw;
|
|
210
|
+
const pCmd = path13.join(pathPart, cmd);
|
|
211
|
+
const p = !pathPart && /^\.[\\\/]/.test(cmd) ? cmd.slice(0, 2) + pCmd : pCmd;
|
|
212
|
+
resolve13(subStep(p, i, 0));
|
|
213
|
+
});
|
|
214
|
+
const subStep = (p, i, ii) => new Promise((resolve13, reject) => {
|
|
215
|
+
if (ii === pathExt.length)
|
|
216
|
+
return resolve13(step(i + 1));
|
|
217
|
+
const ext = pathExt[ii];
|
|
218
|
+
isexe(p + ext, { pathExt: pathExtExe }, (er, is) => {
|
|
219
|
+
if (!er && is) {
|
|
220
|
+
if (opt.all)
|
|
221
|
+
found.push(p + ext);
|
|
222
|
+
else
|
|
223
|
+
return resolve13(p + ext);
|
|
224
|
+
}
|
|
225
|
+
return resolve13(subStep(p, i, ii + 1));
|
|
226
|
+
});
|
|
227
|
+
});
|
|
228
|
+
return cb ? step(0).then((res) => cb(null, res), cb) : step(0);
|
|
229
|
+
};
|
|
230
|
+
var whichSync = (cmd, opt) => {
|
|
231
|
+
opt = opt || {};
|
|
232
|
+
const { pathEnv, pathExt, pathExtExe } = getPathInfo(cmd, opt);
|
|
233
|
+
const found = [];
|
|
234
|
+
for (let i = 0; i < pathEnv.length; i++) {
|
|
235
|
+
const ppRaw = pathEnv[i];
|
|
236
|
+
const pathPart = /^".*"$/.test(ppRaw) ? ppRaw.slice(1, -1) : ppRaw;
|
|
237
|
+
const pCmd = path13.join(pathPart, cmd);
|
|
238
|
+
const p = !pathPart && /^\.[\\\/]/.test(cmd) ? cmd.slice(0, 2) + pCmd : pCmd;
|
|
239
|
+
for (let j = 0; j < pathExt.length; j++) {
|
|
240
|
+
const cur = p + pathExt[j];
|
|
241
|
+
try {
|
|
242
|
+
const is = isexe.sync(cur, { pathExt: pathExtExe });
|
|
243
|
+
if (is) {
|
|
244
|
+
if (opt.all)
|
|
245
|
+
found.push(cur);
|
|
246
|
+
else
|
|
247
|
+
return cur;
|
|
248
|
+
}
|
|
249
|
+
} catch (ex) {
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
if (opt.all && found.length)
|
|
254
|
+
return found;
|
|
255
|
+
if (opt.nothrow)
|
|
256
|
+
return null;
|
|
257
|
+
throw getNotFoundError(cmd);
|
|
258
|
+
};
|
|
259
|
+
module2.exports = which;
|
|
260
|
+
which.sync = whichSync;
|
|
261
|
+
}
|
|
262
|
+
});
|
|
263
|
+
|
|
264
|
+
// node_modules/.pnpm/path-key@3.1.1/node_modules/path-key/index.js
|
|
265
|
+
var require_path_key = __commonJS({
|
|
266
|
+
"node_modules/.pnpm/path-key@3.1.1/node_modules/path-key/index.js"(exports, module2) {
|
|
267
|
+
"use strict";
|
|
268
|
+
var pathKey2 = (options = {}) => {
|
|
269
|
+
const environment = options.env || process.env;
|
|
270
|
+
const platform = options.platform || process.platform;
|
|
271
|
+
if (platform !== "win32") {
|
|
272
|
+
return "PATH";
|
|
273
|
+
}
|
|
274
|
+
return Object.keys(environment).reverse().find((key) => key.toUpperCase() === "PATH") || "Path";
|
|
275
|
+
};
|
|
276
|
+
module2.exports = pathKey2;
|
|
277
|
+
module2.exports.default = pathKey2;
|
|
278
|
+
}
|
|
279
|
+
});
|
|
280
|
+
|
|
281
|
+
// node_modules/.pnpm/cross-spawn@7.0.3/node_modules/cross-spawn/lib/util/resolveCommand.js
|
|
282
|
+
var require_resolveCommand = __commonJS({
|
|
283
|
+
"node_modules/.pnpm/cross-spawn@7.0.3/node_modules/cross-spawn/lib/util/resolveCommand.js"(exports, module2) {
|
|
284
|
+
"use strict";
|
|
285
|
+
var path13 = require("path");
|
|
286
|
+
var which = require_which();
|
|
287
|
+
var getPathKey = require_path_key();
|
|
288
|
+
function resolveCommandAttempt(parsed, withoutPathExt) {
|
|
289
|
+
const env = parsed.options.env || process.env;
|
|
290
|
+
const cwd = process.cwd();
|
|
291
|
+
const hasCustomCwd = parsed.options.cwd != null;
|
|
292
|
+
const shouldSwitchCwd = hasCustomCwd && process.chdir !== void 0 && !process.chdir.disabled;
|
|
293
|
+
if (shouldSwitchCwd) {
|
|
294
|
+
try {
|
|
295
|
+
process.chdir(parsed.options.cwd);
|
|
296
|
+
} catch (err) {
|
|
297
|
+
}
|
|
298
|
+
}
|
|
299
|
+
let resolved;
|
|
300
|
+
try {
|
|
301
|
+
resolved = which.sync(parsed.command, {
|
|
302
|
+
path: env[getPathKey({ env })],
|
|
303
|
+
pathExt: withoutPathExt ? path13.delimiter : void 0
|
|
304
|
+
});
|
|
305
|
+
} catch (e) {
|
|
306
|
+
} finally {
|
|
307
|
+
if (shouldSwitchCwd) {
|
|
308
|
+
process.chdir(cwd);
|
|
309
|
+
}
|
|
310
|
+
}
|
|
311
|
+
if (resolved) {
|
|
312
|
+
resolved = path13.resolve(hasCustomCwd ? parsed.options.cwd : "", resolved);
|
|
313
|
+
}
|
|
314
|
+
return resolved;
|
|
315
|
+
}
|
|
316
|
+
function resolveCommand(parsed) {
|
|
317
|
+
return resolveCommandAttempt(parsed) || resolveCommandAttempt(parsed, true);
|
|
318
|
+
}
|
|
319
|
+
module2.exports = resolveCommand;
|
|
320
|
+
}
|
|
321
|
+
});
|
|
322
|
+
|
|
323
|
+
// node_modules/.pnpm/cross-spawn@7.0.3/node_modules/cross-spawn/lib/util/escape.js
|
|
324
|
+
var require_escape = __commonJS({
|
|
325
|
+
"node_modules/.pnpm/cross-spawn@7.0.3/node_modules/cross-spawn/lib/util/escape.js"(exports, module2) {
|
|
326
|
+
"use strict";
|
|
327
|
+
var metaCharsRegExp = /([()\][%!^"`<>&|;, *?])/g;
|
|
328
|
+
function escapeCommand(arg) {
|
|
329
|
+
arg = arg.replace(metaCharsRegExp, "^$1");
|
|
330
|
+
return arg;
|
|
331
|
+
}
|
|
332
|
+
function escapeArgument(arg, doubleEscapeMetaChars) {
|
|
333
|
+
arg = `${arg}`;
|
|
334
|
+
arg = arg.replace(/(\\*)"/g, '$1$1\\"');
|
|
335
|
+
arg = arg.replace(/(\\*)$/, "$1$1");
|
|
336
|
+
arg = `"${arg}"`;
|
|
337
|
+
arg = arg.replace(metaCharsRegExp, "^$1");
|
|
338
|
+
if (doubleEscapeMetaChars) {
|
|
339
|
+
arg = arg.replace(metaCharsRegExp, "^$1");
|
|
340
|
+
}
|
|
341
|
+
return arg;
|
|
342
|
+
}
|
|
343
|
+
module2.exports.command = escapeCommand;
|
|
344
|
+
module2.exports.argument = escapeArgument;
|
|
345
|
+
}
|
|
346
|
+
});
|
|
347
|
+
|
|
348
|
+
// node_modules/.pnpm/shebang-regex@3.0.0/node_modules/shebang-regex/index.js
|
|
349
|
+
var require_shebang_regex = __commonJS({
|
|
350
|
+
"node_modules/.pnpm/shebang-regex@3.0.0/node_modules/shebang-regex/index.js"(exports, module2) {
|
|
351
|
+
"use strict";
|
|
352
|
+
module2.exports = /^#!(.*)/;
|
|
353
|
+
}
|
|
354
|
+
});
|
|
355
|
+
|
|
356
|
+
// node_modules/.pnpm/shebang-command@2.0.0/node_modules/shebang-command/index.js
|
|
357
|
+
var require_shebang_command = __commonJS({
|
|
358
|
+
"node_modules/.pnpm/shebang-command@2.0.0/node_modules/shebang-command/index.js"(exports, module2) {
|
|
359
|
+
"use strict";
|
|
360
|
+
var shebangRegex = require_shebang_regex();
|
|
361
|
+
module2.exports = (string = "") => {
|
|
362
|
+
const match = string.match(shebangRegex);
|
|
363
|
+
if (!match) {
|
|
364
|
+
return null;
|
|
365
|
+
}
|
|
366
|
+
const [path13, argument] = match[0].replace(/#! ?/, "").split(" ");
|
|
367
|
+
const binary = path13.split("/").pop();
|
|
368
|
+
if (binary === "env") {
|
|
369
|
+
return argument;
|
|
370
|
+
}
|
|
371
|
+
return argument ? `${binary} ${argument}` : binary;
|
|
372
|
+
};
|
|
373
|
+
}
|
|
374
|
+
});
|
|
375
|
+
|
|
376
|
+
// node_modules/.pnpm/cross-spawn@7.0.3/node_modules/cross-spawn/lib/util/readShebang.js
|
|
377
|
+
var require_readShebang = __commonJS({
|
|
378
|
+
"node_modules/.pnpm/cross-spawn@7.0.3/node_modules/cross-spawn/lib/util/readShebang.js"(exports, module2) {
|
|
379
|
+
"use strict";
|
|
380
|
+
var fs17 = require("fs");
|
|
381
|
+
var shebangCommand = require_shebang_command();
|
|
382
|
+
function readShebang(command) {
|
|
383
|
+
const size = 150;
|
|
384
|
+
const buffer = Buffer.alloc(size);
|
|
385
|
+
let fd;
|
|
386
|
+
try {
|
|
387
|
+
fd = fs17.openSync(command, "r");
|
|
388
|
+
fs17.readSync(fd, buffer, 0, size, 0);
|
|
389
|
+
fs17.closeSync(fd);
|
|
390
|
+
} catch (e) {
|
|
391
|
+
}
|
|
392
|
+
return shebangCommand(buffer.toString());
|
|
393
|
+
}
|
|
394
|
+
module2.exports = readShebang;
|
|
395
|
+
}
|
|
396
|
+
});
|
|
397
|
+
|
|
398
|
+
// node_modules/.pnpm/cross-spawn@7.0.3/node_modules/cross-spawn/lib/parse.js
|
|
399
|
+
var require_parse = __commonJS({
|
|
400
|
+
"node_modules/.pnpm/cross-spawn@7.0.3/node_modules/cross-spawn/lib/parse.js"(exports, module2) {
|
|
401
|
+
"use strict";
|
|
402
|
+
var path13 = require("path");
|
|
403
|
+
var resolveCommand = require_resolveCommand();
|
|
404
|
+
var escape = require_escape();
|
|
405
|
+
var readShebang = require_readShebang();
|
|
406
|
+
var isWin = process.platform === "win32";
|
|
407
|
+
var isExecutableRegExp = /\.(?:com|exe)$/i;
|
|
408
|
+
var isCmdShimRegExp = /node_modules[\\/].bin[\\/][^\\/]+\.cmd$/i;
|
|
409
|
+
function detectShebang(parsed) {
|
|
410
|
+
parsed.file = resolveCommand(parsed);
|
|
411
|
+
const shebang = parsed.file && readShebang(parsed.file);
|
|
412
|
+
if (shebang) {
|
|
413
|
+
parsed.args.unshift(parsed.file);
|
|
414
|
+
parsed.command = shebang;
|
|
415
|
+
return resolveCommand(parsed);
|
|
416
|
+
}
|
|
417
|
+
return parsed.file;
|
|
418
|
+
}
|
|
419
|
+
function parseNonShell(parsed) {
|
|
420
|
+
if (!isWin) {
|
|
421
|
+
return parsed;
|
|
422
|
+
}
|
|
423
|
+
const commandFile = detectShebang(parsed);
|
|
424
|
+
const needsShell = !isExecutableRegExp.test(commandFile);
|
|
425
|
+
if (parsed.options.forceShell || needsShell) {
|
|
426
|
+
const needsDoubleEscapeMetaChars = isCmdShimRegExp.test(commandFile);
|
|
427
|
+
parsed.command = path13.normalize(parsed.command);
|
|
428
|
+
parsed.command = escape.command(parsed.command);
|
|
429
|
+
parsed.args = parsed.args.map((arg) => escape.argument(arg, needsDoubleEscapeMetaChars));
|
|
430
|
+
const shellCommand = [parsed.command].concat(parsed.args).join(" ");
|
|
431
|
+
parsed.args = ["/d", "/s", "/c", `"${shellCommand}"`];
|
|
432
|
+
parsed.command = process.env.comspec || "cmd.exe";
|
|
433
|
+
parsed.options.windowsVerbatimArguments = true;
|
|
434
|
+
}
|
|
435
|
+
return parsed;
|
|
436
|
+
}
|
|
437
|
+
function parse(command, args, options) {
|
|
438
|
+
if (args && !Array.isArray(args)) {
|
|
439
|
+
options = args;
|
|
440
|
+
args = null;
|
|
441
|
+
}
|
|
442
|
+
args = args ? args.slice(0) : [];
|
|
443
|
+
options = Object.assign({}, options);
|
|
444
|
+
const parsed = {
|
|
445
|
+
command,
|
|
446
|
+
args,
|
|
447
|
+
options,
|
|
448
|
+
file: void 0,
|
|
449
|
+
original: {
|
|
450
|
+
command,
|
|
451
|
+
args
|
|
452
|
+
}
|
|
453
|
+
};
|
|
454
|
+
return options.shell ? parsed : parseNonShell(parsed);
|
|
455
|
+
}
|
|
456
|
+
module2.exports = parse;
|
|
457
|
+
}
|
|
458
|
+
});
|
|
459
|
+
|
|
460
|
+
// node_modules/.pnpm/cross-spawn@7.0.3/node_modules/cross-spawn/lib/enoent.js
|
|
461
|
+
var require_enoent = __commonJS({
|
|
462
|
+
"node_modules/.pnpm/cross-spawn@7.0.3/node_modules/cross-spawn/lib/enoent.js"(exports, module2) {
|
|
463
|
+
"use strict";
|
|
464
|
+
var isWin = process.platform === "win32";
|
|
465
|
+
function notFoundError(original, syscall) {
|
|
466
|
+
return Object.assign(new Error(`${syscall} ${original.command} ENOENT`), {
|
|
467
|
+
code: "ENOENT",
|
|
468
|
+
errno: "ENOENT",
|
|
469
|
+
syscall: `${syscall} ${original.command}`,
|
|
470
|
+
path: original.command,
|
|
471
|
+
spawnargs: original.args
|
|
472
|
+
});
|
|
473
|
+
}
|
|
474
|
+
function hookChildProcess(cp, parsed) {
|
|
475
|
+
if (!isWin) {
|
|
476
|
+
return;
|
|
477
|
+
}
|
|
478
|
+
const originalEmit = cp.emit;
|
|
479
|
+
cp.emit = function(name, arg1) {
|
|
480
|
+
if (name === "exit") {
|
|
481
|
+
const err = verifyENOENT(arg1, parsed, "spawn");
|
|
482
|
+
if (err) {
|
|
483
|
+
return originalEmit.call(cp, "error", err);
|
|
484
|
+
}
|
|
485
|
+
}
|
|
486
|
+
return originalEmit.apply(cp, arguments);
|
|
487
|
+
};
|
|
488
|
+
}
|
|
489
|
+
function verifyENOENT(status, parsed) {
|
|
490
|
+
if (isWin && status === 1 && !parsed.file) {
|
|
491
|
+
return notFoundError(parsed.original, "spawn");
|
|
492
|
+
}
|
|
493
|
+
return null;
|
|
494
|
+
}
|
|
495
|
+
function verifyENOENTSync(status, parsed) {
|
|
496
|
+
if (isWin && status === 1 && !parsed.file) {
|
|
497
|
+
return notFoundError(parsed.original, "spawnSync");
|
|
498
|
+
}
|
|
499
|
+
return null;
|
|
500
|
+
}
|
|
501
|
+
module2.exports = {
|
|
502
|
+
hookChildProcess,
|
|
503
|
+
verifyENOENT,
|
|
504
|
+
verifyENOENTSync,
|
|
505
|
+
notFoundError
|
|
506
|
+
};
|
|
507
|
+
}
|
|
508
|
+
});
|
|
509
|
+
|
|
510
|
+
// node_modules/.pnpm/cross-spawn@7.0.3/node_modules/cross-spawn/index.js
|
|
511
|
+
var require_cross_spawn = __commonJS({
|
|
512
|
+
"node_modules/.pnpm/cross-spawn@7.0.3/node_modules/cross-spawn/index.js"(exports, module2) {
|
|
513
|
+
"use strict";
|
|
514
|
+
var cp = require("child_process");
|
|
515
|
+
var parse = require_parse();
|
|
516
|
+
var enoent = require_enoent();
|
|
517
|
+
function spawn(command, args, options) {
|
|
518
|
+
const parsed = parse(command, args, options);
|
|
519
|
+
const spawned = cp.spawn(parsed.command, parsed.args, parsed.options);
|
|
520
|
+
enoent.hookChildProcess(spawned, parsed);
|
|
521
|
+
return spawned;
|
|
522
|
+
}
|
|
523
|
+
function spawnSync(command, args, options) {
|
|
524
|
+
const parsed = parse(command, args, options);
|
|
525
|
+
const result = cp.spawnSync(parsed.command, parsed.args, parsed.options);
|
|
526
|
+
result.error = result.error || enoent.verifyENOENTSync(result.status, parsed);
|
|
527
|
+
return result;
|
|
528
|
+
}
|
|
529
|
+
module2.exports = spawn;
|
|
530
|
+
module2.exports.spawn = spawn;
|
|
531
|
+
module2.exports.sync = spawnSync;
|
|
532
|
+
module2.exports._parse = parse;
|
|
533
|
+
module2.exports._enoent = enoent;
|
|
534
|
+
}
|
|
535
|
+
});
|
|
536
|
+
|
|
537
|
+
// node_modules/.pnpm/strip-final-newline@3.0.0/node_modules/strip-final-newline/index.js
|
|
538
|
+
function stripFinalNewline(input) {
|
|
539
|
+
const LF = typeof input === "string" ? "\n" : "\n".charCodeAt();
|
|
540
|
+
const CR = typeof input === "string" ? "\r" : "\r".charCodeAt();
|
|
541
|
+
if (input[input.length - 1] === LF) {
|
|
542
|
+
input = input.slice(0, -1);
|
|
543
|
+
}
|
|
544
|
+
if (input[input.length - 1] === CR) {
|
|
545
|
+
input = input.slice(0, -1);
|
|
546
|
+
}
|
|
547
|
+
return input;
|
|
548
|
+
}
|
|
549
|
+
var init_strip_final_newline = __esm({
|
|
550
|
+
"node_modules/.pnpm/strip-final-newline@3.0.0/node_modules/strip-final-newline/index.js"() {
|
|
551
|
+
"use strict";
|
|
552
|
+
}
|
|
553
|
+
});
|
|
554
|
+
|
|
555
|
+
// node_modules/.pnpm/path-key@4.0.0/node_modules/path-key/index.js
|
|
556
|
+
function pathKey(options = {}) {
|
|
557
|
+
const {
|
|
558
|
+
env = process.env,
|
|
559
|
+
platform = process.platform
|
|
560
|
+
} = options;
|
|
561
|
+
if (platform !== "win32") {
|
|
562
|
+
return "PATH";
|
|
563
|
+
}
|
|
564
|
+
return Object.keys(env).reverse().find((key) => key.toUpperCase() === "PATH") || "Path";
|
|
565
|
+
}
|
|
566
|
+
var init_path_key = __esm({
|
|
567
|
+
"node_modules/.pnpm/path-key@4.0.0/node_modules/path-key/index.js"() {
|
|
568
|
+
"use strict";
|
|
569
|
+
}
|
|
570
|
+
});
|
|
571
|
+
|
|
572
|
+
// node_modules/.pnpm/npm-run-path@5.1.0/node_modules/npm-run-path/index.js
|
|
573
|
+
function npmRunPath(options = {}) {
|
|
574
|
+
const {
|
|
575
|
+
cwd = import_node_process.default.cwd(),
|
|
576
|
+
path: path_ = import_node_process.default.env[pathKey()],
|
|
577
|
+
execPath = import_node_process.default.execPath
|
|
578
|
+
} = options;
|
|
579
|
+
let previous;
|
|
580
|
+
const cwdString = cwd instanceof URL ? import_node_url.default.fileURLToPath(cwd) : cwd;
|
|
581
|
+
let cwdPath = import_node_path2.default.resolve(cwdString);
|
|
582
|
+
const result = [];
|
|
583
|
+
while (previous !== cwdPath) {
|
|
584
|
+
result.push(import_node_path2.default.join(cwdPath, "node_modules/.bin"));
|
|
585
|
+
previous = cwdPath;
|
|
586
|
+
cwdPath = import_node_path2.default.resolve(cwdPath, "..");
|
|
587
|
+
}
|
|
588
|
+
result.push(import_node_path2.default.resolve(cwdString, execPath, ".."));
|
|
589
|
+
return [...result, path_].join(import_node_path2.default.delimiter);
|
|
590
|
+
}
|
|
591
|
+
function npmRunPathEnv({ env = import_node_process.default.env, ...options } = {}) {
|
|
592
|
+
env = { ...env };
|
|
593
|
+
const path13 = pathKey({ env });
|
|
594
|
+
options.path = env[path13];
|
|
595
|
+
env[path13] = npmRunPath(options);
|
|
596
|
+
return env;
|
|
597
|
+
}
|
|
598
|
+
var import_node_process, import_node_path2, import_node_url;
|
|
599
|
+
var init_npm_run_path = __esm({
|
|
600
|
+
"node_modules/.pnpm/npm-run-path@5.1.0/node_modules/npm-run-path/index.js"() {
|
|
601
|
+
"use strict";
|
|
602
|
+
import_node_process = __toESM(require("process"), 1);
|
|
603
|
+
import_node_path2 = __toESM(require("path"), 1);
|
|
604
|
+
import_node_url = __toESM(require("url"), 1);
|
|
605
|
+
init_path_key();
|
|
606
|
+
}
|
|
607
|
+
});
|
|
608
|
+
|
|
609
|
+
// node_modules/.pnpm/mimic-fn@4.0.0/node_modules/mimic-fn/index.js
|
|
610
|
+
function mimicFunction(to, from, { ignoreNonConfigurable = false } = {}) {
|
|
611
|
+
const { name } = to;
|
|
612
|
+
for (const property of Reflect.ownKeys(from)) {
|
|
613
|
+
copyProperty(to, from, property, ignoreNonConfigurable);
|
|
614
|
+
}
|
|
615
|
+
changePrototype(to, from);
|
|
616
|
+
changeToString(to, from, name);
|
|
617
|
+
return to;
|
|
618
|
+
}
|
|
619
|
+
var copyProperty, canCopyProperty, changePrototype, wrappedToString, toStringDescriptor, toStringName, changeToString;
|
|
620
|
+
var init_mimic_fn = __esm({
|
|
621
|
+
"node_modules/.pnpm/mimic-fn@4.0.0/node_modules/mimic-fn/index.js"() {
|
|
622
|
+
"use strict";
|
|
623
|
+
copyProperty = (to, from, property, ignoreNonConfigurable) => {
|
|
624
|
+
if (property === "length" || property === "prototype") {
|
|
625
|
+
return;
|
|
626
|
+
}
|
|
627
|
+
if (property === "arguments" || property === "caller") {
|
|
628
|
+
return;
|
|
629
|
+
}
|
|
630
|
+
const toDescriptor = Object.getOwnPropertyDescriptor(to, property);
|
|
631
|
+
const fromDescriptor = Object.getOwnPropertyDescriptor(from, property);
|
|
632
|
+
if (!canCopyProperty(toDescriptor, fromDescriptor) && ignoreNonConfigurable) {
|
|
633
|
+
return;
|
|
634
|
+
}
|
|
635
|
+
Object.defineProperty(to, property, fromDescriptor);
|
|
636
|
+
};
|
|
637
|
+
canCopyProperty = function(toDescriptor, fromDescriptor) {
|
|
638
|
+
return toDescriptor === void 0 || toDescriptor.configurable || toDescriptor.writable === fromDescriptor.writable && toDescriptor.enumerable === fromDescriptor.enumerable && toDescriptor.configurable === fromDescriptor.configurable && (toDescriptor.writable || toDescriptor.value === fromDescriptor.value);
|
|
639
|
+
};
|
|
640
|
+
changePrototype = (to, from) => {
|
|
641
|
+
const fromPrototype = Object.getPrototypeOf(from);
|
|
642
|
+
if (fromPrototype === Object.getPrototypeOf(to)) {
|
|
643
|
+
return;
|
|
644
|
+
}
|
|
645
|
+
Object.setPrototypeOf(to, fromPrototype);
|
|
646
|
+
};
|
|
647
|
+
wrappedToString = (withName, fromBody) => `/* Wrapped ${withName}*/
|
|
648
|
+
${fromBody}`;
|
|
649
|
+
toStringDescriptor = Object.getOwnPropertyDescriptor(Function.prototype, "toString");
|
|
650
|
+
toStringName = Object.getOwnPropertyDescriptor(Function.prototype.toString, "name");
|
|
651
|
+
changeToString = (to, from, name) => {
|
|
652
|
+
const withName = name === "" ? "" : `with ${name.trim()}() `;
|
|
653
|
+
const newToString = wrappedToString.bind(null, withName, from.toString());
|
|
654
|
+
Object.defineProperty(newToString, "name", toStringName);
|
|
655
|
+
Object.defineProperty(to, "toString", { ...toStringDescriptor, value: newToString });
|
|
656
|
+
};
|
|
657
|
+
}
|
|
658
|
+
});
|
|
659
|
+
|
|
660
|
+
// node_modules/.pnpm/onetime@6.0.0/node_modules/onetime/index.js
|
|
661
|
+
var calledFunctions, onetime, onetime_default;
|
|
662
|
+
var init_onetime = __esm({
|
|
663
|
+
"node_modules/.pnpm/onetime@6.0.0/node_modules/onetime/index.js"() {
|
|
664
|
+
"use strict";
|
|
665
|
+
init_mimic_fn();
|
|
666
|
+
calledFunctions = /* @__PURE__ */ new WeakMap();
|
|
667
|
+
onetime = (function_, options = {}) => {
|
|
668
|
+
if (typeof function_ !== "function") {
|
|
669
|
+
throw new TypeError("Expected a function");
|
|
670
|
+
}
|
|
671
|
+
let returnValue;
|
|
672
|
+
let callCount = 0;
|
|
673
|
+
const functionName = function_.displayName || function_.name || "<anonymous>";
|
|
674
|
+
const onetime2 = function(...arguments_) {
|
|
675
|
+
calledFunctions.set(onetime2, ++callCount);
|
|
676
|
+
if (callCount === 1) {
|
|
677
|
+
returnValue = function_.apply(this, arguments_);
|
|
678
|
+
function_ = null;
|
|
679
|
+
} else if (options.throw === true) {
|
|
680
|
+
throw new Error(`Function \`${functionName}\` can only be called once`);
|
|
681
|
+
}
|
|
682
|
+
return returnValue;
|
|
683
|
+
};
|
|
684
|
+
mimicFunction(onetime2, function_);
|
|
685
|
+
calledFunctions.set(onetime2, callCount);
|
|
686
|
+
return onetime2;
|
|
687
|
+
};
|
|
688
|
+
onetime.callCount = (function_) => {
|
|
689
|
+
if (!calledFunctions.has(function_)) {
|
|
690
|
+
throw new Error(`The given function \`${function_.name}\` is not wrapped by the \`onetime\` package`);
|
|
691
|
+
}
|
|
692
|
+
return calledFunctions.get(function_);
|
|
693
|
+
};
|
|
694
|
+
onetime_default = onetime;
|
|
695
|
+
}
|
|
696
|
+
});
|
|
697
|
+
|
|
698
|
+
// node_modules/.pnpm/human-signals@5.0.0/node_modules/human-signals/build/src/realtime.js
|
|
699
|
+
var getRealtimeSignals, getRealtimeSignal, SIGRTMIN, SIGRTMAX;
|
|
700
|
+
var init_realtime = __esm({
|
|
701
|
+
"node_modules/.pnpm/human-signals@5.0.0/node_modules/human-signals/build/src/realtime.js"() {
|
|
702
|
+
"use strict";
|
|
703
|
+
getRealtimeSignals = () => {
|
|
704
|
+
const length = SIGRTMAX - SIGRTMIN + 1;
|
|
705
|
+
return Array.from({ length }, getRealtimeSignal);
|
|
706
|
+
};
|
|
707
|
+
getRealtimeSignal = (value, index) => ({
|
|
708
|
+
name: `SIGRT${index + 1}`,
|
|
709
|
+
number: SIGRTMIN + index,
|
|
710
|
+
action: "terminate",
|
|
711
|
+
description: "Application-specific signal (realtime)",
|
|
712
|
+
standard: "posix"
|
|
713
|
+
});
|
|
714
|
+
SIGRTMIN = 34;
|
|
715
|
+
SIGRTMAX = 64;
|
|
716
|
+
}
|
|
717
|
+
});
|
|
718
|
+
|
|
719
|
+
// node_modules/.pnpm/human-signals@5.0.0/node_modules/human-signals/build/src/core.js
|
|
720
|
+
var SIGNALS;
|
|
721
|
+
var init_core = __esm({
|
|
722
|
+
"node_modules/.pnpm/human-signals@5.0.0/node_modules/human-signals/build/src/core.js"() {
|
|
723
|
+
"use strict";
|
|
724
|
+
SIGNALS = [
|
|
725
|
+
{
|
|
726
|
+
name: "SIGHUP",
|
|
727
|
+
number: 1,
|
|
728
|
+
action: "terminate",
|
|
729
|
+
description: "Terminal closed",
|
|
730
|
+
standard: "posix"
|
|
731
|
+
},
|
|
732
|
+
{
|
|
733
|
+
name: "SIGINT",
|
|
734
|
+
number: 2,
|
|
735
|
+
action: "terminate",
|
|
736
|
+
description: "User interruption with CTRL-C",
|
|
737
|
+
standard: "ansi"
|
|
738
|
+
},
|
|
739
|
+
{
|
|
740
|
+
name: "SIGQUIT",
|
|
741
|
+
number: 3,
|
|
742
|
+
action: "core",
|
|
743
|
+
description: "User interruption with CTRL-\\",
|
|
744
|
+
standard: "posix"
|
|
745
|
+
},
|
|
746
|
+
{
|
|
747
|
+
name: "SIGILL",
|
|
748
|
+
number: 4,
|
|
749
|
+
action: "core",
|
|
750
|
+
description: "Invalid machine instruction",
|
|
751
|
+
standard: "ansi"
|
|
752
|
+
},
|
|
753
|
+
{
|
|
754
|
+
name: "SIGTRAP",
|
|
755
|
+
number: 5,
|
|
756
|
+
action: "core",
|
|
757
|
+
description: "Debugger breakpoint",
|
|
758
|
+
standard: "posix"
|
|
759
|
+
},
|
|
760
|
+
{
|
|
761
|
+
name: "SIGABRT",
|
|
762
|
+
number: 6,
|
|
763
|
+
action: "core",
|
|
764
|
+
description: "Aborted",
|
|
765
|
+
standard: "ansi"
|
|
766
|
+
},
|
|
767
|
+
{
|
|
768
|
+
name: "SIGIOT",
|
|
769
|
+
number: 6,
|
|
770
|
+
action: "core",
|
|
771
|
+
description: "Aborted",
|
|
772
|
+
standard: "bsd"
|
|
773
|
+
},
|
|
774
|
+
{
|
|
775
|
+
name: "SIGBUS",
|
|
776
|
+
number: 7,
|
|
777
|
+
action: "core",
|
|
778
|
+
description: "Bus error due to misaligned, non-existing address or paging error",
|
|
779
|
+
standard: "bsd"
|
|
780
|
+
},
|
|
781
|
+
{
|
|
782
|
+
name: "SIGEMT",
|
|
783
|
+
number: 7,
|
|
784
|
+
action: "terminate",
|
|
785
|
+
description: "Command should be emulated but is not implemented",
|
|
786
|
+
standard: "other"
|
|
787
|
+
},
|
|
788
|
+
{
|
|
789
|
+
name: "SIGFPE",
|
|
790
|
+
number: 8,
|
|
791
|
+
action: "core",
|
|
792
|
+
description: "Floating point arithmetic error",
|
|
793
|
+
standard: "ansi"
|
|
794
|
+
},
|
|
795
|
+
{
|
|
796
|
+
name: "SIGKILL",
|
|
797
|
+
number: 9,
|
|
798
|
+
action: "terminate",
|
|
799
|
+
description: "Forced termination",
|
|
800
|
+
standard: "posix",
|
|
801
|
+
forced: true
|
|
802
|
+
},
|
|
803
|
+
{
|
|
804
|
+
name: "SIGUSR1",
|
|
805
|
+
number: 10,
|
|
806
|
+
action: "terminate",
|
|
807
|
+
description: "Application-specific signal",
|
|
808
|
+
standard: "posix"
|
|
809
|
+
},
|
|
810
|
+
{
|
|
811
|
+
name: "SIGSEGV",
|
|
812
|
+
number: 11,
|
|
813
|
+
action: "core",
|
|
814
|
+
description: "Segmentation fault",
|
|
815
|
+
standard: "ansi"
|
|
816
|
+
},
|
|
817
|
+
{
|
|
818
|
+
name: "SIGUSR2",
|
|
819
|
+
number: 12,
|
|
820
|
+
action: "terminate",
|
|
821
|
+
description: "Application-specific signal",
|
|
822
|
+
standard: "posix"
|
|
823
|
+
},
|
|
824
|
+
{
|
|
825
|
+
name: "SIGPIPE",
|
|
826
|
+
number: 13,
|
|
827
|
+
action: "terminate",
|
|
828
|
+
description: "Broken pipe or socket",
|
|
829
|
+
standard: "posix"
|
|
830
|
+
},
|
|
831
|
+
{
|
|
832
|
+
name: "SIGALRM",
|
|
833
|
+
number: 14,
|
|
834
|
+
action: "terminate",
|
|
835
|
+
description: "Timeout or timer",
|
|
836
|
+
standard: "posix"
|
|
837
|
+
},
|
|
838
|
+
{
|
|
839
|
+
name: "SIGTERM",
|
|
840
|
+
number: 15,
|
|
841
|
+
action: "terminate",
|
|
842
|
+
description: "Termination",
|
|
843
|
+
standard: "ansi"
|
|
844
|
+
},
|
|
845
|
+
{
|
|
846
|
+
name: "SIGSTKFLT",
|
|
847
|
+
number: 16,
|
|
848
|
+
action: "terminate",
|
|
849
|
+
description: "Stack is empty or overflowed",
|
|
850
|
+
standard: "other"
|
|
851
|
+
},
|
|
852
|
+
{
|
|
853
|
+
name: "SIGCHLD",
|
|
854
|
+
number: 17,
|
|
855
|
+
action: "ignore",
|
|
856
|
+
description: "Child process terminated, paused or unpaused",
|
|
857
|
+
standard: "posix"
|
|
858
|
+
},
|
|
859
|
+
{
|
|
860
|
+
name: "SIGCLD",
|
|
861
|
+
number: 17,
|
|
862
|
+
action: "ignore",
|
|
863
|
+
description: "Child process terminated, paused or unpaused",
|
|
864
|
+
standard: "other"
|
|
865
|
+
},
|
|
866
|
+
{
|
|
867
|
+
name: "SIGCONT",
|
|
868
|
+
number: 18,
|
|
869
|
+
action: "unpause",
|
|
870
|
+
description: "Unpaused",
|
|
871
|
+
standard: "posix",
|
|
872
|
+
forced: true
|
|
873
|
+
},
|
|
874
|
+
{
|
|
875
|
+
name: "SIGSTOP",
|
|
876
|
+
number: 19,
|
|
877
|
+
action: "pause",
|
|
878
|
+
description: "Paused",
|
|
879
|
+
standard: "posix",
|
|
880
|
+
forced: true
|
|
881
|
+
},
|
|
882
|
+
{
|
|
883
|
+
name: "SIGTSTP",
|
|
884
|
+
number: 20,
|
|
885
|
+
action: "pause",
|
|
886
|
+
description: 'Paused using CTRL-Z or "suspend"',
|
|
887
|
+
standard: "posix"
|
|
888
|
+
},
|
|
889
|
+
{
|
|
890
|
+
name: "SIGTTIN",
|
|
891
|
+
number: 21,
|
|
892
|
+
action: "pause",
|
|
893
|
+
description: "Background process cannot read terminal input",
|
|
894
|
+
standard: "posix"
|
|
895
|
+
},
|
|
896
|
+
{
|
|
897
|
+
name: "SIGBREAK",
|
|
898
|
+
number: 21,
|
|
899
|
+
action: "terminate",
|
|
900
|
+
description: "User interruption with CTRL-BREAK",
|
|
901
|
+
standard: "other"
|
|
902
|
+
},
|
|
903
|
+
{
|
|
904
|
+
name: "SIGTTOU",
|
|
905
|
+
number: 22,
|
|
906
|
+
action: "pause",
|
|
907
|
+
description: "Background process cannot write to terminal output",
|
|
908
|
+
standard: "posix"
|
|
909
|
+
},
|
|
910
|
+
{
|
|
911
|
+
name: "SIGURG",
|
|
912
|
+
number: 23,
|
|
913
|
+
action: "ignore",
|
|
914
|
+
description: "Socket received out-of-band data",
|
|
915
|
+
standard: "bsd"
|
|
916
|
+
},
|
|
917
|
+
{
|
|
918
|
+
name: "SIGXCPU",
|
|
919
|
+
number: 24,
|
|
920
|
+
action: "core",
|
|
921
|
+
description: "Process timed out",
|
|
922
|
+
standard: "bsd"
|
|
923
|
+
},
|
|
924
|
+
{
|
|
925
|
+
name: "SIGXFSZ",
|
|
926
|
+
number: 25,
|
|
927
|
+
action: "core",
|
|
928
|
+
description: "File too big",
|
|
929
|
+
standard: "bsd"
|
|
930
|
+
},
|
|
931
|
+
{
|
|
932
|
+
name: "SIGVTALRM",
|
|
933
|
+
number: 26,
|
|
934
|
+
action: "terminate",
|
|
935
|
+
description: "Timeout or timer",
|
|
936
|
+
standard: "bsd"
|
|
937
|
+
},
|
|
938
|
+
{
|
|
939
|
+
name: "SIGPROF",
|
|
940
|
+
number: 27,
|
|
941
|
+
action: "terminate",
|
|
942
|
+
description: "Timeout or timer",
|
|
943
|
+
standard: "bsd"
|
|
944
|
+
},
|
|
945
|
+
{
|
|
946
|
+
name: "SIGWINCH",
|
|
947
|
+
number: 28,
|
|
948
|
+
action: "ignore",
|
|
949
|
+
description: "Terminal window size changed",
|
|
950
|
+
standard: "bsd"
|
|
951
|
+
},
|
|
952
|
+
{
|
|
953
|
+
name: "SIGIO",
|
|
954
|
+
number: 29,
|
|
955
|
+
action: "terminate",
|
|
956
|
+
description: "I/O is available",
|
|
957
|
+
standard: "other"
|
|
958
|
+
},
|
|
959
|
+
{
|
|
960
|
+
name: "SIGPOLL",
|
|
961
|
+
number: 29,
|
|
962
|
+
action: "terminate",
|
|
963
|
+
description: "Watched event",
|
|
964
|
+
standard: "other"
|
|
965
|
+
},
|
|
966
|
+
{
|
|
967
|
+
name: "SIGINFO",
|
|
968
|
+
number: 29,
|
|
969
|
+
action: "ignore",
|
|
970
|
+
description: "Request for process information",
|
|
971
|
+
standard: "other"
|
|
972
|
+
},
|
|
973
|
+
{
|
|
974
|
+
name: "SIGPWR",
|
|
975
|
+
number: 30,
|
|
976
|
+
action: "terminate",
|
|
977
|
+
description: "Device running out of power",
|
|
978
|
+
standard: "systemv"
|
|
979
|
+
},
|
|
980
|
+
{
|
|
981
|
+
name: "SIGSYS",
|
|
982
|
+
number: 31,
|
|
983
|
+
action: "core",
|
|
984
|
+
description: "Invalid system call",
|
|
985
|
+
standard: "other"
|
|
986
|
+
},
|
|
987
|
+
{
|
|
988
|
+
name: "SIGUNUSED",
|
|
989
|
+
number: 31,
|
|
990
|
+
action: "terminate",
|
|
991
|
+
description: "Invalid system call",
|
|
992
|
+
standard: "other"
|
|
993
|
+
}
|
|
994
|
+
];
|
|
995
|
+
}
|
|
996
|
+
});
|
|
997
|
+
|
|
998
|
+
// node_modules/.pnpm/human-signals@5.0.0/node_modules/human-signals/build/src/signals.js
|
|
999
|
+
var import_node_os, getSignals, normalizeSignal;
|
|
1000
|
+
var init_signals = __esm({
|
|
1001
|
+
"node_modules/.pnpm/human-signals@5.0.0/node_modules/human-signals/build/src/signals.js"() {
|
|
1002
|
+
"use strict";
|
|
1003
|
+
import_node_os = require("os");
|
|
1004
|
+
init_core();
|
|
1005
|
+
init_realtime();
|
|
1006
|
+
getSignals = () => {
|
|
1007
|
+
const realtimeSignals = getRealtimeSignals();
|
|
1008
|
+
const signals2 = [...SIGNALS, ...realtimeSignals].map(normalizeSignal);
|
|
1009
|
+
return signals2;
|
|
1010
|
+
};
|
|
1011
|
+
normalizeSignal = ({
|
|
1012
|
+
name,
|
|
1013
|
+
number: defaultNumber,
|
|
1014
|
+
description,
|
|
1015
|
+
action,
|
|
1016
|
+
forced = false,
|
|
1017
|
+
standard
|
|
1018
|
+
}) => {
|
|
1019
|
+
const {
|
|
1020
|
+
signals: { [name]: constantSignal }
|
|
1021
|
+
} = import_node_os.constants;
|
|
1022
|
+
const supported = constantSignal !== void 0;
|
|
1023
|
+
const number = supported ? constantSignal : defaultNumber;
|
|
1024
|
+
return { name, number, description, supported, action, forced, standard };
|
|
1025
|
+
};
|
|
1026
|
+
}
|
|
1027
|
+
});
|
|
1028
|
+
|
|
1029
|
+
// node_modules/.pnpm/human-signals@5.0.0/node_modules/human-signals/build/src/main.js
|
|
1030
|
+
var import_node_os2, getSignalsByName, getSignalByName, signalsByName, getSignalsByNumber, getSignalByNumber, findSignalByNumber, signalsByNumber;
|
|
1031
|
+
var init_main = __esm({
|
|
1032
|
+
"node_modules/.pnpm/human-signals@5.0.0/node_modules/human-signals/build/src/main.js"() {
|
|
1033
|
+
"use strict";
|
|
1034
|
+
import_node_os2 = require("os");
|
|
1035
|
+
init_realtime();
|
|
1036
|
+
init_signals();
|
|
1037
|
+
getSignalsByName = () => {
|
|
1038
|
+
const signals2 = getSignals();
|
|
1039
|
+
return Object.fromEntries(signals2.map(getSignalByName));
|
|
1040
|
+
};
|
|
1041
|
+
getSignalByName = ({
|
|
1042
|
+
name,
|
|
1043
|
+
number,
|
|
1044
|
+
description,
|
|
1045
|
+
supported,
|
|
1046
|
+
action,
|
|
1047
|
+
forced,
|
|
1048
|
+
standard
|
|
1049
|
+
}) => [name, { name, number, description, supported, action, forced, standard }];
|
|
1050
|
+
signalsByName = getSignalsByName();
|
|
1051
|
+
getSignalsByNumber = () => {
|
|
1052
|
+
const signals2 = getSignals();
|
|
1053
|
+
const length = SIGRTMAX + 1;
|
|
1054
|
+
const signalsA = Array.from(
|
|
1055
|
+
{ length },
|
|
1056
|
+
(value, number) => getSignalByNumber(number, signals2)
|
|
1057
|
+
);
|
|
1058
|
+
return Object.assign({}, ...signalsA);
|
|
1059
|
+
};
|
|
1060
|
+
getSignalByNumber = (number, signals2) => {
|
|
1061
|
+
const signal = findSignalByNumber(number, signals2);
|
|
1062
|
+
if (signal === void 0) {
|
|
1063
|
+
return {};
|
|
1064
|
+
}
|
|
1065
|
+
const { name, description, supported, action, forced, standard } = signal;
|
|
1066
|
+
return {
|
|
1067
|
+
[number]: {
|
|
1068
|
+
name,
|
|
1069
|
+
number,
|
|
1070
|
+
description,
|
|
1071
|
+
supported,
|
|
1072
|
+
action,
|
|
1073
|
+
forced,
|
|
1074
|
+
standard
|
|
1075
|
+
}
|
|
1076
|
+
};
|
|
1077
|
+
};
|
|
1078
|
+
findSignalByNumber = (number, signals2) => {
|
|
1079
|
+
const signal = signals2.find(({ name }) => import_node_os2.constants.signals[name] === number);
|
|
1080
|
+
if (signal !== void 0) {
|
|
1081
|
+
return signal;
|
|
1082
|
+
}
|
|
1083
|
+
return signals2.find((signalA) => signalA.number === number);
|
|
1084
|
+
};
|
|
1085
|
+
signalsByNumber = getSignalsByNumber();
|
|
1086
|
+
}
|
|
1087
|
+
});
|
|
1088
|
+
|
|
1089
|
+
// node_modules/.pnpm/execa@8.0.1/node_modules/execa/lib/error.js
|
|
1090
|
+
var import_node_process2, getErrorPrefix, makeError;
|
|
1091
|
+
var init_error = __esm({
|
|
1092
|
+
"node_modules/.pnpm/execa@8.0.1/node_modules/execa/lib/error.js"() {
|
|
1093
|
+
"use strict";
|
|
1094
|
+
import_node_process2 = __toESM(require("process"), 1);
|
|
1095
|
+
init_main();
|
|
1096
|
+
getErrorPrefix = ({ timedOut, timeout, errorCode, signal, signalDescription, exitCode, isCanceled }) => {
|
|
1097
|
+
if (timedOut) {
|
|
1098
|
+
return `timed out after ${timeout} milliseconds`;
|
|
1099
|
+
}
|
|
1100
|
+
if (isCanceled) {
|
|
1101
|
+
return "was canceled";
|
|
1102
|
+
}
|
|
1103
|
+
if (errorCode !== void 0) {
|
|
1104
|
+
return `failed with ${errorCode}`;
|
|
1105
|
+
}
|
|
1106
|
+
if (signal !== void 0) {
|
|
1107
|
+
return `was killed with ${signal} (${signalDescription})`;
|
|
1108
|
+
}
|
|
1109
|
+
if (exitCode !== void 0) {
|
|
1110
|
+
return `failed with exit code ${exitCode}`;
|
|
1111
|
+
}
|
|
1112
|
+
return "failed";
|
|
1113
|
+
};
|
|
1114
|
+
makeError = ({
|
|
1115
|
+
stdout,
|
|
1116
|
+
stderr,
|
|
1117
|
+
all,
|
|
1118
|
+
error,
|
|
1119
|
+
signal,
|
|
1120
|
+
exitCode,
|
|
1121
|
+
command,
|
|
1122
|
+
escapedCommand,
|
|
1123
|
+
timedOut,
|
|
1124
|
+
isCanceled,
|
|
1125
|
+
killed,
|
|
1126
|
+
parsed: { options: { timeout, cwd = import_node_process2.default.cwd() } }
|
|
1127
|
+
}) => {
|
|
1128
|
+
exitCode = exitCode === null ? void 0 : exitCode;
|
|
1129
|
+
signal = signal === null ? void 0 : signal;
|
|
1130
|
+
const signalDescription = signal === void 0 ? void 0 : signalsByName[signal].description;
|
|
1131
|
+
const errorCode = error && error.code;
|
|
1132
|
+
const prefix = getErrorPrefix({ timedOut, timeout, errorCode, signal, signalDescription, exitCode, isCanceled });
|
|
1133
|
+
const execaMessage = `Command ${prefix}: ${command}`;
|
|
1134
|
+
const isError = Object.prototype.toString.call(error) === "[object Error]";
|
|
1135
|
+
const shortMessage = isError ? `${execaMessage}
|
|
1136
|
+
${error.message}` : execaMessage;
|
|
1137
|
+
const message = [shortMessage, stderr, stdout].filter(Boolean).join("\n");
|
|
1138
|
+
if (isError) {
|
|
1139
|
+
error.originalMessage = error.message;
|
|
1140
|
+
error.message = message;
|
|
1141
|
+
} else {
|
|
1142
|
+
error = new Error(message);
|
|
1143
|
+
}
|
|
1144
|
+
error.shortMessage = shortMessage;
|
|
1145
|
+
error.command = command;
|
|
1146
|
+
error.escapedCommand = escapedCommand;
|
|
1147
|
+
error.exitCode = exitCode;
|
|
1148
|
+
error.signal = signal;
|
|
1149
|
+
error.signalDescription = signalDescription;
|
|
1150
|
+
error.stdout = stdout;
|
|
1151
|
+
error.stderr = stderr;
|
|
1152
|
+
error.cwd = cwd;
|
|
1153
|
+
if (all !== void 0) {
|
|
1154
|
+
error.all = all;
|
|
1155
|
+
}
|
|
1156
|
+
if ("bufferedData" in error) {
|
|
1157
|
+
delete error.bufferedData;
|
|
1158
|
+
}
|
|
1159
|
+
error.failed = true;
|
|
1160
|
+
error.timedOut = Boolean(timedOut);
|
|
1161
|
+
error.isCanceled = isCanceled;
|
|
1162
|
+
error.killed = killed && !timedOut;
|
|
1163
|
+
return error;
|
|
1164
|
+
};
|
|
1165
|
+
}
|
|
1166
|
+
});
|
|
1167
|
+
|
|
1168
|
+
// node_modules/.pnpm/execa@8.0.1/node_modules/execa/lib/stdio.js
|
|
1169
|
+
var aliases, hasAlias, normalizeStdio, normalizeStdioNode;
|
|
1170
|
+
var init_stdio = __esm({
|
|
1171
|
+
"node_modules/.pnpm/execa@8.0.1/node_modules/execa/lib/stdio.js"() {
|
|
1172
|
+
"use strict";
|
|
1173
|
+
aliases = ["stdin", "stdout", "stderr"];
|
|
1174
|
+
hasAlias = (options) => aliases.some((alias) => options[alias] !== void 0);
|
|
1175
|
+
normalizeStdio = (options) => {
|
|
1176
|
+
if (!options) {
|
|
1177
|
+
return;
|
|
1178
|
+
}
|
|
1179
|
+
const { stdio } = options;
|
|
1180
|
+
if (stdio === void 0) {
|
|
1181
|
+
return aliases.map((alias) => options[alias]);
|
|
1182
|
+
}
|
|
1183
|
+
if (hasAlias(options)) {
|
|
1184
|
+
throw new Error(`It's not possible to provide \`stdio\` in combination with one of ${aliases.map((alias) => `\`${alias}\``).join(", ")}`);
|
|
1185
|
+
}
|
|
1186
|
+
if (typeof stdio === "string") {
|
|
1187
|
+
return stdio;
|
|
1188
|
+
}
|
|
1189
|
+
if (!Array.isArray(stdio)) {
|
|
1190
|
+
throw new TypeError(`Expected \`stdio\` to be of type \`string\` or \`Array\`, got \`${typeof stdio}\``);
|
|
1191
|
+
}
|
|
1192
|
+
const length = Math.max(stdio.length, aliases.length);
|
|
1193
|
+
return Array.from({ length }, (value, index) => stdio[index]);
|
|
1194
|
+
};
|
|
1195
|
+
normalizeStdioNode = (options) => {
|
|
1196
|
+
const stdio = normalizeStdio(options);
|
|
1197
|
+
if (stdio === "ipc") {
|
|
1198
|
+
return "ipc";
|
|
1199
|
+
}
|
|
1200
|
+
if (stdio === void 0 || typeof stdio === "string") {
|
|
1201
|
+
return [stdio, stdio, stdio, "ipc"];
|
|
1202
|
+
}
|
|
1203
|
+
if (stdio.includes("ipc")) {
|
|
1204
|
+
return stdio;
|
|
1205
|
+
}
|
|
1206
|
+
return [...stdio, "ipc"];
|
|
1207
|
+
};
|
|
1208
|
+
}
|
|
1209
|
+
});
|
|
1210
|
+
|
|
1211
|
+
// node_modules/.pnpm/signal-exit@4.1.0/node_modules/signal-exit/dist/mjs/signals.js
|
|
1212
|
+
var signals;
|
|
1213
|
+
var init_signals2 = __esm({
|
|
1214
|
+
"node_modules/.pnpm/signal-exit@4.1.0/node_modules/signal-exit/dist/mjs/signals.js"() {
|
|
1215
|
+
"use strict";
|
|
1216
|
+
signals = [];
|
|
1217
|
+
signals.push("SIGHUP", "SIGINT", "SIGTERM");
|
|
1218
|
+
if (process.platform !== "win32") {
|
|
1219
|
+
signals.push(
|
|
1220
|
+
"SIGALRM",
|
|
1221
|
+
"SIGABRT",
|
|
1222
|
+
"SIGVTALRM",
|
|
1223
|
+
"SIGXCPU",
|
|
1224
|
+
"SIGXFSZ",
|
|
1225
|
+
"SIGUSR2",
|
|
1226
|
+
"SIGTRAP",
|
|
1227
|
+
"SIGSYS",
|
|
1228
|
+
"SIGQUIT",
|
|
1229
|
+
"SIGIOT"
|
|
1230
|
+
// should detect profiler and enable/disable accordingly.
|
|
1231
|
+
// see #21
|
|
1232
|
+
// 'SIGPROF'
|
|
1233
|
+
);
|
|
1234
|
+
}
|
|
1235
|
+
if (process.platform === "linux") {
|
|
1236
|
+
signals.push("SIGIO", "SIGPOLL", "SIGPWR", "SIGSTKFLT");
|
|
1237
|
+
}
|
|
1238
|
+
}
|
|
1239
|
+
});
|
|
1240
|
+
|
|
1241
|
+
// node_modules/.pnpm/signal-exit@4.1.0/node_modules/signal-exit/dist/mjs/index.js
|
|
1242
|
+
var processOk, kExitEmitter, global2, ObjectDefineProperty, Emitter, SignalExitBase, signalExitWrap, SignalExitFallback, SignalExit, process4, onExit, load, unload;
|
|
1243
|
+
var init_mjs = __esm({
|
|
1244
|
+
"node_modules/.pnpm/signal-exit@4.1.0/node_modules/signal-exit/dist/mjs/index.js"() {
|
|
1245
|
+
"use strict";
|
|
1246
|
+
init_signals2();
|
|
1247
|
+
processOk = (process7) => !!process7 && typeof process7 === "object" && typeof process7.removeListener === "function" && typeof process7.emit === "function" && typeof process7.reallyExit === "function" && typeof process7.listeners === "function" && typeof process7.kill === "function" && typeof process7.pid === "number" && typeof process7.on === "function";
|
|
1248
|
+
kExitEmitter = Symbol.for("signal-exit emitter");
|
|
1249
|
+
global2 = globalThis;
|
|
1250
|
+
ObjectDefineProperty = Object.defineProperty.bind(Object);
|
|
1251
|
+
Emitter = class {
|
|
1252
|
+
emitted = {
|
|
1253
|
+
afterExit: false,
|
|
1254
|
+
exit: false
|
|
1255
|
+
};
|
|
1256
|
+
listeners = {
|
|
1257
|
+
afterExit: [],
|
|
1258
|
+
exit: []
|
|
1259
|
+
};
|
|
1260
|
+
count = 0;
|
|
1261
|
+
id = Math.random();
|
|
1262
|
+
constructor() {
|
|
1263
|
+
if (global2[kExitEmitter]) {
|
|
1264
|
+
return global2[kExitEmitter];
|
|
1265
|
+
}
|
|
1266
|
+
ObjectDefineProperty(global2, kExitEmitter, {
|
|
1267
|
+
value: this,
|
|
1268
|
+
writable: false,
|
|
1269
|
+
enumerable: false,
|
|
1270
|
+
configurable: false
|
|
1271
|
+
});
|
|
1272
|
+
}
|
|
1273
|
+
on(ev, fn) {
|
|
1274
|
+
this.listeners[ev].push(fn);
|
|
1275
|
+
}
|
|
1276
|
+
removeListener(ev, fn) {
|
|
1277
|
+
const list = this.listeners[ev];
|
|
1278
|
+
const i = list.indexOf(fn);
|
|
1279
|
+
if (i === -1) {
|
|
1280
|
+
return;
|
|
1281
|
+
}
|
|
1282
|
+
if (i === 0 && list.length === 1) {
|
|
1283
|
+
list.length = 0;
|
|
1284
|
+
} else {
|
|
1285
|
+
list.splice(i, 1);
|
|
1286
|
+
}
|
|
1287
|
+
}
|
|
1288
|
+
emit(ev, code, signal) {
|
|
1289
|
+
if (this.emitted[ev]) {
|
|
1290
|
+
return false;
|
|
1291
|
+
}
|
|
1292
|
+
this.emitted[ev] = true;
|
|
1293
|
+
let ret = false;
|
|
1294
|
+
for (const fn of this.listeners[ev]) {
|
|
1295
|
+
ret = fn(code, signal) === true || ret;
|
|
1296
|
+
}
|
|
1297
|
+
if (ev === "exit") {
|
|
1298
|
+
ret = this.emit("afterExit", code, signal) || ret;
|
|
1299
|
+
}
|
|
1300
|
+
return ret;
|
|
1301
|
+
}
|
|
1302
|
+
};
|
|
1303
|
+
SignalExitBase = class {
|
|
1304
|
+
};
|
|
1305
|
+
signalExitWrap = (handler) => {
|
|
1306
|
+
return {
|
|
1307
|
+
onExit(cb, opts) {
|
|
1308
|
+
return handler.onExit(cb, opts);
|
|
1309
|
+
},
|
|
1310
|
+
load() {
|
|
1311
|
+
return handler.load();
|
|
1312
|
+
},
|
|
1313
|
+
unload() {
|
|
1314
|
+
return handler.unload();
|
|
1315
|
+
}
|
|
1316
|
+
};
|
|
1317
|
+
};
|
|
1318
|
+
SignalExitFallback = class extends SignalExitBase {
|
|
1319
|
+
onExit() {
|
|
1320
|
+
return () => {
|
|
1321
|
+
};
|
|
1322
|
+
}
|
|
1323
|
+
load() {
|
|
1324
|
+
}
|
|
1325
|
+
unload() {
|
|
1326
|
+
}
|
|
1327
|
+
};
|
|
1328
|
+
SignalExit = class extends SignalExitBase {
|
|
1329
|
+
// "SIGHUP" throws an `ENOSYS` error on Windows,
|
|
1330
|
+
// so use a supported signal instead
|
|
1331
|
+
/* c8 ignore start */
|
|
1332
|
+
#hupSig = process4.platform === "win32" ? "SIGINT" : "SIGHUP";
|
|
1333
|
+
/* c8 ignore stop */
|
|
1334
|
+
#emitter = new Emitter();
|
|
1335
|
+
#process;
|
|
1336
|
+
#originalProcessEmit;
|
|
1337
|
+
#originalProcessReallyExit;
|
|
1338
|
+
#sigListeners = {};
|
|
1339
|
+
#loaded = false;
|
|
1340
|
+
constructor(process7) {
|
|
1341
|
+
super();
|
|
1342
|
+
this.#process = process7;
|
|
1343
|
+
this.#sigListeners = {};
|
|
1344
|
+
for (const sig of signals) {
|
|
1345
|
+
this.#sigListeners[sig] = () => {
|
|
1346
|
+
const listeners = this.#process.listeners(sig);
|
|
1347
|
+
let { count } = this.#emitter;
|
|
1348
|
+
const p = process7;
|
|
1349
|
+
if (typeof p.__signal_exit_emitter__ === "object" && typeof p.__signal_exit_emitter__.count === "number") {
|
|
1350
|
+
count += p.__signal_exit_emitter__.count;
|
|
1351
|
+
}
|
|
1352
|
+
if (listeners.length === count) {
|
|
1353
|
+
this.unload();
|
|
1354
|
+
const ret = this.#emitter.emit("exit", null, sig);
|
|
1355
|
+
const s = sig === "SIGHUP" ? this.#hupSig : sig;
|
|
1356
|
+
if (!ret)
|
|
1357
|
+
process7.kill(process7.pid, s);
|
|
1358
|
+
}
|
|
1359
|
+
};
|
|
1360
|
+
}
|
|
1361
|
+
this.#originalProcessReallyExit = process7.reallyExit;
|
|
1362
|
+
this.#originalProcessEmit = process7.emit;
|
|
1363
|
+
}
|
|
1364
|
+
onExit(cb, opts) {
|
|
1365
|
+
if (!processOk(this.#process)) {
|
|
1366
|
+
return () => {
|
|
1367
|
+
};
|
|
1368
|
+
}
|
|
1369
|
+
if (this.#loaded === false) {
|
|
1370
|
+
this.load();
|
|
1371
|
+
}
|
|
1372
|
+
const ev = opts?.alwaysLast ? "afterExit" : "exit";
|
|
1373
|
+
this.#emitter.on(ev, cb);
|
|
1374
|
+
return () => {
|
|
1375
|
+
this.#emitter.removeListener(ev, cb);
|
|
1376
|
+
if (this.#emitter.listeners["exit"].length === 0 && this.#emitter.listeners["afterExit"].length === 0) {
|
|
1377
|
+
this.unload();
|
|
1378
|
+
}
|
|
1379
|
+
};
|
|
1380
|
+
}
|
|
1381
|
+
load() {
|
|
1382
|
+
if (this.#loaded) {
|
|
1383
|
+
return;
|
|
1384
|
+
}
|
|
1385
|
+
this.#loaded = true;
|
|
1386
|
+
this.#emitter.count += 1;
|
|
1387
|
+
for (const sig of signals) {
|
|
1388
|
+
try {
|
|
1389
|
+
const fn = this.#sigListeners[sig];
|
|
1390
|
+
if (fn)
|
|
1391
|
+
this.#process.on(sig, fn);
|
|
1392
|
+
} catch (_) {
|
|
1393
|
+
}
|
|
1394
|
+
}
|
|
1395
|
+
this.#process.emit = (ev, ...a) => {
|
|
1396
|
+
return this.#processEmit(ev, ...a);
|
|
1397
|
+
};
|
|
1398
|
+
this.#process.reallyExit = (code) => {
|
|
1399
|
+
return this.#processReallyExit(code);
|
|
1400
|
+
};
|
|
1401
|
+
}
|
|
1402
|
+
unload() {
|
|
1403
|
+
if (!this.#loaded) {
|
|
1404
|
+
return;
|
|
1405
|
+
}
|
|
1406
|
+
this.#loaded = false;
|
|
1407
|
+
signals.forEach((sig) => {
|
|
1408
|
+
const listener = this.#sigListeners[sig];
|
|
1409
|
+
if (!listener) {
|
|
1410
|
+
throw new Error("Listener not defined for signal: " + sig);
|
|
1411
|
+
}
|
|
1412
|
+
try {
|
|
1413
|
+
this.#process.removeListener(sig, listener);
|
|
1414
|
+
} catch (_) {
|
|
1415
|
+
}
|
|
1416
|
+
});
|
|
1417
|
+
this.#process.emit = this.#originalProcessEmit;
|
|
1418
|
+
this.#process.reallyExit = this.#originalProcessReallyExit;
|
|
1419
|
+
this.#emitter.count -= 1;
|
|
1420
|
+
}
|
|
1421
|
+
#processReallyExit(code) {
|
|
1422
|
+
if (!processOk(this.#process)) {
|
|
1423
|
+
return 0;
|
|
1424
|
+
}
|
|
1425
|
+
this.#process.exitCode = code || 0;
|
|
1426
|
+
this.#emitter.emit("exit", this.#process.exitCode, null);
|
|
1427
|
+
return this.#originalProcessReallyExit.call(this.#process, this.#process.exitCode);
|
|
1428
|
+
}
|
|
1429
|
+
#processEmit(ev, ...args) {
|
|
1430
|
+
const og = this.#originalProcessEmit;
|
|
1431
|
+
if (ev === "exit" && processOk(this.#process)) {
|
|
1432
|
+
if (typeof args[0] === "number") {
|
|
1433
|
+
this.#process.exitCode = args[0];
|
|
1434
|
+
}
|
|
1435
|
+
const ret = og.call(this.#process, ev, ...args);
|
|
1436
|
+
this.#emitter.emit("exit", this.#process.exitCode, null);
|
|
1437
|
+
return ret;
|
|
1438
|
+
} else {
|
|
1439
|
+
return og.call(this.#process, ev, ...args);
|
|
1440
|
+
}
|
|
1441
|
+
}
|
|
1442
|
+
};
|
|
1443
|
+
process4 = globalThis.process;
|
|
1444
|
+
({
|
|
1445
|
+
onExit: (
|
|
1446
|
+
/**
|
|
1447
|
+
* Called when the process is exiting, whether via signal, explicit
|
|
1448
|
+
* exit, or running out of stuff to do.
|
|
1449
|
+
*
|
|
1450
|
+
* If the global process object is not suitable for instrumentation,
|
|
1451
|
+
* then this will be a no-op.
|
|
1452
|
+
*
|
|
1453
|
+
* Returns a function that may be used to unload signal-exit.
|
|
1454
|
+
*/
|
|
1455
|
+
onExit
|
|
1456
|
+
),
|
|
1457
|
+
load: (
|
|
1458
|
+
/**
|
|
1459
|
+
* Load the listeners. Likely you never need to call this, unless
|
|
1460
|
+
* doing a rather deep integration with signal-exit functionality.
|
|
1461
|
+
* Mostly exposed for the benefit of testing.
|
|
1462
|
+
*
|
|
1463
|
+
* @internal
|
|
1464
|
+
*/
|
|
1465
|
+
load
|
|
1466
|
+
),
|
|
1467
|
+
unload: (
|
|
1468
|
+
/**
|
|
1469
|
+
* Unload the listeners. Likely you never need to call this, unless
|
|
1470
|
+
* doing a rather deep integration with signal-exit functionality.
|
|
1471
|
+
* Mostly exposed for the benefit of testing.
|
|
1472
|
+
*
|
|
1473
|
+
* @internal
|
|
1474
|
+
*/
|
|
1475
|
+
unload
|
|
1476
|
+
)
|
|
1477
|
+
} = signalExitWrap(processOk(process4) ? new SignalExit(process4) : new SignalExitFallback()));
|
|
1478
|
+
}
|
|
1479
|
+
});
|
|
1480
|
+
|
|
1481
|
+
// node_modules/.pnpm/execa@8.0.1/node_modules/execa/lib/kill.js
|
|
1482
|
+
var import_node_os3, DEFAULT_FORCE_KILL_TIMEOUT, spawnedKill, setKillTimeout, shouldForceKill, isSigterm, getForceKillAfterTimeout, spawnedCancel, timeoutKill, setupTimeout, validateTimeout, setExitHandler;
|
|
1483
|
+
var init_kill = __esm({
|
|
1484
|
+
"node_modules/.pnpm/execa@8.0.1/node_modules/execa/lib/kill.js"() {
|
|
1485
|
+
"use strict";
|
|
1486
|
+
import_node_os3 = __toESM(require("os"), 1);
|
|
1487
|
+
init_mjs();
|
|
1488
|
+
DEFAULT_FORCE_KILL_TIMEOUT = 1e3 * 5;
|
|
1489
|
+
spawnedKill = (kill, signal = "SIGTERM", options = {}) => {
|
|
1490
|
+
const killResult = kill(signal);
|
|
1491
|
+
setKillTimeout(kill, signal, options, killResult);
|
|
1492
|
+
return killResult;
|
|
1493
|
+
};
|
|
1494
|
+
setKillTimeout = (kill, signal, options, killResult) => {
|
|
1495
|
+
if (!shouldForceKill(signal, options, killResult)) {
|
|
1496
|
+
return;
|
|
1497
|
+
}
|
|
1498
|
+
const timeout = getForceKillAfterTimeout(options);
|
|
1499
|
+
const t = setTimeout(() => {
|
|
1500
|
+
kill("SIGKILL");
|
|
1501
|
+
}, timeout);
|
|
1502
|
+
if (t.unref) {
|
|
1503
|
+
t.unref();
|
|
1504
|
+
}
|
|
1505
|
+
};
|
|
1506
|
+
shouldForceKill = (signal, { forceKillAfterTimeout }, killResult) => isSigterm(signal) && forceKillAfterTimeout !== false && killResult;
|
|
1507
|
+
isSigterm = (signal) => signal === import_node_os3.default.constants.signals.SIGTERM || typeof signal === "string" && signal.toUpperCase() === "SIGTERM";
|
|
1508
|
+
getForceKillAfterTimeout = ({ forceKillAfterTimeout = true }) => {
|
|
1509
|
+
if (forceKillAfterTimeout === true) {
|
|
1510
|
+
return DEFAULT_FORCE_KILL_TIMEOUT;
|
|
1511
|
+
}
|
|
1512
|
+
if (!Number.isFinite(forceKillAfterTimeout) || forceKillAfterTimeout < 0) {
|
|
1513
|
+
throw new TypeError(`Expected the \`forceKillAfterTimeout\` option to be a non-negative integer, got \`${forceKillAfterTimeout}\` (${typeof forceKillAfterTimeout})`);
|
|
1514
|
+
}
|
|
1515
|
+
return forceKillAfterTimeout;
|
|
1516
|
+
};
|
|
1517
|
+
spawnedCancel = (spawned, context) => {
|
|
1518
|
+
const killResult = spawned.kill();
|
|
1519
|
+
if (killResult) {
|
|
1520
|
+
context.isCanceled = true;
|
|
1521
|
+
}
|
|
1522
|
+
};
|
|
1523
|
+
timeoutKill = (spawned, signal, reject) => {
|
|
1524
|
+
spawned.kill(signal);
|
|
1525
|
+
reject(Object.assign(new Error("Timed out"), { timedOut: true, signal }));
|
|
1526
|
+
};
|
|
1527
|
+
setupTimeout = (spawned, { timeout, killSignal = "SIGTERM" }, spawnedPromise) => {
|
|
1528
|
+
if (timeout === 0 || timeout === void 0) {
|
|
1529
|
+
return spawnedPromise;
|
|
1530
|
+
}
|
|
1531
|
+
let timeoutId;
|
|
1532
|
+
const timeoutPromise = new Promise((resolve13, reject) => {
|
|
1533
|
+
timeoutId = setTimeout(() => {
|
|
1534
|
+
timeoutKill(spawned, killSignal, reject);
|
|
1535
|
+
}, timeout);
|
|
1536
|
+
});
|
|
1537
|
+
const safeSpawnedPromise = spawnedPromise.finally(() => {
|
|
1538
|
+
clearTimeout(timeoutId);
|
|
1539
|
+
});
|
|
1540
|
+
return Promise.race([timeoutPromise, safeSpawnedPromise]);
|
|
1541
|
+
};
|
|
1542
|
+
validateTimeout = ({ timeout }) => {
|
|
1543
|
+
if (timeout !== void 0 && (!Number.isFinite(timeout) || timeout < 0)) {
|
|
1544
|
+
throw new TypeError(`Expected the \`timeout\` option to be a non-negative integer, got \`${timeout}\` (${typeof timeout})`);
|
|
1545
|
+
}
|
|
1546
|
+
};
|
|
1547
|
+
setExitHandler = async (spawned, { cleanup, detached }, timedPromise) => {
|
|
1548
|
+
if (!cleanup || detached) {
|
|
1549
|
+
return timedPromise;
|
|
1550
|
+
}
|
|
1551
|
+
const removeExitHandler = onExit(() => {
|
|
1552
|
+
spawned.kill();
|
|
1553
|
+
});
|
|
1554
|
+
return timedPromise.finally(() => {
|
|
1555
|
+
removeExitHandler();
|
|
1556
|
+
});
|
|
1557
|
+
};
|
|
1558
|
+
}
|
|
1559
|
+
});
|
|
1560
|
+
|
|
1561
|
+
// node_modules/.pnpm/is-stream@3.0.0/node_modules/is-stream/index.js
|
|
1562
|
+
function isStream(stream) {
|
|
1563
|
+
return stream !== null && typeof stream === "object" && typeof stream.pipe === "function";
|
|
1564
|
+
}
|
|
1565
|
+
function isWritableStream(stream) {
|
|
1566
|
+
return isStream(stream) && stream.writable !== false && typeof stream._write === "function" && typeof stream._writableState === "object";
|
|
1567
|
+
}
|
|
1568
|
+
var init_is_stream = __esm({
|
|
1569
|
+
"node_modules/.pnpm/is-stream@3.0.0/node_modules/is-stream/index.js"() {
|
|
1570
|
+
"use strict";
|
|
1571
|
+
}
|
|
1572
|
+
});
|
|
1573
|
+
|
|
1574
|
+
// node_modules/.pnpm/execa@8.0.1/node_modules/execa/lib/pipe.js
|
|
1575
|
+
var import_node_fs, import_node_child_process, isExecaChildProcess, pipeToTarget, addPipeMethods;
|
|
1576
|
+
var init_pipe = __esm({
|
|
1577
|
+
"node_modules/.pnpm/execa@8.0.1/node_modules/execa/lib/pipe.js"() {
|
|
1578
|
+
"use strict";
|
|
1579
|
+
import_node_fs = require("fs");
|
|
1580
|
+
import_node_child_process = require("child_process");
|
|
1581
|
+
init_is_stream();
|
|
1582
|
+
isExecaChildProcess = (target) => target instanceof import_node_child_process.ChildProcess && typeof target.then === "function";
|
|
1583
|
+
pipeToTarget = (spawned, streamName, target) => {
|
|
1584
|
+
if (typeof target === "string") {
|
|
1585
|
+
spawned[streamName].pipe((0, import_node_fs.createWriteStream)(target));
|
|
1586
|
+
return spawned;
|
|
1587
|
+
}
|
|
1588
|
+
if (isWritableStream(target)) {
|
|
1589
|
+
spawned[streamName].pipe(target);
|
|
1590
|
+
return spawned;
|
|
1591
|
+
}
|
|
1592
|
+
if (!isExecaChildProcess(target)) {
|
|
1593
|
+
throw new TypeError("The second argument must be a string, a stream or an Execa child process.");
|
|
1594
|
+
}
|
|
1595
|
+
if (!isWritableStream(target.stdin)) {
|
|
1596
|
+
throw new TypeError("The target child process's stdin must be available.");
|
|
1597
|
+
}
|
|
1598
|
+
spawned[streamName].pipe(target.stdin);
|
|
1599
|
+
return target;
|
|
1600
|
+
};
|
|
1601
|
+
addPipeMethods = (spawned) => {
|
|
1602
|
+
if (spawned.stdout !== null) {
|
|
1603
|
+
spawned.pipeStdout = pipeToTarget.bind(void 0, spawned, "stdout");
|
|
1604
|
+
}
|
|
1605
|
+
if (spawned.stderr !== null) {
|
|
1606
|
+
spawned.pipeStderr = pipeToTarget.bind(void 0, spawned, "stderr");
|
|
1607
|
+
}
|
|
1608
|
+
if (spawned.all !== void 0) {
|
|
1609
|
+
spawned.pipeAll = pipeToTarget.bind(void 0, spawned, "all");
|
|
1610
|
+
}
|
|
1611
|
+
};
|
|
1612
|
+
}
|
|
1613
|
+
});
|
|
1614
|
+
|
|
1615
|
+
// node_modules/.pnpm/get-stream@8.0.1/node_modules/get-stream/source/contents.js
|
|
1616
|
+
var getStreamContents, appendFinalChunk, appendChunk, addNewChunk, isAsyncIterable, getChunkType, objectToString, MaxBufferError;
|
|
1617
|
+
var init_contents = __esm({
|
|
1618
|
+
"node_modules/.pnpm/get-stream@8.0.1/node_modules/get-stream/source/contents.js"() {
|
|
1619
|
+
"use strict";
|
|
1620
|
+
getStreamContents = async (stream, { init, convertChunk, getSize, truncateChunk, addChunk, getFinalChunk, finalize }, { maxBuffer = Number.POSITIVE_INFINITY } = {}) => {
|
|
1621
|
+
if (!isAsyncIterable(stream)) {
|
|
1622
|
+
throw new Error("The first argument must be a Readable, a ReadableStream, or an async iterable.");
|
|
1623
|
+
}
|
|
1624
|
+
const state = init();
|
|
1625
|
+
state.length = 0;
|
|
1626
|
+
try {
|
|
1627
|
+
for await (const chunk of stream) {
|
|
1628
|
+
const chunkType = getChunkType(chunk);
|
|
1629
|
+
const convertedChunk = convertChunk[chunkType](chunk, state);
|
|
1630
|
+
appendChunk({ convertedChunk, state, getSize, truncateChunk, addChunk, maxBuffer });
|
|
1631
|
+
}
|
|
1632
|
+
appendFinalChunk({ state, convertChunk, getSize, truncateChunk, addChunk, getFinalChunk, maxBuffer });
|
|
1633
|
+
return finalize(state);
|
|
1634
|
+
} catch (error) {
|
|
1635
|
+
error.bufferedData = finalize(state);
|
|
1636
|
+
throw error;
|
|
1637
|
+
}
|
|
1638
|
+
};
|
|
1639
|
+
appendFinalChunk = ({ state, getSize, truncateChunk, addChunk, getFinalChunk, maxBuffer }) => {
|
|
1640
|
+
const convertedChunk = getFinalChunk(state);
|
|
1641
|
+
if (convertedChunk !== void 0) {
|
|
1642
|
+
appendChunk({ convertedChunk, state, getSize, truncateChunk, addChunk, maxBuffer });
|
|
1643
|
+
}
|
|
1644
|
+
};
|
|
1645
|
+
appendChunk = ({ convertedChunk, state, getSize, truncateChunk, addChunk, maxBuffer }) => {
|
|
1646
|
+
const chunkSize = getSize(convertedChunk);
|
|
1647
|
+
const newLength = state.length + chunkSize;
|
|
1648
|
+
if (newLength <= maxBuffer) {
|
|
1649
|
+
addNewChunk(convertedChunk, state, addChunk, newLength);
|
|
1650
|
+
return;
|
|
1651
|
+
}
|
|
1652
|
+
const truncatedChunk = truncateChunk(convertedChunk, maxBuffer - state.length);
|
|
1653
|
+
if (truncatedChunk !== void 0) {
|
|
1654
|
+
addNewChunk(truncatedChunk, state, addChunk, maxBuffer);
|
|
1655
|
+
}
|
|
1656
|
+
throw new MaxBufferError();
|
|
1657
|
+
};
|
|
1658
|
+
addNewChunk = (convertedChunk, state, addChunk, newLength) => {
|
|
1659
|
+
state.contents = addChunk(convertedChunk, state, newLength);
|
|
1660
|
+
state.length = newLength;
|
|
1661
|
+
};
|
|
1662
|
+
isAsyncIterable = (stream) => typeof stream === "object" && stream !== null && typeof stream[Symbol.asyncIterator] === "function";
|
|
1663
|
+
getChunkType = (chunk) => {
|
|
1664
|
+
const typeOfChunk = typeof chunk;
|
|
1665
|
+
if (typeOfChunk === "string") {
|
|
1666
|
+
return "string";
|
|
1667
|
+
}
|
|
1668
|
+
if (typeOfChunk !== "object" || chunk === null) {
|
|
1669
|
+
return "others";
|
|
1670
|
+
}
|
|
1671
|
+
if (globalThis.Buffer?.isBuffer(chunk)) {
|
|
1672
|
+
return "buffer";
|
|
1673
|
+
}
|
|
1674
|
+
const prototypeName = objectToString.call(chunk);
|
|
1675
|
+
if (prototypeName === "[object ArrayBuffer]") {
|
|
1676
|
+
return "arrayBuffer";
|
|
1677
|
+
}
|
|
1678
|
+
if (prototypeName === "[object DataView]") {
|
|
1679
|
+
return "dataView";
|
|
1680
|
+
}
|
|
1681
|
+
if (Number.isInteger(chunk.byteLength) && Number.isInteger(chunk.byteOffset) && objectToString.call(chunk.buffer) === "[object ArrayBuffer]") {
|
|
1682
|
+
return "typedArray";
|
|
1683
|
+
}
|
|
1684
|
+
return "others";
|
|
1685
|
+
};
|
|
1686
|
+
({ toString: objectToString } = Object.prototype);
|
|
1687
|
+
MaxBufferError = class extends Error {
|
|
1688
|
+
name = "MaxBufferError";
|
|
1689
|
+
constructor() {
|
|
1690
|
+
super("maxBuffer exceeded");
|
|
1691
|
+
}
|
|
1692
|
+
};
|
|
1693
|
+
}
|
|
1694
|
+
});
|
|
1695
|
+
|
|
1696
|
+
// node_modules/.pnpm/get-stream@8.0.1/node_modules/get-stream/source/utils.js
|
|
1697
|
+
var identity, noop, getContentsProp, throwObjectStream, getLengthProp;
|
|
1698
|
+
var init_utils = __esm({
|
|
1699
|
+
"node_modules/.pnpm/get-stream@8.0.1/node_modules/get-stream/source/utils.js"() {
|
|
1700
|
+
"use strict";
|
|
1701
|
+
identity = (value) => value;
|
|
1702
|
+
noop = () => void 0;
|
|
1703
|
+
getContentsProp = ({ contents }) => contents;
|
|
1704
|
+
throwObjectStream = (chunk) => {
|
|
1705
|
+
throw new Error(`Streams in object mode are not supported: ${String(chunk)}`);
|
|
1706
|
+
};
|
|
1707
|
+
getLengthProp = (convertedChunk) => convertedChunk.length;
|
|
1708
|
+
}
|
|
1709
|
+
});
|
|
1710
|
+
|
|
1711
|
+
// node_modules/.pnpm/get-stream@8.0.1/node_modules/get-stream/source/array.js
|
|
1712
|
+
var init_array = __esm({
|
|
1713
|
+
"node_modules/.pnpm/get-stream@8.0.1/node_modules/get-stream/source/array.js"() {
|
|
1714
|
+
"use strict";
|
|
1715
|
+
init_contents();
|
|
1716
|
+
init_utils();
|
|
1717
|
+
}
|
|
1718
|
+
});
|
|
1719
|
+
|
|
1720
|
+
// node_modules/.pnpm/get-stream@8.0.1/node_modules/get-stream/source/array-buffer.js
|
|
1721
|
+
async function getStreamAsArrayBuffer(stream, options) {
|
|
1722
|
+
return getStreamContents(stream, arrayBufferMethods, options);
|
|
1723
|
+
}
|
|
1724
|
+
var initArrayBuffer, useTextEncoder, textEncoder, useUint8Array, useUint8ArrayWithOffset, truncateArrayBufferChunk, addArrayBufferChunk, resizeArrayBufferSlow, resizeArrayBuffer, getNewContentsLength, SCALE_FACTOR, finalizeArrayBuffer, hasArrayBufferResize, arrayBufferMethods;
|
|
1725
|
+
var init_array_buffer = __esm({
|
|
1726
|
+
"node_modules/.pnpm/get-stream@8.0.1/node_modules/get-stream/source/array-buffer.js"() {
|
|
1727
|
+
"use strict";
|
|
1728
|
+
init_contents();
|
|
1729
|
+
init_utils();
|
|
1730
|
+
initArrayBuffer = () => ({ contents: new ArrayBuffer(0) });
|
|
1731
|
+
useTextEncoder = (chunk) => textEncoder.encode(chunk);
|
|
1732
|
+
textEncoder = new TextEncoder();
|
|
1733
|
+
useUint8Array = (chunk) => new Uint8Array(chunk);
|
|
1734
|
+
useUint8ArrayWithOffset = (chunk) => new Uint8Array(chunk.buffer, chunk.byteOffset, chunk.byteLength);
|
|
1735
|
+
truncateArrayBufferChunk = (convertedChunk, chunkSize) => convertedChunk.slice(0, chunkSize);
|
|
1736
|
+
addArrayBufferChunk = (convertedChunk, { contents, length: previousLength }, length) => {
|
|
1737
|
+
const newContents = hasArrayBufferResize() ? resizeArrayBuffer(contents, length) : resizeArrayBufferSlow(contents, length);
|
|
1738
|
+
new Uint8Array(newContents).set(convertedChunk, previousLength);
|
|
1739
|
+
return newContents;
|
|
1740
|
+
};
|
|
1741
|
+
resizeArrayBufferSlow = (contents, length) => {
|
|
1742
|
+
if (length <= contents.byteLength) {
|
|
1743
|
+
return contents;
|
|
1744
|
+
}
|
|
1745
|
+
const arrayBuffer = new ArrayBuffer(getNewContentsLength(length));
|
|
1746
|
+
new Uint8Array(arrayBuffer).set(new Uint8Array(contents), 0);
|
|
1747
|
+
return arrayBuffer;
|
|
1748
|
+
};
|
|
1749
|
+
resizeArrayBuffer = (contents, length) => {
|
|
1750
|
+
if (length <= contents.maxByteLength) {
|
|
1751
|
+
contents.resize(length);
|
|
1752
|
+
return contents;
|
|
1753
|
+
}
|
|
1754
|
+
const arrayBuffer = new ArrayBuffer(length, { maxByteLength: getNewContentsLength(length) });
|
|
1755
|
+
new Uint8Array(arrayBuffer).set(new Uint8Array(contents), 0);
|
|
1756
|
+
return arrayBuffer;
|
|
1757
|
+
};
|
|
1758
|
+
getNewContentsLength = (length) => SCALE_FACTOR ** Math.ceil(Math.log(length) / Math.log(SCALE_FACTOR));
|
|
1759
|
+
SCALE_FACTOR = 2;
|
|
1760
|
+
finalizeArrayBuffer = ({ contents, length }) => hasArrayBufferResize() ? contents : contents.slice(0, length);
|
|
1761
|
+
hasArrayBufferResize = () => "resize" in ArrayBuffer.prototype;
|
|
1762
|
+
arrayBufferMethods = {
|
|
1763
|
+
init: initArrayBuffer,
|
|
1764
|
+
convertChunk: {
|
|
1765
|
+
string: useTextEncoder,
|
|
1766
|
+
buffer: useUint8Array,
|
|
1767
|
+
arrayBuffer: useUint8Array,
|
|
1768
|
+
dataView: useUint8ArrayWithOffset,
|
|
1769
|
+
typedArray: useUint8ArrayWithOffset,
|
|
1770
|
+
others: throwObjectStream
|
|
1771
|
+
},
|
|
1772
|
+
getSize: getLengthProp,
|
|
1773
|
+
truncateChunk: truncateArrayBufferChunk,
|
|
1774
|
+
addChunk: addArrayBufferChunk,
|
|
1775
|
+
getFinalChunk: noop,
|
|
1776
|
+
finalize: finalizeArrayBuffer
|
|
1777
|
+
};
|
|
1778
|
+
}
|
|
1779
|
+
});
|
|
1780
|
+
|
|
1781
|
+
// node_modules/.pnpm/get-stream@8.0.1/node_modules/get-stream/source/buffer.js
|
|
1782
|
+
async function getStreamAsBuffer(stream, options) {
|
|
1783
|
+
if (!("Buffer" in globalThis)) {
|
|
1784
|
+
throw new Error("getStreamAsBuffer() is only supported in Node.js");
|
|
1785
|
+
}
|
|
1786
|
+
try {
|
|
1787
|
+
return arrayBufferToNodeBuffer(await getStreamAsArrayBuffer(stream, options));
|
|
1788
|
+
} catch (error) {
|
|
1789
|
+
if (error.bufferedData !== void 0) {
|
|
1790
|
+
error.bufferedData = arrayBufferToNodeBuffer(error.bufferedData);
|
|
1791
|
+
}
|
|
1792
|
+
throw error;
|
|
1793
|
+
}
|
|
1794
|
+
}
|
|
1795
|
+
var arrayBufferToNodeBuffer;
|
|
1796
|
+
var init_buffer = __esm({
|
|
1797
|
+
"node_modules/.pnpm/get-stream@8.0.1/node_modules/get-stream/source/buffer.js"() {
|
|
1798
|
+
"use strict";
|
|
1799
|
+
init_array_buffer();
|
|
1800
|
+
arrayBufferToNodeBuffer = (arrayBuffer) => globalThis.Buffer.from(arrayBuffer);
|
|
1801
|
+
}
|
|
1802
|
+
});
|
|
1803
|
+
|
|
1804
|
+
// node_modules/.pnpm/get-stream@8.0.1/node_modules/get-stream/source/string.js
|
|
1805
|
+
async function getStreamAsString(stream, options) {
|
|
1806
|
+
return getStreamContents(stream, stringMethods, options);
|
|
1807
|
+
}
|
|
1808
|
+
var initString, useTextDecoder, addStringChunk, truncateStringChunk, getFinalStringChunk, stringMethods;
|
|
1809
|
+
var init_string = __esm({
|
|
1810
|
+
"node_modules/.pnpm/get-stream@8.0.1/node_modules/get-stream/source/string.js"() {
|
|
1811
|
+
"use strict";
|
|
1812
|
+
init_contents();
|
|
1813
|
+
init_utils();
|
|
1814
|
+
initString = () => ({ contents: "", textDecoder: new TextDecoder() });
|
|
1815
|
+
useTextDecoder = (chunk, { textDecoder }) => textDecoder.decode(chunk, { stream: true });
|
|
1816
|
+
addStringChunk = (convertedChunk, { contents }) => contents + convertedChunk;
|
|
1817
|
+
truncateStringChunk = (convertedChunk, chunkSize) => convertedChunk.slice(0, chunkSize);
|
|
1818
|
+
getFinalStringChunk = ({ textDecoder }) => {
|
|
1819
|
+
const finalChunk = textDecoder.decode();
|
|
1820
|
+
return finalChunk === "" ? void 0 : finalChunk;
|
|
1821
|
+
};
|
|
1822
|
+
stringMethods = {
|
|
1823
|
+
init: initString,
|
|
1824
|
+
convertChunk: {
|
|
1825
|
+
string: identity,
|
|
1826
|
+
buffer: useTextDecoder,
|
|
1827
|
+
arrayBuffer: useTextDecoder,
|
|
1828
|
+
dataView: useTextDecoder,
|
|
1829
|
+
typedArray: useTextDecoder,
|
|
1830
|
+
others: throwObjectStream
|
|
1831
|
+
},
|
|
1832
|
+
getSize: getLengthProp,
|
|
1833
|
+
truncateChunk: truncateStringChunk,
|
|
1834
|
+
addChunk: addStringChunk,
|
|
1835
|
+
getFinalChunk: getFinalStringChunk,
|
|
1836
|
+
finalize: getContentsProp
|
|
1837
|
+
};
|
|
1838
|
+
}
|
|
1839
|
+
});
|
|
1840
|
+
|
|
1841
|
+
// node_modules/.pnpm/get-stream@8.0.1/node_modules/get-stream/source/index.js
|
|
1842
|
+
var init_source = __esm({
|
|
1843
|
+
"node_modules/.pnpm/get-stream@8.0.1/node_modules/get-stream/source/index.js"() {
|
|
1844
|
+
"use strict";
|
|
1845
|
+
init_array();
|
|
1846
|
+
init_array_buffer();
|
|
1847
|
+
init_buffer();
|
|
1848
|
+
init_string();
|
|
1849
|
+
init_contents();
|
|
1850
|
+
}
|
|
1851
|
+
});
|
|
1852
|
+
|
|
1853
|
+
// node_modules/.pnpm/merge-stream@2.0.0/node_modules/merge-stream/index.js
|
|
1854
|
+
var require_merge_stream = __commonJS({
|
|
1855
|
+
"node_modules/.pnpm/merge-stream@2.0.0/node_modules/merge-stream/index.js"(exports, module2) {
|
|
1856
|
+
"use strict";
|
|
1857
|
+
var { PassThrough } = require("stream");
|
|
1858
|
+
module2.exports = function() {
|
|
1859
|
+
var sources = [];
|
|
1860
|
+
var output = new PassThrough({ objectMode: true });
|
|
1861
|
+
output.setMaxListeners(0);
|
|
1862
|
+
output.add = add;
|
|
1863
|
+
output.isEmpty = isEmpty;
|
|
1864
|
+
output.on("unpipe", remove);
|
|
1865
|
+
Array.prototype.slice.call(arguments).forEach(add);
|
|
1866
|
+
return output;
|
|
1867
|
+
function add(source) {
|
|
1868
|
+
if (Array.isArray(source)) {
|
|
1869
|
+
source.forEach(add);
|
|
1870
|
+
return this;
|
|
1871
|
+
}
|
|
1872
|
+
sources.push(source);
|
|
1873
|
+
source.once("end", remove.bind(null, source));
|
|
1874
|
+
source.once("error", output.emit.bind(output, "error"));
|
|
1875
|
+
source.pipe(output, { end: false });
|
|
1876
|
+
return this;
|
|
1877
|
+
}
|
|
1878
|
+
function isEmpty() {
|
|
1879
|
+
return sources.length == 0;
|
|
1880
|
+
}
|
|
1881
|
+
function remove(source) {
|
|
1882
|
+
sources = sources.filter(function(it) {
|
|
1883
|
+
return it !== source;
|
|
1884
|
+
});
|
|
1885
|
+
if (!sources.length && output.readable) {
|
|
1886
|
+
output.end();
|
|
1887
|
+
}
|
|
1888
|
+
}
|
|
1889
|
+
};
|
|
1890
|
+
}
|
|
1891
|
+
});
|
|
1892
|
+
|
|
1893
|
+
// node_modules/.pnpm/execa@8.0.1/node_modules/execa/lib/stream.js
|
|
1894
|
+
var import_node_fs2, import_promises, import_merge_stream, validateInputOptions, getInputSync, handleInputSync, getInput, handleInput, makeAllStream, getBufferedData, getStreamPromise, applyEncoding, getSpawnedResult;
|
|
1895
|
+
var init_stream = __esm({
|
|
1896
|
+
"node_modules/.pnpm/execa@8.0.1/node_modules/execa/lib/stream.js"() {
|
|
1897
|
+
"use strict";
|
|
1898
|
+
import_node_fs2 = require("fs");
|
|
1899
|
+
import_promises = require("timers/promises");
|
|
1900
|
+
init_is_stream();
|
|
1901
|
+
init_source();
|
|
1902
|
+
import_merge_stream = __toESM(require_merge_stream(), 1);
|
|
1903
|
+
validateInputOptions = (input) => {
|
|
1904
|
+
if (input !== void 0) {
|
|
1905
|
+
throw new TypeError("The `input` and `inputFile` options cannot be both set.");
|
|
1906
|
+
}
|
|
1907
|
+
};
|
|
1908
|
+
getInputSync = ({ input, inputFile }) => {
|
|
1909
|
+
if (typeof inputFile !== "string") {
|
|
1910
|
+
return input;
|
|
1911
|
+
}
|
|
1912
|
+
validateInputOptions(input);
|
|
1913
|
+
return (0, import_node_fs2.readFileSync)(inputFile);
|
|
1914
|
+
};
|
|
1915
|
+
handleInputSync = (options) => {
|
|
1916
|
+
const input = getInputSync(options);
|
|
1917
|
+
if (isStream(input)) {
|
|
1918
|
+
throw new TypeError("The `input` option cannot be a stream in sync mode");
|
|
1919
|
+
}
|
|
1920
|
+
return input;
|
|
1921
|
+
};
|
|
1922
|
+
getInput = ({ input, inputFile }) => {
|
|
1923
|
+
if (typeof inputFile !== "string") {
|
|
1924
|
+
return input;
|
|
1925
|
+
}
|
|
1926
|
+
validateInputOptions(input);
|
|
1927
|
+
return (0, import_node_fs2.createReadStream)(inputFile);
|
|
1928
|
+
};
|
|
1929
|
+
handleInput = (spawned, options) => {
|
|
1930
|
+
const input = getInput(options);
|
|
1931
|
+
if (input === void 0) {
|
|
1932
|
+
return;
|
|
1933
|
+
}
|
|
1934
|
+
if (isStream(input)) {
|
|
1935
|
+
input.pipe(spawned.stdin);
|
|
1936
|
+
} else {
|
|
1937
|
+
spawned.stdin.end(input);
|
|
1938
|
+
}
|
|
1939
|
+
};
|
|
1940
|
+
makeAllStream = (spawned, { all }) => {
|
|
1941
|
+
if (!all || !spawned.stdout && !spawned.stderr) {
|
|
1942
|
+
return;
|
|
1943
|
+
}
|
|
1944
|
+
const mixed = (0, import_merge_stream.default)();
|
|
1945
|
+
if (spawned.stdout) {
|
|
1946
|
+
mixed.add(spawned.stdout);
|
|
1947
|
+
}
|
|
1948
|
+
if (spawned.stderr) {
|
|
1949
|
+
mixed.add(spawned.stderr);
|
|
1950
|
+
}
|
|
1951
|
+
return mixed;
|
|
1952
|
+
};
|
|
1953
|
+
getBufferedData = async (stream, streamPromise) => {
|
|
1954
|
+
if (!stream || streamPromise === void 0) {
|
|
1955
|
+
return;
|
|
1956
|
+
}
|
|
1957
|
+
await (0, import_promises.setTimeout)(0);
|
|
1958
|
+
stream.destroy();
|
|
1959
|
+
try {
|
|
1960
|
+
return await streamPromise;
|
|
1961
|
+
} catch (error) {
|
|
1962
|
+
return error.bufferedData;
|
|
1963
|
+
}
|
|
1964
|
+
};
|
|
1965
|
+
getStreamPromise = (stream, { encoding, buffer, maxBuffer }) => {
|
|
1966
|
+
if (!stream || !buffer) {
|
|
1967
|
+
return;
|
|
1968
|
+
}
|
|
1969
|
+
if (encoding === "utf8" || encoding === "utf-8") {
|
|
1970
|
+
return getStreamAsString(stream, { maxBuffer });
|
|
1971
|
+
}
|
|
1972
|
+
if (encoding === null || encoding === "buffer") {
|
|
1973
|
+
return getStreamAsBuffer(stream, { maxBuffer });
|
|
1974
|
+
}
|
|
1975
|
+
return applyEncoding(stream, maxBuffer, encoding);
|
|
1976
|
+
};
|
|
1977
|
+
applyEncoding = async (stream, maxBuffer, encoding) => {
|
|
1978
|
+
const buffer = await getStreamAsBuffer(stream, { maxBuffer });
|
|
1979
|
+
return buffer.toString(encoding);
|
|
1980
|
+
};
|
|
1981
|
+
getSpawnedResult = async ({ stdout, stderr, all }, { encoding, buffer, maxBuffer }, processDone) => {
|
|
1982
|
+
const stdoutPromise = getStreamPromise(stdout, { encoding, buffer, maxBuffer });
|
|
1983
|
+
const stderrPromise = getStreamPromise(stderr, { encoding, buffer, maxBuffer });
|
|
1984
|
+
const allPromise = getStreamPromise(all, { encoding, buffer, maxBuffer: maxBuffer * 2 });
|
|
1985
|
+
try {
|
|
1986
|
+
return await Promise.all([processDone, stdoutPromise, stderrPromise, allPromise]);
|
|
1987
|
+
} catch (error) {
|
|
1988
|
+
return Promise.all([
|
|
1989
|
+
{ error, signal: error.signal, timedOut: error.timedOut },
|
|
1990
|
+
getBufferedData(stdout, stdoutPromise),
|
|
1991
|
+
getBufferedData(stderr, stderrPromise),
|
|
1992
|
+
getBufferedData(all, allPromise)
|
|
1993
|
+
]);
|
|
1994
|
+
}
|
|
1995
|
+
};
|
|
1996
|
+
}
|
|
1997
|
+
});
|
|
1998
|
+
|
|
1999
|
+
// node_modules/.pnpm/execa@8.0.1/node_modules/execa/lib/promise.js
|
|
2000
|
+
var nativePromisePrototype, descriptors, mergePromise, getSpawnedPromise;
|
|
2001
|
+
var init_promise = __esm({
|
|
2002
|
+
"node_modules/.pnpm/execa@8.0.1/node_modules/execa/lib/promise.js"() {
|
|
2003
|
+
"use strict";
|
|
2004
|
+
nativePromisePrototype = (async () => {
|
|
2005
|
+
})().constructor.prototype;
|
|
2006
|
+
descriptors = ["then", "catch", "finally"].map((property) => [
|
|
2007
|
+
property,
|
|
2008
|
+
Reflect.getOwnPropertyDescriptor(nativePromisePrototype, property)
|
|
2009
|
+
]);
|
|
2010
|
+
mergePromise = (spawned, promise) => {
|
|
2011
|
+
for (const [property, descriptor] of descriptors) {
|
|
2012
|
+
const value = typeof promise === "function" ? (...args) => Reflect.apply(descriptor.value, promise(), args) : descriptor.value.bind(promise);
|
|
2013
|
+
Reflect.defineProperty(spawned, property, { ...descriptor, value });
|
|
2014
|
+
}
|
|
2015
|
+
};
|
|
2016
|
+
getSpawnedPromise = (spawned) => new Promise((resolve13, reject) => {
|
|
2017
|
+
spawned.on("exit", (exitCode, signal) => {
|
|
2018
|
+
resolve13({ exitCode, signal });
|
|
2019
|
+
});
|
|
2020
|
+
spawned.on("error", (error) => {
|
|
2021
|
+
reject(error);
|
|
2022
|
+
});
|
|
2023
|
+
if (spawned.stdin) {
|
|
2024
|
+
spawned.stdin.on("error", (error) => {
|
|
2025
|
+
reject(error);
|
|
2026
|
+
});
|
|
2027
|
+
}
|
|
2028
|
+
});
|
|
2029
|
+
}
|
|
2030
|
+
});
|
|
2031
|
+
|
|
2032
|
+
// node_modules/.pnpm/execa@8.0.1/node_modules/execa/lib/command.js
|
|
2033
|
+
var import_node_buffer, import_node_child_process2, normalizeArgs, NO_ESCAPE_REGEXP, escapeArg, joinCommand, getEscapedCommand, SPACES_REGEXP, parseCommand, parseExpression, concatTokens, parseTemplate, parseTemplates;
|
|
2034
|
+
var init_command = __esm({
|
|
2035
|
+
"node_modules/.pnpm/execa@8.0.1/node_modules/execa/lib/command.js"() {
|
|
2036
|
+
"use strict";
|
|
2037
|
+
import_node_buffer = require("buffer");
|
|
2038
|
+
import_node_child_process2 = require("child_process");
|
|
2039
|
+
normalizeArgs = (file, args = []) => {
|
|
2040
|
+
if (!Array.isArray(args)) {
|
|
2041
|
+
return [file];
|
|
2042
|
+
}
|
|
2043
|
+
return [file, ...args];
|
|
2044
|
+
};
|
|
2045
|
+
NO_ESCAPE_REGEXP = /^[\w.-]+$/;
|
|
2046
|
+
escapeArg = (arg) => {
|
|
2047
|
+
if (typeof arg !== "string" || NO_ESCAPE_REGEXP.test(arg)) {
|
|
2048
|
+
return arg;
|
|
2049
|
+
}
|
|
2050
|
+
return `"${arg.replaceAll('"', '\\"')}"`;
|
|
2051
|
+
};
|
|
2052
|
+
joinCommand = (file, args) => normalizeArgs(file, args).join(" ");
|
|
2053
|
+
getEscapedCommand = (file, args) => normalizeArgs(file, args).map((arg) => escapeArg(arg)).join(" ");
|
|
2054
|
+
SPACES_REGEXP = / +/g;
|
|
2055
|
+
parseCommand = (command) => {
|
|
2056
|
+
const tokens = [];
|
|
2057
|
+
for (const token of command.trim().split(SPACES_REGEXP)) {
|
|
2058
|
+
const previousToken = tokens.at(-1);
|
|
2059
|
+
if (previousToken && previousToken.endsWith("\\")) {
|
|
2060
|
+
tokens[tokens.length - 1] = `${previousToken.slice(0, -1)} ${token}`;
|
|
2061
|
+
} else {
|
|
2062
|
+
tokens.push(token);
|
|
2063
|
+
}
|
|
2064
|
+
}
|
|
2065
|
+
return tokens;
|
|
2066
|
+
};
|
|
2067
|
+
parseExpression = (expression) => {
|
|
2068
|
+
const typeOfExpression = typeof expression;
|
|
2069
|
+
if (typeOfExpression === "string") {
|
|
2070
|
+
return expression;
|
|
2071
|
+
}
|
|
2072
|
+
if (typeOfExpression === "number") {
|
|
2073
|
+
return String(expression);
|
|
2074
|
+
}
|
|
2075
|
+
if (typeOfExpression === "object" && expression !== null && !(expression instanceof import_node_child_process2.ChildProcess) && "stdout" in expression) {
|
|
2076
|
+
const typeOfStdout = typeof expression.stdout;
|
|
2077
|
+
if (typeOfStdout === "string") {
|
|
2078
|
+
return expression.stdout;
|
|
2079
|
+
}
|
|
2080
|
+
if (import_node_buffer.Buffer.isBuffer(expression.stdout)) {
|
|
2081
|
+
return expression.stdout.toString();
|
|
2082
|
+
}
|
|
2083
|
+
throw new TypeError(`Unexpected "${typeOfStdout}" stdout in template expression`);
|
|
2084
|
+
}
|
|
2085
|
+
throw new TypeError(`Unexpected "${typeOfExpression}" in template expression`);
|
|
2086
|
+
};
|
|
2087
|
+
concatTokens = (tokens, nextTokens, isNew) => isNew || tokens.length === 0 || nextTokens.length === 0 ? [...tokens, ...nextTokens] : [
|
|
2088
|
+
...tokens.slice(0, -1),
|
|
2089
|
+
`${tokens.at(-1)}${nextTokens[0]}`,
|
|
2090
|
+
...nextTokens.slice(1)
|
|
2091
|
+
];
|
|
2092
|
+
parseTemplate = ({ templates, expressions, tokens, index, template }) => {
|
|
2093
|
+
const templateString = template ?? templates.raw[index];
|
|
2094
|
+
const templateTokens = templateString.split(SPACES_REGEXP).filter(Boolean);
|
|
2095
|
+
const newTokens = concatTokens(
|
|
2096
|
+
tokens,
|
|
2097
|
+
templateTokens,
|
|
2098
|
+
templateString.startsWith(" ")
|
|
2099
|
+
);
|
|
2100
|
+
if (index === expressions.length) {
|
|
2101
|
+
return newTokens;
|
|
2102
|
+
}
|
|
2103
|
+
const expression = expressions[index];
|
|
2104
|
+
const expressionTokens = Array.isArray(expression) ? expression.map((expression2) => parseExpression(expression2)) : [parseExpression(expression)];
|
|
2105
|
+
return concatTokens(
|
|
2106
|
+
newTokens,
|
|
2107
|
+
expressionTokens,
|
|
2108
|
+
templateString.endsWith(" ")
|
|
2109
|
+
);
|
|
2110
|
+
};
|
|
2111
|
+
parseTemplates = (templates, expressions) => {
|
|
2112
|
+
let tokens = [];
|
|
2113
|
+
for (const [index, template] of templates.entries()) {
|
|
2114
|
+
tokens = parseTemplate({ templates, expressions, tokens, index, template });
|
|
2115
|
+
}
|
|
2116
|
+
return tokens;
|
|
2117
|
+
};
|
|
2118
|
+
}
|
|
2119
|
+
});
|
|
2120
|
+
|
|
2121
|
+
// node_modules/.pnpm/execa@8.0.1/node_modules/execa/lib/verbose.js
|
|
2122
|
+
var import_node_util, import_node_process3, verboseDefault, padField, getTimestamp, logCommand;
|
|
2123
|
+
var init_verbose = __esm({
|
|
2124
|
+
"node_modules/.pnpm/execa@8.0.1/node_modules/execa/lib/verbose.js"() {
|
|
2125
|
+
"use strict";
|
|
2126
|
+
import_node_util = require("util");
|
|
2127
|
+
import_node_process3 = __toESM(require("process"), 1);
|
|
2128
|
+
verboseDefault = (0, import_node_util.debuglog)("execa").enabled;
|
|
2129
|
+
padField = (field, padding) => String(field).padStart(padding, "0");
|
|
2130
|
+
getTimestamp = () => {
|
|
2131
|
+
const date = /* @__PURE__ */ new Date();
|
|
2132
|
+
return `${padField(date.getHours(), 2)}:${padField(date.getMinutes(), 2)}:${padField(date.getSeconds(), 2)}.${padField(date.getMilliseconds(), 3)}`;
|
|
2133
|
+
};
|
|
2134
|
+
logCommand = (escapedCommand, { verbose }) => {
|
|
2135
|
+
if (!verbose) {
|
|
2136
|
+
return;
|
|
2137
|
+
}
|
|
2138
|
+
import_node_process3.default.stderr.write(`[${getTimestamp()}] ${escapedCommand}
|
|
2139
|
+
`);
|
|
2140
|
+
};
|
|
2141
|
+
}
|
|
2142
|
+
});
|
|
2143
|
+
|
|
2144
|
+
// node_modules/.pnpm/execa@8.0.1/node_modules/execa/index.js
|
|
2145
|
+
var execa_exports = {};
|
|
2146
|
+
__export(execa_exports, {
|
|
2147
|
+
$: () => $,
|
|
2148
|
+
execa: () => execa,
|
|
2149
|
+
execaCommand: () => execaCommand,
|
|
2150
|
+
execaCommandSync: () => execaCommandSync,
|
|
2151
|
+
execaNode: () => execaNode,
|
|
2152
|
+
execaSync: () => execaSync
|
|
2153
|
+
});
|
|
2154
|
+
function execa(file, args, options) {
|
|
2155
|
+
const parsed = handleArguments(file, args, options);
|
|
2156
|
+
const command = joinCommand(file, args);
|
|
2157
|
+
const escapedCommand = getEscapedCommand(file, args);
|
|
2158
|
+
logCommand(escapedCommand, parsed.options);
|
|
2159
|
+
validateTimeout(parsed.options);
|
|
2160
|
+
let spawned;
|
|
2161
|
+
try {
|
|
2162
|
+
spawned = import_node_child_process3.default.spawn(parsed.file, parsed.args, parsed.options);
|
|
2163
|
+
} catch (error) {
|
|
2164
|
+
const dummySpawned = new import_node_child_process3.default.ChildProcess();
|
|
2165
|
+
const errorPromise = Promise.reject(makeError({
|
|
2166
|
+
error,
|
|
2167
|
+
stdout: "",
|
|
2168
|
+
stderr: "",
|
|
2169
|
+
all: "",
|
|
2170
|
+
command,
|
|
2171
|
+
escapedCommand,
|
|
2172
|
+
parsed,
|
|
2173
|
+
timedOut: false,
|
|
2174
|
+
isCanceled: false,
|
|
2175
|
+
killed: false
|
|
2176
|
+
}));
|
|
2177
|
+
mergePromise(dummySpawned, errorPromise);
|
|
2178
|
+
return dummySpawned;
|
|
2179
|
+
}
|
|
2180
|
+
const spawnedPromise = getSpawnedPromise(spawned);
|
|
2181
|
+
const timedPromise = setupTimeout(spawned, parsed.options, spawnedPromise);
|
|
2182
|
+
const processDone = setExitHandler(spawned, parsed.options, timedPromise);
|
|
2183
|
+
const context = { isCanceled: false };
|
|
2184
|
+
spawned.kill = spawnedKill.bind(null, spawned.kill.bind(spawned));
|
|
2185
|
+
spawned.cancel = spawnedCancel.bind(null, spawned, context);
|
|
2186
|
+
const handlePromise = async () => {
|
|
2187
|
+
const [{ error, exitCode, signal, timedOut }, stdoutResult, stderrResult, allResult] = await getSpawnedResult(spawned, parsed.options, processDone);
|
|
2188
|
+
const stdout = handleOutput(parsed.options, stdoutResult);
|
|
2189
|
+
const stderr = handleOutput(parsed.options, stderrResult);
|
|
2190
|
+
const all = handleOutput(parsed.options, allResult);
|
|
2191
|
+
if (error || exitCode !== 0 || signal !== null) {
|
|
2192
|
+
const returnedError = makeError({
|
|
2193
|
+
error,
|
|
2194
|
+
exitCode,
|
|
2195
|
+
signal,
|
|
2196
|
+
stdout,
|
|
2197
|
+
stderr,
|
|
2198
|
+
all,
|
|
2199
|
+
command,
|
|
2200
|
+
escapedCommand,
|
|
2201
|
+
parsed,
|
|
2202
|
+
timedOut,
|
|
2203
|
+
isCanceled: context.isCanceled || (parsed.options.signal ? parsed.options.signal.aborted : false),
|
|
2204
|
+
killed: spawned.killed
|
|
2205
|
+
});
|
|
2206
|
+
if (!parsed.options.reject) {
|
|
2207
|
+
return returnedError;
|
|
2208
|
+
}
|
|
2209
|
+
throw returnedError;
|
|
2210
|
+
}
|
|
2211
|
+
return {
|
|
2212
|
+
command,
|
|
2213
|
+
escapedCommand,
|
|
2214
|
+
exitCode: 0,
|
|
2215
|
+
stdout,
|
|
2216
|
+
stderr,
|
|
2217
|
+
all,
|
|
2218
|
+
failed: false,
|
|
2219
|
+
timedOut: false,
|
|
2220
|
+
isCanceled: false,
|
|
2221
|
+
killed: false
|
|
2222
|
+
};
|
|
2223
|
+
};
|
|
2224
|
+
const handlePromiseOnce = onetime_default(handlePromise);
|
|
2225
|
+
handleInput(spawned, parsed.options);
|
|
2226
|
+
spawned.all = makeAllStream(spawned, parsed.options);
|
|
2227
|
+
addPipeMethods(spawned);
|
|
2228
|
+
mergePromise(spawned, handlePromiseOnce);
|
|
2229
|
+
return spawned;
|
|
2230
|
+
}
|
|
2231
|
+
function execaSync(file, args, options) {
|
|
2232
|
+
const parsed = handleArguments(file, args, options);
|
|
2233
|
+
const command = joinCommand(file, args);
|
|
2234
|
+
const escapedCommand = getEscapedCommand(file, args);
|
|
2235
|
+
logCommand(escapedCommand, parsed.options);
|
|
2236
|
+
const input = handleInputSync(parsed.options);
|
|
2237
|
+
let result;
|
|
2238
|
+
try {
|
|
2239
|
+
result = import_node_child_process3.default.spawnSync(parsed.file, parsed.args, { ...parsed.options, input });
|
|
2240
|
+
} catch (error) {
|
|
2241
|
+
throw makeError({
|
|
2242
|
+
error,
|
|
2243
|
+
stdout: "",
|
|
2244
|
+
stderr: "",
|
|
2245
|
+
all: "",
|
|
2246
|
+
command,
|
|
2247
|
+
escapedCommand,
|
|
2248
|
+
parsed,
|
|
2249
|
+
timedOut: false,
|
|
2250
|
+
isCanceled: false,
|
|
2251
|
+
killed: false
|
|
2252
|
+
});
|
|
2253
|
+
}
|
|
2254
|
+
const stdout = handleOutput(parsed.options, result.stdout, result.error);
|
|
2255
|
+
const stderr = handleOutput(parsed.options, result.stderr, result.error);
|
|
2256
|
+
if (result.error || result.status !== 0 || result.signal !== null) {
|
|
2257
|
+
const error = makeError({
|
|
2258
|
+
stdout,
|
|
2259
|
+
stderr,
|
|
2260
|
+
error: result.error,
|
|
2261
|
+
signal: result.signal,
|
|
2262
|
+
exitCode: result.status,
|
|
2263
|
+
command,
|
|
2264
|
+
escapedCommand,
|
|
2265
|
+
parsed,
|
|
2266
|
+
timedOut: result.error && result.error.code === "ETIMEDOUT",
|
|
2267
|
+
isCanceled: false,
|
|
2268
|
+
killed: result.signal !== null
|
|
2269
|
+
});
|
|
2270
|
+
if (!parsed.options.reject) {
|
|
2271
|
+
return error;
|
|
2272
|
+
}
|
|
2273
|
+
throw error;
|
|
2274
|
+
}
|
|
2275
|
+
return {
|
|
2276
|
+
command,
|
|
2277
|
+
escapedCommand,
|
|
2278
|
+
exitCode: 0,
|
|
2279
|
+
stdout,
|
|
2280
|
+
stderr,
|
|
2281
|
+
failed: false,
|
|
2282
|
+
timedOut: false,
|
|
2283
|
+
isCanceled: false,
|
|
2284
|
+
killed: false
|
|
2285
|
+
};
|
|
2286
|
+
}
|
|
2287
|
+
function create$(options) {
|
|
2288
|
+
function $2(templatesOrOptions, ...expressions) {
|
|
2289
|
+
if (!Array.isArray(templatesOrOptions)) {
|
|
2290
|
+
return create$({ ...options, ...templatesOrOptions });
|
|
2291
|
+
}
|
|
2292
|
+
const [file, ...args] = parseTemplates(templatesOrOptions, expressions);
|
|
2293
|
+
return execa(file, args, normalizeScriptOptions(options));
|
|
2294
|
+
}
|
|
2295
|
+
$2.sync = (templates, ...expressions) => {
|
|
2296
|
+
if (!Array.isArray(templates)) {
|
|
2297
|
+
throw new TypeError("Please use $(options).sync`command` instead of $.sync(options)`command`.");
|
|
2298
|
+
}
|
|
2299
|
+
const [file, ...args] = parseTemplates(templates, expressions);
|
|
2300
|
+
return execaSync(file, args, normalizeScriptOptions(options));
|
|
2301
|
+
};
|
|
2302
|
+
return $2;
|
|
2303
|
+
}
|
|
2304
|
+
function execaCommand(command, options) {
|
|
2305
|
+
const [file, ...args] = parseCommand(command);
|
|
2306
|
+
return execa(file, args, options);
|
|
2307
|
+
}
|
|
2308
|
+
function execaCommandSync(command, options) {
|
|
2309
|
+
const [file, ...args] = parseCommand(command);
|
|
2310
|
+
return execaSync(file, args, options);
|
|
2311
|
+
}
|
|
2312
|
+
function execaNode(scriptPath, args, options = {}) {
|
|
2313
|
+
if (args && !Array.isArray(args) && typeof args === "object") {
|
|
2314
|
+
options = args;
|
|
2315
|
+
args = [];
|
|
2316
|
+
}
|
|
2317
|
+
const stdio = normalizeStdioNode(options);
|
|
2318
|
+
const defaultExecArgv = import_node_process4.default.execArgv.filter((arg) => !arg.startsWith("--inspect"));
|
|
2319
|
+
const {
|
|
2320
|
+
nodePath = import_node_process4.default.execPath,
|
|
2321
|
+
nodeOptions = defaultExecArgv
|
|
2322
|
+
} = options;
|
|
2323
|
+
return execa(
|
|
2324
|
+
nodePath,
|
|
2325
|
+
[
|
|
2326
|
+
...nodeOptions,
|
|
2327
|
+
scriptPath,
|
|
2328
|
+
...Array.isArray(args) ? args : []
|
|
2329
|
+
],
|
|
2330
|
+
{
|
|
2331
|
+
...options,
|
|
2332
|
+
stdin: void 0,
|
|
2333
|
+
stdout: void 0,
|
|
2334
|
+
stderr: void 0,
|
|
2335
|
+
stdio,
|
|
2336
|
+
shell: false
|
|
2337
|
+
}
|
|
2338
|
+
);
|
|
2339
|
+
}
|
|
2340
|
+
var import_node_buffer2, import_node_path3, import_node_child_process3, import_node_process4, import_cross_spawn, DEFAULT_MAX_BUFFER, getEnv, handleArguments, handleOutput, normalizeScriptStdin, normalizeScriptOptions, $;
|
|
2341
|
+
var init_execa = __esm({
|
|
2342
|
+
"node_modules/.pnpm/execa@8.0.1/node_modules/execa/index.js"() {
|
|
2343
|
+
"use strict";
|
|
2344
|
+
import_node_buffer2 = require("buffer");
|
|
2345
|
+
import_node_path3 = __toESM(require("path"), 1);
|
|
2346
|
+
import_node_child_process3 = __toESM(require("child_process"), 1);
|
|
2347
|
+
import_node_process4 = __toESM(require("process"), 1);
|
|
2348
|
+
import_cross_spawn = __toESM(require_cross_spawn(), 1);
|
|
2349
|
+
init_strip_final_newline();
|
|
2350
|
+
init_npm_run_path();
|
|
2351
|
+
init_onetime();
|
|
2352
|
+
init_error();
|
|
2353
|
+
init_stdio();
|
|
2354
|
+
init_kill();
|
|
2355
|
+
init_pipe();
|
|
2356
|
+
init_stream();
|
|
2357
|
+
init_promise();
|
|
2358
|
+
init_command();
|
|
2359
|
+
init_verbose();
|
|
2360
|
+
DEFAULT_MAX_BUFFER = 1e3 * 1e3 * 100;
|
|
2361
|
+
getEnv = ({ env: envOption, extendEnv, preferLocal, localDir, execPath }) => {
|
|
2362
|
+
const env = extendEnv ? { ...import_node_process4.default.env, ...envOption } : envOption;
|
|
2363
|
+
if (preferLocal) {
|
|
2364
|
+
return npmRunPathEnv({ env, cwd: localDir, execPath });
|
|
2365
|
+
}
|
|
2366
|
+
return env;
|
|
2367
|
+
};
|
|
2368
|
+
handleArguments = (file, args, options = {}) => {
|
|
2369
|
+
const parsed = import_cross_spawn.default._parse(file, args, options);
|
|
2370
|
+
file = parsed.command;
|
|
2371
|
+
args = parsed.args;
|
|
2372
|
+
options = parsed.options;
|
|
2373
|
+
options = {
|
|
2374
|
+
maxBuffer: DEFAULT_MAX_BUFFER,
|
|
2375
|
+
buffer: true,
|
|
2376
|
+
stripFinalNewline: true,
|
|
2377
|
+
extendEnv: true,
|
|
2378
|
+
preferLocal: false,
|
|
2379
|
+
localDir: options.cwd || import_node_process4.default.cwd(),
|
|
2380
|
+
execPath: import_node_process4.default.execPath,
|
|
2381
|
+
encoding: "utf8",
|
|
2382
|
+
reject: true,
|
|
2383
|
+
cleanup: true,
|
|
2384
|
+
all: false,
|
|
2385
|
+
windowsHide: true,
|
|
2386
|
+
verbose: verboseDefault,
|
|
2387
|
+
...options
|
|
2388
|
+
};
|
|
2389
|
+
options.env = getEnv(options);
|
|
2390
|
+
options.stdio = normalizeStdio(options);
|
|
2391
|
+
if (import_node_process4.default.platform === "win32" && import_node_path3.default.basename(file, ".exe") === "cmd") {
|
|
2392
|
+
args.unshift("/q");
|
|
2393
|
+
}
|
|
2394
|
+
return { file, args, options, parsed };
|
|
2395
|
+
};
|
|
2396
|
+
handleOutput = (options, value, error) => {
|
|
2397
|
+
if (typeof value !== "string" && !import_node_buffer2.Buffer.isBuffer(value)) {
|
|
2398
|
+
return error === void 0 ? void 0 : "";
|
|
2399
|
+
}
|
|
2400
|
+
if (options.stripFinalNewline) {
|
|
2401
|
+
return stripFinalNewline(value);
|
|
2402
|
+
}
|
|
2403
|
+
return value;
|
|
2404
|
+
};
|
|
2405
|
+
normalizeScriptStdin = ({ input, inputFile, stdio }) => input === void 0 && inputFile === void 0 && stdio === void 0 ? { stdin: "inherit" } : {};
|
|
2406
|
+
normalizeScriptOptions = (options = {}) => ({
|
|
2407
|
+
preferLocal: true,
|
|
2408
|
+
...normalizeScriptStdin(options),
|
|
2409
|
+
...options
|
|
2410
|
+
});
|
|
2411
|
+
$ = create$();
|
|
2412
|
+
}
|
|
2413
|
+
});
|
|
29
2414
|
|
|
30
2415
|
// src/index.ts
|
|
31
2416
|
var src_exports = {};
|
|
@@ -43,27 +2428,228 @@ __export(src_exports, {
|
|
|
43
2428
|
module.exports = __toCommonJS(src_exports);
|
|
44
2429
|
|
|
45
2430
|
// src/core/utils/fs.ts
|
|
46
|
-
var
|
|
2431
|
+
var import_fs_extra2 = __toESM(require("fs-extra"), 1);
|
|
47
2432
|
var import_fast_glob = __toESM(require("fast-glob"), 1);
|
|
48
2433
|
|
|
49
2434
|
// src/core/utils/paths.ts
|
|
50
2435
|
var import_node_path = __toESM(require("path"), 1);
|
|
51
2436
|
var import_normalize_path = __toESM(require("normalize-path"), 1);
|
|
52
|
-
function normalizePath(
|
|
53
|
-
return (0, import_normalize_path.default)(
|
|
2437
|
+
function normalizePath(path13) {
|
|
2438
|
+
return (0, import_normalize_path.default)(path13);
|
|
54
2439
|
}
|
|
55
|
-
function unnormalizePath(
|
|
56
|
-
return import_node_path.default.normalize(
|
|
2440
|
+
function unnormalizePath(path13) {
|
|
2441
|
+
return import_node_path.default.normalize(path13);
|
|
57
2442
|
}
|
|
58
2443
|
var CSS_EXTENSIONS = ["css", "scss", "sass", "less", "styl", "stylus"];
|
|
59
2444
|
var CSS_EXTENSIONS_PATTERN = `+(${CSS_EXTENSIONS.join("|")})`;
|
|
60
2445
|
|
|
61
2446
|
// src/core/wxt.ts
|
|
62
2447
|
var import_hookable = require("hookable");
|
|
2448
|
+
|
|
2449
|
+
// src/core/package-managers/index.ts
|
|
2450
|
+
var import_nypm = require("nypm");
|
|
2451
|
+
|
|
2452
|
+
// src/core/package-managers/npm.ts
|
|
2453
|
+
var import_node_path4 = __toESM(require("path"), 1);
|
|
2454
|
+
var import_fs_extra = require("fs-extra");
|
|
2455
|
+
var npm = {
|
|
2456
|
+
overridesKey: "overrides",
|
|
2457
|
+
async downloadDependency(id, downloadDir) {
|
|
2458
|
+
await (0, import_fs_extra.ensureDir)(downloadDir);
|
|
2459
|
+
const { execa: execa2 } = await Promise.resolve().then(() => (init_execa(), execa_exports));
|
|
2460
|
+
const res = await execa2("npm", ["pack", id, "--json"], {
|
|
2461
|
+
cwd: downloadDir
|
|
2462
|
+
});
|
|
2463
|
+
const packed = JSON.parse(res.stdout);
|
|
2464
|
+
return import_node_path4.default.resolve(downloadDir, packed[0].filename);
|
|
2465
|
+
},
|
|
2466
|
+
async listDependencies(options) {
|
|
2467
|
+
const args = ["ls", "--json"];
|
|
2468
|
+
if (options?.all) {
|
|
2469
|
+
args.push("--depth", "Infinity");
|
|
2470
|
+
}
|
|
2471
|
+
const { execa: execa2 } = await Promise.resolve().then(() => (init_execa(), execa_exports));
|
|
2472
|
+
const res = await execa2("npm", args, { cwd: options?.cwd });
|
|
2473
|
+
const project = JSON.parse(res.stdout);
|
|
2474
|
+
return flattenNpmListOutput([project]);
|
|
2475
|
+
}
|
|
2476
|
+
};
|
|
2477
|
+
function flattenNpmListOutput(projects) {
|
|
2478
|
+
const queue = projects.flatMap(
|
|
2479
|
+
(project) => {
|
|
2480
|
+
const acc = [];
|
|
2481
|
+
if (project.dependencies)
|
|
2482
|
+
acc.push(project.dependencies);
|
|
2483
|
+
if (project.devDependencies)
|
|
2484
|
+
acc.push(project.devDependencies);
|
|
2485
|
+
return acc;
|
|
2486
|
+
}
|
|
2487
|
+
);
|
|
2488
|
+
const dependencies = [];
|
|
2489
|
+
while (queue.length > 0) {
|
|
2490
|
+
Object.entries(queue.pop()).forEach(([name, meta]) => {
|
|
2491
|
+
dependencies.push({
|
|
2492
|
+
name,
|
|
2493
|
+
version: meta.version
|
|
2494
|
+
});
|
|
2495
|
+
if (meta.dependencies)
|
|
2496
|
+
queue.push(meta.dependencies);
|
|
2497
|
+
if (meta.devDependencies)
|
|
2498
|
+
queue.push(meta.devDependencies);
|
|
2499
|
+
});
|
|
2500
|
+
}
|
|
2501
|
+
return dedupeDependencies(dependencies);
|
|
2502
|
+
}
|
|
2503
|
+
function dedupeDependencies(dependencies) {
|
|
2504
|
+
const hashes = /* @__PURE__ */ new Set();
|
|
2505
|
+
return dependencies.filter((dep) => {
|
|
2506
|
+
const hash = `${dep.name}@${dep.version}`;
|
|
2507
|
+
if (hashes.has(hash)) {
|
|
2508
|
+
return false;
|
|
2509
|
+
} else {
|
|
2510
|
+
hashes.add(hash);
|
|
2511
|
+
return true;
|
|
2512
|
+
}
|
|
2513
|
+
});
|
|
2514
|
+
}
|
|
2515
|
+
|
|
2516
|
+
// src/core/package-managers/bun.ts
|
|
2517
|
+
var bun = {
|
|
2518
|
+
overridesKey: "overrides",
|
|
2519
|
+
// But also supports "resolutions"
|
|
2520
|
+
downloadDependency(...args) {
|
|
2521
|
+
return npm.downloadDependency(...args);
|
|
2522
|
+
},
|
|
2523
|
+
async listDependencies(options) {
|
|
2524
|
+
const args = ["pm", "ls"];
|
|
2525
|
+
if (options?.all) {
|
|
2526
|
+
args.push("--all");
|
|
2527
|
+
}
|
|
2528
|
+
const { execa: execa2 } = await Promise.resolve().then(() => (init_execa(), execa_exports));
|
|
2529
|
+
const res = await execa2("bun", args, { cwd: options?.cwd });
|
|
2530
|
+
return dedupeDependencies(
|
|
2531
|
+
res.stdout.split("\n").slice(1).map((line) => line.trim()).map((line) => /.* (@?\S+)@(\S+)$/.exec(line)).filter((match) => !!match).map(([_, name, version2]) => ({ name, version: version2 }))
|
|
2532
|
+
);
|
|
2533
|
+
}
|
|
2534
|
+
};
|
|
2535
|
+
|
|
2536
|
+
// src/core/package-managers/yarn.ts
|
|
2537
|
+
var yarn = {
|
|
2538
|
+
overridesKey: "resolutions",
|
|
2539
|
+
downloadDependency(...args) {
|
|
2540
|
+
return npm.downloadDependency(...args);
|
|
2541
|
+
},
|
|
2542
|
+
async listDependencies(options) {
|
|
2543
|
+
const args = ["list", "--json"];
|
|
2544
|
+
if (options?.all) {
|
|
2545
|
+
args.push("--depth", "Infinity");
|
|
2546
|
+
}
|
|
2547
|
+
const { execa: execa2 } = await Promise.resolve().then(() => (init_execa(), execa_exports));
|
|
2548
|
+
const res = await execa2("yarn", args, { cwd: options?.cwd });
|
|
2549
|
+
const tree = res.stdout.split("\n").map((line) => JSON.parse(line)).find((line) => line.type === "tree")?.data;
|
|
2550
|
+
if (tree == null)
|
|
2551
|
+
throw Error("'yarn list --json' did not output a tree");
|
|
2552
|
+
const queue = [...tree.trees];
|
|
2553
|
+
const dependencies = [];
|
|
2554
|
+
while (queue.length > 0) {
|
|
2555
|
+
const { name: treeName, children } = queue.pop();
|
|
2556
|
+
const match = /(@?\S+)@(\S+)$/.exec(treeName);
|
|
2557
|
+
if (match) {
|
|
2558
|
+
const [_, name, version2] = match;
|
|
2559
|
+
dependencies.push({ name, version: version2 });
|
|
2560
|
+
}
|
|
2561
|
+
if (children != null) {
|
|
2562
|
+
queue.push(...children);
|
|
2563
|
+
}
|
|
2564
|
+
}
|
|
2565
|
+
return dedupeDependencies(dependencies);
|
|
2566
|
+
}
|
|
2567
|
+
};
|
|
2568
|
+
|
|
2569
|
+
// src/core/package-managers/pnpm.ts
|
|
2570
|
+
var pnpm = {
|
|
2571
|
+
overridesKey: "resolutions",
|
|
2572
|
+
// "pnpm.overrides" has a higher priority, but I don't want to deal with nesting
|
|
2573
|
+
downloadDependency(...args) {
|
|
2574
|
+
return npm.downloadDependency(...args);
|
|
2575
|
+
},
|
|
2576
|
+
async listDependencies(options) {
|
|
2577
|
+
const args = ["ls", "-r", "--json"];
|
|
2578
|
+
if (options?.all) {
|
|
2579
|
+
args.push("--depth", "Infinity");
|
|
2580
|
+
}
|
|
2581
|
+
if (typeof process !== "undefined" && process.env.WXT_PNPM_IGNORE_WORKSPACE === "true") {
|
|
2582
|
+
args.push("--ignore-workspace");
|
|
2583
|
+
}
|
|
2584
|
+
const { execa: execa2 } = await Promise.resolve().then(() => (init_execa(), execa_exports));
|
|
2585
|
+
const res = await execa2("pnpm", args, { cwd: options?.cwd });
|
|
2586
|
+
const projects = JSON.parse(res.stdout);
|
|
2587
|
+
return flattenNpmListOutput(projects);
|
|
2588
|
+
}
|
|
2589
|
+
};
|
|
2590
|
+
|
|
2591
|
+
// src/core/package-managers/index.ts
|
|
2592
|
+
async function createWxtPackageManager(root) {
|
|
2593
|
+
const pm = await (0, import_nypm.detectPackageManager)(root, {
|
|
2594
|
+
includeParentDirs: true
|
|
2595
|
+
});
|
|
2596
|
+
const requirePm = (cb) => {
|
|
2597
|
+
if (pm == null)
|
|
2598
|
+
throw Error("Could not detect package manager");
|
|
2599
|
+
return cb(pm);
|
|
2600
|
+
};
|
|
2601
|
+
return {
|
|
2602
|
+
get name() {
|
|
2603
|
+
return requirePm((pm2) => pm2.name);
|
|
2604
|
+
},
|
|
2605
|
+
get command() {
|
|
2606
|
+
return requirePm((pm2) => pm2.command);
|
|
2607
|
+
},
|
|
2608
|
+
get version() {
|
|
2609
|
+
return requirePm((pm2) => pm2.version);
|
|
2610
|
+
},
|
|
2611
|
+
get majorVersion() {
|
|
2612
|
+
return requirePm((pm2) => pm2.majorVersion);
|
|
2613
|
+
},
|
|
2614
|
+
get lockFile() {
|
|
2615
|
+
return requirePm((pm2) => pm2.lockFile);
|
|
2616
|
+
},
|
|
2617
|
+
get files() {
|
|
2618
|
+
return requirePm((pm2) => pm2.files);
|
|
2619
|
+
},
|
|
2620
|
+
addDependency: import_nypm.addDependency,
|
|
2621
|
+
addDevDependency: import_nypm.addDevDependency,
|
|
2622
|
+
ensureDependencyInstalled: import_nypm.ensureDependencyInstalled,
|
|
2623
|
+
installDependencies: import_nypm.installDependencies,
|
|
2624
|
+
removeDependency: import_nypm.removeDependency,
|
|
2625
|
+
get overridesKey() {
|
|
2626
|
+
return requirePm((pm2) => packageManagers[pm2.name].overridesKey);
|
|
2627
|
+
},
|
|
2628
|
+
downloadDependency(...args) {
|
|
2629
|
+
return requirePm(
|
|
2630
|
+
(pm2) => packageManagers[pm2.name].downloadDependency(...args)
|
|
2631
|
+
);
|
|
2632
|
+
},
|
|
2633
|
+
listDependencies(...args) {
|
|
2634
|
+
return requirePm(
|
|
2635
|
+
(pm2) => packageManagers[pm2.name].listDependencies(...args)
|
|
2636
|
+
);
|
|
2637
|
+
}
|
|
2638
|
+
};
|
|
2639
|
+
}
|
|
2640
|
+
var packageManagers = {
|
|
2641
|
+
npm,
|
|
2642
|
+
pnpm,
|
|
2643
|
+
bun,
|
|
2644
|
+
yarn
|
|
2645
|
+
};
|
|
2646
|
+
|
|
2647
|
+
// src/core/wxt.ts
|
|
63
2648
|
var wxt;
|
|
64
2649
|
async function registerWxt(command, inlineConfig = {}, server) {
|
|
65
2650
|
const config = await resolveConfig(inlineConfig, command, server);
|
|
66
2651
|
const hooks = (0, import_hookable.createHooks)();
|
|
2652
|
+
const pm = await createWxtPackageManager(config.root);
|
|
67
2653
|
wxt = {
|
|
68
2654
|
config,
|
|
69
2655
|
hooks,
|
|
@@ -72,7 +2658,8 @@ async function registerWxt(command, inlineConfig = {}, server) {
|
|
|
72
2658
|
},
|
|
73
2659
|
async reloadConfig() {
|
|
74
2660
|
wxt.config = await resolveConfig(inlineConfig, command, server);
|
|
75
|
-
}
|
|
2661
|
+
},
|
|
2662
|
+
pm
|
|
76
2663
|
};
|
|
77
2664
|
wxt.hooks.addHooks(config.hooks);
|
|
78
2665
|
await wxt.hooks.callHook("ready", wxt);
|
|
@@ -80,20 +2667,20 @@ async function registerWxt(command, inlineConfig = {}, server) {
|
|
|
80
2667
|
|
|
81
2668
|
// src/core/utils/fs.ts
|
|
82
2669
|
async function writeFileIfDifferent(file, newContents) {
|
|
83
|
-
const existingContents = await
|
|
2670
|
+
const existingContents = await import_fs_extra2.default.readFile(file, "utf-8").catch(() => void 0);
|
|
84
2671
|
if (existingContents !== newContents) {
|
|
85
|
-
await
|
|
2672
|
+
await import_fs_extra2.default.writeFile(file, newContents);
|
|
86
2673
|
}
|
|
87
2674
|
}
|
|
88
2675
|
async function getPublicFiles() {
|
|
89
|
-
if (!await
|
|
2676
|
+
if (!await import_fs_extra2.default.exists(wxt.config.publicDir))
|
|
90
2677
|
return [];
|
|
91
2678
|
const files = await (0, import_fast_glob.default)("**/*", { cwd: wxt.config.publicDir });
|
|
92
2679
|
return files.map(unnormalizePath);
|
|
93
2680
|
}
|
|
94
2681
|
|
|
95
2682
|
// src/core/utils/building/build-entrypoints.ts
|
|
96
|
-
var
|
|
2683
|
+
var import_fs_extra3 = __toESM(require("fs-extra"), 1);
|
|
97
2684
|
var import_path = require("path");
|
|
98
2685
|
var import_picocolors = __toESM(require("picocolors"), 1);
|
|
99
2686
|
async function buildEntrypoints(groups, spinner) {
|
|
@@ -121,8 +2708,8 @@ async function copyPublicDirectory() {
|
|
|
121
2708
|
for (const file of files) {
|
|
122
2709
|
const srcPath = (0, import_path.resolve)(wxt.config.publicDir, file);
|
|
123
2710
|
const outPath = (0, import_path.resolve)(wxt.config.outDir, file);
|
|
124
|
-
await
|
|
125
|
-
await
|
|
2711
|
+
await import_fs_extra3.default.ensureDir((0, import_path.dirname)(outPath));
|
|
2712
|
+
await import_fs_extra3.default.copyFile(srcPath, outPath);
|
|
126
2713
|
publicAssets.push({
|
|
127
2714
|
type: "asset",
|
|
128
2715
|
fileName: file
|
|
@@ -241,25 +2828,25 @@ function findEffectedSteps(changedFile, currentOutput) {
|
|
|
241
2828
|
|
|
242
2829
|
// src/core/utils/building/find-entrypoints.ts
|
|
243
2830
|
var import_path2 = require("path");
|
|
244
|
-
var
|
|
2831
|
+
var import_fs_extra4 = __toESM(require("fs-extra"), 1);
|
|
245
2832
|
var import_minimatch = require("minimatch");
|
|
246
2833
|
var import_linkedom = require("linkedom");
|
|
247
2834
|
var import_json5 = __toESM(require("json5"), 1);
|
|
248
2835
|
var import_fast_glob2 = __toESM(require("fast-glob"), 1);
|
|
249
2836
|
|
|
250
2837
|
// src/core/utils/entrypoints.ts
|
|
251
|
-
var
|
|
2838
|
+
var import_node_path5 = __toESM(require("path"), 1);
|
|
252
2839
|
function getEntrypointName(entrypointsDir, inputPath) {
|
|
253
|
-
const relativePath =
|
|
2840
|
+
const relativePath = import_node_path5.default.relative(entrypointsDir, inputPath);
|
|
254
2841
|
const name = relativePath.split(/[\.\/\\]/, 2)[0];
|
|
255
2842
|
return name;
|
|
256
2843
|
}
|
|
257
2844
|
function getEntrypointOutputFile(entrypoint, ext) {
|
|
258
|
-
return (0,
|
|
2845
|
+
return (0, import_node_path5.resolve)(entrypoint.outputDir, `${entrypoint.name}${ext}`);
|
|
259
2846
|
}
|
|
260
2847
|
function getEntrypointBundlePath(entrypoint, outDir, ext) {
|
|
261
2848
|
return normalizePath(
|
|
262
|
-
(0,
|
|
2849
|
+
(0, import_node_path5.relative)(outDir, getEntrypointOutputFile(entrypoint, ext))
|
|
263
2850
|
);
|
|
264
2851
|
}
|
|
265
2852
|
function resolvePerBrowserOption(option, browser) {
|
|
@@ -294,7 +2881,7 @@ async function findEntrypoints() {
|
|
|
294
2881
|
const inputPath = (0, import_path2.resolve)(wxt.config.entrypointsDir, relativePath);
|
|
295
2882
|
const name = getEntrypointName(wxt.config.entrypointsDir, inputPath);
|
|
296
2883
|
const matchingGlob = pathGlobs.find(
|
|
297
|
-
(
|
|
2884
|
+
(glob6) => (0, import_minimatch.minimatch)(relativePath, glob6)
|
|
298
2885
|
);
|
|
299
2886
|
if (matchingGlob) {
|
|
300
2887
|
const type = PATH_GLOB_TO_TYPE_MAP[matchingGlob];
|
|
@@ -587,7 +3174,7 @@ async function getSidepanelEntrypoint(info) {
|
|
|
587
3174
|
};
|
|
588
3175
|
}
|
|
589
3176
|
async function getHtmlEntrypointOptions(info, keyMap, queries, parsers) {
|
|
590
|
-
const content = await
|
|
3177
|
+
const content = await import_fs_extra4.default.readFile(info.inputPath, "utf-8");
|
|
591
3178
|
const { document } = (0, import_linkedom.parseHTML)(content);
|
|
592
3179
|
const options = {};
|
|
593
3180
|
const defaultQuery = (manifestKey) => document.querySelector(`meta[name='manifest.${manifestKey}']`)?.getAttribute("content");
|
|
@@ -650,7 +3237,7 @@ var CONTENT_SCRIPT_OUT_DIR = "content-scripts";
|
|
|
650
3237
|
|
|
651
3238
|
// src/core/utils/building/generate-wxt-dir.ts
|
|
652
3239
|
var import_unimport = require("unimport");
|
|
653
|
-
var
|
|
3240
|
+
var import_fs_extra5 = __toESM(require("fs-extra"), 1);
|
|
654
3241
|
var import_path3 = require("path");
|
|
655
3242
|
|
|
656
3243
|
// src/core/utils/globals.ts
|
|
@@ -709,7 +3296,7 @@ function getEntrypointGlobals(entrypointName) {
|
|
|
709
3296
|
}
|
|
710
3297
|
|
|
711
3298
|
// src/core/utils/building/generate-wxt-dir.ts
|
|
712
|
-
var
|
|
3299
|
+
var import_node_path6 = __toESM(require("path"), 1);
|
|
713
3300
|
|
|
714
3301
|
// src/core/utils/i18n.ts
|
|
715
3302
|
var predefinedMessages = {
|
|
@@ -750,7 +3337,7 @@ function parseI18nMessages(messagesJson) {
|
|
|
750
3337
|
|
|
751
3338
|
// src/core/utils/building/generate-wxt-dir.ts
|
|
752
3339
|
async function generateTypesDir(entrypoints) {
|
|
753
|
-
await
|
|
3340
|
+
await import_fs_extra5.default.ensureDir(wxt.config.typesDir);
|
|
754
3341
|
const references = [];
|
|
755
3342
|
if (wxt.config.imports !== false) {
|
|
756
3343
|
const unimport2 = (0, import_unimport.createUnimport)(wxt.config.imports);
|
|
@@ -782,7 +3369,7 @@ async function writeImportsEslintFile(unimport2, options) {
|
|
|
782
3369
|
(await unimport2.getImports()).map((i) => i.as ?? i.name).filter(Boolean).sort().forEach((name) => {
|
|
783
3370
|
eslintrc.globals[name] = options.eslintrc.globalsPropValue;
|
|
784
3371
|
});
|
|
785
|
-
await
|
|
3372
|
+
await import_fs_extra5.default.writeJson(options.eslintrc.filePath, eslintrc, { spaces: 2 });
|
|
786
3373
|
}
|
|
787
3374
|
async function writePathsDeclarationFile(entrypoints) {
|
|
788
3375
|
const filePath = (0, import_path3.resolve)(wxt.config.typesDir, "paths.d.ts");
|
|
@@ -792,7 +3379,7 @@ async function writePathsDeclarationFile(entrypoints) {
|
|
|
792
3379
|
wxt.config.outDir,
|
|
793
3380
|
isHtmlEntrypoint(entry) ? ".html" : ".js"
|
|
794
3381
|
)
|
|
795
|
-
).concat(await getPublicFiles()).map(normalizePath).map((
|
|
3382
|
+
).concat(await getPublicFiles()).map(normalizePath).map((path13) => ` | "/${path13}"`).sort().join("\n");
|
|
796
3383
|
const template = `// Generated by wxt
|
|
797
3384
|
import "wxt/browser";
|
|
798
3385
|
|
|
@@ -836,13 +3423,13 @@ declare module "wxt/browser" {
|
|
|
836
3423
|
`;
|
|
837
3424
|
let messages;
|
|
838
3425
|
if (defaultLocale) {
|
|
839
|
-
const defaultLocalePath =
|
|
3426
|
+
const defaultLocalePath = import_node_path6.default.resolve(
|
|
840
3427
|
wxt.config.publicDir,
|
|
841
3428
|
"_locales",
|
|
842
3429
|
defaultLocale,
|
|
843
3430
|
"messages.json"
|
|
844
3431
|
);
|
|
845
|
-
const content = JSON.parse(await
|
|
3432
|
+
const content = JSON.parse(await import_fs_extra5.default.readFile(defaultLocalePath, "utf-8"));
|
|
846
3433
|
messages = parseI18nMessages(content);
|
|
847
3434
|
} else {
|
|
848
3435
|
messages = parseI18nMessages({});
|
|
@@ -874,7 +3461,7 @@ async function writeGlobalsDeclarationFile() {
|
|
|
874
3461
|
"// Generated by wxt",
|
|
875
3462
|
"export {}",
|
|
876
3463
|
"interface ImportMetaEnv {",
|
|
877
|
-
...globals2.map((
|
|
3464
|
+
...globals2.map((global3) => ` readonly ${global3.name}: ${global3.type};`),
|
|
878
3465
|
"}",
|
|
879
3466
|
"interface ImportMeta {",
|
|
880
3467
|
" readonly env: ImportMetaEnv",
|
|
@@ -900,7 +3487,7 @@ async function writeMainDeclarationFile(references) {
|
|
|
900
3487
|
}
|
|
901
3488
|
async function writeTsConfigFile(mainReference) {
|
|
902
3489
|
const dir = wxt.config.wxtDir;
|
|
903
|
-
const getTsconfigPath = (
|
|
3490
|
+
const getTsconfigPath = (path13) => normalizePath((0, import_path3.relative)(dir, path13));
|
|
904
3491
|
const paths = Object.entries(wxt.config.alias).flatMap(([alias, absolutePath]) => {
|
|
905
3492
|
const aliasPath = getTsconfigPath(absolutePath);
|
|
906
3493
|
return [
|
|
@@ -936,23 +3523,23 @@ ${paths}
|
|
|
936
3523
|
|
|
937
3524
|
// src/core/utils/building/resolve-config.ts
|
|
938
3525
|
var import_c12 = require("c12");
|
|
939
|
-
var
|
|
3526
|
+
var import_node_path12 = __toESM(require("path"), 1);
|
|
940
3527
|
|
|
941
3528
|
// src/core/utils/cache.ts
|
|
942
|
-
var
|
|
3529
|
+
var import_fs_extra6 = __toESM(require("fs-extra"), 1);
|
|
943
3530
|
var import_path4 = require("path");
|
|
944
3531
|
function createFsCache(wxtDir) {
|
|
945
3532
|
const getPath = (key) => (0, import_path4.resolve)(wxtDir, "cache", encodeURIComponent(key));
|
|
946
3533
|
return {
|
|
947
3534
|
async set(key, value) {
|
|
948
|
-
const
|
|
949
|
-
await (0,
|
|
950
|
-
await writeFileIfDifferent(
|
|
3535
|
+
const path13 = getPath(key);
|
|
3536
|
+
await (0, import_fs_extra6.ensureDir)((0, import_path4.dirname)(path13));
|
|
3537
|
+
await writeFileIfDifferent(path13, value);
|
|
951
3538
|
},
|
|
952
3539
|
async get(key) {
|
|
953
|
-
const
|
|
3540
|
+
const path13 = getPath(key);
|
|
954
3541
|
try {
|
|
955
|
-
return await
|
|
3542
|
+
return await import_fs_extra6.default.readFile(path13, "utf-8");
|
|
956
3543
|
} catch {
|
|
957
3544
|
return void 0;
|
|
958
3545
|
}
|
|
@@ -965,11 +3552,11 @@ var import_consola = __toESM(require("consola"), 1);
|
|
|
965
3552
|
|
|
966
3553
|
// src/core/builders/vite/plugins/devHtmlPrerender.ts
|
|
967
3554
|
var import_linkedom2 = require("linkedom");
|
|
968
|
-
var
|
|
3555
|
+
var import_node_path7 = require("path");
|
|
969
3556
|
var reactRefreshPreamble = "";
|
|
970
3557
|
function devHtmlPrerender(config) {
|
|
971
3558
|
const htmlReloadId = "@wxt/reload-html";
|
|
972
|
-
const resolvedHtmlReloadId = (0,
|
|
3559
|
+
const resolvedHtmlReloadId = (0, import_node_path7.resolve)(
|
|
973
3560
|
config.wxtModuleDir,
|
|
974
3561
|
"dist/virtual/reload-html.js"
|
|
975
3562
|
);
|
|
@@ -1015,8 +3602,8 @@ function devHtmlPrerender(config) {
|
|
|
1015
3602
|
return;
|
|
1016
3603
|
const originalUrl = `${server.origin}${ctx.path}`;
|
|
1017
3604
|
const name = getEntrypointName(config.entrypointsDir, ctx.filename);
|
|
1018
|
-
const
|
|
1019
|
-
const serverHtml = await server.transformHtml(
|
|
3605
|
+
const url2 = `${server.origin}/${name}.html`;
|
|
3606
|
+
const serverHtml = await server.transformHtml(url2, html, originalUrl);
|
|
1020
3607
|
const { document } = (0, import_linkedom2.parseHTML)(serverHtml);
|
|
1021
3608
|
const reactRefreshScript = Array.from(
|
|
1022
3609
|
document.querySelectorAll("script[type=module]")
|
|
@@ -1074,25 +3661,25 @@ function pointToDevServer(config, server, id, document, querySelector, attr) {
|
|
|
1074
3661
|
);
|
|
1075
3662
|
if (matchingAlias) {
|
|
1076
3663
|
const [alias, replacement] = matchingAlias;
|
|
1077
|
-
resolvedAbsolutePath = (0,
|
|
3664
|
+
resolvedAbsolutePath = (0, import_node_path7.resolve)(
|
|
1078
3665
|
config.root,
|
|
1079
3666
|
src.replace(alias, replacement)
|
|
1080
3667
|
);
|
|
1081
3668
|
} else {
|
|
1082
|
-
resolvedAbsolutePath = (0,
|
|
3669
|
+
resolvedAbsolutePath = (0, import_node_path7.resolve)((0, import_node_path7.dirname)(id), src);
|
|
1083
3670
|
}
|
|
1084
3671
|
if (resolvedAbsolutePath) {
|
|
1085
3672
|
const relativePath = normalizePath(
|
|
1086
|
-
(0,
|
|
3673
|
+
(0, import_node_path7.relative)(config.root, resolvedAbsolutePath)
|
|
1087
3674
|
);
|
|
1088
3675
|
if (relativePath.startsWith(".")) {
|
|
1089
|
-
let
|
|
1090
|
-
if (!
|
|
1091
|
-
|
|
1092
|
-
element.setAttribute(attr, `${server.origin}/@fs${
|
|
3676
|
+
let path13 = normalizePath(resolvedAbsolutePath);
|
|
3677
|
+
if (!path13.startsWith("/"))
|
|
3678
|
+
path13 = "/" + path13;
|
|
3679
|
+
element.setAttribute(attr, `${server.origin}/@fs${path13}`);
|
|
1093
3680
|
} else {
|
|
1094
|
-
const
|
|
1095
|
-
element.setAttribute(attr,
|
|
3681
|
+
const url2 = new URL(relativePath, server.origin);
|
|
3682
|
+
element.setAttribute(attr, url2.href);
|
|
1096
3683
|
}
|
|
1097
3684
|
}
|
|
1098
3685
|
});
|
|
@@ -1163,24 +3750,24 @@ async function isOnline() {
|
|
|
1163
3750
|
const offline = await isOffline();
|
|
1164
3751
|
return !offline;
|
|
1165
3752
|
}
|
|
1166
|
-
async function fetchCached(
|
|
3753
|
+
async function fetchCached(url2, config) {
|
|
1167
3754
|
let content = "";
|
|
1168
3755
|
if (await isOnline()) {
|
|
1169
|
-
const res = await fetch(
|
|
3756
|
+
const res = await fetch(url2);
|
|
1170
3757
|
if (res.status < 300) {
|
|
1171
3758
|
content = await res.text();
|
|
1172
|
-
await config.fsCache.set(
|
|
3759
|
+
await config.fsCache.set(url2, content);
|
|
1173
3760
|
} else {
|
|
1174
3761
|
config.logger.debug(
|
|
1175
|
-
`Failed to download "${
|
|
3762
|
+
`Failed to download "${url2}", falling back to cache...`
|
|
1176
3763
|
);
|
|
1177
3764
|
}
|
|
1178
3765
|
}
|
|
1179
3766
|
if (!content)
|
|
1180
|
-
content = await config.fsCache.get(
|
|
3767
|
+
content = await config.fsCache.get(url2) ?? "";
|
|
1181
3768
|
if (!content)
|
|
1182
3769
|
throw Error(
|
|
1183
|
-
`Offline and "${
|
|
3770
|
+
`Offline and "${url2}" has not been cached. Try again when online.`
|
|
1184
3771
|
);
|
|
1185
3772
|
return content;
|
|
1186
3773
|
}
|
|
@@ -1196,15 +3783,15 @@ function download(config) {
|
|
|
1196
3783
|
async load(id) {
|
|
1197
3784
|
if (!id.startsWith("\0url:"))
|
|
1198
3785
|
return;
|
|
1199
|
-
const
|
|
1200
|
-
return await fetchCached(
|
|
3786
|
+
const url2 = id.replace("\0url:", "");
|
|
3787
|
+
return await fetchCached(url2, config);
|
|
1201
3788
|
}
|
|
1202
3789
|
};
|
|
1203
3790
|
}
|
|
1204
3791
|
|
|
1205
3792
|
// src/core/builders/vite/plugins/multipageMove.ts
|
|
1206
|
-
var
|
|
1207
|
-
var
|
|
3793
|
+
var import_node_path8 = require("path");
|
|
3794
|
+
var import_fs_extra7 = __toESM(require("fs-extra"), 1);
|
|
1208
3795
|
function multipageMove(entrypoints, config) {
|
|
1209
3796
|
return {
|
|
1210
3797
|
name: "wxt:multipage-move",
|
|
@@ -1222,7 +3809,7 @@ function multipageMove(entrypoints, config) {
|
|
|
1222
3809
|
const newBundlePath = getEntrypointBundlePath(
|
|
1223
3810
|
entrypoint,
|
|
1224
3811
|
config.outDir,
|
|
1225
|
-
(0,
|
|
3812
|
+
(0, import_node_path8.extname)(oldBundlePath)
|
|
1226
3813
|
);
|
|
1227
3814
|
if (newBundlePath === oldBundlePath) {
|
|
1228
3815
|
config.logger.debug(
|
|
@@ -1231,10 +3818,10 @@ function multipageMove(entrypoints, config) {
|
|
|
1231
3818
|
);
|
|
1232
3819
|
continue;
|
|
1233
3820
|
}
|
|
1234
|
-
const oldAbsPath = (0,
|
|
1235
|
-
const newAbsPath = (0,
|
|
1236
|
-
await (0,
|
|
1237
|
-
await
|
|
3821
|
+
const oldAbsPath = (0, import_node_path8.resolve)(config.outDir, oldBundlePath);
|
|
3822
|
+
const newAbsPath = (0, import_node_path8.resolve)(config.outDir, newBundlePath);
|
|
3823
|
+
await (0, import_fs_extra7.ensureDir)((0, import_node_path8.dirname)(newAbsPath));
|
|
3824
|
+
await import_fs_extra7.default.move(oldAbsPath, newAbsPath, { overwrite: true });
|
|
1238
3825
|
const renamedChunk = {
|
|
1239
3826
|
...bundle[oldBundlePath],
|
|
1240
3827
|
fileName: newBundlePath
|
|
@@ -1247,16 +3834,16 @@ function multipageMove(entrypoints, config) {
|
|
|
1247
3834
|
};
|
|
1248
3835
|
}
|
|
1249
3836
|
async function removeEmptyDirs(dir) {
|
|
1250
|
-
const files = await
|
|
3837
|
+
const files = await import_fs_extra7.default.readdir(dir);
|
|
1251
3838
|
for (const file of files) {
|
|
1252
|
-
const filePath = (0,
|
|
1253
|
-
const stats = await
|
|
3839
|
+
const filePath = (0, import_node_path8.join)(dir, file);
|
|
3840
|
+
const stats = await import_fs_extra7.default.stat(filePath);
|
|
1254
3841
|
if (stats.isDirectory()) {
|
|
1255
3842
|
await removeEmptyDirs(filePath);
|
|
1256
3843
|
}
|
|
1257
3844
|
}
|
|
1258
3845
|
try {
|
|
1259
|
-
await
|
|
3846
|
+
await import_fs_extra7.default.rmdir(dir);
|
|
1260
3847
|
} catch {
|
|
1261
3848
|
}
|
|
1262
3849
|
}
|
|
@@ -1297,7 +3884,7 @@ function unimport(config) {
|
|
|
1297
3884
|
}
|
|
1298
3885
|
|
|
1299
3886
|
// src/core/builders/vite/plugins/virtualEntrypoint.ts
|
|
1300
|
-
var
|
|
3887
|
+
var import_fs_extra8 = __toESM(require("fs-extra"), 1);
|
|
1301
3888
|
var import_path6 = require("path");
|
|
1302
3889
|
function virtualEntrypoint(type, config) {
|
|
1303
3890
|
const virtualId = `virtual:wxt-${type}?`;
|
|
@@ -1315,7 +3902,7 @@ function virtualEntrypoint(type, config) {
|
|
|
1315
3902
|
if (!id.startsWith(resolvedVirtualId))
|
|
1316
3903
|
return;
|
|
1317
3904
|
const inputPath = id.replace(resolvedVirtualId, "");
|
|
1318
|
-
const template = await
|
|
3905
|
+
const template = await import_fs_extra8.default.readFile(
|
|
1319
3906
|
(0, import_path6.resolve)(config.wxtModuleDir, `dist/virtual/${type}-entrypoint.js`),
|
|
1320
3907
|
"utf-8"
|
|
1321
3908
|
);
|
|
@@ -1383,12 +3970,12 @@ function cssEntrypoints(entrypoint, config) {
|
|
|
1383
3970
|
|
|
1384
3971
|
// src/core/builders/vite/plugins/bundleAnalysis.ts
|
|
1385
3972
|
var import_rollup_plugin_visualizer = require("@aklinker1/rollup-plugin-visualizer");
|
|
1386
|
-
var
|
|
3973
|
+
var import_node_path9 = __toESM(require("path"), 1);
|
|
1387
3974
|
var increment = 0;
|
|
1388
3975
|
function bundleAnalysis(config) {
|
|
1389
3976
|
return (0, import_rollup_plugin_visualizer.visualizer)({
|
|
1390
3977
|
template: "raw-data",
|
|
1391
|
-
filename:
|
|
3978
|
+
filename: import_node_path9.default.resolve(
|
|
1392
3979
|
config.analysis.outputDir,
|
|
1393
3980
|
`${config.analysis.outputName}-${increment++}.json`
|
|
1394
3981
|
)
|
|
@@ -1401,8 +3988,8 @@ function globals(config) {
|
|
|
1401
3988
|
name: "wxt:globals",
|
|
1402
3989
|
config() {
|
|
1403
3990
|
const define = {};
|
|
1404
|
-
for (const
|
|
1405
|
-
define[`import.meta.env.${
|
|
3991
|
+
for (const global3 of getGlobals(config)) {
|
|
3992
|
+
define[`import.meta.env.${global3.name}`] = JSON.stringify(global3.value);
|
|
1406
3993
|
}
|
|
1407
3994
|
return {
|
|
1408
3995
|
define
|
|
@@ -1412,7 +3999,7 @@ function globals(config) {
|
|
|
1412
3999
|
}
|
|
1413
4000
|
|
|
1414
4001
|
// src/core/builders/vite/plugins/webextensionPolyfillMock.ts
|
|
1415
|
-
var
|
|
4002
|
+
var import_node_path10 = __toESM(require("path"), 1);
|
|
1416
4003
|
|
|
1417
4004
|
// src/core/builders/vite/plugins/excludeBrowserPolyfill.ts
|
|
1418
4005
|
function excludeBrowserPolyfill(config) {
|
|
@@ -1445,8 +4032,8 @@ function entrypointGroupGlobals(entrypointGroup) {
|
|
|
1445
4032
|
config() {
|
|
1446
4033
|
const define = {};
|
|
1447
4034
|
let name = Array.isArray(entrypointGroup) ? "html" : entrypointGroup.name;
|
|
1448
|
-
for (const
|
|
1449
|
-
define[`import.meta.env.${
|
|
4035
|
+
for (const global3 of getEntrypointGlobals(name)) {
|
|
4036
|
+
define[`import.meta.env.${global3.name}`] = JSON.stringify(global3.value);
|
|
1450
4037
|
}
|
|
1451
4038
|
return {
|
|
1452
4039
|
define
|
|
@@ -1693,12 +4280,12 @@ function getRollupEntry(entrypoint) {
|
|
|
1693
4280
|
var import_defu = __toESM(require("defu"), 1);
|
|
1694
4281
|
|
|
1695
4282
|
// src/core/utils/package.ts
|
|
1696
|
-
var
|
|
1697
|
-
var
|
|
4283
|
+
var import_node_path11 = require("path");
|
|
4284
|
+
var import_fs_extra9 = __toESM(require("fs-extra"), 1);
|
|
1698
4285
|
async function getPackageJson() {
|
|
1699
|
-
const file = (0,
|
|
4286
|
+
const file = (0, import_node_path11.resolve)(wxt.config.root, "package.json");
|
|
1700
4287
|
try {
|
|
1701
|
-
return await
|
|
4288
|
+
return await import_fs_extra9.default.readJson(file);
|
|
1702
4289
|
} catch (err) {
|
|
1703
4290
|
wxt.logger.debug(
|
|
1704
4291
|
`Failed to read package.json at: ${file}. Returning undefined.`
|
|
@@ -1711,6 +4298,7 @@ function isModuleInstalled(name) {
|
|
|
1711
4298
|
}
|
|
1712
4299
|
|
|
1713
4300
|
// src/core/utils/building/resolve-config.ts
|
|
4301
|
+
var import_fs_extra10 = __toESM(require("fs-extra"), 1);
|
|
1714
4302
|
var import_meta = {};
|
|
1715
4303
|
async function resolveConfig(inlineConfig, command, server) {
|
|
1716
4304
|
let userConfig = {};
|
|
@@ -1737,21 +4325,27 @@ async function resolveConfig(inlineConfig, command, server) {
|
|
|
1737
4325
|
const manifestVersion = mergedConfig.manifestVersion ?? (browser === "firefox" || browser === "safari" ? 2 : 3);
|
|
1738
4326
|
const mode = mergedConfig.mode ?? (command === "build" ? "production" : "development");
|
|
1739
4327
|
const env = { browser, command, manifestVersion, mode };
|
|
1740
|
-
const root =
|
|
4328
|
+
const root = import_node_path12.default.resolve(
|
|
1741
4329
|
inlineConfig.root ?? userConfig.root ?? process.cwd()
|
|
1742
4330
|
);
|
|
1743
|
-
const wxtDir =
|
|
4331
|
+
const wxtDir = import_node_path12.default.resolve(root, ".wxt");
|
|
1744
4332
|
const wxtModuleDir = await resolveWxtModuleDir();
|
|
1745
|
-
const srcDir =
|
|
1746
|
-
const entrypointsDir =
|
|
4333
|
+
const srcDir = import_node_path12.default.resolve(root, mergedConfig.srcDir ?? root);
|
|
4334
|
+
const entrypointsDir = import_node_path12.default.resolve(
|
|
1747
4335
|
srcDir,
|
|
1748
4336
|
mergedConfig.entrypointsDir ?? "entrypoints"
|
|
1749
4337
|
);
|
|
4338
|
+
if (await isDirMissing(entrypointsDir)) {
|
|
4339
|
+
logMissingDir(logger, "Entrypoints", entrypointsDir);
|
|
4340
|
+
}
|
|
1750
4341
|
const filterEntrypoints = !!mergedConfig.filterEntrypoints?.length ? new Set(mergedConfig.filterEntrypoints) : void 0;
|
|
1751
|
-
const publicDir =
|
|
1752
|
-
|
|
1753
|
-
|
|
1754
|
-
|
|
4342
|
+
const publicDir = import_node_path12.default.resolve(srcDir, mergedConfig.publicDir ?? "public");
|
|
4343
|
+
if (await isDirMissing(publicDir)) {
|
|
4344
|
+
logMissingDir(logger, "Public", publicDir);
|
|
4345
|
+
}
|
|
4346
|
+
const typesDir = import_node_path12.default.resolve(wxtDir, "types");
|
|
4347
|
+
const outBaseDir = import_node_path12.default.resolve(root, mergedConfig.outDir ?? ".output");
|
|
4348
|
+
const outDir = import_node_path12.default.resolve(outBaseDir, `${browser}-mv${manifestVersion}`);
|
|
1755
4349
|
const reloadCommand = mergedConfig.dev?.reloadCommand ?? "Alt+R";
|
|
1756
4350
|
const runnerConfig = await (0, import_c12.loadConfig)({
|
|
1757
4351
|
name: "web-ext",
|
|
@@ -1768,14 +4362,14 @@ async function resolveConfig(inlineConfig, command, server) {
|
|
|
1768
4362
|
"~": srcDir,
|
|
1769
4363
|
"@@": root,
|
|
1770
4364
|
"~~": root
|
|
1771
|
-
}).map(([key, value]) => [key,
|
|
4365
|
+
}).map(([key, value]) => [key, import_node_path12.default.resolve(root, value)])
|
|
1772
4366
|
);
|
|
1773
|
-
const analysisOutputFile =
|
|
4367
|
+
const analysisOutputFile = import_node_path12.default.resolve(
|
|
1774
4368
|
root,
|
|
1775
4369
|
mergedConfig.analysis?.outputFile ?? "stats.html"
|
|
1776
4370
|
);
|
|
1777
|
-
const analysisOutputDir =
|
|
1778
|
-
const analysisOutputName =
|
|
4371
|
+
const analysisOutputDir = import_node_path12.default.dirname(analysisOutputFile);
|
|
4372
|
+
const analysisOutputName = import_node_path12.default.parse(analysisOutputFile).name;
|
|
1779
4373
|
const finalConfig = {
|
|
1780
4374
|
browser,
|
|
1781
4375
|
command,
|
|
@@ -1900,6 +4494,7 @@ function mergeInlineConfig(inlineConfig, userConfig) {
|
|
|
1900
4494
|
};
|
|
1901
4495
|
}
|
|
1902
4496
|
function resolveInternalZipConfig(root, mergedConfig) {
|
|
4497
|
+
const downloadedPackagesDir = import_node_path12.default.resolve(root, ".wxt/local_modules");
|
|
1903
4498
|
return {
|
|
1904
4499
|
name: void 0,
|
|
1905
4500
|
sourcesTemplate: "{{name}}-{{version}}-sources.zip",
|
|
@@ -1918,7 +4513,9 @@ function resolveInternalZipConfig(root, mergedConfig) {
|
|
|
1918
4513
|
"**/*.+(test|spec).?(c|m)+(j|t)s?(x)",
|
|
1919
4514
|
// From user
|
|
1920
4515
|
...mergedConfig.zip?.excludeSources ?? []
|
|
1921
|
-
]
|
|
4516
|
+
],
|
|
4517
|
+
downloadPackages: mergedConfig.zip?.downloadPackages ?? [],
|
|
4518
|
+
downloadedPackagesDir
|
|
1922
4519
|
};
|
|
1923
4520
|
}
|
|
1924
4521
|
async function getUnimportOptions(wxtDir, logger, config) {
|
|
@@ -1950,7 +4547,7 @@ async function getUnimportOptions(wxtDir, logger, config) {
|
|
|
1950
4547
|
dirs: ["components", "composables", "hooks", "utils"],
|
|
1951
4548
|
eslintrc: {
|
|
1952
4549
|
enabled,
|
|
1953
|
-
filePath:
|
|
4550
|
+
filePath: import_node_path12.default.resolve(wxtDir, "eslintrc-auto-import.json"),
|
|
1954
4551
|
globalsPropValue: true
|
|
1955
4552
|
}
|
|
1956
4553
|
};
|
|
@@ -1961,7 +4558,17 @@ async function getUnimportOptions(wxtDir, logger, config) {
|
|
|
1961
4558
|
}
|
|
1962
4559
|
async function resolveWxtModuleDir() {
|
|
1963
4560
|
const requireResolve = require?.resolve ?? (await import("module")).default.createRequire(import_meta.url).resolve;
|
|
1964
|
-
return
|
|
4561
|
+
return import_node_path12.default.resolve(requireResolve("wxt"), "../..");
|
|
4562
|
+
}
|
|
4563
|
+
async function isDirMissing(dir) {
|
|
4564
|
+
return !await import_fs_extra10.default.exists(dir);
|
|
4565
|
+
}
|
|
4566
|
+
function logMissingDir(logger, name, expected) {
|
|
4567
|
+
logger.warn(
|
|
4568
|
+
`${name} directory not found: ./${normalizePath(
|
|
4569
|
+
import_node_path12.default.relative(process.cwd(), expected)
|
|
4570
|
+
)}`
|
|
4571
|
+
);
|
|
1965
4572
|
}
|
|
1966
4573
|
|
|
1967
4574
|
// src/core/utils/building/group-entrypoints.ts
|
|
@@ -2006,8 +4613,8 @@ var ENTRY_TYPE_TO_GROUP_MAP = {
|
|
|
2006
4613
|
// src/core/utils/building/import-entrypoint.ts
|
|
2007
4614
|
var import_jiti = __toESM(require("jiti"), 1);
|
|
2008
4615
|
var import_unimport3 = require("unimport");
|
|
2009
|
-
var
|
|
2010
|
-
var
|
|
4616
|
+
var import_fs_extra11 = __toESM(require("fs-extra"), 1);
|
|
4617
|
+
var import_node_path13 = require("path");
|
|
2011
4618
|
|
|
2012
4619
|
// src/core/utils/strings.ts
|
|
2013
4620
|
function kebabCaseAlphanumeric(str) {
|
|
@@ -2028,31 +4635,31 @@ ${noImports}`;
|
|
|
2028
4635
|
|
|
2029
4636
|
// src/core/utils/building/import-entrypoint.ts
|
|
2030
4637
|
var import_esbuild = require("esbuild");
|
|
2031
|
-
var
|
|
4638
|
+
var import_node_url2 = require("url");
|
|
2032
4639
|
var import_meta2 = {};
|
|
2033
|
-
async function importEntrypointFile(
|
|
2034
|
-
wxt.logger.debug("Loading file metadata:",
|
|
2035
|
-
const normalPath = normalizePath(
|
|
4640
|
+
async function importEntrypointFile(path13) {
|
|
4641
|
+
wxt.logger.debug("Loading file metadata:", path13);
|
|
4642
|
+
const normalPath = normalizePath(path13);
|
|
2036
4643
|
const unimport2 = (0, import_unimport3.createUnimport)({
|
|
2037
4644
|
...wxt.config.imports,
|
|
2038
4645
|
// Only allow specific imports, not all from the project
|
|
2039
4646
|
dirs: []
|
|
2040
4647
|
});
|
|
2041
4648
|
await unimport2.init();
|
|
2042
|
-
const text = await
|
|
4649
|
+
const text = await import_fs_extra11.default.readFile(path13, "utf-8");
|
|
2043
4650
|
const textNoImports = removeProjectImportStatements(text);
|
|
2044
4651
|
const { code } = await unimport2.injectImports(textNoImports);
|
|
2045
4652
|
wxt.logger.debug(
|
|
2046
4653
|
["Text:", text, "No imports:", textNoImports, "Code:", code].join("\n")
|
|
2047
4654
|
);
|
|
2048
4655
|
const jiti = (0, import_jiti.default)(
|
|
2049
|
-
typeof __filename !== "undefined" ? __filename : (0,
|
|
4656
|
+
typeof __filename !== "undefined" ? __filename : (0, import_node_url2.fileURLToPath)(import_meta2.url),
|
|
2050
4657
|
{
|
|
2051
4658
|
cache: false,
|
|
2052
4659
|
debug: wxt.config.debug,
|
|
2053
4660
|
esmResolve: true,
|
|
2054
4661
|
alias: {
|
|
2055
|
-
"webextension-polyfill": (0,
|
|
4662
|
+
"webextension-polyfill": (0, import_node_path13.resolve)(
|
|
2056
4663
|
wxt.config.wxtModuleDir,
|
|
2057
4664
|
"dist/virtual/mock-browser.js"
|
|
2058
4665
|
)
|
|
@@ -2082,10 +4689,10 @@ async function importEntrypointFile(path9) {
|
|
|
2082
4689
|
}
|
|
2083
4690
|
);
|
|
2084
4691
|
try {
|
|
2085
|
-
const res = await jiti(
|
|
4692
|
+
const res = await jiti(path13);
|
|
2086
4693
|
return res.default;
|
|
2087
4694
|
} catch (err) {
|
|
2088
|
-
const filePath = (0,
|
|
4695
|
+
const filePath = (0, import_node_path13.relative)(wxt.config.root, path13);
|
|
2089
4696
|
if (err instanceof ReferenceError) {
|
|
2090
4697
|
const variableName = err.message.replace(" is not defined", "");
|
|
2091
4698
|
throw Error(
|
|
@@ -2114,15 +4721,15 @@ function getEsbuildOptions(opts) {
|
|
|
2114
4721
|
|
|
2115
4722
|
// src/core/utils/building/internal-build.ts
|
|
2116
4723
|
var import_picocolors5 = __toESM(require("picocolors"), 1);
|
|
2117
|
-
var
|
|
4724
|
+
var import_fs_extra14 = __toESM(require("fs-extra"), 1);
|
|
2118
4725
|
|
|
2119
4726
|
// src/core/utils/log/printBuildSummary.ts
|
|
2120
4727
|
var import_path7 = require("path");
|
|
2121
4728
|
|
|
2122
4729
|
// src/core/utils/log/printFileList.ts
|
|
2123
|
-
var
|
|
4730
|
+
var import_node_path14 = __toESM(require("path"), 1);
|
|
2124
4731
|
var import_picocolors3 = __toESM(require("picocolors"), 1);
|
|
2125
|
-
var
|
|
4732
|
+
var import_fs_extra12 = __toESM(require("fs-extra"), 1);
|
|
2126
4733
|
var import_filesize = require("filesize");
|
|
2127
4734
|
|
|
2128
4735
|
// src/core/utils/log/printTable.ts
|
|
@@ -2158,12 +4765,12 @@ async function printFileList(log, header, baseDir, files) {
|
|
|
2158
4765
|
const fileRows = await Promise.all(
|
|
2159
4766
|
files.map(async (file, i) => {
|
|
2160
4767
|
const parts = [
|
|
2161
|
-
|
|
2162
|
-
|
|
4768
|
+
import_node_path14.default.relative(process.cwd(), baseDir) + import_node_path14.default.sep,
|
|
4769
|
+
import_node_path14.default.relative(baseDir, file)
|
|
2163
4770
|
];
|
|
2164
4771
|
const prefix = i === files.length - 1 ? " \u2514\u2500" : " \u251C\u2500";
|
|
2165
4772
|
const color = getChunkColor(file);
|
|
2166
|
-
const stats = await
|
|
4773
|
+
const stats = await import_fs_extra12.default.lstat(file);
|
|
2167
4774
|
totalSize += stats.size;
|
|
2168
4775
|
const size = String((0, import_filesize.filesize)(stats.size));
|
|
2169
4776
|
return [
|
|
@@ -2227,7 +4834,7 @@ function getChunkSortWeight(filename) {
|
|
|
2227
4834
|
var import_picocolors4 = __toESM(require("picocolors"), 1);
|
|
2228
4835
|
|
|
2229
4836
|
// package.json
|
|
2230
|
-
var version = "0.17.
|
|
4837
|
+
var version = "0.17.6";
|
|
2231
4838
|
|
|
2232
4839
|
// src/core/utils/log/printHeader.ts
|
|
2233
4840
|
var import_consola2 = require("consola");
|
|
@@ -2236,7 +4843,7 @@ var import_consola2 = require("consola");
|
|
|
2236
4843
|
var import_fast_glob3 = __toESM(require("fast-glob"), 1);
|
|
2237
4844
|
|
|
2238
4845
|
// src/core/utils/manifest.ts
|
|
2239
|
-
var
|
|
4846
|
+
var import_fs_extra13 = __toESM(require("fs-extra"), 1);
|
|
2240
4847
|
var import_path8 = require("path");
|
|
2241
4848
|
|
|
2242
4849
|
// src/core/utils/content-security-policy.ts
|
|
@@ -2347,7 +4954,7 @@ function mapWxtOptionsToRegisteredContentScript(options, js, css) {
|
|
|
2347
4954
|
var import_defu2 = __toESM(require("defu"), 1);
|
|
2348
4955
|
async function writeManifest(manifest, output) {
|
|
2349
4956
|
const str = wxt.config.mode === "production" ? JSON.stringify(manifest) : JSON.stringify(manifest, null, 2);
|
|
2350
|
-
await
|
|
4957
|
+
await import_fs_extra13.default.ensureDir(wxt.config.outDir);
|
|
2351
4958
|
await writeFileIfDifferent((0, import_path8.resolve)(wxt.config.outDir, "manifest.json"), str);
|
|
2352
4959
|
output.publicAssets.unshift({
|
|
2353
4960
|
type: "asset",
|
|
@@ -2403,11 +5010,14 @@ async function generateManifest(entrypoints, buildOutput) {
|
|
|
2403
5010
|
addDevModePermissions(manifest);
|
|
2404
5011
|
wxt.config.transformManifest(manifest);
|
|
2405
5012
|
await wxt.hooks.callHook("build:manifestGenerated", wxt, manifest);
|
|
2406
|
-
if (wxt.config.manifestVersion === 2)
|
|
5013
|
+
if (wxt.config.manifestVersion === 2) {
|
|
2407
5014
|
convertWebAccessibleResourcesToMv2(manifest);
|
|
5015
|
+
convertActionToMv2(manifest);
|
|
5016
|
+
}
|
|
2408
5017
|
if (wxt.config.manifestVersion === 3) {
|
|
2409
5018
|
validateMv3WebAccessbileResources(manifest);
|
|
2410
5019
|
}
|
|
5020
|
+
stripKeys(manifest);
|
|
2411
5021
|
if (manifest.name == null)
|
|
2412
5022
|
throw Error(
|
|
2413
5023
|
"Manifest 'name' is missing. Either:\n1. Set the name in your <rootDir>/package.json\n2. Set a name via the manifest option in your wxt.config.ts"
|
|
@@ -2783,6 +5393,11 @@ function convertWebAccessibleResourcesToMv2(manifest) {
|
|
|
2783
5393
|
)
|
|
2784
5394
|
);
|
|
2785
5395
|
}
|
|
5396
|
+
function convertActionToMv2(manifest) {
|
|
5397
|
+
if (manifest.action == null || manifest.browser_action != null || manifest.page_action != null)
|
|
5398
|
+
return;
|
|
5399
|
+
manifest.browser_action = manifest.action;
|
|
5400
|
+
}
|
|
2786
5401
|
function validateMv3WebAccessbileResources(manifest) {
|
|
2787
5402
|
if (manifest.web_accessible_resources == null)
|
|
2788
5403
|
return;
|
|
@@ -2797,6 +5412,46 @@ function validateMv3WebAccessbileResources(manifest) {
|
|
|
2797
5412
|
);
|
|
2798
5413
|
}
|
|
2799
5414
|
}
|
|
5415
|
+
function stripKeys(manifest) {
|
|
5416
|
+
let keysToRemove = [];
|
|
5417
|
+
if (wxt.config.manifestVersion === 2) {
|
|
5418
|
+
keysToRemove.push(...mv3OnlyKeys);
|
|
5419
|
+
if (wxt.config.browser === "firefox")
|
|
5420
|
+
keysToRemove.push(...firefoxMv3OnlyKeys);
|
|
5421
|
+
} else {
|
|
5422
|
+
keysToRemove.push(...mv2OnlyKeys);
|
|
5423
|
+
}
|
|
5424
|
+
keysToRemove.forEach((key) => {
|
|
5425
|
+
delete manifest[key];
|
|
5426
|
+
});
|
|
5427
|
+
}
|
|
5428
|
+
var mv2OnlyKeys = [
|
|
5429
|
+
"page_action",
|
|
5430
|
+
"browser_action",
|
|
5431
|
+
"automation",
|
|
5432
|
+
"content_capabilities",
|
|
5433
|
+
"converted_from_user_script",
|
|
5434
|
+
"current_locale",
|
|
5435
|
+
"differential_fingerprint",
|
|
5436
|
+
"event_rules",
|
|
5437
|
+
"file_browser_handlers",
|
|
5438
|
+
"file_system_provider_capabilities",
|
|
5439
|
+
"input_components",
|
|
5440
|
+
"nacl_modules",
|
|
5441
|
+
"natively_connectable",
|
|
5442
|
+
"offline_enabled",
|
|
5443
|
+
"platforms",
|
|
5444
|
+
"replacement_web_app",
|
|
5445
|
+
"system_indicator",
|
|
5446
|
+
"user_scripts"
|
|
5447
|
+
];
|
|
5448
|
+
var mv3OnlyKeys = [
|
|
5449
|
+
"action",
|
|
5450
|
+
"export",
|
|
5451
|
+
"optional_host_permissions",
|
|
5452
|
+
"side_panel"
|
|
5453
|
+
];
|
|
5454
|
+
var firefoxMv3OnlyKeys = ["host_permissions"];
|
|
2800
5455
|
|
|
2801
5456
|
// src/core/utils/building/rebuild.ts
|
|
2802
5457
|
async function rebuild(allEntrypoints, entrypointGroups, existingOutput = {
|
|
@@ -2837,7 +5492,7 @@ async function rebuild(allEntrypoints, entrypointGroups, existingOutput = {
|
|
|
2837
5492
|
}
|
|
2838
5493
|
|
|
2839
5494
|
// src/core/utils/building/internal-build.ts
|
|
2840
|
-
var
|
|
5495
|
+
var import_node_path15 = require("path");
|
|
2841
5496
|
|
|
2842
5497
|
// src/core/utils/validation.ts
|
|
2843
5498
|
function validateEntrypoints(entrypoints) {
|
|
@@ -2911,8 +5566,8 @@ async function internalBuild() {
|
|
|
2911
5566
|
)}`
|
|
2912
5567
|
);
|
|
2913
5568
|
const startTime = Date.now();
|
|
2914
|
-
await
|
|
2915
|
-
await
|
|
5569
|
+
await import_fs_extra14.default.rm(wxt.config.outDir, { recursive: true, force: true });
|
|
5570
|
+
await import_fs_extra14.default.ensureDir(wxt.config.outDir);
|
|
2916
5571
|
const entrypoints = await findEntrypoints();
|
|
2917
5572
|
wxt.logger.debug("Detected entrypoints:", entrypoints);
|
|
2918
5573
|
const validationResults = validateEntrypoints(entrypoints);
|
|
@@ -2938,7 +5593,7 @@ async function internalBuild() {
|
|
|
2938
5593
|
}
|
|
2939
5594
|
if (wxt.config.analysis.enabled) {
|
|
2940
5595
|
await combineAnalysisStats();
|
|
2941
|
-
const statsPath = (0,
|
|
5596
|
+
const statsPath = (0, import_node_path15.relative)(wxt.config.root, wxt.config.analysis.outputFile);
|
|
2942
5597
|
wxt.logger.info(
|
|
2943
5598
|
`Analysis complete:
|
|
2944
5599
|
${import_picocolors5.default.gray("\u2514\u2500")} ${import_picocolors5.default.yellow(statsPath)}`
|
|
@@ -2958,7 +5613,7 @@ async function combineAnalysisStats() {
|
|
|
2958
5613
|
filename: wxt.config.analysis.outputFile
|
|
2959
5614
|
});
|
|
2960
5615
|
if (!wxt.config.analysis.keepArtifacts) {
|
|
2961
|
-
await Promise.all(absolutePaths.map((statsFile) =>
|
|
5616
|
+
await Promise.all(absolutePaths.map((statsFile) => import_fs_extra14.default.remove(statsFile)));
|
|
2962
5617
|
}
|
|
2963
5618
|
}
|
|
2964
5619
|
function printValidationResults({
|
|
@@ -2977,7 +5632,7 @@ function printValidationResults({
|
|
|
2977
5632
|
return map;
|
|
2978
5633
|
}, /* @__PURE__ */ new Map());
|
|
2979
5634
|
Array.from(entrypointErrors.entries()).forEach(([entrypoint, errors2]) => {
|
|
2980
|
-
import_consola3.default.log((0,
|
|
5635
|
+
import_consola3.default.log((0, import_node_path15.relative)(cwd, entrypoint.inputPath));
|
|
2981
5636
|
console.log();
|
|
2982
5637
|
errors2.forEach((err) => {
|
|
2983
5638
|
const type = err.type === "error" ? import_picocolors5.default.red("ERROR") : import_picocolors5.default.yellow("WARN");
|
|
@@ -2995,9 +5650,9 @@ async function build(config) {
|
|
|
2995
5650
|
}
|
|
2996
5651
|
|
|
2997
5652
|
// src/core/clean.ts
|
|
2998
|
-
var
|
|
5653
|
+
var import_node_path16 = __toESM(require("path"), 1);
|
|
2999
5654
|
var import_fast_glob4 = __toESM(require("fast-glob"), 1);
|
|
3000
|
-
var
|
|
5655
|
+
var import_fs_extra15 = __toESM(require("fs-extra"), 1);
|
|
3001
5656
|
var import_consola4 = require("consola");
|
|
3002
5657
|
var import_picocolors6 = __toESM(require("picocolors"), 1);
|
|
3003
5658
|
async function clean(root = process.cwd()) {
|
|
@@ -3010,7 +5665,7 @@ async function clean(root = process.cwd()) {
|
|
|
3010
5665
|
];
|
|
3011
5666
|
import_consola4.consola.debug("Looking for:", tempDirs.map(import_picocolors6.default.cyan).join(", "));
|
|
3012
5667
|
const directories = await (0, import_fast_glob4.default)(tempDirs, {
|
|
3013
|
-
cwd:
|
|
5668
|
+
cwd: import_node_path16.default.resolve(root),
|
|
3014
5669
|
absolute: true,
|
|
3015
5670
|
onlyDirectories: true,
|
|
3016
5671
|
deep: 2
|
|
@@ -3021,11 +5676,11 @@ async function clean(root = process.cwd()) {
|
|
|
3021
5676
|
}
|
|
3022
5677
|
import_consola4.consola.debug(
|
|
3023
5678
|
"Found:",
|
|
3024
|
-
directories.map((dir) => import_picocolors6.default.cyan(
|
|
5679
|
+
directories.map((dir) => import_picocolors6.default.cyan(import_node_path16.default.relative(root, dir))).join(", ")
|
|
3025
5680
|
);
|
|
3026
5681
|
for (const directory of directories) {
|
|
3027
|
-
await
|
|
3028
|
-
import_consola4.consola.debug("Deleted " + import_picocolors6.default.cyan(
|
|
5682
|
+
await import_fs_extra15.default.rm(directory, { force: true, recursive: true });
|
|
5683
|
+
import_consola4.consola.debug("Deleted " + import_picocolors6.default.cyan(import_node_path16.default.relative(root, directory)));
|
|
3029
5684
|
}
|
|
3030
5685
|
}
|
|
3031
5686
|
|
|
@@ -3040,12 +5695,12 @@ function defineRunnerConfig(config) {
|
|
|
3040
5695
|
}
|
|
3041
5696
|
|
|
3042
5697
|
// src/core/runners/wsl.ts
|
|
3043
|
-
var
|
|
5698
|
+
var import_node_path17 = require("path");
|
|
3044
5699
|
function createWslRunner() {
|
|
3045
5700
|
return {
|
|
3046
5701
|
async openBrowser() {
|
|
3047
5702
|
wxt.logger.warn(
|
|
3048
|
-
`Cannot open browser when using WSL. Load "${(0,
|
|
5703
|
+
`Cannot open browser when using WSL. Load "${(0, import_node_path17.relative)(
|
|
3049
5704
|
process.cwd(),
|
|
3050
5705
|
wxt.config.outDir
|
|
3051
5706
|
)}" as an unpacked extension manually`
|
|
@@ -3133,12 +5788,12 @@ var DEFAULT_CHROMIUM_PREFS = {
|
|
|
3133
5788
|
};
|
|
3134
5789
|
|
|
3135
5790
|
// src/core/runners/safari.ts
|
|
3136
|
-
var
|
|
5791
|
+
var import_node_path18 = require("path");
|
|
3137
5792
|
function createSafariRunner() {
|
|
3138
5793
|
return {
|
|
3139
5794
|
async openBrowser() {
|
|
3140
5795
|
wxt.logger.warn(
|
|
3141
|
-
`Cannot Safari using web-ext. Load "${(0,
|
|
5796
|
+
`Cannot Safari using web-ext. Load "${(0, import_node_path18.relative)(
|
|
3142
5797
|
process.cwd(),
|
|
3143
5798
|
wxt.config.outDir
|
|
3144
5799
|
)}" as an unpacked extension manually`
|
|
@@ -3150,12 +5805,12 @@ function createSafariRunner() {
|
|
|
3150
5805
|
}
|
|
3151
5806
|
|
|
3152
5807
|
// src/core/runners/manual.ts
|
|
3153
|
-
var
|
|
5808
|
+
var import_node_path19 = require("path");
|
|
3154
5809
|
function createManualRunner() {
|
|
3155
5810
|
return {
|
|
3156
5811
|
async openBrowser() {
|
|
3157
5812
|
wxt.logger.info(
|
|
3158
|
-
`Load "${(0,
|
|
5813
|
+
`Load "${(0, import_node_path19.relative)(
|
|
3159
5814
|
process.cwd(),
|
|
3160
5815
|
wxt.config.outDir
|
|
3161
5816
|
)}" as an unpacked extension manually`
|
|
@@ -3187,7 +5842,7 @@ async function createExtensionRunner() {
|
|
|
3187
5842
|
var import_consola5 = require("consola");
|
|
3188
5843
|
var import_async_mutex = require("async-mutex");
|
|
3189
5844
|
var import_picocolors7 = __toESM(require("picocolors"), 1);
|
|
3190
|
-
var
|
|
5845
|
+
var import_node_path20 = require("path");
|
|
3191
5846
|
async function createServer(inlineConfig) {
|
|
3192
5847
|
const port = await getPort();
|
|
3193
5848
|
const hostname = "localhost";
|
|
@@ -3233,14 +5888,14 @@ async function createServer(inlineConfig) {
|
|
|
3233
5888
|
await closeAndRecreateRunner();
|
|
3234
5889
|
await buildAndOpenBrowser();
|
|
3235
5890
|
},
|
|
3236
|
-
transformHtml(
|
|
3237
|
-
return builderServer.transformHtml(
|
|
5891
|
+
transformHtml(url2, html, originalUrl) {
|
|
5892
|
+
return builderServer.transformHtml(url2, html, originalUrl);
|
|
3238
5893
|
},
|
|
3239
5894
|
reloadContentScript(payload) {
|
|
3240
5895
|
server.ws.send("wxt:reload-content-script", payload);
|
|
3241
5896
|
},
|
|
3242
|
-
reloadPage(
|
|
3243
|
-
server.ws.send("wxt:reload-page",
|
|
5897
|
+
reloadPage(path13) {
|
|
5898
|
+
server.ws.send("wxt:reload-page", path13);
|
|
3244
5899
|
},
|
|
3245
5900
|
reloadExtension() {
|
|
3246
5901
|
server.ws.send("wxt:reload-extension");
|
|
@@ -3271,11 +5926,11 @@ async function getPort() {
|
|
|
3271
5926
|
function createFileReloader(server) {
|
|
3272
5927
|
const fileChangedMutex = new import_async_mutex.Mutex();
|
|
3273
5928
|
const changeQueue = [];
|
|
3274
|
-
return async (event,
|
|
5929
|
+
return async (event, path13) => {
|
|
3275
5930
|
await wxt.reloadConfig();
|
|
3276
|
-
if (
|
|
5931
|
+
if (path13.startsWith(wxt.config.outBaseDir))
|
|
3277
5932
|
return;
|
|
3278
|
-
changeQueue.push([event,
|
|
5933
|
+
changeQueue.push([event, path13]);
|
|
3279
5934
|
await fileChangedMutex.runExclusive(async () => {
|
|
3280
5935
|
if (server.currentOutput == null)
|
|
3281
5936
|
return;
|
|
@@ -3296,7 +5951,7 @@ function createFileReloader(server) {
|
|
|
3296
5951
|
return;
|
|
3297
5952
|
}
|
|
3298
5953
|
wxt.logger.info(
|
|
3299
|
-
`Changed: ${Array.from(new Set(fileChanges)).map((file) => import_picocolors7.default.dim((0,
|
|
5954
|
+
`Changed: ${Array.from(new Set(fileChanges)).map((file) => import_picocolors7.default.dim((0, import_node_path20.relative)(wxt.config.root, file))).join(", ")}`
|
|
3300
5955
|
);
|
|
3301
5956
|
const allEntrypoints = await findEntrypoints();
|
|
3302
5957
|
const { output: newOutput } = await rebuild(
|
|
@@ -3354,8 +6009,8 @@ function reloadContentScripts(steps, server) {
|
|
|
3354
6009
|
function reloadHtmlPages(groups, server) {
|
|
3355
6010
|
const htmlEntries = groups.flat().filter(isHtmlEntrypoint);
|
|
3356
6011
|
htmlEntries.forEach((entry) => {
|
|
3357
|
-
const
|
|
3358
|
-
server.reloadPage(
|
|
6012
|
+
const path13 = getEntrypointBundlePath(entry, wxt.config.outDir, ".html");
|
|
6013
|
+
server.reloadPage(path13);
|
|
3359
6014
|
});
|
|
3360
6015
|
return {
|
|
3361
6016
|
reloadedNames: htmlEntries.map((entry) => entry.name)
|
|
@@ -3385,8 +6040,8 @@ function getExternalOutputDependencies(server) {
|
|
|
3385
6040
|
var import_prompts = __toESM(require("prompts"), 1);
|
|
3386
6041
|
var import_consola6 = require("consola");
|
|
3387
6042
|
var import_giget = require("giget");
|
|
3388
|
-
var
|
|
3389
|
-
var
|
|
6043
|
+
var import_fs_extra16 = __toESM(require("fs-extra"), 1);
|
|
6044
|
+
var import_node_path21 = __toESM(require("path"), 1);
|
|
3390
6045
|
var import_picocolors8 = __toESM(require("picocolors"), 1);
|
|
3391
6046
|
async function initialize(options) {
|
|
3392
6047
|
import_consola6.consola.info("Initalizing new project");
|
|
@@ -3434,7 +6089,7 @@ async function initialize(options) {
|
|
|
3434
6089
|
input.template ??= defaultTemplate;
|
|
3435
6090
|
input.packageManager ??= options.packageManager;
|
|
3436
6091
|
await cloneProject(input);
|
|
3437
|
-
const cdPath =
|
|
6092
|
+
const cdPath = import_node_path21.default.relative(process.cwd(), import_node_path21.default.resolve(input.directory));
|
|
3438
6093
|
console.log();
|
|
3439
6094
|
import_consola6.consola.log(
|
|
3440
6095
|
`\u2728 WXT project created with the ${TEMPLATE_COLORS[input.template.name]?.(input.template.name) ?? input.template.name} template.`
|
|
@@ -3477,9 +6132,9 @@ async function cloneProject({
|
|
|
3477
6132
|
dir: directory,
|
|
3478
6133
|
force: true
|
|
3479
6134
|
});
|
|
3480
|
-
await
|
|
3481
|
-
|
|
3482
|
-
|
|
6135
|
+
await import_fs_extra16.default.move(
|
|
6136
|
+
import_node_path21.default.join(directory, "_gitignore"),
|
|
6137
|
+
import_node_path21.default.join(directory, ".gitignore")
|
|
3483
6138
|
).catch(
|
|
3484
6139
|
(err) => import_consola6.consola.warn("Failed to move _gitignore to .gitignore:", err)
|
|
3485
6140
|
);
|
|
@@ -3511,10 +6166,11 @@ async function prepare(config) {
|
|
|
3511
6166
|
}
|
|
3512
6167
|
|
|
3513
6168
|
// src/core/zip.ts
|
|
3514
|
-
var
|
|
3515
|
-
var
|
|
3516
|
-
var import_fs_extra15 = __toESM(require("fs-extra"), 1);
|
|
6169
|
+
var import_node_path22 = __toESM(require("path"), 1);
|
|
6170
|
+
var import_fs_extra17 = __toESM(require("fs-extra"), 1);
|
|
3517
6171
|
var import_minimatch2 = require("minimatch");
|
|
6172
|
+
var import_jszip = __toESM(require("jszip"), 1);
|
|
6173
|
+
var import_fast_glob5 = __toESM(require("fast-glob"), 1);
|
|
3518
6174
|
async function zip(config) {
|
|
3519
6175
|
await registerWxt("build", config);
|
|
3520
6176
|
const output = await internalBuild();
|
|
@@ -3522,32 +6178,33 @@ async function zip(config) {
|
|
|
3522
6178
|
wxt.logger.info("Zipping extension...");
|
|
3523
6179
|
const zipFiles = [];
|
|
3524
6180
|
const projectName = wxt.config.zip.name ?? kebabCaseAlphanumeric(
|
|
3525
|
-
(await getPackageJson())?.name ||
|
|
6181
|
+
(await getPackageJson())?.name || import_node_path22.default.dirname(process.cwd())
|
|
3526
6182
|
);
|
|
3527
6183
|
const applyTemplate = (template) => template.replaceAll("{{name}}", projectName).replaceAll("{{browser}}", wxt.config.browser).replaceAll(
|
|
3528
6184
|
"{{version}}",
|
|
3529
6185
|
output.manifest.version_name ?? output.manifest.version
|
|
3530
6186
|
).replaceAll("{{manifestVersion}}", `mv${wxt.config.manifestVersion}`);
|
|
3531
|
-
await
|
|
6187
|
+
await import_fs_extra17.default.ensureDir(wxt.config.outBaseDir);
|
|
3532
6188
|
const outZipFilename = applyTemplate(wxt.config.zip.artifactTemplate);
|
|
3533
|
-
const outZipPath =
|
|
3534
|
-
await (
|
|
3535
|
-
saveTo: outZipPath
|
|
3536
|
-
});
|
|
6189
|
+
const outZipPath = import_node_path22.default.resolve(wxt.config.outBaseDir, outZipFilename);
|
|
6190
|
+
await zipDir(wxt.config.outDir, outZipPath);
|
|
3537
6191
|
zipFiles.push(outZipPath);
|
|
3538
6192
|
if (wxt.config.browser === "firefox") {
|
|
6193
|
+
const { overrides, files: downloadedPackages } = await downloadPrivatePackages();
|
|
3539
6194
|
const sourcesZipFilename = applyTemplate(wxt.config.zip.sourcesTemplate);
|
|
3540
|
-
const sourcesZipPath =
|
|
3541
|
-
|
|
3542
|
-
|
|
3543
|
-
|
|
3544
|
-
|
|
3545
|
-
|
|
3546
|
-
|
|
3547
|
-
|
|
3548
|
-
|
|
3549
|
-
|
|
3550
|
-
|
|
6195
|
+
const sourcesZipPath = import_node_path22.default.resolve(
|
|
6196
|
+
wxt.config.outBaseDir,
|
|
6197
|
+
sourcesZipFilename
|
|
6198
|
+
);
|
|
6199
|
+
await zipDir(wxt.config.zip.sourcesRoot, sourcesZipPath, {
|
|
6200
|
+
include: wxt.config.zip.includeSources,
|
|
6201
|
+
exclude: wxt.config.zip.excludeSources,
|
|
6202
|
+
transform(file, content) {
|
|
6203
|
+
if (file.endsWith("package.json")) {
|
|
6204
|
+
return addOverridesToPackageJson(content, overrides);
|
|
6205
|
+
}
|
|
6206
|
+
},
|
|
6207
|
+
additionalFiles: downloadedPackages
|
|
3551
6208
|
});
|
|
3552
6209
|
zipFiles.push(sourcesZipPath);
|
|
3553
6210
|
}
|
|
@@ -3559,6 +6216,81 @@ async function zip(config) {
|
|
|
3559
6216
|
);
|
|
3560
6217
|
return zipFiles;
|
|
3561
6218
|
}
|
|
6219
|
+
async function zipDir(directory, outputPath, options) {
|
|
6220
|
+
const archive = new import_jszip.default();
|
|
6221
|
+
const files = (await (0, import_fast_glob5.default)("**/*", {
|
|
6222
|
+
cwd: directory,
|
|
6223
|
+
// Ignore node_modules, otherwise this glob step takes forever
|
|
6224
|
+
ignore: ["**/node_modules"],
|
|
6225
|
+
onlyFiles: true
|
|
6226
|
+
})).filter((relativePath) => {
|
|
6227
|
+
return wxt.config.zip.includeSources.some(
|
|
6228
|
+
(pattern) => (0, import_minimatch2.minimatch)(relativePath, pattern)
|
|
6229
|
+
) || !wxt.config.zip.excludeSources.some(
|
|
6230
|
+
(pattern) => (0, import_minimatch2.minimatch)(relativePath, pattern)
|
|
6231
|
+
);
|
|
6232
|
+
});
|
|
6233
|
+
const filesToZip = [
|
|
6234
|
+
...files,
|
|
6235
|
+
...(options?.additionalFiles ?? []).map(
|
|
6236
|
+
(file) => import_node_path22.default.relative(directory, file)
|
|
6237
|
+
)
|
|
6238
|
+
];
|
|
6239
|
+
for (const file of filesToZip) {
|
|
6240
|
+
const absolutePath = import_node_path22.default.resolve(directory, file);
|
|
6241
|
+
if (file.endsWith(".json")) {
|
|
6242
|
+
const content = await import_fs_extra17.default.readFile(absolutePath, "utf-8");
|
|
6243
|
+
archive.file(
|
|
6244
|
+
file,
|
|
6245
|
+
await options?.transform?.(file, content) || content
|
|
6246
|
+
);
|
|
6247
|
+
} else {
|
|
6248
|
+
const content = await import_fs_extra17.default.readFile(absolutePath);
|
|
6249
|
+
archive.file(file, content);
|
|
6250
|
+
}
|
|
6251
|
+
}
|
|
6252
|
+
await options?.additionalWork?.(archive);
|
|
6253
|
+
const buffer = await archive.generateAsync({ type: "base64" });
|
|
6254
|
+
await import_fs_extra17.default.writeFile(outputPath, buffer, "base64");
|
|
6255
|
+
}
|
|
6256
|
+
async function downloadPrivatePackages() {
|
|
6257
|
+
const overrides = {};
|
|
6258
|
+
const files = [];
|
|
6259
|
+
if (wxt.config.zip.downloadPackages.length > 0) {
|
|
6260
|
+
const _downloadPackages = new Set(wxt.config.zip.downloadPackages);
|
|
6261
|
+
const allPackages = await wxt.pm.listDependencies({
|
|
6262
|
+
all: true,
|
|
6263
|
+
cwd: wxt.config.root
|
|
6264
|
+
});
|
|
6265
|
+
const downloadPackages = allPackages.filter(
|
|
6266
|
+
(pkg) => _downloadPackages.has(pkg.name)
|
|
6267
|
+
);
|
|
6268
|
+
for (const pkg of downloadPackages) {
|
|
6269
|
+
wxt.logger.info(`Downloading package: ${pkg.name}@${pkg.version}`);
|
|
6270
|
+
const id = `${pkg.name}@${pkg.version}`;
|
|
6271
|
+
const tgzPath = await wxt.pm.downloadDependency(
|
|
6272
|
+
id,
|
|
6273
|
+
wxt.config.zip.downloadedPackagesDir
|
|
6274
|
+
);
|
|
6275
|
+
files.push(tgzPath);
|
|
6276
|
+
overrides[id] = "file://./" + normalizePath(import_node_path22.default.relative(wxt.config.root, tgzPath));
|
|
6277
|
+
}
|
|
6278
|
+
}
|
|
6279
|
+
return { overrides, files };
|
|
6280
|
+
}
|
|
6281
|
+
function addOverridesToPackageJson(content, overrides) {
|
|
6282
|
+
if (Object.keys(overrides).length === 0)
|
|
6283
|
+
return content;
|
|
6284
|
+
const oldPackage = JSON.parse(content);
|
|
6285
|
+
const newPackage = {
|
|
6286
|
+
...oldPackage,
|
|
6287
|
+
[wxt.pm.overridesKey]: {
|
|
6288
|
+
...oldPackage[wxt.pm.overridesKey],
|
|
6289
|
+
...overrides
|
|
6290
|
+
}
|
|
6291
|
+
};
|
|
6292
|
+
return JSON.stringify(newPackage, null, 2);
|
|
6293
|
+
}
|
|
3562
6294
|
// Annotate the CommonJS export names for ESM import in node:
|
|
3563
6295
|
0 && (module.exports = {
|
|
3564
6296
|
build,
|