mirror of
https://github.com/smallfawn/decode_action.git
synced 2025-12-21 01:05:05 +08:00
Update input.js
This commit is contained in:
574
input.js
574
input.js
@@ -1,8 +1,4 @@
|
||||
//Sat Jun 29 2024 04:41:52 GMT+0000 (Coordinated Universal Time)
|
||||
//Base:https://github.com/echo094/decode-js
|
||||
//Modify:https://github.com/smallfawn/decode_action
|
||||
const $ = new Env("\u987A\u4E30\u901F\u8FD0");
|
||||
const notify = $.isNode() ? require("./sendNotify") : "";
|
||||
|
||||
function a0e(a, b) {
|
||||
var c = a0c();
|
||||
return a0e = function (d, e) {
|
||||
@@ -19371,571 +19367,3 @@ function a0c() {
|
||||
};
|
||||
return a0c();
|
||||
}
|
||||
// perttier-ignore
|
||||
function Env(t, e) {
|
||||
class s {
|
||||
constructor(t) {
|
||||
this.env = t;
|
||||
}
|
||||
send(t, e = "GET") {
|
||||
t = "string" == typeof t ? {
|
||||
url: t
|
||||
} : t;
|
||||
let s = this.get;
|
||||
"POST" === e && (s = this.post);
|
||||
const i = new Promise((e, i) => {
|
||||
s.call(this, t, (t, s, o) => {
|
||||
t ? i(t) : e(s);
|
||||
});
|
||||
});
|
||||
return t.timeout ? ((t, e = 1000) => Promise.race([t, new Promise((t, s) => {
|
||||
setTimeout(() => {
|
||||
s(new Error("\u8BF7\u6C42\u8D85\u65F6"));
|
||||
}, e);
|
||||
})]))(i, t.timeout) : i;
|
||||
}
|
||||
get(t) {
|
||||
return this.send.call(this.env, t);
|
||||
}
|
||||
post(t) {
|
||||
return this.send.call(this.env, t, "POST");
|
||||
}
|
||||
}
|
||||
return new class {
|
||||
constructor(t, e) {
|
||||
this.logLevels = {
|
||||
debug: 0,
|
||||
info: 1,
|
||||
warn: 2,
|
||||
error: 3
|
||||
}, this.logLevelPrefixs = {
|
||||
debug: "[DEBUG] ",
|
||||
info: "[INFO] ",
|
||||
warn: "[WARN] ",
|
||||
error: "[ERROR] "
|
||||
}, this.logLevel = "info", this.name = t, this.http = new s(this), this.data = null, this.dataFile = "box.dat", this.logs = [], this.isMute = !1, this.isNeedRewrite = !1, this.logSeparator = "\n", this.encoding = "utf-8", this.startTime = new Date().getTime(), Object.assign(this, e), this.log("", `🔔${this.name}, 开始!`);
|
||||
}
|
||||
getEnv() {
|
||||
return "undefined" != typeof $environment && $environment["surge-version"] ? "Surge" : "undefined" != typeof $environment && $environment["stash-version"] ? "Stash" : "undefined" != typeof module && module.exports ? "Node.js" : "undefined" != typeof $task ? "Quantumult X" : "undefined" != typeof $loon ? "Loon" : "undefined" != typeof $rocket ? "Shadowrocket" : void 0;
|
||||
}
|
||||
isNode() {
|
||||
return "Node.js" === this.getEnv();
|
||||
}
|
||||
isQuanX() {
|
||||
return "Quantumult X" === this.getEnv();
|
||||
}
|
||||
isSurge() {
|
||||
return "Surge" === this.getEnv();
|
||||
}
|
||||
isLoon() {
|
||||
return "Loon" === this.getEnv();
|
||||
}
|
||||
isShadowrocket() {
|
||||
return "Shadowrocket" === this.getEnv();
|
||||
}
|
||||
isStash() {
|
||||
return "Stash" === this.getEnv();
|
||||
}
|
||||
toObj(t, e = null) {
|
||||
try {
|
||||
return JSON.parse(t);
|
||||
} catch {
|
||||
return e;
|
||||
}
|
||||
}
|
||||
toStr(t, e = null, ...s) {
|
||||
try {
|
||||
return JSON.stringify(t, ...s);
|
||||
} catch {
|
||||
return e;
|
||||
}
|
||||
}
|
||||
getjson(t, e) {
|
||||
let s = e;
|
||||
if (this.getdata(t)) try {
|
||||
s = JSON.parse(this.getdata(t));
|
||||
} catch {}
|
||||
return s;
|
||||
}
|
||||
setjson(t, e) {
|
||||
try {
|
||||
return this.setdata(JSON.stringify(t), e);
|
||||
} catch {
|
||||
return !1;
|
||||
}
|
||||
}
|
||||
getScript(t) {
|
||||
return new Promise(e => {
|
||||
this.get({
|
||||
url: t
|
||||
}, (t, s, i) => e(i));
|
||||
});
|
||||
}
|
||||
runScript(t, e) {
|
||||
return new Promise(s => {
|
||||
let i = this.getdata("@chavy_boxjs_userCfgs.httpapi");
|
||||
i = i ? i.replace(/\n/g, "").trim() : i;
|
||||
let o = this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout");
|
||||
o = o ? 1 * o : 20, o = e && e.timeout ? e.timeout : o;
|
||||
const [r, a] = i.split("@"),
|
||||
n = {
|
||||
url: `http://${a}/v1/scripting/evaluate`,
|
||||
body: {
|
||||
script_text: t,
|
||||
mock_type: "cron",
|
||||
timeout: o
|
||||
},
|
||||
headers: {
|
||||
"X-Key": r,
|
||||
Accept: "*/*"
|
||||
},
|
||||
policy: "DIRECT",
|
||||
timeout: o
|
||||
};
|
||||
this.post(n, (t, e, i) => s(i));
|
||||
}).catch(t => this.logErr(t));
|
||||
}
|
||||
loaddata() {
|
||||
if (!this.isNode()) return {};
|
||||
{
|
||||
this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path");
|
||||
const t = this.path.resolve(this.dataFile),
|
||||
e = this.path.resolve(process.cwd(), this.dataFile),
|
||||
s = this.fs.existsSync(t),
|
||||
i = !s && this.fs.existsSync(e);
|
||||
if (!s && !i) return {};
|
||||
{
|
||||
const i = s ? t : e;
|
||||
try {
|
||||
return JSON.parse(this.fs.readFileSync(i));
|
||||
} catch (t) {
|
||||
return {};
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
writedata() {
|
||||
if (this.isNode()) {
|
||||
this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path");
|
||||
const t = this.path.resolve(this.dataFile),
|
||||
e = this.path.resolve(process.cwd(), this.dataFile),
|
||||
s = this.fs.existsSync(t),
|
||||
i = !s && this.fs.existsSync(e),
|
||||
o = JSON.stringify(this.data);
|
||||
s ? this.fs.writeFileSync(t, o) : i ? this.fs.writeFileSync(e, o) : this.fs.writeFileSync(t, o);
|
||||
}
|
||||
}
|
||||
lodash_get(t, e, s) {
|
||||
const i = e.replace(/\[(\d+)\]/g, ".$1").split(".");
|
||||
let o = t;
|
||||
for (const t of i) if (o = Object(o)[t], void 0 === o) return s;
|
||||
return o;
|
||||
}
|
||||
lodash_set(t, e, s) {
|
||||
return Object(t) !== t || (Array.isArray(e) || (e = e.toString().match(/[^.[\]]+/g) || []), e.slice(0, -1).reduce((t, s, i) => Object(t[s]) === t[s] ? t[s] : t[s] = Math.abs(e[i + 1]) >> 0 == +e[i + 1] ? [] : {}, t)[e[e.length - 1]] = s), t;
|
||||
}
|
||||
getdata(t) {
|
||||
let e = this.getval(t);
|
||||
if (/^@/.test(t)) {
|
||||
const [, s, i] = /^@(.*?)\.(.*?)$/.exec(t),
|
||||
o = s ? this.getval(s) : "";
|
||||
if (o) try {
|
||||
const t = JSON.parse(o);
|
||||
e = t ? this.lodash_get(t, i, "") : e;
|
||||
} catch (t) {
|
||||
e = "";
|
||||
}
|
||||
}
|
||||
return e;
|
||||
}
|
||||
setdata(t, e) {
|
||||
let s = !1;
|
||||
if (/^@/.test(e)) {
|
||||
const [, i, o] = /^@(.*?)\.(.*?)$/.exec(e),
|
||||
r = this.getval(i),
|
||||
a = i ? "null" === r ? null : r || "{}" : "{}";
|
||||
try {
|
||||
const e = JSON.parse(a);
|
||||
this.lodash_set(e, o, t), s = this.setval(JSON.stringify(e), i);
|
||||
} catch (e) {
|
||||
const r = {};
|
||||
this.lodash_set(r, o, t), s = this.setval(JSON.stringify(r), i);
|
||||
}
|
||||
} else s = this.setval(t, e);
|
||||
return s;
|
||||
}
|
||||
getval(t) {
|
||||
switch (this.getEnv()) {
|
||||
case "Surge":
|
||||
case "Loon":
|
||||
case "Stash":
|
||||
case "Shadowrocket":
|
||||
return $persistentStore.read(t);
|
||||
case "Quantumult X":
|
||||
return $prefs.valueForKey(t);
|
||||
case "Node.js":
|
||||
return this.data = this.loaddata(), this.data[t];
|
||||
default:
|
||||
return this.data && this.data[t] || null;
|
||||
}
|
||||
}
|
||||
setval(t, e) {
|
||||
switch (this.getEnv()) {
|
||||
case "Surge":
|
||||
case "Loon":
|
||||
case "Stash":
|
||||
case "Shadowrocket":
|
||||
return $persistentStore.write(t, e);
|
||||
case "Quantumult X":
|
||||
return $prefs.setValueForKey(t, e);
|
||||
case "Node.js":
|
||||
return this.data = this.loaddata(), this.data[e] = t, this.writedata(), !0;
|
||||
default:
|
||||
return this.data && this.data[e] || null;
|
||||
}
|
||||
}
|
||||
initGotEnv(t) {
|
||||
this.got = this.got ? this.got : require("got"), this.cktough = this.cktough ? this.cktough : require("tough-cookie"), this.ckjar = this.ckjar ? this.ckjar : new this.cktough.CookieJar(), t && (t.headers = t.headers ? t.headers : {}, t && (t.headers = t.headers ? t.headers : {}, void 0 === t.headers.cookie && void 0 === t.headers.Cookie && void 0 === t.cookieJar && (t.cookieJar = this.ckjar)));
|
||||
}
|
||||
get(t, e = () => {}) {
|
||||
switch (t.headers && (delete t.headers["Content-Type"], delete t.headers["Content-Length"], delete t.headers["content-type"], delete t.headers["content-length"]), t.params && (t.url += "?" + this.queryStr(t.params)), void 0 === t.followRedirect || t.followRedirect || ((this.isSurge() || this.isLoon()) && (t["auto-redirect"] = !1), this.isQuanX() && (t.opts ? t.opts.redirection = !1 : t.opts = {
|
||||
redirection: !1
|
||||
})), this.getEnv()) {
|
||||
case "Surge":
|
||||
case "Loon":
|
||||
case "Stash":
|
||||
case "Shadowrocket":
|
||||
default:
|
||||
this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, {
|
||||
"X-Surge-Skip-Scripting": !1
|
||||
})), $httpClient.get(t, (t, s, i) => {
|
||||
!t && s && (s.body = i, s.statusCode = s.status ? s.status : s.statusCode, s.status = s.statusCode), e(t, s, i);
|
||||
});
|
||||
break;
|
||||
case "Quantumult X":
|
||||
this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, {
|
||||
hints: !1
|
||||
})), $task.fetch(t).then(t => {
|
||||
const {
|
||||
statusCode: s,
|
||||
statusCode: i,
|
||||
headers: o,
|
||||
body: r,
|
||||
bodyBytes: a
|
||||
} = t;
|
||||
e(null, {
|
||||
status: s,
|
||||
statusCode: i,
|
||||
headers: o,
|
||||
body: r,
|
||||
bodyBytes: a
|
||||
}, r, a);
|
||||
}, t => e(t && t.error || "UndefinedError"));
|
||||
break;
|
||||
case "Node.js":
|
||||
let s = require("iconv-lite");
|
||||
this.initGotEnv(t), this.got(t).on("redirect", (t, e) => {
|
||||
try {
|
||||
if (t.headers["set-cookie"]) {
|
||||
const s = t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString();
|
||||
s && this.ckjar.setCookieSync(s, null), e.cookieJar = this.ckjar;
|
||||
}
|
||||
} catch (t) {
|
||||
this.logErr(t);
|
||||
}
|
||||
}).then(t => {
|
||||
const {
|
||||
statusCode: i,
|
||||
statusCode: o,
|
||||
headers: r,
|
||||
rawBody: a
|
||||
} = t,
|
||||
n = s.decode(a, this.encoding);
|
||||
e(null, {
|
||||
status: i,
|
||||
statusCode: o,
|
||||
headers: r,
|
||||
rawBody: a,
|
||||
body: n
|
||||
}, n);
|
||||
}, t => {
|
||||
const {
|
||||
message: i,
|
||||
response: o
|
||||
} = t;
|
||||
e(i, o, o && s.decode(o.rawBody, this.encoding));
|
||||
});
|
||||
break;
|
||||
}
|
||||
}
|
||||
post(t, e = () => {}) {
|
||||
const s = t.method ? t.method.toLocaleLowerCase() : "post";
|
||||
switch (t.body && t.headers && !t.headers["Content-Type"] && !t.headers["content-type"] && (t.headers["content-type"] = "application/x-www-form-urlencoded"), t.headers && (delete t.headers["Content-Length"], delete t.headers["content-length"]), void 0 === t.followRedirect || t.followRedirect || ((this.isSurge() || this.isLoon()) && (t["auto-redirect"] = !1), this.isQuanX() && (t.opts ? t.opts.redirection = !1 : t.opts = {
|
||||
redirection: !1
|
||||
})), this.getEnv()) {
|
||||
case "Surge":
|
||||
case "Loon":
|
||||
case "Stash":
|
||||
case "Shadowrocket":
|
||||
default:
|
||||
this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, {
|
||||
"X-Surge-Skip-Scripting": !1
|
||||
})), $httpClient[s](t, (t, s, i) => {
|
||||
!t && s && (s.body = i, s.statusCode = s.status ? s.status : s.statusCode, s.status = s.statusCode), e(t, s, i);
|
||||
});
|
||||
break;
|
||||
case "Quantumult X":
|
||||
t.method = s, this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, {
|
||||
hints: !1
|
||||
})), $task.fetch(t).then(t => {
|
||||
const {
|
||||
statusCode: s,
|
||||
statusCode: i,
|
||||
headers: o,
|
||||
body: r,
|
||||
bodyBytes: a
|
||||
} = t;
|
||||
e(null, {
|
||||
status: s,
|
||||
statusCode: i,
|
||||
headers: o,
|
||||
body: r,
|
||||
bodyBytes: a
|
||||
}, r, a);
|
||||
}, t => e(t && t.error || "UndefinedError"));
|
||||
break;
|
||||
case "Node.js":
|
||||
let i = require("iconv-lite");
|
||||
this.initGotEnv(t);
|
||||
const {
|
||||
url: o,
|
||||
...r
|
||||
} = t;
|
||||
this.got[s](o, r).then(t => {
|
||||
const {
|
||||
statusCode: s,
|
||||
statusCode: o,
|
||||
headers: r,
|
||||
rawBody: a
|
||||
} = t,
|
||||
n = i.decode(a, this.encoding);
|
||||
e(null, {
|
||||
status: s,
|
||||
statusCode: o,
|
||||
headers: r,
|
||||
rawBody: a,
|
||||
body: n
|
||||
}, n);
|
||||
}, t => {
|
||||
const {
|
||||
message: s,
|
||||
response: o
|
||||
} = t;
|
||||
e(s, o, o && i.decode(o.rawBody, this.encoding));
|
||||
});
|
||||
break;
|
||||
}
|
||||
}
|
||||
time(t, e = null) {
|
||||
const s = e ? new Date(e) : new Date();
|
||||
let i = {
|
||||
"M+": s.getMonth() + 1,
|
||||
"d+": s.getDate(),
|
||||
"H+": s.getHours(),
|
||||
"m+": s.getMinutes(),
|
||||
"s+": s.getSeconds(),
|
||||
"q+": Math.floor((s.getMonth() + 3) / 3),
|
||||
S: s.getMilliseconds()
|
||||
};
|
||||
/(y+)/.test(t) && (t = t.replace(RegExp.$1, (s.getFullYear() + "").substr(4 - RegExp.$1.length)));
|
||||
for (let e in i) new RegExp("(" + e + ")").test(t) && (t = t.replace(RegExp.$1, 1 == RegExp.$1.length ? i[e] : ("00" + i[e]).substr(("" + i[e]).length)));
|
||||
return t;
|
||||
}
|
||||
queryStr(t) {
|
||||
let e = "";
|
||||
for (const s in t) {
|
||||
let i = t[s];
|
||||
null != i && "" !== i && ("object" == typeof i && (i = JSON.stringify(i)), e += `${s}=${i}&`);
|
||||
}
|
||||
return e = e.substring(0, e.length - 1), e;
|
||||
}
|
||||
msg(e = t, s = "", i = "", o = {}) {
|
||||
const r = t => {
|
||||
const {
|
||||
$open: e,
|
||||
$copy: s,
|
||||
$media: i,
|
||||
$mediaMime: o
|
||||
} = t;
|
||||
switch (typeof t) {
|
||||
case void 0:
|
||||
return t;
|
||||
case "string":
|
||||
switch (this.getEnv()) {
|
||||
case "Surge":
|
||||
case "Stash":
|
||||
default:
|
||||
return {
|
||||
url: t
|
||||
};
|
||||
case "Loon":
|
||||
case "Shadowrocket":
|
||||
return t;
|
||||
case "Quantumult X":
|
||||
return {
|
||||
"open-url": t
|
||||
};
|
||||
case "Node.js":
|
||||
return;
|
||||
}
|
||||
case "object":
|
||||
switch (this.getEnv()) {
|
||||
case "Surge":
|
||||
case "Stash":
|
||||
case "Shadowrocket":
|
||||
default:
|
||||
{
|
||||
const r = {};
|
||||
let a = t.openUrl || t.url || t["open-url"] || e;
|
||||
a && Object.assign(r, {
|
||||
action: "open-url",
|
||||
url: a
|
||||
});
|
||||
let n = t["update-pasteboard"] || t.updatePasteboard || s;
|
||||
if (n && Object.assign(r, {
|
||||
action: "clipboard",
|
||||
text: n
|
||||
}), i) {
|
||||
let t, e, s;
|
||||
if (i.startsWith("http")) t = i;else if (i.startsWith("data:")) {
|
||||
const [t] = i.split(";"),
|
||||
[, o] = i.split(",");
|
||||
e = o, s = t.replace("data:", "");
|
||||
} else {
|
||||
e = i, s = (t => {
|
||||
const e = {
|
||||
JVBERi0: "application/pdf",
|
||||
R0lGODdh: "image/gif",
|
||||
R0lGODlh: "image/gif",
|
||||
iVBORw0KGgo: "image/png",
|
||||
"/9j/": "image/jpg"
|
||||
};
|
||||
for (var s in e) if (0 === t.indexOf(s)) return e[s];
|
||||
return null;
|
||||
})(i);
|
||||
}
|
||||
Object.assign(r, {
|
||||
"media-url": t,
|
||||
"media-base64": e,
|
||||
"media-base64-mime": o ?? s
|
||||
});
|
||||
}
|
||||
return Object.assign(r, {
|
||||
"auto-dismiss": t["auto-dismiss"],
|
||||
sound: t.sound
|
||||
}), r;
|
||||
}
|
||||
case "Loon":
|
||||
{
|
||||
const s = {};
|
||||
let o = t.openUrl || t.url || t["open-url"] || e;
|
||||
o && Object.assign(s, {
|
||||
openUrl: o
|
||||
});
|
||||
let r = t.mediaUrl || t["media-url"];
|
||||
return i?.startsWith("http") && (r = i), r && Object.assign(s, {
|
||||
mediaUrl: r
|
||||
}), console.log(JSON.stringify(s)), s;
|
||||
}
|
||||
case "Quantumult X":
|
||||
{
|
||||
const o = {};
|
||||
let r = t["open-url"] || t.url || t.openUrl || e;
|
||||
r && Object.assign(o, {
|
||||
"open-url": r
|
||||
});
|
||||
let a = t["media-url"] || t.mediaUrl;
|
||||
i?.startsWith("http") && (a = i), a && Object.assign(o, {
|
||||
"media-url": a
|
||||
});
|
||||
let n = t["update-pasteboard"] || t.updatePasteboard || s;
|
||||
return n && Object.assign(o, {
|
||||
"update-pasteboard": n
|
||||
}), console.log(JSON.stringify(o)), o;
|
||||
}
|
||||
case "Node.js":
|
||||
return;
|
||||
}
|
||||
default:
|
||||
return;
|
||||
}
|
||||
};
|
||||
if (!this.isMute) switch (this.getEnv()) {
|
||||
case "Surge":
|
||||
case "Loon":
|
||||
case "Stash":
|
||||
case "Shadowrocket":
|
||||
default:
|
||||
$notification.post(e, s, i, r(o));
|
||||
break;
|
||||
case "Quantumult X":
|
||||
$notify(e, s, i, r(o));
|
||||
break;
|
||||
case "Node.js":
|
||||
break;
|
||||
}
|
||||
if (!this.isMuteLog) {
|
||||
let t = ["", "==============\uD83D\uDCE3\u7CFB\u7EDF\u901A\u77E5\uD83D\uDCE3=============="];
|
||||
t.push(e), s && t.push(s), i && t.push(i), console.log(t.join("\n")), this.logs = this.logs.concat(t);
|
||||
}
|
||||
}
|
||||
debug(...t) {
|
||||
this.logLevels[this.logLevel] <= this.logLevels.debug && (t.length > 0 && (this.logs = [...this.logs, ...t]), console.log(`${this.logLevelPrefixs.debug}${t.map(t => t ?? String(t)).join(this.logSeparator)}`));
|
||||
}
|
||||
info(...t) {
|
||||
this.logLevels[this.logLevel] <= this.logLevels.info && (t.length > 0 && (this.logs = [...this.logs, ...t]), console.log(`${this.logLevelPrefixs.info}${t.map(t => t ?? String(t)).join(this.logSeparator)}`));
|
||||
}
|
||||
warn(...t) {
|
||||
this.logLevels[this.logLevel] <= this.logLevels.warn && (t.length > 0 && (this.logs = [...this.logs, ...t]), console.log(`${this.logLevelPrefixs.warn}${t.map(t => t ?? String(t)).join(this.logSeparator)}`));
|
||||
}
|
||||
error(...t) {
|
||||
this.logLevels[this.logLevel] <= this.logLevels.error && (t.length > 0 && (this.logs = [...this.logs, ...t]), console.log(`${this.logLevelPrefixs.error}${t.map(t => t ?? String(t)).join(this.logSeparator)}`));
|
||||
}
|
||||
log(...t) {
|
||||
t.length > 0 && (this.logs = [...this.logs, ...t]), console.log(t.map(t => t ?? String(t)).join(this.logSeparator));
|
||||
}
|
||||
logErr(t, e) {
|
||||
switch (this.getEnv()) {
|
||||
case "Surge":
|
||||
case "Loon":
|
||||
case "Stash":
|
||||
case "Shadowrocket":
|
||||
case "Quantumult X":
|
||||
default:
|
||||
this.log("", `❗️${this.name}, 错误!`, e, t);
|
||||
break;
|
||||
case "Node.js":
|
||||
this.log("", `❗️${this.name}, 错误!`, e, void 0 !== t.message ? t.message : t, t.stack);
|
||||
break;
|
||||
}
|
||||
}
|
||||
wait(t) {
|
||||
return new Promise(e => setTimeout(e, t));
|
||||
}
|
||||
done(t = {}) {
|
||||
const e = (new Date().getTime() - this.startTime) / 1000;
|
||||
switch (this.log("", `🔔${this.name}, 结束! 🕛 ${e} 秒`), this.log(), this.getEnv()) {
|
||||
case "Surge":
|
||||
case "Loon":
|
||||
case "Stash":
|
||||
case "Shadowrocket":
|
||||
case "Quantumult X":
|
||||
default:
|
||||
$done(t);
|
||||
break;
|
||||
case "Node.js":
|
||||
process.exit(1);
|
||||
}
|
||||
}
|
||||
}(t, e);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user