2463 lines
78 KiB
JavaScript
2463 lines
78 KiB
JavaScript
|
"use strict";
|
||
|
var __create = Object.create;
|
||
|
var __defProp = Object.defineProperty;
|
||
|
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
||
|
var __getOwnPropNames = Object.getOwnPropertyNames;
|
||
|
var __getProtoOf = Object.getPrototypeOf;
|
||
|
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
||
|
var __commonJS = (cb, mod) => function __require() {
|
||
|
return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
|
||
|
};
|
||
|
var __export = (target, all) => {
|
||
|
for (var name in all)
|
||
|
__defProp(target, name, { get: all[name], enumerable: true });
|
||
|
};
|
||
|
var __copyProps = (to, from, except, desc) => {
|
||
|
if (from && typeof from === "object" || typeof from === "function") {
|
||
|
for (let key of __getOwnPropNames(from))
|
||
|
if (!__hasOwnProp.call(to, key) && key !== except)
|
||
|
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
||
|
}
|
||
|
return to;
|
||
|
};
|
||
|
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
||
|
// If the importer is in node compatibility mode or this is not an ESM
|
||
|
// file that has been converted to a CommonJS file using a Babel-
|
||
|
// compatible transform (i.e. "__esModule" has not been set), then set
|
||
|
// "default" to the CommonJS "module.exports" for node compatibility.
|
||
|
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
||
|
mod
|
||
|
));
|
||
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
||
|
|
||
|
// node_modules/tree-kill/index.js
|
||
|
var require_tree_kill = __commonJS({
|
||
|
"node_modules/tree-kill/index.js"(exports2, module2) {
|
||
|
"use strict";
|
||
|
var childProcess = require("child_process");
|
||
|
var spawn2 = childProcess.spawn;
|
||
|
var exec2 = childProcess.exec;
|
||
|
module2.exports = function(pid, signal, callback) {
|
||
|
if (typeof signal === "function" && callback === void 0) {
|
||
|
callback = signal;
|
||
|
signal = void 0;
|
||
|
}
|
||
|
pid = parseInt(pid);
|
||
|
if (Number.isNaN(pid)) {
|
||
|
if (callback) {
|
||
|
return callback(new Error("pid must be a number"));
|
||
|
} else {
|
||
|
throw new Error("pid must be a number");
|
||
|
}
|
||
|
}
|
||
|
var tree = {};
|
||
|
var pidsToProcess = {};
|
||
|
tree[pid] = [];
|
||
|
pidsToProcess[pid] = 1;
|
||
|
switch (process.platform) {
|
||
|
case "win32":
|
||
|
exec2("taskkill /pid " + pid + " /T /F", callback);
|
||
|
break;
|
||
|
case "darwin":
|
||
|
buildProcessTree(pid, tree, pidsToProcess, function(parentPid) {
|
||
|
return spawn2("pgrep", ["-P", parentPid]);
|
||
|
}, function() {
|
||
|
killAll(tree, signal, callback);
|
||
|
});
|
||
|
break;
|
||
|
default:
|
||
|
buildProcessTree(pid, tree, pidsToProcess, function(parentPid) {
|
||
|
return spawn2("ps", ["-o", "pid", "--no-headers", "--ppid", parentPid]);
|
||
|
}, function() {
|
||
|
killAll(tree, signal, callback);
|
||
|
});
|
||
|
break;
|
||
|
}
|
||
|
};
|
||
|
function killAll(tree, signal, callback) {
|
||
|
var killed = {};
|
||
|
try {
|
||
|
Object.keys(tree).forEach(function(pid) {
|
||
|
tree[pid].forEach(function(pidpid) {
|
||
|
if (!killed[pidpid]) {
|
||
|
killPid(pidpid, signal);
|
||
|
killed[pidpid] = 1;
|
||
|
}
|
||
|
});
|
||
|
if (!killed[pid]) {
|
||
|
killPid(pid, signal);
|
||
|
killed[pid] = 1;
|
||
|
}
|
||
|
});
|
||
|
} catch (err) {
|
||
|
if (callback) {
|
||
|
return callback(err);
|
||
|
} else {
|
||
|
throw err;
|
||
|
}
|
||
|
}
|
||
|
if (callback) {
|
||
|
return callback();
|
||
|
}
|
||
|
}
|
||
|
function killPid(pid, signal) {
|
||
|
try {
|
||
|
process.kill(parseInt(pid, 10), signal);
|
||
|
} catch (err) {
|
||
|
if (err.code !== "ESRCH")
|
||
|
throw err;
|
||
|
}
|
||
|
}
|
||
|
function buildProcessTree(parentPid, tree, pidsToProcess, spawnChildProcessesList, cb) {
|
||
|
var ps = spawnChildProcessesList(parentPid);
|
||
|
var allData = "";
|
||
|
ps.stdout.on("data", function(data) {
|
||
|
var data = data.toString("ascii");
|
||
|
allData += data;
|
||
|
});
|
||
|
var onClose = function(code) {
|
||
|
delete pidsToProcess[parentPid];
|
||
|
if (code != 0) {
|
||
|
if (Object.keys(pidsToProcess).length == 0) {
|
||
|
cb();
|
||
|
}
|
||
|
return;
|
||
|
}
|
||
|
allData.match(/\d+/g).forEach(function(pid) {
|
||
|
pid = parseInt(pid, 10);
|
||
|
tree[parentPid].push(pid);
|
||
|
tree[pid] = [];
|
||
|
pidsToProcess[pid] = 1;
|
||
|
buildProcessTree(pid, tree, pidsToProcess, spawnChildProcessesList, cb);
|
||
|
});
|
||
|
};
|
||
|
ps.on("close", onClose);
|
||
|
}
|
||
|
}
|
||
|
});
|
||
|
|
||
|
// node_modules/universalify/index.js
|
||
|
var require_universalify = __commonJS({
|
||
|
"node_modules/universalify/index.js"(exports2) {
|
||
|
"use strict";
|
||
|
exports2.fromCallback = function(fn) {
|
||
|
return Object.defineProperty(function(...args) {
|
||
|
if (typeof args[args.length - 1] === "function")
|
||
|
fn.apply(this, args);
|
||
|
else {
|
||
|
return new Promise((resolve, reject) => {
|
||
|
args.push((err, res) => err != null ? reject(err) : resolve(res));
|
||
|
fn.apply(this, args);
|
||
|
});
|
||
|
}
|
||
|
}, "name", { value: fn.name });
|
||
|
};
|
||
|
exports2.fromPromise = function(fn) {
|
||
|
return Object.defineProperty(function(...args) {
|
||
|
const cb = args[args.length - 1];
|
||
|
if (typeof cb !== "function")
|
||
|
return fn.apply(this, args);
|
||
|
else {
|
||
|
args.pop();
|
||
|
fn.apply(this, args).then((r) => cb(null, r), cb);
|
||
|
}
|
||
|
}, "name", { value: fn.name });
|
||
|
};
|
||
|
}
|
||
|
});
|
||
|
|
||
|
// node_modules/graceful-fs/polyfills.js
|
||
|
var require_polyfills = __commonJS({
|
||
|
"node_modules/graceful-fs/polyfills.js"(exports2, module2) {
|
||
|
var constants = require("constants");
|
||
|
var origCwd = process.cwd;
|
||
|
var cwd = null;
|
||
|
var platform = process.env.GRACEFUL_FS_PLATFORM || process.platform;
|
||
|
process.cwd = function() {
|
||
|
if (!cwd)
|
||
|
cwd = origCwd.call(process);
|
||
|
return cwd;
|
||
|
};
|
||
|
try {
|
||
|
process.cwd();
|
||
|
} catch (er) {
|
||
|
}
|
||
|
if (typeof process.chdir === "function") {
|
||
|
chdir = process.chdir;
|
||
|
process.chdir = function(d) {
|
||
|
cwd = null;
|
||
|
chdir.call(process, d);
|
||
|
};
|
||
|
if (Object.setPrototypeOf)
|
||
|
Object.setPrototypeOf(process.chdir, chdir);
|
||
|
}
|
||
|
var chdir;
|
||
|
module2.exports = patch;
|
||
|
function patch(fs2) {
|
||
|
if (constants.hasOwnProperty("O_SYMLINK") && process.version.match(/^v0\.6\.[0-2]|^v0\.5\./)) {
|
||
|
patchLchmod(fs2);
|
||
|
}
|
||
|
if (!fs2.lutimes) {
|
||
|
patchLutimes(fs2);
|
||
|
}
|
||
|
fs2.chown = chownFix(fs2.chown);
|
||
|
fs2.fchown = chownFix(fs2.fchown);
|
||
|
fs2.lchown = chownFix(fs2.lchown);
|
||
|
fs2.chmod = chmodFix(fs2.chmod);
|
||
|
fs2.fchmod = chmodFix(fs2.fchmod);
|
||
|
fs2.lchmod = chmodFix(fs2.lchmod);
|
||
|
fs2.chownSync = chownFixSync(fs2.chownSync);
|
||
|
fs2.fchownSync = chownFixSync(fs2.fchownSync);
|
||
|
fs2.lchownSync = chownFixSync(fs2.lchownSync);
|
||
|
fs2.chmodSync = chmodFixSync(fs2.chmodSync);
|
||
|
fs2.fchmodSync = chmodFixSync(fs2.fchmodSync);
|
||
|
fs2.lchmodSync = chmodFixSync(fs2.lchmodSync);
|
||
|
fs2.stat = statFix(fs2.stat);
|
||
|
fs2.fstat = statFix(fs2.fstat);
|
||
|
fs2.lstat = statFix(fs2.lstat);
|
||
|
fs2.statSync = statFixSync(fs2.statSync);
|
||
|
fs2.fstatSync = statFixSync(fs2.fstatSync);
|
||
|
fs2.lstatSync = statFixSync(fs2.lstatSync);
|
||
|
if (fs2.chmod && !fs2.lchmod) {
|
||
|
fs2.lchmod = function(path, mode, cb) {
|
||
|
if (cb)
|
||
|
process.nextTick(cb);
|
||
|
};
|
||
|
fs2.lchmodSync = function() {
|
||
|
};
|
||
|
}
|
||
|
if (fs2.chown && !fs2.lchown) {
|
||
|
fs2.lchown = function(path, uid, gid, cb) {
|
||
|
if (cb)
|
||
|
process.nextTick(cb);
|
||
|
};
|
||
|
fs2.lchownSync = function() {
|
||
|
};
|
||
|
}
|
||
|
if (platform === "win32") {
|
||
|
fs2.rename = typeof fs2.rename !== "function" ? fs2.rename : function(fs$rename) {
|
||
|
function rename(from, to, cb) {
|
||
|
var start = Date.now();
|
||
|
var backoff = 0;
|
||
|
fs$rename(from, to, function CB(er) {
|
||
|
if (er && (er.code === "EACCES" || er.code === "EPERM" || er.code === "EBUSY") && Date.now() - start < 6e4) {
|
||
|
setTimeout(function() {
|
||
|
fs2.stat(to, function(stater, st) {
|
||
|
if (stater && stater.code === "ENOENT")
|
||
|
fs$rename(from, to, CB);
|
||
|
else
|
||
|
cb(er);
|
||
|
});
|
||
|
}, backoff);
|
||
|
if (backoff < 100)
|
||
|
backoff += 10;
|
||
|
return;
|
||
|
}
|
||
|
if (cb)
|
||
|
cb(er);
|
||
|
});
|
||
|
}
|
||
|
if (Object.setPrototypeOf)
|
||
|
Object.setPrototypeOf(rename, fs$rename);
|
||
|
return rename;
|
||
|
}(fs2.rename);
|
||
|
}
|
||
|
fs2.read = typeof fs2.read !== "function" ? fs2.read : function(fs$read) {
|
||
|
function read(fd, buffer, offset, length, position, callback_) {
|
||
|
var callback;
|
||
|
if (callback_ && typeof callback_ === "function") {
|
||
|
var eagCounter = 0;
|
||
|
callback = function(er, _, __) {
|
||
|
if (er && er.code === "EAGAIN" && eagCounter < 10) {
|
||
|
eagCounter++;
|
||
|
return fs$read.call(fs2, fd, buffer, offset, length, position, callback);
|
||
|
}
|
||
|
callback_.apply(this, arguments);
|
||
|
};
|
||
|
}
|
||
|
return fs$read.call(fs2, fd, buffer, offset, length, position, callback);
|
||
|
}
|
||
|
if (Object.setPrototypeOf)
|
||
|
Object.setPrototypeOf(read, fs$read);
|
||
|
return read;
|
||
|
}(fs2.read);
|
||
|
fs2.readSync = typeof fs2.readSync !== "function" ? fs2.readSync : /* @__PURE__ */ function(fs$readSync) {
|
||
|
return function(fd, buffer, offset, length, position) {
|
||
|
var eagCounter = 0;
|
||
|
while (true) {
|
||
|
try {
|
||
|
return fs$readSync.call(fs2, fd, buffer, offset, length, position);
|
||
|
} catch (er) {
|
||
|
if (er.code === "EAGAIN" && eagCounter < 10) {
|
||
|
eagCounter++;
|
||
|
continue;
|
||
|
}
|
||
|
throw er;
|
||
|
}
|
||
|
}
|
||
|
};
|
||
|
}(fs2.readSync);
|
||
|
function patchLchmod(fs3) {
|
||
|
fs3.lchmod = function(path, mode, callback) {
|
||
|
fs3.open(
|
||
|
path,
|
||
|
constants.O_WRONLY | constants.O_SYMLINK,
|
||
|
mode,
|
||
|
function(err, fd) {
|
||
|
if (err) {
|
||
|
if (callback)
|
||
|
callback(err);
|
||
|
return;
|
||
|
}
|
||
|
fs3.fchmod(fd, mode, function(err2) {
|
||
|
fs3.close(fd, function(err22) {
|
||
|
if (callback)
|
||
|
callback(err2 || err22);
|
||
|
});
|
||
|
});
|
||
|
}
|
||
|
);
|
||
|
};
|
||
|
fs3.lchmodSync = function(path, mode) {
|
||
|
var fd = fs3.openSync(path, constants.O_WRONLY | constants.O_SYMLINK, mode);
|
||
|
var threw = true;
|
||
|
var ret;
|
||
|
try {
|
||
|
ret = fs3.fchmodSync(fd, mode);
|
||
|
threw = false;
|
||
|
} finally {
|
||
|
if (threw) {
|
||
|
try {
|
||
|
fs3.closeSync(fd);
|
||
|
} catch (er) {
|
||
|
}
|
||
|
} else {
|
||
|
fs3.closeSync(fd);
|
||
|
}
|
||
|
}
|
||
|
return ret;
|
||
|
};
|
||
|
}
|
||
|
function patchLutimes(fs3) {
|
||
|
if (constants.hasOwnProperty("O_SYMLINK") && fs3.futimes) {
|
||
|
fs3.lutimes = function(path, at, mt, cb) {
|
||
|
fs3.open(path, constants.O_SYMLINK, function(er, fd) {
|
||
|
if (er) {
|
||
|
if (cb)
|
||
|
cb(er);
|
||
|
return;
|
||
|
}
|
||
|
fs3.futimes(fd, at, mt, function(er2) {
|
||
|
fs3.close(fd, function(er22) {
|
||
|
if (cb)
|
||
|
cb(er2 || er22);
|
||
|
});
|
||
|
});
|
||
|
});
|
||
|
};
|
||
|
fs3.lutimesSync = function(path, at, mt) {
|
||
|
var fd = fs3.openSync(path, constants.O_SYMLINK);
|
||
|
var ret;
|
||
|
var threw = true;
|
||
|
try {
|
||
|
ret = fs3.futimesSync(fd, at, mt);
|
||
|
threw = false;
|
||
|
} finally {
|
||
|
if (threw) {
|
||
|
try {
|
||
|
fs3.closeSync(fd);
|
||
|
} catch (er) {
|
||
|
}
|
||
|
} else {
|
||
|
fs3.closeSync(fd);
|
||
|
}
|
||
|
}
|
||
|
return ret;
|
||
|
};
|
||
|
} else if (fs3.futimes) {
|
||
|
fs3.lutimes = function(_a, _b, _c, cb) {
|
||
|
if (cb)
|
||
|
process.nextTick(cb);
|
||
|
};
|
||
|
fs3.lutimesSync = function() {
|
||
|
};
|
||
|
}
|
||
|
}
|
||
|
function chmodFix(orig) {
|
||
|
if (!orig)
|
||
|
return orig;
|
||
|
return function(target, mode, cb) {
|
||
|
return orig.call(fs2, target, mode, function(er) {
|
||
|
if (chownErOk(er))
|
||
|
er = null;
|
||
|
if (cb)
|
||
|
cb.apply(this, arguments);
|
||
|
});
|
||
|
};
|
||
|
}
|
||
|
function chmodFixSync(orig) {
|
||
|
if (!orig)
|
||
|
return orig;
|
||
|
return function(target, mode) {
|
||
|
try {
|
||
|
return orig.call(fs2, target, mode);
|
||
|
} catch (er) {
|
||
|
if (!chownErOk(er))
|
||
|
throw er;
|
||
|
}
|
||
|
};
|
||
|
}
|
||
|
function chownFix(orig) {
|
||
|
if (!orig)
|
||
|
return orig;
|
||
|
return function(target, uid, gid, cb) {
|
||
|
return orig.call(fs2, target, uid, gid, function(er) {
|
||
|
if (chownErOk(er))
|
||
|
er = null;
|
||
|
if (cb)
|
||
|
cb.apply(this, arguments);
|
||
|
});
|
||
|
};
|
||
|
}
|
||
|
function chownFixSync(orig) {
|
||
|
if (!orig)
|
||
|
return orig;
|
||
|
return function(target, uid, gid) {
|
||
|
try {
|
||
|
return orig.call(fs2, target, uid, gid);
|
||
|
} catch (er) {
|
||
|
if (!chownErOk(er))
|
||
|
throw er;
|
||
|
}
|
||
|
};
|
||
|
}
|
||
|
function statFix(orig) {
|
||
|
if (!orig)
|
||
|
return orig;
|
||
|
return function(target, options, cb) {
|
||
|
if (typeof options === "function") {
|
||
|
cb = options;
|
||
|
options = null;
|
||
|
}
|
||
|
function callback(er, stats) {
|
||
|
if (stats) {
|
||
|
if (stats.uid < 0)
|
||
|
stats.uid += 4294967296;
|
||
|
if (stats.gid < 0)
|
||
|
stats.gid += 4294967296;
|
||
|
}
|
||
|
if (cb)
|
||
|
cb.apply(this, arguments);
|
||
|
}
|
||
|
return options ? orig.call(fs2, target, options, callback) : orig.call(fs2, target, callback);
|
||
|
};
|
||
|
}
|
||
|
function statFixSync(orig) {
|
||
|
if (!orig)
|
||
|
return orig;
|
||
|
return function(target, options) {
|
||
|
var stats = options ? orig.call(fs2, target, options) : orig.call(fs2, target);
|
||
|
if (stats) {
|
||
|
if (stats.uid < 0)
|
||
|
stats.uid += 4294967296;
|
||
|
if (stats.gid < 0)
|
||
|
stats.gid += 4294967296;
|
||
|
}
|
||
|
return stats;
|
||
|
};
|
||
|
}
|
||
|
function chownErOk(er) {
|
||
|
if (!er)
|
||
|
return true;
|
||
|
if (er.code === "ENOSYS")
|
||
|
return true;
|
||
|
var nonroot = !process.getuid || process.getuid() !== 0;
|
||
|
if (nonroot) {
|
||
|
if (er.code === "EINVAL" || er.code === "EPERM")
|
||
|
return true;
|
||
|
}
|
||
|
return false;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
});
|
||
|
|
||
|
// node_modules/graceful-fs/legacy-streams.js
|
||
|
var require_legacy_streams = __commonJS({
|
||
|
"node_modules/graceful-fs/legacy-streams.js"(exports2, module2) {
|
||
|
var Stream = require("stream").Stream;
|
||
|
module2.exports = legacy;
|
||
|
function legacy(fs2) {
|
||
|
return {
|
||
|
ReadStream,
|
||
|
WriteStream
|
||
|
};
|
||
|
function ReadStream(path, options) {
|
||
|
if (!(this instanceof ReadStream))
|
||
|
return new ReadStream(path, options);
|
||
|
Stream.call(this);
|
||
|
var self = this;
|
||
|
this.path = path;
|
||
|
this.fd = null;
|
||
|
this.readable = true;
|
||
|
this.paused = false;
|
||
|
this.flags = "r";
|
||
|
this.mode = 438;
|
||
|
this.bufferSize = 64 * 1024;
|
||
|
options = options || {};
|
||
|
var keys = Object.keys(options);
|
||
|
for (var index = 0, length = keys.length; index < length; index++) {
|
||
|
var key = keys[index];
|
||
|
this[key] = options[key];
|
||
|
}
|
||
|
if (this.encoding)
|
||
|
this.setEncoding(this.encoding);
|
||
|
if (this.start !== void 0) {
|
||
|
if ("number" !== typeof this.start) {
|
||
|
throw TypeError("start must be a Number");
|
||
|
}
|
||
|
if (this.end === void 0) {
|
||
|
this.end = Infinity;
|
||
|
} else if ("number" !== typeof this.end) {
|
||
|
throw TypeError("end must be a Number");
|
||
|
}
|
||
|
if (this.start > this.end) {
|
||
|
throw new Error("start must be <= end");
|
||
|
}
|
||
|
this.pos = this.start;
|
||
|
}
|
||
|
if (this.fd !== null) {
|
||
|
process.nextTick(function() {
|
||
|
self._read();
|
||
|
});
|
||
|
return;
|
||
|
}
|
||
|
fs2.open(this.path, this.flags, this.mode, function(err, fd) {
|
||
|
if (err) {
|
||
|
self.emit("error", err);
|
||
|
self.readable = false;
|
||
|
return;
|
||
|
}
|
||
|
self.fd = fd;
|
||
|
self.emit("open", fd);
|
||
|
self._read();
|
||
|
});
|
||
|
}
|
||
|
function WriteStream(path, options) {
|
||
|
if (!(this instanceof WriteStream))
|
||
|
return new WriteStream(path, options);
|
||
|
Stream.call(this);
|
||
|
this.path = path;
|
||
|
this.fd = null;
|
||
|
this.writable = true;
|
||
|
this.flags = "w";
|
||
|
this.encoding = "binary";
|
||
|
this.mode = 438;
|
||
|
this.bytesWritten = 0;
|
||
|
options = options || {};
|
||
|
var keys = Object.keys(options);
|
||
|
for (var index = 0, length = keys.length; index < length; index++) {
|
||
|
var key = keys[index];
|
||
|
this[key] = options[key];
|
||
|
}
|
||
|
if (this.start !== void 0) {
|
||
|
if ("number" !== typeof this.start) {
|
||
|
throw TypeError("start must be a Number");
|
||
|
}
|
||
|
if (this.start < 0) {
|
||
|
throw new Error("start must be >= zero");
|
||
|
}
|
||
|
this.pos = this.start;
|
||
|
}
|
||
|
this.busy = false;
|
||
|
this._queue = [];
|
||
|
if (this.fd === null) {
|
||
|
this._open = fs2.open;
|
||
|
this._queue.push([this._open, this.path, this.flags, this.mode, void 0]);
|
||
|
this.flush();
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
});
|
||
|
|
||
|
// node_modules/graceful-fs/clone.js
|
||
|
var require_clone = __commonJS({
|
||
|
"node_modules/graceful-fs/clone.js"(exports2, module2) {
|
||
|
"use strict";
|
||
|
module2.exports = clone;
|
||
|
var getPrototypeOf = Object.getPrototypeOf || function(obj) {
|
||
|
return obj.__proto__;
|
||
|
};
|
||
|
function clone(obj) {
|
||
|
if (obj === null || typeof obj !== "object")
|
||
|
return obj;
|
||
|
if (obj instanceof Object)
|
||
|
var copy = { __proto__: getPrototypeOf(obj) };
|
||
|
else
|
||
|
var copy = /* @__PURE__ */ Object.create(null);
|
||
|
Object.getOwnPropertyNames(obj).forEach(function(key) {
|
||
|
Object.defineProperty(copy, key, Object.getOwnPropertyDescriptor(obj, key));
|
||
|
});
|
||
|
return copy;
|
||
|
}
|
||
|
}
|
||
|
});
|
||
|
|
||
|
// node_modules/graceful-fs/graceful-fs.js
|
||
|
var require_graceful_fs = __commonJS({
|
||
|
"node_modules/graceful-fs/graceful-fs.js"(exports2, module2) {
|
||
|
var fs2 = require("fs");
|
||
|
var polyfills = require_polyfills();
|
||
|
var legacy = require_legacy_streams();
|
||
|
var clone = require_clone();
|
||
|
var util2 = require("util");
|
||
|
var gracefulQueue;
|
||
|
var previousSymbol;
|
||
|
if (typeof Symbol === "function" && typeof Symbol.for === "function") {
|
||
|
gracefulQueue = Symbol.for("graceful-fs.queue");
|
||
|
previousSymbol = Symbol.for("graceful-fs.previous");
|
||
|
} else {
|
||
|
gracefulQueue = "___graceful-fs.queue";
|
||
|
previousSymbol = "___graceful-fs.previous";
|
||
|
}
|
||
|
function noop() {
|
||
|
}
|
||
|
function publishQueue(context, queue2) {
|
||
|
Object.defineProperty(context, gracefulQueue, {
|
||
|
get: function() {
|
||
|
return queue2;
|
||
|
}
|
||
|
});
|
||
|
}
|
||
|
var debug = noop;
|
||
|
if (util2.debuglog)
|
||
|
debug = util2.debuglog("gfs4");
|
||
|
else if (/\bgfs4\b/i.test(process.env.NODE_DEBUG || ""))
|
||
|
debug = function() {
|
||
|
var m = util2.format.apply(util2, arguments);
|
||
|
m = "GFS4: " + m.split(/\n/).join("\nGFS4: ");
|
||
|
console.error(m);
|
||
|
};
|
||
|
if (!fs2[gracefulQueue]) {
|
||
|
queue = global[gracefulQueue] || [];
|
||
|
publishQueue(fs2, queue);
|
||
|
fs2.close = function(fs$close) {
|
||
|
function close(fd, cb) {
|
||
|
return fs$close.call(fs2, fd, function(err) {
|
||
|
if (!err) {
|
||
|
resetQueue();
|
||
|
}
|
||
|
if (typeof cb === "function")
|
||
|
cb.apply(this, arguments);
|
||
|
});
|
||
|
}
|
||
|
Object.defineProperty(close, previousSymbol, {
|
||
|
value: fs$close
|
||
|
});
|
||
|
return close;
|
||
|
}(fs2.close);
|
||
|
fs2.closeSync = function(fs$closeSync) {
|
||
|
function closeSync(fd) {
|
||
|
fs$closeSync.apply(fs2, arguments);
|
||
|
resetQueue();
|
||
|
}
|
||
|
Object.defineProperty(closeSync, previousSymbol, {
|
||
|
value: fs$closeSync
|
||
|
});
|
||
|
return closeSync;
|
||
|
}(fs2.closeSync);
|
||
|
if (/\bgfs4\b/i.test(process.env.NODE_DEBUG || "")) {
|
||
|
process.on("exit", function() {
|
||
|
debug(fs2[gracefulQueue]);
|
||
|
require("assert").equal(fs2[gracefulQueue].length, 0);
|
||
|
});
|
||
|
}
|
||
|
}
|
||
|
var queue;
|
||
|
if (!global[gracefulQueue]) {
|
||
|
publishQueue(global, fs2[gracefulQueue]);
|
||
|
}
|
||
|
module2.exports = patch(clone(fs2));
|
||
|
if (process.env.TEST_GRACEFUL_FS_GLOBAL_PATCH && !fs2.__patched) {
|
||
|
module2.exports = patch(fs2);
|
||
|
fs2.__patched = true;
|
||
|
}
|
||
|
function patch(fs3) {
|
||
|
polyfills(fs3);
|
||
|
fs3.gracefulify = patch;
|
||
|
fs3.createReadStream = createReadStream;
|
||
|
fs3.createWriteStream = createWriteStream;
|
||
|
var fs$readFile = fs3.readFile;
|
||
|
fs3.readFile = readFile;
|
||
|
function readFile(path, options, cb) {
|
||
|
if (typeof options === "function")
|
||
|
cb = options, options = null;
|
||
|
return go$readFile(path, options, cb);
|
||
|
function go$readFile(path2, options2, cb2, startTime) {
|
||
|
return fs$readFile(path2, options2, function(err) {
|
||
|
if (err && (err.code === "EMFILE" || err.code === "ENFILE"))
|
||
|
enqueue([go$readFile, [path2, options2, cb2], err, startTime || Date.now(), Date.now()]);
|
||
|
else {
|
||
|
if (typeof cb2 === "function")
|
||
|
cb2.apply(this, arguments);
|
||
|
}
|
||
|
});
|
||
|
}
|
||
|
}
|
||
|
var fs$writeFile = fs3.writeFile;
|
||
|
fs3.writeFile = writeFile;
|
||
|
function writeFile(path, data, options, cb) {
|
||
|
if (typeof options === "function")
|
||
|
cb = options, options = null;
|
||
|
return go$writeFile(path, data, options, cb);
|
||
|
function go$writeFile(path2, data2, options2, cb2, startTime) {
|
||
|
return fs$writeFile(path2, data2, options2, function(err) {
|
||
|
if (err && (err.code === "EMFILE" || err.code === "ENFILE"))
|
||
|
enqueue([go$writeFile, [path2, data2, options2, cb2], err, startTime || Date.now(), Date.now()]);
|
||
|
else {
|
||
|
if (typeof cb2 === "function")
|
||
|
cb2.apply(this, arguments);
|
||
|
}
|
||
|
});
|
||
|
}
|
||
|
}
|
||
|
var fs$appendFile = fs3.appendFile;
|
||
|
if (fs$appendFile)
|
||
|
fs3.appendFile = appendFile;
|
||
|
function appendFile(path, data, options, cb) {
|
||
|
if (typeof options === "function")
|
||
|
cb = options, options = null;
|
||
|
return go$appendFile(path, data, options, cb);
|
||
|
function go$appendFile(path2, data2, options2, cb2, startTime) {
|
||
|
return fs$appendFile(path2, data2, options2, function(err) {
|
||
|
if (err && (err.code === "EMFILE" || err.code === "ENFILE"))
|
||
|
enqueue([go$appendFile, [path2, data2, options2, cb2], err, startTime || Date.now(), Date.now()]);
|
||
|
else {
|
||
|
if (typeof cb2 === "function")
|
||
|
cb2.apply(this, arguments);
|
||
|
}
|
||
|
});
|
||
|
}
|
||
|
}
|
||
|
var fs$copyFile = fs3.copyFile;
|
||
|
if (fs$copyFile)
|
||
|
fs3.copyFile = copyFile;
|
||
|
function copyFile(src, dest, flags, cb) {
|
||
|
if (typeof flags === "function") {
|
||
|
cb = flags;
|
||
|
flags = 0;
|
||
|
}
|
||
|
return go$copyFile(src, dest, flags, cb);
|
||
|
function go$copyFile(src2, dest2, flags2, cb2, startTime) {
|
||
|
return fs$copyFile(src2, dest2, flags2, function(err) {
|
||
|
if (err && (err.code === "EMFILE" || err.code === "ENFILE"))
|
||
|
enqueue([go$copyFile, [src2, dest2, flags2, cb2], err, startTime || Date.now(), Date.now()]);
|
||
|
else {
|
||
|
if (typeof cb2 === "function")
|
||
|
cb2.apply(this, arguments);
|
||
|
}
|
||
|
});
|
||
|
}
|
||
|
}
|
||
|
var fs$readdir = fs3.readdir;
|
||
|
fs3.readdir = readdir;
|
||
|
var noReaddirOptionVersions = /^v[0-5]\./;
|
||
|
function readdir(path, options, cb) {
|
||
|
if (typeof options === "function")
|
||
|
cb = options, options = null;
|
||
|
var go$readdir = noReaddirOptionVersions.test(process.version) ? function go$readdir2(path2, options2, cb2, startTime) {
|
||
|
return fs$readdir(path2, fs$readdirCallback(
|
||
|
path2,
|
||
|
options2,
|
||
|
cb2,
|
||
|
startTime
|
||
|
));
|
||
|
} : function go$readdir2(path2, options2, cb2, startTime) {
|
||
|
return fs$readdir(path2, options2, fs$readdirCallback(
|
||
|
path2,
|
||
|
options2,
|
||
|
cb2,
|
||
|
startTime
|
||
|
));
|
||
|
};
|
||
|
return go$readdir(path, options, cb);
|
||
|
function fs$readdirCallback(path2, options2, cb2, startTime) {
|
||
|
return function(err, files) {
|
||
|
if (err && (err.code === "EMFILE" || err.code === "ENFILE"))
|
||
|
enqueue([
|
||
|
go$readdir,
|
||
|
[path2, options2, cb2],
|
||
|
err,
|
||
|
startTime || Date.now(),
|
||
|
Date.now()
|
||
|
]);
|
||
|
else {
|
||
|
if (files && files.sort)
|
||
|
files.sort();
|
||
|
if (typeof cb2 === "function")
|
||
|
cb2.call(this, err, files);
|
||
|
}
|
||
|
};
|
||
|
}
|
||
|
}
|
||
|
if (process.version.substr(0, 4) === "v0.8") {
|
||
|
var legStreams = legacy(fs3);
|
||
|
ReadStream = legStreams.ReadStream;
|
||
|
WriteStream = legStreams.WriteStream;
|
||
|
}
|
||
|
var fs$ReadStream = fs3.ReadStream;
|
||
|
if (fs$ReadStream) {
|
||
|
ReadStream.prototype = Object.create(fs$ReadStream.prototype);
|
||
|
ReadStream.prototype.open = ReadStream$open;
|
||
|
}
|
||
|
var fs$WriteStream = fs3.WriteStream;
|
||
|
if (fs$WriteStream) {
|
||
|
WriteStream.prototype = Object.create(fs$WriteStream.prototype);
|
||
|
WriteStream.prototype.open = WriteStream$open;
|
||
|
}
|
||
|
Object.defineProperty(fs3, "ReadStream", {
|
||
|
get: function() {
|
||
|
return ReadStream;
|
||
|
},
|
||
|
set: function(val) {
|
||
|
ReadStream = val;
|
||
|
},
|
||
|
enumerable: true,
|
||
|
configurable: true
|
||
|
});
|
||
|
Object.defineProperty(fs3, "WriteStream", {
|
||
|
get: function() {
|
||
|
return WriteStream;
|
||
|
},
|
||
|
set: function(val) {
|
||
|
WriteStream = val;
|
||
|
},
|
||
|
enumerable: true,
|
||
|
configurable: true
|
||
|
});
|
||
|
var FileReadStream = ReadStream;
|
||
|
Object.defineProperty(fs3, "FileReadStream", {
|
||
|
get: function() {
|
||
|
return FileReadStream;
|
||
|
},
|
||
|
set: function(val) {
|
||
|
FileReadStream = val;
|
||
|
},
|
||
|
enumerable: true,
|
||
|
configurable: true
|
||
|
});
|
||
|
var FileWriteStream = WriteStream;
|
||
|
Object.defineProperty(fs3, "FileWriteStream", {
|
||
|
get: function() {
|
||
|
return FileWriteStream;
|
||
|
},
|
||
|
set: function(val) {
|
||
|
FileWriteStream = val;
|
||
|
},
|
||
|
enumerable: true,
|
||
|
configurable: true
|
||
|
});
|
||
|
function ReadStream(path, options) {
|
||
|
if (this instanceof ReadStream)
|
||
|
return fs$ReadStream.apply(this, arguments), this;
|
||
|
else
|
||
|
return ReadStream.apply(Object.create(ReadStream.prototype), arguments);
|
||
|
}
|
||
|
function ReadStream$open() {
|
||
|
var that = this;
|
||
|
open(that.path, that.flags, that.mode, function(err, fd) {
|
||
|
if (err) {
|
||
|
if (that.autoClose)
|
||
|
that.destroy();
|
||
|
that.emit("error", err);
|
||
|
} else {
|
||
|
that.fd = fd;
|
||
|
that.emit("open", fd);
|
||
|
that.read();
|
||
|
}
|
||
|
});
|
||
|
}
|
||
|
function WriteStream(path, options) {
|
||
|
if (this instanceof WriteStream)
|
||
|
return fs$WriteStream.apply(this, arguments), this;
|
||
|
else
|
||
|
return WriteStream.apply(Object.create(WriteStream.prototype), arguments);
|
||
|
}
|
||
|
function WriteStream$open() {
|
||
|
var that = this;
|
||
|
open(that.path, that.flags, that.mode, function(err, fd) {
|
||
|
if (err) {
|
||
|
that.destroy();
|
||
|
that.emit("error", err);
|
||
|
} else {
|
||
|
that.fd = fd;
|
||
|
that.emit("open", fd);
|
||
|
}
|
||
|
});
|
||
|
}
|
||
|
function createReadStream(path, options) {
|
||
|
return new fs3.ReadStream(path, options);
|
||
|
}
|
||
|
function createWriteStream(path, options) {
|
||
|
return new fs3.WriteStream(path, options);
|
||
|
}
|
||
|
var fs$open = fs3.open;
|
||
|
fs3.open = open;
|
||
|
function open(path, flags, mode, cb) {
|
||
|
if (typeof mode === "function")
|
||
|
cb = mode, mode = null;
|
||
|
return go$open(path, flags, mode, cb);
|
||
|
function go$open(path2, flags2, mode2, cb2, startTime) {
|
||
|
return fs$open(path2, flags2, mode2, function(err, fd) {
|
||
|
if (err && (err.code === "EMFILE" || err.code === "ENFILE"))
|
||
|
enqueue([go$open, [path2, flags2, mode2, cb2], err, startTime || Date.now(), Date.now()]);
|
||
|
else {
|
||
|
if (typeof cb2 === "function")
|
||
|
cb2.apply(this, arguments);
|
||
|
}
|
||
|
});
|
||
|
}
|
||
|
}
|
||
|
return fs3;
|
||
|
}
|
||
|
function enqueue(elem) {
|
||
|
debug("ENQUEUE", elem[0].name, elem[1]);
|
||
|
fs2[gracefulQueue].push(elem);
|
||
|
retry();
|
||
|
}
|
||
|
var retryTimer;
|
||
|
function resetQueue() {
|
||
|
var now = Date.now();
|
||
|
for (var i = 0; i < fs2[gracefulQueue].length; ++i) {
|
||
|
if (fs2[gracefulQueue][i].length > 2) {
|
||
|
fs2[gracefulQueue][i][3] = now;
|
||
|
fs2[gracefulQueue][i][4] = now;
|
||
|
}
|
||
|
}
|
||
|
retry();
|
||
|
}
|
||
|
function retry() {
|
||
|
clearTimeout(retryTimer);
|
||
|
retryTimer = void 0;
|
||
|
if (fs2[gracefulQueue].length === 0)
|
||
|
return;
|
||
|
var elem = fs2[gracefulQueue].shift();
|
||
|
var fn = elem[0];
|
||
|
var args = elem[1];
|
||
|
var err = elem[2];
|
||
|
var startTime = elem[3];
|
||
|
var lastTime = elem[4];
|
||
|
if (startTime === void 0) {
|
||
|
debug("RETRY", fn.name, args);
|
||
|
fn.apply(null, args);
|
||
|
} else if (Date.now() - startTime >= 6e4) {
|
||
|
debug("TIMEOUT", fn.name, args);
|
||
|
var cb = args.pop();
|
||
|
if (typeof cb === "function")
|
||
|
cb.call(null, err);
|
||
|
} else {
|
||
|
var sinceAttempt = Date.now() - lastTime;
|
||
|
var sinceStart = Math.max(lastTime - startTime, 1);
|
||
|
var desiredDelay = Math.min(sinceStart * 1.2, 100);
|
||
|
if (sinceAttempt >= desiredDelay) {
|
||
|
debug("RETRY", fn.name, args);
|
||
|
fn.apply(null, args.concat([startTime]));
|
||
|
} else {
|
||
|
fs2[gracefulQueue].push(elem);
|
||
|
}
|
||
|
}
|
||
|
if (retryTimer === void 0) {
|
||
|
retryTimer = setTimeout(retry, 0);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
});
|
||
|
|
||
|
// node_modules/fs-extra/lib/fs/index.js
|
||
|
var require_fs = __commonJS({
|
||
|
"node_modules/fs-extra/lib/fs/index.js"(exports2) {
|
||
|
"use strict";
|
||
|
var u = require_universalify().fromCallback;
|
||
|
var fs2 = require_graceful_fs();
|
||
|
var api = [
|
||
|
"access",
|
||
|
"appendFile",
|
||
|
"chmod",
|
||
|
"chown",
|
||
|
"close",
|
||
|
"copyFile",
|
||
|
"fchmod",
|
||
|
"fchown",
|
||
|
"fdatasync",
|
||
|
"fstat",
|
||
|
"fsync",
|
||
|
"ftruncate",
|
||
|
"futimes",
|
||
|
"lchmod",
|
||
|
"lchown",
|
||
|
"link",
|
||
|
"lstat",
|
||
|
"mkdir",
|
||
|
"mkdtemp",
|
||
|
"open",
|
||
|
"opendir",
|
||
|
"readdir",
|
||
|
"readFile",
|
||
|
"readlink",
|
||
|
"realpath",
|
||
|
"rename",
|
||
|
"rm",
|
||
|
"rmdir",
|
||
|
"stat",
|
||
|
"symlink",
|
||
|
"truncate",
|
||
|
"unlink",
|
||
|
"utimes",
|
||
|
"writeFile"
|
||
|
].filter((key) => {
|
||
|
return typeof fs2[key] === "function";
|
||
|
});
|
||
|
Object.assign(exports2, fs2);
|
||
|
api.forEach((method) => {
|
||
|
exports2[method] = u(fs2[method]);
|
||
|
});
|
||
|
exports2.exists = function(filename, callback) {
|
||
|
if (typeof callback === "function") {
|
||
|
return fs2.exists(filename, callback);
|
||
|
}
|
||
|
return new Promise((resolve) => {
|
||
|
return fs2.exists(filename, resolve);
|
||
|
});
|
||
|
};
|
||
|
exports2.read = function(fd, buffer, offset, length, position, callback) {
|
||
|
if (typeof callback === "function") {
|
||
|
return fs2.read(fd, buffer, offset, length, position, callback);
|
||
|
}
|
||
|
return new Promise((resolve, reject) => {
|
||
|
fs2.read(fd, buffer, offset, length, position, (err, bytesRead, buffer2) => {
|
||
|
if (err)
|
||
|
return reject(err);
|
||
|
resolve({ bytesRead, buffer: buffer2 });
|
||
|
});
|
||
|
});
|
||
|
};
|
||
|
exports2.write = function(fd, buffer, ...args) {
|
||
|
if (typeof args[args.length - 1] === "function") {
|
||
|
return fs2.write(fd, buffer, ...args);
|
||
|
}
|
||
|
return new Promise((resolve, reject) => {
|
||
|
fs2.write(fd, buffer, ...args, (err, bytesWritten, buffer2) => {
|
||
|
if (err)
|
||
|
return reject(err);
|
||
|
resolve({ bytesWritten, buffer: buffer2 });
|
||
|
});
|
||
|
});
|
||
|
};
|
||
|
exports2.readv = function(fd, buffers, ...args) {
|
||
|
if (typeof args[args.length - 1] === "function") {
|
||
|
return fs2.readv(fd, buffers, ...args);
|
||
|
}
|
||
|
return new Promise((resolve, reject) => {
|
||
|
fs2.readv(fd, buffers, ...args, (err, bytesRead, buffers2) => {
|
||
|
if (err)
|
||
|
return reject(err);
|
||
|
resolve({ bytesRead, buffers: buffers2 });
|
||
|
});
|
||
|
});
|
||
|
};
|
||
|
exports2.writev = function(fd, buffers, ...args) {
|
||
|
if (typeof args[args.length - 1] === "function") {
|
||
|
return fs2.writev(fd, buffers, ...args);
|
||
|
}
|
||
|
return new Promise((resolve, reject) => {
|
||
|
fs2.writev(fd, buffers, ...args, (err, bytesWritten, buffers2) => {
|
||
|
if (err)
|
||
|
return reject(err);
|
||
|
resolve({ bytesWritten, buffers: buffers2 });
|
||
|
});
|
||
|
});
|
||
|
};
|
||
|
if (typeof fs2.realpath.native === "function") {
|
||
|
exports2.realpath.native = u(fs2.realpath.native);
|
||
|
} else {
|
||
|
process.emitWarning(
|
||
|
"fs.realpath.native is not a function. Is fs being monkey-patched?",
|
||
|
"Warning",
|
||
|
"fs-extra-WARN0003"
|
||
|
);
|
||
|
}
|
||
|
}
|
||
|
});
|
||
|
|
||
|
// node_modules/fs-extra/lib/mkdirs/utils.js
|
||
|
var require_utils = __commonJS({
|
||
|
"node_modules/fs-extra/lib/mkdirs/utils.js"(exports2, module2) {
|
||
|
"use strict";
|
||
|
var path = require("path");
|
||
|
module2.exports.checkPath = function checkPath(pth) {
|
||
|
if (process.platform === "win32") {
|
||
|
const pathHasInvalidWinCharacters = /[<>:"|?*]/.test(pth.replace(path.parse(pth).root, ""));
|
||
|
if (pathHasInvalidWinCharacters) {
|
||
|
const error = new Error(`Path contains invalid characters: ${pth}`);
|
||
|
error.code = "EINVAL";
|
||
|
throw error;
|
||
|
}
|
||
|
}
|
||
|
};
|
||
|
}
|
||
|
});
|
||
|
|
||
|
// node_modules/fs-extra/lib/mkdirs/make-dir.js
|
||
|
var require_make_dir = __commonJS({
|
||
|
"node_modules/fs-extra/lib/mkdirs/make-dir.js"(exports2, module2) {
|
||
|
"use strict";
|
||
|
var fs2 = require_fs();
|
||
|
var { checkPath } = require_utils();
|
||
|
var getMode = (options) => {
|
||
|
const defaults = { mode: 511 };
|
||
|
if (typeof options === "number")
|
||
|
return options;
|
||
|
return { ...defaults, ...options }.mode;
|
||
|
};
|
||
|
module2.exports.makeDir = async (dir, options) => {
|
||
|
checkPath(dir);
|
||
|
return fs2.mkdir(dir, {
|
||
|
mode: getMode(options),
|
||
|
recursive: true
|
||
|
});
|
||
|
};
|
||
|
module2.exports.makeDirSync = (dir, options) => {
|
||
|
checkPath(dir);
|
||
|
return fs2.mkdirSync(dir, {
|
||
|
mode: getMode(options),
|
||
|
recursive: true
|
||
|
});
|
||
|
};
|
||
|
}
|
||
|
});
|
||
|
|
||
|
// node_modules/fs-extra/lib/mkdirs/index.js
|
||
|
var require_mkdirs = __commonJS({
|
||
|
"node_modules/fs-extra/lib/mkdirs/index.js"(exports2, module2) {
|
||
|
"use strict";
|
||
|
var u = require_universalify().fromPromise;
|
||
|
var { makeDir: _makeDir, makeDirSync } = require_make_dir();
|
||
|
var makeDir = u(_makeDir);
|
||
|
module2.exports = {
|
||
|
mkdirs: makeDir,
|
||
|
mkdirsSync: makeDirSync,
|
||
|
// alias
|
||
|
mkdirp: makeDir,
|
||
|
mkdirpSync: makeDirSync,
|
||
|
ensureDir: makeDir,
|
||
|
ensureDirSync: makeDirSync
|
||
|
};
|
||
|
}
|
||
|
});
|
||
|
|
||
|
// node_modules/fs-extra/lib/path-exists/index.js
|
||
|
var require_path_exists = __commonJS({
|
||
|
"node_modules/fs-extra/lib/path-exists/index.js"(exports2, module2) {
|
||
|
"use strict";
|
||
|
var u = require_universalify().fromPromise;
|
||
|
var fs2 = require_fs();
|
||
|
function pathExists(path) {
|
||
|
return fs2.access(path).then(() => true).catch(() => false);
|
||
|
}
|
||
|
module2.exports = {
|
||
|
pathExists: u(pathExists),
|
||
|
pathExistsSync: fs2.existsSync
|
||
|
};
|
||
|
}
|
||
|
});
|
||
|
|
||
|
// node_modules/fs-extra/lib/util/utimes.js
|
||
|
var require_utimes = __commonJS({
|
||
|
"node_modules/fs-extra/lib/util/utimes.js"(exports2, module2) {
|
||
|
"use strict";
|
||
|
var fs2 = require_fs();
|
||
|
var u = require_universalify().fromPromise;
|
||
|
async function utimesMillis(path, atime, mtime) {
|
||
|
const fd = await fs2.open(path, "r+");
|
||
|
let closeErr = null;
|
||
|
try {
|
||
|
await fs2.futimes(fd, atime, mtime);
|
||
|
} finally {
|
||
|
try {
|
||
|
await fs2.close(fd);
|
||
|
} catch (e) {
|
||
|
closeErr = e;
|
||
|
}
|
||
|
}
|
||
|
if (closeErr) {
|
||
|
throw closeErr;
|
||
|
}
|
||
|
}
|
||
|
function utimesMillisSync(path, atime, mtime) {
|
||
|
const fd = fs2.openSync(path, "r+");
|
||
|
fs2.futimesSync(fd, atime, mtime);
|
||
|
return fs2.closeSync(fd);
|
||
|
}
|
||
|
module2.exports = {
|
||
|
utimesMillis: u(utimesMillis),
|
||
|
utimesMillisSync
|
||
|
};
|
||
|
}
|
||
|
});
|
||
|
|
||
|
// node_modules/fs-extra/lib/util/stat.js
|
||
|
var require_stat = __commonJS({
|
||
|
"node_modules/fs-extra/lib/util/stat.js"(exports2, module2) {
|
||
|
"use strict";
|
||
|
var fs2 = require_fs();
|
||
|
var path = require("path");
|
||
|
var u = require_universalify().fromPromise;
|
||
|
function getStats(src, dest, opts) {
|
||
|
const statFunc = opts.dereference ? (file) => fs2.stat(file, { bigint: true }) : (file) => fs2.lstat(file, { bigint: true });
|
||
|
return Promise.all([
|
||
|
statFunc(src),
|
||
|
statFunc(dest).catch((err) => {
|
||
|
if (err.code === "ENOENT")
|
||
|
return null;
|
||
|
throw err;
|
||
|
})
|
||
|
]).then(([srcStat, destStat]) => ({ srcStat, destStat }));
|
||
|
}
|
||
|
function getStatsSync(src, dest, opts) {
|
||
|
let destStat;
|
||
|
const statFunc = opts.dereference ? (file) => fs2.statSync(file, { bigint: true }) : (file) => fs2.lstatSync(file, { bigint: true });
|
||
|
const srcStat = statFunc(src);
|
||
|
try {
|
||
|
destStat = statFunc(dest);
|
||
|
} catch (err) {
|
||
|
if (err.code === "ENOENT")
|
||
|
return { srcStat, destStat: null };
|
||
|
throw err;
|
||
|
}
|
||
|
return { srcStat, destStat };
|
||
|
}
|
||
|
async function checkPaths(src, dest, funcName, opts) {
|
||
|
const { srcStat, destStat } = await getStats(src, dest, opts);
|
||
|
if (destStat) {
|
||
|
if (areIdentical(srcStat, destStat)) {
|
||
|
const srcBaseName = path.basename(src);
|
||
|
const destBaseName = path.basename(dest);
|
||
|
if (funcName === "move" && srcBaseName !== destBaseName && srcBaseName.toLowerCase() === destBaseName.toLowerCase()) {
|
||
|
return { srcStat, destStat, isChangingCase: true };
|
||
|
}
|
||
|
throw new Error("Source and destination must not be the same.");
|
||
|
}
|
||
|
if (srcStat.isDirectory() && !destStat.isDirectory()) {
|
||
|
throw new Error(`Cannot overwrite non-directory '${dest}' with directory '${src}'.`);
|
||
|
}
|
||
|
if (!srcStat.isDirectory() && destStat.isDirectory()) {
|
||
|
throw new Error(`Cannot overwrite directory '${dest}' with non-directory '${src}'.`);
|
||
|
}
|
||
|
}
|
||
|
if (srcStat.isDirectory() && isSrcSubdir(src, dest)) {
|
||
|
throw new Error(errMsg(src, dest, funcName));
|
||
|
}
|
||
|
return { srcStat, destStat };
|
||
|
}
|
||
|
function checkPathsSync(src, dest, funcName, opts) {
|
||
|
const { srcStat, destStat } = getStatsSync(src, dest, opts);
|
||
|
if (destStat) {
|
||
|
if (areIdentical(srcStat, destStat)) {
|
||
|
const srcBaseName = path.basename(src);
|
||
|
const destBaseName = path.basename(dest);
|
||
|
if (funcName === "move" && srcBaseName !== destBaseName && srcBaseName.toLowerCase() === destBaseName.toLowerCase()) {
|
||
|
return { srcStat, destStat, isChangingCase: true };
|
||
|
}
|
||
|
throw new Error("Source and destination must not be the same.");
|
||
|
}
|
||
|
if (srcStat.isDirectory() && !destStat.isDirectory()) {
|
||
|
throw new Error(`Cannot overwrite non-directory '${dest}' with directory '${src}'.`);
|
||
|
}
|
||
|
if (!srcStat.isDirectory() && destStat.isDirectory()) {
|
||
|
throw new Error(`Cannot overwrite directory '${dest}' with non-directory '${src}'.`);
|
||
|
}
|
||
|
}
|
||
|
if (srcStat.isDirectory() && isSrcSubdir(src, dest)) {
|
||
|
throw new Error(errMsg(src, dest, funcName));
|
||
|
}
|
||
|
return { srcStat, destStat };
|
||
|
}
|
||
|
async function checkParentPaths(src, srcStat, dest, funcName) {
|
||
|
const srcParent = path.resolve(path.dirname(src));
|
||
|
const destParent = path.resolve(path.dirname(dest));
|
||
|
if (destParent === srcParent || destParent === path.parse(destParent).root)
|
||
|
return;
|
||
|
let destStat;
|
||
|
try {
|
||
|
destStat = await fs2.stat(destParent, { bigint: true });
|
||
|
} catch (err) {
|
||
|
if (err.code === "ENOENT")
|
||
|
return;
|
||
|
throw err;
|
||
|
}
|
||
|
if (areIdentical(srcStat, destStat)) {
|
||
|
throw new Error(errMsg(src, dest, funcName));
|
||
|
}
|
||
|
return checkParentPaths(src, srcStat, destParent, funcName);
|
||
|
}
|
||
|
function checkParentPathsSync(src, srcStat, dest, funcName) {
|
||
|
const srcParent = path.resolve(path.dirname(src));
|
||
|
const destParent = path.resolve(path.dirname(dest));
|
||
|
if (destParent === srcParent || destParent === path.parse(destParent).root)
|
||
|
return;
|
||
|
let destStat;
|
||
|
try {
|
||
|
destStat = fs2.statSync(destParent, { bigint: true });
|
||
|
} catch (err) {
|
||
|
if (err.code === "ENOENT")
|
||
|
return;
|
||
|
throw err;
|
||
|
}
|
||
|
if (areIdentical(srcStat, destStat)) {
|
||
|
throw new Error(errMsg(src, dest, funcName));
|
||
|
}
|
||
|
return checkParentPathsSync(src, srcStat, destParent, funcName);
|
||
|
}
|
||
|
function areIdentical(srcStat, destStat) {
|
||
|
return destStat.ino && destStat.dev && destStat.ino === srcStat.ino && destStat.dev === srcStat.dev;
|
||
|
}
|
||
|
function isSrcSubdir(src, dest) {
|
||
|
const srcArr = path.resolve(src).split(path.sep).filter((i) => i);
|
||
|
const destArr = path.resolve(dest).split(path.sep).filter((i) => i);
|
||
|
return srcArr.every((cur, i) => destArr[i] === cur);
|
||
|
}
|
||
|
function errMsg(src, dest, funcName) {
|
||
|
return `Cannot ${funcName} '${src}' to a subdirectory of itself, '${dest}'.`;
|
||
|
}
|
||
|
module2.exports = {
|
||
|
// checkPaths
|
||
|
checkPaths: u(checkPaths),
|
||
|
checkPathsSync,
|
||
|
// checkParent
|
||
|
checkParentPaths: u(checkParentPaths),
|
||
|
checkParentPathsSync,
|
||
|
// Misc
|
||
|
isSrcSubdir,
|
||
|
areIdentical
|
||
|
};
|
||
|
}
|
||
|
});
|
||
|
|
||
|
// node_modules/fs-extra/lib/copy/copy.js
|
||
|
var require_copy = __commonJS({
|
||
|
"node_modules/fs-extra/lib/copy/copy.js"(exports2, module2) {
|
||
|
"use strict";
|
||
|
var fs2 = require_fs();
|
||
|
var path = require("path");
|
||
|
var { mkdirs } = require_mkdirs();
|
||
|
var { pathExists } = require_path_exists();
|
||
|
var { utimesMillis } = require_utimes();
|
||
|
var stat = require_stat();
|
||
|
async function copy(src, dest, opts = {}) {
|
||
|
if (typeof opts === "function") {
|
||
|
opts = { filter: opts };
|
||
|
}
|
||
|
opts.clobber = "clobber" in opts ? !!opts.clobber : true;
|
||
|
opts.overwrite = "overwrite" in opts ? !!opts.overwrite : opts.clobber;
|
||
|
if (opts.preserveTimestamps && process.arch === "ia32") {
|
||
|
process.emitWarning(
|
||
|
"Using the preserveTimestamps option in 32-bit node is not recommended;\n\n see https://github.com/jprichardson/node-fs-extra/issues/269",
|
||
|
"Warning",
|
||
|
"fs-extra-WARN0001"
|
||
|
);
|
||
|
}
|
||
|
const { srcStat, destStat } = await stat.checkPaths(src, dest, "copy", opts);
|
||
|
await stat.checkParentPaths(src, srcStat, dest, "copy");
|
||
|
const include = await runFilter(src, dest, opts);
|
||
|
if (!include)
|
||
|
return;
|
||
|
const destParent = path.dirname(dest);
|
||
|
const dirExists = await pathExists(destParent);
|
||
|
if (!dirExists) {
|
||
|
await mkdirs(destParent);
|
||
|
}
|
||
|
await getStatsAndPerformCopy(destStat, src, dest, opts);
|
||
|
}
|
||
|
async function runFilter(src, dest, opts) {
|
||
|
if (!opts.filter)
|
||
|
return true;
|
||
|
return opts.filter(src, dest);
|
||
|
}
|
||
|
async function getStatsAndPerformCopy(destStat, src, dest, opts) {
|
||
|
const statFn = opts.dereference ? fs2.stat : fs2.lstat;
|
||
|
const srcStat = await statFn(src);
|
||
|
if (srcStat.isDirectory())
|
||
|
return onDir(srcStat, destStat, src, dest, opts);
|
||
|
if (srcStat.isFile() || srcStat.isCharacterDevice() || srcStat.isBlockDevice())
|
||
|
return onFile(srcStat, destStat, src, dest, opts);
|
||
|
if (srcStat.isSymbolicLink())
|
||
|
return onLink(destStat, src, dest, opts);
|
||
|
if (srcStat.isSocket())
|
||
|
throw new Error(`Cannot copy a socket file: ${src}`);
|
||
|
if (srcStat.isFIFO())
|
||
|
throw new Error(`Cannot copy a FIFO pipe: ${src}`);
|
||
|
throw new Error(`Unknown file: ${src}`);
|
||
|
}
|
||
|
async function onFile(srcStat, destStat, src, dest, opts) {
|
||
|
if (!destStat)
|
||
|
return copyFile(srcStat, src, dest, opts);
|
||
|
if (opts.overwrite) {
|
||
|
await fs2.unlink(dest);
|
||
|
return copyFile(srcStat, src, dest, opts);
|
||
|
}
|
||
|
if (opts.errorOnExist) {
|
||
|
throw new Error(`'${dest}' already exists`);
|
||
|
}
|
||
|
}
|
||
|
async function copyFile(srcStat, src, dest, opts) {
|
||
|
await fs2.copyFile(src, dest);
|
||
|
if (opts.preserveTimestamps) {
|
||
|
if (fileIsNotWritable(srcStat.mode)) {
|
||
|
await makeFileWritable(dest, srcStat.mode);
|
||
|
}
|
||
|
const updatedSrcStat = await fs2.stat(src);
|
||
|
await utimesMillis(dest, updatedSrcStat.atime, updatedSrcStat.mtime);
|
||
|
}
|
||
|
return fs2.chmod(dest, srcStat.mode);
|
||
|
}
|
||
|
function fileIsNotWritable(srcMode) {
|
||
|
return (srcMode & 128) === 0;
|
||
|
}
|
||
|
function makeFileWritable(dest, srcMode) {
|
||
|
return fs2.chmod(dest, srcMode | 128);
|
||
|
}
|
||
|
async function onDir(srcStat, destStat, src, dest, opts) {
|
||
|
if (!destStat) {
|
||
|
await fs2.mkdir(dest);
|
||
|
}
|
||
|
const items = await fs2.readdir(src);
|
||
|
await Promise.all(items.map(async (item) => {
|
||
|
const srcItem = path.join(src, item);
|
||
|
const destItem = path.join(dest, item);
|
||
|
const include = await runFilter(srcItem, destItem, opts);
|
||
|
if (!include)
|
||
|
return;
|
||
|
const { destStat: destStat2 } = await stat.checkPaths(srcItem, destItem, "copy", opts);
|
||
|
return getStatsAndPerformCopy(destStat2, srcItem, destItem, opts);
|
||
|
}));
|
||
|
if (!destStat) {
|
||
|
await fs2.chmod(dest, srcStat.mode);
|
||
|
}
|
||
|
}
|
||
|
async function onLink(destStat, src, dest, opts) {
|
||
|
let resolvedSrc = await fs2.readlink(src);
|
||
|
if (opts.dereference) {
|
||
|
resolvedSrc = path.resolve(process.cwd(), resolvedSrc);
|
||
|
}
|
||
|
if (!destStat) {
|
||
|
return fs2.symlink(resolvedSrc, dest);
|
||
|
}
|
||
|
let resolvedDest = null;
|
||
|
try {
|
||
|
resolvedDest = await fs2.readlink(dest);
|
||
|
} catch (e) {
|
||
|
if (e.code === "EINVAL" || e.code === "UNKNOWN")
|
||
|
return fs2.symlink(resolvedSrc, dest);
|
||
|
throw e;
|
||
|
}
|
||
|
if (opts.dereference) {
|
||
|
resolvedDest = path.resolve(process.cwd(), resolvedDest);
|
||
|
}
|
||
|
if (stat.isSrcSubdir(resolvedSrc, resolvedDest)) {
|
||
|
throw new Error(`Cannot copy '${resolvedSrc}' to a subdirectory of itself, '${resolvedDest}'.`);
|
||
|
}
|
||
|
if (stat.isSrcSubdir(resolvedDest, resolvedSrc)) {
|
||
|
throw new Error(`Cannot overwrite '${resolvedDest}' with '${resolvedSrc}'.`);
|
||
|
}
|
||
|
await fs2.unlink(dest);
|
||
|
return fs2.symlink(resolvedSrc, dest);
|
||
|
}
|
||
|
module2.exports = copy;
|
||
|
}
|
||
|
});
|
||
|
|
||
|
// node_modules/fs-extra/lib/copy/copy-sync.js
|
||
|
var require_copy_sync = __commonJS({
|
||
|
"node_modules/fs-extra/lib/copy/copy-sync.js"(exports2, module2) {
|
||
|
"use strict";
|
||
|
var fs2 = require_graceful_fs();
|
||
|
var path = require("path");
|
||
|
var mkdirsSync = require_mkdirs().mkdirsSync;
|
||
|
var utimesMillisSync = require_utimes().utimesMillisSync;
|
||
|
var stat = require_stat();
|
||
|
function copySync(src, dest, opts) {
|
||
|
if (typeof opts === "function") {
|
||
|
opts = { filter: opts };
|
||
|
}
|
||
|
opts = opts || {};
|
||
|
opts.clobber = "clobber" in opts ? !!opts.clobber : true;
|
||
|
opts.overwrite = "overwrite" in opts ? !!opts.overwrite : opts.clobber;
|
||
|
if (opts.preserveTimestamps && process.arch === "ia32") {
|
||
|
process.emitWarning(
|
||
|
"Using the preserveTimestamps option in 32-bit node is not recommended;\n\n see https://github.com/jprichardson/node-fs-extra/issues/269",
|
||
|
"Warning",
|
||
|
"fs-extra-WARN0002"
|
||
|
);
|
||
|
}
|
||
|
const { srcStat, destStat } = stat.checkPathsSync(src, dest, "copy", opts);
|
||
|
stat.checkParentPathsSync(src, srcStat, dest, "copy");
|
||
|
if (opts.filter && !opts.filter(src, dest))
|
||
|
return;
|
||
|
const destParent = path.dirname(dest);
|
||
|
if (!fs2.existsSync(destParent))
|
||
|
mkdirsSync(destParent);
|
||
|
return getStats(destStat, src, dest, opts);
|
||
|
}
|
||
|
function getStats(destStat, src, dest, opts) {
|
||
|
const statSync = opts.dereference ? fs2.statSync : fs2.lstatSync;
|
||
|
const srcStat = statSync(src);
|
||
|
if (srcStat.isDirectory())
|
||
|
return onDir(srcStat, destStat, src, dest, opts);
|
||
|
else if (srcStat.isFile() || srcStat.isCharacterDevice() || srcStat.isBlockDevice())
|
||
|
return onFile(srcStat, destStat, src, dest, opts);
|
||
|
else if (srcStat.isSymbolicLink())
|
||
|
return onLink(destStat, src, dest, opts);
|
||
|
else if (srcStat.isSocket())
|
||
|
throw new Error(`Cannot copy a socket file: ${src}`);
|
||
|
else if (srcStat.isFIFO())
|
||
|
throw new Error(`Cannot copy a FIFO pipe: ${src}`);
|
||
|
throw new Error(`Unknown file: ${src}`);
|
||
|
}
|
||
|
function onFile(srcStat, destStat, src, dest, opts) {
|
||
|
if (!destStat)
|
||
|
return copyFile(srcStat, src, dest, opts);
|
||
|
return mayCopyFile(srcStat, src, dest, opts);
|
||
|
}
|
||
|
function mayCopyFile(srcStat, src, dest, opts) {
|
||
|
if (opts.overwrite) {
|
||
|
fs2.unlinkSync(dest);
|
||
|
return copyFile(srcStat, src, dest, opts);
|
||
|
} else if (opts.errorOnExist) {
|
||
|
throw new Error(`'${dest}' already exists`);
|
||
|
}
|
||
|
}
|
||
|
function copyFile(srcStat, src, dest, opts) {
|
||
|
fs2.copyFileSync(src, dest);
|
||
|
if (opts.preserveTimestamps)
|
||
|
handleTimestamps(srcStat.mode, src, dest);
|
||
|
return setDestMode(dest, srcStat.mode);
|
||
|
}
|
||
|
function handleTimestamps(srcMode, src, dest) {
|
||
|
if (fileIsNotWritable(srcMode))
|
||
|
makeFileWritable(dest, srcMode);
|
||
|
return setDestTimestamps(src, dest);
|
||
|
}
|
||
|
function fileIsNotWritable(srcMode) {
|
||
|
return (srcMode & 128) === 0;
|
||
|
}
|
||
|
function makeFileWritable(dest, srcMode) {
|
||
|
return setDestMode(dest, srcMode | 128);
|
||
|
}
|
||
|
function setDestMode(dest, srcMode) {
|
||
|
return fs2.chmodSync(dest, srcMode);
|
||
|
}
|
||
|
function setDestTimestamps(src, dest) {
|
||
|
const updatedSrcStat = fs2.statSync(src);
|
||
|
return utimesMillisSync(dest, updatedSrcStat.atime, updatedSrcStat.mtime);
|
||
|
}
|
||
|
function onDir(srcStat, destStat, src, dest, opts) {
|
||
|
if (!destStat)
|
||
|
return mkDirAndCopy(srcStat.mode, src, dest, opts);
|
||
|
return copyDir(src, dest, opts);
|
||
|
}
|
||
|
function mkDirAndCopy(srcMode, src, dest, opts) {
|
||
|
fs2.mkdirSync(dest);
|
||
|
copyDir(src, dest, opts);
|
||
|
return setDestMode(dest, srcMode);
|
||
|
}
|
||
|
function copyDir(src, dest, opts) {
|
||
|
fs2.readdirSync(src).forEach((item) => copyDirItem(item, src, dest, opts));
|
||
|
}
|
||
|
function copyDirItem(item, src, dest, opts) {
|
||
|
const srcItem = path.join(src, item);
|
||
|
const destItem = path.join(dest, item);
|
||
|
if (opts.filter && !opts.filter(srcItem, destItem))
|
||
|
return;
|
||
|
const { destStat } = stat.checkPathsSync(srcItem, destItem, "copy", opts);
|
||
|
return getStats(destStat, srcItem, destItem, opts);
|
||
|
}
|
||
|
function onLink(destStat, src, dest, opts) {
|
||
|
let resolvedSrc = fs2.readlinkSync(src);
|
||
|
if (opts.dereference) {
|
||
|
resolvedSrc = path.resolve(process.cwd(), resolvedSrc);
|
||
|
}
|
||
|
if (!destStat) {
|
||
|
return fs2.symlinkSync(resolvedSrc, dest);
|
||
|
} else {
|
||
|
let resolvedDest;
|
||
|
try {
|
||
|
resolvedDest = fs2.readlinkSync(dest);
|
||
|
} catch (err) {
|
||
|
if (err.code === "EINVAL" || err.code === "UNKNOWN")
|
||
|
return fs2.symlinkSync(resolvedSrc, dest);
|
||
|
throw err;
|
||
|
}
|
||
|
if (opts.dereference) {
|
||
|
resolvedDest = path.resolve(process.cwd(), resolvedDest);
|
||
|
}
|
||
|
if (stat.isSrcSubdir(resolvedSrc, resolvedDest)) {
|
||
|
throw new Error(`Cannot copy '${resolvedSrc}' to a subdirectory of itself, '${resolvedDest}'.`);
|
||
|
}
|
||
|
if (stat.isSrcSubdir(resolvedDest, resolvedSrc)) {
|
||
|
throw new Error(`Cannot overwrite '${resolvedDest}' with '${resolvedSrc}'.`);
|
||
|
}
|
||
|
return copyLink(resolvedSrc, dest);
|
||
|
}
|
||
|
}
|
||
|
function copyLink(resolvedSrc, dest) {
|
||
|
fs2.unlinkSync(dest);
|
||
|
return fs2.symlinkSync(resolvedSrc, dest);
|
||
|
}
|
||
|
module2.exports = copySync;
|
||
|
}
|
||
|
});
|
||
|
|
||
|
// node_modules/fs-extra/lib/copy/index.js
|
||
|
var require_copy2 = __commonJS({
|
||
|
"node_modules/fs-extra/lib/copy/index.js"(exports2, module2) {
|
||
|
"use strict";
|
||
|
var u = require_universalify().fromPromise;
|
||
|
module2.exports = {
|
||
|
copy: u(require_copy()),
|
||
|
copySync: require_copy_sync()
|
||
|
};
|
||
|
}
|
||
|
});
|
||
|
|
||
|
// node_modules/fs-extra/lib/remove/index.js
|
||
|
var require_remove = __commonJS({
|
||
|
"node_modules/fs-extra/lib/remove/index.js"(exports2, module2) {
|
||
|
"use strict";
|
||
|
var fs2 = require_graceful_fs();
|
||
|
var u = require_universalify().fromCallback;
|
||
|
function remove(path, callback) {
|
||
|
fs2.rm(path, { recursive: true, force: true }, callback);
|
||
|
}
|
||
|
function removeSync2(path) {
|
||
|
fs2.rmSync(path, { recursive: true, force: true });
|
||
|
}
|
||
|
module2.exports = {
|
||
|
remove: u(remove),
|
||
|
removeSync: removeSync2
|
||
|
};
|
||
|
}
|
||
|
});
|
||
|
|
||
|
// node_modules/fs-extra/lib/empty/index.js
|
||
|
var require_empty = __commonJS({
|
||
|
"node_modules/fs-extra/lib/empty/index.js"(exports2, module2) {
|
||
|
"use strict";
|
||
|
var u = require_universalify().fromPromise;
|
||
|
var fs2 = require_fs();
|
||
|
var path = require("path");
|
||
|
var mkdir = require_mkdirs();
|
||
|
var remove = require_remove();
|
||
|
var emptyDir = u(async function emptyDir2(dir) {
|
||
|
let items;
|
||
|
try {
|
||
|
items = await fs2.readdir(dir);
|
||
|
} catch {
|
||
|
return mkdir.mkdirs(dir);
|
||
|
}
|
||
|
return Promise.all(items.map((item) => remove.remove(path.join(dir, item))));
|
||
|
});
|
||
|
function emptyDirSync(dir) {
|
||
|
let items;
|
||
|
try {
|
||
|
items = fs2.readdirSync(dir);
|
||
|
} catch {
|
||
|
return mkdir.mkdirsSync(dir);
|
||
|
}
|
||
|
items.forEach((item) => {
|
||
|
item = path.join(dir, item);
|
||
|
remove.removeSync(item);
|
||
|
});
|
||
|
}
|
||
|
module2.exports = {
|
||
|
emptyDirSync,
|
||
|
emptydirSync: emptyDirSync,
|
||
|
emptyDir,
|
||
|
emptydir: emptyDir
|
||
|
};
|
||
|
}
|
||
|
});
|
||
|
|
||
|
// node_modules/fs-extra/lib/ensure/file.js
|
||
|
var require_file = __commonJS({
|
||
|
"node_modules/fs-extra/lib/ensure/file.js"(exports2, module2) {
|
||
|
"use strict";
|
||
|
var u = require_universalify().fromPromise;
|
||
|
var path = require("path");
|
||
|
var fs2 = require_fs();
|
||
|
var mkdir = require_mkdirs();
|
||
|
async function createFile(file) {
|
||
|
let stats;
|
||
|
try {
|
||
|
stats = await fs2.stat(file);
|
||
|
} catch {
|
||
|
}
|
||
|
if (stats && stats.isFile())
|
||
|
return;
|
||
|
const dir = path.dirname(file);
|
||
|
let dirStats = null;
|
||
|
try {
|
||
|
dirStats = await fs2.stat(dir);
|
||
|
} catch (err) {
|
||
|
if (err.code === "ENOENT") {
|
||
|
await mkdir.mkdirs(dir);
|
||
|
await fs2.writeFile(file, "");
|
||
|
return;
|
||
|
} else {
|
||
|
throw err;
|
||
|
}
|
||
|
}
|
||
|
if (dirStats.isDirectory()) {
|
||
|
await fs2.writeFile(file, "");
|
||
|
} else {
|
||
|
await fs2.readdir(dir);
|
||
|
}
|
||
|
}
|
||
|
function createFileSync(file) {
|
||
|
let stats;
|
||
|
try {
|
||
|
stats = fs2.statSync(file);
|
||
|
} catch {
|
||
|
}
|
||
|
if (stats && stats.isFile())
|
||
|
return;
|
||
|
const dir = path.dirname(file);
|
||
|
try {
|
||
|
if (!fs2.statSync(dir).isDirectory()) {
|
||
|
fs2.readdirSync(dir);
|
||
|
}
|
||
|
} catch (err) {
|
||
|
if (err && err.code === "ENOENT")
|
||
|
mkdir.mkdirsSync(dir);
|
||
|
else
|
||
|
throw err;
|
||
|
}
|
||
|
fs2.writeFileSync(file, "");
|
||
|
}
|
||
|
module2.exports = {
|
||
|
createFile: u(createFile),
|
||
|
createFileSync
|
||
|
};
|
||
|
}
|
||
|
});
|
||
|
|
||
|
// node_modules/fs-extra/lib/ensure/link.js
|
||
|
var require_link = __commonJS({
|
||
|
"node_modules/fs-extra/lib/ensure/link.js"(exports2, module2) {
|
||
|
"use strict";
|
||
|
var u = require_universalify().fromPromise;
|
||
|
var path = require("path");
|
||
|
var fs2 = require_fs();
|
||
|
var mkdir = require_mkdirs();
|
||
|
var { pathExists } = require_path_exists();
|
||
|
var { areIdentical } = require_stat();
|
||
|
async function createLink(srcpath, dstpath) {
|
||
|
let dstStat;
|
||
|
try {
|
||
|
dstStat = await fs2.lstat(dstpath);
|
||
|
} catch {
|
||
|
}
|
||
|
let srcStat;
|
||
|
try {
|
||
|
srcStat = await fs2.lstat(srcpath);
|
||
|
} catch (err) {
|
||
|
err.message = err.message.replace("lstat", "ensureLink");
|
||
|
throw err;
|
||
|
}
|
||
|
if (dstStat && areIdentical(srcStat, dstStat))
|
||
|
return;
|
||
|
const dir = path.dirname(dstpath);
|
||
|
const dirExists = await pathExists(dir);
|
||
|
if (!dirExists) {
|
||
|
await mkdir.mkdirs(dir);
|
||
|
}
|
||
|
await fs2.link(srcpath, dstpath);
|
||
|
}
|
||
|
function createLinkSync(srcpath, dstpath) {
|
||
|
let dstStat;
|
||
|
try {
|
||
|
dstStat = fs2.lstatSync(dstpath);
|
||
|
} catch {
|
||
|
}
|
||
|
try {
|
||
|
const srcStat = fs2.lstatSync(srcpath);
|
||
|
if (dstStat && areIdentical(srcStat, dstStat))
|
||
|
return;
|
||
|
} catch (err) {
|
||
|
err.message = err.message.replace("lstat", "ensureLink");
|
||
|
throw err;
|
||
|
}
|
||
|
const dir = path.dirname(dstpath);
|
||
|
const dirExists = fs2.existsSync(dir);
|
||
|
if (dirExists)
|
||
|
return fs2.linkSync(srcpath, dstpath);
|
||
|
mkdir.mkdirsSync(dir);
|
||
|
return fs2.linkSync(srcpath, dstpath);
|
||
|
}
|
||
|
module2.exports = {
|
||
|
createLink: u(createLink),
|
||
|
createLinkSync
|
||
|
};
|
||
|
}
|
||
|
});
|
||
|
|
||
|
// node_modules/fs-extra/lib/ensure/symlink-paths.js
|
||
|
var require_symlink_paths = __commonJS({
|
||
|
"node_modules/fs-extra/lib/ensure/symlink-paths.js"(exports2, module2) {
|
||
|
"use strict";
|
||
|
var path = require("path");
|
||
|
var fs2 = require_fs();
|
||
|
var { pathExists } = require_path_exists();
|
||
|
var u = require_universalify().fromPromise;
|
||
|
async function symlinkPaths(srcpath, dstpath) {
|
||
|
if (path.isAbsolute(srcpath)) {
|
||
|
try {
|
||
|
await fs2.lstat(srcpath);
|
||
|
} catch (err) {
|
||
|
err.message = err.message.replace("lstat", "ensureSymlink");
|
||
|
throw err;
|
||
|
}
|
||
|
return {
|
||
|
toCwd: srcpath,
|
||
|
toDst: srcpath
|
||
|
};
|
||
|
}
|
||
|
const dstdir = path.dirname(dstpath);
|
||
|
const relativeToDst = path.join(dstdir, srcpath);
|
||
|
const exists = await pathExists(relativeToDst);
|
||
|
if (exists) {
|
||
|
return {
|
||
|
toCwd: relativeToDst,
|
||
|
toDst: srcpath
|
||
|
};
|
||
|
}
|
||
|
try {
|
||
|
await fs2.lstat(srcpath);
|
||
|
} catch (err) {
|
||
|
err.message = err.message.replace("lstat", "ensureSymlink");
|
||
|
throw err;
|
||
|
}
|
||
|
return {
|
||
|
toCwd: srcpath,
|
||
|
toDst: path.relative(dstdir, srcpath)
|
||
|
};
|
||
|
}
|
||
|
function symlinkPathsSync(srcpath, dstpath) {
|
||
|
if (path.isAbsolute(srcpath)) {
|
||
|
const exists2 = fs2.existsSync(srcpath);
|
||
|
if (!exists2)
|
||
|
throw new Error("absolute srcpath does not exist");
|
||
|
return {
|
||
|
toCwd: srcpath,
|
||
|
toDst: srcpath
|
||
|
};
|
||
|
}
|
||
|
const dstdir = path.dirname(dstpath);
|
||
|
const relativeToDst = path.join(dstdir, srcpath);
|
||
|
const exists = fs2.existsSync(relativeToDst);
|
||
|
if (exists) {
|
||
|
return {
|
||
|
toCwd: relativeToDst,
|
||
|
toDst: srcpath
|
||
|
};
|
||
|
}
|
||
|
const srcExists = fs2.existsSync(srcpath);
|
||
|
if (!srcExists)
|
||
|
throw new Error("relative srcpath does not exist");
|
||
|
return {
|
||
|
toCwd: srcpath,
|
||
|
toDst: path.relative(dstdir, srcpath)
|
||
|
};
|
||
|
}
|
||
|
module2.exports = {
|
||
|
symlinkPaths: u(symlinkPaths),
|
||
|
symlinkPathsSync
|
||
|
};
|
||
|
}
|
||
|
});
|
||
|
|
||
|
// node_modules/fs-extra/lib/ensure/symlink-type.js
|
||
|
var require_symlink_type = __commonJS({
|
||
|
"node_modules/fs-extra/lib/ensure/symlink-type.js"(exports2, module2) {
|
||
|
"use strict";
|
||
|
var fs2 = require_fs();
|
||
|
var u = require_universalify().fromPromise;
|
||
|
async function symlinkType(srcpath, type) {
|
||
|
if (type)
|
||
|
return type;
|
||
|
let stats;
|
||
|
try {
|
||
|
stats = await fs2.lstat(srcpath);
|
||
|
} catch {
|
||
|
return "file";
|
||
|
}
|
||
|
return stats && stats.isDirectory() ? "dir" : "file";
|
||
|
}
|
||
|
function symlinkTypeSync(srcpath, type) {
|
||
|
if (type)
|
||
|
return type;
|
||
|
let stats;
|
||
|
try {
|
||
|
stats = fs2.lstatSync(srcpath);
|
||
|
} catch {
|
||
|
return "file";
|
||
|
}
|
||
|
return stats && stats.isDirectory() ? "dir" : "file";
|
||
|
}
|
||
|
module2.exports = {
|
||
|
symlinkType: u(symlinkType),
|
||
|
symlinkTypeSync
|
||
|
};
|
||
|
}
|
||
|
});
|
||
|
|
||
|
// node_modules/fs-extra/lib/ensure/symlink.js
|
||
|
var require_symlink = __commonJS({
|
||
|
"node_modules/fs-extra/lib/ensure/symlink.js"(exports2, module2) {
|
||
|
"use strict";
|
||
|
var u = require_universalify().fromPromise;
|
||
|
var path = require("path");
|
||
|
var fs2 = require_fs();
|
||
|
var { mkdirs, mkdirsSync } = require_mkdirs();
|
||
|
var { symlinkPaths, symlinkPathsSync } = require_symlink_paths();
|
||
|
var { symlinkType, symlinkTypeSync } = require_symlink_type();
|
||
|
var { pathExists } = require_path_exists();
|
||
|
var { areIdentical } = require_stat();
|
||
|
async function createSymlink(srcpath, dstpath, type) {
|
||
|
let stats;
|
||
|
try {
|
||
|
stats = await fs2.lstat(dstpath);
|
||
|
} catch {
|
||
|
}
|
||
|
if (stats && stats.isSymbolicLink()) {
|
||
|
const [srcStat, dstStat] = await Promise.all([
|
||
|
fs2.stat(srcpath),
|
||
|
fs2.stat(dstpath)
|
||
|
]);
|
||
|
if (areIdentical(srcStat, dstStat))
|
||
|
return;
|
||
|
}
|
||
|
const relative = await symlinkPaths(srcpath, dstpath);
|
||
|
srcpath = relative.toDst;
|
||
|
const toType = await symlinkType(relative.toCwd, type);
|
||
|
const dir = path.dirname(dstpath);
|
||
|
if (!await pathExists(dir)) {
|
||
|
await mkdirs(dir);
|
||
|
}
|
||
|
return fs2.symlink(srcpath, dstpath, toType);
|
||
|
}
|
||
|
function createSymlinkSync(srcpath, dstpath, type) {
|
||
|
let stats;
|
||
|
try {
|
||
|
stats = fs2.lstatSync(dstpath);
|
||
|
} catch {
|
||
|
}
|
||
|
if (stats && stats.isSymbolicLink()) {
|
||
|
const srcStat = fs2.statSync(srcpath);
|
||
|
const dstStat = fs2.statSync(dstpath);
|
||
|
if (areIdentical(srcStat, dstStat))
|
||
|
return;
|
||
|
}
|
||
|
const relative = symlinkPathsSync(srcpath, dstpath);
|
||
|
srcpath = relative.toDst;
|
||
|
type = symlinkTypeSync(relative.toCwd, type);
|
||
|
const dir = path.dirname(dstpath);
|
||
|
const exists = fs2.existsSync(dir);
|
||
|
if (exists)
|
||
|
return fs2.symlinkSync(srcpath, dstpath, type);
|
||
|
mkdirsSync(dir);
|
||
|
return fs2.symlinkSync(srcpath, dstpath, type);
|
||
|
}
|
||
|
module2.exports = {
|
||
|
createSymlink: u(createSymlink),
|
||
|
createSymlinkSync
|
||
|
};
|
||
|
}
|
||
|
});
|
||
|
|
||
|
// node_modules/fs-extra/lib/ensure/index.js
|
||
|
var require_ensure = __commonJS({
|
||
|
"node_modules/fs-extra/lib/ensure/index.js"(exports2, module2) {
|
||
|
"use strict";
|
||
|
var { createFile, createFileSync } = require_file();
|
||
|
var { createLink, createLinkSync } = require_link();
|
||
|
var { createSymlink, createSymlinkSync } = require_symlink();
|
||
|
module2.exports = {
|
||
|
// file
|
||
|
createFile,
|
||
|
createFileSync,
|
||
|
ensureFile: createFile,
|
||
|
ensureFileSync: createFileSync,
|
||
|
// link
|
||
|
createLink,
|
||
|
createLinkSync,
|
||
|
ensureLink: createLink,
|
||
|
ensureLinkSync: createLinkSync,
|
||
|
// symlink
|
||
|
createSymlink,
|
||
|
createSymlinkSync,
|
||
|
ensureSymlink: createSymlink,
|
||
|
ensureSymlinkSync: createSymlinkSync
|
||
|
};
|
||
|
}
|
||
|
});
|
||
|
|
||
|
// node_modules/jsonfile/utils.js
|
||
|
var require_utils2 = __commonJS({
|
||
|
"node_modules/jsonfile/utils.js"(exports2, module2) {
|
||
|
function stringify(obj, { EOL = "\n", finalEOL = true, replacer = null, spaces } = {}) {
|
||
|
const EOF = finalEOL ? EOL : "";
|
||
|
const str = JSON.stringify(obj, replacer, spaces);
|
||
|
return str.replace(/\n/g, EOL) + EOF;
|
||
|
}
|
||
|
function stripBom(content) {
|
||
|
if (Buffer.isBuffer(content))
|
||
|
content = content.toString("utf8");
|
||
|
return content.replace(/^\uFEFF/, "");
|
||
|
}
|
||
|
module2.exports = { stringify, stripBom };
|
||
|
}
|
||
|
});
|
||
|
|
||
|
// node_modules/jsonfile/index.js
|
||
|
var require_jsonfile = __commonJS({
|
||
|
"node_modules/jsonfile/index.js"(exports2, module2) {
|
||
|
var _fs;
|
||
|
try {
|
||
|
_fs = require_graceful_fs();
|
||
|
} catch (_) {
|
||
|
_fs = require("fs");
|
||
|
}
|
||
|
var universalify = require_universalify();
|
||
|
var { stringify, stripBom } = require_utils2();
|
||
|
async function _readFile(file, options = {}) {
|
||
|
if (typeof options === "string") {
|
||
|
options = { encoding: options };
|
||
|
}
|
||
|
const fs2 = options.fs || _fs;
|
||
|
const shouldThrow = "throws" in options ? options.throws : true;
|
||
|
let data = await universalify.fromCallback(fs2.readFile)(file, options);
|
||
|
data = stripBom(data);
|
||
|
let obj;
|
||
|
try {
|
||
|
obj = JSON.parse(data, options ? options.reviver : null);
|
||
|
} catch (err) {
|
||
|
if (shouldThrow) {
|
||
|
err.message = `${file}: ${err.message}`;
|
||
|
throw err;
|
||
|
} else {
|
||
|
return null;
|
||
|
}
|
||
|
}
|
||
|
return obj;
|
||
|
}
|
||
|
var readFile = universalify.fromPromise(_readFile);
|
||
|
function readFileSync(file, options = {}) {
|
||
|
if (typeof options === "string") {
|
||
|
options = { encoding: options };
|
||
|
}
|
||
|
const fs2 = options.fs || _fs;
|
||
|
const shouldThrow = "throws" in options ? options.throws : true;
|
||
|
try {
|
||
|
let content = fs2.readFileSync(file, options);
|
||
|
content = stripBom(content);
|
||
|
return JSON.parse(content, options.reviver);
|
||
|
} catch (err) {
|
||
|
if (shouldThrow) {
|
||
|
err.message = `${file}: ${err.message}`;
|
||
|
throw err;
|
||
|
} else {
|
||
|
return null;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
async function _writeFile(file, obj, options = {}) {
|
||
|
const fs2 = options.fs || _fs;
|
||
|
const str = stringify(obj, options);
|
||
|
await universalify.fromCallback(fs2.writeFile)(file, str, options);
|
||
|
}
|
||
|
var writeFile = universalify.fromPromise(_writeFile);
|
||
|
function writeFileSync(file, obj, options = {}) {
|
||
|
const fs2 = options.fs || _fs;
|
||
|
const str = stringify(obj, options);
|
||
|
return fs2.writeFileSync(file, str, options);
|
||
|
}
|
||
|
var jsonfile = {
|
||
|
readFile,
|
||
|
readFileSync,
|
||
|
writeFile,
|
||
|
writeFileSync
|
||
|
};
|
||
|
module2.exports = jsonfile;
|
||
|
}
|
||
|
});
|
||
|
|
||
|
// node_modules/fs-extra/lib/json/jsonfile.js
|
||
|
var require_jsonfile2 = __commonJS({
|
||
|
"node_modules/fs-extra/lib/json/jsonfile.js"(exports2, module2) {
|
||
|
"use strict";
|
||
|
var jsonFile = require_jsonfile();
|
||
|
module2.exports = {
|
||
|
// jsonfile exports
|
||
|
readJson: jsonFile.readFile,
|
||
|
readJsonSync: jsonFile.readFileSync,
|
||
|
writeJson: jsonFile.writeFile,
|
||
|
writeJsonSync: jsonFile.writeFileSync
|
||
|
};
|
||
|
}
|
||
|
});
|
||
|
|
||
|
// node_modules/fs-extra/lib/output-file/index.js
|
||
|
var require_output_file = __commonJS({
|
||
|
"node_modules/fs-extra/lib/output-file/index.js"(exports2, module2) {
|
||
|
"use strict";
|
||
|
var u = require_universalify().fromPromise;
|
||
|
var fs2 = require_fs();
|
||
|
var path = require("path");
|
||
|
var mkdir = require_mkdirs();
|
||
|
var pathExists = require_path_exists().pathExists;
|
||
|
async function outputFile(file, data, encoding = "utf-8") {
|
||
|
const dir = path.dirname(file);
|
||
|
if (!await pathExists(dir)) {
|
||
|
await mkdir.mkdirs(dir);
|
||
|
}
|
||
|
return fs2.writeFile(file, data, encoding);
|
||
|
}
|
||
|
function outputFileSync(file, ...args) {
|
||
|
const dir = path.dirname(file);
|
||
|
if (!fs2.existsSync(dir)) {
|
||
|
mkdir.mkdirsSync(dir);
|
||
|
}
|
||
|
fs2.writeFileSync(file, ...args);
|
||
|
}
|
||
|
module2.exports = {
|
||
|
outputFile: u(outputFile),
|
||
|
outputFileSync
|
||
|
};
|
||
|
}
|
||
|
});
|
||
|
|
||
|
// node_modules/fs-extra/lib/json/output-json.js
|
||
|
var require_output_json = __commonJS({
|
||
|
"node_modules/fs-extra/lib/json/output-json.js"(exports2, module2) {
|
||
|
"use strict";
|
||
|
var { stringify } = require_utils2();
|
||
|
var { outputFile } = require_output_file();
|
||
|
async function outputJson(file, data, options = {}) {
|
||
|
const str = stringify(data, options);
|
||
|
await outputFile(file, str, options);
|
||
|
}
|
||
|
module2.exports = outputJson;
|
||
|
}
|
||
|
});
|
||
|
|
||
|
// node_modules/fs-extra/lib/json/output-json-sync.js
|
||
|
var require_output_json_sync = __commonJS({
|
||
|
"node_modules/fs-extra/lib/json/output-json-sync.js"(exports2, module2) {
|
||
|
"use strict";
|
||
|
var { stringify } = require_utils2();
|
||
|
var { outputFileSync } = require_output_file();
|
||
|
function outputJsonSync(file, data, options) {
|
||
|
const str = stringify(data, options);
|
||
|
outputFileSync(file, str, options);
|
||
|
}
|
||
|
module2.exports = outputJsonSync;
|
||
|
}
|
||
|
});
|
||
|
|
||
|
// node_modules/fs-extra/lib/json/index.js
|
||
|
var require_json = __commonJS({
|
||
|
"node_modules/fs-extra/lib/json/index.js"(exports2, module2) {
|
||
|
"use strict";
|
||
|
var u = require_universalify().fromPromise;
|
||
|
var jsonFile = require_jsonfile2();
|
||
|
jsonFile.outputJson = u(require_output_json());
|
||
|
jsonFile.outputJsonSync = require_output_json_sync();
|
||
|
jsonFile.outputJSON = jsonFile.outputJson;
|
||
|
jsonFile.outputJSONSync = jsonFile.outputJsonSync;
|
||
|
jsonFile.writeJSON = jsonFile.writeJson;
|
||
|
jsonFile.writeJSONSync = jsonFile.writeJsonSync;
|
||
|
jsonFile.readJSON = jsonFile.readJson;
|
||
|
jsonFile.readJSONSync = jsonFile.readJsonSync;
|
||
|
module2.exports = jsonFile;
|
||
|
}
|
||
|
});
|
||
|
|
||
|
// node_modules/fs-extra/lib/move/move.js
|
||
|
var require_move = __commonJS({
|
||
|
"node_modules/fs-extra/lib/move/move.js"(exports2, module2) {
|
||
|
"use strict";
|
||
|
var fs2 = require_fs();
|
||
|
var path = require("path");
|
||
|
var { copy } = require_copy2();
|
||
|
var { remove } = require_remove();
|
||
|
var { mkdirp } = require_mkdirs();
|
||
|
var { pathExists } = require_path_exists();
|
||
|
var stat = require_stat();
|
||
|
async function move(src, dest, opts = {}) {
|
||
|
const overwrite = opts.overwrite || opts.clobber || false;
|
||
|
const { srcStat, isChangingCase = false } = await stat.checkPaths(src, dest, "move", opts);
|
||
|
await stat.checkParentPaths(src, srcStat, dest, "move");
|
||
|
const destParent = path.dirname(dest);
|
||
|
const parsedParentPath = path.parse(destParent);
|
||
|
if (parsedParentPath.root !== destParent) {
|
||
|
await mkdirp(destParent);
|
||
|
}
|
||
|
return doRename(src, dest, overwrite, isChangingCase);
|
||
|
}
|
||
|
async function doRename(src, dest, overwrite, isChangingCase) {
|
||
|
if (!isChangingCase) {
|
||
|
if (overwrite) {
|
||
|
await remove(dest);
|
||
|
} else if (await pathExists(dest)) {
|
||
|
throw new Error("dest already exists.");
|
||
|
}
|
||
|
}
|
||
|
try {
|
||
|
await fs2.rename(src, dest);
|
||
|
} catch (err) {
|
||
|
if (err.code !== "EXDEV") {
|
||
|
throw err;
|
||
|
}
|
||
|
await moveAcrossDevice(src, dest, overwrite);
|
||
|
}
|
||
|
}
|
||
|
async function moveAcrossDevice(src, dest, overwrite) {
|
||
|
const opts = {
|
||
|
overwrite,
|
||
|
errorOnExist: true,
|
||
|
preserveTimestamps: true
|
||
|
};
|
||
|
await copy(src, dest, opts);
|
||
|
return remove(src);
|
||
|
}
|
||
|
module2.exports = move;
|
||
|
}
|
||
|
});
|
||
|
|
||
|
// node_modules/fs-extra/lib/move/move-sync.js
|
||
|
var require_move_sync = __commonJS({
|
||
|
"node_modules/fs-extra/lib/move/move-sync.js"(exports2, module2) {
|
||
|
"use strict";
|
||
|
var fs2 = require_graceful_fs();
|
||
|
var path = require("path");
|
||
|
var copySync = require_copy2().copySync;
|
||
|
var removeSync2 = require_remove().removeSync;
|
||
|
var mkdirpSync = require_mkdirs().mkdirpSync;
|
||
|
var stat = require_stat();
|
||
|
function moveSync(src, dest, opts) {
|
||
|
opts = opts || {};
|
||
|
const overwrite = opts.overwrite || opts.clobber || false;
|
||
|
const { srcStat, isChangingCase = false } = stat.checkPathsSync(src, dest, "move", opts);
|
||
|
stat.checkParentPathsSync(src, srcStat, dest, "move");
|
||
|
if (!isParentRoot(dest))
|
||
|
mkdirpSync(path.dirname(dest));
|
||
|
return doRename(src, dest, overwrite, isChangingCase);
|
||
|
}
|
||
|
function isParentRoot(dest) {
|
||
|
const parent = path.dirname(dest);
|
||
|
const parsedPath = path.parse(parent);
|
||
|
return parsedPath.root === parent;
|
||
|
}
|
||
|
function doRename(src, dest, overwrite, isChangingCase) {
|
||
|
if (isChangingCase)
|
||
|
return rename(src, dest, overwrite);
|
||
|
if (overwrite) {
|
||
|
removeSync2(dest);
|
||
|
return rename(src, dest, overwrite);
|
||
|
}
|
||
|
if (fs2.existsSync(dest))
|
||
|
throw new Error("dest already exists.");
|
||
|
return rename(src, dest, overwrite);
|
||
|
}
|
||
|
function rename(src, dest, overwrite) {
|
||
|
try {
|
||
|
fs2.renameSync(src, dest);
|
||
|
} catch (err) {
|
||
|
if (err.code !== "EXDEV")
|
||
|
throw err;
|
||
|
return moveAcrossDevice(src, dest, overwrite);
|
||
|
}
|
||
|
}
|
||
|
function moveAcrossDevice(src, dest, overwrite) {
|
||
|
const opts = {
|
||
|
overwrite,
|
||
|
errorOnExist: true,
|
||
|
preserveTimestamps: true
|
||
|
};
|
||
|
copySync(src, dest, opts);
|
||
|
return removeSync2(src);
|
||
|
}
|
||
|
module2.exports = moveSync;
|
||
|
}
|
||
|
});
|
||
|
|
||
|
// node_modules/fs-extra/lib/move/index.js
|
||
|
var require_move2 = __commonJS({
|
||
|
"node_modules/fs-extra/lib/move/index.js"(exports2, module2) {
|
||
|
"use strict";
|
||
|
var u = require_universalify().fromPromise;
|
||
|
module2.exports = {
|
||
|
move: u(require_move()),
|
||
|
moveSync: require_move_sync()
|
||
|
};
|
||
|
}
|
||
|
});
|
||
|
|
||
|
// node_modules/fs-extra/lib/index.js
|
||
|
var require_lib = __commonJS({
|
||
|
"node_modules/fs-extra/lib/index.js"(exports2, module2) {
|
||
|
"use strict";
|
||
|
module2.exports = {
|
||
|
// Export promiseified graceful-fs:
|
||
|
...require_fs(),
|
||
|
// Export extra methods:
|
||
|
...require_copy2(),
|
||
|
...require_empty(),
|
||
|
...require_ensure(),
|
||
|
...require_json(),
|
||
|
...require_mkdirs(),
|
||
|
...require_move2(),
|
||
|
...require_output_file(),
|
||
|
...require_path_exists(),
|
||
|
...require_remove()
|
||
|
};
|
||
|
}
|
||
|
});
|
||
|
|
||
|
// submission-runner/cpp.cts
|
||
|
var cpp_exports = {};
|
||
|
__export(cpp_exports, {
|
||
|
runCpp: () => runCpp
|
||
|
});
|
||
|
module.exports = __toCommonJS(cpp_exports);
|
||
|
var import_path = require("path");
|
||
|
var import_child_process = require("child_process");
|
||
|
var util = __toESM(require("util"));
|
||
|
|
||
|
// submission-runner/settings.cts
|
||
|
var timeoutSeconds = 30;
|
||
|
|
||
|
// submission-runner/cpp.cts
|
||
|
var import_tree_kill = __toESM(require_tree_kill());
|
||
|
var os = __toESM(require("os"));
|
||
|
var fs = __toESM(require_lib());
|
||
|
var execPromise = util.promisify(import_child_process.exec);
|
||
|
var runCpp = async function(params) {
|
||
|
const tmpDir = os.tmpdir();
|
||
|
const buildDir = (0, import_path.join)(tmpDir, "bwcontest-cpp");
|
||
|
if (fs.existsSync(buildDir)) {
|
||
|
fs.removeSync(buildDir);
|
||
|
}
|
||
|
fs.mkdirSync(buildDir);
|
||
|
console.log(`- BUILD: ${params.problemName}`);
|
||
|
const configureCommand = `cmake -S ${params.srcDir} -B ${buildDir}`;
|
||
|
try {
|
||
|
await execPromise(configureCommand);
|
||
|
} catch (e) {
|
||
|
const buildErrorText = e?.toString() ?? "Unknown build errors.";
|
||
|
console.log("Build errors: " + buildErrorText);
|
||
|
return {
|
||
|
success: false,
|
||
|
runResult: { kind: "CompileFailed", resultKindReason: buildErrorText }
|
||
|
};
|
||
|
}
|
||
|
const compileCommand = `cmake --build ${buildDir} --target ${params.problemName}`;
|
||
|
try {
|
||
|
await execPromise(compileCommand);
|
||
|
} catch (e) {
|
||
|
const buildErrorText = e?.toString() ?? "Unknown build errors.";
|
||
|
console.log("Build errors: " + buildErrorText);
|
||
|
return {
|
||
|
success: false,
|
||
|
runResult: { kind: "CompileFailed", resultKindReason: buildErrorText }
|
||
|
};
|
||
|
}
|
||
|
console.log(`- RUN: ${params.problemName}`);
|
||
|
let runCommand = "";
|
||
|
if (params.cppPlatform === "VisualStudio") {
|
||
|
runCommand = `${(0, import_path.join)(buildDir, "Debug", `${params.problemName}.exe`)}`;
|
||
|
} else {
|
||
|
runCommand = `${(0, import_path.join)(buildDir, params.problemName)}`;
|
||
|
}
|
||
|
try {
|
||
|
let outputBuffer = "";
|
||
|
const child = (0, import_child_process.spawn)(runCommand, { shell: true });
|
||
|
child.stdout.setEncoding("utf8");
|
||
|
child.stdout.on("data", (data) => {
|
||
|
outputBuffer += data.toString();
|
||
|
});
|
||
|
child.stderr.setEncoding("utf8");
|
||
|
child.stderr.on("data", (data) => {
|
||
|
outputBuffer += data.toString();
|
||
|
});
|
||
|
const runStartTime = performance.now();
|
||
|
child.stdin.write(params.input);
|
||
|
child.stdin.end();
|
||
|
let timeLimitExceeded = false;
|
||
|
let completedNormally = false;
|
||
|
return {
|
||
|
success: true,
|
||
|
runResult: new Promise((resolve) => {
|
||
|
child.on("close", () => {
|
||
|
completedNormally = !timeLimitExceeded;
|
||
|
const runEndTime = performance.now();
|
||
|
const runtimeMilliseconds = Math.floor(runEndTime - runStartTime);
|
||
|
if (completedNormally) {
|
||
|
clearTimeout(timeoutHandle);
|
||
|
resolve({
|
||
|
kind: "Completed",
|
||
|
output: outputBuffer,
|
||
|
exitCode: child.exitCode,
|
||
|
runtimeMilliseconds
|
||
|
});
|
||
|
} else {
|
||
|
console.log(`Process terminated, total sandbox time: ${runtimeMilliseconds}ms`);
|
||
|
resolve({
|
||
|
kind: "TimeLimitExceeded",
|
||
|
output: outputBuffer,
|
||
|
resultKindReason: `Timeout after ${timeoutSeconds} seconds`
|
||
|
});
|
||
|
}
|
||
|
});
|
||
|
const timeoutHandle = setTimeout(() => {
|
||
|
if (completedNormally) {
|
||
|
return;
|
||
|
}
|
||
|
console.log(`Run timed out after ${timeoutSeconds} seconds, killing process...`);
|
||
|
timeLimitExceeded = true;
|
||
|
child.stdin.end();
|
||
|
child.stdin.destroy();
|
||
|
child.stdout.destroy();
|
||
|
child.stderr.destroy();
|
||
|
child.kill("SIGKILL");
|
||
|
}, timeoutSeconds * 1e3);
|
||
|
}),
|
||
|
killFunc() {
|
||
|
if (child.pid !== void 0) {
|
||
|
if (!completedNormally && !timeLimitExceeded) {
|
||
|
(0, import_tree_kill.default)(child.pid);
|
||
|
params.outputCallback?.("\n[Manually stopped]");
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
};
|
||
|
} catch (error) {
|
||
|
return { success: false, runResult: { kind: "RunError" } };
|
||
|
}
|
||
|
};
|
||
|
// Annotate the CommonJS export names for ESM import in node:
|
||
|
0 && (module.exports = {
|
||
|
runCpp
|
||
|
});
|