UNPKG

@nsnanocat/util

Version:

Pure JS's util module for well-known iOS network tools

68 lines (66 loc) β€’ 2.19 kB
import { $app } from "./app.mjs"; import { Console } from "../polyfill/Console.mjs"; import { Lodash as _ } from "../polyfill/Lodash.mjs"; import { StatusTexts } from "../polyfill/StatusTexts.mjs"; /** * Complete the script execution * * @export * @param {object} object * @returns {void} */ export function done(object = {}) { switch ($app) { case "Surge": if (object.policy) _.set(object, "headers.X-Surge-Policy", object.policy); Console.log("🚩 ζ‰§θ‘Œη»“ζŸ!", `πŸ•› ${new Date().getTime() / 1000 - $script.startTime} η§’`); $done(object); break; case "Loon": if (object.policy) object.node = object.policy; Console.log("🚩 ζ‰§θ‘Œη»“ζŸ!", `πŸ•› ${(new Date() - $script.startTime) / 1000} η§’`); $done(object); break; case "Stash": if (object.policy) _.set(object, "headers.X-Stash-Selected-Proxy", encodeURI(object.policy)); Console.log("🚩 ζ‰§θ‘Œη»“ζŸ!", `πŸ•› ${(new Date() - $script.startTime) / 1000} η§’`); $done(object); break; case "Egern": Console.log("🚩 ζ‰§θ‘Œη»“ζŸ!"); $done(object); break; case "Shadowrocket": Console.log("🚩 ζ‰§θ‘Œη»“ζŸ!"); $done(object); break; case "Quantumult X": if (object.policy) _.set(object, "opts.policy", object.policy); object = _.pick(object, ["status", "url", "headers", "body", "bodyBytes"]); switch (typeof object.status) { case "number": object.status = `HTTP/1.1 ${object.status} ${StatusTexts[object.status]}`; break; case "string": case "undefined": break; default: throw new TypeError(`${Function.name}: ε‚ζ•°η±»εž‹ι”™θ――, status εΏ…ι‘»δΈΊζ•°ε­—ζˆ–ε­—η¬¦δΈ²`); } if (object.body instanceof ArrayBuffer) { object.bodyBytes = object.body; object.body = undefined; } else if (ArrayBuffer.isView(object.body)) { object.bodyBytes = object.body.buffer.slice(object.body.byteOffset, object.body.byteLength + object.body.byteOffset); object.body = undefined; } else if (object.body) object.bodyBytes = undefined; Console.log("🚩 ζ‰§θ‘Œη»“ζŸ!"); $done(object); break; case "Node.js": default: Console.log("🚩 ζ‰§θ‘Œη»“ζŸ!"); process.exit(1); break; } }