/*! * Socket.IO v4.4.1 * (c) 2014-2022 Guillermo Rauch * Released under the MIT License. */ !(function (t, e) { "object" == typeof exports && "undefined" != typeof module ? (module.exports = e()) : "function" == typeof define && define.amd ? define(e) : ((t = "undefined" != typeof globalThis ? globalThis : t || self).io = e()); })(this, function () { "use strict"; function t(e) { return ( (t = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (t) { return typeof t; } : function (t) { return t && "function" == typeof Symbol && t.constructor === Symbol && t !== Symbol.prototype ? "symbol" : typeof t; }), t(e) ); } function e(t, e) { if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function"); } function n(t, e) { for (var n = 0; n < e.length; n++) { var r = e[n]; (r.enumerable = r.enumerable || !1), (r.configurable = !0), "value" in r && (r.writable = !0), Object.defineProperty(t, r.key, r); } } function r(t, e, r) { return e && n(t.prototype, e), r && n(t, r), t; } function o() { return ( (o = Object.assign || function (t) { for (var e = 1; e < arguments.length; e++) { var n = arguments[e]; for (var r in n) Object.prototype.hasOwnProperty.call(n, r) && (t[r] = n[r]); } return t; }), o.apply(this, arguments) ); } function i(t, e) { if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function"); (t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } })), e && a(t, e); } function s(t) { return ( (s = Object.setPrototypeOf ? Object.getPrototypeOf : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }), s(t) ); } function a(t, e) { return ( (a = Object.setPrototypeOf || function (t, e) { return (t.__proto__ = e), t; }), a(t, e) ); } function c(t) { if (void 0 === t) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); return t; } function u(t, e) { if (e && ("object" == typeof e || "function" == typeof e)) return e; if (void 0 !== e) throw new TypeError("Derived constructors may only return object or undefined"); return c(t); } function h(t) { var e = (function () { if ("undefined" == typeof Reflect || !Reflect.construct) return !1; if (Reflect.construct.sham) return !1; if ("function" == typeof Proxy) return !0; try { return Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})), !0; } catch (t) { return !1; } })(); return function () { var n, r = s(t); if (e) { var o = s(this).constructor; n = Reflect.construct(r, arguments, o); } else n = r.apply(this, arguments); return u(this, n); }; } function f(t, e, n) { return ( (f = "undefined" != typeof Reflect && Reflect.get ? Reflect.get : function (t, e, n) { var r = (function (t, e) { for (; !Object.prototype.hasOwnProperty.call(t, e) && null !== (t = s(t)); ); return t; })(t, e); if (r) { var o = Object.getOwnPropertyDescriptor(r, e); return o.get ? o.get.call(n) : o.value; } }), f(t, e, n || t) ); } function l(t, e) { (null == e || e > t.length) && (e = t.length); for (var n = 0, r = new Array(e); n < e; n++) r[n] = t[n]; return r; } function p(t, e) { var n = ("undefined" != typeof Symbol && t[Symbol.iterator]) || t["@@iterator"]; if (!n) { if ( Array.isArray(t) || (n = (function (t, e) { if (t) { if ("string" == typeof t) return l(t, e); var n = Object.prototype.toString.call(t).slice(8, -1); return ( "Object" === n && t.constructor && (n = t.constructor.name), "Map" === n || "Set" === n ? Array.from(t) : "Arguments" === n || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n) ? l(t, e) : void 0 ); } })(t)) || (e && t && "number" == typeof t.length) ) { n && (t = n); var r = 0, o = function () {}; return { s: o, n: function () { return r >= t.length ? { done: !0 } : { done: !1, value: t[r++] }; }, e: function (t) { throw t; }, f: o, }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var i, s = !0, a = !1; return { s: function () { n = n.call(t); }, n: function () { var t = n.next(); return (s = t.done), t; }, e: function (t) { (a = !0), (i = t); }, f: function () { try { s || null == n.return || n.return(); } finally { if (a) throw i; } }, }; } var d = /^(?:(?![^:@]+:[^:@\/]*@)(http|https|ws|wss):\/\/)?((?:(([^:@]*)(?::([^:@]*))?)?@)?((?:[a-f0-9]{0,4}:){2,7}[a-f0-9]{0,4}|[^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/, y = ["source", "protocol", "authority", "userInfo", "user", "password", "host", "port", "relative", "path", "directory", "file", "query", "anchor"], v = function (t) { var e = t, n = t.indexOf("["), r = t.indexOf("]"); -1 != n && -1 != r && (t = t.substring(0, n) + t.substring(n, r).replace(/:/g, ";") + t.substring(r, t.length)); for (var o, i, s = d.exec(t || ""), a = {}, c = 14; c--; ) a[y[c]] = s[c] || ""; return ( -1 != n && -1 != r && ((a.source = e), (a.host = a.host.substring(1, a.host.length - 1).replace(/;/g, ":")), (a.authority = a.authority.replace("[", "").replace("]", "").replace(/;/g, ":")), (a.ipv6uri = !0)), (a.pathNames = (function (t, e) { var n = /\/{2,9}/g, r = e.replace(n, "/").split("/"); ("/" != e.substr(0, 1) && 0 !== e.length) || r.splice(0, 1); "/" == e.substr(e.length - 1, 1) && r.splice(r.length - 1, 1); return r; })(0, a.path)), (a.queryKey = ((o = a.query), (i = {}), o.replace(/(?:^|&)([^&=]*)=?([^&]*)/g, function (t, e, n) { e && (i[e] = n); }), i)), a ); }; var m = { exports: {} }; try { m.exports = "undefined" != typeof XMLHttpRequest && "withCredentials" in new XMLHttpRequest(); } catch (t) { m.exports = !1; } var g = m.exports, k = "undefined" != typeof self ? self : "undefined" != typeof window ? window : Function("return this")(); function b(t) { var e = t.xdomain; try { if ("undefined" != typeof XMLHttpRequest && (!e || g)) return new XMLHttpRequest(); } catch (t) {} if (!e) try { return new k[["Active"].concat("Object").join("X")]("Microsoft.XMLHTTP"); } catch (t) {} } function w(t) { for (var e = arguments.length, n = new Array(e > 1 ? e - 1 : 0), r = 1; r < e; r++) n[r - 1] = arguments[r]; return n.reduce(function (e, n) { return t.hasOwnProperty(n) && (e[n] = t[n]), e; }, {}); } var _ = setTimeout, E = clearTimeout; function A(t, e) { e.useNativeTimers ? ((t.setTimeoutFn = _.bind(k)), (t.clearTimeoutFn = E.bind(k))) : ((t.setTimeoutFn = setTimeout.bind(k)), (t.clearTimeoutFn = clearTimeout.bind(k))); } var R = T; function T(t) { if (t) return (function (t) { for (var e in T.prototype) t[e] = T.prototype[e]; return t; })(t); } (T.prototype.on = T.prototype.addEventListener = function (t, e) { return (this._callbacks = this._callbacks || {}), (this._callbacks["$" + t] = this._callbacks["$" + t] || []).push(e), this; }), (T.prototype.once = function (t, e) { function n() { this.off(t, n), e.apply(this, arguments); } return (n.fn = e), this.on(t, n), this; }), (T.prototype.off = T.prototype.removeListener = T.prototype.removeAllListeners = T.prototype.removeEventListener = function (t, e) { if (((this._callbacks = this._callbacks || {}), 0 == arguments.length)) return (this._callbacks = {}), this; var n, r = this._callbacks["$" + t]; if (!r) return this; if (1 == arguments.length) return delete this._callbacks["$" + t], this; for (var o = 0; o < r.length; o++) if ((n = r[o]) === e || n.fn === e) { r.splice(o, 1); break; } return 0 === r.length && delete this._callbacks["$" + t], this; }), (T.prototype.emit = function (t) { this._callbacks = this._callbacks || {}; for (var e = new Array(arguments.length - 1), n = this._callbacks["$" + t], r = 1; r < arguments.length; r++) e[r - 1] = arguments[r]; if (n) { r = 0; for (var o = (n = n.slice(0)).length; r < o; ++r) n[r].apply(this, e); } return this; }), (T.prototype.emitReserved = T.prototype.emit), (T.prototype.listeners = function (t) { return (this._callbacks = this._callbacks || {}), this._callbacks["$" + t] || []; }), (T.prototype.hasListeners = function (t) { return !!this.listeners(t).length; }); var C = Object.create(null); (C.open = "0"), (C.close = "1"), (C.ping = "2"), (C.pong = "3"), (C.message = "4"), (C.upgrade = "5"), (C.noop = "6"); var O = Object.create(null); Object.keys(C).forEach(function (t) { O[C[t]] = t; }); for ( var S = { type: "error", data: "parser error" }, B = "function" == typeof Blob || ("undefined" != typeof Blob && "[object BlobConstructor]" === Object.prototype.toString.call(Blob)), N = "function" == typeof ArrayBuffer, x = function (t, e, n) { var r, o = t.type, i = t.data; return B && i instanceof Blob ? e ? n(i) : L(i, n) : N && (i instanceof ArrayBuffer || ((r = i), "function" == typeof ArrayBuffer.isView ? ArrayBuffer.isView(r) : r && r.buffer instanceof ArrayBuffer)) ? e ? n(i) : L(new Blob([i]), n) : n(C[o] + (i || "")); }, L = function (t, e) { var n = new FileReader(); return ( (n.onload = function () { var t = n.result.split(",")[1]; e("b" + t); }), n.readAsDataURL(t) ); }, j = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/", P = "undefined" == typeof Uint8Array ? [] : new Uint8Array(256), q = 0; q < j.length; q++ ) P[j.charCodeAt(q)] = q; var D, I = "function" == typeof ArrayBuffer, F = function (t, e) { if ("string" != typeof t) return { type: "message", data: U(t, e) }; var n = t.charAt(0); return "b" === n ? { type: "message", data: M(t.substring(1), e) } : O[n] ? (t.length > 1 ? { type: O[n], data: t.substring(1) } : { type: O[n] }) : S; }, M = function (t, e) { if (I) { var n = (function (t) { var e, n, r, o, i, s = 0.75 * t.length, a = t.length, c = 0; "=" === t[t.length - 1] && (s--, "=" === t[t.length - 2] && s--); var u = new ArrayBuffer(s), h = new Uint8Array(u); for (e = 0; e < a; e += 4) (n = P[t.charCodeAt(e)]), (r = P[t.charCodeAt(e + 1)]), (o = P[t.charCodeAt(e + 2)]), (i = P[t.charCodeAt(e + 3)]), (h[c++] = (n << 2) | (r >> 4)), (h[c++] = ((15 & r) << 4) | (o >> 2)), (h[c++] = ((3 & o) << 6) | (63 & i)); return u; })(t); return U(n, e); } return { base64: !0, data: t }; }, U = function (t, e) { return "blob" === e && t instanceof ArrayBuffer ? new Blob([t]) : t; }, V = String.fromCharCode(30), H = (function (t) { i(o, t); var n = h(o); function o(t) { var r; return e(this, o), ((r = n.call(this)).writable = !1), A(c(r), t), (r.opts = t), (r.query = t.query), (r.readyState = ""), (r.socket = t.socket), r; } return ( r(o, [ { key: "onError", value: function (t, e) { var n = new Error(t); return (n.type = "TransportError"), (n.description = e), f(s(o.prototype), "emit", this).call(this, "error", n), this; }, }, { key: "open", value: function () { return ("closed" !== this.readyState && "" !== this.readyState) || ((this.readyState = "opening"), this.doOpen()), this; }, }, { key: "close", value: function () { return ("opening" !== this.readyState && "open" !== this.readyState) || (this.doClose(), this.onClose()), this; }, }, { key: "send", value: function (t) { "open" === this.readyState && this.write(t); }, }, { key: "onOpen", value: function () { (this.readyState = "open"), (this.writable = !0), f(s(o.prototype), "emit", this).call(this, "open"); }, }, { key: "onData", value: function (t) { var e = F(t, this.socket.binaryType); this.onPacket(e); }, }, { key: "onPacket", value: function (t) { f(s(o.prototype), "emit", this).call(this, "packet", t); }, }, { key: "onClose", value: function () { (this.readyState = "closed"), f(s(o.prototype), "emit", this).call(this, "close"); }, }, ]), o ); })(R), K = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-_".split(""), Y = {}, z = 0, $ = 0; function W(t) { var e = ""; do { (e = K[t % 64] + e), (t = Math.floor(t / 64)); } while (t > 0); return e; } function J() { var t = W(+new Date()); return t !== D ? ((z = 0), (D = t)) : t + "." + W(z++); } for (; $ < 64; $++) Y[K[$]] = $; (J.encode = W), (J.decode = function (t) { var e = 0; for ($ = 0; $ < t.length; $++) e = 64 * e + Y[t.charAt($)]; return e; }); var X = J, G = { encode: function (t) { var e = ""; for (var n in t) t.hasOwnProperty(n) && (e.length && (e += "&"), (e += encodeURIComponent(n) + "=" + encodeURIComponent(t[n]))); return e; }, decode: function (t) { for (var e = {}, n = t.split("&"), r = 0, o = n.length; r < o; r++) { var i = n[r].split("="); e[decodeURIComponent(i[0])] = decodeURIComponent(i[1]); } return e; }, }, Q = (function (t) { i(o, t); var n = h(o); function o() { var t; return e(this, o), ((t = n.apply(this, arguments)).polling = !1), t; } return ( r(o, [ { key: "name", get: function () { return "polling"; }, }, { key: "doOpen", value: function () { this.poll(); }, }, { key: "pause", value: function (t) { var e = this; this.readyState = "pausing"; var n = function () { (e.readyState = "paused"), t(); }; if (this.polling || !this.writable) { var r = 0; this.polling && (r++, this.once("pollComplete", function () { --r || n(); })), this.writable || (r++, this.once("drain", function () { --r || n(); })); } else n(); }, }, { key: "poll", value: function () { (this.polling = !0), this.doPoll(), this.emit("poll"); }, }, { key: "onData", value: function (t) { var e = this; (function (t, e) { for (var n = t.split(V), r = [], o = 0; o < n.length; o++) { var i = F(n[o], e); if ((r.push(i), "error" === i.type)) break; } return r; })(t, this.socket.binaryType).forEach(function (t) { if (("opening" === e.readyState && "open" === t.type && e.onOpen(), "close" === t.type)) return e.onClose(), !1; e.onPacket(t); }), "closed" !== this.readyState && ((this.polling = !1), this.emit("pollComplete"), "open" === this.readyState && this.poll()); }, }, { key: "doClose", value: function () { var t = this, e = function () { t.write([{ type: "close" }]); }; "open" === this.readyState ? e() : this.once("open", e); }, }, { key: "write", value: function (t) { var e = this; (this.writable = !1), (function (t, e) { var n = t.length, r = new Array(n), o = 0; t.forEach(function (t, i) { x(t, !1, function (t) { (r[i] = t), ++o === n && e(r.join(V)); }); }); })(t, function (t) { e.doWrite(t, function () { (e.writable = !0), e.emit("drain"); }); }); }, }, { key: "uri", value: function () { var t = this.query || {}, e = this.opts.secure ? "https" : "http", n = ""; !1 !== this.opts.timestampRequests && (t[this.opts.timestampParam] = X()), this.supportsBinary || t.sid || (t.b64 = 1), this.opts.port && (("https" === e && 443 !== Number(this.opts.port)) || ("http" === e && 80 !== Number(this.opts.port))) && (n = ":" + this.opts.port); var r = G.encode(t); return e + "://" + (-1 !== this.opts.hostname.indexOf(":") ? "[" + this.opts.hostname + "]" : this.opts.hostname) + n + this.opts.path + (r.length ? "?" + r : ""); }, }, ]), o ); })(H); function Z() {} var tt = null != new b({ xdomain: !1 }).responseType, et = (function (t) { i(s, t); var n = h(s); function s(t) { var r; if ((e(this, s), (r = n.call(this, t)), "undefined" != typeof location)) { var o = "https:" === location.protocol, i = location.port; i || (i = o ? "443" : "80"), (r.xd = ("undefined" != typeof location && t.hostname !== location.hostname) || i !== t.port), (r.xs = t.secure !== o); } var a = t && t.forceBase64; return (r.supportsBinary = tt && !a), r; } return ( r(s, [ { key: "request", value: function () { var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}; return o(t, { xd: this.xd, xs: this.xs }, this.opts), new nt(this.uri(), t); }, }, { key: "doWrite", value: function (t, e) { var n = this, r = this.request({ method: "POST", data: t }); r.on("success", e), r.on("error", function (t) { n.onError("xhr post error", t); }); }, }, { key: "doPoll", value: function () { var t = this, e = this.request(); e.on("data", this.onData.bind(this)), e.on("error", function (e) { t.onError("xhr poll error", e); }), (this.pollXhr = e); }, }, ]), s ); })(Q), nt = (function (t) { i(o, t); var n = h(o); function o(t, r) { var i; return ( e(this, o), A(c((i = n.call(this))), r), (i.opts = r), (i.method = r.method || "GET"), (i.uri = t), (i.async = !1 !== r.async), (i.data = void 0 !== r.data ? r.data : null), i.create(), i ); } return ( r(o, [ { key: "create", value: function () { var t = this, e = w(this.opts, "agent", "pfx", "key", "passphrase", "cert", "ca", "ciphers", "rejectUnauthorized", "autoUnref"); (e.xdomain = !!this.opts.xd), (e.xscheme = !!this.opts.xs); var n = (this.xhr = new b(e)); try { n.open(this.method, this.uri, this.async); try { if (this.opts.extraHeaders) for (var r in (n.setDisableHeaderCheck && n.setDisableHeaderCheck(!0), this.opts.extraHeaders)) this.opts.extraHeaders.hasOwnProperty(r) && n.setRequestHeader(r, this.opts.extraHeaders[r]); } catch (t) {} if ("POST" === this.method) try { n.setRequestHeader("Content-type", "text/plain;charset=UTF-8"); } catch (t) {} try { n.setRequestHeader("Accept", "*/*"); } catch (t) {} "withCredentials" in n && (n.withCredentials = this.opts.withCredentials), this.opts.requestTimeout && (n.timeout = this.opts.requestTimeout), (n.onreadystatechange = function () { 4 === n.readyState && (200 === n.status || 1223 === n.status ? t.onLoad() : t.setTimeoutFn(function () { t.onError("number" == typeof n.status ? n.status : 0); }, 0)); }), n.send(this.data); } catch (e) { return void this.setTimeoutFn(function () { t.onError(e); }, 0); } "undefined" != typeof document && ((this.index = o.requestsCount++), (o.requests[this.index] = this)); }, }, { key: "onSuccess", value: function () { this.emit("success"), this.cleanup(); }, }, { key: "onData", value: function (t) { this.emit("data", t), this.onSuccess(); }, }, { key: "onError", value: function (t) { this.emit("error", t), this.cleanup(!0); }, }, { key: "cleanup", value: function (t) { if (void 0 !== this.xhr && null !== this.xhr) { if (((this.xhr.onreadystatechange = Z), t)) try { this.xhr.abort(); } catch (t) {} "undefined" != typeof document && delete o.requests[this.index], (this.xhr = null); } }, }, { key: "onLoad", value: function () { var t = this.xhr.responseText; null !== t && this.onData(t); }, }, { key: "abort", value: function () { this.cleanup(); }, }, ]), o ); })(R); if (((nt.requestsCount = 0), (nt.requests = {}), "undefined" != typeof document)) if ("function" == typeof attachEvent) attachEvent("onunload", rt); else if ("function" == typeof addEventListener) { addEventListener("onpagehide" in k ? "pagehide" : "unload", rt, !1); } function rt() { for (var t in nt.requests) nt.requests.hasOwnProperty(t) && nt.requests[t].abort(); } var ot = "function" == typeof Promise && "function" == typeof Promise.resolve ? function (t) { return Promise.resolve().then(t); } : function (t, e) { return e(t, 0); }, it = k.WebSocket || k.MozWebSocket, st = "undefined" != typeof navigator && "string" == typeof navigator.product && "reactnative" === navigator.product.toLowerCase(), at = (function (t) { i(o, t); var n = h(o); function o(t) { var r; return e(this, o), ((r = n.call(this, t)).supportsBinary = !t.forceBase64), r; } return ( r(o, [ { key: "name", get: function () { return "websocket"; }, }, { key: "doOpen", value: function () { if (this.check()) { var t = this.uri(), e = this.opts.protocols, n = st ? {} : w( this.opts, "agent", "perMessageDeflate", "pfx", "key", "passphrase", "cert", "ca", "ciphers", "rejectUnauthorized", "localAddress", "protocolVersion", "origin", "maxPayload", "family", "checkServerIdentity", ); this.opts.extraHeaders && (n.headers = this.opts.extraHeaders); try { this.ws = st ? new it(t, e, n) : e ? new it(t, e) : new it(t); } catch (t) { return this.emit("error", t); } (this.ws.binaryType = this.socket.binaryType || "arraybuffer"), this.addEventListeners(); } }, }, { key: "addEventListeners", value: function () { var t = this; (this.ws.onopen = function () { t.opts.autoUnref && t.ws._socket.unref(), t.onOpen(); }), (this.ws.onclose = this.onClose.bind(this)), (this.ws.onmessage = function (e) { return t.onData(e.data); }), (this.ws.onerror = function (e) { return t.onError("websocket error", e); }); }, }, { key: "write", value: function (t) { var e = this; this.writable = !1; for ( var n = function (n) { var r = t[n], o = n === t.length - 1; x(r, e.supportsBinary, function (t) { try { e.ws.send(t); } catch (t) {} o && ot(function () { (e.writable = !0), e.emit("drain"); }, e.setTimeoutFn); }); }, r = 0; r < t.length; r++ ) n(r); }, }, { key: "doClose", value: function () { void 0 !== this.ws && (this.ws.close(), (this.ws = null)); }, }, { key: "uri", value: function () { var t = this.query || {}, e = this.opts.secure ? "wss" : "ws", n = ""; this.opts.port && (("wss" === e && 443 !== Number(this.opts.port)) || ("ws" === e && 80 !== Number(this.opts.port))) && (n = ":" + this.opts.port), this.opts.timestampRequests && (t[this.opts.timestampParam] = X()), this.supportsBinary || (t.b64 = 1); var r = G.encode(t); return e + "://" + (-1 !== this.opts.hostname.indexOf(":") ? "[" + this.opts.hostname + "]" : this.opts.hostname) + n + this.opts.path + (r.length ? "?" + r : ""); }, }, { key: "check", value: function () { return !(!it || ("__initialize" in it && this.name === o.prototype.name)); }, }, ]), o ); })(H), ct = { websocket: at, polling: et }, ut = (function (n) { i(a, n); var s = h(a); function a(n) { var r, i = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {}; return ( e(this, a), (r = s.call(this)), n && "object" === t(n) && ((i = n), (n = null)), n ? ((n = v(n)), (i.hostname = n.host), (i.secure = "https" === n.protocol || "wss" === n.protocol), (i.port = n.port), n.query && (i.query = n.query)) : i.host && (i.hostname = v(i.host).host), A(c(r), i), (r.secure = null != i.secure ? i.secure : "undefined" != typeof location && "https:" === location.protocol), i.hostname && !i.port && (i.port = r.secure ? "443" : "80"), (r.hostname = i.hostname || ("undefined" != typeof location ? location.hostname : "localhost")), (r.port = i.port || ("undefined" != typeof location && location.port ? location.port : r.secure ? "443" : "80")), (r.transports = i.transports || ["polling", "websocket"]), (r.readyState = ""), (r.writeBuffer = []), (r.prevBufferLen = 0), (r.opts = o( { path: "/engine.io", agent: !1, withCredentials: !1, upgrade: !0, timestampParam: "t", rememberUpgrade: !1, rejectUnauthorized: !0, perMessageDeflate: { threshold: 1024 }, transportOptions: {}, closeOnBeforeunload: !0, }, i, )), (r.opts.path = r.opts.path.replace(/\/$/, "") + "/"), "string" == typeof r.opts.query && (r.opts.query = G.decode(r.opts.query)), (r.id = null), (r.upgrades = null), (r.pingInterval = null), (r.pingTimeout = null), (r.pingTimeoutTimer = null), "function" == typeof addEventListener && (r.opts.closeOnBeforeunload && addEventListener( "beforeunload", function () { r.transport && (r.transport.removeAllListeners(), r.transport.close()); }, !1, ), "localhost" !== r.hostname && ((r.offlineEventListener = function () { r.onClose("transport close"); }), addEventListener("offline", r.offlineEventListener, !1))), r.open(), r ); } return ( r(a, [ { key: "createTransport", value: function (t) { var e = (function (t) { var e = {}; for (var n in t) t.hasOwnProperty(n) && (e[n] = t[n]); return e; })(this.opts.query); (e.EIO = 4), (e.transport = t), this.id && (e.sid = this.id); var n = o({}, this.opts.transportOptions[t], this.opts, { query: e, socket: this, hostname: this.hostname, secure: this.secure, port: this.port }); return new ct[t](n); }, }, { key: "open", value: function () { var t, e = this; if (this.opts.rememberUpgrade && a.priorWebsocketSuccess && -1 !== this.transports.indexOf("websocket")) t = "websocket"; else { if (0 === this.transports.length) return void this.setTimeoutFn(function () { e.emitReserved("error", "No transports available"); }, 0); t = this.transports[0]; } this.readyState = "opening"; try { t = this.createTransport(t); } catch (t) { return this.transports.shift(), void this.open(); } t.open(), this.setTransport(t); }, }, { key: "setTransport", value: function (t) { var e = this; this.transport && this.transport.removeAllListeners(), (this.transport = t), t .on("drain", this.onDrain.bind(this)) .on("packet", this.onPacket.bind(this)) .on("error", this.onError.bind(this)) .on("close", function () { e.onClose("transport close"); }); }, }, { key: "probe", value: function (t) { var e = this, n = this.createTransport(t), r = !1; a.priorWebsocketSuccess = !1; var o = function () { r || (n.send([{ type: "ping", data: "probe" }]), n.once("packet", function (t) { if (!r) if ("pong" === t.type && "probe" === t.data) { if (((e.upgrading = !0), e.emitReserved("upgrading", n), !n)) return; (a.priorWebsocketSuccess = "websocket" === n.name), e.transport.pause(function () { r || ("closed" !== e.readyState && (f(), e.setTransport(n), n.send([{ type: "upgrade" }]), e.emitReserved("upgrade", n), (n = null), (e.upgrading = !1), e.flush())); }); } else { var o = new Error("probe error"); (o.transport = n.name), e.emitReserved("upgradeError", o); } })); }; function i() { r || ((r = !0), f(), n.close(), (n = null)); } var s = function (t) { var r = new Error("probe error: " + t); (r.transport = n.name), i(), e.emitReserved("upgradeError", r); }; function c() { s("transport closed"); } function u() { s("socket closed"); } function h(t) { n && t.name !== n.name && i(); } var f = function () { n.removeListener("open", o), n.removeListener("error", s), n.removeListener("close", c), e.off("close", u), e.off("upgrading", h); }; n.once("open", o), n.once("error", s), n.once("close", c), this.once("close", u), this.once("upgrading", h), n.open(); }, }, { key: "onOpen", value: function () { if ( ((this.readyState = "open"), (a.priorWebsocketSuccess = "websocket" === this.transport.name), this.emitReserved("open"), this.flush(), "open" === this.readyState && this.opts.upgrade && this.transport.pause) ) for (var t = 0, e = this.upgrades.length; t < e; t++) this.probe(this.upgrades[t]); }, }, { key: "onPacket", value: function (t) { if ("opening" === this.readyState || "open" === this.readyState || "closing" === this.readyState) switch ((this.emitReserved("packet", t), this.emitReserved("heartbeat"), t.type)) { case "open": this.onHandshake(JSON.parse(t.data)); break; case "ping": this.resetPingTimeout(), this.sendPacket("pong"), this.emitReserved("ping"), this.emitReserved("pong"); break; case "error": var e = new Error("server error"); (e.code = t.data), this.onError(e); break; case "message": this.emitReserved("data", t.data), this.emitReserved("message", t.data); } }, }, { key: "onHandshake", value: function (t) { this.emitReserved("handshake", t), (this.id = t.sid), (this.transport.query.sid = t.sid), (this.upgrades = this.filterUpgrades(t.upgrades)), (this.pingInterval = t.pingInterval), (this.pingTimeout = t.pingTimeout), this.onOpen(), "closed" !== this.readyState && this.resetPingTimeout(); }, }, { key: "resetPingTimeout", value: function () { var t = this; this.clearTimeoutFn(this.pingTimeoutTimer), (this.pingTimeoutTimer = this.setTimeoutFn(function () { t.onClose("ping timeout"); }, this.pingInterval + this.pingTimeout)), this.opts.autoUnref && this.pingTimeoutTimer.unref(); }, }, { key: "onDrain", value: function () { this.writeBuffer.splice(0, this.prevBufferLen), (this.prevBufferLen = 0), 0 === this.writeBuffer.length ? this.emitReserved("drain") : this.flush(); }, }, { key: "flush", value: function () { "closed" !== this.readyState && this.transport.writable && !this.upgrading && this.writeBuffer.length && (this.transport.send(this.writeBuffer), (this.prevBufferLen = this.writeBuffer.length), this.emitReserved("flush")); }, }, { key: "write", value: function (t, e, n) { return this.sendPacket("message", t, e, n), this; }, }, { key: "send", value: function (t, e, n) { return this.sendPacket("message", t, e, n), this; }, }, { key: "sendPacket", value: function (t, e, n, r) { if (("function" == typeof e && ((r = e), (e = void 0)), "function" == typeof n && ((r = n), (n = null)), "closing" !== this.readyState && "closed" !== this.readyState)) { (n = n || {}).compress = !1 !== n.compress; var o = { type: t, data: e, options: n }; this.emitReserved("packetCreate", o), this.writeBuffer.push(o), r && this.once("flush", r), this.flush(); } }, }, { key: "close", value: function () { var t = this, e = function () { t.onClose("forced close"), t.transport.close(); }, n = function n() { t.off("upgrade", n), t.off("upgradeError", n), e(); }, r = function () { t.once("upgrade", n), t.once("upgradeError", n); }; return ( ("opening" !== this.readyState && "open" !== this.readyState) || ((this.readyState = "closing"), this.writeBuffer.length ? this.once("drain", function () { t.upgrading ? r() : e(); }) : this.upgrading ? r() : e()), this ); }, }, { key: "onError", value: function (t) { (a.priorWebsocketSuccess = !1), this.emitReserved("error", t), this.onClose("transport error", t); }, }, { key: "onClose", value: function (t, e) { ("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", t, e), (this.writeBuffer = []), (this.prevBufferLen = 0)); }, }, { key: "filterUpgrades", value: function (t) { for (var e = [], n = 0, r = t.length; n < r; n++) ~this.transports.indexOf(t[n]) && e.push(t[n]); return e; }, }, ]), a ); })(R); ut.protocol = 4; var ht = "function" == typeof ArrayBuffer, ft = Object.prototype.toString, lt = "function" == typeof Blob || ("undefined" != typeof Blob && "[object BlobConstructor]" === ft.call(Blob)), pt = "function" == typeof File || ("undefined" != typeof File && "[object FileConstructor]" === ft.call(File)); function dt(t) { return ( (ht && (t instanceof ArrayBuffer || (function (t) { return "function" == typeof ArrayBuffer.isView ? ArrayBuffer.isView(t) : t.buffer instanceof ArrayBuffer; })(t))) || (lt && t instanceof Blob) || (pt && t instanceof File) ); } function yt(e, n) { if (!e || "object" !== t(e)) return !1; if (Array.isArray(e)) { for (var r = 0, o = e.length; r < o; r++) if (yt(e[r])) return !0; return !1; } if (dt(e)) return !0; if (e.toJSON && "function" == typeof e.toJSON && 1 === arguments.length) return yt(e.toJSON(), !0); for (var i in e) if (Object.prototype.hasOwnProperty.call(e, i) && yt(e[i])) return !0; return !1; } function vt(t) { var e = [], n = t.data, r = t; return (r.data = mt(n, e)), (r.attachments = e.length), { packet: r, buffers: e }; } function mt(e, n) { if (!e) return e; if (dt(e)) { var r = { _placeholder: !0, num: n.length }; return n.push(e), r; } if (Array.isArray(e)) { for (var o = new Array(e.length), i = 0; i < e.length; i++) o[i] = mt(e[i], n); return o; } if ("object" === t(e) && !(e instanceof Date)) { var s = {}; for (var a in e) e.hasOwnProperty(a) && (s[a] = mt(e[a], n)); return s; } return e; } function gt(t, e) { return (t.data = kt(t.data, e)), (t.attachments = void 0), t; } function kt(e, n) { if (!e) return e; if (e && e._placeholder) return n[e.num]; if (Array.isArray(e)) for (var r = 0; r < e.length; r++) e[r] = kt(e[r], n); else if ("object" === t(e)) for (var o in e) e.hasOwnProperty(o) && (e[o] = kt(e[o], n)); return e; } var bt; !(function (t) { (t[(t.CONNECT = 0)] = "CONNECT"), (t[(t.DISCONNECT = 1)] = "DISCONNECT"), (t[(t.EVENT = 2)] = "EVENT"), (t[(t.ACK = 3)] = "ACK"), (t[(t.CONNECT_ERROR = 4)] = "CONNECT_ERROR"), (t[(t.BINARY_EVENT = 5)] = "BINARY_EVENT"), (t[(t.BINARY_ACK = 6)] = "BINARY_ACK"); })(bt || (bt = {})); var wt = (function () { function t() { e(this, t); } return ( r(t, [ { key: "encode", value: function (t) { return (t.type !== bt.EVENT && t.type !== bt.ACK) || !yt(t) ? [this.encodeAsString(t)] : ((t.type = t.type === bt.EVENT ? bt.BINARY_EVENT : bt.BINARY_ACK), this.encodeAsBinary(t)); }, }, { key: "encodeAsString", value: function (t) { var e = "" + t.type; return ( (t.type !== bt.BINARY_EVENT && t.type !== bt.BINARY_ACK) || (e += t.attachments + "-"), t.nsp && "/" !== t.nsp && (e += t.nsp + ","), null != t.id && (e += t.id), null != t.data && (e += JSON.stringify(t.data)), e ); }, }, { key: "encodeAsBinary", value: function (t) { var e = vt(t), n = this.encodeAsString(e.packet), r = e.buffers; return r.unshift(n), r; }, }, ]), t ); })(), _t = (function (n) { i(a, n); var o = h(a); function a() { return e(this, a), o.call(this); } return ( r( a, [ { key: "add", value: function (t) { var e; if ("string" == typeof t) (e = this.decodeString(t)).type === bt.BINARY_EVENT || e.type === bt.BINARY_ACK ? ((this.reconstructor = new Et(e)), 0 === e.attachments && f(s(a.prototype), "emitReserved", this).call(this, "decoded", e)) : f(s(a.prototype), "emitReserved", this).call(this, "decoded", e); else { if (!dt(t) && !t.base64) throw new Error("Unknown type: " + t); if (!this.reconstructor) throw new Error("got binary data when not reconstructing a packet"); (e = this.reconstructor.takeBinaryData(t)) && ((this.reconstructor = null), f(s(a.prototype), "emitReserved", this).call(this, "decoded", e)); } }, }, { key: "decodeString", value: function (t) { var e = 0, n = { type: Number(t.charAt(0)) }; if (void 0 === bt[n.type]) throw new Error("unknown packet type " + n.type); if (n.type === bt.BINARY_EVENT || n.type === bt.BINARY_ACK) { for (var r = e + 1; "-" !== t.charAt(++e) && e != t.length; ); var o = t.substring(r, e); if (o != Number(o) || "-" !== t.charAt(e)) throw new Error("Illegal attachments"); n.attachments = Number(o); } if ("/" === t.charAt(e + 1)) { for (var i = e + 1; ++e; ) { if ("," === t.charAt(e)) break; if (e === t.length) break; } n.nsp = t.substring(i, e); } else n.nsp = "/"; var s = t.charAt(e + 1); if ("" !== s && Number(s) == s) { for (var c = e + 1; ++e; ) { var u = t.charAt(e); if (null == u || Number(u) != u) { --e; break; } if (e === t.length) break; } n.id = Number(t.substring(c, e + 1)); } if (t.charAt(++e)) { var h = (function (t) { try { return JSON.parse(t); } catch (t) { return !1; } })(t.substr(e)); if (!a.isPayloadValid(n.type, h)) throw new Error("invalid payload"); n.data = h; } return n; }, }, { key: "destroy", value: function () { this.reconstructor && this.reconstructor.finishedReconstruction(); }, }, ], [ { key: "isPayloadValid", value: function (e, n) { switch (e) { case bt.CONNECT: return "object" === t(n); case bt.DISCONNECT: return void 0 === n; case bt.CONNECT_ERROR: return "string" == typeof n || "object" === t(n); case bt.EVENT: case bt.BINARY_EVENT: return Array.isArray(n) && n.length > 0; case bt.ACK: case bt.BINARY_ACK: return Array.isArray(n); } }, }, ], ), a ); })(R); var Et = (function () { function t(n) { e(this, t), (this.packet = n), (this.buffers = []), (this.reconPack = n); } return ( r(t, [ { key: "takeBinaryData", value: function (t) { if ((this.buffers.push(t), this.buffers.length === this.reconPack.attachments)) { var e = gt(this.reconPack, this.buffers); return this.finishedReconstruction(), e; } return null; }, }, { key: "finishedReconstruction", value: function () { (this.reconPack = null), (this.buffers = []); }, }, ]), t ); })(), At = Object.freeze({ __proto__: null, protocol: 5, get PacketType() { return bt; }, Encoder: wt, Decoder: _t, }); function Rt(t, e, n) { return ( t.on(e, n), function () { t.off(e, n); } ); } var Tt = Object.freeze({ connect: 1, connect_error: 1, disconnect: 1, disconnecting: 1, newListener: 1, removeListener: 1 }), Ct = (function (t) { i(o, t); var n = h(o); function o(t, r, i) { var s; return ( e(this, o), ((s = n.call(this)).connected = !1), (s.disconnected = !0), (s.receiveBuffer = []), (s.sendBuffer = []), (s.ids = 0), (s.acks = {}), (s.flags = {}), (s.io = t), (s.nsp = r), i && i.auth && (s.auth = i.auth), s.io._autoConnect && s.open(), s ); } return ( r(o, [ { key: "subEvents", value: function () { if (!this.subs) { var t = this.io; this.subs = [Rt(t, "open", this.onopen.bind(this)), Rt(t, "packet", this.onpacket.bind(this)), Rt(t, "error", this.onerror.bind(this)), Rt(t, "close", this.onclose.bind(this))]; } }, }, { key: "active", get: function () { return !!this.subs; }, }, { key: "connect", value: function () { return this.connected || (this.subEvents(), this.io._reconnecting || this.io.open(), "open" === this.io._readyState && this.onopen()), this; }, }, { key: "open", value: function () { return this.connect(); }, }, { key: "send", value: function () { for (var t = arguments.length, e = new Array(t), n = 0; n < t; n++) e[n] = arguments[n]; return e.unshift("message"), this.emit.apply(this, e), this; }, }, { key: "emit", value: function (t) { if (Tt.hasOwnProperty(t)) throw new Error('"' + t + '" is a reserved event name'); for (var e = arguments.length, n = new Array(e > 1 ? e - 1 : 0), r = 1; r < e; r++) n[r - 1] = arguments[r]; n.unshift(t); var o = { type: bt.EVENT, data: n, options: {} }; if (((o.options.compress = !1 !== this.flags.compress), "function" == typeof n[n.length - 1])) { var i = this.ids++, s = n.pop(); this._registerAckCallback(i, s), (o.id = i); } var a = this.io.engine && this.io.engine.transport && this.io.engine.transport.writable, c = this.flags.volatile && (!a || !this.connected); return c || (this.connected ? this.packet(o) : this.sendBuffer.push(o)), (this.flags = {}), this; }, }, { key: "_registerAckCallback", value: function (t, e) { var n = this, r = this.flags.timeout; if (void 0 !== r) { var o = this.io.setTimeoutFn(function () { delete n.acks[t]; for (var r = 0; r < n.sendBuffer.length; r++) n.sendBuffer[r].id === t && n.sendBuffer.splice(r, 1); e.call(n, new Error("operation has timed out")); }, r); this.acks[t] = function () { n.io.clearTimeoutFn(o); for (var t = arguments.length, r = new Array(t), i = 0; i < t; i++) r[i] = arguments[i]; e.apply(n, [null].concat(r)); }; } else this.acks[t] = e; }, }, { key: "packet", value: function (t) { (t.nsp = this.nsp), this.io._packet(t); }, }, { key: "onopen", value: function () { var t = this; "function" == typeof this.auth ? this.auth(function (e) { t.packet({ type: bt.CONNECT, data: e }); }) : this.packet({ type: bt.CONNECT, data: this.auth }); }, }, { key: "onerror", value: function (t) { this.connected || this.emitReserved("connect_error", t); }, }, { key: "onclose", value: function (t) { (this.connected = !1), (this.disconnected = !0), delete this.id, this.emitReserved("disconnect", t); }, }, { key: "onpacket", value: function (t) { if (t.nsp === this.nsp) switch (t.type) { case bt.CONNECT: if (t.data && t.data.sid) { var e = t.data.sid; this.onconnect(e); } 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 bt.EVENT: case bt.BINARY_EVENT: this.onevent(t); break; case bt.ACK: case bt.BINARY_ACK: this.onack(t); break; case bt.DISCONNECT: this.ondisconnect(); break; case bt.CONNECT_ERROR: this.destroy(); var n = new Error(t.data.message); (n.data = t.data.data), this.emitReserved("connect_error", n); } }, }, { key: "onevent", value: function (t) { var e = t.data || []; null != t.id && e.push(this.ack(t.id)), this.connected ? this.emitEvent(e) : this.receiveBuffer.push(Object.freeze(e)); }, }, { key: "emitEvent", value: function (t) { if (this._anyListeners && this._anyListeners.length) { var e, n = p(this._anyListeners.slice()); try { for (n.s(); !(e = n.n()).done; ) { e.value.apply(this, t); } } catch (t) { n.e(t); } finally { n.f(); } } f(s(o.prototype), "emit", this).apply(this, t); }, }, { key: "ack", value: function (t) { var e = this, n = !1; return function () { if (!n) { n = !0; for (var r = arguments.length, o = new Array(r), i = 0; i < r; i++) o[i] = arguments[i]; e.packet({ type: bt.ACK, id: t, data: o }); } }; }, }, { key: "onack", value: function (t) { var e = this.acks[t.id]; "function" == typeof e && (e.apply(this, t.data), delete this.acks[t.id]); }, }, { key: "onconnect", value: function (t) { (this.id = t), (this.connected = !0), (this.disconnected = !1), this.emitBuffered(), this.emitReserved("connect"); }, }, { key: "emitBuffered", value: function () { var t = this; this.receiveBuffer.forEach(function (e) { return t.emitEvent(e); }), (this.receiveBuffer = []), this.sendBuffer.forEach(function (e) { return t.packet(e); }), (this.sendBuffer = []); }, }, { key: "ondisconnect", value: function () { this.destroy(), this.onclose("io server disconnect"); }, }, { key: "destroy", value: function () { this.subs && (this.subs.forEach(function (t) { return t(); }), (this.subs = void 0)), this.io._destroy(this); }, }, { key: "disconnect", value: function () { return this.connected && this.packet({ type: bt.DISCONNECT }), this.destroy(), this.connected && this.onclose("io client disconnect"), this; }, }, { key: "close", value: function () { return this.disconnect(); }, }, { key: "compress", value: function (t) { return (this.flags.compress = t), this; }, }, { key: "volatile", get: function () { return (this.flags.volatile = !0), this; }, }, { key: "timeout", value: function (t) { return (this.flags.timeout = t), this; }, }, { key: "onAny", value: function (t) { return (this._anyListeners = this._anyListeners || []), this._anyListeners.push(t), this; }, }, { key: "prependAny", value: function (t) { return (this._anyListeners = this._anyListeners || []), this._anyListeners.unshift(t), this; }, }, { key: "offAny", value: function (t) { if (!this._anyListeners) return this; if (t) { for (var e = this._anyListeners, n = 0; n < e.length; n++) if (t === e[n]) return e.splice(n, 1), this; } else this._anyListeners = []; return this; }, }, { key: "listenersAny", value: function () { return this._anyListeners || []; }, }, ]), o ); })(R), Ot = St; function St(t) { (t = t || {}), (this.ms = t.min || 100), (this.max = t.max || 1e4), (this.factor = t.factor || 2), (this.jitter = t.jitter > 0 && t.jitter <= 1 ? t.jitter : 0), (this.attempts = 0); } (St.prototype.duration = function () { var t = this.ms * Math.pow(this.factor, this.attempts++); if (this.jitter) { var e = Math.random(), n = Math.floor(e * this.jitter * t); t = 0 == (1 & Math.floor(10 * e)) ? t - n : t + n; } return 0 | Math.min(t, this.max); }), (St.prototype.reset = function () { this.attempts = 0; }), (St.prototype.setMin = function (t) { this.ms = t; }), (St.prototype.setMax = function (t) { this.max = t; }), (St.prototype.setJitter = function (t) { this.jitter = t; }); var Bt = (function (n) { i(s, n); var o = h(s); function s(n, r) { var i, a; e(this, s), ((i = o.call(this)).nsps = {}), (i.subs = []), n && "object" === t(n) && ((r = n), (n = void 0)), ((r = r || {}).path = r.path || "/socket.io"), (i.opts = r), A(c(i), r), i.reconnection(!1 !== r.reconnection), i.reconnectionAttempts(r.reconnectionAttempts || 1 / 0), i.reconnectionDelay(r.reconnectionDelay || 1e3), i.reconnectionDelayMax(r.reconnectionDelayMax || 5e3), i.randomizationFactor(null !== (a = r.randomizationFactor) && void 0 !== a ? a : 0.5), (i.backoff = new Ot({ min: i.reconnectionDelay(), max: i.reconnectionDelayMax(), jitter: i.randomizationFactor() })), i.timeout(null == r.timeout ? 2e4 : r.timeout), (i._readyState = "closed"), (i.uri = n); var u = r.parser || At; return (i.encoder = new u.Encoder()), (i.decoder = new u.Decoder()), (i._autoConnect = !1 !== r.autoConnect), i._autoConnect && i.open(), i; } return ( r(s, [ { key: "reconnection", value: function (t) { return arguments.length ? ((this._reconnection = !!t), this) : this._reconnection; }, }, { key: "reconnectionAttempts", value: function (t) { return void 0 === t ? this._reconnectionAttempts : ((this._reconnectionAttempts = t), this); }, }, { key: "reconnectionDelay", value: function (t) { var e; return void 0 === t ? this._reconnectionDelay : ((this._reconnectionDelay = t), null === (e = this.backoff) || void 0 === e || e.setMin(t), this); }, }, { key: "randomizationFactor", value: function (t) { var e; return void 0 === t ? this._randomizationFactor : ((this._randomizationFactor = t), null === (e = this.backoff) || void 0 === e || e.setJitter(t), this); }, }, { key: "reconnectionDelayMax", value: function (t) { var e; return void 0 === t ? this._reconnectionDelayMax : ((this._reconnectionDelayMax = t), null === (e = this.backoff) || void 0 === e || e.setMax(t), this); }, }, { key: "timeout", value: function (t) { return arguments.length ? ((this._timeout = t), this) : this._timeout; }, }, { key: "maybeReconnectOnOpen", value: function () { !this._reconnecting && this._reconnection && 0 === this.backoff.attempts && this.reconnect(); }, }, { key: "open", value: function (t) { var e = this; if (~this._readyState.indexOf("open")) return this; this.engine = new ut(this.uri, this.opts); var n = this.engine, r = this; (this._readyState = "opening"), (this.skipReconnect = !1); var o = Rt(n, "open", function () { r.onopen(), t && t(); }), i = Rt(n, "error", function (n) { r.cleanup(), (r._readyState = "closed"), e.emitReserved("error", n), t ? t(n) : r.maybeReconnectOnOpen(); }); if (!1 !== this._timeout) { var s = this._timeout; 0 === s && o(); var a = this.setTimeoutFn(function () { o(), n.close(), n.emit("error", new Error("timeout")); }, s); this.opts.autoUnref && a.unref(), this.subs.push(function () { clearTimeout(a); }); } return this.subs.push(o), this.subs.push(i), this; }, }, { key: "connect", value: function (t) { return this.open(t); }, }, { key: "onopen", value: function () { this.cleanup(), (this._readyState = "open"), this.emitReserved("open"); var t = this.engine; this.subs.push( Rt(t, "ping", this.onping.bind(this)), Rt(t, "data", this.ondata.bind(this)), Rt(t, "error", this.onerror.bind(this)), Rt(t, "close", this.onclose.bind(this)), Rt(this.decoder, "decoded", this.ondecoded.bind(this)), ); }, }, { key: "onping", value: function () { this.emitReserved("ping"); }, }, { key: "ondata", value: function (t) { this.decoder.add(t); }, }, { key: "ondecoded", value: function (t) { this.emitReserved("packet", t); }, }, { key: "onerror", value: function (t) { this.emitReserved("error", t); }, }, { key: "socket", value: function (t, e) { var n = this.nsps[t]; return n || ((n = new Ct(this, t, e)), (this.nsps[t] = n)), n; }, }, { key: "_destroy", value: function (t) { for (var e = 0, n = Object.keys(this.nsps); e < n.length; e++) { var r = n[e]; if (this.nsps[r].active) return; } this._close(); }, }, { key: "_packet", value: function (t) { for (var e = this.encoder.encode(t), n = 0; n < e.length; n++) this.engine.write(e[n], t.options); }, }, { key: "cleanup", value: function () { this.subs.forEach(function (t) { return t(); }), (this.subs.length = 0), this.decoder.destroy(); }, }, { key: "_close", value: function () { (this.skipReconnect = !0), (this._reconnecting = !1), this.onclose("forced close"), this.engine && this.engine.close(); }, }, { key: "disconnect", value: function () { return this._close(); }, }, { key: "onclose", value: function (t) { this.cleanup(), this.backoff.reset(), (this._readyState = "closed"), this.emitReserved("close", t), this._reconnection && !this.skipReconnect && this.reconnect(); }, }, { key: "reconnect", value: function () { var t = this; if (this._reconnecting || this.skipReconnect) return this; var e = this; if (this.backoff.attempts >= this._reconnectionAttempts) this.backoff.reset(), this.emitReserved("reconnect_failed"), (this._reconnecting = !1); else { var n = this.backoff.duration(); this._reconnecting = !0; var r = this.setTimeoutFn(function () { e.skipReconnect || (t.emitReserved("reconnect_attempt", e.backoff.attempts), e.skipReconnect || e.open(function (n) { n ? ((e._reconnecting = !1), e.reconnect(), t.emitReserved("reconnect_error", n)) : e.onreconnect(); })); }, n); this.opts.autoUnref && r.unref(), this.subs.push(function () { clearTimeout(r); }); } }, }, { key: "onreconnect", value: function () { var t = this.backoff.attempts; (this._reconnecting = !1), this.backoff.reset(), this.emitReserved("reconnect", t); }, }, ]), s ); })(R), Nt = {}; function xt(e, n) { "object" === t(e) && ((n = e), (e = void 0)); var r, o = (function (t) { var e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : "", n = arguments.length > 2 ? arguments[2] : void 0, r = t; (n = n || ("undefined" != typeof location && location)), null == t && (t = n.protocol + "//" + n.host), "string" == typeof t && ("/" === t.charAt(0) && (t = "/" === t.charAt(1) ? n.protocol + t : n.host + t), /^(https?|wss?):\/\//.test(t) || (t = void 0 !== n ? n.protocol + "//" + t : "https://" + t), (r = v(t))), r.port || (/^(http|ws)$/.test(r.protocol) ? (r.port = "80") : /^(http|ws)s$/.test(r.protocol) && (r.port = "443")), (r.path = r.path || "/"); var o = -1 !== r.host.indexOf(":") ? "[" + r.host + "]" : r.host; return (r.id = r.protocol + "://" + o + ":" + r.port + e), (r.href = r.protocol + "://" + o + (n && n.port === r.port ? "" : ":" + r.port)), r; })(e, (n = n || {}).path || "/socket.io"), i = o.source, s = o.id, a = o.path, c = Nt[s] && a in Nt[s].nsps; return ( n.forceNew || n["force new connection"] || !1 === n.multiplex || c ? (r = new Bt(i, n)) : (Nt[s] || (Nt[s] = new Bt(i, n)), (r = Nt[s])), o.query && !n.query && (n.query = o.queryKey), r.socket(o.path, n) ); } return o(xt, { Manager: Bt, Socket: Ct, io: xt, connect: xt }), xt; }); //# sourceMappingURL=socket.io.min.js.map