"use strict"; var e = require("fs"), t = require("url"), s = require("child_process"), r = require("http"), i = require("https"), n = require("stream"), o = require("zlib"), a = require("net"), h = require("tls"), c = require("crypto"), l = require("events"); function d(e) { return e && "object" == typeof e && "default" in e ? e : { default: e }; } function u(e, t) { return ( t.forEach(function (t) { t && "string" != typeof t && !Array.isArray(t) && Object.keys(t).forEach(function (s) { if ("default" !== s && !(s in e)) { var r = Object.getOwnPropertyDescriptor(t, s); Object.defineProperty( e, s, r.get ? r : { enumerable: !0, get: function () { return t[s]; }, } ); } }); }), Object.freeze(e) ); } var p = d(e), f = d(t), _ = d(s), y = d(r), m = d(i), g = d(n), b = d(o), v = d(a), E = d(h), w = d(c), S = d(l); const k = Object.create(null); (k.open = "0"), (k.close = "1"), (k.ping = "2"), (k.pong = "3"), (k.message = "4"), (k.upgrade = "5"), (k.noop = "6"); const x = Object.create(null); Object.keys(k).forEach((e) => { x[k[e]] = e; }); const O = { type: "error", data: "parser error" }, T = ({ type: e, data: t }, s, r) => { if (t instanceof ArrayBuffer || ArrayBuffer.isView(t)) { const e = N(t); return r(R(e, s)); } return r(k[e] + (t || "")); }, N = (e) => Buffer.isBuffer(e) ? e : e instanceof ArrayBuffer ? Buffer.from(e) : Buffer.from(e.buffer, e.byteOffset, e.byteLength), R = (e, t) => (t ? e : "b" + e.toString("base64")), C = (e, t) => { if ("string" != typeof e) return { type: "message", data: L(e, t) }; const s = e.charAt(0); if ("b" === s) { const s = Buffer.from(e.substring(1), "base64"); return { type: "message", data: L(s, t) }; } return x[s] ? e.length > 1 ? { type: x[s], data: e.substring(1) } : { type: x[s] } : O; }, L = (e, t) => { const s = Buffer.isBuffer(e); return "arraybuffer" === t && s ? A(e) : e; }, A = (e) => { const t = new ArrayBuffer(e.length), s = new Uint8Array(t); for (let t = 0; t < e.length; t++) s[t] = e[t]; return t; }, B = String.fromCharCode(30); function P(e) { if (e) return (function (e) { for (var t in P.prototype) e[t] = P.prototype[t]; return e; })(e); } (P.prototype.on = P.prototype.addEventListener = function (e, t) { return ( (this._callbacks = this._callbacks || {}), (this._callbacks["$" + e] = this._callbacks["$" + e] || []).push(t), this ); }), (P.prototype.once = function (e, t) { function s() { this.off(e, s), t.apply(this, arguments); } return (s.fn = t), this.on(e, s), this; }), (P.prototype.off = P.prototype.removeListener = P.prototype.removeAllListeners = P.prototype.removeEventListener = function (e, t) { if (((this._callbacks = this._callbacks || {}), 0 == arguments.length)) return (this._callbacks = {}), this; var s, r = this._callbacks["$" + e]; if (!r) return this; if (1 == arguments.length) return delete this._callbacks["$" + e], this; for (var i = 0; i < r.length; i++) if ((s = r[i]) === t || s.fn === t) { r.splice(i, 1); break; } return 0 === r.length && delete this._callbacks["$" + e], this; }), (P.prototype.emit = function (e) { this._callbacks = this._callbacks || {}; for ( var t = new Array(arguments.length - 1), s = this._callbacks["$" + e], r = 1; r < arguments.length; r++ ) t[r - 1] = arguments[r]; if (s) { r = 0; for (var i = (s = s.slice(0)).length; r < i; ++r) s[r].apply(this, t); } return this; }), (P.prototype.emitReserved = P.prototype.emit), (P.prototype.listeners = function (e) { return ( (this._callbacks = this._callbacks || {}), this._callbacks["$" + e] || [] ); }), (P.prototype.hasListeners = function (e) { return !!this.listeners(e).length; }); const I = global; function D(e, ...t) { return t.reduce((t, s) => (e.hasOwnProperty(s) && (t[s] = e[s]), t), {}); } const U = setTimeout, q = clearTimeout; function j(e, t) { t.useNativeTimers ? ((e.setTimeoutFn = U.bind(I)), (e.clearTimeoutFn = q.bind(I))) : ((e.setTimeoutFn = setTimeout.bind(I)), (e.clearTimeoutFn = clearTimeout.bind(I))); } class F extends Error { constructor(e, t, s) { super(e), (this.description = t), (this.context = s), (this.type = "TransportError"); } } class M extends P { constructor(e) { super(), (this.writable = !1), j(this, e), (this.opts = e), (this.query = e.query), (this.readyState = ""), (this.socket = e.socket); } onError(e, t, s) { return super.emitReserved("error", new F(e, t, s)), this; } open() { return ( ("closed" !== this.readyState && "" !== this.readyState) || ((this.readyState = "opening"), this.doOpen()), this ); } close() { return ( ("opening" !== this.readyState && "open" !== this.readyState) || (this.doClose(), this.onClose()), this ); } send(e) { "open" === this.readyState && this.write(e); } onOpen() { (this.readyState = "open"), (this.writable = !0), super.emitReserved("open"); } onData(e) { const t = C(e, this.socket.binaryType); this.onPacket(t); } onPacket(e) { super.emitReserved("packet", e); } onClose(e) { (this.readyState = "closed"), super.emitReserved("close", e); } } const W = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-_".split( "" ), V = {}; let $, G = 0, H = 0; function z(e) { let t = ""; do { (t = W[e % 64] + t), (e = Math.floor(e / 64)); } while (e > 0); return t; } function Y() { const e = z(+new Date()); return e !== $ ? ((G = 0), ($ = e)) : e + "." + z(G++); } for (; H < 64; H++) V[W[H]] = H; function K(e) { let t = ""; for (let s in e) e.hasOwnProperty(s) && (t.length && (t += "&"), (t += encodeURIComponent(s) + "=" + encodeURIComponent(e[s]))); return t; } /** * Wrapper for built-in http.js to emulate the browser XMLHttpRequest object. * * This can be used with JS designed for browsers to improve reuse of code and * allow the use of existing libraries. * * Usage: include("XMLHttpRequest.js") and use XMLHttpRequest per W3C specs. * * @author Dan DeFelippi * @contributor David Ellis * @license MIT */ var X = p.default, J = f.default, Q = _.default.spawn, Z = ee; function ee(e) { e = e || {}; var t, s, r = this, i = y.default, n = m.default, o = {}, a = !1, h = { "User-Agent": "node-XMLHttpRequest", Accept: "*/*" }, c = Object.assign({}, h), l = [ "accept-charset", "accept-encoding", "access-control-request-headers", "access-control-request-method", "connection", "content-length", "content-transfer-encoding", "cookie", "cookie2", "date", "expect", "host", "keep-alive", "origin", "referer", "te", "trailer", "transfer-encoding", "upgrade", "via", ], d = ["TRACE", "TRACK", "CONNECT"], u = !1, p = !1, f = !1, _ = {}; (this.UNSENT = 0), (this.OPENED = 1), (this.HEADERS_RECEIVED = 2), (this.LOADING = 3), (this.DONE = 4), (this.readyState = this.UNSENT), (this.onreadystatechange = null), (this.responseText = ""), (this.responseXML = ""), (this.status = null), (this.statusText = null); (this.open = function (e, t, s, r, i) { if ( (this.abort(), (p = !1), (f = !1), !(function (e) { return e && -1 === d.indexOf(e); })(e)) ) throw new Error("SecurityError: Request method not allowed"); (o = { method: e, url: t.toString(), async: "boolean" != typeof s || s, user: r || null, password: i || null, }), g(this.OPENED); }), (this.setDisableHeaderCheck = function (e) { a = e; }), (this.setRequestHeader = function (e, t) { if (this.readyState != this.OPENED) throw new Error( "INVALID_STATE_ERR: setRequestHeader can only be called when state is OPEN" ); if ( !(function (e) { return a || (e && -1 === l.indexOf(e.toLowerCase())); })(e) ) return console.warn('Refused to set unsafe header "' + e + '"'), !1; if (u) throw new Error("INVALID_STATE_ERR: send flag is true"); return (c[e] = t), !0; }), (this.getResponseHeader = function (e) { return "string" == typeof e && this.readyState > this.OPENED && s.headers[e.toLowerCase()] && !p ? s.headers[e.toLowerCase()] : null; }), (this.getAllResponseHeaders = function () { if (this.readyState < this.HEADERS_RECEIVED || p) return ""; var e = ""; for (var t in s.headers) "set-cookie" !== t && "set-cookie2" !== t && (e += t + ": " + s.headers[t] + "\r\n"); return e.substr(0, e.length - 2); }), (this.getRequestHeader = function (e) { return "string" == typeof e && c[e] ? c[e] : ""; }), (this.send = function (a) { if (this.readyState != this.OPENED) throw new Error( "INVALID_STATE_ERR: connection must be opened before send() is called" ); if (u) throw new Error("INVALID_STATE_ERR: send has already been called"); var h, l = !1, d = !1, f = J.parse(o.url); switch (f.protocol) { case "https:": l = !0; case "http:": h = f.hostname; break; case "file:": d = !0; break; case void 0: case "": h = "localhost"; break; default: throw new Error("Protocol not supported."); } if (d) { if ("GET" !== o.method) throw new Error("XMLHttpRequest: Only GET method is supported"); if (o.async) X.readFile(unescape(f.pathname), "utf8", function (e, t) { e ? r.handleError(e, e.errno || -1) : ((r.status = 200), (r.responseText = t), g(r.DONE)); }); else try { (this.responseText = X.readFileSync(unescape(f.pathname), "utf8")), (this.status = 200), g(r.DONE); } catch (e) { this.handleError(e, e.errno || -1); } } else { var _ = f.port || (l ? 443 : 80), y = f.pathname + (f.search ? f.search : ""); if ( ((c.Host = h), (l && 443 === _) || 80 === _ || (c.Host += ":" + f.port), o.user) ) { void 0 === o.password && (o.password = ""); var m = new Buffer(o.user + ":" + o.password); c.Authorization = "Basic " + m.toString("base64"); } "GET" === o.method || "HEAD" === o.method ? (a = null) : a ? ((c["Content-Length"] = Buffer.isBuffer(a) ? a.length : Buffer.byteLength(a)), c["Content-Type"] || (c["Content-Type"] = "text/plain;charset=UTF-8")) : "POST" === o.method && (c["Content-Length"] = 0); var b = e.agent || !1, v = { host: h, port: _, path: y, method: o.method, headers: c, agent: b, }; if ( (l && ((v.pfx = e.pfx), (v.key = e.key), (v.passphrase = e.passphrase), (v.cert = e.cert), (v.ca = e.ca), (v.ciphers = e.ciphers), (v.rejectUnauthorized = !1 !== e.rejectUnauthorized)), (p = !1), o.async) ) { var E = l ? n.request : i.request; (u = !0), r.dispatchEvent("readystatechange"); var w = function (i) { if ( 302 === (s = i).statusCode || 303 === s.statusCode || 307 === s.statusCode ) { o.url = s.headers.location; var n = J.parse(o.url); h = n.hostname; var a = { hostname: n.hostname, port: n.port, path: n.path, method: 303 === s.statusCode ? "GET" : o.method, headers: c, }; return ( l && ((a.pfx = e.pfx), (a.key = e.key), (a.passphrase = e.passphrase), (a.cert = e.cert), (a.ca = e.ca), (a.ciphers = e.ciphers), (a.rejectUnauthorized = !1 !== e.rejectUnauthorized)), void (t = E(a, w).on("error", S)).end() ); } s && s.setEncoding && s.setEncoding("utf8"), g(r.HEADERS_RECEIVED), (r.status = s.statusCode), s.on("data", function (e) { e && (r.responseText += e), u && g(r.LOADING); }), s.on("end", function () { u && ((u = !1), g(r.DONE)); }), s.on("error", function (e) { r.handleError(e); }); }, S = function (e) { r.handleError(e); }; (t = E(v, w).on("error", S)), e.autoUnref && t.on("socket", (e) => { e.unref(); }), a && t.write(a), t.end(), r.dispatchEvent("loadstart"); } else { var k = ".node-xmlhttprequest-content-" + process.pid, x = ".node-xmlhttprequest-sync-" + process.pid; X.writeFileSync(x, "", "utf8"); for ( var O = "var http = require('http'), https = require('https'), fs = require('fs');var doRequest = http" + (l ? "s" : "") + ".request;var options = " + JSON.stringify(v) + ";var responseText = '';var req = doRequest(options, function(response) {response.setEncoding('utf8');response.on('data', function(chunk) { responseText += chunk;});response.on('end', function() {fs.writeFileSync('" + k + "', 'NODE-XMLHTTPREQUEST-STATUS:' + response.statusCode + ',' + responseText, 'utf8');fs.unlinkSync('" + x + "');});response.on('error', function(error) {fs.writeFileSync('" + k + "', 'NODE-XMLHTTPREQUEST-ERROR:' + JSON.stringify(error), 'utf8');fs.unlinkSync('" + x + "');});}).on('error', function(error) {fs.writeFileSync('" + k + "', 'NODE-XMLHTTPREQUEST-ERROR:' + JSON.stringify(error), 'utf8');fs.unlinkSync('" + x + "');});" + (a ? "req.write('" + JSON.stringify(a).slice(1, -1).replace(/'/g, "\\'") + "');" : "") + "req.end();", T = Q(process.argv[0], ["-e", O]); X.existsSync(x); ); if ( ((r.responseText = X.readFileSync(k, "utf8")), T.stdin.end(), X.unlinkSync(k), r.responseText.match(/^NODE-XMLHTTPREQUEST-ERROR:/)) ) { var N = r.responseText.replace(/^NODE-XMLHTTPREQUEST-ERROR:/, ""); r.handleError(N, 503); } else (r.status = r.responseText.replace( /^NODE-XMLHTTPREQUEST-STATUS:([0-9]*),.*/, "$1" )), (r.responseText = r.responseText.replace( /^NODE-XMLHTTPREQUEST-STATUS:[0-9]*,(.*)/, "$1" )), g(r.DONE); } } }), (this.handleError = function (e, t) { (this.status = t || 0), (this.statusText = e), (this.responseText = e.stack), (p = !0), g(this.DONE); }), (this.abort = function () { t && (t.abort(), (t = null)), (c = Object.assign({}, h)), (this.responseText = ""), (this.responseXML = ""), (p = f = !0), this.readyState === this.UNSENT || (this.readyState === this.OPENED && !u) || this.readyState === this.DONE || ((u = !1), g(this.DONE)), (this.readyState = this.UNSENT); }), (this.addEventListener = function (e, t) { e in _ || (_[e] = []), _[e].push(t); }), (this.removeEventListener = function (e, t) { e in _ && (_[e] = _[e].filter(function (e) { return e !== t; })); }), (this.dispatchEvent = function (e) { if ( ("function" == typeof r["on" + e] && (this.readyState === this.DONE ? setImmediate(function () { r["on" + e](); }) : r["on" + e]()), e in _) ) for (let t = 0, s = _[e].length; t < s; t++) this.readyState === this.DONE ? setImmediate(function () { _[e][t].call(r); }) : _[e][t].call(r); }); var g = function (e) { if ( !(r.readyState === e || (r.readyState === r.UNSENT && f)) && ((r.readyState = e), (o.async || r.readyState < r.OPENED || r.readyState === r.DONE) && r.dispatchEvent("readystatechange"), r.readyState === r.DONE) ) { let e; (e = f ? "abort" : p ? "error" : "load"), r.dispatchEvent(e), r.dispatchEvent("loadend"); } }; } ee.XMLHttpRequest = ee; const te = Z || u({ __proto__: null, default: Z }, [Z]); function se() {} const re = null != new te({ xdomain: !1 }).responseType; class ie extends P { constructor(e, t) { super(), j(this, t), (this.opts = t), (this.method = t.method || "GET"), (this.uri = e), (this.async = !1 !== t.async), (this.data = void 0 !== t.data ? t.data : null), this.create(); } create() { const e = D( this.opts, "agent", "pfx", "key", "passphrase", "cert", "ca", "ciphers", "rejectUnauthorized", "autoUnref" ); (e.xdomain = !!this.opts.xd), (e.xscheme = !!this.opts.xs); const t = (this.xhr = new te(e)); try { t.open(this.method, this.uri, this.async); try { if (this.opts.extraHeaders) { t.setDisableHeaderCheck && t.setDisableHeaderCheck(!0); for (let e in this.opts.extraHeaders) this.opts.extraHeaders.hasOwnProperty(e) && t.setRequestHeader(e, this.opts.extraHeaders[e]); } } catch (e) {} if ("POST" === this.method) try { t.setRequestHeader("Content-type", "text/plain;charset=UTF-8"); } catch (e) {} try { t.setRequestHeader("Accept", "*/*"); } catch (e) {} "withCredentials" in t && (t.withCredentials = this.opts.withCredentials), this.opts.requestTimeout && (t.timeout = this.opts.requestTimeout), (t.onreadystatechange = () => { 4 === t.readyState && (200 === t.status || 1223 === t.status ? this.onLoad() : this.setTimeoutFn(() => { this.onError("number" == typeof t.status ? t.status : 0); }, 0)); }), t.send(this.data); } catch (e) { return void this.setTimeoutFn(() => { this.onError(e); }, 0); } "undefined" != typeof document && ((this.index = ie.requestsCount++), (ie.requests[this.index] = this)); } onError(e) { this.emitReserved("error", e, this.xhr), this.cleanup(!0); } cleanup(e) { if (void 0 !== this.xhr && null !== this.xhr) { if (((this.xhr.onreadystatechange = se), e)) try { this.xhr.abort(); } catch (e) {} "undefined" != typeof document && delete ie.requests[this.index], (this.xhr = null); } } onLoad() { const e = this.xhr.responseText; null !== e && (this.emitReserved("data", e), this.emitReserved("success"), this.cleanup()); } abort() { this.cleanup(); } } if ( ((ie.requestsCount = 0), (ie.requests = {}), "undefined" != typeof document) ) if ("function" == typeof attachEvent) attachEvent("onunload", ne); else if ("function" == typeof addEventListener) { addEventListener("onpagehide" in I ? "pagehide" : "unload", ne, !1); } function ne() { for (let e in ie.requests) ie.requests.hasOwnProperty(e) && ie.requests[e].abort(); } var oe = { exports: {} }, ae = { BINARY_TYPES: ["nodebuffer", "arraybuffer", "fragments"], EMPTY_BUFFER: Buffer.alloc(0), GUID: "258EAFA5-E914-47DA-95CA-C5AB0DC85B11", kForOnEventAttribute: Symbol("kIsForOnEventAttribute"), kListener: Symbol("kListener"), kStatusCode: Symbol("status-code"), kWebSocket: Symbol("websocket"), NOOP: () => {}, }; const { EMPTY_BUFFER: he } = ae; function ce(e, t) { if (0 === e.length) return he; if (1 === e.length) return e[0]; const s = Buffer.allocUnsafe(t); let r = 0; for (let t = 0; t < e.length; t++) { const i = e[t]; s.set(i, r), (r += i.length); } return r < t ? s.slice(0, r) : s; } function le(e, t, s, r, i) { for (let n = 0; n < i; n++) s[r + n] = e[n] ^ t[3 & n]; } function de(e, t) { for (let s = 0; s < e.length; s++) e[s] ^= t[3 & s]; } function ue(e) { return e.byteLength === e.buffer.byteLength ? e.buffer : e.buffer.slice(e.byteOffset, e.byteOffset + e.byteLength); } function pe(e) { if (((pe.readOnly = !0), Buffer.isBuffer(e))) return e; let t; return ( e instanceof ArrayBuffer ? (t = Buffer.from(e)) : ArrayBuffer.isView(e) ? (t = Buffer.from(e.buffer, e.byteOffset, e.byteLength)) : ((t = Buffer.from(e)), (pe.readOnly = !1)), t ); } try { const e = require("bufferutil"); oe.exports = { concat: ce, mask(t, s, r, i, n) { n < 48 ? le(t, s, r, i, n) : e.mask(t, s, r, i, n); }, toArrayBuffer: ue, toBuffer: pe, unmask(t, s) { t.length < 32 ? de(t, s) : e.unmask(t, s); }, }; } catch (e) { oe.exports = { concat: ce, mask: le, toArrayBuffer: ue, toBuffer: pe, unmask: de, }; } const fe = Symbol("kDone"), _e = Symbol("kRun"); var ye = class { constructor(e) { (this[fe] = () => { this.pending--, this[_e](); }), (this.concurrency = e || 1 / 0), (this.jobs = []), (this.pending = 0); } add(e) { this.jobs.push(e), this[_e](); } [_e]() { if (this.pending !== this.concurrency && this.jobs.length) { const e = this.jobs.shift(); this.pending++, e(this[fe]); } } }; const me = b.default, ge = oe.exports, be = ye, { kStatusCode: ve } = ae, Ee = Buffer.from([0, 0, 255, 255]), we = Symbol("permessage-deflate"), Se = Symbol("total-length"), ke = Symbol("callback"), xe = Symbol("buffers"), Oe = Symbol("error"); let Te; var Ne = class { constructor(e, t, s) { if ( ((this._maxPayload = 0 | s), (this._options = e || {}), (this._threshold = void 0 !== this._options.threshold ? this._options.threshold : 1024), (this._isServer = !!t), (this._deflate = null), (this._inflate = null), (this.params = null), !Te) ) { const e = void 0 !== this._options.concurrencyLimit ? this._options.concurrencyLimit : 10; Te = new be(e); } } static get extensionName() { return "permessage-deflate"; } offer() { const e = {}; return ( this._options.serverNoContextTakeover && (e.server_no_context_takeover = !0), this._options.clientNoContextTakeover && (e.client_no_context_takeover = !0), this._options.serverMaxWindowBits && (e.server_max_window_bits = this._options.serverMaxWindowBits), this._options.clientMaxWindowBits ? (e.client_max_window_bits = this._options.clientMaxWindowBits) : null == this._options.clientMaxWindowBits && (e.client_max_window_bits = !0), e ); } accept(e) { return ( (e = this.normalizeParams(e)), (this.params = this._isServer ? this.acceptAsServer(e) : this.acceptAsClient(e)), this.params ); } cleanup() { if ( (this._inflate && (this._inflate.close(), (this._inflate = null)), this._deflate) ) { const e = this._deflate[ke]; this._deflate.close(), (this._deflate = null), e && e( new Error( "The deflate stream was closed while data was being processed" ) ); } } acceptAsServer(e) { const t = this._options, s = e.find( (e) => !( (!1 === t.serverNoContextTakeover && e.server_no_context_takeover) || (e.server_max_window_bits && (!1 === t.serverMaxWindowBits || ("number" == typeof t.serverMaxWindowBits && t.serverMaxWindowBits > e.server_max_window_bits))) || ("number" == typeof t.clientMaxWindowBits && !e.client_max_window_bits) ) ); if (!s) throw new Error("None of the extension offers can be accepted"); return ( t.serverNoContextTakeover && (s.server_no_context_takeover = !0), t.clientNoContextTakeover && (s.client_no_context_takeover = !0), "number" == typeof t.serverMaxWindowBits && (s.server_max_window_bits = t.serverMaxWindowBits), "number" == typeof t.clientMaxWindowBits ? (s.client_max_window_bits = t.clientMaxWindowBits) : (!0 !== s.client_max_window_bits && !1 !== t.clientMaxWindowBits) || delete s.client_max_window_bits, s ); } acceptAsClient(e) { const t = e[0]; if ( !1 === this._options.clientNoContextTakeover && t.client_no_context_takeover ) throw new Error('Unexpected parameter "client_no_context_takeover"'); if (t.client_max_window_bits) { if ( !1 === this._options.clientMaxWindowBits || ("number" == typeof this._options.clientMaxWindowBits && t.client_max_window_bits > this._options.clientMaxWindowBits) ) throw new Error( 'Unexpected or invalid parameter "client_max_window_bits"' ); } else "number" == typeof this._options.clientMaxWindowBits && (t.client_max_window_bits = this._options.clientMaxWindowBits); return t; } normalizeParams(e) { return ( e.forEach((e) => { Object.keys(e).forEach((t) => { let s = e[t]; if (s.length > 1) throw new Error(`Parameter "${t}" must have only a single value`); if (((s = s[0]), "client_max_window_bits" === t)) { if (!0 !== s) { const e = +s; if (!Number.isInteger(e) || e < 8 || e > 15) throw new TypeError(`Invalid value for parameter "${t}": ${s}`); s = e; } else if (!this._isServer) throw new TypeError(`Invalid value for parameter "${t}": ${s}`); } else if ("server_max_window_bits" === t) { const e = +s; if (!Number.isInteger(e) || e < 8 || e > 15) throw new TypeError(`Invalid value for parameter "${t}": ${s}`); s = e; } else { if ( "client_no_context_takeover" !== t && "server_no_context_takeover" !== t ) throw new Error(`Unknown parameter "${t}"`); if (!0 !== s) throw new TypeError(`Invalid value for parameter "${t}": ${s}`); } e[t] = s; }); }), e ); } decompress(e, t, s) { Te.add((r) => { this._decompress(e, t, (e, t) => { r(), s(e, t); }); }); } compress(e, t, s) { Te.add((r) => { this._compress(e, t, (e, t) => { r(), s(e, t); }); }); } _decompress(e, t, s) { const r = this._isServer ? "client" : "server"; if (!this._inflate) { const e = `${r}_max_window_bits`, t = "number" != typeof this.params[e] ? me.Z_DEFAULT_WINDOWBITS : this.params[e]; (this._inflate = me.createInflateRaw({ ...this._options.zlibInflateOptions, windowBits: t, })), (this._inflate[we] = this), (this._inflate[Se] = 0), (this._inflate[xe] = []), this._inflate.on("error", Le), this._inflate.on("data", Ce); } (this._inflate[ke] = s), this._inflate.write(e), t && this._inflate.write(Ee), this._inflate.flush(() => { const e = this._inflate[Oe]; if (e) return this._inflate.close(), (this._inflate = null), void s(e); const i = ge.concat(this._inflate[xe], this._inflate[Se]); this._inflate._readableState.endEmitted ? (this._inflate.close(), (this._inflate = null)) : ((this._inflate[Se] = 0), (this._inflate[xe] = []), t && this.params[`${r}_no_context_takeover`] && this._inflate.reset()), s(null, i); }); } _compress(e, t, s) { const r = this._isServer ? "server" : "client"; if (!this._deflate) { const e = `${r}_max_window_bits`, t = "number" != typeof this.params[e] ? me.Z_DEFAULT_WINDOWBITS : this.params[e]; (this._deflate = me.createDeflateRaw({ ...this._options.zlibDeflateOptions, windowBits: t, })), (this._deflate[Se] = 0), (this._deflate[xe] = []), this._deflate.on("data", Re); } (this._deflate[ke] = s), this._deflate.write(e), this._deflate.flush(me.Z_SYNC_FLUSH, () => { if (!this._deflate) return; let e = ge.concat(this._deflate[xe], this._deflate[Se]); t && (e = e.slice(0, e.length - 4)), (this._deflate[ke] = null), (this._deflate[Se] = 0), (this._deflate[xe] = []), t && this.params[`${r}_no_context_takeover`] && this._deflate.reset(), s(null, e); }); } }; function Re(e) { this[xe].push(e), (this[Se] += e.length); } function Ce(e) { (this[Se] += e.length), this[we]._maxPayload < 1 || this[Se] <= this[we]._maxPayload ? this[xe].push(e) : ((this[Oe] = new RangeError("Max payload size exceeded")), (this[Oe].code = "WS_ERR_UNSUPPORTED_MESSAGE_LENGTH"), (this[Oe][ve] = 1009), this.removeListener("data", Ce), this.reset()); } function Le(e) { (this[we]._inflate = null), (e[ve] = 1007), this[ke](e); } var Ae = { exports: {} }; const Be = [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0, ]; function Pe(e) { return ( (e >= 1e3 && e <= 1014 && 1004 !== e && 1005 !== e && 1006 !== e) || (e >= 3e3 && e <= 4999) ); } function Ie(e) { const t = e.length; let s = 0; for (; s < t; ) if (0 == (128 & e[s])) s++; else if (192 == (224 & e[s])) { if (s + 1 === t || 128 != (192 & e[s + 1]) || 192 == (254 & e[s])) return !1; s += 2; } else if (224 == (240 & e[s])) { if ( s + 2 >= t || 128 != (192 & e[s + 1]) || 128 != (192 & e[s + 2]) || (224 === e[s] && 128 == (224 & e[s + 1])) || (237 === e[s] && 160 == (224 & e[s + 1])) ) return !1; s += 3; } else { if (240 != (248 & e[s])) return !1; if ( s + 3 >= t || 128 != (192 & e[s + 1]) || 128 != (192 & e[s + 2]) || 128 != (192 & e[s + 3]) || (240 === e[s] && 128 == (240 & e[s + 1])) || (244 === e[s] && e[s + 1] > 143) || e[s] > 244 ) return !1; s += 4; } return !0; } try { const e = require("utf-8-validate"); Ae.exports = { isValidStatusCode: Pe, isValidUTF8: (t) => (t.length < 150 ? Ie(t) : e(t)), tokenChars: Be, }; } catch (e) { Ae.exports = { isValidStatusCode: Pe, isValidUTF8: Ie, tokenChars: Be }; } const { Writable: De } = g.default, Ue = Ne, { BINARY_TYPES: qe, EMPTY_BUFFER: je, kStatusCode: Fe, kWebSocket: Me } = ae, { concat: We, toArrayBuffer: Ve, unmask: $e } = oe.exports, { isValidStatusCode: Ge, isValidUTF8: He } = Ae.exports; var ze = class extends De { constructor(e = {}) { super(), (this._binaryType = e.binaryType || qe[0]), (this._extensions = e.extensions || {}), (this._isServer = !!e.isServer), (this._maxPayload = 0 | e.maxPayload), (this._skipUTF8Validation = !!e.skipUTF8Validation), (this[Me] = void 0), (this._bufferedBytes = 0), (this._buffers = []), (this._compressed = !1), (this._payloadLength = 0), (this._mask = void 0), (this._fragmented = 0), (this._masked = !1), (this._fin = !1), (this._opcode = 0), (this._totalPayloadLength = 0), (this._messageLength = 0), (this._fragments = []), (this._state = 0), (this._loop = !1); } _write(e, t, s) { if (8 === this._opcode && 0 == this._state) return s(); (this._bufferedBytes += e.length), this._buffers.push(e), this.startLoop(s); } consume(e) { if (((this._bufferedBytes -= e), e === this._buffers[0].length)) return this._buffers.shift(); if (e < this._buffers[0].length) { const t = this._buffers[0]; return (this._buffers[0] = t.slice(e)), t.slice(0, e); } const t = Buffer.allocUnsafe(e); do { const s = this._buffers[0], r = t.length - e; e >= s.length ? t.set(this._buffers.shift(), r) : (t.set(new Uint8Array(s.buffer, s.byteOffset, e), r), (this._buffers[0] = s.slice(e))), (e -= s.length); } while (e > 0); return t; } startLoop(e) { let t; this._loop = !0; do { switch (this._state) { case 0: t = this.getInfo(); break; case 1: t = this.getPayloadLength16(); break; case 2: t = this.getPayloadLength64(); break; case 3: this.getMask(); break; case 4: t = this.getData(e); break; default: return void (this._loop = !1); } } while (this._loop); e(t); } getInfo() { if (this._bufferedBytes < 2) return void (this._loop = !1); const e = this.consume(2); if (0 != (48 & e[0])) return ( (this._loop = !1), Ye( RangeError, "RSV2 and RSV3 must be clear", !0, 1002, "WS_ERR_UNEXPECTED_RSV_2_3" ) ); const t = 64 == (64 & e[0]); if (t && !this._extensions[Ue.extensionName]) return ( (this._loop = !1), Ye( RangeError, "RSV1 must be clear", !0, 1002, "WS_ERR_UNEXPECTED_RSV_1" ) ); if ( ((this._fin = 128 == (128 & e[0])), (this._opcode = 15 & e[0]), (this._payloadLength = 127 & e[1]), 0 === this._opcode) ) { if (t) return ( (this._loop = !1), Ye( RangeError, "RSV1 must be clear", !0, 1002, "WS_ERR_UNEXPECTED_RSV_1" ) ); if (!this._fragmented) return ( (this._loop = !1), Ye(RangeError, "invalid opcode 0", !0, 1002, "WS_ERR_INVALID_OPCODE") ); this._opcode = this._fragmented; } else if (1 === this._opcode || 2 === this._opcode) { if (this._fragmented) return ( (this._loop = !1), Ye( RangeError, `invalid opcode ${this._opcode}`, !0, 1002, "WS_ERR_INVALID_OPCODE" ) ); this._compressed = t; } else { if (!(this._opcode > 7 && this._opcode < 11)) return ( (this._loop = !1), Ye( RangeError, `invalid opcode ${this._opcode}`, !0, 1002, "WS_ERR_INVALID_OPCODE" ) ); if (!this._fin) return ( (this._loop = !1), Ye(RangeError, "FIN must be set", !0, 1002, "WS_ERR_EXPECTED_FIN") ); if (t) return ( (this._loop = !1), Ye( RangeError, "RSV1 must be clear", !0, 1002, "WS_ERR_UNEXPECTED_RSV_1" ) ); if (this._payloadLength > 125) return ( (this._loop = !1), Ye( RangeError, `invalid payload length ${this._payloadLength}`, !0, 1002, "WS_ERR_INVALID_CONTROL_PAYLOAD_LENGTH" ) ); } if ( (this._fin || this._fragmented || (this._fragmented = this._opcode), (this._masked = 128 == (128 & e[1])), this._isServer) ) { if (!this._masked) return ( (this._loop = !1), Ye(RangeError, "MASK must be set", !0, 1002, "WS_ERR_EXPECTED_MASK") ); } else if (this._masked) return ( (this._loop = !1), Ye(RangeError, "MASK must be clear", !0, 1002, "WS_ERR_UNEXPECTED_MASK") ); if (126 === this._payloadLength) this._state = 1; else { if (127 !== this._payloadLength) return this.haveLength(); this._state = 2; } } getPayloadLength16() { if (!(this._bufferedBytes < 2)) return ( (this._payloadLength = this.consume(2).readUInt16BE(0)), this.haveLength() ); this._loop = !1; } getPayloadLength64() { if (this._bufferedBytes < 8) return void (this._loop = !1); const e = this.consume(8), t = e.readUInt32BE(0); return t > Math.pow(2, 21) - 1 ? ((this._loop = !1), Ye( RangeError, "Unsupported WebSocket frame: payload length > 2^53 - 1", !1, 1009, "WS_ERR_UNSUPPORTED_DATA_PAYLOAD_LENGTH" )) : ((this._payloadLength = t * Math.pow(2, 32) + e.readUInt32BE(4)), this.haveLength()); } haveLength() { if ( this._payloadLength && this._opcode < 8 && ((this._totalPayloadLength += this._payloadLength), this._totalPayloadLength > this._maxPayload && this._maxPayload > 0) ) return ( (this._loop = !1), Ye( RangeError, "Max payload size exceeded", !1, 1009, "WS_ERR_UNSUPPORTED_MESSAGE_LENGTH" ) ); this._masked ? (this._state = 3) : (this._state = 4); } getMask() { this._bufferedBytes < 4 ? (this._loop = !1) : ((this._mask = this.consume(4)), (this._state = 4)); } getData(e) { let t = je; if (this._payloadLength) { if (this._bufferedBytes < this._payloadLength) return void (this._loop = !1); (t = this.consume(this._payloadLength)), this._masked && $e(t, this._mask); } return this._opcode > 7 ? this.controlMessage(t) : this._compressed ? ((this._state = 5), void this.decompress(t, e)) : (t.length && ((this._messageLength = this._totalPayloadLength), this._fragments.push(t)), this.dataMessage()); } decompress(e, t) { this._extensions[Ue.extensionName].decompress(e, this._fin, (e, s) => { if (e) return t(e); if (s.length) { if ( ((this._messageLength += s.length), this._messageLength > this._maxPayload && this._maxPayload > 0) ) return t( Ye( RangeError, "Max payload size exceeded", !1, 1009, "WS_ERR_UNSUPPORTED_MESSAGE_LENGTH" ) ); this._fragments.push(s); } const r = this.dataMessage(); if (r) return t(r); this.startLoop(t); }); } dataMessage() { if (this._fin) { const e = this._messageLength, t = this._fragments; if ( ((this._totalPayloadLength = 0), (this._messageLength = 0), (this._fragmented = 0), (this._fragments = []), 2 === this._opcode) ) { let s; (s = "nodebuffer" === this._binaryType ? We(t, e) : "arraybuffer" === this._binaryType ? Ve(We(t, e)) : t), this.emit("message", s, !0); } else { const s = We(t, e); if (!this._skipUTF8Validation && !He(s)) return ( (this._loop = !1), Ye(Error, "invalid UTF-8 sequence", !0, 1007, "WS_ERR_INVALID_UTF8") ); this.emit("message", s, !1); } } this._state = 0; } controlMessage(e) { if (8 === this._opcode) if (((this._loop = !1), 0 === e.length)) this.emit("conclude", 1005, je), this.end(); else { if (1 === e.length) return Ye( RangeError, "invalid payload length 1", !0, 1002, "WS_ERR_INVALID_CONTROL_PAYLOAD_LENGTH" ); { const t = e.readUInt16BE(0); if (!Ge(t)) return Ye( RangeError, `invalid status code ${t}`, !0, 1002, "WS_ERR_INVALID_CLOSE_CODE" ); const s = e.slice(2); if (!this._skipUTF8Validation && !He(s)) return Ye( Error, "invalid UTF-8 sequence", !0, 1007, "WS_ERR_INVALID_UTF8" ); this.emit("conclude", t, s), this.end(); } } else 9 === this._opcode ? this.emit("ping", e) : this.emit("pong", e); this._state = 0; } }; function Ye(e, t, s, r, i) { const n = new e(s ? `Invalid WebSocket frame: ${t}` : t); return Error.captureStackTrace(n, Ye), (n.code = i), (n[Fe] = r), n; } const { randomFillSync: Ke } = w.default, Xe = Ne, { EMPTY_BUFFER: Je } = ae, { isValidStatusCode: Qe } = Ae.exports, { mask: Ze, toBuffer: et } = oe.exports, tt = Buffer.alloc(4); class st { constructor(e, t) { (this._extensions = t || {}), (this._socket = e), (this._firstFragment = !0), (this._compress = !1), (this._bufferedBytes = 0), (this._deflating = !1), (this._queue = []); } static frame(e, t) { const s = t.mask && t.readOnly; let r = t.mask ? 6 : 2, i = e.length; e.length >= 65536 ? ((r += 8), (i = 127)) : e.length > 125 && ((r += 2), (i = 126)); const n = Buffer.allocUnsafe(s ? e.length + r : r); return ( (n[0] = t.fin ? 128 | t.opcode : t.opcode), t.rsv1 && (n[0] |= 64), (n[1] = i), 126 === i ? n.writeUInt16BE(e.length, 2) : 127 === i && (n.writeUInt32BE(0, 2), n.writeUInt32BE(e.length, 6)), t.mask ? (Ke(tt, 0, 4), (n[1] |= 128), (n[r - 4] = tt[0]), (n[r - 3] = tt[1]), (n[r - 2] = tt[2]), (n[r - 1] = tt[3]), s ? (Ze(e, tt, n, r, e.length), [n]) : (Ze(e, tt, e, 0, e.length), [n, e])) : [n, e] ); } close(e, t, s, r) { let i; if (void 0 === e) i = Je; else { if ("number" != typeof e || !Qe(e)) throw new TypeError("First argument must be a valid error code number"); if (void 0 !== t && t.length) { const s = Buffer.byteLength(t); if (s > 123) throw new RangeError( "The message must not be greater than 123 bytes" ); (i = Buffer.allocUnsafe(2 + s)), i.writeUInt16BE(e, 0), "string" == typeof t ? i.write(t, 2) : i.set(t, 2); } else (i = Buffer.allocUnsafe(2)), i.writeUInt16BE(e, 0); } this._deflating ? this.enqueue([this.doClose, i, s, r]) : this.doClose(i, s, r); } doClose(e, t, s) { this.sendFrame( st.frame(e, { fin: !0, rsv1: !1, opcode: 8, mask: t, readOnly: !1 }), s ); } ping(e, t, s) { const r = et(e); if (r.length > 125) throw new RangeError("The data size must not be greater than 125 bytes"); this._deflating ? this.enqueue([this.doPing, r, t, et.readOnly, s]) : this.doPing(r, t, et.readOnly, s); } doPing(e, t, s, r) { this.sendFrame( st.frame(e, { fin: !0, rsv1: !1, opcode: 9, mask: t, readOnly: s }), r ); } pong(e, t, s) { const r = et(e); if (r.length > 125) throw new RangeError("The data size must not be greater than 125 bytes"); this._deflating ? this.enqueue([this.doPong, r, t, et.readOnly, s]) : this.doPong(r, t, et.readOnly, s); } doPong(e, t, s, r) { this.sendFrame( st.frame(e, { fin: !0, rsv1: !1, opcode: 10, mask: t, readOnly: s }), r ); } send(e, t, s) { const r = et(e), i = this._extensions[Xe.extensionName]; let n = t.binary ? 2 : 1, o = t.compress; if ( (this._firstFragment ? ((this._firstFragment = !1), o && i && i.params[ i._isServer ? "server_no_context_takeover" : "client_no_context_takeover" ] && (o = r.length >= i._threshold), (this._compress = o)) : ((o = !1), (n = 0)), t.fin && (this._firstFragment = !0), i) ) { const e = { fin: t.fin, rsv1: o, opcode: n, mask: t.mask, readOnly: et.readOnly, }; this._deflating ? this.enqueue([this.dispatch, r, this._compress, e, s]) : this.dispatch(r, this._compress, e, s); } else this.sendFrame( st.frame(r, { fin: t.fin, rsv1: !1, opcode: n, mask: t.mask, readOnly: et.readOnly, }), s ); } dispatch(e, t, s, r) { if (!t) return void this.sendFrame(st.frame(e, s), r); const i = this._extensions[Xe.extensionName]; (this._bufferedBytes += e.length), (this._deflating = !0), i.compress(e, s.fin, (t, i) => { if (this._socket.destroyed) { const e = new Error( "The socket was closed while data was being compressed" ); "function" == typeof r && r(e); for (let t = 0; t < this._queue.length; t++) { const s = this._queue[t][4]; "function" == typeof s && s(e); } } else (this._bufferedBytes -= e.length), (this._deflating = !1), (s.readOnly = !1), this.sendFrame(st.frame(i, s), r), this.dequeue(); }); } dequeue() { for (; !this._deflating && this._queue.length; ) { const e = this._queue.shift(); (this._bufferedBytes -= e[1].length), Reflect.apply(e[0], this, e.slice(1)); } } enqueue(e) { (this._bufferedBytes += e[1].length), this._queue.push(e); } sendFrame(e, t) { 2 === e.length ? (this._socket.cork(), this._socket.write(e[0]), this._socket.write(e[1], t), this._socket.uncork()) : this._socket.write(e[0], t); } } var rt = st; const { kForOnEventAttribute: it, kListener: nt } = ae, ot = Symbol("kCode"), at = Symbol("kData"), ht = Symbol("kError"), ct = Symbol("kMessage"), lt = Symbol("kReason"), dt = Symbol("kTarget"), ut = Symbol("kType"), pt = Symbol("kWasClean"); class ft { constructor(e) { (this[dt] = null), (this[ut] = e); } get target() { return this[dt]; } get type() { return this[ut]; } } Object.defineProperty(ft.prototype, "target", { enumerable: !0 }), Object.defineProperty(ft.prototype, "type", { enumerable: !0 }); class _t extends ft { constructor(e, t = {}) { super(e), (this[ot] = void 0 === t.code ? 0 : t.code), (this[lt] = void 0 === t.reason ? "" : t.reason), (this[pt] = void 0 !== t.wasClean && t.wasClean); } get code() { return this[ot]; } get reason() { return this[lt]; } get wasClean() { return this[pt]; } } Object.defineProperty(_t.prototype, "code", { enumerable: !0 }), Object.defineProperty(_t.prototype, "reason", { enumerable: !0 }), Object.defineProperty(_t.prototype, "wasClean", { enumerable: !0 }); class yt extends ft { constructor(e, t = {}) { super(e), (this[ht] = void 0 === t.error ? null : t.error), (this[ct] = void 0 === t.message ? "" : t.message); } get error() { return this[ht]; } get message() { return this[ct]; } } Object.defineProperty(yt.prototype, "error", { enumerable: !0 }), Object.defineProperty(yt.prototype, "message", { enumerable: !0 }); class mt extends ft { constructor(e, t = {}) { super(e), (this[at] = void 0 === t.data ? null : t.data); } get data() { return this[at]; } } Object.defineProperty(mt.prototype, "data", { enumerable: !0 }); const gt = { addEventListener(e, t, s = {}) { let r; if ("message" === e) r = function (e, s) { const r = new mt("message", { data: s ? e : e.toString() }); (r[dt] = this), t.call(this, r); }; else if ("close" === e) r = function (e, s) { const r = new _t("close", { code: e, reason: s.toString(), wasClean: this._closeFrameReceived && this._closeFrameSent, }); (r[dt] = this), t.call(this, r); }; else if ("error" === e) r = function (e) { const s = new yt("error", { error: e, message: e.message }); (s[dt] = this), t.call(this, s); }; else { if ("open" !== e) return; r = function () { const e = new ft("open"); (e[dt] = this), t.call(this, e); }; } (r[it] = !!s[it]), (r[nt] = t), s.once ? this.once(e, r) : this.on(e, r); }, removeEventListener(e, t) { for (const s of this.listeners(e)) if (s[nt] === t && !s[it]) { this.removeListener(e, s); break; } }, }; var bt = { CloseEvent: _t, ErrorEvent: yt, Event: ft, EventTarget: gt, MessageEvent: mt, }; const { tokenChars: vt } = Ae.exports; function Et(e, t, s) { void 0 === e[t] ? (e[t] = [s]) : e[t].push(s); } var wt = { format: function (e) { return Object.keys(e) .map((t) => { let s = e[t]; return ( Array.isArray(s) || (s = [s]), s .map((e) => [t] .concat( Object.keys(e).map((t) => { let s = e[t]; return ( Array.isArray(s) || (s = [s]), s.map((e) => (!0 === e ? t : `${t}=${e}`)).join("; ") ); }) ) .join("; ") ) .join(", ") ); }) .join(", "); }, parse: function (e) { const t = Object.create(null); let s, r, i = Object.create(null), n = !1, o = !1, a = !1, h = -1, c = -1, l = -1, d = 0; for (; d < e.length; d++) if (((c = e.charCodeAt(d)), void 0 === s)) if (-1 === l && 1 === vt[c]) -1 === h && (h = d); else if (0 === d || (32 !== c && 9 !== c)) { if (59 !== c && 44 !== c) throw new SyntaxError(`Unexpected character at index ${d}`); { if (-1 === h) throw new SyntaxError(`Unexpected character at index ${d}`); -1 === l && (l = d); const r = e.slice(h, l); 44 === c ? (Et(t, r, i), (i = Object.create(null))) : (s = r), (h = l = -1); } } else -1 === l && -1 !== h && (l = d); else if (void 0 === r) if (-1 === l && 1 === vt[c]) -1 === h && (h = d); else if (32 === c || 9 === c) -1 === l && -1 !== h && (l = d); else if (59 === c || 44 === c) { if (-1 === h) throw new SyntaxError(`Unexpected character at index ${d}`); -1 === l && (l = d), Et(i, e.slice(h, l), !0), 44 === c && (Et(t, s, i), (i = Object.create(null)), (s = void 0)), (h = l = -1); } else { if (61 !== c || -1 === h || -1 !== l) throw new SyntaxError(`Unexpected character at index ${d}`); (r = e.slice(h, d)), (h = l = -1); } else if (o) { if (1 !== vt[c]) throw new SyntaxError(`Unexpected character at index ${d}`); -1 === h ? (h = d) : n || (n = !0), (o = !1); } else if (a) if (1 === vt[c]) -1 === h && (h = d); else if (34 === c && -1 !== h) (a = !1), (l = d); else { if (92 !== c) throw new SyntaxError(`Unexpected character at index ${d}`); o = !0; } else if (34 === c && 61 === e.charCodeAt(d - 1)) a = !0; else if (-1 === l && 1 === vt[c]) -1 === h && (h = d); else if (-1 === h || (32 !== c && 9 !== c)) { if (59 !== c && 44 !== c) throw new SyntaxError(`Unexpected character at index ${d}`); { if (-1 === h) throw new SyntaxError(`Unexpected character at index ${d}`); -1 === l && (l = d); let o = e.slice(h, l); n && ((o = o.replace(/\\/g, "")), (n = !1)), Et(i, r, o), 44 === c && (Et(t, s, i), (i = Object.create(null)), (s = void 0)), (r = void 0), (h = l = -1); } } else -1 === l && (l = d); if (-1 === h || a || 32 === c || 9 === c) throw new SyntaxError("Unexpected end of input"); -1 === l && (l = d); const u = e.slice(h, l); return ( void 0 === s ? Et(t, u, i) : (void 0 === r ? Et(i, u, !0) : Et(i, r, n ? u.replace(/\\/g, "") : u), Et(t, s, i)), t ); }, }; const St = S.default, kt = m.default, xt = y.default, Ot = v.default, Tt = E.default, { randomBytes: Nt, createHash: Rt } = w.default, { URL: Ct } = f.default, Lt = Ne, At = ze, Bt = rt, { BINARY_TYPES: Pt, EMPTY_BUFFER: It, GUID: Dt, kForOnEventAttribute: Ut, kListener: qt, kStatusCode: jt, kWebSocket: Ft, NOOP: Mt, } = ae, { EventTarget: { addEventListener: Wt, removeEventListener: Vt }, } = bt, { format: $t, parse: Gt } = wt, { toBuffer: Ht } = oe.exports, zt = ["CONNECTING", "OPEN", "CLOSING", "CLOSED"], Yt = /^[!#$%&'*+\-.0-9A-Z^_`|a-z~]+$/, Kt = [8, 13]; class Xt extends St { constructor(e, t, s) { super(), (this._binaryType = Pt[0]), (this._closeCode = 1006), (this._closeFrameReceived = !1), (this._closeFrameSent = !1), (this._closeMessage = It), (this._closeTimer = null), (this._extensions = {}), (this._protocol = ""), (this._readyState = Xt.CONNECTING), (this._receiver = null), (this._sender = null), (this._socket = null), null !== e ? ((this._bufferedAmount = 0), (this._isServer = !1), (this._redirects = 0), void 0 === t ? (t = []) : Array.isArray(t) || ("object" == typeof t && null !== t ? ((s = t), (t = [])) : (t = [t])), Jt(this, e, t, s)) : (this._isServer = !0); } get binaryType() { return this._binaryType; } set binaryType(e) { Pt.includes(e) && ((this._binaryType = e), this._receiver && (this._receiver._binaryType = e)); } get bufferedAmount() { return this._socket ? this._socket._writableState.length + this._sender._bufferedBytes : this._bufferedAmount; } get extensions() { return Object.keys(this._extensions).join(); } get onclose() { return null; } get onerror() { return null; } get onopen() { return null; } get onmessage() { return null; } get protocol() { return this._protocol; } get readyState() { return this._readyState; } get url() { return this._url; } setSocket(e, t, s) { const r = new At({ binaryType: this.binaryType, extensions: this._extensions, isServer: this._isServer, maxPayload: s.maxPayload, skipUTF8Validation: s.skipUTF8Validation, }); (this._sender = new Bt(e, this._extensions)), (this._receiver = r), (this._socket = e), (r[Ft] = this), (e[Ft] = this), r.on("conclude", ss), r.on("drain", rs), r.on("error", is), r.on("message", os), r.on("ping", as), r.on("pong", hs), e.setTimeout(0), e.setNoDelay(), t.length > 0 && e.unshift(t), e.on("close", ls), e.on("data", ds), e.on("end", us), e.on("error", ps), (this._readyState = Xt.OPEN), this.emit("open"); } emitClose() { if (!this._socket) return ( (this._readyState = Xt.CLOSED), void this.emit("close", this._closeCode, this._closeMessage) ); this._extensions[Lt.extensionName] && this._extensions[Lt.extensionName].cleanup(), this._receiver.removeAllListeners(), (this._readyState = Xt.CLOSED), this.emit("close", this._closeCode, this._closeMessage); } close(e, t) { if (this.readyState !== Xt.CLOSED) { if (this.readyState === Xt.CONNECTING) { const e = "WebSocket was closed before the connection was established"; return es(this, this._req, e); } this.readyState !== Xt.CLOSING ? ((this._readyState = Xt.CLOSING), this._sender.close(e, t, !this._isServer, (e) => { e || ((this._closeFrameSent = !0), (this._closeFrameReceived || this._receiver._writableState.errorEmitted) && this._socket.end()); }), (this._closeTimer = setTimeout( this._socket.destroy.bind(this._socket), 3e4 ))) : this._closeFrameSent && (this._closeFrameReceived || this._receiver._writableState.errorEmitted) && this._socket.end(); } } ping(e, t, s) { if (this.readyState === Xt.CONNECTING) throw new Error("WebSocket is not open: readyState 0 (CONNECTING)"); "function" == typeof e ? ((s = e), (e = t = void 0)) : "function" == typeof t && ((s = t), (t = void 0)), "number" == typeof e && (e = e.toString()), this.readyState === Xt.OPEN ? (void 0 === t && (t = !this._isServer), this._sender.ping(e || It, t, s)) : ts(this, e, s); } pong(e, t, s) { if (this.readyState === Xt.CONNECTING) throw new Error("WebSocket is not open: readyState 0 (CONNECTING)"); "function" == typeof e ? ((s = e), (e = t = void 0)) : "function" == typeof t && ((s = t), (t = void 0)), "number" == typeof e && (e = e.toString()), this.readyState === Xt.OPEN ? (void 0 === t && (t = !this._isServer), this._sender.pong(e || It, t, s)) : ts(this, e, s); } send(e, t, s) { if (this.readyState === Xt.CONNECTING) throw new Error("WebSocket is not open: readyState 0 (CONNECTING)"); if ( ("function" == typeof t && ((s = t), (t = {})), "number" == typeof e && (e = e.toString()), this.readyState !== Xt.OPEN) ) return void ts(this, e, s); const r = { binary: "string" != typeof e, mask: !this._isServer, compress: !0, fin: !0, ...t, }; this._extensions[Lt.extensionName] || (r.compress = !1), this._sender.send(e || It, r, s); } terminate() { if (this.readyState !== Xt.CLOSED) { if (this.readyState === Xt.CONNECTING) { const e = "WebSocket was closed before the connection was established"; return es(this, this._req, e); } this._socket && ((this._readyState = Xt.CLOSING), this._socket.destroy()); } } } function Jt(e, t, s, r) { const i = { protocolVersion: Kt[1], maxPayload: 104857600, skipUTF8Validation: !1, perMessageDeflate: !0, followRedirects: !1, maxRedirects: 10, ...r, createConnection: void 0, socketPath: void 0, hostname: void 0, protocol: void 0, timeout: void 0, method: void 0, host: void 0, path: void 0, port: void 0, }; if (!Kt.includes(i.protocolVersion)) throw new RangeError( `Unsupported protocol version: ${ i.protocolVersion } (supported versions: ${Kt.join(", ")})` ); let n; if (t instanceof Ct) (n = t), (e._url = t.href); else { try { n = new Ct(t); } catch (e) { throw new SyntaxError(`Invalid URL: ${t}`); } e._url = t; } const o = "wss:" === n.protocol, a = "ws+unix:" === n.protocol; if ("ws:" !== n.protocol && !o && !a) throw new SyntaxError( 'The URL\'s protocol must be one of "ws:", "wss:", or "ws+unix:"' ); if (a && !n.pathname) throw new SyntaxError("The URL's pathname is empty"); if (n.hash) throw new SyntaxError("The URL contains a fragment identifier"); const h = o ? 443 : 80, c = Nt(16).toString("base64"), l = o ? kt.get : xt.get, d = new Set(); let u; if ( ((i.createConnection = o ? Zt : Qt), (i.defaultPort = i.defaultPort || h), (i.port = n.port || h), (i.host = n.hostname.startsWith("[") ? n.hostname.slice(1, -1) : n.hostname), (i.headers = { "Sec-WebSocket-Version": i.protocolVersion, "Sec-WebSocket-Key": c, Connection: "Upgrade", Upgrade: "websocket", ...i.headers, }), (i.path = n.pathname + n.search), (i.timeout = i.handshakeTimeout), i.perMessageDeflate && ((u = new Lt( !0 !== i.perMessageDeflate ? i.perMessageDeflate : {}, !1, i.maxPayload )), (i.headers["Sec-WebSocket-Extensions"] = $t({ [Lt.extensionName]: u.offer(), }))), s.length) ) { for (const e of s) { if ("string" != typeof e || !Yt.test(e) || d.has(e)) throw new SyntaxError( "An invalid or duplicated subprotocol was specified" ); d.add(e); } i.headers["Sec-WebSocket-Protocol"] = s.join(","); } if ( (i.origin && (i.protocolVersion < 13 ? (i.headers["Sec-WebSocket-Origin"] = i.origin) : (i.headers.Origin = i.origin)), (n.username || n.password) && (i.auth = `${n.username}:${n.password}`), a) ) { const e = i.path.split(":"); (i.socketPath = e[0]), (i.path = e[1]); } let p = (e._req = l(i)); i.timeout && p.on("timeout", () => { es(e, p, "Opening handshake has timed out"); }), p.on("error", (t) => { null === p || p.aborted || ((p = e._req = null), (e._readyState = Xt.CLOSING), e.emit("error", t), e.emitClose()); }), p.on("response", (n) => { const o = n.headers.location, a = n.statusCode; if (o && i.followRedirects && a >= 300 && a < 400) { if (++e._redirects > i.maxRedirects) return void es(e, p, "Maximum redirects exceeded"); p.abort(); const n = new Ct(o, t); Jt(e, n, s, r); } else e.emit("unexpected-response", p, n) || es(e, p, `Unexpected server response: ${n.statusCode}`); }), p.on("upgrade", (t, s, r) => { if ((e.emit("upgrade", t), e.readyState !== Xt.CONNECTING)) return; p = e._req = null; const n = Rt("sha1") .update(c + Dt) .digest("base64"); if (t.headers["sec-websocket-accept"] !== n) return void es(e, s, "Invalid Sec-WebSocket-Accept header"); const o = t.headers["sec-websocket-protocol"]; let a; if ( (void 0 !== o ? d.size ? d.has(o) || (a = "Server sent an invalid subprotocol") : (a = "Server sent a subprotocol but none was requested") : d.size && (a = "Server sent no subprotocol"), a) ) return void es(e, s, a); o && (e._protocol = o); const h = t.headers["sec-websocket-extensions"]; if (void 0 !== h) { if (!u) { return void es( e, s, "Server sent a Sec-WebSocket-Extensions header but no extension was requested" ); } let t; try { t = Gt(h); } catch (t) { return void es(e, s, "Invalid Sec-WebSocket-Extensions header"); } const r = Object.keys(t); if (1 !== r.length || r[0] !== Lt.extensionName) { return void es( e, s, "Server indicated an extension that was not requested" ); } try { u.accept(t[Lt.extensionName]); } catch (t) { return void es(e, s, "Invalid Sec-WebSocket-Extensions header"); } e._extensions[Lt.extensionName] = u; } e.setSocket(s, r, { maxPayload: i.maxPayload, skipUTF8Validation: i.skipUTF8Validation, }); }); } function Qt(e) { return (e.path = e.socketPath), Ot.connect(e); } function Zt(e) { return ( (e.path = void 0), e.servername || "" === e.servername || (e.servername = Ot.isIP(e.host) ? "" : e.host), Tt.connect(e) ); } function es(e, t, s) { e._readyState = Xt.CLOSING; const r = new Error(s); Error.captureStackTrace(r, es), t.setHeader ? (t.abort(), t.socket && !t.socket.destroyed && t.socket.destroy(), t.once("abort", e.emitClose.bind(e)), e.emit("error", r)) : (t.destroy(r), t.once("error", e.emit.bind(e, "error")), t.once("close", e.emitClose.bind(e))); } function ts(e, t, s) { if (t) { const s = Ht(t).length; e._socket ? (e._sender._bufferedBytes += s) : (e._bufferedAmount += s); } if (s) { s( new Error( `WebSocket is not open: readyState ${e.readyState} (${ zt[e.readyState] })` ) ); } } function ss(e, t) { const s = this[Ft]; (s._closeFrameReceived = !0), (s._closeMessage = t), (s._closeCode = e), void 0 !== s._socket[Ft] && (s._socket.removeListener("data", ds), process.nextTick(cs, s._socket), 1005 === e ? s.close() : s.close(e, t)); } function rs() { this[Ft]._socket.resume(); } function is(e) { const t = this[Ft]; void 0 !== t._socket[Ft] && (t._socket.removeListener("data", ds), process.nextTick(cs, t._socket), t.close(e[jt])), t.emit("error", e); } function ns() { this[Ft].emitClose(); } function os(e, t) { this[Ft].emit("message", e, t); } function as(e) { const t = this[Ft]; t.pong(e, !t._isServer, Mt), t.emit("ping", e); } function hs(e) { this[Ft].emit("pong", e); } function cs(e) { e.resume(); } function ls() { const e = this[Ft]; let t; this.removeListener("close", ls), this.removeListener("data", ds), this.removeListener("end", us), (e._readyState = Xt.CLOSING), this._readableState.endEmitted || e._closeFrameReceived || e._receiver._writableState.errorEmitted || null === (t = e._socket.read()) || e._receiver.write(t), e._receiver.end(), (this[Ft] = void 0), clearTimeout(e._closeTimer), e._receiver._writableState.finished || e._receiver._writableState.errorEmitted ? e.emitClose() : (e._receiver.on("error", ns), e._receiver.on("finish", ns)); } function ds(e) { this[Ft]._receiver.write(e) || this.pause(); } function us() { const e = this[Ft]; (e._readyState = Xt.CLOSING), e._receiver.end(), this.end(); } function ps() { const e = this[Ft]; this.removeListener("error", ps), this.on("error", Mt), e && ((e._readyState = Xt.CLOSING), this.destroy()); } Object.defineProperty(Xt, "CONNECTING", { enumerable: !0, value: zt.indexOf("CONNECTING"), }), Object.defineProperty(Xt.prototype, "CONNECTING", { enumerable: !0, value: zt.indexOf("CONNECTING"), }), Object.defineProperty(Xt, "OPEN", { enumerable: !0, value: zt.indexOf("OPEN"), }), Object.defineProperty(Xt.prototype, "OPEN", { enumerable: !0, value: zt.indexOf("OPEN"), }), Object.defineProperty(Xt, "CLOSING", { enumerable: !0, value: zt.indexOf("CLOSING"), }), Object.defineProperty(Xt.prototype, "CLOSING", { enumerable: !0, value: zt.indexOf("CLOSING"), }), Object.defineProperty(Xt, "CLOSED", { enumerable: !0, value: zt.indexOf("CLOSED"), }), Object.defineProperty(Xt.prototype, "CLOSED", { enumerable: !0, value: zt.indexOf("CLOSED"), }), [ "binaryType", "bufferedAmount", "extensions", "protocol", "readyState", "url", ].forEach((e) => { Object.defineProperty(Xt.prototype, e, { enumerable: !0 }); }), ["open", "error", "close", "message"].forEach((e) => { Object.defineProperty(Xt.prototype, `on${e}`, { enumerable: !0, get() { for (const t of this.listeners(e)) if (t[Ut]) return t[qt]; return null; }, set(t) { for (const t of this.listeners(e)) if (t[Ut]) { this.removeListener(e, t); break; } "function" == typeof t && this.addEventListener(e, t, { [Ut]: !0 }); }, }); }), (Xt.prototype.addEventListener = Wt), (Xt.prototype.removeEventListener = Vt); const fs = Xt, _s = process.nextTick, ys = "undefined" != typeof navigator && "string" == typeof navigator.product && "reactnative" === navigator.product.toLowerCase(); const ms = { websocket: class extends M { constructor(e) { super(e), (this.supportsBinary = !e.forceBase64); } get name() { return "websocket"; } doOpen() { if (!this.check()) return; const e = this.uri(), t = this.opts.protocols, s = ys ? {} : D( this.opts, "agent", "perMessageDeflate", "pfx", "key", "passphrase", "cert", "ca", "ciphers", "rejectUnauthorized", "localAddress", "protocolVersion", "origin", "maxPayload", "family", "checkServerIdentity" ); this.opts.extraHeaders && (s.headers = this.opts.extraHeaders); try { this.ws = new fs(e, t, s); } catch (e) { return this.emitReserved("error", e); } (this.ws.binaryType = this.socket.binaryType || "nodebuffer"), this.addEventListeners(); } addEventListeners() { (this.ws.onopen = () => { this.opts.autoUnref && this.ws._socket.unref(), this.onOpen(); }), (this.ws.onclose = (e) => this.onClose({ description: "websocket connection closed", context: e, })), (this.ws.onmessage = (e) => this.onData(e.data)), (this.ws.onerror = (e) => this.onError("websocket error", e)); } write(e) { this.writable = !1; for (let t = 0; t < e.length; t++) { const s = e[t], r = t === e.length - 1; T(s, this.supportsBinary, (e) => { const t = {}; if ( (s.options && (t.compress = s.options.compress), this.opts.perMessageDeflate) ) { ("string" == typeof e ? Buffer.byteLength(e) : e.length) < this.opts.perMessageDeflate.threshold && (t.compress = !1); } try { this.ws.send(e, t); } catch (e) {} r && _s(() => { (this.writable = !0), this.emitReserved("drain"); }, this.setTimeoutFn); }); } } doClose() { void 0 !== this.ws && (this.ws.close(), (this.ws = null)); } uri() { let e = this.query || {}; const t = this.opts.secure ? "wss" : "ws"; let s = ""; this.opts.port && (("wss" === t && 443 !== Number(this.opts.port)) || ("ws" === t && 80 !== Number(this.opts.port))) && (s = ":" + this.opts.port), this.opts.timestampRequests && (e[this.opts.timestampParam] = Y()), this.supportsBinary || (e.b64 = 1); const r = K(e); return ( t + "://" + (-1 !== this.opts.hostname.indexOf(":") ? "[" + this.opts.hostname + "]" : this.opts.hostname) + s + this.opts.path + (r.length ? "?" + r : "") ); } check() { return !!fs; } }, polling: class extends M { constructor(e) { if ((super(e), (this.polling = !1), "undefined" != typeof location)) { const t = "https:" === location.protocol; let s = location.port; s || (s = t ? "443" : "80"), (this.xd = ("undefined" != typeof location && e.hostname !== location.hostname) || s !== e.port), (this.xs = e.secure !== t); } const t = e && e.forceBase64; this.supportsBinary = re && !t; } get name() { return "polling"; } doOpen() { this.poll(); } pause(e) { this.readyState = "pausing"; const t = () => { (this.readyState = "paused"), e(); }; if (this.polling || !this.writable) { let e = 0; this.polling && (e++, this.once("pollComplete", function () { --e || t(); })), this.writable || (e++, this.once("drain", function () { --e || t(); })); } else t(); } poll() { (this.polling = !0), this.doPoll(), this.emitReserved("poll"); } onData(e) { ((e, t) => { const s = e.split(B), r = []; for (let e = 0; e < s.length; e++) { const i = C(s[e], t); if ((r.push(i), "error" === i.type)) break; } return r; })(e, this.socket.binaryType).forEach((e) => { if ( ("opening" === this.readyState && "open" === e.type && this.onOpen(), "close" === e.type) ) return ( this.onClose({ description: "transport closed by the server" }), !1 ); this.onPacket(e); }), "closed" !== this.readyState && ((this.polling = !1), this.emitReserved("pollComplete"), "open" === this.readyState && this.poll()); } doClose() { const e = () => { this.write([{ type: "close" }]); }; "open" === this.readyState ? e() : this.once("open", e); } write(e) { (this.writable = !1), ((e, t) => { const s = e.length, r = new Array(s); let i = 0; e.forEach((e, n) => { T(e, !1, (e) => { (r[n] = e), ++i === s && t(r.join(B)); }); }); })(e, (e) => { this.doWrite(e, () => { (this.writable = !0), this.emitReserved("drain"); }); }); } uri() { let e = this.query || {}; const t = this.opts.secure ? "https" : "http"; let s = ""; !1 !== this.opts.timestampRequests && (e[this.opts.timestampParam] = Y()), this.supportsBinary || e.sid || (e.b64 = 1), this.opts.port && (("https" === t && 443 !== Number(this.opts.port)) || ("http" === t && 80 !== Number(this.opts.port))) && (s = ":" + this.opts.port); const r = K(e); return ( t + "://" + (-1 !== this.opts.hostname.indexOf(":") ? "[" + this.opts.hostname + "]" : this.opts.hostname) + s + this.opts.path + (r.length ? "?" + r : "") ); } request(e = {}) { return ( Object.assign(e, { xd: this.xd, xs: this.xs }, this.opts), new ie(this.uri(), e) ); } doWrite(e, t) { const s = this.request({ method: "POST", data: e }); s.on("success", t), s.on("error", (e, t) => { this.onError("xhr post error", e, t); }); } doPoll() { const e = this.request(); e.on("data", this.onData.bind(this)), e.on("error", (e, t) => { this.onError("xhr poll error", e, t); }), (this.pollXhr = e); } }, }, gs = /^(?:(?![^:@]+:[^:@\/]*@)(http|https|ws|wss):\/\/)?((?:(([^:@]*)(?::([^:@]*))?)?@)?((?:[a-f0-9]{0,4}:){2,7}[a-f0-9]{0,4}|[^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/, bs = [ "source", "protocol", "authority", "userInfo", "user", "password", "host", "port", "relative", "path", "directory", "file", "query", "anchor", ]; function vs(e) { const t = e, s = e.indexOf("["), r = e.indexOf("]"); -1 != s && -1 != r && (e = e.substring(0, s) + e.substring(s, r).replace(/:/g, ";") + e.substring(r, e.length)); let i = gs.exec(e || ""), n = {}, o = 14; for (; o--; ) n[bs[o]] = i[o] || ""; return ( -1 != s && -1 != r && ((n.source = t), (n.host = n.host.substring(1, n.host.length - 1).replace(/;/g, ":")), (n.authority = n.authority .replace("[", "") .replace("]", "") .replace(/;/g, ":")), (n.ipv6uri = !0)), (n.pathNames = (function (e, t) { const s = /\/{2,9}/g, r = t.replace(s, "/").split("/"); ("/" != t.substr(0, 1) && 0 !== t.length) || r.splice(0, 1); "/" == t.substr(t.length - 1, 1) && r.splice(r.length - 1, 1); return r; })(0, n.path)), (n.queryKey = (function (e, t) { const s = {}; return ( t.replace(/(?:^|&)([^&=]*)=?([^&]*)/g, function (e, t, r) { t && (s[t] = r); }), s ); })(0, n.query)), n ); } class Es extends P { constructor(e, t = {}) { super(), e && "object" == typeof e && ((t = e), (e = null)), e ? ((e = vs(e)), (t.hostname = e.host), (t.secure = "https" === e.protocol || "wss" === e.protocol), (t.port = e.port), e.query && (t.query = e.query)) : t.host && (t.hostname = vs(t.host).host), j(this, t), (this.secure = null != t.secure ? t.secure : "undefined" != typeof location && "https:" === location.protocol), t.hostname && !t.port && (t.port = this.secure ? "443" : "80"), (this.hostname = t.hostname || ("undefined" != typeof location ? location.hostname : "localhost")), (this.port = t.port || ("undefined" != typeof location && location.port ? location.port : this.secure ? "443" : "80")), (this.transports = t.transports || ["polling", "websocket"]), (this.readyState = ""), (this.writeBuffer = []), (this.prevBufferLen = 0), (this.opts = Object.assign( { path: "/engine.io", agent: !1, withCredentials: !1, upgrade: !0, timestampParam: "t", rememberUpgrade: !1, rejectUnauthorized: !0, perMessageDeflate: { threshold: 1024 }, transportOptions: {}, closeOnBeforeunload: !0, }, t )), (this.opts.path = this.opts.path.replace(/\/$/, "") + "/"), "string" == typeof this.opts.query && (this.opts.query = (function (e) { let t = {}, s = e.split("&"); for (let e = 0, r = s.length; e < r; e++) { let r = s[e].split("="); t[decodeURIComponent(r[0])] = decodeURIComponent(r[1]); } return t; })(this.opts.query)), (this.id = null), (this.upgrades = null), (this.pingInterval = null), (this.pingTimeout = null), (this.pingTimeoutTimer = null), "function" == typeof addEventListener && (this.opts.closeOnBeforeunload && addEventListener( "beforeunload", () => { this.transport && (this.transport.removeAllListeners(), this.transport.close()); }, !1 ), "localhost" !== this.hostname && ((this.offlineEventListener = () => { this.onClose("transport close", { description: "network connection lost", }); }), addEventListener("offline", this.offlineEventListener, !1))), this.open(); } createTransport(e) { const t = Object.assign({}, this.opts.query); (t.EIO = 4), (t.transport = e), this.id && (t.sid = this.id); const s = Object.assign({}, this.opts.transportOptions[e], this.opts, { query: t, socket: this, hostname: this.hostname, secure: this.secure, port: this.port, }); return new ms[e](s); } open() { let e; if ( this.opts.rememberUpgrade && Es.priorWebsocketSuccess && -1 !== this.transports.indexOf("websocket") ) e = "websocket"; else { if (0 === this.transports.length) return void this.setTimeoutFn(() => { this.emitReserved("error", "No transports available"); }, 0); e = this.transports[0]; } this.readyState = "opening"; try { e = this.createTransport(e); } catch (e) { return this.transports.shift(), void this.open(); } e.open(), this.setTransport(e); } setTransport(e) { this.transport && this.transport.removeAllListeners(), (this.transport = e), e .on("drain", this.onDrain.bind(this)) .on("packet", this.onPacket.bind(this)) .on("error", this.onError.bind(this)) .on("close", (e) => this.onClose("transport close", e)); } probe(e) { let t = this.createTransport(e), s = !1; Es.priorWebsocketSuccess = !1; const r = () => { s || (t.send([{ type: "ping", data: "probe" }]), t.once("packet", (e) => { if (!s) if ("pong" === e.type && "probe" === e.data) { if ( ((this.upgrading = !0), this.emitReserved("upgrading", t), !t) ) return; (Es.priorWebsocketSuccess = "websocket" === t.name), this.transport.pause(() => { s || ("closed" !== this.readyState && (c(), this.setTransport(t), t.send([{ type: "upgrade" }]), this.emitReserved("upgrade", t), (t = null), (this.upgrading = !1), this.flush())); }); } else { const e = new Error("probe error"); (e.transport = t.name), this.emitReserved("upgradeError", e); } })); }; function i() { s || ((s = !0), c(), t.close(), (t = null)); } const n = (e) => { const s = new Error("probe error: " + e); (s.transport = t.name), i(), this.emitReserved("upgradeError", s); }; function o() { n("transport closed"); } function a() { n("socket closed"); } function h(e) { t && e.name !== t.name && i(); } const c = () => { t.removeListener("open", r), t.removeListener("error", n), t.removeListener("close", o), this.off("close", a), this.off("upgrading", h); }; t.once("open", r), t.once("error", n), t.once("close", o), this.once("close", a), this.once("upgrading", h), t.open(); } onOpen() { if ( ((this.readyState = "open"), (Es.priorWebsocketSuccess = "websocket" === this.transport.name), this.emitReserved("open"), this.flush(), "open" === this.readyState && this.opts.upgrade && this.transport.pause) ) { let e = 0; const t = this.upgrades.length; for (; e < t; e++) this.probe(this.upgrades[e]); } } onPacket(e) { if ( "opening" === this.readyState || "open" === this.readyState || "closing" === this.readyState ) switch ( (this.emitReserved("packet", e), this.emitReserved("heartbeat"), e.type) ) { case "open": this.onHandshake(JSON.parse(e.data)); break; case "ping": this.resetPingTimeout(), this.sendPacket("pong"), this.emitReserved("ping"), this.emitReserved("pong"); break; case "error": const t = new Error("server error"); (t.code = e.data), this.onError(t); break; case "message": this.emitReserved("data", e.data), this.emitReserved("message", e.data); } } onHandshake(e) { this.emitReserved("handshake", e), (this.id = e.sid), (this.transport.query.sid = e.sid), (this.upgrades = this.filterUpgrades(e.upgrades)), (this.pingInterval = e.pingInterval), (this.pingTimeout = e.pingTimeout), (this.maxPayload = e.maxPayload), this.onOpen(), "closed" !== this.readyState && this.resetPingTimeout(); } resetPingTimeout() { this.clearTimeoutFn(this.pingTimeoutTimer), (this.pingTimeoutTimer = this.setTimeoutFn(() => { this.onClose("ping timeout"); }, this.pingInterval + this.pingTimeout)), this.opts.autoUnref && this.pingTimeoutTimer.unref(); } onDrain() { this.writeBuffer.splice(0, this.prevBufferLen), (this.prevBufferLen = 0), 0 === this.writeBuffer.length ? this.emitReserved("drain") : this.flush(); } flush() { if ( "closed" !== this.readyState && this.transport.writable && !this.upgrading && this.writeBuffer.length ) { const e = this.getWritablePackets(); this.transport.send(e), (this.prevBufferLen = e.length), this.emitReserved("flush"); } } getWritablePackets() { if ( !( this.maxPayload && "polling" === this.transport.name && this.writeBuffer.length > 1 ) ) return this.writeBuffer; let e = 1; for (let s = 0; s < this.writeBuffer.length; s++) { const r = this.writeBuffer[s].data; if ( (r && (e += "string" == typeof (t = r) ? (function (e) { let t = 0, s = 0; for (let r = 0, i = e.length; r < i; r++) (t = e.charCodeAt(r)), t < 128 ? (s += 1) : t < 2048 ? (s += 2) : t < 55296 || t >= 57344 ? (s += 3) : (r++, (s += 4)); return s; })(t) : Math.ceil(1.33 * (t.byteLength || t.size))), s > 0 && e > this.maxPayload) ) return this.writeBuffer.slice(0, s); e += 2; } var t; return this.writeBuffer; } write(e, t, s) { return this.sendPacket("message", e, t, s), this; } send(e, t, s) { return this.sendPacket("message", e, t, s), this; } sendPacket(e, t, s, r) { if ( ("function" == typeof t && ((r = t), (t = void 0)), "function" == typeof s && ((r = s), (s = null)), "closing" === this.readyState || "closed" === this.readyState) ) return; (s = s || {}).compress = !1 !== s.compress; const i = { type: e, data: t, options: s }; this.emitReserved("packetCreate", i), this.writeBuffer.push(i), r && this.once("flush", r), this.flush(); } close() { const e = () => { this.onClose("forced close"), this.transport.close(); }, t = () => { this.off("upgrade", t), this.off("upgradeError", t), e(); }, s = () => { this.once("upgrade", t), this.once("upgradeError", t); }; return ( ("opening" !== this.readyState && "open" !== this.readyState) || ((this.readyState = "closing"), this.writeBuffer.length ? this.once("drain", () => { this.upgrading ? s() : e(); }) : this.upgrading ? s() : e()), this ); } onError(e) { (Es.priorWebsocketSuccess = !1), this.emitReserved("error", e), this.onClose("transport error", e); } onClose(e, t) { ("opening" !== this.readyState && "open" !== this.readyState && "closing" !== this.readyState) || (this.clearTimeoutFn(this.pingTimeoutTimer), this.transport.removeAllListeners("close"), this.transport.close(), this.transport.removeAllListeners(), "function" == typeof removeEventListener && removeEventListener("offline", this.offlineEventListener, !1), (this.readyState = "closed"), (this.id = null), this.emitReserved("close", e, t), (this.writeBuffer = []), (this.prevBufferLen = 0)); } filterUpgrades(e) { const t = []; let s = 0; const r = e.length; for (; s < r; s++) ~this.transports.indexOf(e[s]) && t.push(e[s]); return t; } } Es.protocol = 4; const ws = "function" == typeof ArrayBuffer, Ss = Object.prototype.toString, ks = "function" == typeof Blob || ("undefined" != typeof Blob && "[object BlobConstructor]" === Ss.call(Blob)), xs = "function" == typeof File || ("undefined" != typeof File && "[object FileConstructor]" === Ss.call(File)); function Os(e) { return ( (ws && (e instanceof ArrayBuffer || ((e) => "function" == typeof ArrayBuffer.isView ? ArrayBuffer.isView(e) : e.buffer instanceof ArrayBuffer)(e))) || (ks && e instanceof Blob) || (xs && e instanceof File) ); } function Ts(e, t) { if (!e || "object" != typeof e) return !1; if (Array.isArray(e)) { for (let t = 0, s = e.length; t < s; t++) if (Ts(e[t])) return !0; return !1; } if (Os(e)) return !0; if (e.toJSON && "function" == typeof e.toJSON && 1 === arguments.length) return Ts(e.toJSON(), !0); for (const t in e) if (Object.prototype.hasOwnProperty.call(e, t) && Ts(e[t])) return !0; return !1; } function Ns(e) { const t = [], s = e.data, r = e; return ( (r.data = Rs(s, t)), (r.attachments = t.length), { packet: r, buffers: t } ); } function Rs(e, t) { if (!e) return e; if (Os(e)) { const s = { _placeholder: !0, num: t.length }; return t.push(e), s; } if (Array.isArray(e)) { const s = new Array(e.length); for (let r = 0; r < e.length; r++) s[r] = Rs(e[r], t); return s; } if ("object" == typeof e && !(e instanceof Date)) { const s = {}; for (const r in e) Object.prototype.hasOwnProperty.call(e, r) && (s[r] = Rs(e[r], t)); return s; } return e; } function Cs(e, t) { return (e.data = Ls(e.data, t)), (e.attachments = void 0), e; } function Ls(e, t) { if (!e) return e; if (e && e._placeholder) return t[e.num]; if (Array.isArray(e)) for (let s = 0; s < e.length; s++) e[s] = Ls(e[s], t); else if ("object" == typeof e) for (const s in e) Object.prototype.hasOwnProperty.call(e, s) && (e[s] = Ls(e[s], t)); return e; } var As; !(function (e) { (e[(e.CONNECT = 0)] = "CONNECT"), (e[(e.DISCONNECT = 1)] = "DISCONNECT"), (e[(e.EVENT = 2)] = "EVENT"), (e[(e.ACK = 3)] = "ACK"), (e[(e.CONNECT_ERROR = 4)] = "CONNECT_ERROR"), (e[(e.BINARY_EVENT = 5)] = "BINARY_EVENT"), (e[(e.BINARY_ACK = 6)] = "BINARY_ACK"); })(As || (As = {})); class Bs extends P { constructor(e) { super(), (this.reviver = e); } add(e) { let t; if ("string" == typeof e) (t = this.decodeString(e)), t.type === As.BINARY_EVENT || t.type === As.BINARY_ACK ? ((this.reconstructor = new Ps(t)), 0 === t.attachments && super.emitReserved("decoded", t)) : super.emitReserved("decoded", t); else { if (!Os(e) && !e.base64) throw new Error("Unknown type: " + e); if (!this.reconstructor) throw new Error("got binary data when not reconstructing a packet"); (t = this.reconstructor.takeBinaryData(e)), t && ((this.reconstructor = null), super.emitReserved("decoded", t)); } } decodeString(e) { let t = 0; const s = { type: Number(e.charAt(0)) }; if (void 0 === As[s.type]) throw new Error("unknown packet type " + s.type); if (s.type === As.BINARY_EVENT || s.type === As.BINARY_ACK) { const r = t + 1; for (; "-" !== e.charAt(++t) && t != e.length; ); const i = e.substring(r, t); if (i != Number(i) || "-" !== e.charAt(t)) throw new Error("Illegal attachments"); s.attachments = Number(i); } if ("/" === e.charAt(t + 1)) { const r = t + 1; for (; ++t; ) { if ("," === e.charAt(t)) break; if (t === e.length) break; } s.nsp = e.substring(r, t); } else s.nsp = "/"; const r = e.charAt(t + 1); if ("" !== r && Number(r) == r) { const r = t + 1; for (; ++t; ) { const s = e.charAt(t); if (null == s || Number(s) != s) { --t; break; } if (t === e.length) break; } s.id = Number(e.substring(r, t + 1)); } if (e.charAt(++t)) { const r = this.tryParse(e.substr(t)); if (!Bs.isPayloadValid(s.type, r)) throw new Error("invalid payload"); s.data = r; } return s; } tryParse(e) { try { return JSON.parse(e, this.reviver); } catch (e) { return !1; } } static isPayloadValid(e, t) { switch (e) { case As.CONNECT: return "object" == typeof t; case As.DISCONNECT: return void 0 === t; case As.CONNECT_ERROR: return "string" == typeof t || "object" == typeof t; case As.EVENT: case As.BINARY_EVENT: return Array.isArray(t) && t.length > 0; case As.ACK: case As.BINARY_ACK: return Array.isArray(t); } } destroy() { this.reconstructor && this.reconstructor.finishedReconstruction(); } } class Ps { constructor(e) { (this.packet = e), (this.buffers = []), (this.reconPack = e); } takeBinaryData(e) { if ( (this.buffers.push(e), this.buffers.length === this.reconPack.attachments) ) { const e = Cs(this.reconPack, this.buffers); return this.finishedReconstruction(), e; } return null; } finishedReconstruction() { (this.reconPack = null), (this.buffers = []); } } var Is = Object.freeze({ __proto__: null, protocol: 5, get PacketType() { return As; }, Encoder: class { constructor(e) { this.replacer = e; } encode(e) { return (e.type !== As.EVENT && e.type !== As.ACK) || !Ts(e) ? [this.encodeAsString(e)] : ((e.type = e.type === As.EVENT ? As.BINARY_EVENT : As.BINARY_ACK), this.encodeAsBinary(e)); } encodeAsString(e) { let t = "" + e.type; return ( (e.type !== As.BINARY_EVENT && e.type !== As.BINARY_ACK) || (t += e.attachments + "-"), e.nsp && "/" !== e.nsp && (t += e.nsp + ","), null != e.id && (t += e.id), null != e.data && (t += JSON.stringify(e.data, this.replacer)), t ); } encodeAsBinary(e) { const t = Ns(e), s = this.encodeAsString(t.packet), r = t.buffers; return r.unshift(s), r; } }, Decoder: Bs, }); function Ds(e, t, s) { return ( e.on(t, s), function () { e.off(t, s); } ); } const Us = Object.freeze({ connect: 1, connect_error: 1, disconnect: 1, disconnecting: 1, newListener: 1, removeListener: 1, }); class qs extends P { constructor(e, t, s) { super(), (this.connected = !1), (this.receiveBuffer = []), (this.sendBuffer = []), (this.ids = 0), (this.acks = {}), (this.flags = {}), (this.io = e), (this.nsp = t), s && s.auth && (this.auth = s.auth), this.io._autoConnect && this.open(); } get disconnected() { return !this.connected; } subEvents() { if (this.subs) return; const e = this.io; this.subs = [ Ds(e, "open", this.onopen.bind(this)), Ds(e, "packet", this.onpacket.bind(this)), Ds(e, "error", this.onerror.bind(this)), Ds(e, "close", this.onclose.bind(this)), ]; } get active() { return !!this.subs; } connect() { return ( this.connected || (this.subEvents(), this.io._reconnecting || this.io.open(), "open" === this.io._readyState && this.onopen()), this ); } open() { return this.connect(); } send(...e) { return e.unshift("message"), this.emit.apply(this, e), this; } emit(e, ...t) { if (Us.hasOwnProperty(e)) throw new Error('"' + e + '" is a reserved event name'); t.unshift(e); const s = { type: As.EVENT, data: t, options: {} }; if ( ((s.options.compress = !1 !== this.flags.compress), "function" == typeof t[t.length - 1]) ) { const e = this.ids++, r = t.pop(); this._registerAckCallback(e, r), (s.id = e); } const r = this.io.engine && this.io.engine.transport && this.io.engine.transport.writable; return ( (this.flags.volatile && (!r || !this.connected)) || (this.connected ? (this.notifyOutgoingListeners(s), this.packet(s)) : this.sendBuffer.push(s)), (this.flags = {}), this ); } _registerAckCallback(e, t) { const s = this.flags.timeout; if (void 0 === s) return void (this.acks[e] = t); const r = this.io.setTimeoutFn(() => { delete this.acks[e]; for (let t = 0; t < this.sendBuffer.length; t++) this.sendBuffer[t].id === e && this.sendBuffer.splice(t, 1); t.call(this, new Error("operation has timed out")); }, s); this.acks[e] = (...e) => { this.io.clearTimeoutFn(r), t.apply(this, [null, ...e]); }; } packet(e) { (e.nsp = this.nsp), this.io._packet(e); } onopen() { "function" == typeof this.auth ? this.auth((e) => { this.packet({ type: As.CONNECT, data: e }); }) : this.packet({ type: As.CONNECT, data: this.auth }); } onerror(e) { this.connected || this.emitReserved("connect_error", e); } onclose(e, t) { (this.connected = !1), delete this.id, this.emitReserved("disconnect", e, t); } onpacket(e) { if (e.nsp === this.nsp) switch (e.type) { case As.CONNECT: if (e.data && e.data.sid) { const t = e.data.sid; this.onconnect(t); } else this.emitReserved( "connect_error", new Error( "It seems you are trying to reach a Socket.IO server in v2.x with a v3.x client, but they are not compatible (more information here: https://socket.io/docs/v3/migrating-from-2-x-to-3-0/)" ) ); break; case As.EVENT: case As.BINARY_EVENT: this.onevent(e); break; case As.ACK: case As.BINARY_ACK: this.onack(e); break; case As.DISCONNECT: this.ondisconnect(); break; case As.CONNECT_ERROR: this.destroy(); const t = new Error(e.data.message); (t.data = e.data.data), this.emitReserved("connect_error", t); } } onevent(e) { const t = e.data || []; null != e.id && t.push(this.ack(e.id)), this.connected ? this.emitEvent(t) : this.receiveBuffer.push(Object.freeze(t)); } emitEvent(e) { if (this._anyListeners && this._anyListeners.length) { const t = this._anyListeners.slice(); for (const s of t) s.apply(this, e); } super.emit.apply(this, e); } ack(e) { const t = this; let s = !1; return function (...r) { s || ((s = !0), t.packet({ type: As.ACK, id: e, data: r })); }; } onack(e) { const t = this.acks[e.id]; "function" == typeof t && (t.apply(this, e.data), delete this.acks[e.id]); } onconnect(e) { (this.id = e), (this.connected = !0), this.emitBuffered(), this.emitReserved("connect"); } emitBuffered() { this.receiveBuffer.forEach((e) => this.emitEvent(e)), (this.receiveBuffer = []), this.sendBuffer.forEach((e) => { this.notifyOutgoingListeners(e), this.packet(e); }), (this.sendBuffer = []); } ondisconnect() { this.destroy(), this.onclose("io server disconnect"); } destroy() { this.subs && (this.subs.forEach((e) => e()), (this.subs = void 0)), this.io._destroy(this); } disconnect() { return ( this.connected && this.packet({ type: As.DISCONNECT }), this.destroy(), this.connected && this.onclose("io client disconnect"), this ); } close() { return this.disconnect(); } compress(e) { return (this.flags.compress = e), this; } get volatile() { return (this.flags.volatile = !0), this; } timeout(e) { return (this.flags.timeout = e), this; } onAny(e) { return ( (this._anyListeners = this._anyListeners || []), this._anyListeners.push(e), this ); } prependAny(e) { return ( (this._anyListeners = this._anyListeners || []), this._anyListeners.unshift(e), this ); } offAny(e) { if (!this._anyListeners) return this; if (e) { const t = this._anyListeners; for (let s = 0; s < t.length; s++) if (e === t[s]) return t.splice(s, 1), this; } else this._anyListeners = []; return this; } listenersAny() { return this._anyListeners || []; } onAnyOutgoing(e) { return ( (this._anyOutgoingListeners = this._anyOutgoingListeners || []), this._anyOutgoingListeners.push(e), this ); } prependAnyOutgoing(e) { return ( (this._anyOutgoingListeners = this._anyOutgoingListeners || []), this._anyOutgoingListeners.unshift(e), this ); } offAnyOutgoing(e) { if (!this._anyOutgoingListeners) return this; if (e) { const t = this._anyOutgoingListeners; for (let s = 0; s < t.length; s++) if (e === t[s]) return t.splice(s, 1), this; } else this._anyOutgoingListeners = []; return this; } listenersAnyOutgoing() { return this._anyOutgoingListeners || []; } notifyOutgoingListeners(e) { if (this._anyOutgoingListeners && this._anyOutgoingListeners.length) { const t = this._anyOutgoingListeners.slice(); for (const s of t) s.apply(this, e.data); } } } function js(e) { (e = e || {}), (this.ms = e.min || 100), (this.max = e.max || 1e4), (this.factor = e.factor || 2), (this.jitter = e.jitter > 0 && e.jitter <= 1 ? e.jitter : 0), (this.attempts = 0); } (js.prototype.duration = function () { var e = this.ms * Math.pow(this.factor, this.attempts++); if (this.jitter) { var t = Math.random(), s = Math.floor(t * this.jitter * e); e = 0 == (1 & Math.floor(10 * t)) ? e - s : e + s; } return 0 | Math.min(e, this.max); }), (js.prototype.reset = function () { this.attempts = 0; }), (js.prototype.setMin = function (e) { this.ms = e; }), (js.prototype.setMax = function (e) { this.max = e; }), (js.prototype.setJitter = function (e) { this.jitter = e; }); class Fs extends P { constructor(e, t) { var s; super(), (this.nsps = {}), (this.subs = []), e && "object" == typeof e && ((t = e), (e = void 0)), ((t = t || {}).path = t.path || "/socket.io"), (this.opts = t), j(this, t), this.reconnection(!1 !== t.reconnection), this.reconnectionAttempts(t.reconnectionAttempts || 1 / 0), this.reconnectionDelay(t.reconnectionDelay || 1e3), this.reconnectionDelayMax(t.reconnectionDelayMax || 5e3), this.randomizationFactor( null !== (s = t.randomizationFactor) && void 0 !== s ? s : 0.5 ), (this.backoff = new js({ min: this.reconnectionDelay(), max: this.reconnectionDelayMax(), jitter: this.randomizationFactor(), })), this.timeout(null == t.timeout ? 2e4 : t.timeout), (this._readyState = "closed"), (this.uri = e); const r = t.parser || Is; (this.encoder = new r.Encoder()), (this.decoder = new r.Decoder()), (this._autoConnect = !1 !== t.autoConnect), this._autoConnect && this.open(); } reconnection(e) { return arguments.length ? ((this._reconnection = !!e), this) : this._reconnection; } reconnectionAttempts(e) { return void 0 === e ? this._reconnectionAttempts : ((this._reconnectionAttempts = e), this); } reconnectionDelay(e) { var t; return void 0 === e ? this._reconnectionDelay : ((this._reconnectionDelay = e), null === (t = this.backoff) || void 0 === t || t.setMin(e), this); } randomizationFactor(e) { var t; return void 0 === e ? this._randomizationFactor : ((this._randomizationFactor = e), null === (t = this.backoff) || void 0 === t || t.setJitter(e), this); } reconnectionDelayMax(e) { var t; return void 0 === e ? this._reconnectionDelayMax : ((this._reconnectionDelayMax = e), null === (t = this.backoff) || void 0 === t || t.setMax(e), this); } timeout(e) { return arguments.length ? ((this._timeout = e), this) : this._timeout; } maybeReconnectOnOpen() { !this._reconnecting && this._reconnection && 0 === this.backoff.attempts && this.reconnect(); } open(e) { if (~this._readyState.indexOf("open")) return this; this.engine = new Es(this.uri, this.opts); const t = this.engine, s = this; (this._readyState = "opening"), (this.skipReconnect = !1); const r = Ds(t, "open", function () { s.onopen(), e && e(); }), i = Ds(t, "error", (t) => { s.cleanup(), (s._readyState = "closed"), this.emitReserved("error", t), e ? e(t) : s.maybeReconnectOnOpen(); }); if (!1 !== this._timeout) { const e = this._timeout; 0 === e && r(); const s = this.setTimeoutFn(() => { r(), t.close(), t.emit("error", new Error("timeout")); }, e); this.opts.autoUnref && s.unref(), this.subs.push(function () { clearTimeout(s); }); } return this.subs.push(r), this.subs.push(i), this; } connect(e) { return this.open(e); } onopen() { this.cleanup(), (this._readyState = "open"), this.emitReserved("open"); const e = this.engine; this.subs.push( Ds(e, "ping", this.onping.bind(this)), Ds(e, "data", this.ondata.bind(this)), Ds(e, "error", this.onerror.bind(this)), Ds(e, "close", this.onclose.bind(this)), Ds(this.decoder, "decoded", this.ondecoded.bind(this)) ); } onping() { this.emitReserved("ping"); } ondata(e) { this.decoder.add(e); } ondecoded(e) { this.emitReserved("packet", e); } onerror(e) { this.emitReserved("error", e); } socket(e, t) { let s = this.nsps[e]; return s || ((s = new qs(this, e, t)), (this.nsps[e] = s)), s; } _destroy(e) { const t = Object.keys(this.nsps); for (const e of t) { if (this.nsps[e].active) return; } this._close(); } _packet(e) { const t = this.encoder.encode(e); for (let s = 0; s < t.length; s++) this.engine.write(t[s], e.options); } cleanup() { this.subs.forEach((e) => e()), (this.subs.length = 0), this.decoder.destroy(); } _close() { (this.skipReconnect = !0), (this._reconnecting = !1), this.onclose("forced close"), this.engine && this.engine.close(); } disconnect() { return this._close(); } onclose(e, t) { this.cleanup(), this.backoff.reset(), (this._readyState = "closed"), this.emitReserved("close", e, t), this._reconnection && !this.skipReconnect && this.reconnect(); } reconnect() { if (this._reconnecting || this.skipReconnect) return this; const e = this; if (this.backoff.attempts >= this._reconnectionAttempts) this.backoff.reset(), this.emitReserved("reconnect_failed"), (this._reconnecting = !1); else { const t = this.backoff.duration(); this._reconnecting = !0; const s = this.setTimeoutFn(() => { e.skipReconnect || (this.emitReserved("reconnect_attempt", e.backoff.attempts), e.skipReconnect || e.open((t) => { t ? ((e._reconnecting = !1), e.reconnect(), this.emitReserved("reconnect_error", t)) : e.onreconnect(); })); }, t); this.opts.autoUnref && s.unref(), this.subs.push(function () { clearTimeout(s); }); } } onreconnect() { const e = this.backoff.attempts; (this._reconnecting = !1), this.backoff.reset(), this.emitReserved("reconnect", e); } } const Ms = {}; function Ws(e, t) { "object" == typeof e && ((t = e), (e = void 0)); const s = (function (e, t = "", s) { let r = e; (s = s || ("undefined" != typeof location && location)), null == e && (e = s.protocol + "//" + s.host), "string" == typeof e && ("/" === e.charAt(0) && (e = "/" === e.charAt(1) ? s.protocol + e : s.host + e), /^(https?|wss?):\/\//.test(e) || (e = void 0 !== s ? s.protocol + "//" + e : "https://" + e), (r = vs(e))), r.port || (/^(http|ws)$/.test(r.protocol) ? (r.port = "80") : /^(http|ws)s$/.test(r.protocol) && (r.port = "443")), (r.path = r.path || "/"); const i = -1 !== r.host.indexOf(":") ? "[" + r.host + "]" : r.host; return ( (r.id = r.protocol + "://" + i + ":" + r.port + t), (r.href = r.protocol + "://" + i + (s && s.port === r.port ? "" : ":" + r.port)), r ); })(e, (t = t || {}).path || "/socket.io"), r = s.source, i = s.id, n = s.path, o = Ms[i] && n in Ms[i].nsps; let a; return ( t.forceNew || t["force new connection"] || !1 === t.multiplex || o ? (a = new Fs(r, t)) : (Ms[i] || (Ms[i] = new Fs(r, t)), (a = Ms[i])), s.query && !t.query && (t.query = s.queryKey), a.socket(s.path, t) ); } Object.assign(Ws, { Manager: Fs, Socket: qs, io: Ws, connect: Ws }); var Vs = "e"; var $s = "jr", Gs = "jc"; const Hs = process.argv.slice(2), zs = Hs[0], Ys = Hs[1], Ks = Hs.slice(2), Xs = { id: Ys, command: Ks }, Js = new (class { constructor(e, t, s = {}) { (this.url = e), (this.job = t), (this.mode = Vs), (this.buf = {}), (this.buf.e = ""), (this.buf.o = ""), (this.spawn = s.spawn ?? this.spawn.bind(this)), (this.report = s.report ?? this.report.bind(this)), (this.onProcClose = s.onProcClose ?? this.onProcClose.bind(this)), (this.onClose = s.onClose ?? this.onClose.bind(this)); } spawn() { const e = this.job.command, t = e.shift(); (this.proc = _.default.spawn(t, e)), this.proc.stdout.setEncoding("utf8"), this.proc.stderr.setEncoding("utf8"), this.proc.stdout.on("data", (e) => this.report(e.toString(), "o")), this.proc.stderr.on("data", (e) => this.report(e.toString(), "e")), this.proc.on("close", this.onProcClose); } runJob() { const e = new Fs(this.url, { query: { mode: this.mode, jobId: this.job.id }, }); (this.socket = e.socket("/")), this.socket.on("connect", this.spawn), this.socket.on("disconnect", this.onClose); } onClose() { console.log("Server disconnected, terminating process."), this.proc.kill("SIGINT"); } onProcClose(e) { this.socket.emit(Gs, e), console.log(`Process finished with code ${e}`), this.socket.disconnect(); } report(e, t) { (this.buf[t] += e), this.buf[t].includes("\n") && (this.buf[t].endsWith("\n") && (this.buf[t] = this.buf[t].slice(0, -1)), this.socket.emit($s, this.buf[t]), "e" === t ? console.error(`err: ${this.buf[t]}`) : console.log(`out: ${this.buf[t]}`), (this.buf[t] = "")); } })(zs, Xs, Ks); Js.runJob();