diff --git a/CHANGELOG.md b/CHANGELOG.md index 5fde09bb9..7cca0080d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,38 +2,51 @@ ## 2023 -- [6.3.0](#63O-2023-01-10) (2023-01-10) +- [6.3.1](#631-2023-02-04) (Feb 2023) +- [6.3.0](#63O-2023-01-10) (Jan 2023) ## 2022 -- [6.2.3](#623-2022-10-13) (2022-10-13) -- [6.2.2](#622-2022-05-02) (2022-05-02) -- [6.2.1](#621-2022-04-17) (2022-04-17) -- [6.2.0](#620-2022-04-17) (2022-04-17) +- [6.2.3](#623-2022-10-13) (Oct 2022) +- [6.2.2](#622-2022-05-02) (May 2022) +- [6.2.1](#621-2022-04-17) (Apr 2022) +- [6.2.0](#620-2022-04-17) (Apr 2022) ## 2021 -- [6.0.3](#603-2021-11-14) (2021-11-14) (from the [6.0.x](https://github.com/socketio/engine.io-client/tree/6.0.x) branch) -- [6.1.1](#611-2021-11-14) (2021-11-14) -- [6.1.0](#610-2021-11-08) (2021-11-08) -- [6.0.2](#602-2021-10-15) (2021-10-15) -- [6.0.1](#601-2021-10-14) (2021-10-14) -- [**6.0.0**](#600-2021-10-08) (2021-10-08) -- [5.2.0](#520-2021-08-29) (2021-08-29) -- [5.1.2](#512-2021-06-24) (2021-06-24) -- [5.1.1](#511-2021-05-11) (2021-05-11) -- [4.1.4](#414-2021-05-05) (2021-05-05) (from the [4.1.x](https://github.com/socketio/engine.io-client/tree/4.1.x) branch) -- [3.5.2](#352-2021-05-05) (2021-05-05) (from the [3.5.x](https://github.com/socketio/engine.io-client/tree/3.5.x) branch) -- [5.1.0](#510-2021-05-04) (2021-05-04) -- [5.0.1](#501-2021-03-31) (2021-03-31) -- [**5.0.0**](#500-2021-03-10) (2021-03-10) -- [3.5.1](#351-2021-03-02) (2021-03-02) (from the [3.5.x](https://github.com/socketio/engine.io-client/tree/3.5.x) branch) -- [4.1.2](#412-2021-02-25) (2021-02-25) -- [4.1.1](#411-2021-02-02) (2021-02-02) -- [4.1.0](#410-2021-01-14) (2021-01-14) +- [6.0.3](#603-2021-11-14) (Nov 2021) (from the [6.0.x](https://github.com/socketio/engine.io-client/tree/6.0.x) branch) +- [6.1.1](#611-2021-11-14) (Nov 2021) +- [6.1.0](#610-2021-11-08) (Nov 2021) +- [6.0.2](#602-2021-10-15) (Oct 2021) +- [6.0.1](#601-2021-10-14) (Oct 2021) +- [**6.0.0**](#600-2021-10-08) (Oct 2021) +- [5.2.0](#520-2021-08-29) (Aug 2021) +- [5.1.2](#512-2021-06-24) (Jun 2021) +- [5.1.1](#511-2021-05-11) (May 2021) +- [4.1.4](#414-2021-05-05) (May 2021) (from the [4.1.x](https://github.com/socketio/engine.io-client/tree/4.1.x) branch) +- [3.5.2](#352-2021-05-05) (May 2021) (from the [3.5.x](https://github.com/socketio/engine.io-client/tree/3.5.x) branch) +- [5.1.0](#510-2021-05-04) (May 2021) +- [5.0.1](#501-2021-03-31) (Mar 2021) +- [**5.0.0**](#500-2021-03-10) (Mar 2021) +- [3.5.1](#351-2021-03-02) (Mar 2021) (from the [3.5.x](https://github.com/socketio/engine.io-client/tree/3.5.x) branch) +- [4.1.2](#412-2021-02-25) (Feb 2021) +- [4.1.1](#411-2021-02-02) (Feb 2021) +- [4.1.0](#410-2021-01-14) (Jan 2021) # Release notes +## [6.3.1](https://github.com/socketio/engine.io-client/compare/6.3.0...6.3.1) (2023-02-04) + + +### Bug Fixes + +* **typings:** do not expose browser-specific types ([37d7a0a](https://github.com/socketio/engine.io-client/commit/37d7a0aa791a4666ca405b11d0d8bdb199222e50)) + +### Dependencies + +- [`ws@~8.11.0`](https://github.com/websockets/ws/releases/tag/8.11.0) (no change) + + ## [6.3.0](https://github.com/socketio/engine.io-client/compare/6.2.3...6.3.0) (2023-01-10) diff --git a/dist/engine.io.esm.min.js b/dist/engine.io.esm.min.js index 6c1380b7e..afd93cc51 100644 --- a/dist/engine.io.esm.min.js +++ b/dist/engine.io.esm.min.js @@ -1,5 +1,5 @@ /*! - * Engine.IO v6.3.0 + * Engine.IO v6.3.1 * (c) 2014-2023 Guillermo Rauch * Released under the MIT License. */ diff --git a/dist/engine.io.esm.min.js.map b/dist/engine.io.esm.min.js.map index e4e957fb0..a3601fc79 100644 --- a/dist/engine.io.esm.min.js.map +++ b/dist/engine.io.esm.min.js.map @@ -1 +1 @@ -{"version":3,"file":"engine.io.esm.min.js","sources":["../node_modules/engine.io-parser/build/esm/commons.js","../node_modules/engine.io-parser/build/esm/encodePacket.browser.js","../node_modules/@socket.io/base64-arraybuffer/dist/base64-arraybuffer.es5.js","../node_modules/engine.io-parser/build/esm/decodePacket.browser.js","../node_modules/engine.io-parser/build/esm/index.js","../node_modules/@socket.io/component-emitter/index.mjs","../build/esm/globalThis.browser.js","../build/esm/util.js","../build/esm/transport.js","../build/esm/contrib/yeast.js","../build/esm/contrib/parseqs.js","../build/esm/contrib/has-cors.js","../build/esm/transports/xmlhttprequest.browser.js","../build/esm/transports/polling.js","../build/esm/transports/websocket-constructor.browser.js","../build/esm/transports/websocket.js","../build/esm/transports/index.js","../build/esm/contrib/parseuri.js","../build/esm/socket.js","../build/esm/index.js"],"sourcesContent":["const PACKET_TYPES = Object.create(null); // no Map = no polyfill\nPACKET_TYPES[\"open\"] = \"0\";\nPACKET_TYPES[\"close\"] = \"1\";\nPACKET_TYPES[\"ping\"] = \"2\";\nPACKET_TYPES[\"pong\"] = \"3\";\nPACKET_TYPES[\"message\"] = \"4\";\nPACKET_TYPES[\"upgrade\"] = \"5\";\nPACKET_TYPES[\"noop\"] = \"6\";\nconst PACKET_TYPES_REVERSE = Object.create(null);\nObject.keys(PACKET_TYPES).forEach(key => {\n PACKET_TYPES_REVERSE[PACKET_TYPES[key]] = key;\n});\nconst ERROR_PACKET = { type: \"error\", data: \"parser error\" };\nexport { PACKET_TYPES, PACKET_TYPES_REVERSE, ERROR_PACKET };\n","import { PACKET_TYPES } from \"./commons.js\";\nconst withNativeBlob = typeof Blob === \"function\" ||\n (typeof Blob !== \"undefined\" &&\n Object.prototype.toString.call(Blob) === \"[object BlobConstructor]\");\nconst withNativeArrayBuffer = typeof ArrayBuffer === \"function\";\n// ArrayBuffer.isView method is not defined in IE10\nconst isView = obj => {\n return typeof ArrayBuffer.isView === \"function\"\n ? ArrayBuffer.isView(obj)\n : obj && obj.buffer instanceof ArrayBuffer;\n};\nconst encodePacket = ({ type, data }, supportsBinary, callback) => {\n if (withNativeBlob && data instanceof Blob) {\n if (supportsBinary) {\n return callback(data);\n }\n else {\n return encodeBlobAsBase64(data, callback);\n }\n }\n else if (withNativeArrayBuffer &&\n (data instanceof ArrayBuffer || isView(data))) {\n if (supportsBinary) {\n return callback(data);\n }\n else {\n return encodeBlobAsBase64(new Blob([data]), callback);\n }\n }\n // plain string\n return callback(PACKET_TYPES[type] + (data || \"\"));\n};\nconst encodeBlobAsBase64 = (data, callback) => {\n const fileReader = new FileReader();\n fileReader.onload = function () {\n const content = fileReader.result.split(\",\")[1];\n callback(\"b\" + content);\n };\n return fileReader.readAsDataURL(data);\n};\nexport default encodePacket;\n","/*\n * base64-arraybuffer 1.0.1 \n * Copyright (c) 2022 Niklas von Hertzen \n * Released under MIT License\n */\nvar chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n// Use a lookup table to find the index.\nvar lookup = typeof Uint8Array === 'undefined' ? [] : new Uint8Array(256);\nfor (var i = 0; i < chars.length; i++) {\n lookup[chars.charCodeAt(i)] = i;\n}\nvar encode = function (arraybuffer) {\n var bytes = new Uint8Array(arraybuffer), i, len = bytes.length, base64 = '';\n for (i = 0; i < len; i += 3) {\n base64 += chars[bytes[i] >> 2];\n base64 += chars[((bytes[i] & 3) << 4) | (bytes[i + 1] >> 4)];\n base64 += chars[((bytes[i + 1] & 15) << 2) | (bytes[i + 2] >> 6)];\n base64 += chars[bytes[i + 2] & 63];\n }\n if (len % 3 === 2) {\n base64 = base64.substring(0, base64.length - 1) + '=';\n }\n else if (len % 3 === 1) {\n base64 = base64.substring(0, base64.length - 2) + '==';\n }\n return base64;\n};\nvar decode = function (base64) {\n var bufferLength = base64.length * 0.75, len = base64.length, i, p = 0, encoded1, encoded2, encoded3, encoded4;\n if (base64[base64.length - 1] === '=') {\n bufferLength--;\n if (base64[base64.length - 2] === '=') {\n bufferLength--;\n }\n }\n var arraybuffer = new ArrayBuffer(bufferLength), bytes = new Uint8Array(arraybuffer);\n for (i = 0; i < len; i += 4) {\n encoded1 = lookup[base64.charCodeAt(i)];\n encoded2 = lookup[base64.charCodeAt(i + 1)];\n encoded3 = lookup[base64.charCodeAt(i + 2)];\n encoded4 = lookup[base64.charCodeAt(i + 3)];\n bytes[p++] = (encoded1 << 2) | (encoded2 >> 4);\n bytes[p++] = ((encoded2 & 15) << 4) | (encoded3 >> 2);\n bytes[p++] = ((encoded3 & 3) << 6) | (encoded4 & 63);\n }\n return arraybuffer;\n};\n\nexport { decode, encode };\n//# sourceMappingURL=base64-arraybuffer.es5.js.map\n","import { ERROR_PACKET, PACKET_TYPES_REVERSE } from \"./commons.js\";\nimport { decode } from \"@socket.io/base64-arraybuffer\";\nconst withNativeArrayBuffer = typeof ArrayBuffer === \"function\";\nconst decodePacket = (encodedPacket, binaryType) => {\n if (typeof encodedPacket !== \"string\") {\n return {\n type: \"message\",\n data: mapBinary(encodedPacket, binaryType)\n };\n }\n const type = encodedPacket.charAt(0);\n if (type === \"b\") {\n return {\n type: \"message\",\n data: decodeBase64Packet(encodedPacket.substring(1), binaryType)\n };\n }\n const packetType = PACKET_TYPES_REVERSE[type];\n if (!packetType) {\n return ERROR_PACKET;\n }\n return encodedPacket.length > 1\n ? {\n type: PACKET_TYPES_REVERSE[type],\n data: encodedPacket.substring(1)\n }\n : {\n type: PACKET_TYPES_REVERSE[type]\n };\n};\nconst decodeBase64Packet = (data, binaryType) => {\n if (withNativeArrayBuffer) {\n const decoded = decode(data);\n return mapBinary(decoded, binaryType);\n }\n else {\n return { base64: true, data }; // fallback for old browsers\n }\n};\nconst mapBinary = (data, binaryType) => {\n switch (binaryType) {\n case \"blob\":\n return data instanceof ArrayBuffer ? new Blob([data]) : data;\n case \"arraybuffer\":\n default:\n return data; // assuming the data is already an ArrayBuffer\n }\n};\nexport default decodePacket;\n","import encodePacket from \"./encodePacket.js\";\nimport decodePacket from \"./decodePacket.js\";\nconst SEPARATOR = String.fromCharCode(30); // see https://en.wikipedia.org/wiki/Delimiter#ASCII_delimited_text\nconst encodePayload = (packets, callback) => {\n // some packets may be added to the array while encoding, so the initial length must be saved\n const length = packets.length;\n const encodedPackets = new Array(length);\n let count = 0;\n packets.forEach((packet, i) => {\n // force base64 encoding for binary packets\n encodePacket(packet, false, encodedPacket => {\n encodedPackets[i] = encodedPacket;\n if (++count === length) {\n callback(encodedPackets.join(SEPARATOR));\n }\n });\n });\n};\nconst decodePayload = (encodedPayload, binaryType) => {\n const encodedPackets = encodedPayload.split(SEPARATOR);\n const packets = [];\n for (let i = 0; i < encodedPackets.length; i++) {\n const decodedPacket = decodePacket(encodedPackets[i], binaryType);\n packets.push(decodedPacket);\n if (decodedPacket.type === \"error\") {\n break;\n }\n }\n return packets;\n};\nexport const protocol = 4;\nexport { encodePacket, encodePayload, decodePacket, decodePayload };\n","/**\n * Initialize a new `Emitter`.\n *\n * @api public\n */\n\nexport function Emitter(obj) {\n if (obj) return mixin(obj);\n}\n\n/**\n * Mixin the emitter properties.\n *\n * @param {Object} obj\n * @return {Object}\n * @api private\n */\n\nfunction mixin(obj) {\n for (var key in Emitter.prototype) {\n obj[key] = Emitter.prototype[key];\n }\n return obj;\n}\n\n/**\n * Listen on the given `event` with `fn`.\n *\n * @param {String} event\n * @param {Function} fn\n * @return {Emitter}\n * @api public\n */\n\nEmitter.prototype.on =\nEmitter.prototype.addEventListener = function(event, fn){\n this._callbacks = this._callbacks || {};\n (this._callbacks['$' + event] = this._callbacks['$' + event] || [])\n .push(fn);\n return this;\n};\n\n/**\n * Adds an `event` listener that will be invoked a single\n * time then automatically removed.\n *\n * @param {String} event\n * @param {Function} fn\n * @return {Emitter}\n * @api public\n */\n\nEmitter.prototype.once = function(event, fn){\n function on() {\n this.off(event, on);\n fn.apply(this, arguments);\n }\n\n on.fn = fn;\n this.on(event, on);\n return this;\n};\n\n/**\n * Remove the given callback for `event` or all\n * registered callbacks.\n *\n * @param {String} event\n * @param {Function} fn\n * @return {Emitter}\n * @api public\n */\n\nEmitter.prototype.off =\nEmitter.prototype.removeListener =\nEmitter.prototype.removeAllListeners =\nEmitter.prototype.removeEventListener = function(event, fn){\n this._callbacks = this._callbacks || {};\n\n // all\n if (0 == arguments.length) {\n this._callbacks = {};\n return this;\n }\n\n // specific event\n var callbacks = this._callbacks['$' + event];\n if (!callbacks) return this;\n\n // remove all handlers\n if (1 == arguments.length) {\n delete this._callbacks['$' + event];\n return this;\n }\n\n // remove specific handler\n var cb;\n for (var i = 0; i < callbacks.length; i++) {\n cb = callbacks[i];\n if (cb === fn || cb.fn === fn) {\n callbacks.splice(i, 1);\n break;\n }\n }\n\n // Remove event specific arrays for event types that no\n // one is subscribed for to avoid memory leak.\n if (callbacks.length === 0) {\n delete this._callbacks['$' + event];\n }\n\n return this;\n};\n\n/**\n * Emit `event` with the given args.\n *\n * @param {String} event\n * @param {Mixed} ...\n * @return {Emitter}\n */\n\nEmitter.prototype.emit = function(event){\n this._callbacks = this._callbacks || {};\n\n var args = new Array(arguments.length - 1)\n , callbacks = this._callbacks['$' + event];\n\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n\n if (callbacks) {\n callbacks = callbacks.slice(0);\n for (var i = 0, len = callbacks.length; i < len; ++i) {\n callbacks[i].apply(this, args);\n }\n }\n\n return this;\n};\n\n// alias used for reserved events (protected method)\nEmitter.prototype.emitReserved = Emitter.prototype.emit;\n\n/**\n * Return array of callbacks for `event`.\n *\n * @param {String} event\n * @return {Array}\n * @api public\n */\n\nEmitter.prototype.listeners = function(event){\n this._callbacks = this._callbacks || {};\n return this._callbacks['$' + event] || [];\n};\n\n/**\n * Check if this emitter has `event` handlers.\n *\n * @param {String} event\n * @return {Boolean}\n * @api public\n */\n\nEmitter.prototype.hasListeners = function(event){\n return !! this.listeners(event).length;\n};\n","export const globalThisShim = (() => {\n if (typeof self !== \"undefined\") {\n return self;\n }\n else if (typeof window !== \"undefined\") {\n return window;\n }\n else {\n return Function(\"return this\")();\n }\n})();\n","import { globalThisShim as globalThis } from \"./globalThis.js\";\nexport function pick(obj, ...attr) {\n return attr.reduce((acc, k) => {\n if (obj.hasOwnProperty(k)) {\n acc[k] = obj[k];\n }\n return acc;\n }, {});\n}\n// Keep a reference to the real timeout functions so they can be used when overridden\nconst NATIVE_SET_TIMEOUT = globalThis.setTimeout;\nconst NATIVE_CLEAR_TIMEOUT = globalThis.clearTimeout;\nexport function installTimerFunctions(obj, opts) {\n if (opts.useNativeTimers) {\n obj.setTimeoutFn = NATIVE_SET_TIMEOUT.bind(globalThis);\n obj.clearTimeoutFn = NATIVE_CLEAR_TIMEOUT.bind(globalThis);\n }\n else {\n obj.setTimeoutFn = globalThis.setTimeout.bind(globalThis);\n obj.clearTimeoutFn = globalThis.clearTimeout.bind(globalThis);\n }\n}\n// base64 encoded buffers are about 33% bigger (https://en.wikipedia.org/wiki/Base64)\nconst BASE64_OVERHEAD = 1.33;\n// we could also have used `new Blob([obj]).size`, but it isn't supported in IE9\nexport function byteLength(obj) {\n if (typeof obj === \"string\") {\n return utf8Length(obj);\n }\n // arraybuffer or blob\n return Math.ceil((obj.byteLength || obj.size) * BASE64_OVERHEAD);\n}\nfunction utf8Length(str) {\n let c = 0, length = 0;\n for (let i = 0, l = str.length; i < l; i++) {\n c = str.charCodeAt(i);\n if (c < 0x80) {\n length += 1;\n }\n else if (c < 0x800) {\n length += 2;\n }\n else if (c < 0xd800 || c >= 0xe000) {\n length += 3;\n }\n else {\n i++;\n length += 4;\n }\n }\n return length;\n}\n","import { decodePacket } from \"engine.io-parser\";\nimport { Emitter } from \"@socket.io/component-emitter\";\nimport { installTimerFunctions } from \"./util.js\";\nclass TransportError extends Error {\n constructor(reason, description, context) {\n super(reason);\n this.description = description;\n this.context = context;\n this.type = \"TransportError\";\n }\n}\nexport class Transport extends Emitter {\n /**\n * Transport abstract constructor.\n *\n * @param {Object} opts - options\n * @protected\n */\n constructor(opts) {\n super();\n this.writable = false;\n installTimerFunctions(this, opts);\n this.opts = opts;\n this.query = opts.query;\n this.socket = opts.socket;\n }\n /**\n * Emits an error.\n *\n * @param {String} reason\n * @param description\n * @param context - the error context\n * @return {Transport} for chaining\n * @protected\n */\n onError(reason, description, context) {\n super.emitReserved(\"error\", new TransportError(reason, description, context));\n return this;\n }\n /**\n * Opens the transport.\n */\n open() {\n this.readyState = \"opening\";\n this.doOpen();\n return this;\n }\n /**\n * Closes the transport.\n */\n close() {\n if (this.readyState === \"opening\" || this.readyState === \"open\") {\n this.doClose();\n this.onClose();\n }\n return this;\n }\n /**\n * Sends multiple packets.\n *\n * @param {Array} packets\n */\n send(packets) {\n if (this.readyState === \"open\") {\n this.write(packets);\n }\n else {\n // this might happen if the transport was silently closed in the beforeunload event handler\n }\n }\n /**\n * Called upon open\n *\n * @protected\n */\n onOpen() {\n this.readyState = \"open\";\n this.writable = true;\n super.emitReserved(\"open\");\n }\n /**\n * Called with data.\n *\n * @param {String} data\n * @protected\n */\n onData(data) {\n const packet = decodePacket(data, this.socket.binaryType);\n this.onPacket(packet);\n }\n /**\n * Called with a decoded packet.\n *\n * @protected\n */\n onPacket(packet) {\n super.emitReserved(\"packet\", packet);\n }\n /**\n * Called upon close.\n *\n * @protected\n */\n onClose(details) {\n this.readyState = \"closed\";\n super.emitReserved(\"close\", details);\n }\n /**\n * Pauses the transport, in order not to lose packets during an upgrade.\n *\n * @param onPause\n */\n pause(onPause) { }\n}\n","// imported from https://github.com/unshiftio/yeast\n'use strict';\nconst alphabet = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-_'.split(''), length = 64, map = {};\nlet seed = 0, i = 0, prev;\n/**\n * Return a string representing the specified number.\n *\n * @param {Number} num The number to convert.\n * @returns {String} The string representation of the number.\n * @api public\n */\nexport function encode(num) {\n let encoded = '';\n do {\n encoded = alphabet[num % length] + encoded;\n num = Math.floor(num / length);\n } while (num > 0);\n return encoded;\n}\n/**\n * Return the integer value specified by the given string.\n *\n * @param {String} str The string to convert.\n * @returns {Number} The integer value represented by the string.\n * @api public\n */\nexport function decode(str) {\n let decoded = 0;\n for (i = 0; i < str.length; i++) {\n decoded = decoded * length + map[str.charAt(i)];\n }\n return decoded;\n}\n/**\n * Yeast: A tiny growing id generator.\n *\n * @returns {String} A unique id.\n * @api public\n */\nexport function yeast() {\n const now = encode(+new Date());\n if (now !== prev)\n return seed = 0, prev = now;\n return now + '.' + encode(seed++);\n}\n//\n// Map each character to its index.\n//\nfor (; i < length; i++)\n map[alphabet[i]] = i;\n","// imported from https://github.com/galkn/querystring\n/**\n * Compiles a querystring\n * Returns string representation of the object\n *\n * @param {Object}\n * @api private\n */\nexport function encode(obj) {\n let str = '';\n for (let i in obj) {\n if (obj.hasOwnProperty(i)) {\n if (str.length)\n str += '&';\n str += encodeURIComponent(i) + '=' + encodeURIComponent(obj[i]);\n }\n }\n return str;\n}\n/**\n * Parses a simple querystring into an object\n *\n * @param {String} qs\n * @api private\n */\nexport function decode(qs) {\n let qry = {};\n let pairs = qs.split('&');\n for (let i = 0, l = pairs.length; i < l; i++) {\n let pair = pairs[i].split('=');\n qry[decodeURIComponent(pair[0])] = decodeURIComponent(pair[1]);\n }\n return qry;\n}\n","// imported from https://github.com/component/has-cors\nlet value = false;\ntry {\n value = typeof XMLHttpRequest !== 'undefined' &&\n 'withCredentials' in new XMLHttpRequest();\n}\ncatch (err) {\n // if XMLHttp support is disabled in IE then it will throw\n // when trying to create\n}\nexport const hasCORS = value;\n","// browser shim for xmlhttprequest module\nimport { hasCORS } from \"../contrib/has-cors.js\";\nimport { globalThisShim as globalThis } from \"../globalThis.js\";\nexport function XHR(opts) {\n const xdomain = opts.xdomain;\n // XMLHttpRequest can be disabled on IE\n try {\n if (\"undefined\" !== typeof XMLHttpRequest && (!xdomain || hasCORS)) {\n return new XMLHttpRequest();\n }\n }\n catch (e) { }\n if (!xdomain) {\n try {\n return new globalThis[[\"Active\"].concat(\"Object\").join(\"X\")](\"Microsoft.XMLHTTP\");\n }\n catch (e) { }\n }\n}\n","import { Transport } from \"../transport.js\";\nimport { yeast } from \"../contrib/yeast.js\";\nimport { encode } from \"../contrib/parseqs.js\";\nimport { encodePayload, decodePayload } from \"engine.io-parser\";\nimport { XHR as XMLHttpRequest } from \"./xmlhttprequest.js\";\nimport { Emitter } from \"@socket.io/component-emitter\";\nimport { installTimerFunctions, pick } from \"../util.js\";\nimport { globalThisShim as globalThis } from \"../globalThis.js\";\nfunction empty() { }\nconst hasXHR2 = (function () {\n const xhr = new XMLHttpRequest({\n xdomain: false,\n });\n return null != xhr.responseType;\n})();\nexport class Polling extends Transport {\n /**\n * XHR Polling constructor.\n *\n * @param {Object} opts\n * @package\n */\n constructor(opts) {\n super(opts);\n this.polling = false;\n if (typeof location !== \"undefined\") {\n const isSSL = \"https:\" === location.protocol;\n let port = location.port;\n // some user agents have empty `location.port`\n if (!port) {\n port = isSSL ? \"443\" : \"80\";\n }\n this.xd =\n (typeof location !== \"undefined\" &&\n opts.hostname !== location.hostname) ||\n port !== opts.port;\n this.xs = opts.secure !== isSSL;\n }\n /**\n * XHR supports binary\n */\n const forceBase64 = opts && opts.forceBase64;\n this.supportsBinary = hasXHR2 && !forceBase64;\n }\n get name() {\n return \"polling\";\n }\n /**\n * Opens the socket (triggers polling). We write a PING message to determine\n * when the transport is open.\n *\n * @protected\n */\n doOpen() {\n this.poll();\n }\n /**\n * Pauses polling.\n *\n * @param {Function} onPause - callback upon buffers are flushed and transport is paused\n * @package\n */\n pause(onPause) {\n this.readyState = \"pausing\";\n const pause = () => {\n this.readyState = \"paused\";\n onPause();\n };\n if (this.polling || !this.writable) {\n let total = 0;\n if (this.polling) {\n total++;\n this.once(\"pollComplete\", function () {\n --total || pause();\n });\n }\n if (!this.writable) {\n total++;\n this.once(\"drain\", function () {\n --total || pause();\n });\n }\n }\n else {\n pause();\n }\n }\n /**\n * Starts polling cycle.\n *\n * @private\n */\n poll() {\n this.polling = true;\n this.doPoll();\n this.emitReserved(\"poll\");\n }\n /**\n * Overloads onData to detect payloads.\n *\n * @protected\n */\n onData(data) {\n const callback = (packet) => {\n // if its the first message we consider the transport open\n if (\"opening\" === this.readyState && packet.type === \"open\") {\n this.onOpen();\n }\n // if its a close packet, we close the ongoing requests\n if (\"close\" === packet.type) {\n this.onClose({ description: \"transport closed by the server\" });\n return false;\n }\n // otherwise bypass onData and handle the message\n this.onPacket(packet);\n };\n // decode payload\n decodePayload(data, this.socket.binaryType).forEach(callback);\n // if an event did not trigger closing\n if (\"closed\" !== this.readyState) {\n // if we got data we're not polling\n this.polling = false;\n this.emitReserved(\"pollComplete\");\n if (\"open\" === this.readyState) {\n this.poll();\n }\n else {\n }\n }\n }\n /**\n * For polling, send a close packet.\n *\n * @protected\n */\n doClose() {\n const close = () => {\n this.write([{ type: \"close\" }]);\n };\n if (\"open\" === this.readyState) {\n close();\n }\n else {\n // in case we're trying to close while\n // handshaking is in progress (GH-164)\n this.once(\"open\", close);\n }\n }\n /**\n * Writes a packets payload.\n *\n * @param {Array} packets - data packets\n * @protected\n */\n write(packets) {\n this.writable = false;\n encodePayload(packets, (data) => {\n this.doWrite(data, () => {\n this.writable = true;\n this.emitReserved(\"drain\");\n });\n });\n }\n /**\n * Generates uri for connection.\n *\n * @private\n */\n uri() {\n let query = this.query || {};\n const schema = this.opts.secure ? \"https\" : \"http\";\n let port = \"\";\n // cache busting is forced\n if (false !== this.opts.timestampRequests) {\n query[this.opts.timestampParam] = yeast();\n }\n if (!this.supportsBinary && !query.sid) {\n query.b64 = 1;\n }\n // avoid port if default for schema\n if (this.opts.port &&\n ((\"https\" === schema && Number(this.opts.port) !== 443) ||\n (\"http\" === schema && Number(this.opts.port) !== 80))) {\n port = \":\" + this.opts.port;\n }\n const encodedQuery = encode(query);\n const ipv6 = this.opts.hostname.indexOf(\":\") !== -1;\n return (schema +\n \"://\" +\n (ipv6 ? \"[\" + this.opts.hostname + \"]\" : this.opts.hostname) +\n port +\n this.opts.path +\n (encodedQuery.length ? \"?\" + encodedQuery : \"\"));\n }\n /**\n * Creates a request.\n *\n * @param {String} method\n * @private\n */\n request(opts = {}) {\n Object.assign(opts, { xd: this.xd, xs: this.xs }, this.opts);\n return new Request(this.uri(), opts);\n }\n /**\n * Sends data.\n *\n * @param {String} data to send.\n * @param {Function} called upon flush.\n * @private\n */\n doWrite(data, fn) {\n const req = this.request({\n method: \"POST\",\n data: data,\n });\n req.on(\"success\", fn);\n req.on(\"error\", (xhrStatus, context) => {\n this.onError(\"xhr post error\", xhrStatus, context);\n });\n }\n /**\n * Starts a poll cycle.\n *\n * @private\n */\n doPoll() {\n const req = this.request();\n req.on(\"data\", this.onData.bind(this));\n req.on(\"error\", (xhrStatus, context) => {\n this.onError(\"xhr poll error\", xhrStatus, context);\n });\n this.pollXhr = req;\n }\n}\nexport class Request extends Emitter {\n /**\n * Request constructor\n *\n * @param {Object} options\n * @package\n */\n constructor(uri, opts) {\n super();\n installTimerFunctions(this, opts);\n this.opts = opts;\n this.method = opts.method || \"GET\";\n this.uri = uri;\n this.async = false !== opts.async;\n this.data = undefined !== opts.data ? opts.data : null;\n this.create();\n }\n /**\n * Creates the XHR object and sends the request.\n *\n * @private\n */\n create() {\n const opts = pick(this.opts, \"agent\", \"pfx\", \"key\", \"passphrase\", \"cert\", \"ca\", \"ciphers\", \"rejectUnauthorized\", \"autoUnref\");\n opts.xdomain = !!this.opts.xd;\n opts.xscheme = !!this.opts.xs;\n const xhr = (this.xhr = new XMLHttpRequest(opts));\n try {\n xhr.open(this.method, this.uri, this.async);\n try {\n if (this.opts.extraHeaders) {\n xhr.setDisableHeaderCheck && xhr.setDisableHeaderCheck(true);\n for (let i in this.opts.extraHeaders) {\n if (this.opts.extraHeaders.hasOwnProperty(i)) {\n xhr.setRequestHeader(i, this.opts.extraHeaders[i]);\n }\n }\n }\n }\n catch (e) { }\n if (\"POST\" === this.method) {\n try {\n xhr.setRequestHeader(\"Content-type\", \"text/plain;charset=UTF-8\");\n }\n catch (e) { }\n }\n try {\n xhr.setRequestHeader(\"Accept\", \"*/*\");\n }\n catch (e) { }\n // ie6 check\n if (\"withCredentials\" in xhr) {\n xhr.withCredentials = this.opts.withCredentials;\n }\n if (this.opts.requestTimeout) {\n xhr.timeout = this.opts.requestTimeout;\n }\n xhr.onreadystatechange = () => {\n if (4 !== xhr.readyState)\n return;\n if (200 === xhr.status || 1223 === xhr.status) {\n this.onLoad();\n }\n else {\n // make sure the `error` event handler that's user-set\n // does not throw in the same tick and gets caught here\n this.setTimeoutFn(() => {\n this.onError(typeof xhr.status === \"number\" ? xhr.status : 0);\n }, 0);\n }\n };\n xhr.send(this.data);\n }\n catch (e) {\n // Need to defer since .create() is called directly from the constructor\n // and thus the 'error' event can only be only bound *after* this exception\n // occurs. Therefore, also, we cannot throw here at all.\n this.setTimeoutFn(() => {\n this.onError(e);\n }, 0);\n return;\n }\n if (typeof document !== \"undefined\") {\n this.index = Request.requestsCount++;\n Request.requests[this.index] = this;\n }\n }\n /**\n * Called upon error.\n *\n * @private\n */\n onError(err) {\n this.emitReserved(\"error\", err, this.xhr);\n this.cleanup(true);\n }\n /**\n * Cleans up house.\n *\n * @private\n */\n cleanup(fromError) {\n if (\"undefined\" === typeof this.xhr || null === this.xhr) {\n return;\n }\n this.xhr.onreadystatechange = empty;\n if (fromError) {\n try {\n this.xhr.abort();\n }\n catch (e) { }\n }\n if (typeof document !== \"undefined\") {\n delete Request.requests[this.index];\n }\n this.xhr = null;\n }\n /**\n * Called upon load.\n *\n * @private\n */\n onLoad() {\n const data = this.xhr.responseText;\n if (data !== null) {\n this.emitReserved(\"data\", data);\n this.emitReserved(\"success\");\n this.cleanup();\n }\n }\n /**\n * Aborts the request.\n *\n * @package\n */\n abort() {\n this.cleanup();\n }\n}\nRequest.requestsCount = 0;\nRequest.requests = {};\n/**\n * Aborts pending requests when unloading the window. This is needed to prevent\n * memory leaks (e.g. when using IE) and to ensure that no spurious error is\n * emitted.\n */\nif (typeof document !== \"undefined\") {\n // @ts-ignore\n if (typeof attachEvent === \"function\") {\n // @ts-ignore\n attachEvent(\"onunload\", unloadHandler);\n }\n else if (typeof addEventListener === \"function\") {\n const terminationEvent = \"onpagehide\" in globalThis ? \"pagehide\" : \"unload\";\n addEventListener(terminationEvent, unloadHandler, false);\n }\n}\nfunction unloadHandler() {\n for (let i in Request.requests) {\n if (Request.requests.hasOwnProperty(i)) {\n Request.requests[i].abort();\n }\n }\n}\n","import { globalThisShim as globalThis } from \"../globalThis.js\";\nexport const nextTick = (() => {\n const isPromiseAvailable = typeof Promise === \"function\" && typeof Promise.resolve === \"function\";\n if (isPromiseAvailable) {\n return (cb) => Promise.resolve().then(cb);\n }\n else {\n return (cb, setTimeoutFn) => setTimeoutFn(cb, 0);\n }\n})();\nexport const WebSocket = globalThis.WebSocket || globalThis.MozWebSocket;\nexport const usingBrowserWebSocket = true;\nexport const defaultBinaryType = \"arraybuffer\";\n","import { Transport } from \"../transport.js\";\nimport { encode } from \"../contrib/parseqs.js\";\nimport { yeast } from \"../contrib/yeast.js\";\nimport { pick } from \"../util.js\";\nimport { defaultBinaryType, nextTick, usingBrowserWebSocket, WebSocket, } from \"./websocket-constructor.js\";\nimport { encodePacket } from \"engine.io-parser\";\n// detect ReactNative environment\nconst isReactNative = typeof navigator !== \"undefined\" &&\n typeof navigator.product === \"string\" &&\n navigator.product.toLowerCase() === \"reactnative\";\nexport class WS extends Transport {\n /**\n * WebSocket transport constructor.\n *\n * @param {Object} opts - connection options\n * @protected\n */\n constructor(opts) {\n super(opts);\n this.supportsBinary = !opts.forceBase64;\n }\n get name() {\n return \"websocket\";\n }\n doOpen() {\n if (!this.check()) {\n // let probe timeout\n return;\n }\n const uri = this.uri();\n const protocols = this.opts.protocols;\n // React Native only supports the 'headers' option, and will print a warning if anything else is passed\n const opts = isReactNative\n ? {}\n : pick(this.opts, \"agent\", \"perMessageDeflate\", \"pfx\", \"key\", \"passphrase\", \"cert\", \"ca\", \"ciphers\", \"rejectUnauthorized\", \"localAddress\", \"protocolVersion\", \"origin\", \"maxPayload\", \"family\", \"checkServerIdentity\");\n if (this.opts.extraHeaders) {\n opts.headers = this.opts.extraHeaders;\n }\n try {\n this.ws =\n usingBrowserWebSocket && !isReactNative\n ? protocols\n ? new WebSocket(uri, protocols)\n : new WebSocket(uri)\n : new WebSocket(uri, protocols, opts);\n }\n catch (err) {\n return this.emitReserved(\"error\", err);\n }\n this.ws.binaryType = this.socket.binaryType || defaultBinaryType;\n this.addEventListeners();\n }\n /**\n * Adds event listeners to the socket\n *\n * @private\n */\n addEventListeners() {\n this.ws.onopen = () => {\n if (this.opts.autoUnref) {\n this.ws._socket.unref();\n }\n this.onOpen();\n };\n this.ws.onclose = (closeEvent) => this.onClose({\n description: \"websocket connection closed\",\n context: closeEvent,\n });\n this.ws.onmessage = (ev) => this.onData(ev.data);\n this.ws.onerror = (e) => this.onError(\"websocket error\", e);\n }\n write(packets) {\n this.writable = false;\n // encodePacket efficient as it uses WS framing\n // no need for encodePayload\n for (let i = 0; i < packets.length; i++) {\n const packet = packets[i];\n const lastPacket = i === packets.length - 1;\n encodePacket(packet, this.supportsBinary, (data) => {\n // always create a new object (GH-437)\n const opts = {};\n if (!usingBrowserWebSocket) {\n if (packet.options) {\n opts.compress = packet.options.compress;\n }\n if (this.opts.perMessageDeflate) {\n const len = \n // @ts-ignore\n \"string\" === typeof data ? Buffer.byteLength(data) : data.length;\n if (len < this.opts.perMessageDeflate.threshold) {\n opts.compress = false;\n }\n }\n }\n // Sometimes the websocket has already been closed but the browser didn't\n // have a chance of informing us about it yet, in that case send will\n // throw an error\n try {\n if (usingBrowserWebSocket) {\n // TypeError is thrown when passing the second argument on Safari\n this.ws.send(data);\n }\n else {\n this.ws.send(data, opts);\n }\n }\n catch (e) {\n }\n if (lastPacket) {\n // fake drain\n // defer to next tick to allow Socket to clear writeBuffer\n nextTick(() => {\n this.writable = true;\n this.emitReserved(\"drain\");\n }, this.setTimeoutFn);\n }\n });\n }\n }\n doClose() {\n if (typeof this.ws !== \"undefined\") {\n this.ws.close();\n this.ws = null;\n }\n }\n /**\n * Generates uri for connection.\n *\n * @private\n */\n uri() {\n let query = this.query || {};\n const schema = this.opts.secure ? \"wss\" : \"ws\";\n let port = \"\";\n // avoid port if default for schema\n if (this.opts.port &&\n ((\"wss\" === schema && Number(this.opts.port) !== 443) ||\n (\"ws\" === schema && Number(this.opts.port) !== 80))) {\n port = \":\" + this.opts.port;\n }\n // append timestamp to URI\n if (this.opts.timestampRequests) {\n query[this.opts.timestampParam] = yeast();\n }\n // communicate binary support capabilities\n if (!this.supportsBinary) {\n query.b64 = 1;\n }\n const encodedQuery = encode(query);\n const ipv6 = this.opts.hostname.indexOf(\":\") !== -1;\n return (schema +\n \"://\" +\n (ipv6 ? \"[\" + this.opts.hostname + \"]\" : this.opts.hostname) +\n port +\n this.opts.path +\n (encodedQuery.length ? \"?\" + encodedQuery : \"\"));\n }\n /**\n * Feature detection for WebSocket.\n *\n * @return {Boolean} whether this transport is available.\n * @private\n */\n check() {\n return !!WebSocket;\n }\n}\n","import { Polling } from \"./polling.js\";\nimport { WS } from \"./websocket.js\";\nexport const transports = {\n websocket: WS,\n polling: Polling,\n};\n","// imported from https://github.com/galkn/parseuri\n/**\n * Parses a URI\n *\n * Note: we could also have used the built-in URL object, but it isn't supported on all platforms.\n *\n * See:\n * - https://developer.mozilla.org/en-US/docs/Web/API/URL\n * - https://caniuse.com/url\n * - https://www.rfc-editor.org/rfc/rfc3986#appendix-B\n *\n * History of the parse() method:\n * - first commit: https://github.com/socketio/socket.io-client/commit/4ee1d5d94b3906a9c052b459f1a818b15f38f91c\n * - export into its own module: https://github.com/socketio/engine.io-client/commit/de2c561e4564efeb78f1bdb1ba39ef81b2822cb3\n * - reimport: https://github.com/socketio/engine.io-client/commit/df32277c3f6d622eec5ed09f493cae3f3391d242\n *\n * @author Steven Levithan (MIT license)\n * @api private\n */\nconst re = /^(?:(?![^:@\\/?#]+:[^:@\\/]*@)(http|https|ws|wss):\\/\\/)?((?:(([^:@\\/?#]*)(?::([^:@\\/?#]*))?)?@)?((?:[a-f0-9]{0,4}:){2,7}[a-f0-9]{0,4}|[^:\\/?#]*)(?::(\\d*))?)(((\\/(?:[^?#](?![^?#\\/]*\\.[^?#\\/.]+(?:[?#]|$)))*\\/?)?([^?#\\/]*))(?:\\?([^#]*))?(?:#(.*))?)/;\nconst parts = [\n 'source', 'protocol', 'authority', 'userInfo', 'user', 'password', 'host', 'port', 'relative', 'path', 'directory', 'file', 'query', 'anchor'\n];\nexport function parse(str) {\n const src = str, b = str.indexOf('['), e = str.indexOf(']');\n if (b != -1 && e != -1) {\n str = str.substring(0, b) + str.substring(b, e).replace(/:/g, ';') + str.substring(e, str.length);\n }\n let m = re.exec(str || ''), uri = {}, i = 14;\n while (i--) {\n uri[parts[i]] = m[i] || '';\n }\n if (b != -1 && e != -1) {\n uri.source = src;\n uri.host = uri.host.substring(1, uri.host.length - 1).replace(/;/g, ':');\n uri.authority = uri.authority.replace('[', '').replace(']', '').replace(/;/g, ':');\n uri.ipv6uri = true;\n }\n uri.pathNames = pathNames(uri, uri['path']);\n uri.queryKey = queryKey(uri, uri['query']);\n return uri;\n}\nfunction pathNames(obj, path) {\n const regx = /\\/{2,9}/g, names = path.replace(regx, \"/\").split(\"/\");\n if (path.slice(0, 1) == '/' || path.length === 0) {\n names.splice(0, 1);\n }\n if (path.slice(-1) == '/') {\n names.splice(names.length - 1, 1);\n }\n return names;\n}\nfunction queryKey(uri, query) {\n const data = {};\n query.replace(/(?:^|&)([^&=]*)=?([^&]*)/g, function ($0, $1, $2) {\n if ($1) {\n data[$1] = $2;\n }\n });\n return data;\n}\n","import { transports } from \"./transports/index.js\";\nimport { installTimerFunctions, byteLength } from \"./util.js\";\nimport { decode } from \"./contrib/parseqs.js\";\nimport { parse } from \"./contrib/parseuri.js\";\nimport { Emitter } from \"@socket.io/component-emitter\";\nimport { protocol, } from \"engine.io-parser\";\nexport class Socket extends Emitter {\n /**\n * Socket constructor.\n *\n * @param {String|Object} uri - uri or options\n * @param {Object} opts - options\n */\n constructor(uri, opts = {}) {\n super();\n this.writeBuffer = [];\n if (uri && \"object\" === typeof uri) {\n opts = uri;\n uri = null;\n }\n if (uri) {\n uri = parse(uri);\n opts.hostname = uri.host;\n opts.secure = uri.protocol === \"https\" || uri.protocol === \"wss\";\n opts.port = uri.port;\n if (uri.query)\n opts.query = uri.query;\n }\n else if (opts.host) {\n opts.hostname = parse(opts.host).host;\n }\n installTimerFunctions(this, opts);\n this.secure =\n null != opts.secure\n ? opts.secure\n : typeof location !== \"undefined\" && \"https:\" === location.protocol;\n if (opts.hostname && !opts.port) {\n // if no port is specified manually, use the protocol default\n opts.port = this.secure ? \"443\" : \"80\";\n }\n this.hostname =\n opts.hostname ||\n (typeof location !== \"undefined\" ? location.hostname : \"localhost\");\n this.port =\n opts.port ||\n (typeof location !== \"undefined\" && location.port\n ? location.port\n : this.secure\n ? \"443\"\n : \"80\");\n this.transports = opts.transports || [\"polling\", \"websocket\"];\n this.writeBuffer = [];\n this.prevBufferLen = 0;\n this.opts = Object.assign({\n path: \"/engine.io\",\n agent: false,\n withCredentials: false,\n upgrade: true,\n timestampParam: \"t\",\n rememberUpgrade: false,\n addTrailingSlash: true,\n rejectUnauthorized: true,\n perMessageDeflate: {\n threshold: 1024,\n },\n transportOptions: {},\n closeOnBeforeunload: true,\n }, opts);\n this.opts.path =\n this.opts.path.replace(/\\/$/, \"\") +\n (this.opts.addTrailingSlash ? \"/\" : \"\");\n if (typeof this.opts.query === \"string\") {\n this.opts.query = decode(this.opts.query);\n }\n // set on handshake\n this.id = null;\n this.upgrades = null;\n this.pingInterval = null;\n this.pingTimeout = null;\n // set on heartbeat\n this.pingTimeoutTimer = null;\n if (typeof addEventListener === \"function\") {\n if (this.opts.closeOnBeforeunload) {\n // Firefox closes the connection when the \"beforeunload\" event is emitted but not Chrome. This event listener\n // ensures every browser behaves the same (no \"disconnect\" event at the Socket.IO level when the page is\n // closed/reloaded)\n this.beforeunloadEventListener = () => {\n if (this.transport) {\n // silently close the transport\n this.transport.removeAllListeners();\n this.transport.close();\n }\n };\n addEventListener(\"beforeunload\", this.beforeunloadEventListener, false);\n }\n if (this.hostname !== \"localhost\") {\n this.offlineEventListener = () => {\n this.onClose(\"transport close\", {\n description: \"network connection lost\",\n });\n };\n addEventListener(\"offline\", this.offlineEventListener, false);\n }\n }\n this.open();\n }\n /**\n * Creates transport of the given type.\n *\n * @param {String} name - transport name\n * @return {Transport}\n * @private\n */\n createTransport(name) {\n const query = Object.assign({}, this.opts.query);\n // append engine.io protocol identifier\n query.EIO = protocol;\n // transport name\n query.transport = name;\n // session id if we already have one\n if (this.id)\n query.sid = this.id;\n const opts = Object.assign({}, this.opts.transportOptions[name], this.opts, {\n query,\n socket: this,\n hostname: this.hostname,\n secure: this.secure,\n port: this.port,\n });\n return new transports[name](opts);\n }\n /**\n * Initializes transport to use and starts probe.\n *\n * @private\n */\n open() {\n let transport;\n if (this.opts.rememberUpgrade &&\n Socket.priorWebsocketSuccess &&\n this.transports.indexOf(\"websocket\") !== -1) {\n transport = \"websocket\";\n }\n else if (0 === this.transports.length) {\n // Emit error on next tick so it can be listened to\n this.setTimeoutFn(() => {\n this.emitReserved(\"error\", \"No transports available\");\n }, 0);\n return;\n }\n else {\n transport = this.transports[0];\n }\n this.readyState = \"opening\";\n // Retry with the next transport if the transport is disabled (jsonp: false)\n try {\n transport = this.createTransport(transport);\n }\n catch (e) {\n this.transports.shift();\n this.open();\n return;\n }\n transport.open();\n this.setTransport(transport);\n }\n /**\n * Sets the current transport. Disables the existing one (if any).\n *\n * @private\n */\n setTransport(transport) {\n if (this.transport) {\n this.transport.removeAllListeners();\n }\n // set up transport\n this.transport = transport;\n // set up transport listeners\n transport\n .on(\"drain\", this.onDrain.bind(this))\n .on(\"packet\", this.onPacket.bind(this))\n .on(\"error\", this.onError.bind(this))\n .on(\"close\", (reason) => this.onClose(\"transport close\", reason));\n }\n /**\n * Probes a transport.\n *\n * @param {String} name - transport name\n * @private\n */\n probe(name) {\n let transport = this.createTransport(name);\n let failed = false;\n Socket.priorWebsocketSuccess = false;\n const onTransportOpen = () => {\n if (failed)\n return;\n transport.send([{ type: \"ping\", data: \"probe\" }]);\n transport.once(\"packet\", (msg) => {\n if (failed)\n return;\n if (\"pong\" === msg.type && \"probe\" === msg.data) {\n this.upgrading = true;\n this.emitReserved(\"upgrading\", transport);\n if (!transport)\n return;\n Socket.priorWebsocketSuccess = \"websocket\" === transport.name;\n this.transport.pause(() => {\n if (failed)\n return;\n if (\"closed\" === this.readyState)\n return;\n cleanup();\n this.setTransport(transport);\n transport.send([{ type: \"upgrade\" }]);\n this.emitReserved(\"upgrade\", transport);\n transport = null;\n this.upgrading = false;\n this.flush();\n });\n }\n else {\n const err = new Error(\"probe error\");\n // @ts-ignore\n err.transport = transport.name;\n this.emitReserved(\"upgradeError\", err);\n }\n });\n };\n function freezeTransport() {\n if (failed)\n return;\n // Any callback called by transport should be ignored since now\n failed = true;\n cleanup();\n transport.close();\n transport = null;\n }\n // Handle any error that happens while probing\n const onerror = (err) => {\n const error = new Error(\"probe error: \" + err);\n // @ts-ignore\n error.transport = transport.name;\n freezeTransport();\n this.emitReserved(\"upgradeError\", error);\n };\n function onTransportClose() {\n onerror(\"transport closed\");\n }\n // When the socket is closed while we're probing\n function onclose() {\n onerror(\"socket closed\");\n }\n // When the socket is upgraded while we're probing\n function onupgrade(to) {\n if (transport && to.name !== transport.name) {\n freezeTransport();\n }\n }\n // Remove all listeners on the transport and on self\n const cleanup = () => {\n transport.removeListener(\"open\", onTransportOpen);\n transport.removeListener(\"error\", onerror);\n transport.removeListener(\"close\", onTransportClose);\n this.off(\"close\", onclose);\n this.off(\"upgrading\", onupgrade);\n };\n transport.once(\"open\", onTransportOpen);\n transport.once(\"error\", onerror);\n transport.once(\"close\", onTransportClose);\n this.once(\"close\", onclose);\n this.once(\"upgrading\", onupgrade);\n transport.open();\n }\n /**\n * Called when connection is deemed open.\n *\n * @private\n */\n onOpen() {\n this.readyState = \"open\";\n Socket.priorWebsocketSuccess = \"websocket\" === this.transport.name;\n this.emitReserved(\"open\");\n this.flush();\n // we check for `readyState` in case an `open`\n // listener already closed the socket\n if (\"open\" === this.readyState && this.opts.upgrade) {\n let i = 0;\n const l = this.upgrades.length;\n for (; i < l; i++) {\n this.probe(this.upgrades[i]);\n }\n }\n }\n /**\n * Handles a packet.\n *\n * @private\n */\n onPacket(packet) {\n if (\"opening\" === this.readyState ||\n \"open\" === this.readyState ||\n \"closing\" === this.readyState) {\n this.emitReserved(\"packet\", packet);\n // Socket is live - any packet counts\n this.emitReserved(\"heartbeat\");\n switch (packet.type) {\n case \"open\":\n this.onHandshake(JSON.parse(packet.data));\n break;\n case \"ping\":\n this.resetPingTimeout();\n this.sendPacket(\"pong\");\n this.emitReserved(\"ping\");\n this.emitReserved(\"pong\");\n break;\n case \"error\":\n const err = new Error(\"server error\");\n // @ts-ignore\n err.code = packet.data;\n this.onError(err);\n break;\n case \"message\":\n this.emitReserved(\"data\", packet.data);\n this.emitReserved(\"message\", packet.data);\n break;\n }\n }\n else {\n }\n }\n /**\n * Called upon handshake completion.\n *\n * @param {Object} data - handshake obj\n * @private\n */\n onHandshake(data) {\n this.emitReserved(\"handshake\", data);\n this.id = data.sid;\n this.transport.query.sid = data.sid;\n this.upgrades = this.filterUpgrades(data.upgrades);\n this.pingInterval = data.pingInterval;\n this.pingTimeout = data.pingTimeout;\n this.maxPayload = data.maxPayload;\n this.onOpen();\n // In case open handler closes socket\n if (\"closed\" === this.readyState)\n return;\n this.resetPingTimeout();\n }\n /**\n * Sets and resets ping timeout timer based on server pings.\n *\n * @private\n */\n resetPingTimeout() {\n this.clearTimeoutFn(this.pingTimeoutTimer);\n this.pingTimeoutTimer = this.setTimeoutFn(() => {\n this.onClose(\"ping timeout\");\n }, this.pingInterval + this.pingTimeout);\n if (this.opts.autoUnref) {\n this.pingTimeoutTimer.unref();\n }\n }\n /**\n * Called on `drain` event\n *\n * @private\n */\n onDrain() {\n this.writeBuffer.splice(0, this.prevBufferLen);\n // setting prevBufferLen = 0 is very important\n // for example, when upgrading, upgrade packet is sent over,\n // and a nonzero prevBufferLen could cause problems on `drain`\n this.prevBufferLen = 0;\n if (0 === this.writeBuffer.length) {\n this.emitReserved(\"drain\");\n }\n else {\n this.flush();\n }\n }\n /**\n * Flush write buffers.\n *\n * @private\n */\n flush() {\n if (\"closed\" !== this.readyState &&\n this.transport.writable &&\n !this.upgrading &&\n this.writeBuffer.length) {\n const packets = this.getWritablePackets();\n this.transport.send(packets);\n // keep track of current length of writeBuffer\n // splice writeBuffer and callbackBuffer on `drain`\n this.prevBufferLen = packets.length;\n this.emitReserved(\"flush\");\n }\n }\n /**\n * Ensure the encoded size of the writeBuffer is below the maxPayload value sent by the server (only for HTTP\n * long-polling)\n *\n * @private\n */\n getWritablePackets() {\n const shouldCheckPayloadSize = this.maxPayload &&\n this.transport.name === \"polling\" &&\n this.writeBuffer.length > 1;\n if (!shouldCheckPayloadSize) {\n return this.writeBuffer;\n }\n let payloadSize = 1; // first packet type\n for (let i = 0; i < this.writeBuffer.length; i++) {\n const data = this.writeBuffer[i].data;\n if (data) {\n payloadSize += byteLength(data);\n }\n if (i > 0 && payloadSize > this.maxPayload) {\n return this.writeBuffer.slice(0, i);\n }\n payloadSize += 2; // separator + packet type\n }\n return this.writeBuffer;\n }\n /**\n * Sends a message.\n *\n * @param {String} msg - message.\n * @param {Object} options.\n * @param {Function} callback function.\n * @return {Socket} for chaining.\n */\n write(msg, options, fn) {\n this.sendPacket(\"message\", msg, options, fn);\n return this;\n }\n send(msg, options, fn) {\n this.sendPacket(\"message\", msg, options, fn);\n return this;\n }\n /**\n * Sends a packet.\n *\n * @param {String} type: packet type.\n * @param {String} data.\n * @param {Object} options.\n * @param {Function} fn - callback function.\n * @private\n */\n sendPacket(type, data, options, fn) {\n if (\"function\" === typeof data) {\n fn = data;\n data = undefined;\n }\n if (\"function\" === typeof options) {\n fn = options;\n options = null;\n }\n if (\"closing\" === this.readyState || \"closed\" === this.readyState) {\n return;\n }\n options = options || {};\n options.compress = false !== options.compress;\n const packet = {\n type: type,\n data: data,\n options: options,\n };\n this.emitReserved(\"packetCreate\", packet);\n this.writeBuffer.push(packet);\n if (fn)\n this.once(\"flush\", fn);\n this.flush();\n }\n /**\n * Closes the connection.\n */\n close() {\n const close = () => {\n this.onClose(\"forced close\");\n this.transport.close();\n };\n const cleanupAndClose = () => {\n this.off(\"upgrade\", cleanupAndClose);\n this.off(\"upgradeError\", cleanupAndClose);\n close();\n };\n const waitForUpgrade = () => {\n // wait for upgrade to finish since we can't send packets while pausing a transport\n this.once(\"upgrade\", cleanupAndClose);\n this.once(\"upgradeError\", cleanupAndClose);\n };\n if (\"opening\" === this.readyState || \"open\" === this.readyState) {\n this.readyState = \"closing\";\n if (this.writeBuffer.length) {\n this.once(\"drain\", () => {\n if (this.upgrading) {\n waitForUpgrade();\n }\n else {\n close();\n }\n });\n }\n else if (this.upgrading) {\n waitForUpgrade();\n }\n else {\n close();\n }\n }\n return this;\n }\n /**\n * Called upon transport error\n *\n * @private\n */\n onError(err) {\n Socket.priorWebsocketSuccess = false;\n this.emitReserved(\"error\", err);\n this.onClose(\"transport error\", err);\n }\n /**\n * Called upon transport close.\n *\n * @private\n */\n onClose(reason, description) {\n if (\"opening\" === this.readyState ||\n \"open\" === this.readyState ||\n \"closing\" === this.readyState) {\n // clear timers\n this.clearTimeoutFn(this.pingTimeoutTimer);\n // stop event from firing again for transport\n this.transport.removeAllListeners(\"close\");\n // ensure transport won't stay open\n this.transport.close();\n // ignore further transport communication\n this.transport.removeAllListeners();\n if (typeof removeEventListener === \"function\") {\n removeEventListener(\"beforeunload\", this.beforeunloadEventListener, false);\n removeEventListener(\"offline\", this.offlineEventListener, false);\n }\n // set ready state\n this.readyState = \"closed\";\n // clear session id\n this.id = null;\n // emit close event\n this.emitReserved(\"close\", reason, description);\n // clean buffers after, so users can still\n // grab the buffers on `close` event\n this.writeBuffer = [];\n this.prevBufferLen = 0;\n }\n }\n /**\n * Filters upgrades, returning only those matching client transports.\n *\n * @param {Array} upgrades - server upgrades\n * @private\n */\n filterUpgrades(upgrades) {\n const filteredUpgrades = [];\n let i = 0;\n const j = upgrades.length;\n for (; i < j; i++) {\n if (~this.transports.indexOf(upgrades[i]))\n filteredUpgrades.push(upgrades[i]);\n }\n return filteredUpgrades;\n }\n}\nSocket.protocol = protocol;\n","import { Socket } from \"./socket.js\";\nexport { Socket };\nexport const protocol = Socket.protocol;\nexport { Transport } from \"./transport.js\";\nexport { transports } from \"./transports/index.js\";\nexport { installTimerFunctions } from \"./util.js\";\nexport { parse } from \"./contrib/parseuri.js\";\nexport { nextTick } from \"./transports/websocket-constructor.js\";\n"],"names":["PACKET_TYPES","Object","create","PACKET_TYPES_REVERSE","keys","forEach","key","ERROR_PACKET","type","data","withNativeBlob","Blob","prototype","toString","call","withNativeArrayBuffer","ArrayBuffer","encodePacket","supportsBinary","callback","encodeBlobAsBase64","obj","isView","buffer","fileReader","FileReader","onload","content","result","split","readAsDataURL","chars","lookup","Uint8Array","i","length","charCodeAt","decodePacket","encodedPacket","binaryType","mapBinary","charAt","decodeBase64Packet","substring","decoded","base64","encoded1","encoded2","encoded3","encoded4","bufferLength","len","p","arraybuffer","bytes","decode","SEPARATOR","String","fromCharCode","Emitter","mixin","on","addEventListener","event","fn","this","_callbacks","push","once","off","apply","arguments","removeListener","removeAllListeners","removeEventListener","cb","callbacks","splice","emit","args","Array","slice","emitReserved","listeners","hasListeners","globalThisShim","self","window","Function","pick","attr","reduce","acc","k","hasOwnProperty","NATIVE_SET_TIMEOUT","globalThis","setTimeout","NATIVE_CLEAR_TIMEOUT","clearTimeout","installTimerFunctions","opts","useNativeTimers","setTimeoutFn","bind","clearTimeoutFn","TransportError","Error","constructor","reason","description","context","super","Transport","writable","query","socket","onError","open","readyState","doOpen","close","doClose","onClose","send","packets","write","onOpen","onData","packet","onPacket","details","pause","onPause","alphabet","map","prev","seed","encode","num","encoded","Math","floor","yeast","now","Date","str","encodeURIComponent","value","XMLHttpRequest","err","hasCORS","XHR","xdomain","e","concat","join","empty","hasXHR2","responseType","Request","uri","method","async","undefined","xd","xscheme","xs","xhr","extraHeaders","setDisableHeaderCheck","setRequestHeader","withCredentials","requestTimeout","timeout","onreadystatechange","status","onLoad","document","index","requestsCount","requests","cleanup","fromError","abort","responseText","attachEvent","unloadHandler","nextTick","Promise","resolve","then","WebSocket","MozWebSocket","isReactNative","navigator","product","toLowerCase","transports","websocket","forceBase64","name","check","protocols","headers","ws","addEventListeners","onopen","autoUnref","_socket","unref","onclose","closeEvent","onmessage","ev","onerror","lastPacket","schema","secure","port","Number","timestampRequests","timestampParam","b64","encodedQuery","hostname","indexOf","path","polling","location","isSSL","protocol","poll","total","doPoll","encodedPayload","encodedPackets","decodedPacket","decodePayload","count","encodePayload","doWrite","sid","request","assign","req","xhrStatus","pollXhr","re","parts","parse","src","b","replace","m","exec","source","host","authority","ipv6uri","pathNames","regx","names","queryKey","$0","$1","$2","Socket","writeBuffer","prevBufferLen","agent","upgrade","rememberUpgrade","addTrailingSlash","rejectUnauthorized","perMessageDeflate","threshold","transportOptions","closeOnBeforeunload","qs","qry","pairs","l","pair","decodeURIComponent","id","upgrades","pingInterval","pingTimeout","pingTimeoutTimer","beforeunloadEventListener","transport","offlineEventListener","createTransport","EIO","priorWebsocketSuccess","shift","setTransport","onDrain","probe","failed","onTransportOpen","msg","upgrading","flush","freezeTransport","error","onTransportClose","onupgrade","to","onHandshake","JSON","resetPingTimeout","sendPacket","code","filterUpgrades","maxPayload","getWritablePackets","payloadSize","c","utf8Length","ceil","byteLength","size","options","compress","cleanupAndClose","waitForUpgrade","filteredUpgrades","j"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"engine.io.esm.min.js","sources":["../node_modules/engine.io-parser/build/esm/commons.js","../node_modules/engine.io-parser/build/esm/encodePacket.browser.js","../node_modules/@socket.io/base64-arraybuffer/dist/base64-arraybuffer.es5.js","../node_modules/engine.io-parser/build/esm/decodePacket.browser.js","../node_modules/engine.io-parser/build/esm/index.js","../node_modules/@socket.io/component-emitter/index.mjs","../build/esm/globalThis.browser.js","../build/esm/util.js","../build/esm/transport.js","../build/esm/contrib/yeast.js","../build/esm/contrib/parseqs.js","../build/esm/contrib/has-cors.js","../build/esm/transports/xmlhttprequest.browser.js","../build/esm/transports/polling.js","../build/esm/transports/websocket-constructor.browser.js","../build/esm/transports/websocket.js","../build/esm/transports/index.js","../build/esm/contrib/parseuri.js","../build/esm/socket.js","../build/esm/index.js"],"sourcesContent":["const PACKET_TYPES = Object.create(null); // no Map = no polyfill\nPACKET_TYPES[\"open\"] = \"0\";\nPACKET_TYPES[\"close\"] = \"1\";\nPACKET_TYPES[\"ping\"] = \"2\";\nPACKET_TYPES[\"pong\"] = \"3\";\nPACKET_TYPES[\"message\"] = \"4\";\nPACKET_TYPES[\"upgrade\"] = \"5\";\nPACKET_TYPES[\"noop\"] = \"6\";\nconst PACKET_TYPES_REVERSE = Object.create(null);\nObject.keys(PACKET_TYPES).forEach(key => {\n PACKET_TYPES_REVERSE[PACKET_TYPES[key]] = key;\n});\nconst ERROR_PACKET = { type: \"error\", data: \"parser error\" };\nexport { PACKET_TYPES, PACKET_TYPES_REVERSE, ERROR_PACKET };\n","import { PACKET_TYPES } from \"./commons.js\";\nconst withNativeBlob = typeof Blob === \"function\" ||\n (typeof Blob !== \"undefined\" &&\n Object.prototype.toString.call(Blob) === \"[object BlobConstructor]\");\nconst withNativeArrayBuffer = typeof ArrayBuffer === \"function\";\n// ArrayBuffer.isView method is not defined in IE10\nconst isView = obj => {\n return typeof ArrayBuffer.isView === \"function\"\n ? ArrayBuffer.isView(obj)\n : obj && obj.buffer instanceof ArrayBuffer;\n};\nconst encodePacket = ({ type, data }, supportsBinary, callback) => {\n if (withNativeBlob && data instanceof Blob) {\n if (supportsBinary) {\n return callback(data);\n }\n else {\n return encodeBlobAsBase64(data, callback);\n }\n }\n else if (withNativeArrayBuffer &&\n (data instanceof ArrayBuffer || isView(data))) {\n if (supportsBinary) {\n return callback(data);\n }\n else {\n return encodeBlobAsBase64(new Blob([data]), callback);\n }\n }\n // plain string\n return callback(PACKET_TYPES[type] + (data || \"\"));\n};\nconst encodeBlobAsBase64 = (data, callback) => {\n const fileReader = new FileReader();\n fileReader.onload = function () {\n const content = fileReader.result.split(\",\")[1];\n callback(\"b\" + content);\n };\n return fileReader.readAsDataURL(data);\n};\nexport default encodePacket;\n","/*\n * base64-arraybuffer 1.0.1 \n * Copyright (c) 2022 Niklas von Hertzen \n * Released under MIT License\n */\nvar chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n// Use a lookup table to find the index.\nvar lookup = typeof Uint8Array === 'undefined' ? [] : new Uint8Array(256);\nfor (var i = 0; i < chars.length; i++) {\n lookup[chars.charCodeAt(i)] = i;\n}\nvar encode = function (arraybuffer) {\n var bytes = new Uint8Array(arraybuffer), i, len = bytes.length, base64 = '';\n for (i = 0; i < len; i += 3) {\n base64 += chars[bytes[i] >> 2];\n base64 += chars[((bytes[i] & 3) << 4) | (bytes[i + 1] >> 4)];\n base64 += chars[((bytes[i + 1] & 15) << 2) | (bytes[i + 2] >> 6)];\n base64 += chars[bytes[i + 2] & 63];\n }\n if (len % 3 === 2) {\n base64 = base64.substring(0, base64.length - 1) + '=';\n }\n else if (len % 3 === 1) {\n base64 = base64.substring(0, base64.length - 2) + '==';\n }\n return base64;\n};\nvar decode = function (base64) {\n var bufferLength = base64.length * 0.75, len = base64.length, i, p = 0, encoded1, encoded2, encoded3, encoded4;\n if (base64[base64.length - 1] === '=') {\n bufferLength--;\n if (base64[base64.length - 2] === '=') {\n bufferLength--;\n }\n }\n var arraybuffer = new ArrayBuffer(bufferLength), bytes = new Uint8Array(arraybuffer);\n for (i = 0; i < len; i += 4) {\n encoded1 = lookup[base64.charCodeAt(i)];\n encoded2 = lookup[base64.charCodeAt(i + 1)];\n encoded3 = lookup[base64.charCodeAt(i + 2)];\n encoded4 = lookup[base64.charCodeAt(i + 3)];\n bytes[p++] = (encoded1 << 2) | (encoded2 >> 4);\n bytes[p++] = ((encoded2 & 15) << 4) | (encoded3 >> 2);\n bytes[p++] = ((encoded3 & 3) << 6) | (encoded4 & 63);\n }\n return arraybuffer;\n};\n\nexport { decode, encode };\n//# sourceMappingURL=base64-arraybuffer.es5.js.map\n","import { ERROR_PACKET, PACKET_TYPES_REVERSE } from \"./commons.js\";\nimport { decode } from \"@socket.io/base64-arraybuffer\";\nconst withNativeArrayBuffer = typeof ArrayBuffer === \"function\";\nconst decodePacket = (encodedPacket, binaryType) => {\n if (typeof encodedPacket !== \"string\") {\n return {\n type: \"message\",\n data: mapBinary(encodedPacket, binaryType)\n };\n }\n const type = encodedPacket.charAt(0);\n if (type === \"b\") {\n return {\n type: \"message\",\n data: decodeBase64Packet(encodedPacket.substring(1), binaryType)\n };\n }\n const packetType = PACKET_TYPES_REVERSE[type];\n if (!packetType) {\n return ERROR_PACKET;\n }\n return encodedPacket.length > 1\n ? {\n type: PACKET_TYPES_REVERSE[type],\n data: encodedPacket.substring(1)\n }\n : {\n type: PACKET_TYPES_REVERSE[type]\n };\n};\nconst decodeBase64Packet = (data, binaryType) => {\n if (withNativeArrayBuffer) {\n const decoded = decode(data);\n return mapBinary(decoded, binaryType);\n }\n else {\n return { base64: true, data }; // fallback for old browsers\n }\n};\nconst mapBinary = (data, binaryType) => {\n switch (binaryType) {\n case \"blob\":\n return data instanceof ArrayBuffer ? new Blob([data]) : data;\n case \"arraybuffer\":\n default:\n return data; // assuming the data is already an ArrayBuffer\n }\n};\nexport default decodePacket;\n","import encodePacket from \"./encodePacket.js\";\nimport decodePacket from \"./decodePacket.js\";\nconst SEPARATOR = String.fromCharCode(30); // see https://en.wikipedia.org/wiki/Delimiter#ASCII_delimited_text\nconst encodePayload = (packets, callback) => {\n // some packets may be added to the array while encoding, so the initial length must be saved\n const length = packets.length;\n const encodedPackets = new Array(length);\n let count = 0;\n packets.forEach((packet, i) => {\n // force base64 encoding for binary packets\n encodePacket(packet, false, encodedPacket => {\n encodedPackets[i] = encodedPacket;\n if (++count === length) {\n callback(encodedPackets.join(SEPARATOR));\n }\n });\n });\n};\nconst decodePayload = (encodedPayload, binaryType) => {\n const encodedPackets = encodedPayload.split(SEPARATOR);\n const packets = [];\n for (let i = 0; i < encodedPackets.length; i++) {\n const decodedPacket = decodePacket(encodedPackets[i], binaryType);\n packets.push(decodedPacket);\n if (decodedPacket.type === \"error\") {\n break;\n }\n }\n return packets;\n};\nexport const protocol = 4;\nexport { encodePacket, encodePayload, decodePacket, decodePayload };\n","/**\n * Initialize a new `Emitter`.\n *\n * @api public\n */\n\nexport function Emitter(obj) {\n if (obj) return mixin(obj);\n}\n\n/**\n * Mixin the emitter properties.\n *\n * @param {Object} obj\n * @return {Object}\n * @api private\n */\n\nfunction mixin(obj) {\n for (var key in Emitter.prototype) {\n obj[key] = Emitter.prototype[key];\n }\n return obj;\n}\n\n/**\n * Listen on the given `event` with `fn`.\n *\n * @param {String} event\n * @param {Function} fn\n * @return {Emitter}\n * @api public\n */\n\nEmitter.prototype.on =\nEmitter.prototype.addEventListener = function(event, fn){\n this._callbacks = this._callbacks || {};\n (this._callbacks['$' + event] = this._callbacks['$' + event] || [])\n .push(fn);\n return this;\n};\n\n/**\n * Adds an `event` listener that will be invoked a single\n * time then automatically removed.\n *\n * @param {String} event\n * @param {Function} fn\n * @return {Emitter}\n * @api public\n */\n\nEmitter.prototype.once = function(event, fn){\n function on() {\n this.off(event, on);\n fn.apply(this, arguments);\n }\n\n on.fn = fn;\n this.on(event, on);\n return this;\n};\n\n/**\n * Remove the given callback for `event` or all\n * registered callbacks.\n *\n * @param {String} event\n * @param {Function} fn\n * @return {Emitter}\n * @api public\n */\n\nEmitter.prototype.off =\nEmitter.prototype.removeListener =\nEmitter.prototype.removeAllListeners =\nEmitter.prototype.removeEventListener = function(event, fn){\n this._callbacks = this._callbacks || {};\n\n // all\n if (0 == arguments.length) {\n this._callbacks = {};\n return this;\n }\n\n // specific event\n var callbacks = this._callbacks['$' + event];\n if (!callbacks) return this;\n\n // remove all handlers\n if (1 == arguments.length) {\n delete this._callbacks['$' + event];\n return this;\n }\n\n // remove specific handler\n var cb;\n for (var i = 0; i < callbacks.length; i++) {\n cb = callbacks[i];\n if (cb === fn || cb.fn === fn) {\n callbacks.splice(i, 1);\n break;\n }\n }\n\n // Remove event specific arrays for event types that no\n // one is subscribed for to avoid memory leak.\n if (callbacks.length === 0) {\n delete this._callbacks['$' + event];\n }\n\n return this;\n};\n\n/**\n * Emit `event` with the given args.\n *\n * @param {String} event\n * @param {Mixed} ...\n * @return {Emitter}\n */\n\nEmitter.prototype.emit = function(event){\n this._callbacks = this._callbacks || {};\n\n var args = new Array(arguments.length - 1)\n , callbacks = this._callbacks['$' + event];\n\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n\n if (callbacks) {\n callbacks = callbacks.slice(0);\n for (var i = 0, len = callbacks.length; i < len; ++i) {\n callbacks[i].apply(this, args);\n }\n }\n\n return this;\n};\n\n// alias used for reserved events (protected method)\nEmitter.prototype.emitReserved = Emitter.prototype.emit;\n\n/**\n * Return array of callbacks for `event`.\n *\n * @param {String} event\n * @return {Array}\n * @api public\n */\n\nEmitter.prototype.listeners = function(event){\n this._callbacks = this._callbacks || {};\n return this._callbacks['$' + event] || [];\n};\n\n/**\n * Check if this emitter has `event` handlers.\n *\n * @param {String} event\n * @return {Boolean}\n * @api public\n */\n\nEmitter.prototype.hasListeners = function(event){\n return !! this.listeners(event).length;\n};\n","export const globalThisShim = (() => {\n if (typeof self !== \"undefined\") {\n return self;\n }\n else if (typeof window !== \"undefined\") {\n return window;\n }\n else {\n return Function(\"return this\")();\n }\n})();\n","import { globalThisShim as globalThis } from \"./globalThis.js\";\nexport function pick(obj, ...attr) {\n return attr.reduce((acc, k) => {\n if (obj.hasOwnProperty(k)) {\n acc[k] = obj[k];\n }\n return acc;\n }, {});\n}\n// Keep a reference to the real timeout functions so they can be used when overridden\nconst NATIVE_SET_TIMEOUT = globalThis.setTimeout;\nconst NATIVE_CLEAR_TIMEOUT = globalThis.clearTimeout;\nexport function installTimerFunctions(obj, opts) {\n if (opts.useNativeTimers) {\n obj.setTimeoutFn = NATIVE_SET_TIMEOUT.bind(globalThis);\n obj.clearTimeoutFn = NATIVE_CLEAR_TIMEOUT.bind(globalThis);\n }\n else {\n obj.setTimeoutFn = globalThis.setTimeout.bind(globalThis);\n obj.clearTimeoutFn = globalThis.clearTimeout.bind(globalThis);\n }\n}\n// base64 encoded buffers are about 33% bigger (https://en.wikipedia.org/wiki/Base64)\nconst BASE64_OVERHEAD = 1.33;\n// we could also have used `new Blob([obj]).size`, but it isn't supported in IE9\nexport function byteLength(obj) {\n if (typeof obj === \"string\") {\n return utf8Length(obj);\n }\n // arraybuffer or blob\n return Math.ceil((obj.byteLength || obj.size) * BASE64_OVERHEAD);\n}\nfunction utf8Length(str) {\n let c = 0, length = 0;\n for (let i = 0, l = str.length; i < l; i++) {\n c = str.charCodeAt(i);\n if (c < 0x80) {\n length += 1;\n }\n else if (c < 0x800) {\n length += 2;\n }\n else if (c < 0xd800 || c >= 0xe000) {\n length += 3;\n }\n else {\n i++;\n length += 4;\n }\n }\n return length;\n}\n","import { decodePacket } from \"engine.io-parser\";\nimport { Emitter } from \"@socket.io/component-emitter\";\nimport { installTimerFunctions } from \"./util.js\";\nclass TransportError extends Error {\n constructor(reason, description, context) {\n super(reason);\n this.description = description;\n this.context = context;\n this.type = \"TransportError\";\n }\n}\nexport class Transport extends Emitter {\n /**\n * Transport abstract constructor.\n *\n * @param {Object} opts - options\n * @protected\n */\n constructor(opts) {\n super();\n this.writable = false;\n installTimerFunctions(this, opts);\n this.opts = opts;\n this.query = opts.query;\n this.socket = opts.socket;\n }\n /**\n * Emits an error.\n *\n * @param {String} reason\n * @param description\n * @param context - the error context\n * @return {Transport} for chaining\n * @protected\n */\n onError(reason, description, context) {\n super.emitReserved(\"error\", new TransportError(reason, description, context));\n return this;\n }\n /**\n * Opens the transport.\n */\n open() {\n this.readyState = \"opening\";\n this.doOpen();\n return this;\n }\n /**\n * Closes the transport.\n */\n close() {\n if (this.readyState === \"opening\" || this.readyState === \"open\") {\n this.doClose();\n this.onClose();\n }\n return this;\n }\n /**\n * Sends multiple packets.\n *\n * @param {Array} packets\n */\n send(packets) {\n if (this.readyState === \"open\") {\n this.write(packets);\n }\n else {\n // this might happen if the transport was silently closed in the beforeunload event handler\n }\n }\n /**\n * Called upon open\n *\n * @protected\n */\n onOpen() {\n this.readyState = \"open\";\n this.writable = true;\n super.emitReserved(\"open\");\n }\n /**\n * Called with data.\n *\n * @param {String} data\n * @protected\n */\n onData(data) {\n const packet = decodePacket(data, this.socket.binaryType);\n this.onPacket(packet);\n }\n /**\n * Called with a decoded packet.\n *\n * @protected\n */\n onPacket(packet) {\n super.emitReserved(\"packet\", packet);\n }\n /**\n * Called upon close.\n *\n * @protected\n */\n onClose(details) {\n this.readyState = \"closed\";\n super.emitReserved(\"close\", details);\n }\n /**\n * Pauses the transport, in order not to lose packets during an upgrade.\n *\n * @param onPause\n */\n pause(onPause) { }\n}\n","// imported from https://github.com/unshiftio/yeast\n'use strict';\nconst alphabet = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-_'.split(''), length = 64, map = {};\nlet seed = 0, i = 0, prev;\n/**\n * Return a string representing the specified number.\n *\n * @param {Number} num The number to convert.\n * @returns {String} The string representation of the number.\n * @api public\n */\nexport function encode(num) {\n let encoded = '';\n do {\n encoded = alphabet[num % length] + encoded;\n num = Math.floor(num / length);\n } while (num > 0);\n return encoded;\n}\n/**\n * Return the integer value specified by the given string.\n *\n * @param {String} str The string to convert.\n * @returns {Number} The integer value represented by the string.\n * @api public\n */\nexport function decode(str) {\n let decoded = 0;\n for (i = 0; i < str.length; i++) {\n decoded = decoded * length + map[str.charAt(i)];\n }\n return decoded;\n}\n/**\n * Yeast: A tiny growing id generator.\n *\n * @returns {String} A unique id.\n * @api public\n */\nexport function yeast() {\n const now = encode(+new Date());\n if (now !== prev)\n return seed = 0, prev = now;\n return now + '.' + encode(seed++);\n}\n//\n// Map each character to its index.\n//\nfor (; i < length; i++)\n map[alphabet[i]] = i;\n","// imported from https://github.com/galkn/querystring\n/**\n * Compiles a querystring\n * Returns string representation of the object\n *\n * @param {Object}\n * @api private\n */\nexport function encode(obj) {\n let str = '';\n for (let i in obj) {\n if (obj.hasOwnProperty(i)) {\n if (str.length)\n str += '&';\n str += encodeURIComponent(i) + '=' + encodeURIComponent(obj[i]);\n }\n }\n return str;\n}\n/**\n * Parses a simple querystring into an object\n *\n * @param {String} qs\n * @api private\n */\nexport function decode(qs) {\n let qry = {};\n let pairs = qs.split('&');\n for (let i = 0, l = pairs.length; i < l; i++) {\n let pair = pairs[i].split('=');\n qry[decodeURIComponent(pair[0])] = decodeURIComponent(pair[1]);\n }\n return qry;\n}\n","// imported from https://github.com/component/has-cors\nlet value = false;\ntry {\n value = typeof XMLHttpRequest !== 'undefined' &&\n 'withCredentials' in new XMLHttpRequest();\n}\ncatch (err) {\n // if XMLHttp support is disabled in IE then it will throw\n // when trying to create\n}\nexport const hasCORS = value;\n","// browser shim for xmlhttprequest module\nimport { hasCORS } from \"../contrib/has-cors.js\";\nimport { globalThisShim as globalThis } from \"../globalThis.js\";\nexport function XHR(opts) {\n const xdomain = opts.xdomain;\n // XMLHttpRequest can be disabled on IE\n try {\n if (\"undefined\" !== typeof XMLHttpRequest && (!xdomain || hasCORS)) {\n return new XMLHttpRequest();\n }\n }\n catch (e) { }\n if (!xdomain) {\n try {\n return new globalThis[[\"Active\"].concat(\"Object\").join(\"X\")](\"Microsoft.XMLHTTP\");\n }\n catch (e) { }\n }\n}\n","import { Transport } from \"../transport.js\";\nimport { yeast } from \"../contrib/yeast.js\";\nimport { encode } from \"../contrib/parseqs.js\";\nimport { encodePayload, decodePayload } from \"engine.io-parser\";\nimport { XHR as XMLHttpRequest } from \"./xmlhttprequest.js\";\nimport { Emitter } from \"@socket.io/component-emitter\";\nimport { installTimerFunctions, pick } from \"../util.js\";\nimport { globalThisShim as globalThis } from \"../globalThis.js\";\nfunction empty() { }\nconst hasXHR2 = (function () {\n const xhr = new XMLHttpRequest({\n xdomain: false,\n });\n return null != xhr.responseType;\n})();\nexport class Polling extends Transport {\n /**\n * XHR Polling constructor.\n *\n * @param {Object} opts\n * @package\n */\n constructor(opts) {\n super(opts);\n this.polling = false;\n if (typeof location !== \"undefined\") {\n const isSSL = \"https:\" === location.protocol;\n let port = location.port;\n // some user agents have empty `location.port`\n if (!port) {\n port = isSSL ? \"443\" : \"80\";\n }\n this.xd =\n (typeof location !== \"undefined\" &&\n opts.hostname !== location.hostname) ||\n port !== opts.port;\n this.xs = opts.secure !== isSSL;\n }\n /**\n * XHR supports binary\n */\n const forceBase64 = opts && opts.forceBase64;\n this.supportsBinary = hasXHR2 && !forceBase64;\n }\n get name() {\n return \"polling\";\n }\n /**\n * Opens the socket (triggers polling). We write a PING message to determine\n * when the transport is open.\n *\n * @protected\n */\n doOpen() {\n this.poll();\n }\n /**\n * Pauses polling.\n *\n * @param {Function} onPause - callback upon buffers are flushed and transport is paused\n * @package\n */\n pause(onPause) {\n this.readyState = \"pausing\";\n const pause = () => {\n this.readyState = \"paused\";\n onPause();\n };\n if (this.polling || !this.writable) {\n let total = 0;\n if (this.polling) {\n total++;\n this.once(\"pollComplete\", function () {\n --total || pause();\n });\n }\n if (!this.writable) {\n total++;\n this.once(\"drain\", function () {\n --total || pause();\n });\n }\n }\n else {\n pause();\n }\n }\n /**\n * Starts polling cycle.\n *\n * @private\n */\n poll() {\n this.polling = true;\n this.doPoll();\n this.emitReserved(\"poll\");\n }\n /**\n * Overloads onData to detect payloads.\n *\n * @protected\n */\n onData(data) {\n const callback = (packet) => {\n // if its the first message we consider the transport open\n if (\"opening\" === this.readyState && packet.type === \"open\") {\n this.onOpen();\n }\n // if its a close packet, we close the ongoing requests\n if (\"close\" === packet.type) {\n this.onClose({ description: \"transport closed by the server\" });\n return false;\n }\n // otherwise bypass onData and handle the message\n this.onPacket(packet);\n };\n // decode payload\n decodePayload(data, this.socket.binaryType).forEach(callback);\n // if an event did not trigger closing\n if (\"closed\" !== this.readyState) {\n // if we got data we're not polling\n this.polling = false;\n this.emitReserved(\"pollComplete\");\n if (\"open\" === this.readyState) {\n this.poll();\n }\n else {\n }\n }\n }\n /**\n * For polling, send a close packet.\n *\n * @protected\n */\n doClose() {\n const close = () => {\n this.write([{ type: \"close\" }]);\n };\n if (\"open\" === this.readyState) {\n close();\n }\n else {\n // in case we're trying to close while\n // handshaking is in progress (GH-164)\n this.once(\"open\", close);\n }\n }\n /**\n * Writes a packets payload.\n *\n * @param {Array} packets - data packets\n * @protected\n */\n write(packets) {\n this.writable = false;\n encodePayload(packets, (data) => {\n this.doWrite(data, () => {\n this.writable = true;\n this.emitReserved(\"drain\");\n });\n });\n }\n /**\n * Generates uri for connection.\n *\n * @private\n */\n uri() {\n let query = this.query || {};\n const schema = this.opts.secure ? \"https\" : \"http\";\n let port = \"\";\n // cache busting is forced\n if (false !== this.opts.timestampRequests) {\n query[this.opts.timestampParam] = yeast();\n }\n if (!this.supportsBinary && !query.sid) {\n query.b64 = 1;\n }\n // avoid port if default for schema\n if (this.opts.port &&\n ((\"https\" === schema && Number(this.opts.port) !== 443) ||\n (\"http\" === schema && Number(this.opts.port) !== 80))) {\n port = \":\" + this.opts.port;\n }\n const encodedQuery = encode(query);\n const ipv6 = this.opts.hostname.indexOf(\":\") !== -1;\n return (schema +\n \"://\" +\n (ipv6 ? \"[\" + this.opts.hostname + \"]\" : this.opts.hostname) +\n port +\n this.opts.path +\n (encodedQuery.length ? \"?\" + encodedQuery : \"\"));\n }\n /**\n * Creates a request.\n *\n * @param {String} method\n * @private\n */\n request(opts = {}) {\n Object.assign(opts, { xd: this.xd, xs: this.xs }, this.opts);\n return new Request(this.uri(), opts);\n }\n /**\n * Sends data.\n *\n * @param {String} data to send.\n * @param {Function} called upon flush.\n * @private\n */\n doWrite(data, fn) {\n const req = this.request({\n method: \"POST\",\n data: data,\n });\n req.on(\"success\", fn);\n req.on(\"error\", (xhrStatus, context) => {\n this.onError(\"xhr post error\", xhrStatus, context);\n });\n }\n /**\n * Starts a poll cycle.\n *\n * @private\n */\n doPoll() {\n const req = this.request();\n req.on(\"data\", this.onData.bind(this));\n req.on(\"error\", (xhrStatus, context) => {\n this.onError(\"xhr poll error\", xhrStatus, context);\n });\n this.pollXhr = req;\n }\n}\nexport class Request extends Emitter {\n /**\n * Request constructor\n *\n * @param {Object} options\n * @package\n */\n constructor(uri, opts) {\n super();\n installTimerFunctions(this, opts);\n this.opts = opts;\n this.method = opts.method || \"GET\";\n this.uri = uri;\n this.async = false !== opts.async;\n this.data = undefined !== opts.data ? opts.data : null;\n this.create();\n }\n /**\n * Creates the XHR object and sends the request.\n *\n * @private\n */\n create() {\n const opts = pick(this.opts, \"agent\", \"pfx\", \"key\", \"passphrase\", \"cert\", \"ca\", \"ciphers\", \"rejectUnauthorized\", \"autoUnref\");\n opts.xdomain = !!this.opts.xd;\n opts.xscheme = !!this.opts.xs;\n const xhr = (this.xhr = new XMLHttpRequest(opts));\n try {\n xhr.open(this.method, this.uri, this.async);\n try {\n if (this.opts.extraHeaders) {\n xhr.setDisableHeaderCheck && xhr.setDisableHeaderCheck(true);\n for (let i in this.opts.extraHeaders) {\n if (this.opts.extraHeaders.hasOwnProperty(i)) {\n xhr.setRequestHeader(i, this.opts.extraHeaders[i]);\n }\n }\n }\n }\n catch (e) { }\n if (\"POST\" === this.method) {\n try {\n xhr.setRequestHeader(\"Content-type\", \"text/plain;charset=UTF-8\");\n }\n catch (e) { }\n }\n try {\n xhr.setRequestHeader(\"Accept\", \"*/*\");\n }\n catch (e) { }\n // ie6 check\n if (\"withCredentials\" in xhr) {\n xhr.withCredentials = this.opts.withCredentials;\n }\n if (this.opts.requestTimeout) {\n xhr.timeout = this.opts.requestTimeout;\n }\n xhr.onreadystatechange = () => {\n if (4 !== xhr.readyState)\n return;\n if (200 === xhr.status || 1223 === xhr.status) {\n this.onLoad();\n }\n else {\n // make sure the `error` event handler that's user-set\n // does not throw in the same tick and gets caught here\n this.setTimeoutFn(() => {\n this.onError(typeof xhr.status === \"number\" ? xhr.status : 0);\n }, 0);\n }\n };\n xhr.send(this.data);\n }\n catch (e) {\n // Need to defer since .create() is called directly from the constructor\n // and thus the 'error' event can only be only bound *after* this exception\n // occurs. Therefore, also, we cannot throw here at all.\n this.setTimeoutFn(() => {\n this.onError(e);\n }, 0);\n return;\n }\n if (typeof document !== \"undefined\") {\n this.index = Request.requestsCount++;\n Request.requests[this.index] = this;\n }\n }\n /**\n * Called upon error.\n *\n * @private\n */\n onError(err) {\n this.emitReserved(\"error\", err, this.xhr);\n this.cleanup(true);\n }\n /**\n * Cleans up house.\n *\n * @private\n */\n cleanup(fromError) {\n if (\"undefined\" === typeof this.xhr || null === this.xhr) {\n return;\n }\n this.xhr.onreadystatechange = empty;\n if (fromError) {\n try {\n this.xhr.abort();\n }\n catch (e) { }\n }\n if (typeof document !== \"undefined\") {\n delete Request.requests[this.index];\n }\n this.xhr = null;\n }\n /**\n * Called upon load.\n *\n * @private\n */\n onLoad() {\n const data = this.xhr.responseText;\n if (data !== null) {\n this.emitReserved(\"data\", data);\n this.emitReserved(\"success\");\n this.cleanup();\n }\n }\n /**\n * Aborts the request.\n *\n * @package\n */\n abort() {\n this.cleanup();\n }\n}\nRequest.requestsCount = 0;\nRequest.requests = {};\n/**\n * Aborts pending requests when unloading the window. This is needed to prevent\n * memory leaks (e.g. when using IE) and to ensure that no spurious error is\n * emitted.\n */\nif (typeof document !== \"undefined\") {\n // @ts-ignore\n if (typeof attachEvent === \"function\") {\n // @ts-ignore\n attachEvent(\"onunload\", unloadHandler);\n }\n else if (typeof addEventListener === \"function\") {\n const terminationEvent = \"onpagehide\" in globalThis ? \"pagehide\" : \"unload\";\n addEventListener(terminationEvent, unloadHandler, false);\n }\n}\nfunction unloadHandler() {\n for (let i in Request.requests) {\n if (Request.requests.hasOwnProperty(i)) {\n Request.requests[i].abort();\n }\n }\n}\n","import { globalThisShim as globalThis } from \"../globalThis.js\";\nexport const nextTick = (() => {\n const isPromiseAvailable = typeof Promise === \"function\" && typeof Promise.resolve === \"function\";\n if (isPromiseAvailable) {\n return (cb) => Promise.resolve().then(cb);\n }\n else {\n return (cb, setTimeoutFn) => setTimeoutFn(cb, 0);\n }\n})();\nexport const WebSocket = globalThis.WebSocket || globalThis.MozWebSocket;\nexport const usingBrowserWebSocket = true;\nexport const defaultBinaryType = \"arraybuffer\";\n","import { Transport } from \"../transport.js\";\nimport { encode } from \"../contrib/parseqs.js\";\nimport { yeast } from \"../contrib/yeast.js\";\nimport { pick } from \"../util.js\";\nimport { defaultBinaryType, nextTick, usingBrowserWebSocket, WebSocket, } from \"./websocket-constructor.js\";\nimport { encodePacket } from \"engine.io-parser\";\n// detect ReactNative environment\nconst isReactNative = typeof navigator !== \"undefined\" &&\n typeof navigator.product === \"string\" &&\n navigator.product.toLowerCase() === \"reactnative\";\nexport class WS extends Transport {\n /**\n * WebSocket transport constructor.\n *\n * @param {Object} opts - connection options\n * @protected\n */\n constructor(opts) {\n super(opts);\n this.supportsBinary = !opts.forceBase64;\n }\n get name() {\n return \"websocket\";\n }\n doOpen() {\n if (!this.check()) {\n // let probe timeout\n return;\n }\n const uri = this.uri();\n const protocols = this.opts.protocols;\n // React Native only supports the 'headers' option, and will print a warning if anything else is passed\n const opts = isReactNative\n ? {}\n : pick(this.opts, \"agent\", \"perMessageDeflate\", \"pfx\", \"key\", \"passphrase\", \"cert\", \"ca\", \"ciphers\", \"rejectUnauthorized\", \"localAddress\", \"protocolVersion\", \"origin\", \"maxPayload\", \"family\", \"checkServerIdentity\");\n if (this.opts.extraHeaders) {\n opts.headers = this.opts.extraHeaders;\n }\n try {\n this.ws =\n usingBrowserWebSocket && !isReactNative\n ? protocols\n ? new WebSocket(uri, protocols)\n : new WebSocket(uri)\n : new WebSocket(uri, protocols, opts);\n }\n catch (err) {\n return this.emitReserved(\"error\", err);\n }\n this.ws.binaryType = this.socket.binaryType || defaultBinaryType;\n this.addEventListeners();\n }\n /**\n * Adds event listeners to the socket\n *\n * @private\n */\n addEventListeners() {\n this.ws.onopen = () => {\n if (this.opts.autoUnref) {\n this.ws._socket.unref();\n }\n this.onOpen();\n };\n this.ws.onclose = (closeEvent) => this.onClose({\n description: \"websocket connection closed\",\n context: closeEvent,\n });\n this.ws.onmessage = (ev) => this.onData(ev.data);\n this.ws.onerror = (e) => this.onError(\"websocket error\", e);\n }\n write(packets) {\n this.writable = false;\n // encodePacket efficient as it uses WS framing\n // no need for encodePayload\n for (let i = 0; i < packets.length; i++) {\n const packet = packets[i];\n const lastPacket = i === packets.length - 1;\n encodePacket(packet, this.supportsBinary, (data) => {\n // always create a new object (GH-437)\n const opts = {};\n if (!usingBrowserWebSocket) {\n if (packet.options) {\n opts.compress = packet.options.compress;\n }\n if (this.opts.perMessageDeflate) {\n const len = \n // @ts-ignore\n \"string\" === typeof data ? Buffer.byteLength(data) : data.length;\n if (len < this.opts.perMessageDeflate.threshold) {\n opts.compress = false;\n }\n }\n }\n // Sometimes the websocket has already been closed but the browser didn't\n // have a chance of informing us about it yet, in that case send will\n // throw an error\n try {\n if (usingBrowserWebSocket) {\n // TypeError is thrown when passing the second argument on Safari\n this.ws.send(data);\n }\n else {\n this.ws.send(data, opts);\n }\n }\n catch (e) {\n }\n if (lastPacket) {\n // fake drain\n // defer to next tick to allow Socket to clear writeBuffer\n nextTick(() => {\n this.writable = true;\n this.emitReserved(\"drain\");\n }, this.setTimeoutFn);\n }\n });\n }\n }\n doClose() {\n if (typeof this.ws !== \"undefined\") {\n this.ws.close();\n this.ws = null;\n }\n }\n /**\n * Generates uri for connection.\n *\n * @private\n */\n uri() {\n let query = this.query || {};\n const schema = this.opts.secure ? \"wss\" : \"ws\";\n let port = \"\";\n // avoid port if default for schema\n if (this.opts.port &&\n ((\"wss\" === schema && Number(this.opts.port) !== 443) ||\n (\"ws\" === schema && Number(this.opts.port) !== 80))) {\n port = \":\" + this.opts.port;\n }\n // append timestamp to URI\n if (this.opts.timestampRequests) {\n query[this.opts.timestampParam] = yeast();\n }\n // communicate binary support capabilities\n if (!this.supportsBinary) {\n query.b64 = 1;\n }\n const encodedQuery = encode(query);\n const ipv6 = this.opts.hostname.indexOf(\":\") !== -1;\n return (schema +\n \"://\" +\n (ipv6 ? \"[\" + this.opts.hostname + \"]\" : this.opts.hostname) +\n port +\n this.opts.path +\n (encodedQuery.length ? \"?\" + encodedQuery : \"\"));\n }\n /**\n * Feature detection for WebSocket.\n *\n * @return {Boolean} whether this transport is available.\n * @private\n */\n check() {\n return !!WebSocket;\n }\n}\n","import { Polling } from \"./polling.js\";\nimport { WS } from \"./websocket.js\";\nexport const transports = {\n websocket: WS,\n polling: Polling,\n};\n","// imported from https://github.com/galkn/parseuri\n/**\n * Parses a URI\n *\n * Note: we could also have used the built-in URL object, but it isn't supported on all platforms.\n *\n * See:\n * - https://developer.mozilla.org/en-US/docs/Web/API/URL\n * - https://caniuse.com/url\n * - https://www.rfc-editor.org/rfc/rfc3986#appendix-B\n *\n * History of the parse() method:\n * - first commit: https://github.com/socketio/socket.io-client/commit/4ee1d5d94b3906a9c052b459f1a818b15f38f91c\n * - export into its own module: https://github.com/socketio/engine.io-client/commit/de2c561e4564efeb78f1bdb1ba39ef81b2822cb3\n * - reimport: https://github.com/socketio/engine.io-client/commit/df32277c3f6d622eec5ed09f493cae3f3391d242\n *\n * @author Steven Levithan (MIT license)\n * @api private\n */\nconst re = /^(?:(?![^:@\\/?#]+:[^:@\\/]*@)(http|https|ws|wss):\\/\\/)?((?:(([^:@\\/?#]*)(?::([^:@\\/?#]*))?)?@)?((?:[a-f0-9]{0,4}:){2,7}[a-f0-9]{0,4}|[^:\\/?#]*)(?::(\\d*))?)(((\\/(?:[^?#](?![^?#\\/]*\\.[^?#\\/.]+(?:[?#]|$)))*\\/?)?([^?#\\/]*))(?:\\?([^#]*))?(?:#(.*))?)/;\nconst parts = [\n 'source', 'protocol', 'authority', 'userInfo', 'user', 'password', 'host', 'port', 'relative', 'path', 'directory', 'file', 'query', 'anchor'\n];\nexport function parse(str) {\n const src = str, b = str.indexOf('['), e = str.indexOf(']');\n if (b != -1 && e != -1) {\n str = str.substring(0, b) + str.substring(b, e).replace(/:/g, ';') + str.substring(e, str.length);\n }\n let m = re.exec(str || ''), uri = {}, i = 14;\n while (i--) {\n uri[parts[i]] = m[i] || '';\n }\n if (b != -1 && e != -1) {\n uri.source = src;\n uri.host = uri.host.substring(1, uri.host.length - 1).replace(/;/g, ':');\n uri.authority = uri.authority.replace('[', '').replace(']', '').replace(/;/g, ':');\n uri.ipv6uri = true;\n }\n uri.pathNames = pathNames(uri, uri['path']);\n uri.queryKey = queryKey(uri, uri['query']);\n return uri;\n}\nfunction pathNames(obj, path) {\n const regx = /\\/{2,9}/g, names = path.replace(regx, \"/\").split(\"/\");\n if (path.slice(0, 1) == '/' || path.length === 0) {\n names.splice(0, 1);\n }\n if (path.slice(-1) == '/') {\n names.splice(names.length - 1, 1);\n }\n return names;\n}\nfunction queryKey(uri, query) {\n const data = {};\n query.replace(/(?:^|&)([^&=]*)=?([^&]*)/g, function ($0, $1, $2) {\n if ($1) {\n data[$1] = $2;\n }\n });\n return data;\n}\n","import { transports } from \"./transports/index.js\";\nimport { installTimerFunctions, byteLength } from \"./util.js\";\nimport { decode } from \"./contrib/parseqs.js\";\nimport { parse } from \"./contrib/parseuri.js\";\nimport { Emitter } from \"@socket.io/component-emitter\";\nimport { protocol } from \"engine.io-parser\";\nexport class Socket extends Emitter {\n /**\n * Socket constructor.\n *\n * @param {String|Object} uri - uri or options\n * @param {Object} opts - options\n */\n constructor(uri, opts = {}) {\n super();\n this.writeBuffer = [];\n if (uri && \"object\" === typeof uri) {\n opts = uri;\n uri = null;\n }\n if (uri) {\n uri = parse(uri);\n opts.hostname = uri.host;\n opts.secure = uri.protocol === \"https\" || uri.protocol === \"wss\";\n opts.port = uri.port;\n if (uri.query)\n opts.query = uri.query;\n }\n else if (opts.host) {\n opts.hostname = parse(opts.host).host;\n }\n installTimerFunctions(this, opts);\n this.secure =\n null != opts.secure\n ? opts.secure\n : typeof location !== \"undefined\" && \"https:\" === location.protocol;\n if (opts.hostname && !opts.port) {\n // if no port is specified manually, use the protocol default\n opts.port = this.secure ? \"443\" : \"80\";\n }\n this.hostname =\n opts.hostname ||\n (typeof location !== \"undefined\" ? location.hostname : \"localhost\");\n this.port =\n opts.port ||\n (typeof location !== \"undefined\" && location.port\n ? location.port\n : this.secure\n ? \"443\"\n : \"80\");\n this.transports = opts.transports || [\"polling\", \"websocket\"];\n this.writeBuffer = [];\n this.prevBufferLen = 0;\n this.opts = Object.assign({\n path: \"/engine.io\",\n agent: false,\n withCredentials: false,\n upgrade: true,\n timestampParam: \"t\",\n rememberUpgrade: false,\n addTrailingSlash: true,\n rejectUnauthorized: true,\n perMessageDeflate: {\n threshold: 1024,\n },\n transportOptions: {},\n closeOnBeforeunload: true,\n }, opts);\n this.opts.path =\n this.opts.path.replace(/\\/$/, \"\") +\n (this.opts.addTrailingSlash ? \"/\" : \"\");\n if (typeof this.opts.query === \"string\") {\n this.opts.query = decode(this.opts.query);\n }\n // set on handshake\n this.id = null;\n this.upgrades = null;\n this.pingInterval = null;\n this.pingTimeout = null;\n // set on heartbeat\n this.pingTimeoutTimer = null;\n if (typeof addEventListener === \"function\") {\n if (this.opts.closeOnBeforeunload) {\n // Firefox closes the connection when the \"beforeunload\" event is emitted but not Chrome. This event listener\n // ensures every browser behaves the same (no \"disconnect\" event at the Socket.IO level when the page is\n // closed/reloaded)\n this.beforeunloadEventListener = () => {\n if (this.transport) {\n // silently close the transport\n this.transport.removeAllListeners();\n this.transport.close();\n }\n };\n addEventListener(\"beforeunload\", this.beforeunloadEventListener, false);\n }\n if (this.hostname !== \"localhost\") {\n this.offlineEventListener = () => {\n this.onClose(\"transport close\", {\n description: \"network connection lost\",\n });\n };\n addEventListener(\"offline\", this.offlineEventListener, false);\n }\n }\n this.open();\n }\n /**\n * Creates transport of the given type.\n *\n * @param {String} name - transport name\n * @return {Transport}\n * @private\n */\n createTransport(name) {\n const query = Object.assign({}, this.opts.query);\n // append engine.io protocol identifier\n query.EIO = protocol;\n // transport name\n query.transport = name;\n // session id if we already have one\n if (this.id)\n query.sid = this.id;\n const opts = Object.assign({}, this.opts.transportOptions[name], this.opts, {\n query,\n socket: this,\n hostname: this.hostname,\n secure: this.secure,\n port: this.port,\n });\n return new transports[name](opts);\n }\n /**\n * Initializes transport to use and starts probe.\n *\n * @private\n */\n open() {\n let transport;\n if (this.opts.rememberUpgrade &&\n Socket.priorWebsocketSuccess &&\n this.transports.indexOf(\"websocket\") !== -1) {\n transport = \"websocket\";\n }\n else if (0 === this.transports.length) {\n // Emit error on next tick so it can be listened to\n this.setTimeoutFn(() => {\n this.emitReserved(\"error\", \"No transports available\");\n }, 0);\n return;\n }\n else {\n transport = this.transports[0];\n }\n this.readyState = \"opening\";\n // Retry with the next transport if the transport is disabled (jsonp: false)\n try {\n transport = this.createTransport(transport);\n }\n catch (e) {\n this.transports.shift();\n this.open();\n return;\n }\n transport.open();\n this.setTransport(transport);\n }\n /**\n * Sets the current transport. Disables the existing one (if any).\n *\n * @private\n */\n setTransport(transport) {\n if (this.transport) {\n this.transport.removeAllListeners();\n }\n // set up transport\n this.transport = transport;\n // set up transport listeners\n transport\n .on(\"drain\", this.onDrain.bind(this))\n .on(\"packet\", this.onPacket.bind(this))\n .on(\"error\", this.onError.bind(this))\n .on(\"close\", (reason) => this.onClose(\"transport close\", reason));\n }\n /**\n * Probes a transport.\n *\n * @param {String} name - transport name\n * @private\n */\n probe(name) {\n let transport = this.createTransport(name);\n let failed = false;\n Socket.priorWebsocketSuccess = false;\n const onTransportOpen = () => {\n if (failed)\n return;\n transport.send([{ type: \"ping\", data: \"probe\" }]);\n transport.once(\"packet\", (msg) => {\n if (failed)\n return;\n if (\"pong\" === msg.type && \"probe\" === msg.data) {\n this.upgrading = true;\n this.emitReserved(\"upgrading\", transport);\n if (!transport)\n return;\n Socket.priorWebsocketSuccess = \"websocket\" === transport.name;\n this.transport.pause(() => {\n if (failed)\n return;\n if (\"closed\" === this.readyState)\n return;\n cleanup();\n this.setTransport(transport);\n transport.send([{ type: \"upgrade\" }]);\n this.emitReserved(\"upgrade\", transport);\n transport = null;\n this.upgrading = false;\n this.flush();\n });\n }\n else {\n const err = new Error(\"probe error\");\n // @ts-ignore\n err.transport = transport.name;\n this.emitReserved(\"upgradeError\", err);\n }\n });\n };\n function freezeTransport() {\n if (failed)\n return;\n // Any callback called by transport should be ignored since now\n failed = true;\n cleanup();\n transport.close();\n transport = null;\n }\n // Handle any error that happens while probing\n const onerror = (err) => {\n const error = new Error(\"probe error: \" + err);\n // @ts-ignore\n error.transport = transport.name;\n freezeTransport();\n this.emitReserved(\"upgradeError\", error);\n };\n function onTransportClose() {\n onerror(\"transport closed\");\n }\n // When the socket is closed while we're probing\n function onclose() {\n onerror(\"socket closed\");\n }\n // When the socket is upgraded while we're probing\n function onupgrade(to) {\n if (transport && to.name !== transport.name) {\n freezeTransport();\n }\n }\n // Remove all listeners on the transport and on self\n const cleanup = () => {\n transport.removeListener(\"open\", onTransportOpen);\n transport.removeListener(\"error\", onerror);\n transport.removeListener(\"close\", onTransportClose);\n this.off(\"close\", onclose);\n this.off(\"upgrading\", onupgrade);\n };\n transport.once(\"open\", onTransportOpen);\n transport.once(\"error\", onerror);\n transport.once(\"close\", onTransportClose);\n this.once(\"close\", onclose);\n this.once(\"upgrading\", onupgrade);\n transport.open();\n }\n /**\n * Called when connection is deemed open.\n *\n * @private\n */\n onOpen() {\n this.readyState = \"open\";\n Socket.priorWebsocketSuccess = \"websocket\" === this.transport.name;\n this.emitReserved(\"open\");\n this.flush();\n // we check for `readyState` in case an `open`\n // listener already closed the socket\n if (\"open\" === this.readyState && this.opts.upgrade) {\n let i = 0;\n const l = this.upgrades.length;\n for (; i < l; i++) {\n this.probe(this.upgrades[i]);\n }\n }\n }\n /**\n * Handles a packet.\n *\n * @private\n */\n onPacket(packet) {\n if (\"opening\" === this.readyState ||\n \"open\" === this.readyState ||\n \"closing\" === this.readyState) {\n this.emitReserved(\"packet\", packet);\n // Socket is live - any packet counts\n this.emitReserved(\"heartbeat\");\n switch (packet.type) {\n case \"open\":\n this.onHandshake(JSON.parse(packet.data));\n break;\n case \"ping\":\n this.resetPingTimeout();\n this.sendPacket(\"pong\");\n this.emitReserved(\"ping\");\n this.emitReserved(\"pong\");\n break;\n case \"error\":\n const err = new Error(\"server error\");\n // @ts-ignore\n err.code = packet.data;\n this.onError(err);\n break;\n case \"message\":\n this.emitReserved(\"data\", packet.data);\n this.emitReserved(\"message\", packet.data);\n break;\n }\n }\n else {\n }\n }\n /**\n * Called upon handshake completion.\n *\n * @param {Object} data - handshake obj\n * @private\n */\n onHandshake(data) {\n this.emitReserved(\"handshake\", data);\n this.id = data.sid;\n this.transport.query.sid = data.sid;\n this.upgrades = this.filterUpgrades(data.upgrades);\n this.pingInterval = data.pingInterval;\n this.pingTimeout = data.pingTimeout;\n this.maxPayload = data.maxPayload;\n this.onOpen();\n // In case open handler closes socket\n if (\"closed\" === this.readyState)\n return;\n this.resetPingTimeout();\n }\n /**\n * Sets and resets ping timeout timer based on server pings.\n *\n * @private\n */\n resetPingTimeout() {\n this.clearTimeoutFn(this.pingTimeoutTimer);\n this.pingTimeoutTimer = this.setTimeoutFn(() => {\n this.onClose(\"ping timeout\");\n }, this.pingInterval + this.pingTimeout);\n if (this.opts.autoUnref) {\n this.pingTimeoutTimer.unref();\n }\n }\n /**\n * Called on `drain` event\n *\n * @private\n */\n onDrain() {\n this.writeBuffer.splice(0, this.prevBufferLen);\n // setting prevBufferLen = 0 is very important\n // for example, when upgrading, upgrade packet is sent over,\n // and a nonzero prevBufferLen could cause problems on `drain`\n this.prevBufferLen = 0;\n if (0 === this.writeBuffer.length) {\n this.emitReserved(\"drain\");\n }\n else {\n this.flush();\n }\n }\n /**\n * Flush write buffers.\n *\n * @private\n */\n flush() {\n if (\"closed\" !== this.readyState &&\n this.transport.writable &&\n !this.upgrading &&\n this.writeBuffer.length) {\n const packets = this.getWritablePackets();\n this.transport.send(packets);\n // keep track of current length of writeBuffer\n // splice writeBuffer and callbackBuffer on `drain`\n this.prevBufferLen = packets.length;\n this.emitReserved(\"flush\");\n }\n }\n /**\n * Ensure the encoded size of the writeBuffer is below the maxPayload value sent by the server (only for HTTP\n * long-polling)\n *\n * @private\n */\n getWritablePackets() {\n const shouldCheckPayloadSize = this.maxPayload &&\n this.transport.name === \"polling\" &&\n this.writeBuffer.length > 1;\n if (!shouldCheckPayloadSize) {\n return this.writeBuffer;\n }\n let payloadSize = 1; // first packet type\n for (let i = 0; i < this.writeBuffer.length; i++) {\n const data = this.writeBuffer[i].data;\n if (data) {\n payloadSize += byteLength(data);\n }\n if (i > 0 && payloadSize > this.maxPayload) {\n return this.writeBuffer.slice(0, i);\n }\n payloadSize += 2; // separator + packet type\n }\n return this.writeBuffer;\n }\n /**\n * Sends a message.\n *\n * @param {String} msg - message.\n * @param {Object} options.\n * @param {Function} callback function.\n * @return {Socket} for chaining.\n */\n write(msg, options, fn) {\n this.sendPacket(\"message\", msg, options, fn);\n return this;\n }\n send(msg, options, fn) {\n this.sendPacket(\"message\", msg, options, fn);\n return this;\n }\n /**\n * Sends a packet.\n *\n * @param {String} type: packet type.\n * @param {String} data.\n * @param {Object} options.\n * @param {Function} fn - callback function.\n * @private\n */\n sendPacket(type, data, options, fn) {\n if (\"function\" === typeof data) {\n fn = data;\n data = undefined;\n }\n if (\"function\" === typeof options) {\n fn = options;\n options = null;\n }\n if (\"closing\" === this.readyState || \"closed\" === this.readyState) {\n return;\n }\n options = options || {};\n options.compress = false !== options.compress;\n const packet = {\n type: type,\n data: data,\n options: options,\n };\n this.emitReserved(\"packetCreate\", packet);\n this.writeBuffer.push(packet);\n if (fn)\n this.once(\"flush\", fn);\n this.flush();\n }\n /**\n * Closes the connection.\n */\n close() {\n const close = () => {\n this.onClose(\"forced close\");\n this.transport.close();\n };\n const cleanupAndClose = () => {\n this.off(\"upgrade\", cleanupAndClose);\n this.off(\"upgradeError\", cleanupAndClose);\n close();\n };\n const waitForUpgrade = () => {\n // wait for upgrade to finish since we can't send packets while pausing a transport\n this.once(\"upgrade\", cleanupAndClose);\n this.once(\"upgradeError\", cleanupAndClose);\n };\n if (\"opening\" === this.readyState || \"open\" === this.readyState) {\n this.readyState = \"closing\";\n if (this.writeBuffer.length) {\n this.once(\"drain\", () => {\n if (this.upgrading) {\n waitForUpgrade();\n }\n else {\n close();\n }\n });\n }\n else if (this.upgrading) {\n waitForUpgrade();\n }\n else {\n close();\n }\n }\n return this;\n }\n /**\n * Called upon transport error\n *\n * @private\n */\n onError(err) {\n Socket.priorWebsocketSuccess = false;\n this.emitReserved(\"error\", err);\n this.onClose(\"transport error\", err);\n }\n /**\n * Called upon transport close.\n *\n * @private\n */\n onClose(reason, description) {\n if (\"opening\" === this.readyState ||\n \"open\" === this.readyState ||\n \"closing\" === this.readyState) {\n // clear timers\n this.clearTimeoutFn(this.pingTimeoutTimer);\n // stop event from firing again for transport\n this.transport.removeAllListeners(\"close\");\n // ensure transport won't stay open\n this.transport.close();\n // ignore further transport communication\n this.transport.removeAllListeners();\n if (typeof removeEventListener === \"function\") {\n removeEventListener(\"beforeunload\", this.beforeunloadEventListener, false);\n removeEventListener(\"offline\", this.offlineEventListener, false);\n }\n // set ready state\n this.readyState = \"closed\";\n // clear session id\n this.id = null;\n // emit close event\n this.emitReserved(\"close\", reason, description);\n // clean buffers after, so users can still\n // grab the buffers on `close` event\n this.writeBuffer = [];\n this.prevBufferLen = 0;\n }\n }\n /**\n * Filters upgrades, returning only those matching client transports.\n *\n * @param {Array} upgrades - server upgrades\n * @private\n */\n filterUpgrades(upgrades) {\n const filteredUpgrades = [];\n let i = 0;\n const j = upgrades.length;\n for (; i < j; i++) {\n if (~this.transports.indexOf(upgrades[i]))\n filteredUpgrades.push(upgrades[i]);\n }\n return filteredUpgrades;\n }\n}\nSocket.protocol = protocol;\n","import { Socket } from \"./socket.js\";\nexport { Socket };\nexport const protocol = Socket.protocol;\nexport { Transport } from \"./transport.js\";\nexport { transports } from \"./transports/index.js\";\nexport { installTimerFunctions } from \"./util.js\";\nexport { parse } from \"./contrib/parseuri.js\";\nexport { nextTick } from \"./transports/websocket-constructor.js\";\n"],"names":["PACKET_TYPES","Object","create","PACKET_TYPES_REVERSE","keys","forEach","key","ERROR_PACKET","type","data","withNativeBlob","Blob","prototype","toString","call","withNativeArrayBuffer","ArrayBuffer","encodePacket","supportsBinary","callback","encodeBlobAsBase64","obj","isView","buffer","fileReader","FileReader","onload","content","result","split","readAsDataURL","chars","lookup","Uint8Array","i","length","charCodeAt","decodePacket","encodedPacket","binaryType","mapBinary","charAt","decodeBase64Packet","substring","decoded","base64","encoded1","encoded2","encoded3","encoded4","bufferLength","len","p","arraybuffer","bytes","decode","SEPARATOR","String","fromCharCode","Emitter","mixin","on","addEventListener","event","fn","this","_callbacks","push","once","off","apply","arguments","removeListener","removeAllListeners","removeEventListener","cb","callbacks","splice","emit","args","Array","slice","emitReserved","listeners","hasListeners","globalThisShim","self","window","Function","pick","attr","reduce","acc","k","hasOwnProperty","NATIVE_SET_TIMEOUT","globalThis","setTimeout","NATIVE_CLEAR_TIMEOUT","clearTimeout","installTimerFunctions","opts","useNativeTimers","setTimeoutFn","bind","clearTimeoutFn","TransportError","Error","constructor","reason","description","context","super","Transport","writable","query","socket","onError","open","readyState","doOpen","close","doClose","onClose","send","packets","write","onOpen","onData","packet","onPacket","details","pause","onPause","alphabet","map","prev","seed","encode","num","encoded","Math","floor","yeast","now","Date","str","encodeURIComponent","value","XMLHttpRequest","err","hasCORS","XHR","xdomain","e","concat","join","empty","hasXHR2","responseType","Request","uri","method","async","undefined","xd","xscheme","xs","xhr","extraHeaders","setDisableHeaderCheck","setRequestHeader","withCredentials","requestTimeout","timeout","onreadystatechange","status","onLoad","document","index","requestsCount","requests","cleanup","fromError","abort","responseText","attachEvent","unloadHandler","nextTick","Promise","resolve","then","WebSocket","MozWebSocket","isReactNative","navigator","product","toLowerCase","transports","websocket","forceBase64","name","check","protocols","headers","ws","addEventListeners","onopen","autoUnref","_socket","unref","onclose","closeEvent","onmessage","ev","onerror","lastPacket","schema","secure","port","Number","timestampRequests","timestampParam","b64","encodedQuery","hostname","indexOf","path","polling","location","isSSL","protocol","poll","total","doPoll","encodedPayload","encodedPackets","decodedPacket","decodePayload","count","encodePayload","doWrite","sid","request","assign","req","xhrStatus","pollXhr","re","parts","parse","src","b","replace","m","exec","source","host","authority","ipv6uri","pathNames","regx","names","queryKey","$0","$1","$2","Socket","writeBuffer","prevBufferLen","agent","upgrade","rememberUpgrade","addTrailingSlash","rejectUnauthorized","perMessageDeflate","threshold","transportOptions","closeOnBeforeunload","qs","qry","pairs","l","pair","decodeURIComponent","id","upgrades","pingInterval","pingTimeout","pingTimeoutTimer","beforeunloadEventListener","transport","offlineEventListener","createTransport","EIO","priorWebsocketSuccess","shift","setTransport","onDrain","probe","failed","onTransportOpen","msg","upgrading","flush","freezeTransport","error","onTransportClose","onupgrade","to","onHandshake","JSON","resetPingTimeout","sendPacket","code","filterUpgrades","maxPayload","getWritablePackets","payloadSize","c","utf8Length","ceil","byteLength","size","options","compress","cleanupAndClose","waitForUpgrade","filteredUpgrades","j"],"mappings":";;;;;AAAA,MAAMA,EAAeC,OAAOC,OAAO,MACnCF,EAAmB,KAAI,IACvBA,EAAoB,MAAI,IACxBA,EAAmB,KAAI,IACvBA,EAAmB,KAAI,IACvBA,EAAsB,QAAI,IAC1BA,EAAsB,QAAI,IAC1BA,EAAmB,KAAI,IACvB,MAAMG,EAAuBF,OAAOC,OAAO,MAC3CD,OAAOG,KAAKJ,GAAcK,SAAQC,IAC9BH,EAAqBH,EAAaM,IAAQA,CAAG,IAEjD,MAAMC,EAAe,CAAEC,KAAM,QAASC,KAAM,gBCXtCC,EAAiC,mBAATC,MACT,oBAATA,MACqC,6BAAzCV,OAAOW,UAAUC,SAASC,KAAKH,MACjCI,EAA+C,mBAAhBC,YAO/BC,EAAe,EAAGT,OAAMC,QAAQS,EAAgBC,KAClD,OAAIT,GAAkBD,aAAgBE,KAC9BO,EACOC,EAASV,GAGTW,EAAmBX,EAAMU,GAG/BJ,IACJN,aAAgBO,cAfVK,EAegCZ,EAdN,mBAAvBO,YAAYM,OACpBN,YAAYM,OAAOD,GACnBA,GAAOA,EAAIE,kBAAkBP,cAa3BE,EACOC,EAASV,GAGTW,EAAmB,IAAIT,KAAK,CAACF,IAAQU,GAI7CA,EAASnB,EAAaQ,IAASC,GAAQ,KAxBnCY,KAwBuC,EAEhDD,EAAqB,CAACX,EAAMU,KAC9B,MAAMK,EAAa,IAAIC,WAKvB,OAJAD,EAAWE,OAAS,WAChB,MAAMC,EAAUH,EAAWI,OAAOC,MAAM,KAAK,GAC7CV,EAAS,IAAMQ,IAEZH,EAAWM,cAAcrB,EAAK,EC9BzC,IAHA,IAAIsB,EAAQ,mEAERC,EAA+B,oBAAfC,WAA6B,GAAK,IAAIA,WAAW,KAC5DC,EAAI,EAAGA,EAAIH,EAAMI,OAAQD,IAC9BF,EAAOD,EAAMK,WAAWF,IAAMA,ECPlC,MAAMnB,EAA+C,mBAAhBC,YAC/BqB,EAAe,CAACC,EAAeC,KACjC,GAA6B,iBAAlBD,EACP,MAAO,CACH9B,KAAM,UACNC,KAAM+B,EAAUF,EAAeC,IAGvC,MAAM/B,EAAO8B,EAAcG,OAAO,GAClC,GAAa,MAATjC,EACA,MAAO,CACHA,KAAM,UACNC,KAAMiC,EAAmBJ,EAAcK,UAAU,GAAIJ,IAI7D,OADmBpC,EAAqBK,GAIjC8B,EAAcH,OAAS,EACxB,CACE3B,KAAML,EAAqBK,GAC3BC,KAAM6B,EAAcK,UAAU,IAEhC,CACEnC,KAAML,EAAqBK,IARxBD,CASN,EAEHmC,EAAqB,CAACjC,EAAM8B,KAC9B,GAAIxB,EAAuB,CACvB,MAAM6B,EDLD,SAAUC,GACnB,IAA8DX,EAAUY,EAAUC,EAAUC,EAAUC,EAAlGC,EAA+B,IAAhBL,EAAOV,OAAegB,EAAMN,EAAOV,OAAWiB,EAAI,EACnC,MAA9BP,EAAOA,EAAOV,OAAS,KACvBe,IACkC,MAA9BL,EAAOA,EAAOV,OAAS,IACvBe,KAGR,IAAIG,EAAc,IAAIrC,YAAYkC,GAAeI,EAAQ,IAAIrB,WAAWoB,GACxE,IAAKnB,EAAI,EAAGA,EAAIiB,EAAKjB,GAAK,EACtBY,EAAWd,EAAOa,EAAOT,WAAWF,IACpCa,EAAWf,EAAOa,EAAOT,WAAWF,EAAI,IACxCc,EAAWhB,EAAOa,EAAOT,WAAWF,EAAI,IACxCe,EAAWjB,EAAOa,EAAOT,WAAWF,EAAI,IACxCoB,EAAMF,KAAQN,GAAY,EAAMC,GAAY,EAC5CO,EAAMF,MAAoB,GAAXL,IAAkB,EAAMC,GAAY,EACnDM,EAAMF,MAAoB,EAAXJ,IAAiB,EAAiB,GAAXC,EAE1C,OAAOI,CACX,CCdwBE,CAAO9C,GACvB,OAAO+B,EAAUI,EAASL,GAG1B,MAAO,CAAEM,QAAQ,EAAMpC,SAGzB+B,EAAY,CAAC/B,EAAM8B,IAEZ,SADDA,GAEO9B,aAAgBO,YAAc,IAAIL,KAAK,CAACF,IAGxCA,EC3Cb+C,EAAYC,OAAOC,aAAa,ICI/B,SAASC,EAAQtC,GACtB,GAAIA,EAAK,OAWX,SAAeA,GACb,IAAK,IAAIf,KAAOqD,EAAQ/C,UACtBS,EAAIf,GAAOqD,EAAQ/C,UAAUN,GAE/B,OAAOe,CACT,CAhBkBuC,CAAMvC,EACxB,CA0BAsC,EAAQ/C,UAAUiD,GAClBF,EAAQ/C,UAAUkD,iBAAmB,SAASC,EAAOC,GAInD,OAHAC,KAAKC,WAAaD,KAAKC,YAAc,IACpCD,KAAKC,WAAW,IAAMH,GAASE,KAAKC,WAAW,IAAMH,IAAU,IAC7DI,KAAKH,GACDC,IACT,EAYAN,EAAQ/C,UAAUwD,KAAO,SAASL,EAAOC,GACvC,SAASH,IACPI,KAAKI,IAAIN,EAAOF,GAChBG,EAAGM,MAAML,KAAMM,WAKjB,OAFAV,EAAGG,GAAKA,EACRC,KAAKJ,GAAGE,EAAOF,GACRI,IACT,EAYAN,EAAQ/C,UAAUyD,IAClBV,EAAQ/C,UAAU4D,eAClBb,EAAQ/C,UAAU6D,mBAClBd,EAAQ/C,UAAU8D,oBAAsB,SAASX,EAAOC,GAItD,GAHAC,KAAKC,WAAaD,KAAKC,YAAc,GAGjC,GAAKK,UAAUpC,OAEjB,OADA8B,KAAKC,WAAa,GACXD,KAIT,IAUIU,EAVAC,EAAYX,KAAKC,WAAW,IAAMH,GACtC,IAAKa,EAAW,OAAOX,KAGvB,GAAI,GAAKM,UAAUpC,OAEjB,cADO8B,KAAKC,WAAW,IAAMH,GACtBE,KAKT,IAAK,IAAI/B,EAAI,EAAGA,EAAI0C,EAAUzC,OAAQD,IAEpC,IADAyC,EAAKC,EAAU1C,MACJ8B,GAAMW,EAAGX,KAAOA,EAAI,CAC7BY,EAAUC,OAAO3C,EAAG,GACpB,MAUJ,OAJyB,IAArB0C,EAAUzC,eACL8B,KAAKC,WAAW,IAAMH,GAGxBE,IACT,EAUAN,EAAQ/C,UAAUkE,KAAO,SAASf,GAChCE,KAAKC,WAAaD,KAAKC,YAAc,GAKrC,IAHA,IAAIa,EAAO,IAAIC,MAAMT,UAAUpC,OAAS,GACpCyC,EAAYX,KAAKC,WAAW,IAAMH,GAE7B7B,EAAI,EAAGA,EAAIqC,UAAUpC,OAAQD,IACpC6C,EAAK7C,EAAI,GAAKqC,UAAUrC,GAG1B,GAAI0C,EAEG,CAAI1C,EAAI,EAAb,IAAK,IAAWiB,GADhByB,EAAYA,EAAUK,MAAM,IACI9C,OAAQD,EAAIiB,IAAOjB,EACjD0C,EAAU1C,GAAGoC,MAAML,KAAMc,EADK5C,CAKlC,OAAO8B,IACT,EAGAN,EAAQ/C,UAAUsE,aAAevB,EAAQ/C,UAAUkE,KAUnDnB,EAAQ/C,UAAUuE,UAAY,SAASpB,GAErC,OADAE,KAAKC,WAAaD,KAAKC,YAAc,GAC9BD,KAAKC,WAAW,IAAMH,IAAU,EACzC,EAUAJ,EAAQ/C,UAAUwE,aAAe,SAASrB,GACxC,QAAUE,KAAKkB,UAAUpB,GAAO5B,MAClC,ECxKO,MAAMkD,EACW,oBAATC,KACAA,KAEgB,oBAAXC,OACLA,OAGAC,SAAS,cAATA,GCPR,SAASC,EAAKpE,KAAQqE,GACzB,OAAOA,EAAKC,QAAO,CAACC,EAAKC,KACjBxE,EAAIyE,eAAeD,KACnBD,EAAIC,GAAKxE,EAAIwE,IAEVD,IACR,GACP,CAEA,MAAMG,EAAqBC,EAAWC,WAChCC,EAAuBF,EAAWG,aACjC,SAASC,EAAsB/E,EAAKgF,GACnCA,EAAKC,iBACLjF,EAAIkF,aAAeR,EAAmBS,KAAKR,GAC3C3E,EAAIoF,eAAiBP,EAAqBM,KAAKR,KAG/C3E,EAAIkF,aAAeP,EAAWC,WAAWO,KAAKR,GAC9C3E,EAAIoF,eAAiBT,EAAWG,aAAaK,KAAKR,GAE1D,CClBA,MAAMU,UAAuBC,MACzBC,YAAYC,EAAQC,EAAaC,GAC7BC,MAAMH,GACN5C,KAAK6C,YAAcA,EACnB7C,KAAK8C,QAAUA,EACf9C,KAAKzD,KAAO,kBAGb,MAAMyG,UAAkBtD,EAO3BiD,YAAYP,GACRW,QACA/C,KAAKiD,UAAW,EAChBd,EAAsBnC,KAAMoC,GAC5BpC,KAAKoC,KAAOA,EACZpC,KAAKkD,MAAQd,EAAKc,MAClBlD,KAAKmD,OAASf,EAAKe,OAWvBC,QAAQR,EAAQC,EAAaC,GAEzB,OADAC,MAAM9B,aAAa,QAAS,IAAIwB,EAAeG,EAAQC,EAAaC,IAC7D9C,KAKXqD,OAGI,OAFArD,KAAKsD,WAAa,UAClBtD,KAAKuD,SACEvD,KAKXwD,QAKI,MAJwB,YAApBxD,KAAKsD,YAAgD,SAApBtD,KAAKsD,aACtCtD,KAAKyD,UACLzD,KAAK0D,WAEF1D,KAOX2D,KAAKC,GACuB,SAApB5D,KAAKsD,YACLtD,KAAK6D,MAAMD,GAWnBE,SACI9D,KAAKsD,WAAa,OAClBtD,KAAKiD,UAAW,EAChBF,MAAM9B,aAAa,QAQvB8C,OAAOvH,GACH,MAAMwH,EAAS5F,EAAa5B,EAAMwD,KAAKmD,OAAO7E,YAC9C0B,KAAKiE,SAASD,GAOlBC,SAASD,GACLjB,MAAM9B,aAAa,SAAU+C,GAOjCN,QAAQQ,GACJlE,KAAKsD,WAAa,SAClBP,MAAM9B,aAAa,QAASiD,GAOhCC,MAAMC,KC9GV,MAAMC,EAAW,mEAAmEzG,MAAM,IAAkB0G,EAAM,GAClH,IAAqBC,EAAjBC,EAAO,EAAGvG,EAAI,EAQX,SAASwG,EAAOC,GACnB,IAAIC,EAAU,GACd,GACIA,EAAUN,EAASK,EAZ6E,IAY7DC,EACnCD,EAAME,KAAKC,MAAMH,EAb+E,UAc3FA,EAAM,GACf,OAAOC,CACX,CAqBO,SAASG,IACZ,MAAMC,EAAMN,GAAQ,IAAIO,MACxB,OAAID,IAAQR,GACDC,EAAO,EAAGD,EAAOQ,GACrBA,EAAM,IAAMN,EAAOD,IAC9B,CAIA,KAAOvG,EA9CiG,GA8CrFA,IACfqG,EAAID,EAASpG,IAAMA,ECzChB,SAASwG,EAAOrH,GACnB,IAAI6H,EAAM,GACV,IAAK,IAAIhH,KAAKb,EACNA,EAAIyE,eAAe5D,KACfgH,EAAI/G,SACJ+G,GAAO,KACXA,GAAOC,mBAAmBjH,GAAK,IAAMiH,mBAAmB9H,EAAIa,KAGpE,OAAOgH,CACX,CCjBA,IAAIE,GAAQ,EACZ,IACIA,EAAkC,oBAAnBC,gBACX,oBAAqB,IAAIA,cAKjC,CAHA,MAAOC,GAGP,CACO,MAAMC,EAAUH,ECPhB,SAASI,EAAInD,GAChB,MAAMoD,EAAUpD,EAAKoD,QAErB,IACI,GAAI,oBAAuBJ,kBAAoBI,GAAWF,GACtD,OAAO,IAAIF,eAGnB,MAAOK,IACP,IAAKD,EACD,IACI,OAAO,IAAIzD,EAAW,CAAC,UAAU2D,OAAO,UAAUC,KAAK,OAAM,qBAEjE,MAAOF,IAEf,CCVA,SAASG,KACT,MAAMC,EAIK,MAHK,IAAIT,EAAe,CAC3BI,SAAS,IAEMM,aA8NhB,MAAMC,UAAgBrG,EAOzBiD,YAAYqD,EAAK5D,GACbW,QACAZ,EAAsBnC,KAAMoC,GAC5BpC,KAAKoC,KAAOA,EACZpC,KAAKiG,OAAS7D,EAAK6D,QAAU,MAC7BjG,KAAKgG,IAAMA,EACXhG,KAAKkG,OAAQ,IAAU9D,EAAK8D,MAC5BlG,KAAKxD,UAAO2J,IAAc/D,EAAK5F,KAAO4F,EAAK5F,KAAO,KAClDwD,KAAK/D,SAOTA,SACI,MAAMmG,EAAOZ,EAAKxB,KAAKoC,KAAM,QAAS,MAAO,MAAO,aAAc,OAAQ,KAAM,UAAW,qBAAsB,aACjHA,EAAKoD,UAAYxF,KAAKoC,KAAKgE,GAC3BhE,EAAKiE,UAAYrG,KAAKoC,KAAKkE,GAC3B,MAAMC,EAAOvG,KAAKuG,IAAM,IAAInB,EAAehD,GAC3C,IACImE,EAAIlD,KAAKrD,KAAKiG,OAAQjG,KAAKgG,IAAKhG,KAAKkG,OACrC,IACI,GAAIlG,KAAKoC,KAAKoE,aAAc,CACxBD,EAAIE,uBAAyBF,EAAIE,uBAAsB,GACvD,IAAK,IAAIxI,KAAK+B,KAAKoC,KAAKoE,aAChBxG,KAAKoC,KAAKoE,aAAa3E,eAAe5D,IACtCsI,EAAIG,iBAAiBzI,EAAG+B,KAAKoC,KAAKoE,aAAavI,KAK/D,MAAOwH,IACP,GAAI,SAAWzF,KAAKiG,OAChB,IACIM,EAAIG,iBAAiB,eAAgB,4BAEzC,MAAOjB,IAEX,IACIc,EAAIG,iBAAiB,SAAU,OAEnC,MAAOjB,IAEH,oBAAqBc,IACrBA,EAAII,gBAAkB3G,KAAKoC,KAAKuE,iBAEhC3G,KAAKoC,KAAKwE,iBACVL,EAAIM,QAAU7G,KAAKoC,KAAKwE,gBAE5BL,EAAIO,mBAAqB,KACjB,IAAMP,EAAIjD,aAEV,MAAQiD,EAAIQ,QAAU,OAASR,EAAIQ,OACnC/G,KAAKgH,SAKLhH,KAAKsC,cAAa,KACdtC,KAAKoD,QAA8B,iBAAfmD,EAAIQ,OAAsBR,EAAIQ,OAAS,EAAE,GAC9D,KAGXR,EAAI5C,KAAK3D,KAAKxD,MAElB,MAAOiJ,GAOH,YAHAzF,KAAKsC,cAAa,KACdtC,KAAKoD,QAAQqC,EAAE,GAChB,GAGiB,oBAAbwB,WACPjH,KAAKkH,MAAQnB,EAAQoB,gBACrBpB,EAAQqB,SAASpH,KAAKkH,OAASlH,MAQvCoD,QAAQiC,GACJrF,KAAKiB,aAAa,QAASoE,EAAKrF,KAAKuG,KACrCvG,KAAKqH,SAAQ,GAOjBA,QAAQC,GACJ,QAAI,IAAuBtH,KAAKuG,KAAO,OAASvG,KAAKuG,IAArD,CAIA,GADAvG,KAAKuG,IAAIO,mBAAqBlB,EAC1B0B,EACA,IACItH,KAAKuG,IAAIgB,QAEb,MAAO9B,IAEa,oBAAbwB,iBACAlB,EAAQqB,SAASpH,KAAKkH,OAEjClH,KAAKuG,IAAM,MAOfS,SACI,MAAMxK,EAAOwD,KAAKuG,IAAIiB,aACT,OAAThL,IACAwD,KAAKiB,aAAa,OAAQzE,GAC1BwD,KAAKiB,aAAa,WAClBjB,KAAKqH,WAQbE,QACIvH,KAAKqH,WAUb,GAPAtB,EAAQoB,cAAgB,EACxBpB,EAAQqB,SAAW,GAMK,oBAAbH,SAEP,GAA2B,mBAAhBQ,YAEPA,YAAY,WAAYC,QAEvB,GAAgC,mBAArB7H,iBAAiC,CAE7CA,iBADyB,eAAgBkC,EAAa,WAAa,SAChC2F,GAAe,GAG1D,SAASA,IACL,IAAK,IAAIzJ,KAAK8H,EAAQqB,SACdrB,EAAQqB,SAASvF,eAAe5D,IAChC8H,EAAQqB,SAASnJ,GAAGsJ,OAGhC,CC7YY,MAACI,EACqC,mBAAZC,SAAqD,mBAApBA,QAAQC,QAE/DnH,GAAOkH,QAAQC,UAAUC,KAAKpH,GAG/B,CAACA,EAAI4B,IAAiBA,EAAa5B,EAAI,GAGzCqH,EAAYhG,EAAWgG,WAAahG,EAAWiG,aCHtDC,EAAqC,oBAAdC,WACI,iBAAtBA,UAAUC,SACmB,gBAApCD,UAAUC,QAAQC,cCPV,MAACC,EAAa,CACtBC,UDOG,cAAiBtF,EAOpBL,YAAYP,GACRW,MAAMX,GACNpC,KAAK/C,gBAAkBmF,EAAKmG,YAE5BC,WACA,MAAO,YAEXjF,SACI,IAAKvD,KAAKyI,QAEN,OAEJ,MAAMzC,EAAMhG,KAAKgG,MACX0C,EAAY1I,KAAKoC,KAAKsG,UAEtBtG,EAAO6F,EACP,GACAzG,EAAKxB,KAAKoC,KAAM,QAAS,oBAAqB,MAAO,MAAO,aAAc,OAAQ,KAAM,UAAW,qBAAsB,eAAgB,kBAAmB,SAAU,aAAc,SAAU,uBAChMpC,KAAKoC,KAAKoE,eACVpE,EAAKuG,QAAU3I,KAAKoC,KAAKoE,cAE7B,IACIxG,KAAK4I,GACyBX,EAIpB,IAAIF,EAAU/B,EAAK0C,EAAWtG,GAH9BsG,EACI,IAAIX,EAAU/B,EAAK0C,GACnB,IAAIX,EAAU/B,GAGhC,MAAOX,GACH,OAAOrF,KAAKiB,aAAa,QAASoE,GAEtCrF,KAAK4I,GAAGtK,WAAa0B,KAAKmD,OAAO7E,YDrCR,cCsCzB0B,KAAK6I,oBAOTA,oBACI7I,KAAK4I,GAAGE,OAAS,KACT9I,KAAKoC,KAAK2G,WACV/I,KAAK4I,GAAGI,QAAQC,QAEpBjJ,KAAK8D,QAAQ,EAEjB9D,KAAK4I,GAAGM,QAAWC,GAAenJ,KAAK0D,QAAQ,CAC3Cb,YAAa,8BACbC,QAASqG,IAEbnJ,KAAK4I,GAAGQ,UAAaC,GAAOrJ,KAAK+D,OAAOsF,EAAG7M,MAC3CwD,KAAK4I,GAAGU,QAAW7D,GAAMzF,KAAKoD,QAAQ,kBAAmBqC,GAE7D5B,MAAMD,GACF5D,KAAKiD,UAAW,EAGhB,IAAK,IAAIhF,EAAI,EAAGA,EAAI2F,EAAQ1F,OAAQD,IAAK,CACrC,MAAM+F,EAASJ,EAAQ3F,GACjBsL,EAAatL,IAAM2F,EAAQ1F,OAAS,EAC1ClB,EAAagH,EAAQhE,KAAK/C,gBAAiBT,IAmBvC,IAGQwD,KAAK4I,GAAGjF,KAAKnH,GAMrB,MAAOiJ,IAEH8D,GAGA5B,GAAS,KACL3H,KAAKiD,UAAW,EAChBjD,KAAKiB,aAAa,QAAQ,GAC3BjB,KAAKsC,kBAKxBmB,eAC2B,IAAZzD,KAAK4I,KACZ5I,KAAK4I,GAAGpF,QACRxD,KAAK4I,GAAK,MAQlB5C,MACI,IAAI9C,EAAQlD,KAAKkD,OAAS,GAC1B,MAAMsG,EAASxJ,KAAKoC,KAAKqH,OAAS,MAAQ,KAC1C,IAAIC,EAAO,GAEP1J,KAAKoC,KAAKsH,OACR,QAAUF,GAAqC,MAA3BG,OAAO3J,KAAKoC,KAAKsH,OAClC,OAASF,GAAqC,KAA3BG,OAAO3J,KAAKoC,KAAKsH,SACzCA,EAAO,IAAM1J,KAAKoC,KAAKsH,MAGvB1J,KAAKoC,KAAKwH,oBACV1G,EAAMlD,KAAKoC,KAAKyH,gBAAkB/E,KAGjC9E,KAAK/C,iBACNiG,EAAM4G,IAAM,GAEhB,MAAMC,EAAetF,EAAOvB,GAE5B,OAAQsG,EACJ,QAF8C,IAArCxJ,KAAKoC,KAAK4H,SAASC,QAAQ,KAG5B,IAAMjK,KAAKoC,KAAK4H,SAAW,IAAMhK,KAAKoC,KAAK4H,UACnDN,EACA1J,KAAKoC,KAAK8H,MACTH,EAAa7L,OAAS,IAAM6L,EAAe,IAQpDtB,QACI,QAASV,IChKboC,QHWG,cAAsBnH,EAOzBL,YAAYP,GAGR,GAFAW,MAAMX,GACNpC,KAAKmK,SAAU,EACS,oBAAbC,SAA0B,CACjC,MAAMC,EAAQ,WAAaD,SAASE,SACpC,IAAIZ,EAAOU,SAASV,KAEfA,IACDA,EAAOW,EAAQ,MAAQ,MAE3BrK,KAAKoG,GACoB,oBAAbgE,UACJhI,EAAK4H,WAAaI,SAASJ,UAC3BN,IAAStH,EAAKsH,KACtB1J,KAAKsG,GAAKlE,EAAKqH,SAAWY,EAK9B,MAAM9B,EAAcnG,GAAQA,EAAKmG,YACjCvI,KAAK/C,eAAiB4I,IAAY0C,EAElCC,WACA,MAAO,UAQXjF,SACIvD,KAAKuK,OAQTpG,MAAMC,GACFpE,KAAKsD,WAAa,UAClB,MAAMa,EAAQ,KACVnE,KAAKsD,WAAa,SAClBc,GAAS,EAEb,GAAIpE,KAAKmK,UAAYnK,KAAKiD,SAAU,CAChC,IAAIuH,EAAQ,EACRxK,KAAKmK,UACLK,IACAxK,KAAKG,KAAK,gBAAgB,aACpBqK,GAASrG,QAGdnE,KAAKiD,WACNuH,IACAxK,KAAKG,KAAK,SAAS,aACbqK,GAASrG,aAKnBA,IAQRoG,OACIvK,KAAKmK,SAAU,EACfnK,KAAKyK,SACLzK,KAAKiB,aAAa,QAOtB8C,OAAOvH,GTpFW,EAACkO,EAAgBpM,KACnC,MAAMqM,EAAiBD,EAAe9M,MAAM2B,GACtCqE,EAAU,GAChB,IAAK,IAAI3F,EAAI,EAAGA,EAAI0M,EAAezM,OAAQD,IAAK,CAC5C,MAAM2M,EAAgBxM,EAAauM,EAAe1M,GAAIK,GAEtD,GADAsF,EAAQ1D,KAAK0K,GACc,UAAvBA,EAAcrO,KACd,MAGR,OAAOqH,CAAO,ESyFViH,CAAcrO,EAAMwD,KAAKmD,OAAO7E,YAAYlC,SAd1B4H,IAMd,GAJI,YAAchE,KAAKsD,YAA8B,SAAhBU,EAAOzH,MACxCyD,KAAK8D,SAGL,UAAYE,EAAOzH,KAEnB,OADAyD,KAAK0D,QAAQ,CAAEb,YAAa,oCACrB,EAGX7C,KAAKiE,SAASD,EAAO,IAKrB,WAAahE,KAAKsD,aAElBtD,KAAKmK,SAAU,EACfnK,KAAKiB,aAAa,gBACd,SAAWjB,KAAKsD,YAChBtD,KAAKuK,QAWjB9G,UACI,MAAMD,EAAQ,KACVxD,KAAK6D,MAAM,CAAC,CAAEtH,KAAM,UAAW,EAE/B,SAAWyD,KAAKsD,WAChBE,IAKAxD,KAAKG,KAAK,OAAQqD,GAS1BK,MAAMD,GACF5D,KAAKiD,UAAW,ETxJF,EAACW,EAAS1G,KAE5B,MAAMgB,EAAS0F,EAAQ1F,OACjByM,EAAiB,IAAI5J,MAAM7C,GACjC,IAAI4M,EAAQ,EACZlH,EAAQxH,SAAQ,CAAC4H,EAAQ/F,KAErBjB,EAAagH,GAAQ,GAAO3F,IACxBsM,EAAe1M,GAAKI,IACdyM,IAAU5M,GACZhB,EAASyN,EAAehF,KAAKpG,MAEnC,GACJ,ES4IEwL,CAAcnH,GAAUpH,IACpBwD,KAAKgL,QAAQxO,GAAM,KACfwD,KAAKiD,UAAW,EAChBjD,KAAKiB,aAAa,QAAQ,GAC5B,IAQV+E,MACI,IAAI9C,EAAQlD,KAAKkD,OAAS,GAC1B,MAAMsG,EAASxJ,KAAKoC,KAAKqH,OAAS,QAAU,OAC5C,IAAIC,EAAO,IAEP,IAAU1J,KAAKoC,KAAKwH,oBACpB1G,EAAMlD,KAAKoC,KAAKyH,gBAAkB/E,KAEjC9E,KAAK/C,gBAAmBiG,EAAM+H,MAC/B/H,EAAM4G,IAAM,GAGZ9J,KAAKoC,KAAKsH,OACR,UAAYF,GAAqC,MAA3BG,OAAO3J,KAAKoC,KAAKsH,OACpC,SAAWF,GAAqC,KAA3BG,OAAO3J,KAAKoC,KAAKsH,SAC3CA,EAAO,IAAM1J,KAAKoC,KAAKsH,MAE3B,MAAMK,EAAetF,EAAOvB,GAE5B,OAAQsG,EACJ,QAF8C,IAArCxJ,KAAKoC,KAAK4H,SAASC,QAAQ,KAG5B,IAAMjK,KAAKoC,KAAK4H,SAAW,IAAMhK,KAAKoC,KAAK4H,UACnDN,EACA1J,KAAKoC,KAAK8H,MACTH,EAAa7L,OAAS,IAAM6L,EAAe,IAQpDmB,QAAQ9I,EAAO,IAEX,OADApG,OAAOmP,OAAO/I,EAAM,CAAEgE,GAAIpG,KAAKoG,GAAIE,GAAItG,KAAKsG,IAAMtG,KAAKoC,MAChD,IAAI2D,EAAQ/F,KAAKgG,MAAO5D,GASnC4I,QAAQxO,EAAMuD,GACV,MAAMqL,EAAMpL,KAAKkL,QAAQ,CACrBjF,OAAQ,OACRzJ,KAAMA,IAEV4O,EAAIxL,GAAG,UAAWG,GAClBqL,EAAIxL,GAAG,SAAS,CAACyL,EAAWvI,KACxB9C,KAAKoD,QAAQ,iBAAkBiI,EAAWvI,EAAQ,IAQ1D2H,SACI,MAAMW,EAAMpL,KAAKkL,UACjBE,EAAIxL,GAAG,OAAQI,KAAK+D,OAAOxB,KAAKvC,OAChCoL,EAAIxL,GAAG,SAAS,CAACyL,EAAWvI,KACxB9C,KAAKoD,QAAQ,iBAAkBiI,EAAWvI,EAAQ,IAEtD9C,KAAKsL,QAAUF,KIrNjBG,EAAK,sPACLC,EAAQ,CACV,SAAU,WAAY,YAAa,WAAY,OAAQ,WAAY,OAAQ,OAAQ,WAAY,OAAQ,YAAa,OAAQ,QAAS,UAElI,SAASC,EAAMxG,GAClB,MAAMyG,EAAMzG,EAAK0G,EAAI1G,EAAIgF,QAAQ,KAAMxE,EAAIR,EAAIgF,QAAQ,MAC7C,GAAN0B,IAAiB,GAANlG,IACXR,EAAMA,EAAIvG,UAAU,EAAGiN,GAAK1G,EAAIvG,UAAUiN,EAAGlG,GAAGmG,QAAQ,KAAM,KAAO3G,EAAIvG,UAAU+G,EAAGR,EAAI/G,SAE9F,IAAI2N,EAAIN,EAAGO,KAAK7G,GAAO,IAAKe,EAAM,GAAI/H,EAAI,GAC1C,KAAOA,KACH+H,EAAIwF,EAAMvN,IAAM4N,EAAE5N,IAAM,GAU5B,OARU,GAAN0N,IAAiB,GAANlG,IACXO,EAAI+F,OAASL,EACb1F,EAAIgG,KAAOhG,EAAIgG,KAAKtN,UAAU,EAAGsH,EAAIgG,KAAK9N,OAAS,GAAG0N,QAAQ,KAAM,KACpE5F,EAAIiG,UAAYjG,EAAIiG,UAAUL,QAAQ,IAAK,IAAIA,QAAQ,IAAK,IAAIA,QAAQ,KAAM,KAC9E5F,EAAIkG,SAAU,GAElBlG,EAAImG,UAIR,SAAmB/O,EAAK8M,GACpB,MAAMkC,EAAO,WAAYC,EAAQnC,EAAK0B,QAAQQ,EAAM,KAAKxO,MAAM,KACvC,KAApBsM,EAAKlJ,MAAM,EAAG,IAA6B,IAAhBkJ,EAAKhM,QAChCmO,EAAMzL,OAAO,EAAG,GAEE,KAAlBsJ,EAAKlJ,OAAO,IACZqL,EAAMzL,OAAOyL,EAAMnO,OAAS,EAAG,GAEnC,OAAOmO,CACX,CAboBF,CAAUnG,EAAKA,EAAU,MACzCA,EAAIsG,SAaR,SAAkBtG,EAAK9C,GACnB,MAAM1G,EAAO,GAMb,OALA0G,EAAM0I,QAAQ,6BAA6B,SAAUW,EAAIC,EAAIC,GACrDD,IACAhQ,EAAKgQ,GAAMC,MAGZjQ,CACX,CArBmB8P,CAAStG,EAAKA,EAAW,OACjCA,CACX,CCnCO,MAAM0G,UAAehN,EAOxBiD,YAAYqD,EAAK5D,EAAO,IACpBW,QACA/C,KAAK2M,YAAc,GACf3G,GAAO,iBAAoBA,IAC3B5D,EAAO4D,EACPA,EAAM,MAENA,GACAA,EAAMyF,EAAMzF,GACZ5D,EAAK4H,SAAWhE,EAAIgG,KACpB5J,EAAKqH,OAA0B,UAAjBzD,EAAIsE,UAAyC,QAAjBtE,EAAIsE,SAC9ClI,EAAKsH,KAAO1D,EAAI0D,KACZ1D,EAAI9C,QACJd,EAAKc,MAAQ8C,EAAI9C,QAEhBd,EAAK4J,OACV5J,EAAK4H,SAAWyB,EAAMrJ,EAAK4J,MAAMA,MAErC7J,EAAsBnC,KAAMoC,GAC5BpC,KAAKyJ,OACD,MAAQrH,EAAKqH,OACPrH,EAAKqH,OACe,oBAAbW,UAA4B,WAAaA,SAASE,SAC/DlI,EAAK4H,WAAa5H,EAAKsH,OAEvBtH,EAAKsH,KAAO1J,KAAKyJ,OAAS,MAAQ,MAEtCzJ,KAAKgK,SACD5H,EAAK4H,WACoB,oBAAbI,SAA2BA,SAASJ,SAAW,aAC/DhK,KAAK0J,KACDtH,EAAKsH,OACoB,oBAAbU,UAA4BA,SAASV,KACvCU,SAASV,KACT1J,KAAKyJ,OACD,MACA,MAClBzJ,KAAKqI,WAAajG,EAAKiG,YAAc,CAAC,UAAW,aACjDrI,KAAK2M,YAAc,GACnB3M,KAAK4M,cAAgB,EACrB5M,KAAKoC,KAAOpG,OAAOmP,OAAO,CACtBjB,KAAM,aACN2C,OAAO,EACPlG,iBAAiB,EACjBmG,SAAS,EACTjD,eAAgB,IAChBkD,iBAAiB,EACjBC,kBAAkB,EAClBC,oBAAoB,EACpBC,kBAAmB,CACfC,UAAW,MAEfC,iBAAkB,GAClBC,qBAAqB,GACtBjL,GACHpC,KAAKoC,KAAK8H,KACNlK,KAAKoC,KAAK8H,KAAK0B,QAAQ,MAAO,KACzB5L,KAAKoC,KAAK4K,iBAAmB,IAAM,IACb,iBAApBhN,KAAKoC,KAAKc,QACjBlD,KAAKoC,KAAKc,MR/Cf,SAAgBoK,GACnB,IAAIC,EAAM,GACNC,EAAQF,EAAG1P,MAAM,KACrB,IAAK,IAAIK,EAAI,EAAGwP,EAAID,EAAMtP,OAAQD,EAAIwP,EAAGxP,IAAK,CAC1C,IAAIyP,EAAOF,EAAMvP,GAAGL,MAAM,KAC1B2P,EAAII,mBAAmBD,EAAK,KAAOC,mBAAmBD,EAAK,IAE/D,OAAOH,CACX,CQuC8BjO,CAAOU,KAAKoC,KAAKc,QAGvClD,KAAK4N,GAAK,KACV5N,KAAK6N,SAAW,KAChB7N,KAAK8N,aAAe,KACpB9N,KAAK+N,YAAc,KAEnB/N,KAAKgO,iBAAmB,KACQ,mBAArBnO,mBACHG,KAAKoC,KAAKiL,sBAIVrN,KAAKiO,0BAA4B,KACzBjO,KAAKkO,YAELlO,KAAKkO,UAAU1N,qBACfR,KAAKkO,UAAU1K,UAGvB3D,iBAAiB,eAAgBG,KAAKiO,2BAA2B,IAE/C,cAAlBjO,KAAKgK,WACLhK,KAAKmO,qBAAuB,KACxBnO,KAAK0D,QAAQ,kBAAmB,CAC5Bb,YAAa,2BACf,EAENhD,iBAAiB,UAAWG,KAAKmO,sBAAsB,KAG/DnO,KAAKqD,OAST+K,gBAAgB5F,GACZ,MAAMtF,EAAQlH,OAAOmP,OAAO,GAAInL,KAAKoC,KAAKc,OAE1CA,EAAMmL,IdtFU,EcwFhBnL,EAAMgL,UAAY1F,EAEdxI,KAAK4N,KACL1K,EAAM+H,IAAMjL,KAAK4N,IACrB,MAAMxL,EAAOpG,OAAOmP,OAAO,GAAInL,KAAKoC,KAAKgL,iBAAiB5E,GAAOxI,KAAKoC,KAAM,CACxEc,QACAC,OAAQnD,KACRgK,SAAUhK,KAAKgK,SACfP,OAAQzJ,KAAKyJ,OACbC,KAAM1J,KAAK0J,OAEf,OAAO,IAAIrB,EAAWG,GAAMpG,GAOhCiB,OACI,IAAI6K,EACJ,GAAIlO,KAAKoC,KAAK2K,iBACVL,EAAO4B,wBACmC,IAA1CtO,KAAKqI,WAAW4B,QAAQ,aACxBiE,EAAY,gBAEX,IAAI,IAAMlO,KAAKqI,WAAWnK,OAK3B,YAHA8B,KAAKsC,cAAa,KACdtC,KAAKiB,aAAa,QAAS,0BAA0B,GACtD,GAIHiN,EAAYlO,KAAKqI,WAAW,GAEhCrI,KAAKsD,WAAa,UAElB,IACI4K,EAAYlO,KAAKoO,gBAAgBF,GAErC,MAAOzI,GAGH,OAFAzF,KAAKqI,WAAWkG,aAChBvO,KAAKqD,OAGT6K,EAAU7K,OACVrD,KAAKwO,aAAaN,GAOtBM,aAAaN,GACLlO,KAAKkO,WACLlO,KAAKkO,UAAU1N,qBAGnBR,KAAKkO,UAAYA,EAEjBA,EACKtO,GAAG,QAASI,KAAKyO,QAAQlM,KAAKvC,OAC9BJ,GAAG,SAAUI,KAAKiE,SAAS1B,KAAKvC,OAChCJ,GAAG,QAASI,KAAKoD,QAAQb,KAAKvC,OAC9BJ,GAAG,SAAUgD,GAAW5C,KAAK0D,QAAQ,kBAAmBd,KAQjE8L,MAAMlG,GACF,IAAI0F,EAAYlO,KAAKoO,gBAAgB5F,GACjCmG,GAAS,EACbjC,EAAO4B,uBAAwB,EAC/B,MAAMM,EAAkB,KAChBD,IAEJT,EAAUvK,KAAK,CAAC,CAAEpH,KAAM,OAAQC,KAAM,WACtC0R,EAAU/N,KAAK,UAAW0O,IACtB,IAAIF,EAEJ,GAAI,SAAWE,EAAItS,MAAQ,UAAYsS,EAAIrS,KAAM,CAG7C,GAFAwD,KAAK8O,WAAY,EACjB9O,KAAKiB,aAAa,YAAaiN,IAC1BA,EACD,OACJxB,EAAO4B,sBAAwB,cAAgBJ,EAAU1F,KACzDxI,KAAKkO,UAAU/J,OAAM,KACbwK,GAEA,WAAa3O,KAAKsD,aAEtB+D,IACArH,KAAKwO,aAAaN,GAClBA,EAAUvK,KAAK,CAAC,CAAEpH,KAAM,aACxByD,KAAKiB,aAAa,UAAWiN,GAC7BA,EAAY,KACZlO,KAAK8O,WAAY,EACjB9O,KAAK+O,QAAO,QAGf,CACD,MAAM1J,EAAM,IAAI3C,MAAM,eAEtB2C,EAAI6I,UAAYA,EAAU1F,KAC1BxI,KAAKiB,aAAa,eAAgBoE,OAExC,EAEN,SAAS2J,IACDL,IAGJA,GAAS,EACTtH,IACA6G,EAAU1K,QACV0K,EAAY,MAGhB,MAAM5E,EAAWjE,IACb,MAAM4J,EAAQ,IAAIvM,MAAM,gBAAkB2C,GAE1C4J,EAAMf,UAAYA,EAAU1F,KAC5BwG,IACAhP,KAAKiB,aAAa,eAAgBgO,EAAM,EAE5C,SAASC,IACL5F,EAAQ,oBAGZ,SAASJ,IACLI,EAAQ,iBAGZ,SAAS6F,EAAUC,GACXlB,GAAakB,EAAG5G,OAAS0F,EAAU1F,MACnCwG,IAIR,MAAM3H,EAAU,KACZ6G,EAAU3N,eAAe,OAAQqO,GACjCV,EAAU3N,eAAe,QAAS+I,GAClC4E,EAAU3N,eAAe,QAAS2O,GAClClP,KAAKI,IAAI,QAAS8I,GAClBlJ,KAAKI,IAAI,YAAa+O,EAAU,EAEpCjB,EAAU/N,KAAK,OAAQyO,GACvBV,EAAU/N,KAAK,QAASmJ,GACxB4E,EAAU/N,KAAK,QAAS+O,GACxBlP,KAAKG,KAAK,QAAS+I,GACnBlJ,KAAKG,KAAK,YAAagP,GACvBjB,EAAU7K,OAOdS,SAOI,GANA9D,KAAKsD,WAAa,OAClBoJ,EAAO4B,sBAAwB,cAAgBtO,KAAKkO,UAAU1F,KAC9DxI,KAAKiB,aAAa,QAClBjB,KAAK+O,QAGD,SAAW/O,KAAKsD,YAActD,KAAKoC,KAAK0K,QAAS,CACjD,IAAI7O,EAAI,EACR,MAAMwP,EAAIzN,KAAK6N,SAAS3P,OACxB,KAAOD,EAAIwP,EAAGxP,IACV+B,KAAK0O,MAAM1O,KAAK6N,SAAS5P,KASrCgG,SAASD,GACL,GAAI,YAAchE,KAAKsD,YACnB,SAAWtD,KAAKsD,YAChB,YAActD,KAAKsD,WAInB,OAHAtD,KAAKiB,aAAa,SAAU+C,GAE5BhE,KAAKiB,aAAa,aACV+C,EAAOzH,MACX,IAAK,OACDyD,KAAKqP,YAAYC,KAAK7D,MAAMzH,EAAOxH,OACnC,MACJ,IAAK,OACDwD,KAAKuP,mBACLvP,KAAKwP,WAAW,QAChBxP,KAAKiB,aAAa,QAClBjB,KAAKiB,aAAa,QAClB,MACJ,IAAK,QACD,MAAMoE,EAAM,IAAI3C,MAAM,gBAEtB2C,EAAIoK,KAAOzL,EAAOxH,KAClBwD,KAAKoD,QAAQiC,GACb,MACJ,IAAK,UACDrF,KAAKiB,aAAa,OAAQ+C,EAAOxH,MACjCwD,KAAKiB,aAAa,UAAW+C,EAAOxH,OAapD6S,YAAY7S,GACRwD,KAAKiB,aAAa,YAAazE,GAC/BwD,KAAK4N,GAAKpR,EAAKyO,IACfjL,KAAKkO,UAAUhL,MAAM+H,IAAMzO,EAAKyO,IAChCjL,KAAK6N,SAAW7N,KAAK0P,eAAelT,EAAKqR,UACzC7N,KAAK8N,aAAetR,EAAKsR,aACzB9N,KAAK+N,YAAcvR,EAAKuR,YACxB/N,KAAK2P,WAAanT,EAAKmT,WACvB3P,KAAK8D,SAED,WAAa9D,KAAKsD,YAEtBtD,KAAKuP,mBAOTA,mBACIvP,KAAKwC,eAAexC,KAAKgO,kBACzBhO,KAAKgO,iBAAmBhO,KAAKsC,cAAa,KACtCtC,KAAK0D,QAAQ,eAAe,GAC7B1D,KAAK8N,aAAe9N,KAAK+N,aACxB/N,KAAKoC,KAAK2G,WACV/I,KAAKgO,iBAAiB/E,QAQ9BwF,UACIzO,KAAK2M,YAAY/L,OAAO,EAAGZ,KAAK4M,eAIhC5M,KAAK4M,cAAgB,EACjB,IAAM5M,KAAK2M,YAAYzO,OACvB8B,KAAKiB,aAAa,SAGlBjB,KAAK+O,QAQbA,QACI,GAAI,WAAa/O,KAAKsD,YAClBtD,KAAKkO,UAAUjL,WACdjD,KAAK8O,WACN9O,KAAK2M,YAAYzO,OAAQ,CACzB,MAAM0F,EAAU5D,KAAK4P,qBACrB5P,KAAKkO,UAAUvK,KAAKC,GAGpB5D,KAAK4M,cAAgBhJ,EAAQ1F,OAC7B8B,KAAKiB,aAAa,UAS1B2O,qBAII,KAH+B5P,KAAK2P,YACR,YAAxB3P,KAAKkO,UAAU1F,MACfxI,KAAK2M,YAAYzO,OAAS,GAE1B,OAAO8B,KAAK2M,YAEhB,IAAIkD,EAAc,EAClB,IAAK,IAAI5R,EAAI,EAAGA,EAAI+B,KAAK2M,YAAYzO,OAAQD,IAAK,CAC9C,MAAMzB,EAAOwD,KAAK2M,YAAY1O,GAAGzB,KAIjC,GAHIA,IACAqT,GXxYO,iBADIzS,EWyYeZ,GXlY1C,SAAoByI,GAChB,IAAI6K,EAAI,EAAG5R,EAAS,EACpB,IAAK,IAAID,EAAI,EAAGwP,EAAIxI,EAAI/G,OAAQD,EAAIwP,EAAGxP,IACnC6R,EAAI7K,EAAI9G,WAAWF,GACf6R,EAAI,IACJ5R,GAAU,EAEL4R,EAAI,KACT5R,GAAU,EAEL4R,EAAI,OAAUA,GAAK,MACxB5R,GAAU,GAGVD,IACAC,GAAU,GAGlB,OAAOA,CACX,CAxBe6R,CAAW3S,GAGfwH,KAAKoL,KAPQ,MAOF5S,EAAI6S,YAAc7S,EAAI8S,QWsY5BjS,EAAI,GAAK4R,EAAc7P,KAAK2P,WAC5B,OAAO3P,KAAK2M,YAAY3L,MAAM,EAAG/C,GAErC4R,GAAe,EX9YpB,IAAoBzS,EWgZnB,OAAO4C,KAAK2M,YAUhB9I,MAAMgL,EAAKsB,EAASpQ,GAEhB,OADAC,KAAKwP,WAAW,UAAWX,EAAKsB,EAASpQ,GAClCC,KAEX2D,KAAKkL,EAAKsB,EAASpQ,GAEf,OADAC,KAAKwP,WAAW,UAAWX,EAAKsB,EAASpQ,GAClCC,KAWXwP,WAAWjT,EAAMC,EAAM2T,EAASpQ,GAS5B,GARI,mBAAsBvD,IACtBuD,EAAKvD,EACLA,OAAO2J,GAEP,mBAAsBgK,IACtBpQ,EAAKoQ,EACLA,EAAU,MAEV,YAAcnQ,KAAKsD,YAAc,WAAatD,KAAKsD,WACnD,QAEJ6M,EAAUA,GAAW,IACbC,UAAW,IAAUD,EAAQC,SACrC,MAAMpM,EAAS,CACXzH,KAAMA,EACNC,KAAMA,EACN2T,QAASA,GAEbnQ,KAAKiB,aAAa,eAAgB+C,GAClChE,KAAK2M,YAAYzM,KAAK8D,GAClBjE,GACAC,KAAKG,KAAK,QAASJ,GACvBC,KAAK+O,QAKTvL,QACI,MAAMA,EAAQ,KACVxD,KAAK0D,QAAQ,gBACb1D,KAAKkO,UAAU1K,OAAO,EAEpB6M,EAAkB,KACpBrQ,KAAKI,IAAI,UAAWiQ,GACpBrQ,KAAKI,IAAI,eAAgBiQ,GACzB7M,GAAO,EAEL8M,EAAiB,KAEnBtQ,KAAKG,KAAK,UAAWkQ,GACrBrQ,KAAKG,KAAK,eAAgBkQ,EAAgB,EAqB9C,MAnBI,YAAcrQ,KAAKsD,YAAc,SAAWtD,KAAKsD,aACjDtD,KAAKsD,WAAa,UACdtD,KAAK2M,YAAYzO,OACjB8B,KAAKG,KAAK,SAAS,KACXH,KAAK8O,UACLwB,IAGA9M,OAIHxD,KAAK8O,UACVwB,IAGA9M,KAGDxD,KAOXoD,QAAQiC,GACJqH,EAAO4B,uBAAwB,EAC/BtO,KAAKiB,aAAa,QAASoE,GAC3BrF,KAAK0D,QAAQ,kBAAmB2B,GAOpC3B,QAAQd,EAAQC,GACR,YAAc7C,KAAKsD,YACnB,SAAWtD,KAAKsD,YAChB,YAActD,KAAKsD,aAEnBtD,KAAKwC,eAAexC,KAAKgO,kBAEzBhO,KAAKkO,UAAU1N,mBAAmB,SAElCR,KAAKkO,UAAU1K,QAEfxD,KAAKkO,UAAU1N,qBACoB,mBAAxBC,sBACPA,oBAAoB,eAAgBT,KAAKiO,2BAA2B,GACpExN,oBAAoB,UAAWT,KAAKmO,sBAAsB,IAG9DnO,KAAKsD,WAAa,SAElBtD,KAAK4N,GAAK,KAEV5N,KAAKiB,aAAa,QAAS2B,EAAQC,GAGnC7C,KAAK2M,YAAc,GACnB3M,KAAK4M,cAAgB,GAS7B8C,eAAe7B,GACX,MAAM0C,EAAmB,GACzB,IAAItS,EAAI,EACR,MAAMuS,EAAI3C,EAAS3P,OACnB,KAAOD,EAAIuS,EAAGvS,KACL+B,KAAKqI,WAAW4B,QAAQ4D,EAAS5P,KAClCsS,EAAiBrQ,KAAK2N,EAAS5P,IAEvC,OAAOsS,GAGf7D,EAAOpC,SdliBiB,Ee5BZ,MAACA,EAAWoC,EAAOpC"} \ No newline at end of file diff --git a/dist/engine.io.js b/dist/engine.io.js index 2a88cb832..b46878191 100644 --- a/dist/engine.io.js +++ b/dist/engine.io.js @@ -1,5 +1,5 @@ /*! - * Engine.IO v6.3.0 + * Engine.IO v6.3.1 * (c) 2014-2023 Guillermo Rauch * Released under the MIT License. */ @@ -12,52 +12,64 @@ function _typeof(obj) { "@babel/helpers - typeof"; - return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { - return typeof obj; - } : function (obj) { - return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; - }, _typeof(obj); + if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { + _typeof = function (obj) { + return typeof obj; + }; + } else { + _typeof = function (obj) { + return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; + }; + } + + return _typeof(obj); } + function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; - Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); + Object.defineProperty(target, descriptor.key, descriptor); } } + function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); - Object.defineProperty(Constructor, "prototype", { - writable: false - }); return Constructor; } + function _extends() { - _extends = Object.assign ? Object.assign.bind() : function (target) { + _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; + for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } + return target; }; + return _extends.apply(this, arguments); } + function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } + subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, @@ -65,38 +77,41 @@ configurable: true } }); - Object.defineProperty(subClass, "prototype", { - writable: false - }); if (superClass) _setPrototypeOf(subClass, superClass); } + function _getPrototypeOf(o) { - _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { + _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + function _setPrototypeOf(o, p) { - _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { + _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; + return _setPrototypeOf(o, p); } + function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; + try { - Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); + Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + function _construct(Parent, args, Class) { if (_isNativeReflectConstruct()) { - _construct = Reflect.construct.bind(); + _construct = Reflect.construct; } else { _construct = function _construct(Parent, args, Class) { var a = [null]; @@ -107,25 +122,34 @@ return instance; }; } + return _construct.apply(null, arguments); } + function _isNativeFunction(fn) { return Function.toString.call(fn).indexOf("[native code]") !== -1; } + function _wrapNativeSuper(Class) { var _cache = typeof Map === "function" ? new Map() : undefined; + _wrapNativeSuper = function _wrapNativeSuper(Class) { if (Class === null || !_isNativeFunction(Class)) return Class; + if (typeof Class !== "function") { throw new TypeError("Super expression must either be null or a function"); } + if (typeof _cache !== "undefined") { if (_cache.has(Class)) return _cache.get(Class); + _cache.set(Class, Wrapper); } + function Wrapper() { return _construct(Class, arguments, _getPrototypeOf(this).constructor); } + Wrapper.prototype = Object.create(Class.prototype, { constructor: { value: Wrapper, @@ -136,75 +160,77 @@ }); return _setPrototypeOf(Wrapper, Class); }; + return _wrapNativeSuper(Class); } + function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } + return self; } + function _possibleConstructorReturn(self, call) { if (call && (typeof call === "object" || typeof call === "function")) { return call; - } else if (call !== void 0) { - throw new TypeError("Derived constructors may only return object or undefined"); } + return _assertThisInitialized(self); } + function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); + return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), - result; + result; + if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; + result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } + return _possibleConstructorReturn(this, result); }; } + function _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } + return object; } - function _get() { + + function _get(target, property, receiver) { if (typeof Reflect !== "undefined" && Reflect.get) { - _get = Reflect.get.bind(); + _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); + if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); + if (desc.get) { - return desc.get.call(arguments.length < 3 ? target : receiver); + return desc.get.call(receiver); } + return desc.value; }; } - return _get.apply(this, arguments); - } - function _toPrimitive(input, hint) { - if (typeof input !== "object" || input === null) return input; - var prim = input[Symbol.toPrimitive]; - if (prim !== undefined) { - var res = prim.call(input, hint || "default"); - if (typeof res !== "object") return res; - throw new TypeError("@@toPrimitive must return a primitive value."); - } - return (hint === "string" ? String : Number)(input); - } - function _toPropertyKey(arg) { - var key = _toPrimitive(arg, "string"); - return typeof key === "symbol" ? key : String(key); + + return _get(target, property, receiver || target); } var PACKET_TYPES = Object.create(null); // no Map = no polyfill + PACKET_TYPES["open"] = "0"; PACKET_TYPES["close"] = "1"; PACKET_TYPES["ping"] = "2"; @@ -222,14 +248,16 @@ }; var withNativeBlob = typeof Blob === "function" || typeof Blob !== "undefined" && Object.prototype.toString.call(Blob) === "[object BlobConstructor]"; - var withNativeArrayBuffer$1 = typeof ArrayBuffer === "function"; - // ArrayBuffer.isView method is not defined in IE10 + var withNativeArrayBuffer$1 = typeof ArrayBuffer === "function"; // ArrayBuffer.isView method is not defined in IE10 + var isView = function isView(obj) { return typeof ArrayBuffer.isView === "function" ? ArrayBuffer.isView(obj) : obj && obj.buffer instanceof ArrayBuffer; }; + var encodePacket = function encodePacket(_ref, supportsBinary, callback) { var type = _ref.type, - data = _ref.data; + data = _ref.data; + if (withNativeBlob && data instanceof Blob) { if (supportsBinary) { return callback(data); @@ -242,16 +270,20 @@ } else { return encodeBlobAsBase64(new Blob([data]), callback); } - } - // plain string + } // plain string + + return callback(PACKET_TYPES[type] + (data || "")); }; + var encodeBlobAsBase64 = function encodeBlobAsBase64(data, callback) { var fileReader = new FileReader(); + fileReader.onload = function () { var content = fileReader.result.split(",")[1]; callback("b" + content); }; + return fileReader.readAsDataURL(data); }; @@ -260,29 +292,35 @@ * Copyright (c) 2022 Niklas von Hertzen * Released under MIT License */ - var chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'; - // Use a lookup table to find the index. + var chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'; // Use a lookup table to find the index. + var lookup = typeof Uint8Array === 'undefined' ? [] : new Uint8Array(256); + for (var i$1 = 0; i$1 < chars.length; i$1++) { lookup[chars.charCodeAt(i$1)] = i$1; } + var decode$1 = function decode(base64) { var bufferLength = base64.length * 0.75, - len = base64.length, - i, - p = 0, - encoded1, - encoded2, - encoded3, - encoded4; + len = base64.length, + i, + p = 0, + encoded1, + encoded2, + encoded3, + encoded4; + if (base64[base64.length - 1] === '=') { bufferLength--; + if (base64[base64.length - 2] === '=') { bufferLength--; } } + var arraybuffer = new ArrayBuffer(bufferLength), - bytes = new Uint8Array(arraybuffer); + bytes = new Uint8Array(arraybuffer); + for (i = 0; i < len; i += 4) { encoded1 = lookup[base64.charCodeAt(i)]; encoded2 = lookup[base64.charCodeAt(i + 1)]; @@ -292,10 +330,12 @@ bytes[p++] = (encoded2 & 15) << 4 | encoded3 >> 2; bytes[p++] = (encoded3 & 3) << 6 | encoded4 & 63; } + return arraybuffer; }; var withNativeArrayBuffer = typeof ArrayBuffer === "function"; + var decodePacket = function decodePacket(encodedPacket, binaryType) { if (typeof encodedPacket !== "string") { return { @@ -303,17 +343,22 @@ data: mapBinary(encodedPacket, binaryType) }; } + var type = encodedPacket.charAt(0); + if (type === "b") { return { type: "message", data: decodeBase64Packet(encodedPacket.substring(1), binaryType) }; } + var packetType = PACKET_TYPES_REVERSE[type]; + if (!packetType) { return ERROR_PACKET; } + return encodedPacket.length > 1 ? { type: PACKET_TYPES_REVERSE[type], data: encodedPacket.substring(1) @@ -321,6 +366,7 @@ type: PACKET_TYPES_REVERSE[type] }; }; + var decodeBase64Packet = function decodeBase64Packet(data, binaryType) { if (withNativeArrayBuffer) { var decoded = decode$1(data); @@ -337,6 +383,7 @@ switch (binaryType) { case "blob": return data instanceof ArrayBuffer ? new Blob([data]) : data; + case "arraybuffer": default: return data; @@ -345,6 +392,7 @@ }; var SEPARATOR = String.fromCharCode(30); // see https://en.wikipedia.org/wiki/Delimiter#ASCII_delimited_text + var encodePayload = function encodePayload(packets, callback) { // some packets may be added to the array while encoding, so the initial length must be saved var length = packets.length; @@ -354,24 +402,30 @@ // force base64 encoding for binary packets encodePacket(packet, false, function (encodedPacket) { encodedPackets[i] = encodedPacket; + if (++count === length) { callback(encodedPackets.join(SEPARATOR)); } }); }); }; + var decodePayload = function decodePayload(encodedPayload, binaryType) { var encodedPackets = encodedPayload.split(SEPARATOR); var packets = []; + for (var i = 0; i < encodedPackets.length; i++) { var decodedPacket = decodePacket(encodedPackets[i], binaryType); packets.push(decodedPacket); + if (decodedPacket.type === "error") { break; } } + return packets; }; + var protocol = 4; /** @@ -379,11 +433,9 @@ * * @api public */ - function Emitter(obj) { if (obj) return mixin(obj); } - /** * Mixin the emitter properties. * @@ -396,9 +448,9 @@ for (var key in Emitter.prototype) { obj[key] = Emitter.prototype[key]; } + return obj; } - /** * Listen on the given `event` with `fn`. * @@ -408,12 +460,12 @@ * @api public */ + Emitter.prototype.on = Emitter.prototype.addEventListener = function (event, fn) { this._callbacks = this._callbacks || {}; (this._callbacks['$' + event] = this._callbacks['$' + event] || []).push(fn); return this; }; - /** * Adds an `event` listener that will be invoked a single * time then automatically removed. @@ -424,16 +476,17 @@ * @api public */ + Emitter.prototype.once = function (event, fn) { function on() { this.off(event, on); fn.apply(this, arguments); } + on.fn = fn; this.on(event, on); return this; }; - /** * Remove the given callback for `event` or all * registered callbacks. @@ -444,43 +497,44 @@ * @api public */ + Emitter.prototype.off = Emitter.prototype.removeListener = Emitter.prototype.removeAllListeners = Emitter.prototype.removeEventListener = function (event, fn) { - this._callbacks = this._callbacks || {}; + this._callbacks = this._callbacks || {}; // all - // all if (0 == arguments.length) { this._callbacks = {}; return this; - } + } // specific event + - // specific event var callbacks = this._callbacks['$' + event]; - if (!callbacks) return this; + if (!callbacks) return this; // remove all handlers - // remove all handlers if (1 == arguments.length) { delete this._callbacks['$' + event]; return this; - } + } // remove specific handler + - // remove specific handler var cb; + for (var i = 0; i < callbacks.length; i++) { cb = callbacks[i]; + if (cb === fn || cb.fn === fn) { callbacks.splice(i, 1); break; } - } - - // Remove event specific arrays for event types that no + } // Remove event specific arrays for event types that no // one is subscribed for to avoid memory leak. + + if (callbacks.length === 0) { delete this._callbacks['$' + event]; } + return this; }; - /** * Emit `event` with the given args. * @@ -489,25 +543,29 @@ * @return {Emitter} */ + Emitter.prototype.emit = function (event) { this._callbacks = this._callbacks || {}; var args = new Array(arguments.length - 1), - callbacks = this._callbacks['$' + event]; + callbacks = this._callbacks['$' + event]; + for (var i = 1; i < arguments.length; i++) { args[i - 1] = arguments[i]; } + if (callbacks) { callbacks = callbacks.slice(0); + for (var i = 0, len = callbacks.length; i < len; ++i) { callbacks[i].apply(this, args); } } + return this; - }; + }; // alias used for reserved events (protected method) - // alias used for reserved events (protected method) - Emitter.prototype.emitReserved = Emitter.prototype.emit; + Emitter.prototype.emitReserved = Emitter.prototype.emit; /** * Return array of callbacks for `event`. * @@ -520,7 +578,6 @@ this._callbacks = this._callbacks || {}; return this._callbacks['$' + event] || []; }; - /** * Check if this emitter has `event` handlers. * @@ -529,6 +586,7 @@ * @api public */ + Emitter.prototype.hasListeners = function (event) { return !!this.listeners(event).length; }; @@ -547,14 +605,16 @@ for (var _len = arguments.length, attr = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { attr[_key - 1] = arguments[_key]; } + return attr.reduce(function (acc, k) { if (obj.hasOwnProperty(k)) { acc[k] = obj[k]; } + return acc; }, {}); - } - // Keep a reference to the real timeout functions so they can be used when overridden + } // Keep a reference to the real timeout functions so they can be used when overridden + var NATIVE_SET_TIMEOUT = globalThisShim.setTimeout; var NATIVE_CLEAR_TIMEOUT = globalThisShim.clearTimeout; function installTimerFunctions(obj, opts) { @@ -565,22 +625,26 @@ obj.setTimeoutFn = globalThisShim.setTimeout.bind(globalThisShim); obj.clearTimeoutFn = globalThisShim.clearTimeout.bind(globalThisShim); } - } - // base64 encoded buffers are about 33% bigger (https://en.wikipedia.org/wiki/Base64) - var BASE64_OVERHEAD = 1.33; - // we could also have used `new Blob([obj]).size`, but it isn't supported in IE9 + } // base64 encoded buffers are about 33% bigger (https://en.wikipedia.org/wiki/Base64) + + var BASE64_OVERHEAD = 1.33; // we could also have used `new Blob([obj]).size`, but it isn't supported in IE9 + function byteLength(obj) { if (typeof obj === "string") { return utf8Length(obj); - } - // arraybuffer or blob + } // arraybuffer or blob + + return Math.ceil((obj.byteLength || obj.size) * BASE64_OVERHEAD); } + function utf8Length(str) { var c = 0, - length = 0; + length = 0; + for (var i = 0, l = str.length; i < l; i++) { c = str.charCodeAt(i); + if (c < 0x80) { length += 1; } else if (c < 0x800) { @@ -592,26 +656,35 @@ length += 4; } } + return length; } var TransportError = /*#__PURE__*/function (_Error) { _inherits(TransportError, _Error); + var _super = _createSuper(TransportError); + function TransportError(reason, description, context) { var _this; + _classCallCheck(this, TransportError); + _this = _super.call(this, reason); _this.description = description; _this.context = context; _this.type = "TransportError"; return _this; } - return _createClass(TransportError); + + return TransportError; }( /*#__PURE__*/_wrapNativeSuper(Error)); + var Transport = /*#__PURE__*/function (_Emitter) { _inherits(Transport, _Emitter); + var _super2 = _createSuper(Transport); + /** * Transport abstract constructor. * @@ -620,7 +693,9 @@ */ function Transport(opts) { var _this2; + _classCallCheck(this, Transport); + _this2 = _super2.call(this); _this2.writable = false; installTimerFunctions(_assertThisInitialized(_this2), opts); @@ -638,15 +713,19 @@ * @return {Transport} for chaining * @protected */ + + _createClass(Transport, [{ key: "onError", value: function onError(reason, description, context) { _get(_getPrototypeOf(Transport.prototype), "emitReserved", this).call(this, "error", new TransportError(reason, description, context)); + return this; } /** * Opens the transport. */ + }, { key: "open", value: function open() { @@ -657,6 +736,7 @@ /** * Closes the transport. */ + }, { key: "close", value: function close() { @@ -664,6 +744,7 @@ this.doClose(); this.onClose(); } + return this; } /** @@ -671,6 +752,7 @@ * * @param {Array} packets */ + }, { key: "send", value: function send(packets) { @@ -683,11 +765,13 @@ * * @protected */ + }, { key: "onOpen", value: function onOpen() { this.readyState = "open"; this.writable = true; + _get(_getPrototypeOf(Transport.prototype), "emitReserved", this).call(this, "open"); } /** @@ -696,6 +780,7 @@ * @param {String} data * @protected */ + }, { key: "onData", value: function onData(data) { @@ -707,6 +792,7 @@ * * @protected */ + }, { key: "onPacket", value: function onPacket(packet) { @@ -717,10 +803,12 @@ * * @protected */ + }, { key: "onClose", value: function onClose(details) { this.readyState = "closed"; + _get(_getPrototypeOf(Transport.prototype), "emitReserved", this).call(this, "close", details); } /** @@ -728,21 +816,23 @@ * * @param onPause */ + }, { key: "pause", value: function pause(onPause) {} }]); + return Transport; }(Emitter); // imported from https://github.com/unshiftio/yeast var alphabet = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-_'.split(''), - length = 64, - map = {}; + length = 64, + map = {}; var seed = 0, - i = 0, - prev; + i = 0, + prev; /** * Return a string representing the specified number. * @@ -750,12 +840,15 @@ * @returns {String} The string representation of the number. * @api public */ + function encode$1(num) { var encoded = ''; + do { encoded = alphabet[num % length] + encoded; num = Math.floor(num / length); } while (num > 0); + return encoded; } /** @@ -764,19 +857,21 @@ * @returns {String} A unique id. * @api public */ + function yeast() { var now = encode$1(+new Date()); if (now !== prev) return seed = 0, prev = now; return now + '.' + encode$1(seed++); - } - // + } // // Map each character to its index. // + for (; i < length; i++) { map[alphabet[i]] = i; } // imported from https://github.com/galkn/querystring + /** * Compiles a querystring * Returns string representation of the object @@ -786,12 +881,14 @@ */ function encode(obj) { var str = ''; + for (var i in obj) { if (obj.hasOwnProperty(i)) { if (str.length) str += '&'; str += encodeURIComponent(i) + '=' + encodeURIComponent(obj[i]); } } + return str; } /** @@ -800,35 +897,40 @@ * @param {String} qs * @api private */ + function decode(qs) { var qry = {}; var pairs = qs.split('&'); + for (var i = 0, l = pairs.length; i < l; i++) { var pair = pairs[i].split('='); qry[decodeURIComponent(pair[0])] = decodeURIComponent(pair[1]); } + return qry; } // imported from https://github.com/component/has-cors var value = false; + try { value = typeof XMLHttpRequest !== 'undefined' && 'withCredentials' in new XMLHttpRequest(); - } catch (err) { - // if XMLHttp support is disabled in IE then it will throw + } catch (err) {// if XMLHttp support is disabled in IE then it will throw // when trying to create } + var hasCORS = value; // browser shim for xmlhttprequest module function XHR(opts) { - var xdomain = opts.xdomain; - // XMLHttpRequest can be disabled on IE + var xdomain = opts.xdomain; // XMLHttpRequest can be disabled on IE + try { if ("undefined" !== typeof XMLHttpRequest && (!xdomain || hasCORS)) { return new XMLHttpRequest(); } } catch (e) {} + if (!xdomain) { try { return new globalThisShim[["Active"].concat("Object").join("X")]("Microsoft.XMLHTTP"); @@ -837,15 +939,19 @@ } function empty() {} + var hasXHR2 = function () { var xhr = new XHR({ xdomain: false }); return null != xhr.responseType; }(); + var Polling = /*#__PURE__*/function (_Transport) { _inherits(Polling, _Transport); + var _super = _createSuper(Polling); + /** * XHR Polling constructor. * @@ -854,39 +960,42 @@ */ function Polling(opts) { var _this; + _classCallCheck(this, Polling); + _this = _super.call(this, opts); _this.polling = false; + if (typeof location !== "undefined") { var isSSL = "https:" === location.protocol; - var port = location.port; - // some user agents have empty `location.port` + var port = location.port; // some user agents have empty `location.port` + if (!port) { port = isSSL ? "443" : "80"; } + _this.xd = typeof location !== "undefined" && opts.hostname !== location.hostname || port !== opts.port; _this.xs = opts.secure !== isSSL; } /** * XHR supports binary */ + + var forceBase64 = opts && opts.forceBase64; _this.supportsBinary = hasXHR2 && !forceBase64; return _this; } + _createClass(Polling, [{ - key: "name", - get: function get() { - return "polling"; - } + key: "doOpen", + /** * Opens the socket (triggers polling). We write a PING message to determine * when the transport is open. * * @protected */ - }, { - key: "doOpen", value: function doOpen() { this.poll(); } @@ -896,23 +1005,29 @@ * @param {Function} onPause - callback upon buffers are flushed and transport is paused * @package */ + }, { key: "pause", value: function pause(onPause) { var _this2 = this; + this.readyState = "pausing"; + var pause = function pause() { _this2.readyState = "paused"; onPause(); }; + if (this.polling || !this.writable) { var total = 0; + if (this.polling) { total++; this.once("pollComplete", function () { --total || pause(); }); } + if (!this.writable) { total++; this.once("drain", function () { @@ -928,6 +1043,7 @@ * * @private */ + }, { key: "poll", value: function poll() { @@ -940,32 +1056,39 @@ * * @protected */ + }, { key: "onData", value: function onData(data) { var _this3 = this; + var callback = function callback(packet) { // if its the first message we consider the transport open if ("opening" === _this3.readyState && packet.type === "open") { _this3.onOpen(); - } - // if its a close packet, we close the ongoing requests + } // if its a close packet, we close the ongoing requests + + if ("close" === packet.type) { _this3.onClose({ description: "transport closed by the server" }); + return false; - } - // otherwise bypass onData and handle the message + } // otherwise bypass onData and handle the message + + _this3.onPacket(packet); - }; - // decode payload - decodePayload(data, this.socket.binaryType).forEach(callback); - // if an event did not trigger closing + }; // decode payload + + + decodePayload(data, this.socket.binaryType).forEach(callback); // if an event did not trigger closing + if ("closed" !== this.readyState) { // if we got data we're not polling this.polling = false; this.emitReserved("pollComplete"); + if ("open" === this.readyState) { this.poll(); } @@ -976,15 +1099,18 @@ * * @protected */ + }, { key: "doClose", value: function doClose() { var _this4 = this; + var close = function close() { _this4.write([{ type: "close" }]); }; + if ("open" === this.readyState) { close(); } else { @@ -999,14 +1125,17 @@ * @param {Array} packets - data packets * @protected */ + }, { key: "write", value: function write(packets) { var _this5 = this; + this.writable = false; encodePayload(packets, function (data) { _this5.doWrite(data, function () { _this5.writable = true; + _this5.emitReserved("drain"); }); }); @@ -1016,23 +1145,27 @@ * * @private */ + }, { key: "uri", value: function uri() { var query = this.query || {}; var schema = this.opts.secure ? "https" : "http"; - var port = ""; - // cache busting is forced + var port = ""; // cache busting is forced + if (false !== this.opts.timestampRequests) { query[this.opts.timestampParam] = yeast(); } + if (!this.supportsBinary && !query.sid) { query.b64 = 1; - } - // avoid port if default for schema + } // avoid port if default for schema + + if (this.opts.port && ("https" === schema && Number(this.opts.port) !== 443 || "http" === schema && Number(this.opts.port) !== 80)) { port = ":" + this.opts.port; } + var encodedQuery = encode(query); var ipv6 = this.opts.hostname.indexOf(":") !== -1; return schema + "://" + (ipv6 ? "[" + this.opts.hostname + "]" : this.opts.hostname) + port + this.opts.path + (encodedQuery.length ? "?" + encodedQuery : ""); @@ -1043,14 +1176,17 @@ * @param {String} method * @private */ + }, { key: "request", value: function request() { var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + _extends(opts, { xd: this.xd, xs: this.xs }, this.opts); + return new Request(this.uri(), opts); } /** @@ -1060,10 +1196,12 @@ * @param {Function} called upon flush. * @private */ + }, { key: "doWrite", value: function doWrite(data, fn) { var _this6 = this; + var req = this.request({ method: "POST", data: data @@ -1078,10 +1216,12 @@ * * @private */ + }, { key: "doPoll", value: function doPoll() { var _this7 = this; + var req = this.request(); req.on("data", this.onData.bind(this)); req.on("error", function (xhrStatus, context) { @@ -1089,12 +1229,20 @@ }); this.pollXhr = req; } + }, { + key: "name", + get: function get() { + return "polling"; + } }]); + return Polling; }(Transport); var Request = /*#__PURE__*/function (_Emitter) { _inherits(Request, _Emitter); + var _super2 = _createSuper(Request); + /** * Request constructor * @@ -1103,7 +1251,9 @@ */ function Request(uri, opts) { var _this8; + _classCallCheck(this, Request); + _this8 = _super2.call(this); installTimerFunctions(_assertThisInitialized(_this8), opts); _this8.opts = opts; @@ -1111,7 +1261,9 @@ _this8.uri = uri; _this8.async = false !== opts.async; _this8.data = undefined !== opts.data ? opts.data : null; + _this8.create(); + return _this8; } /** @@ -1119,19 +1271,25 @@ * * @private */ + + _createClass(Request, [{ key: "create", value: function create() { var _this9 = this; + var opts = pick(this.opts, "agent", "pfx", "key", "passphrase", "cert", "ca", "ciphers", "rejectUnauthorized", "autoUnref"); opts.xdomain = !!this.opts.xd; opts.xscheme = !!this.opts.xs; var xhr = this.xhr = new XHR(opts); + try { xhr.open(this.method, this.uri, this.async); + try { if (this.opts.extraHeaders) { xhr.setDisableHeaderCheck && xhr.setDisableHeaderCheck(true); + for (var i in this.opts.extraHeaders) { if (this.opts.extraHeaders.hasOwnProperty(i)) { xhr.setRequestHeader(i, this.opts.extraHeaders[i]); @@ -1139,23 +1297,29 @@ } } } catch (e) {} + if ("POST" === this.method) { try { xhr.setRequestHeader("Content-type", "text/plain;charset=UTF-8"); } catch (e) {} } + try { xhr.setRequestHeader("Accept", "*/*"); - } catch (e) {} - // ie6 check + } catch (e) {} // ie6 check + + if ("withCredentials" in xhr) { xhr.withCredentials = this.opts.withCredentials; } + if (this.opts.requestTimeout) { xhr.timeout = this.opts.requestTimeout; } + xhr.onreadystatechange = function () { if (4 !== xhr.readyState) return; + if (200 === xhr.status || 1223 === xhr.status) { _this9.onLoad(); } else { @@ -1166,6 +1330,7 @@ }, 0); } }; + xhr.send(this.data); } catch (e) { // Need to defer since .create() is called directly from the constructor @@ -1176,6 +1341,7 @@ }, 0); return; } + if (typeof document !== "undefined") { this.index = Request.requestsCount++; Request.requests[this.index] = this; @@ -1186,6 +1352,7 @@ * * @private */ + }, { key: "onError", value: function onError(err) { @@ -1197,21 +1364,26 @@ * * @private */ + }, { key: "cleanup", value: function cleanup(fromError) { if ("undefined" === typeof this.xhr || null === this.xhr) { return; } + this.xhr.onreadystatechange = empty; + if (fromError) { try { this.xhr.abort(); } catch (e) {} } + if (typeof document !== "undefined") { delete Request.requests[this.index]; } + this.xhr = null; } /** @@ -1219,10 +1391,12 @@ * * @private */ + }, { key: "onLoad", value: function onLoad() { var data = this.xhr.responseText; + if (data !== null) { this.emitReserved("data", data); this.emitReserved("success"); @@ -1234,12 +1408,14 @@ * * @package */ + }, { key: "abort", value: function abort() { this.cleanup(); } }]); + return Request; }(Emitter); Request.requestsCount = 0; @@ -1249,6 +1425,7 @@ * memory leaks (e.g. when using IE) and to ensure that no spurious error is * emitted. */ + if (typeof document !== "undefined") { // @ts-ignore if (typeof attachEvent === "function") { @@ -1259,6 +1436,7 @@ addEventListener(terminationEvent, unloadHandler, false); } } + function unloadHandler() { for (var i in Request.requests) { if (Request.requests.hasOwnProperty(i)) { @@ -1269,6 +1447,7 @@ var nextTick = function () { var isPromiseAvailable = typeof Promise === "function" && typeof Promise.resolve === "function"; + if (isPromiseAvailable) { return function (cb) { return Promise.resolve().then(cb); @@ -1283,11 +1462,12 @@ var usingBrowserWebSocket = true; var defaultBinaryType = "arraybuffer"; - // detect ReactNative environment var isReactNative = typeof navigator !== "undefined" && typeof navigator.product === "string" && navigator.product.toLowerCase() === "reactnative"; var WS = /*#__PURE__*/function (_Transport) { _inherits(WS, _Transport); + var _super = _createSuper(WS); + /** * WebSocket transport constructor. * @@ -1296,35 +1476,37 @@ */ function WS(opts) { var _this; + _classCallCheck(this, WS); + _this = _super.call(this, opts); _this.supportsBinary = !opts.forceBase64; return _this; } + _createClass(WS, [{ - key: "name", - get: function get() { - return "websocket"; - } - }, { key: "doOpen", value: function doOpen() { if (!this.check()) { // let probe timeout return; } + var uri = this.uri(); - var protocols = this.opts.protocols; - // React Native only supports the 'headers' option, and will print a warning if anything else is passed + var protocols = this.opts.protocols; // React Native only supports the 'headers' option, and will print a warning if anything else is passed + var opts = isReactNative ? {} : pick(this.opts, "agent", "perMessageDeflate", "pfx", "key", "passphrase", "cert", "ca", "ciphers", "rejectUnauthorized", "localAddress", "protocolVersion", "origin", "maxPayload", "family", "checkServerIdentity"); + if (this.opts.extraHeaders) { opts.headers = this.opts.extraHeaders; } + try { this.ws = usingBrowserWebSocket && !isReactNative ? protocols ? new WebSocket(uri, protocols) : new WebSocket(uri) : new WebSocket(uri, protocols, opts); } catch (err) { return this.emitReserved("error", err); } + this.ws.binaryType = this.socket.binaryType || defaultBinaryType; this.addEventListeners(); } @@ -1333,25 +1515,31 @@ * * @private */ + }, { key: "addEventListeners", value: function addEventListeners() { var _this2 = this; + this.ws.onopen = function () { if (_this2.opts.autoUnref) { _this2.ws._socket.unref(); } + _this2.onOpen(); }; + this.ws.onclose = function (closeEvent) { return _this2.onClose({ description: "websocket connection closed", context: closeEvent }); }; + this.ws.onmessage = function (ev) { return _this2.onData(ev.data); }; + this.ws.onerror = function (e) { return _this2.onError("websocket error", e); }; @@ -1360,34 +1548,39 @@ key: "write", value: function write(packets) { var _this3 = this; - this.writable = false; - // encodePacket efficient as it uses WS framing + + this.writable = false; // encodePacket efficient as it uses WS framing // no need for encodePayload + var _loop = function _loop(i) { var packet = packets[i]; var lastPacket = i === packets.length - 1; encodePacket(packet, _this3.supportsBinary, function (data) { // always create a new object (GH-437) var opts = {}; - // Sometimes the websocket has already been closed but the browser didn't // have a chance of informing us about it yet, in that case send will // throw an error + + try { if (usingBrowserWebSocket) { // TypeError is thrown when passing the second argument on Safari _this3.ws.send(data); } } catch (e) {} + if (lastPacket) { // fake drain // defer to next tick to allow Socket to clear writeBuffer nextTick(function () { _this3.writable = true; + _this3.emitReserved("drain"); }, _this3.setTimeoutFn); } }); }; + for (var i = 0; i < packets.length; i++) { _loop(i); } @@ -1405,24 +1598,28 @@ * * @private */ + }, { key: "uri", value: function uri() { var query = this.query || {}; var schema = this.opts.secure ? "wss" : "ws"; - var port = ""; - // avoid port if default for schema + var port = ""; // avoid port if default for schema + if (this.opts.port && ("wss" === schema && Number(this.opts.port) !== 443 || "ws" === schema && Number(this.opts.port) !== 80)) { port = ":" + this.opts.port; - } - // append timestamp to URI + } // append timestamp to URI + + if (this.opts.timestampRequests) { query[this.opts.timestampParam] = yeast(); - } - // communicate binary support capabilities + } // communicate binary support capabilities + + if (!this.supportsBinary) { query.b64 = 1; } + var encodedQuery = encode(query); var ipv6 = this.opts.hostname.indexOf(":") !== -1; return schema + "://" + (ipv6 ? "[" + this.opts.hostname + "]" : this.opts.hostname) + port + this.opts.path + (encodedQuery.length ? "?" + encodedQuery : ""); @@ -1433,12 +1630,19 @@ * @return {Boolean} whether this transport is available. * @private */ + }, { key: "check", value: function check() { return !!WebSocket; } + }, { + key: "name", + get: function get() { + return "websocket"; + } }]); + return WS; }(Transport); @@ -1448,6 +1652,7 @@ }; // imported from https://github.com/galkn/parseuri + /** * Parses a URI * @@ -1470,38 +1675,48 @@ var parts = ['source', 'protocol', 'authority', 'userInfo', 'user', 'password', 'host', 'port', 'relative', 'path', 'directory', 'file', 'query', 'anchor']; function parse(str) { var src = str, - b = str.indexOf('['), - e = str.indexOf(']'); + b = str.indexOf('['), + e = str.indexOf(']'); + if (b != -1 && e != -1) { str = str.substring(0, b) + str.substring(b, e).replace(/:/g, ';') + str.substring(e, str.length); } + var m = re.exec(str || ''), - uri = {}, - i = 14; + uri = {}, + i = 14; + while (i--) { uri[parts[i]] = m[i] || ''; } + if (b != -1 && e != -1) { uri.source = src; uri.host = uri.host.substring(1, uri.host.length - 1).replace(/;/g, ':'); uri.authority = uri.authority.replace('[', '').replace(']', '').replace(/;/g, ':'); uri.ipv6uri = true; } + uri.pathNames = pathNames(uri, uri['path']); uri.queryKey = queryKey(uri, uri['query']); return uri; } + function pathNames(obj, path) { var regx = /\/{2,9}/g, - names = path.replace(regx, "/").split("/"); + names = path.replace(regx, "/").split("/"); + if (path.slice(0, 1) == '/' || path.length === 0) { names.splice(0, 1); } + if (path.slice(-1) == '/') { names.splice(names.length - 1, 1); } + return names; } + function queryKey(uri, query) { var data = {}; query.replace(/(?:^|&)([^&=]*)=?([^&]*)/g, function ($0, $1, $2) { @@ -1514,7 +1729,9 @@ var Socket = /*#__PURE__*/function (_Emitter) { _inherits(Socket, _Emitter); + var _super = _createSuper(Socket); + /** * Socket constructor. * @@ -1523,14 +1740,19 @@ */ function Socket(uri) { var _this; + var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + _classCallCheck(this, Socket); + _this = _super.call(this); _this.writeBuffer = []; + if (uri && "object" === _typeof(uri)) { opts = uri; uri = null; } + if (uri) { uri = parse(uri); opts.hostname = uri.host; @@ -1540,12 +1762,15 @@ } else if (opts.host) { opts.hostname = parse(opts.host).host; } + installTimerFunctions(_assertThisInitialized(_this), opts); _this.secure = null != opts.secure ? opts.secure : typeof location !== "undefined" && "https:" === location.protocol; + if (opts.hostname && !opts.port) { // if no port is specified manually, use the protocol default opts.port = _this.secure ? "443" : "80"; } + _this.hostname = opts.hostname || (typeof location !== "undefined" ? location.hostname : "localhost"); _this.port = opts.port || (typeof location !== "undefined" && location.port ? location.port : _this.secure ? "443" : "80"); _this.transports = opts.transports || ["polling", "websocket"]; @@ -1567,16 +1792,19 @@ closeOnBeforeunload: true }, opts); _this.opts.path = _this.opts.path.replace(/\/$/, "") + (_this.opts.addTrailingSlash ? "/" : ""); + if (typeof _this.opts.query === "string") { _this.opts.query = decode(_this.opts.query); - } - // set on handshake + } // set on handshake + + _this.id = null; _this.upgrades = null; _this.pingInterval = null; - _this.pingTimeout = null; - // set on heartbeat + _this.pingTimeout = null; // set on heartbeat + _this.pingTimeoutTimer = null; + if (typeof addEventListener === "function") { if (_this.opts.closeOnBeforeunload) { // Firefox closes the connection when the "beforeunload" event is emitted but not Chrome. This event listener @@ -1586,21 +1814,27 @@ if (_this.transport) { // silently close the transport _this.transport.removeAllListeners(); + _this.transport.close(); } }; + addEventListener("beforeunload", _this.beforeunloadEventListener, false); } + if (_this.hostname !== "localhost") { _this.offlineEventListener = function () { _this.onClose("transport close", { description: "network connection lost" }); }; + addEventListener("offline", _this.offlineEventListener, false); } } + _this.open(); + return _this; } /** @@ -1610,16 +1844,20 @@ * @return {Transport} * @private */ + + _createClass(Socket, [{ key: "createTransport", value: function createTransport(name) { - var query = _extends({}, this.opts.query); - // append engine.io protocol identifier - query.EIO = protocol; - // transport name - query.transport = name; - // session id if we already have one + var query = _extends({}, this.opts.query); // append engine.io protocol identifier + + + query.EIO = protocol; // transport name + + query.transport = name; // session id if we already have one + if (this.id) query.sid = this.id; + var opts = _extends({}, this.opts.transportOptions[name], this.opts, { query: query, socket: this, @@ -1627,6 +1865,7 @@ secure: this.secure, port: this.port }); + return new transports[name](opts); } /** @@ -1634,11 +1873,14 @@ * * @private */ + }, { key: "open", value: function open() { var _this2 = this; + var transport; + if (this.opts.rememberUpgrade && Socket.priorWebsocketSuccess && this.transports.indexOf("websocket") !== -1) { transport = "websocket"; } else if (0 === this.transports.length) { @@ -1650,8 +1892,9 @@ } else { transport = this.transports[0]; } - this.readyState = "opening"; - // Retry with the next transport if the transport is disabled (jsonp: false) + + this.readyState = "opening"; // Retry with the next transport if the transport is disabled (jsonp: false) + try { transport = this.createTransport(transport); } catch (e) { @@ -1659,6 +1902,7 @@ this.open(); return; } + transport.open(); this.setTransport(transport); } @@ -1667,16 +1911,19 @@ * * @private */ + }, { key: "setTransport", value: function setTransport(transport) { var _this3 = this; + if (this.transport) { this.transport.removeAllListeners(); - } - // set up transport - this.transport = transport; - // set up transport listeners + } // set up transport + + + this.transport = transport; // set up transport listeners + transport.on("drain", this.onDrain.bind(this)).on("packet", this.onPacket.bind(this)).on("error", this.onError.bind(this)).on("close", function (reason) { return _this3.onClose("transport close", reason); }); @@ -1687,13 +1934,16 @@ * @param {String} name - transport name * @private */ + }, { key: "probe", value: function probe(name) { var _this4 = this; + var transport = this.createTransport(name); var failed = false; Socket.priorWebsocketSuccess = false; + var onTransportOpen = function onTransportOpen() { if (failed) return; transport.send([{ @@ -1702,69 +1952,89 @@ }]); transport.once("packet", function (msg) { if (failed) return; + if ("pong" === msg.type && "probe" === msg.data) { _this4.upgrading = true; + _this4.emitReserved("upgrading", transport); + if (!transport) return; Socket.priorWebsocketSuccess = "websocket" === transport.name; + _this4.transport.pause(function () { if (failed) return; if ("closed" === _this4.readyState) return; cleanup(); + _this4.setTransport(transport); + transport.send([{ type: "upgrade" }]); + _this4.emitReserved("upgrade", transport); + transport = null; _this4.upgrading = false; + _this4.flush(); }); } else { - var err = new Error("probe error"); - // @ts-ignore + var err = new Error("probe error"); // @ts-ignore + err.transport = transport.name; + _this4.emitReserved("upgradeError", err); } }); }; + function freezeTransport() { - if (failed) return; - // Any callback called by transport should be ignored since now + if (failed) return; // Any callback called by transport should be ignored since now + failed = true; cleanup(); transport.close(); transport = null; - } - // Handle any error that happens while probing + } // Handle any error that happens while probing + + var onerror = function onerror(err) { - var error = new Error("probe error: " + err); - // @ts-ignore + var error = new Error("probe error: " + err); // @ts-ignore + error.transport = transport.name; freezeTransport(); + _this4.emitReserved("upgradeError", error); }; + function onTransportClose() { onerror("transport closed"); - } - // When the socket is closed while we're probing + } // When the socket is closed while we're probing + + function onclose() { onerror("socket closed"); - } - // When the socket is upgraded while we're probing + } // When the socket is upgraded while we're probing + + function onupgrade(to) { if (transport && to.name !== transport.name) { freezeTransport(); } - } - // Remove all listeners on the transport and on self + } // Remove all listeners on the transport and on self + + var cleanup = function cleanup() { transport.removeListener("open", onTransportOpen); transport.removeListener("error", onerror); transport.removeListener("close", onTransportClose); + _this4.off("close", onclose); + _this4.off("upgrading", onupgrade); }; + transport.once("open", onTransportOpen); transport.once("error", onerror); transport.once("close", onTransportClose); @@ -1777,18 +2047,20 @@ * * @private */ + }, { key: "onOpen", value: function onOpen() { this.readyState = "open"; Socket.priorWebsocketSuccess = "websocket" === this.transport.name; this.emitReserved("open"); - this.flush(); - // we check for `readyState` in case an `open` + this.flush(); // we check for `readyState` in case an `open` // listener already closed the socket + if ("open" === this.readyState && this.opts.upgrade) { var i = 0; var l = this.upgrades.length; + for (; i < l; i++) { this.probe(this.upgrades[i]); } @@ -1799,29 +2071,34 @@ * * @private */ + }, { key: "onPacket", value: function onPacket(packet) { if ("opening" === this.readyState || "open" === this.readyState || "closing" === this.readyState) { - this.emitReserved("packet", packet); - // Socket is live - any packet counts + this.emitReserved("packet", packet); // Socket is live - any packet counts + this.emitReserved("heartbeat"); + switch (packet.type) { case "open": this.onHandshake(JSON.parse(packet.data)); break; + case "ping": this.resetPingTimeout(); this.sendPacket("pong"); this.emitReserved("ping"); this.emitReserved("pong"); break; + case "error": - var err = new Error("server error"); - // @ts-ignore + var err = new Error("server error"); // @ts-ignore + err.code = packet.data; this.onError(err); break; + case "message": this.emitReserved("data", packet.data); this.emitReserved("message", packet.data); @@ -1835,6 +2112,7 @@ * @param {Object} data - handshake obj * @private */ + }, { key: "onHandshake", value: function onHandshake(data) { @@ -1845,8 +2123,8 @@ this.pingInterval = data.pingInterval; this.pingTimeout = data.pingTimeout; this.maxPayload = data.maxPayload; - this.onOpen(); - // In case open handler closes socket + this.onOpen(); // In case open handler closes socket + if ("closed" === this.readyState) return; this.resetPingTimeout(); } @@ -1855,14 +2133,17 @@ * * @private */ + }, { key: "resetPingTimeout", value: function resetPingTimeout() { var _this5 = this; + this.clearTimeoutFn(this.pingTimeoutTimer); this.pingTimeoutTimer = this.setTimeoutFn(function () { _this5.onClose("ping timeout"); }, this.pingInterval + this.pingTimeout); + if (this.opts.autoUnref) { this.pingTimeoutTimer.unref(); } @@ -1872,14 +2153,16 @@ * * @private */ + }, { key: "onDrain", value: function onDrain() { - this.writeBuffer.splice(0, this.prevBufferLen); - // setting prevBufferLen = 0 is very important + this.writeBuffer.splice(0, this.prevBufferLen); // setting prevBufferLen = 0 is very important // for example, when upgrading, upgrade packet is sent over, // and a nonzero prevBufferLen could cause problems on `drain` + this.prevBufferLen = 0; + if (0 === this.writeBuffer.length) { this.emitReserved("drain"); } else { @@ -1891,14 +2174,15 @@ * * @private */ + }, { key: "flush", value: function flush() { if ("closed" !== this.readyState && this.transport.writable && !this.upgrading && this.writeBuffer.length) { var packets = this.getWritablePackets(); - this.transport.send(packets); - // keep track of current length of writeBuffer + this.transport.send(packets); // keep track of current length of writeBuffer // splice writeBuffer and callbackBuffer on `drain` + this.prevBufferLen = packets.length; this.emitReserved("flush"); } @@ -1909,22 +2193,29 @@ * * @private */ + }, { key: "getWritablePackets", value: function getWritablePackets() { var shouldCheckPayloadSize = this.maxPayload && this.transport.name === "polling" && this.writeBuffer.length > 1; + if (!shouldCheckPayloadSize) { return this.writeBuffer; } + var payloadSize = 1; // first packet type + for (var i = 0; i < this.writeBuffer.length; i++) { var data = this.writeBuffer[i].data; + if (data) { payloadSize += byteLength(data); } + if (i > 0 && payloadSize > this.maxPayload) { return this.writeBuffer.slice(0, i); } + payloadSize += 2; // separator + packet type } @@ -1938,6 +2229,7 @@ * @param {Function} callback function. * @return {Socket} for chaining. */ + }, { key: "write", value: function write(msg, options, fn) { @@ -1959,6 +2251,7 @@ * @param {Function} fn - callback function. * @private */ + }, { key: "sendPacket", value: function sendPacket(type, data, options, fn) { @@ -1966,13 +2259,16 @@ fn = data; data = undefined; } + if ("function" === typeof options) { fn = options; options = null; } + if ("closing" === this.readyState || "closed" === this.readyState) { return; } + options = options || {}; options.compress = false !== options.compress; var packet = { @@ -1988,26 +2284,36 @@ /** * Closes the connection. */ + }, { key: "close", value: function close() { var _this6 = this; + var close = function close() { _this6.onClose("forced close"); + _this6.transport.close(); }; + var cleanupAndClose = function cleanupAndClose() { _this6.off("upgrade", cleanupAndClose); + _this6.off("upgradeError", cleanupAndClose); + close(); }; + var waitForUpgrade = function waitForUpgrade() { // wait for upgrade to finish since we can't send packets while pausing a transport _this6.once("upgrade", cleanupAndClose); + _this6.once("upgradeError", cleanupAndClose); }; + if ("opening" === this.readyState || "open" === this.readyState) { this.readyState = "closing"; + if (this.writeBuffer.length) { this.once("drain", function () { if (_this6.upgrading) { @@ -2022,6 +2328,7 @@ close(); } } + return this; } /** @@ -2029,6 +2336,7 @@ * * @private */ + }, { key: "onError", value: function onError(err) { @@ -2041,30 +2349,33 @@ * * @private */ + }, { key: "onClose", value: function onClose(reason, description) { if ("opening" === this.readyState || "open" === this.readyState || "closing" === this.readyState) { // clear timers - this.clearTimeoutFn(this.pingTimeoutTimer); - // stop event from firing again for transport - this.transport.removeAllListeners("close"); - // ensure transport won't stay open - this.transport.close(); - // ignore further transport communication + this.clearTimeoutFn(this.pingTimeoutTimer); // stop event from firing again for transport + + this.transport.removeAllListeners("close"); // ensure transport won't stay open + + this.transport.close(); // ignore further transport communication + this.transport.removeAllListeners(); + if (typeof removeEventListener === "function") { removeEventListener("beforeunload", this.beforeunloadEventListener, false); removeEventListener("offline", this.offlineEventListener, false); - } - // set ready state - this.readyState = "closed"; - // clear session id - this.id = null; - // emit close event - this.emitReserved("close", reason, description); - // clean buffers after, so users can still + } // set ready state + + + this.readyState = "closed"; // clear session id + + this.id = null; // emit close event + + this.emitReserved("close", reason, description); // clean buffers after, so users can still // grab the buffers on `close` event + this.writeBuffer = []; this.prevBufferLen = 0; } @@ -2075,18 +2386,22 @@ * @param {Array} upgrades - server upgrades * @private */ + }, { key: "filterUpgrades", value: function filterUpgrades(upgrades) { var filteredUpgrades = []; var i = 0; var j = upgrades.length; + for (; i < j; i++) { if (~this.transports.indexOf(upgrades[i])) filteredUpgrades.push(upgrades[i]); } + return filteredUpgrades; } }]); + return Socket; }(Emitter); Socket.protocol = protocol; diff --git a/dist/engine.io.js.map b/dist/engine.io.js.map index 98cea7f96..d68214cff 100644 --- a/dist/engine.io.js.map +++ b/dist/engine.io.js.map @@ -1 +1 @@ -{"version":3,"file":"engine.io.js","sources":["../node_modules/engine.io-parser/build/esm/commons.js","../node_modules/engine.io-parser/build/esm/encodePacket.browser.js","../node_modules/@socket.io/base64-arraybuffer/dist/base64-arraybuffer.es5.js","../node_modules/engine.io-parser/build/esm/decodePacket.browser.js","../node_modules/engine.io-parser/build/esm/index.js","../node_modules/@socket.io/component-emitter/index.mjs","../build/esm/globalThis.browser.js","../build/esm/util.js","../build/esm/transport.js","../build/esm/contrib/yeast.js","../build/esm/contrib/parseqs.js","../build/esm/contrib/has-cors.js","../build/esm/transports/xmlhttprequest.browser.js","../build/esm/transports/polling.js","../build/esm/transports/websocket-constructor.browser.js","../build/esm/transports/websocket.js","../build/esm/transports/index.js","../build/esm/contrib/parseuri.js","../build/esm/socket.js","../build/esm/browser-entrypoint.js"],"sourcesContent":["const PACKET_TYPES = Object.create(null); // no Map = no polyfill\nPACKET_TYPES[\"open\"] = \"0\";\nPACKET_TYPES[\"close\"] = \"1\";\nPACKET_TYPES[\"ping\"] = \"2\";\nPACKET_TYPES[\"pong\"] = \"3\";\nPACKET_TYPES[\"message\"] = \"4\";\nPACKET_TYPES[\"upgrade\"] = \"5\";\nPACKET_TYPES[\"noop\"] = \"6\";\nconst PACKET_TYPES_REVERSE = Object.create(null);\nObject.keys(PACKET_TYPES).forEach(key => {\n PACKET_TYPES_REVERSE[PACKET_TYPES[key]] = key;\n});\nconst ERROR_PACKET = { type: \"error\", data: \"parser error\" };\nexport { PACKET_TYPES, PACKET_TYPES_REVERSE, ERROR_PACKET };\n","import { PACKET_TYPES } from \"./commons.js\";\nconst withNativeBlob = typeof Blob === \"function\" ||\n (typeof Blob !== \"undefined\" &&\n Object.prototype.toString.call(Blob) === \"[object BlobConstructor]\");\nconst withNativeArrayBuffer = typeof ArrayBuffer === \"function\";\n// ArrayBuffer.isView method is not defined in IE10\nconst isView = obj => {\n return typeof ArrayBuffer.isView === \"function\"\n ? ArrayBuffer.isView(obj)\n : obj && obj.buffer instanceof ArrayBuffer;\n};\nconst encodePacket = ({ type, data }, supportsBinary, callback) => {\n if (withNativeBlob && data instanceof Blob) {\n if (supportsBinary) {\n return callback(data);\n }\n else {\n return encodeBlobAsBase64(data, callback);\n }\n }\n else if (withNativeArrayBuffer &&\n (data instanceof ArrayBuffer || isView(data))) {\n if (supportsBinary) {\n return callback(data);\n }\n else {\n return encodeBlobAsBase64(new Blob([data]), callback);\n }\n }\n // plain string\n return callback(PACKET_TYPES[type] + (data || \"\"));\n};\nconst encodeBlobAsBase64 = (data, callback) => {\n const fileReader = new FileReader();\n fileReader.onload = function () {\n const content = fileReader.result.split(\",\")[1];\n callback(\"b\" + content);\n };\n return fileReader.readAsDataURL(data);\n};\nexport default encodePacket;\n","/*\n * base64-arraybuffer 1.0.1 \n * Copyright (c) 2022 Niklas von Hertzen \n * Released under MIT License\n */\nvar chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n// Use a lookup table to find the index.\nvar lookup = typeof Uint8Array === 'undefined' ? [] : new Uint8Array(256);\nfor (var i = 0; i < chars.length; i++) {\n lookup[chars.charCodeAt(i)] = i;\n}\nvar encode = function (arraybuffer) {\n var bytes = new Uint8Array(arraybuffer), i, len = bytes.length, base64 = '';\n for (i = 0; i < len; i += 3) {\n base64 += chars[bytes[i] >> 2];\n base64 += chars[((bytes[i] & 3) << 4) | (bytes[i + 1] >> 4)];\n base64 += chars[((bytes[i + 1] & 15) << 2) | (bytes[i + 2] >> 6)];\n base64 += chars[bytes[i + 2] & 63];\n }\n if (len % 3 === 2) {\n base64 = base64.substring(0, base64.length - 1) + '=';\n }\n else if (len % 3 === 1) {\n base64 = base64.substring(0, base64.length - 2) + '==';\n }\n return base64;\n};\nvar decode = function (base64) {\n var bufferLength = base64.length * 0.75, len = base64.length, i, p = 0, encoded1, encoded2, encoded3, encoded4;\n if (base64[base64.length - 1] === '=') {\n bufferLength--;\n if (base64[base64.length - 2] === '=') {\n bufferLength--;\n }\n }\n var arraybuffer = new ArrayBuffer(bufferLength), bytes = new Uint8Array(arraybuffer);\n for (i = 0; i < len; i += 4) {\n encoded1 = lookup[base64.charCodeAt(i)];\n encoded2 = lookup[base64.charCodeAt(i + 1)];\n encoded3 = lookup[base64.charCodeAt(i + 2)];\n encoded4 = lookup[base64.charCodeAt(i + 3)];\n bytes[p++] = (encoded1 << 2) | (encoded2 >> 4);\n bytes[p++] = ((encoded2 & 15) << 4) | (encoded3 >> 2);\n bytes[p++] = ((encoded3 & 3) << 6) | (encoded4 & 63);\n }\n return arraybuffer;\n};\n\nexport { decode, encode };\n//# sourceMappingURL=base64-arraybuffer.es5.js.map\n","import { ERROR_PACKET, PACKET_TYPES_REVERSE } from \"./commons.js\";\nimport { decode } from \"@socket.io/base64-arraybuffer\";\nconst withNativeArrayBuffer = typeof ArrayBuffer === \"function\";\nconst decodePacket = (encodedPacket, binaryType) => {\n if (typeof encodedPacket !== \"string\") {\n return {\n type: \"message\",\n data: mapBinary(encodedPacket, binaryType)\n };\n }\n const type = encodedPacket.charAt(0);\n if (type === \"b\") {\n return {\n type: \"message\",\n data: decodeBase64Packet(encodedPacket.substring(1), binaryType)\n };\n }\n const packetType = PACKET_TYPES_REVERSE[type];\n if (!packetType) {\n return ERROR_PACKET;\n }\n return encodedPacket.length > 1\n ? {\n type: PACKET_TYPES_REVERSE[type],\n data: encodedPacket.substring(1)\n }\n : {\n type: PACKET_TYPES_REVERSE[type]\n };\n};\nconst decodeBase64Packet = (data, binaryType) => {\n if (withNativeArrayBuffer) {\n const decoded = decode(data);\n return mapBinary(decoded, binaryType);\n }\n else {\n return { base64: true, data }; // fallback for old browsers\n }\n};\nconst mapBinary = (data, binaryType) => {\n switch (binaryType) {\n case \"blob\":\n return data instanceof ArrayBuffer ? new Blob([data]) : data;\n case \"arraybuffer\":\n default:\n return data; // assuming the data is already an ArrayBuffer\n }\n};\nexport default decodePacket;\n","import encodePacket from \"./encodePacket.js\";\nimport decodePacket from \"./decodePacket.js\";\nconst SEPARATOR = String.fromCharCode(30); // see https://en.wikipedia.org/wiki/Delimiter#ASCII_delimited_text\nconst encodePayload = (packets, callback) => {\n // some packets may be added to the array while encoding, so the initial length must be saved\n const length = packets.length;\n const encodedPackets = new Array(length);\n let count = 0;\n packets.forEach((packet, i) => {\n // force base64 encoding for binary packets\n encodePacket(packet, false, encodedPacket => {\n encodedPackets[i] = encodedPacket;\n if (++count === length) {\n callback(encodedPackets.join(SEPARATOR));\n }\n });\n });\n};\nconst decodePayload = (encodedPayload, binaryType) => {\n const encodedPackets = encodedPayload.split(SEPARATOR);\n const packets = [];\n for (let i = 0; i < encodedPackets.length; i++) {\n const decodedPacket = decodePacket(encodedPackets[i], binaryType);\n packets.push(decodedPacket);\n if (decodedPacket.type === \"error\") {\n break;\n }\n }\n return packets;\n};\nexport const protocol = 4;\nexport { encodePacket, encodePayload, decodePacket, decodePayload };\n","/**\n * Initialize a new `Emitter`.\n *\n * @api public\n */\n\nexport function Emitter(obj) {\n if (obj) return mixin(obj);\n}\n\n/**\n * Mixin the emitter properties.\n *\n * @param {Object} obj\n * @return {Object}\n * @api private\n */\n\nfunction mixin(obj) {\n for (var key in Emitter.prototype) {\n obj[key] = Emitter.prototype[key];\n }\n return obj;\n}\n\n/**\n * Listen on the given `event` with `fn`.\n *\n * @param {String} event\n * @param {Function} fn\n * @return {Emitter}\n * @api public\n */\n\nEmitter.prototype.on =\nEmitter.prototype.addEventListener = function(event, fn){\n this._callbacks = this._callbacks || {};\n (this._callbacks['$' + event] = this._callbacks['$' + event] || [])\n .push(fn);\n return this;\n};\n\n/**\n * Adds an `event` listener that will be invoked a single\n * time then automatically removed.\n *\n * @param {String} event\n * @param {Function} fn\n * @return {Emitter}\n * @api public\n */\n\nEmitter.prototype.once = function(event, fn){\n function on() {\n this.off(event, on);\n fn.apply(this, arguments);\n }\n\n on.fn = fn;\n this.on(event, on);\n return this;\n};\n\n/**\n * Remove the given callback for `event` or all\n * registered callbacks.\n *\n * @param {String} event\n * @param {Function} fn\n * @return {Emitter}\n * @api public\n */\n\nEmitter.prototype.off =\nEmitter.prototype.removeListener =\nEmitter.prototype.removeAllListeners =\nEmitter.prototype.removeEventListener = function(event, fn){\n this._callbacks = this._callbacks || {};\n\n // all\n if (0 == arguments.length) {\n this._callbacks = {};\n return this;\n }\n\n // specific event\n var callbacks = this._callbacks['$' + event];\n if (!callbacks) return this;\n\n // remove all handlers\n if (1 == arguments.length) {\n delete this._callbacks['$' + event];\n return this;\n }\n\n // remove specific handler\n var cb;\n for (var i = 0; i < callbacks.length; i++) {\n cb = callbacks[i];\n if (cb === fn || cb.fn === fn) {\n callbacks.splice(i, 1);\n break;\n }\n }\n\n // Remove event specific arrays for event types that no\n // one is subscribed for to avoid memory leak.\n if (callbacks.length === 0) {\n delete this._callbacks['$' + event];\n }\n\n return this;\n};\n\n/**\n * Emit `event` with the given args.\n *\n * @param {String} event\n * @param {Mixed} ...\n * @return {Emitter}\n */\n\nEmitter.prototype.emit = function(event){\n this._callbacks = this._callbacks || {};\n\n var args = new Array(arguments.length - 1)\n , callbacks = this._callbacks['$' + event];\n\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n\n if (callbacks) {\n callbacks = callbacks.slice(0);\n for (var i = 0, len = callbacks.length; i < len; ++i) {\n callbacks[i].apply(this, args);\n }\n }\n\n return this;\n};\n\n// alias used for reserved events (protected method)\nEmitter.prototype.emitReserved = Emitter.prototype.emit;\n\n/**\n * Return array of callbacks for `event`.\n *\n * @param {String} event\n * @return {Array}\n * @api public\n */\n\nEmitter.prototype.listeners = function(event){\n this._callbacks = this._callbacks || {};\n return this._callbacks['$' + event] || [];\n};\n\n/**\n * Check if this emitter has `event` handlers.\n *\n * @param {String} event\n * @return {Boolean}\n * @api public\n */\n\nEmitter.prototype.hasListeners = function(event){\n return !! this.listeners(event).length;\n};\n","export const globalThisShim = (() => {\n if (typeof self !== \"undefined\") {\n return self;\n }\n else if (typeof window !== \"undefined\") {\n return window;\n }\n else {\n return Function(\"return this\")();\n }\n})();\n","import { globalThisShim as globalThis } from \"./globalThis.js\";\nexport function pick(obj, ...attr) {\n return attr.reduce((acc, k) => {\n if (obj.hasOwnProperty(k)) {\n acc[k] = obj[k];\n }\n return acc;\n }, {});\n}\n// Keep a reference to the real timeout functions so they can be used when overridden\nconst NATIVE_SET_TIMEOUT = globalThis.setTimeout;\nconst NATIVE_CLEAR_TIMEOUT = globalThis.clearTimeout;\nexport function installTimerFunctions(obj, opts) {\n if (opts.useNativeTimers) {\n obj.setTimeoutFn = NATIVE_SET_TIMEOUT.bind(globalThis);\n obj.clearTimeoutFn = NATIVE_CLEAR_TIMEOUT.bind(globalThis);\n }\n else {\n obj.setTimeoutFn = globalThis.setTimeout.bind(globalThis);\n obj.clearTimeoutFn = globalThis.clearTimeout.bind(globalThis);\n }\n}\n// base64 encoded buffers are about 33% bigger (https://en.wikipedia.org/wiki/Base64)\nconst BASE64_OVERHEAD = 1.33;\n// we could also have used `new Blob([obj]).size`, but it isn't supported in IE9\nexport function byteLength(obj) {\n if (typeof obj === \"string\") {\n return utf8Length(obj);\n }\n // arraybuffer or blob\n return Math.ceil((obj.byteLength || obj.size) * BASE64_OVERHEAD);\n}\nfunction utf8Length(str) {\n let c = 0, length = 0;\n for (let i = 0, l = str.length; i < l; i++) {\n c = str.charCodeAt(i);\n if (c < 0x80) {\n length += 1;\n }\n else if (c < 0x800) {\n length += 2;\n }\n else if (c < 0xd800 || c >= 0xe000) {\n length += 3;\n }\n else {\n i++;\n length += 4;\n }\n }\n return length;\n}\n","import { decodePacket } from \"engine.io-parser\";\nimport { Emitter } from \"@socket.io/component-emitter\";\nimport { installTimerFunctions } from \"./util.js\";\nclass TransportError extends Error {\n constructor(reason, description, context) {\n super(reason);\n this.description = description;\n this.context = context;\n this.type = \"TransportError\";\n }\n}\nexport class Transport extends Emitter {\n /**\n * Transport abstract constructor.\n *\n * @param {Object} opts - options\n * @protected\n */\n constructor(opts) {\n super();\n this.writable = false;\n installTimerFunctions(this, opts);\n this.opts = opts;\n this.query = opts.query;\n this.socket = opts.socket;\n }\n /**\n * Emits an error.\n *\n * @param {String} reason\n * @param description\n * @param context - the error context\n * @return {Transport} for chaining\n * @protected\n */\n onError(reason, description, context) {\n super.emitReserved(\"error\", new TransportError(reason, description, context));\n return this;\n }\n /**\n * Opens the transport.\n */\n open() {\n this.readyState = \"opening\";\n this.doOpen();\n return this;\n }\n /**\n * Closes the transport.\n */\n close() {\n if (this.readyState === \"opening\" || this.readyState === \"open\") {\n this.doClose();\n this.onClose();\n }\n return this;\n }\n /**\n * Sends multiple packets.\n *\n * @param {Array} packets\n */\n send(packets) {\n if (this.readyState === \"open\") {\n this.write(packets);\n }\n else {\n // this might happen if the transport was silently closed in the beforeunload event handler\n }\n }\n /**\n * Called upon open\n *\n * @protected\n */\n onOpen() {\n this.readyState = \"open\";\n this.writable = true;\n super.emitReserved(\"open\");\n }\n /**\n * Called with data.\n *\n * @param {String} data\n * @protected\n */\n onData(data) {\n const packet = decodePacket(data, this.socket.binaryType);\n this.onPacket(packet);\n }\n /**\n * Called with a decoded packet.\n *\n * @protected\n */\n onPacket(packet) {\n super.emitReserved(\"packet\", packet);\n }\n /**\n * Called upon close.\n *\n * @protected\n */\n onClose(details) {\n this.readyState = \"closed\";\n super.emitReserved(\"close\", details);\n }\n /**\n * Pauses the transport, in order not to lose packets during an upgrade.\n *\n * @param onPause\n */\n pause(onPause) { }\n}\n","// imported from https://github.com/unshiftio/yeast\n'use strict';\nconst alphabet = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-_'.split(''), length = 64, map = {};\nlet seed = 0, i = 0, prev;\n/**\n * Return a string representing the specified number.\n *\n * @param {Number} num The number to convert.\n * @returns {String} The string representation of the number.\n * @api public\n */\nexport function encode(num) {\n let encoded = '';\n do {\n encoded = alphabet[num % length] + encoded;\n num = Math.floor(num / length);\n } while (num > 0);\n return encoded;\n}\n/**\n * Return the integer value specified by the given string.\n *\n * @param {String} str The string to convert.\n * @returns {Number} The integer value represented by the string.\n * @api public\n */\nexport function decode(str) {\n let decoded = 0;\n for (i = 0; i < str.length; i++) {\n decoded = decoded * length + map[str.charAt(i)];\n }\n return decoded;\n}\n/**\n * Yeast: A tiny growing id generator.\n *\n * @returns {String} A unique id.\n * @api public\n */\nexport function yeast() {\n const now = encode(+new Date());\n if (now !== prev)\n return seed = 0, prev = now;\n return now + '.' + encode(seed++);\n}\n//\n// Map each character to its index.\n//\nfor (; i < length; i++)\n map[alphabet[i]] = i;\n","// imported from https://github.com/galkn/querystring\n/**\n * Compiles a querystring\n * Returns string representation of the object\n *\n * @param {Object}\n * @api private\n */\nexport function encode(obj) {\n let str = '';\n for (let i in obj) {\n if (obj.hasOwnProperty(i)) {\n if (str.length)\n str += '&';\n str += encodeURIComponent(i) + '=' + encodeURIComponent(obj[i]);\n }\n }\n return str;\n}\n/**\n * Parses a simple querystring into an object\n *\n * @param {String} qs\n * @api private\n */\nexport function decode(qs) {\n let qry = {};\n let pairs = qs.split('&');\n for (let i = 0, l = pairs.length; i < l; i++) {\n let pair = pairs[i].split('=');\n qry[decodeURIComponent(pair[0])] = decodeURIComponent(pair[1]);\n }\n return qry;\n}\n","// imported from https://github.com/component/has-cors\nlet value = false;\ntry {\n value = typeof XMLHttpRequest !== 'undefined' &&\n 'withCredentials' in new XMLHttpRequest();\n}\ncatch (err) {\n // if XMLHttp support is disabled in IE then it will throw\n // when trying to create\n}\nexport const hasCORS = value;\n","// browser shim for xmlhttprequest module\nimport { hasCORS } from \"../contrib/has-cors.js\";\nimport { globalThisShim as globalThis } from \"../globalThis.js\";\nexport function XHR(opts) {\n const xdomain = opts.xdomain;\n // XMLHttpRequest can be disabled on IE\n try {\n if (\"undefined\" !== typeof XMLHttpRequest && (!xdomain || hasCORS)) {\n return new XMLHttpRequest();\n }\n }\n catch (e) { }\n if (!xdomain) {\n try {\n return new globalThis[[\"Active\"].concat(\"Object\").join(\"X\")](\"Microsoft.XMLHTTP\");\n }\n catch (e) { }\n }\n}\n","import { Transport } from \"../transport.js\";\nimport { yeast } from \"../contrib/yeast.js\";\nimport { encode } from \"../contrib/parseqs.js\";\nimport { encodePayload, decodePayload } from \"engine.io-parser\";\nimport { XHR as XMLHttpRequest } from \"./xmlhttprequest.js\";\nimport { Emitter } from \"@socket.io/component-emitter\";\nimport { installTimerFunctions, pick } from \"../util.js\";\nimport { globalThisShim as globalThis } from \"../globalThis.js\";\nfunction empty() { }\nconst hasXHR2 = (function () {\n const xhr = new XMLHttpRequest({\n xdomain: false,\n });\n return null != xhr.responseType;\n})();\nexport class Polling extends Transport {\n /**\n * XHR Polling constructor.\n *\n * @param {Object} opts\n * @package\n */\n constructor(opts) {\n super(opts);\n this.polling = false;\n if (typeof location !== \"undefined\") {\n const isSSL = \"https:\" === location.protocol;\n let port = location.port;\n // some user agents have empty `location.port`\n if (!port) {\n port = isSSL ? \"443\" : \"80\";\n }\n this.xd =\n (typeof location !== \"undefined\" &&\n opts.hostname !== location.hostname) ||\n port !== opts.port;\n this.xs = opts.secure !== isSSL;\n }\n /**\n * XHR supports binary\n */\n const forceBase64 = opts && opts.forceBase64;\n this.supportsBinary = hasXHR2 && !forceBase64;\n }\n get name() {\n return \"polling\";\n }\n /**\n * Opens the socket (triggers polling). We write a PING message to determine\n * when the transport is open.\n *\n * @protected\n */\n doOpen() {\n this.poll();\n }\n /**\n * Pauses polling.\n *\n * @param {Function} onPause - callback upon buffers are flushed and transport is paused\n * @package\n */\n pause(onPause) {\n this.readyState = \"pausing\";\n const pause = () => {\n this.readyState = \"paused\";\n onPause();\n };\n if (this.polling || !this.writable) {\n let total = 0;\n if (this.polling) {\n total++;\n this.once(\"pollComplete\", function () {\n --total || pause();\n });\n }\n if (!this.writable) {\n total++;\n this.once(\"drain\", function () {\n --total || pause();\n });\n }\n }\n else {\n pause();\n }\n }\n /**\n * Starts polling cycle.\n *\n * @private\n */\n poll() {\n this.polling = true;\n this.doPoll();\n this.emitReserved(\"poll\");\n }\n /**\n * Overloads onData to detect payloads.\n *\n * @protected\n */\n onData(data) {\n const callback = (packet) => {\n // if its the first message we consider the transport open\n if (\"opening\" === this.readyState && packet.type === \"open\") {\n this.onOpen();\n }\n // if its a close packet, we close the ongoing requests\n if (\"close\" === packet.type) {\n this.onClose({ description: \"transport closed by the server\" });\n return false;\n }\n // otherwise bypass onData and handle the message\n this.onPacket(packet);\n };\n // decode payload\n decodePayload(data, this.socket.binaryType).forEach(callback);\n // if an event did not trigger closing\n if (\"closed\" !== this.readyState) {\n // if we got data we're not polling\n this.polling = false;\n this.emitReserved(\"pollComplete\");\n if (\"open\" === this.readyState) {\n this.poll();\n }\n else {\n }\n }\n }\n /**\n * For polling, send a close packet.\n *\n * @protected\n */\n doClose() {\n const close = () => {\n this.write([{ type: \"close\" }]);\n };\n if (\"open\" === this.readyState) {\n close();\n }\n else {\n // in case we're trying to close while\n // handshaking is in progress (GH-164)\n this.once(\"open\", close);\n }\n }\n /**\n * Writes a packets payload.\n *\n * @param {Array} packets - data packets\n * @protected\n */\n write(packets) {\n this.writable = false;\n encodePayload(packets, (data) => {\n this.doWrite(data, () => {\n this.writable = true;\n this.emitReserved(\"drain\");\n });\n });\n }\n /**\n * Generates uri for connection.\n *\n * @private\n */\n uri() {\n let query = this.query || {};\n const schema = this.opts.secure ? \"https\" : \"http\";\n let port = \"\";\n // cache busting is forced\n if (false !== this.opts.timestampRequests) {\n query[this.opts.timestampParam] = yeast();\n }\n if (!this.supportsBinary && !query.sid) {\n query.b64 = 1;\n }\n // avoid port if default for schema\n if (this.opts.port &&\n ((\"https\" === schema && Number(this.opts.port) !== 443) ||\n (\"http\" === schema && Number(this.opts.port) !== 80))) {\n port = \":\" + this.opts.port;\n }\n const encodedQuery = encode(query);\n const ipv6 = this.opts.hostname.indexOf(\":\") !== -1;\n return (schema +\n \"://\" +\n (ipv6 ? \"[\" + this.opts.hostname + \"]\" : this.opts.hostname) +\n port +\n this.opts.path +\n (encodedQuery.length ? \"?\" + encodedQuery : \"\"));\n }\n /**\n * Creates a request.\n *\n * @param {String} method\n * @private\n */\n request(opts = {}) {\n Object.assign(opts, { xd: this.xd, xs: this.xs }, this.opts);\n return new Request(this.uri(), opts);\n }\n /**\n * Sends data.\n *\n * @param {String} data to send.\n * @param {Function} called upon flush.\n * @private\n */\n doWrite(data, fn) {\n const req = this.request({\n method: \"POST\",\n data: data,\n });\n req.on(\"success\", fn);\n req.on(\"error\", (xhrStatus, context) => {\n this.onError(\"xhr post error\", xhrStatus, context);\n });\n }\n /**\n * Starts a poll cycle.\n *\n * @private\n */\n doPoll() {\n const req = this.request();\n req.on(\"data\", this.onData.bind(this));\n req.on(\"error\", (xhrStatus, context) => {\n this.onError(\"xhr poll error\", xhrStatus, context);\n });\n this.pollXhr = req;\n }\n}\nexport class Request extends Emitter {\n /**\n * Request constructor\n *\n * @param {Object} options\n * @package\n */\n constructor(uri, opts) {\n super();\n installTimerFunctions(this, opts);\n this.opts = opts;\n this.method = opts.method || \"GET\";\n this.uri = uri;\n this.async = false !== opts.async;\n this.data = undefined !== opts.data ? opts.data : null;\n this.create();\n }\n /**\n * Creates the XHR object and sends the request.\n *\n * @private\n */\n create() {\n const opts = pick(this.opts, \"agent\", \"pfx\", \"key\", \"passphrase\", \"cert\", \"ca\", \"ciphers\", \"rejectUnauthorized\", \"autoUnref\");\n opts.xdomain = !!this.opts.xd;\n opts.xscheme = !!this.opts.xs;\n const xhr = (this.xhr = new XMLHttpRequest(opts));\n try {\n xhr.open(this.method, this.uri, this.async);\n try {\n if (this.opts.extraHeaders) {\n xhr.setDisableHeaderCheck && xhr.setDisableHeaderCheck(true);\n for (let i in this.opts.extraHeaders) {\n if (this.opts.extraHeaders.hasOwnProperty(i)) {\n xhr.setRequestHeader(i, this.opts.extraHeaders[i]);\n }\n }\n }\n }\n catch (e) { }\n if (\"POST\" === this.method) {\n try {\n xhr.setRequestHeader(\"Content-type\", \"text/plain;charset=UTF-8\");\n }\n catch (e) { }\n }\n try {\n xhr.setRequestHeader(\"Accept\", \"*/*\");\n }\n catch (e) { }\n // ie6 check\n if (\"withCredentials\" in xhr) {\n xhr.withCredentials = this.opts.withCredentials;\n }\n if (this.opts.requestTimeout) {\n xhr.timeout = this.opts.requestTimeout;\n }\n xhr.onreadystatechange = () => {\n if (4 !== xhr.readyState)\n return;\n if (200 === xhr.status || 1223 === xhr.status) {\n this.onLoad();\n }\n else {\n // make sure the `error` event handler that's user-set\n // does not throw in the same tick and gets caught here\n this.setTimeoutFn(() => {\n this.onError(typeof xhr.status === \"number\" ? xhr.status : 0);\n }, 0);\n }\n };\n xhr.send(this.data);\n }\n catch (e) {\n // Need to defer since .create() is called directly from the constructor\n // and thus the 'error' event can only be only bound *after* this exception\n // occurs. Therefore, also, we cannot throw here at all.\n this.setTimeoutFn(() => {\n this.onError(e);\n }, 0);\n return;\n }\n if (typeof document !== \"undefined\") {\n this.index = Request.requestsCount++;\n Request.requests[this.index] = this;\n }\n }\n /**\n * Called upon error.\n *\n * @private\n */\n onError(err) {\n this.emitReserved(\"error\", err, this.xhr);\n this.cleanup(true);\n }\n /**\n * Cleans up house.\n *\n * @private\n */\n cleanup(fromError) {\n if (\"undefined\" === typeof this.xhr || null === this.xhr) {\n return;\n }\n this.xhr.onreadystatechange = empty;\n if (fromError) {\n try {\n this.xhr.abort();\n }\n catch (e) { }\n }\n if (typeof document !== \"undefined\") {\n delete Request.requests[this.index];\n }\n this.xhr = null;\n }\n /**\n * Called upon load.\n *\n * @private\n */\n onLoad() {\n const data = this.xhr.responseText;\n if (data !== null) {\n this.emitReserved(\"data\", data);\n this.emitReserved(\"success\");\n this.cleanup();\n }\n }\n /**\n * Aborts the request.\n *\n * @package\n */\n abort() {\n this.cleanup();\n }\n}\nRequest.requestsCount = 0;\nRequest.requests = {};\n/**\n * Aborts pending requests when unloading the window. This is needed to prevent\n * memory leaks (e.g. when using IE) and to ensure that no spurious error is\n * emitted.\n */\nif (typeof document !== \"undefined\") {\n // @ts-ignore\n if (typeof attachEvent === \"function\") {\n // @ts-ignore\n attachEvent(\"onunload\", unloadHandler);\n }\n else if (typeof addEventListener === \"function\") {\n const terminationEvent = \"onpagehide\" in globalThis ? \"pagehide\" : \"unload\";\n addEventListener(terminationEvent, unloadHandler, false);\n }\n}\nfunction unloadHandler() {\n for (let i in Request.requests) {\n if (Request.requests.hasOwnProperty(i)) {\n Request.requests[i].abort();\n }\n }\n}\n","import { globalThisShim as globalThis } from \"../globalThis.js\";\nexport const nextTick = (() => {\n const isPromiseAvailable = typeof Promise === \"function\" && typeof Promise.resolve === \"function\";\n if (isPromiseAvailable) {\n return (cb) => Promise.resolve().then(cb);\n }\n else {\n return (cb, setTimeoutFn) => setTimeoutFn(cb, 0);\n }\n})();\nexport const WebSocket = globalThis.WebSocket || globalThis.MozWebSocket;\nexport const usingBrowserWebSocket = true;\nexport const defaultBinaryType = \"arraybuffer\";\n","import { Transport } from \"../transport.js\";\nimport { encode } from \"../contrib/parseqs.js\";\nimport { yeast } from \"../contrib/yeast.js\";\nimport { pick } from \"../util.js\";\nimport { defaultBinaryType, nextTick, usingBrowserWebSocket, WebSocket, } from \"./websocket-constructor.js\";\nimport { encodePacket } from \"engine.io-parser\";\n// detect ReactNative environment\nconst isReactNative = typeof navigator !== \"undefined\" &&\n typeof navigator.product === \"string\" &&\n navigator.product.toLowerCase() === \"reactnative\";\nexport class WS extends Transport {\n /**\n * WebSocket transport constructor.\n *\n * @param {Object} opts - connection options\n * @protected\n */\n constructor(opts) {\n super(opts);\n this.supportsBinary = !opts.forceBase64;\n }\n get name() {\n return \"websocket\";\n }\n doOpen() {\n if (!this.check()) {\n // let probe timeout\n return;\n }\n const uri = this.uri();\n const protocols = this.opts.protocols;\n // React Native only supports the 'headers' option, and will print a warning if anything else is passed\n const opts = isReactNative\n ? {}\n : pick(this.opts, \"agent\", \"perMessageDeflate\", \"pfx\", \"key\", \"passphrase\", \"cert\", \"ca\", \"ciphers\", \"rejectUnauthorized\", \"localAddress\", \"protocolVersion\", \"origin\", \"maxPayload\", \"family\", \"checkServerIdentity\");\n if (this.opts.extraHeaders) {\n opts.headers = this.opts.extraHeaders;\n }\n try {\n this.ws =\n usingBrowserWebSocket && !isReactNative\n ? protocols\n ? new WebSocket(uri, protocols)\n : new WebSocket(uri)\n : new WebSocket(uri, protocols, opts);\n }\n catch (err) {\n return this.emitReserved(\"error\", err);\n }\n this.ws.binaryType = this.socket.binaryType || defaultBinaryType;\n this.addEventListeners();\n }\n /**\n * Adds event listeners to the socket\n *\n * @private\n */\n addEventListeners() {\n this.ws.onopen = () => {\n if (this.opts.autoUnref) {\n this.ws._socket.unref();\n }\n this.onOpen();\n };\n this.ws.onclose = (closeEvent) => this.onClose({\n description: \"websocket connection closed\",\n context: closeEvent,\n });\n this.ws.onmessage = (ev) => this.onData(ev.data);\n this.ws.onerror = (e) => this.onError(\"websocket error\", e);\n }\n write(packets) {\n this.writable = false;\n // encodePacket efficient as it uses WS framing\n // no need for encodePayload\n for (let i = 0; i < packets.length; i++) {\n const packet = packets[i];\n const lastPacket = i === packets.length - 1;\n encodePacket(packet, this.supportsBinary, (data) => {\n // always create a new object (GH-437)\n const opts = {};\n if (!usingBrowserWebSocket) {\n if (packet.options) {\n opts.compress = packet.options.compress;\n }\n if (this.opts.perMessageDeflate) {\n const len = \n // @ts-ignore\n \"string\" === typeof data ? Buffer.byteLength(data) : data.length;\n if (len < this.opts.perMessageDeflate.threshold) {\n opts.compress = false;\n }\n }\n }\n // Sometimes the websocket has already been closed but the browser didn't\n // have a chance of informing us about it yet, in that case send will\n // throw an error\n try {\n if (usingBrowserWebSocket) {\n // TypeError is thrown when passing the second argument on Safari\n this.ws.send(data);\n }\n else {\n this.ws.send(data, opts);\n }\n }\n catch (e) {\n }\n if (lastPacket) {\n // fake drain\n // defer to next tick to allow Socket to clear writeBuffer\n nextTick(() => {\n this.writable = true;\n this.emitReserved(\"drain\");\n }, this.setTimeoutFn);\n }\n });\n }\n }\n doClose() {\n if (typeof this.ws !== \"undefined\") {\n this.ws.close();\n this.ws = null;\n }\n }\n /**\n * Generates uri for connection.\n *\n * @private\n */\n uri() {\n let query = this.query || {};\n const schema = this.opts.secure ? \"wss\" : \"ws\";\n let port = \"\";\n // avoid port if default for schema\n if (this.opts.port &&\n ((\"wss\" === schema && Number(this.opts.port) !== 443) ||\n (\"ws\" === schema && Number(this.opts.port) !== 80))) {\n port = \":\" + this.opts.port;\n }\n // append timestamp to URI\n if (this.opts.timestampRequests) {\n query[this.opts.timestampParam] = yeast();\n }\n // communicate binary support capabilities\n if (!this.supportsBinary) {\n query.b64 = 1;\n }\n const encodedQuery = encode(query);\n const ipv6 = this.opts.hostname.indexOf(\":\") !== -1;\n return (schema +\n \"://\" +\n (ipv6 ? \"[\" + this.opts.hostname + \"]\" : this.opts.hostname) +\n port +\n this.opts.path +\n (encodedQuery.length ? \"?\" + encodedQuery : \"\"));\n }\n /**\n * Feature detection for WebSocket.\n *\n * @return {Boolean} whether this transport is available.\n * @private\n */\n check() {\n return !!WebSocket;\n }\n}\n","import { Polling } from \"./polling.js\";\nimport { WS } from \"./websocket.js\";\nexport const transports = {\n websocket: WS,\n polling: Polling,\n};\n","// imported from https://github.com/galkn/parseuri\n/**\n * Parses a URI\n *\n * Note: we could also have used the built-in URL object, but it isn't supported on all platforms.\n *\n * See:\n * - https://developer.mozilla.org/en-US/docs/Web/API/URL\n * - https://caniuse.com/url\n * - https://www.rfc-editor.org/rfc/rfc3986#appendix-B\n *\n * History of the parse() method:\n * - first commit: https://github.com/socketio/socket.io-client/commit/4ee1d5d94b3906a9c052b459f1a818b15f38f91c\n * - export into its own module: https://github.com/socketio/engine.io-client/commit/de2c561e4564efeb78f1bdb1ba39ef81b2822cb3\n * - reimport: https://github.com/socketio/engine.io-client/commit/df32277c3f6d622eec5ed09f493cae3f3391d242\n *\n * @author Steven Levithan (MIT license)\n * @api private\n */\nconst re = /^(?:(?![^:@\\/?#]+:[^:@\\/]*@)(http|https|ws|wss):\\/\\/)?((?:(([^:@\\/?#]*)(?::([^:@\\/?#]*))?)?@)?((?:[a-f0-9]{0,4}:){2,7}[a-f0-9]{0,4}|[^:\\/?#]*)(?::(\\d*))?)(((\\/(?:[^?#](?![^?#\\/]*\\.[^?#\\/.]+(?:[?#]|$)))*\\/?)?([^?#\\/]*))(?:\\?([^#]*))?(?:#(.*))?)/;\nconst parts = [\n 'source', 'protocol', 'authority', 'userInfo', 'user', 'password', 'host', 'port', 'relative', 'path', 'directory', 'file', 'query', 'anchor'\n];\nexport function parse(str) {\n const src = str, b = str.indexOf('['), e = str.indexOf(']');\n if (b != -1 && e != -1) {\n str = str.substring(0, b) + str.substring(b, e).replace(/:/g, ';') + str.substring(e, str.length);\n }\n let m = re.exec(str || ''), uri = {}, i = 14;\n while (i--) {\n uri[parts[i]] = m[i] || '';\n }\n if (b != -1 && e != -1) {\n uri.source = src;\n uri.host = uri.host.substring(1, uri.host.length - 1).replace(/;/g, ':');\n uri.authority = uri.authority.replace('[', '').replace(']', '').replace(/;/g, ':');\n uri.ipv6uri = true;\n }\n uri.pathNames = pathNames(uri, uri['path']);\n uri.queryKey = queryKey(uri, uri['query']);\n return uri;\n}\nfunction pathNames(obj, path) {\n const regx = /\\/{2,9}/g, names = path.replace(regx, \"/\").split(\"/\");\n if (path.slice(0, 1) == '/' || path.length === 0) {\n names.splice(0, 1);\n }\n if (path.slice(-1) == '/') {\n names.splice(names.length - 1, 1);\n }\n return names;\n}\nfunction queryKey(uri, query) {\n const data = {};\n query.replace(/(?:^|&)([^&=]*)=?([^&]*)/g, function ($0, $1, $2) {\n if ($1) {\n data[$1] = $2;\n }\n });\n return data;\n}\n","import { transports } from \"./transports/index.js\";\nimport { installTimerFunctions, byteLength } from \"./util.js\";\nimport { decode } from \"./contrib/parseqs.js\";\nimport { parse } from \"./contrib/parseuri.js\";\nimport { Emitter } from \"@socket.io/component-emitter\";\nimport { protocol, } from \"engine.io-parser\";\nexport class Socket extends Emitter {\n /**\n * Socket constructor.\n *\n * @param {String|Object} uri - uri or options\n * @param {Object} opts - options\n */\n constructor(uri, opts = {}) {\n super();\n this.writeBuffer = [];\n if (uri && \"object\" === typeof uri) {\n opts = uri;\n uri = null;\n }\n if (uri) {\n uri = parse(uri);\n opts.hostname = uri.host;\n opts.secure = uri.protocol === \"https\" || uri.protocol === \"wss\";\n opts.port = uri.port;\n if (uri.query)\n opts.query = uri.query;\n }\n else if (opts.host) {\n opts.hostname = parse(opts.host).host;\n }\n installTimerFunctions(this, opts);\n this.secure =\n null != opts.secure\n ? opts.secure\n : typeof location !== \"undefined\" && \"https:\" === location.protocol;\n if (opts.hostname && !opts.port) {\n // if no port is specified manually, use the protocol default\n opts.port = this.secure ? \"443\" : \"80\";\n }\n this.hostname =\n opts.hostname ||\n (typeof location !== \"undefined\" ? location.hostname : \"localhost\");\n this.port =\n opts.port ||\n (typeof location !== \"undefined\" && location.port\n ? location.port\n : this.secure\n ? \"443\"\n : \"80\");\n this.transports = opts.transports || [\"polling\", \"websocket\"];\n this.writeBuffer = [];\n this.prevBufferLen = 0;\n this.opts = Object.assign({\n path: \"/engine.io\",\n agent: false,\n withCredentials: false,\n upgrade: true,\n timestampParam: \"t\",\n rememberUpgrade: false,\n addTrailingSlash: true,\n rejectUnauthorized: true,\n perMessageDeflate: {\n threshold: 1024,\n },\n transportOptions: {},\n closeOnBeforeunload: true,\n }, opts);\n this.opts.path =\n this.opts.path.replace(/\\/$/, \"\") +\n (this.opts.addTrailingSlash ? \"/\" : \"\");\n if (typeof this.opts.query === \"string\") {\n this.opts.query = decode(this.opts.query);\n }\n // set on handshake\n this.id = null;\n this.upgrades = null;\n this.pingInterval = null;\n this.pingTimeout = null;\n // set on heartbeat\n this.pingTimeoutTimer = null;\n if (typeof addEventListener === \"function\") {\n if (this.opts.closeOnBeforeunload) {\n // Firefox closes the connection when the \"beforeunload\" event is emitted but not Chrome. This event listener\n // ensures every browser behaves the same (no \"disconnect\" event at the Socket.IO level when the page is\n // closed/reloaded)\n this.beforeunloadEventListener = () => {\n if (this.transport) {\n // silently close the transport\n this.transport.removeAllListeners();\n this.transport.close();\n }\n };\n addEventListener(\"beforeunload\", this.beforeunloadEventListener, false);\n }\n if (this.hostname !== \"localhost\") {\n this.offlineEventListener = () => {\n this.onClose(\"transport close\", {\n description: \"network connection lost\",\n });\n };\n addEventListener(\"offline\", this.offlineEventListener, false);\n }\n }\n this.open();\n }\n /**\n * Creates transport of the given type.\n *\n * @param {String} name - transport name\n * @return {Transport}\n * @private\n */\n createTransport(name) {\n const query = Object.assign({}, this.opts.query);\n // append engine.io protocol identifier\n query.EIO = protocol;\n // transport name\n query.transport = name;\n // session id if we already have one\n if (this.id)\n query.sid = this.id;\n const opts = Object.assign({}, this.opts.transportOptions[name], this.opts, {\n query,\n socket: this,\n hostname: this.hostname,\n secure: this.secure,\n port: this.port,\n });\n return new transports[name](opts);\n }\n /**\n * Initializes transport to use and starts probe.\n *\n * @private\n */\n open() {\n let transport;\n if (this.opts.rememberUpgrade &&\n Socket.priorWebsocketSuccess &&\n this.transports.indexOf(\"websocket\") !== -1) {\n transport = \"websocket\";\n }\n else if (0 === this.transports.length) {\n // Emit error on next tick so it can be listened to\n this.setTimeoutFn(() => {\n this.emitReserved(\"error\", \"No transports available\");\n }, 0);\n return;\n }\n else {\n transport = this.transports[0];\n }\n this.readyState = \"opening\";\n // Retry with the next transport if the transport is disabled (jsonp: false)\n try {\n transport = this.createTransport(transport);\n }\n catch (e) {\n this.transports.shift();\n this.open();\n return;\n }\n transport.open();\n this.setTransport(transport);\n }\n /**\n * Sets the current transport. Disables the existing one (if any).\n *\n * @private\n */\n setTransport(transport) {\n if (this.transport) {\n this.transport.removeAllListeners();\n }\n // set up transport\n this.transport = transport;\n // set up transport listeners\n transport\n .on(\"drain\", this.onDrain.bind(this))\n .on(\"packet\", this.onPacket.bind(this))\n .on(\"error\", this.onError.bind(this))\n .on(\"close\", (reason) => this.onClose(\"transport close\", reason));\n }\n /**\n * Probes a transport.\n *\n * @param {String} name - transport name\n * @private\n */\n probe(name) {\n let transport = this.createTransport(name);\n let failed = false;\n Socket.priorWebsocketSuccess = false;\n const onTransportOpen = () => {\n if (failed)\n return;\n transport.send([{ type: \"ping\", data: \"probe\" }]);\n transport.once(\"packet\", (msg) => {\n if (failed)\n return;\n if (\"pong\" === msg.type && \"probe\" === msg.data) {\n this.upgrading = true;\n this.emitReserved(\"upgrading\", transport);\n if (!transport)\n return;\n Socket.priorWebsocketSuccess = \"websocket\" === transport.name;\n this.transport.pause(() => {\n if (failed)\n return;\n if (\"closed\" === this.readyState)\n return;\n cleanup();\n this.setTransport(transport);\n transport.send([{ type: \"upgrade\" }]);\n this.emitReserved(\"upgrade\", transport);\n transport = null;\n this.upgrading = false;\n this.flush();\n });\n }\n else {\n const err = new Error(\"probe error\");\n // @ts-ignore\n err.transport = transport.name;\n this.emitReserved(\"upgradeError\", err);\n }\n });\n };\n function freezeTransport() {\n if (failed)\n return;\n // Any callback called by transport should be ignored since now\n failed = true;\n cleanup();\n transport.close();\n transport = null;\n }\n // Handle any error that happens while probing\n const onerror = (err) => {\n const error = new Error(\"probe error: \" + err);\n // @ts-ignore\n error.transport = transport.name;\n freezeTransport();\n this.emitReserved(\"upgradeError\", error);\n };\n function onTransportClose() {\n onerror(\"transport closed\");\n }\n // When the socket is closed while we're probing\n function onclose() {\n onerror(\"socket closed\");\n }\n // When the socket is upgraded while we're probing\n function onupgrade(to) {\n if (transport && to.name !== transport.name) {\n freezeTransport();\n }\n }\n // Remove all listeners on the transport and on self\n const cleanup = () => {\n transport.removeListener(\"open\", onTransportOpen);\n transport.removeListener(\"error\", onerror);\n transport.removeListener(\"close\", onTransportClose);\n this.off(\"close\", onclose);\n this.off(\"upgrading\", onupgrade);\n };\n transport.once(\"open\", onTransportOpen);\n transport.once(\"error\", onerror);\n transport.once(\"close\", onTransportClose);\n this.once(\"close\", onclose);\n this.once(\"upgrading\", onupgrade);\n transport.open();\n }\n /**\n * Called when connection is deemed open.\n *\n * @private\n */\n onOpen() {\n this.readyState = \"open\";\n Socket.priorWebsocketSuccess = \"websocket\" === this.transport.name;\n this.emitReserved(\"open\");\n this.flush();\n // we check for `readyState` in case an `open`\n // listener already closed the socket\n if (\"open\" === this.readyState && this.opts.upgrade) {\n let i = 0;\n const l = this.upgrades.length;\n for (; i < l; i++) {\n this.probe(this.upgrades[i]);\n }\n }\n }\n /**\n * Handles a packet.\n *\n * @private\n */\n onPacket(packet) {\n if (\"opening\" === this.readyState ||\n \"open\" === this.readyState ||\n \"closing\" === this.readyState) {\n this.emitReserved(\"packet\", packet);\n // Socket is live - any packet counts\n this.emitReserved(\"heartbeat\");\n switch (packet.type) {\n case \"open\":\n this.onHandshake(JSON.parse(packet.data));\n break;\n case \"ping\":\n this.resetPingTimeout();\n this.sendPacket(\"pong\");\n this.emitReserved(\"ping\");\n this.emitReserved(\"pong\");\n break;\n case \"error\":\n const err = new Error(\"server error\");\n // @ts-ignore\n err.code = packet.data;\n this.onError(err);\n break;\n case \"message\":\n this.emitReserved(\"data\", packet.data);\n this.emitReserved(\"message\", packet.data);\n break;\n }\n }\n else {\n }\n }\n /**\n * Called upon handshake completion.\n *\n * @param {Object} data - handshake obj\n * @private\n */\n onHandshake(data) {\n this.emitReserved(\"handshake\", data);\n this.id = data.sid;\n this.transport.query.sid = data.sid;\n this.upgrades = this.filterUpgrades(data.upgrades);\n this.pingInterval = data.pingInterval;\n this.pingTimeout = data.pingTimeout;\n this.maxPayload = data.maxPayload;\n this.onOpen();\n // In case open handler closes socket\n if (\"closed\" === this.readyState)\n return;\n this.resetPingTimeout();\n }\n /**\n * Sets and resets ping timeout timer based on server pings.\n *\n * @private\n */\n resetPingTimeout() {\n this.clearTimeoutFn(this.pingTimeoutTimer);\n this.pingTimeoutTimer = this.setTimeoutFn(() => {\n this.onClose(\"ping timeout\");\n }, this.pingInterval + this.pingTimeout);\n if (this.opts.autoUnref) {\n this.pingTimeoutTimer.unref();\n }\n }\n /**\n * Called on `drain` event\n *\n * @private\n */\n onDrain() {\n this.writeBuffer.splice(0, this.prevBufferLen);\n // setting prevBufferLen = 0 is very important\n // for example, when upgrading, upgrade packet is sent over,\n // and a nonzero prevBufferLen could cause problems on `drain`\n this.prevBufferLen = 0;\n if (0 === this.writeBuffer.length) {\n this.emitReserved(\"drain\");\n }\n else {\n this.flush();\n }\n }\n /**\n * Flush write buffers.\n *\n * @private\n */\n flush() {\n if (\"closed\" !== this.readyState &&\n this.transport.writable &&\n !this.upgrading &&\n this.writeBuffer.length) {\n const packets = this.getWritablePackets();\n this.transport.send(packets);\n // keep track of current length of writeBuffer\n // splice writeBuffer and callbackBuffer on `drain`\n this.prevBufferLen = packets.length;\n this.emitReserved(\"flush\");\n }\n }\n /**\n * Ensure the encoded size of the writeBuffer is below the maxPayload value sent by the server (only for HTTP\n * long-polling)\n *\n * @private\n */\n getWritablePackets() {\n const shouldCheckPayloadSize = this.maxPayload &&\n this.transport.name === \"polling\" &&\n this.writeBuffer.length > 1;\n if (!shouldCheckPayloadSize) {\n return this.writeBuffer;\n }\n let payloadSize = 1; // first packet type\n for (let i = 0; i < this.writeBuffer.length; i++) {\n const data = this.writeBuffer[i].data;\n if (data) {\n payloadSize += byteLength(data);\n }\n if (i > 0 && payloadSize > this.maxPayload) {\n return this.writeBuffer.slice(0, i);\n }\n payloadSize += 2; // separator + packet type\n }\n return this.writeBuffer;\n }\n /**\n * Sends a message.\n *\n * @param {String} msg - message.\n * @param {Object} options.\n * @param {Function} callback function.\n * @return {Socket} for chaining.\n */\n write(msg, options, fn) {\n this.sendPacket(\"message\", msg, options, fn);\n return this;\n }\n send(msg, options, fn) {\n this.sendPacket(\"message\", msg, options, fn);\n return this;\n }\n /**\n * Sends a packet.\n *\n * @param {String} type: packet type.\n * @param {String} data.\n * @param {Object} options.\n * @param {Function} fn - callback function.\n * @private\n */\n sendPacket(type, data, options, fn) {\n if (\"function\" === typeof data) {\n fn = data;\n data = undefined;\n }\n if (\"function\" === typeof options) {\n fn = options;\n options = null;\n }\n if (\"closing\" === this.readyState || \"closed\" === this.readyState) {\n return;\n }\n options = options || {};\n options.compress = false !== options.compress;\n const packet = {\n type: type,\n data: data,\n options: options,\n };\n this.emitReserved(\"packetCreate\", packet);\n this.writeBuffer.push(packet);\n if (fn)\n this.once(\"flush\", fn);\n this.flush();\n }\n /**\n * Closes the connection.\n */\n close() {\n const close = () => {\n this.onClose(\"forced close\");\n this.transport.close();\n };\n const cleanupAndClose = () => {\n this.off(\"upgrade\", cleanupAndClose);\n this.off(\"upgradeError\", cleanupAndClose);\n close();\n };\n const waitForUpgrade = () => {\n // wait for upgrade to finish since we can't send packets while pausing a transport\n this.once(\"upgrade\", cleanupAndClose);\n this.once(\"upgradeError\", cleanupAndClose);\n };\n if (\"opening\" === this.readyState || \"open\" === this.readyState) {\n this.readyState = \"closing\";\n if (this.writeBuffer.length) {\n this.once(\"drain\", () => {\n if (this.upgrading) {\n waitForUpgrade();\n }\n else {\n close();\n }\n });\n }\n else if (this.upgrading) {\n waitForUpgrade();\n }\n else {\n close();\n }\n }\n return this;\n }\n /**\n * Called upon transport error\n *\n * @private\n */\n onError(err) {\n Socket.priorWebsocketSuccess = false;\n this.emitReserved(\"error\", err);\n this.onClose(\"transport error\", err);\n }\n /**\n * Called upon transport close.\n *\n * @private\n */\n onClose(reason, description) {\n if (\"opening\" === this.readyState ||\n \"open\" === this.readyState ||\n \"closing\" === this.readyState) {\n // clear timers\n this.clearTimeoutFn(this.pingTimeoutTimer);\n // stop event from firing again for transport\n this.transport.removeAllListeners(\"close\");\n // ensure transport won't stay open\n this.transport.close();\n // ignore further transport communication\n this.transport.removeAllListeners();\n if (typeof removeEventListener === \"function\") {\n removeEventListener(\"beforeunload\", this.beforeunloadEventListener, false);\n removeEventListener(\"offline\", this.offlineEventListener, false);\n }\n // set ready state\n this.readyState = \"closed\";\n // clear session id\n this.id = null;\n // emit close event\n this.emitReserved(\"close\", reason, description);\n // clean buffers after, so users can still\n // grab the buffers on `close` event\n this.writeBuffer = [];\n this.prevBufferLen = 0;\n }\n }\n /**\n * Filters upgrades, returning only those matching client transports.\n *\n * @param {Array} upgrades - server upgrades\n * @private\n */\n filterUpgrades(upgrades) {\n const filteredUpgrades = [];\n let i = 0;\n const j = upgrades.length;\n for (; i < j; i++) {\n if (~this.transports.indexOf(upgrades[i]))\n filteredUpgrades.push(upgrades[i]);\n }\n return filteredUpgrades;\n }\n}\nSocket.protocol = protocol;\n","import { Socket } from \"./socket.js\";\nexport default (uri, opts) => new Socket(uri, opts);\n"],"names":["PACKET_TYPES","Object","create","PACKET_TYPES_REVERSE","keys","forEach","key","ERROR_PACKET","type","data","withNativeBlob","Blob","prototype","toString","call","withNativeArrayBuffer","ArrayBuffer","isView","obj","buffer","encodePacket","supportsBinary","callback","encodeBlobAsBase64","fileReader","FileReader","onload","content","result","split","readAsDataURL","chars","lookup","Uint8Array","i","length","charCodeAt","decode","base64","bufferLength","len","p","encoded1","encoded2","encoded3","encoded4","arraybuffer","bytes","decodePacket","encodedPacket","binaryType","mapBinary","charAt","decodeBase64Packet","substring","packetType","decoded","SEPARATOR","String","fromCharCode","encodePayload","packets","encodedPackets","Array","count","packet","join","decodePayload","encodedPayload","decodedPacket","push","protocol","Emitter","mixin","on","addEventListener","event","fn","_callbacks","once","off","apply","arguments","removeListener","removeAllListeners","removeEventListener","callbacks","cb","splice","emit","args","slice","emitReserved","listeners","hasListeners","globalThisShim","self","window","Function","pick","attr","reduce","acc","k","hasOwnProperty","NATIVE_SET_TIMEOUT","globalThis","setTimeout","NATIVE_CLEAR_TIMEOUT","clearTimeout","installTimerFunctions","opts","useNativeTimers","setTimeoutFn","bind","clearTimeoutFn","BASE64_OVERHEAD","byteLength","utf8Length","Math","ceil","size","str","c","l","TransportError","reason","description","context","Error","Transport","writable","query","socket","readyState","doOpen","doClose","onClose","write","onPacket","details","onPause","alphabet","map","seed","prev","encode","num","encoded","floor","yeast","now","Date","encodeURIComponent","qs","qry","pairs","pair","decodeURIComponent","value","XMLHttpRequest","err","hasCORS","XHR","xdomain","e","concat","empty","hasXHR2","xhr","responseType","Polling","polling","location","isSSL","port","xd","hostname","xs","secure","forceBase64","poll","pause","total","doPoll","onOpen","close","doWrite","schema","timestampRequests","timestampParam","sid","b64","Number","encodedQuery","ipv6","indexOf","path","Request","uri","req","request","method","xhrStatus","onError","onData","pollXhr","async","undefined","xscheme","open","extraHeaders","setDisableHeaderCheck","setRequestHeader","withCredentials","requestTimeout","timeout","onreadystatechange","status","onLoad","send","document","index","requestsCount","requests","cleanup","fromError","abort","responseText","attachEvent","unloadHandler","terminationEvent","nextTick","isPromiseAvailable","Promise","resolve","then","WebSocket","MozWebSocket","usingBrowserWebSocket","defaultBinaryType","isReactNative","navigator","product","toLowerCase","WS","check","protocols","headers","ws","addEventListeners","onopen","autoUnref","_socket","unref","onclose","closeEvent","onmessage","ev","onerror","lastPacket","transports","websocket","re","parts","parse","src","b","replace","m","exec","source","host","authority","ipv6uri","pathNames","queryKey","regx","names","$0","$1","$2","Socket","writeBuffer","prevBufferLen","agent","upgrade","rememberUpgrade","addTrailingSlash","rejectUnauthorized","perMessageDeflate","threshold","transportOptions","closeOnBeforeunload","id","upgrades","pingInterval","pingTimeout","pingTimeoutTimer","beforeunloadEventListener","transport","offlineEventListener","name","EIO","priorWebsocketSuccess","createTransport","shift","setTransport","onDrain","failed","onTransportOpen","msg","upgrading","flush","freezeTransport","error","onTransportClose","onupgrade","to","probe","onHandshake","JSON","resetPingTimeout","sendPacket","code","filterUpgrades","maxPayload","getWritablePackets","shouldCheckPayloadSize","payloadSize","options","compress","cleanupAndClose","waitForUpgrade","filteredUpgrades","j"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"engine.io.js","sources":["../node_modules/engine.io-parser/build/esm/commons.js","../node_modules/engine.io-parser/build/esm/encodePacket.browser.js","../node_modules/@socket.io/base64-arraybuffer/dist/base64-arraybuffer.es5.js","../node_modules/engine.io-parser/build/esm/decodePacket.browser.js","../node_modules/engine.io-parser/build/esm/index.js","../node_modules/@socket.io/component-emitter/index.mjs","../build/esm/globalThis.browser.js","../build/esm/util.js","../build/esm/transport.js","../build/esm/contrib/yeast.js","../build/esm/contrib/parseqs.js","../build/esm/contrib/has-cors.js","../build/esm/transports/xmlhttprequest.browser.js","../build/esm/transports/polling.js","../build/esm/transports/websocket-constructor.browser.js","../build/esm/transports/websocket.js","../build/esm/transports/index.js","../build/esm/contrib/parseuri.js","../build/esm/socket.js","../build/esm/browser-entrypoint.js"],"sourcesContent":["const PACKET_TYPES = Object.create(null); // no Map = no polyfill\nPACKET_TYPES[\"open\"] = \"0\";\nPACKET_TYPES[\"close\"] = \"1\";\nPACKET_TYPES[\"ping\"] = \"2\";\nPACKET_TYPES[\"pong\"] = \"3\";\nPACKET_TYPES[\"message\"] = \"4\";\nPACKET_TYPES[\"upgrade\"] = \"5\";\nPACKET_TYPES[\"noop\"] = \"6\";\nconst PACKET_TYPES_REVERSE = Object.create(null);\nObject.keys(PACKET_TYPES).forEach(key => {\n PACKET_TYPES_REVERSE[PACKET_TYPES[key]] = key;\n});\nconst ERROR_PACKET = { type: \"error\", data: \"parser error\" };\nexport { PACKET_TYPES, PACKET_TYPES_REVERSE, ERROR_PACKET };\n","import { PACKET_TYPES } from \"./commons.js\";\nconst withNativeBlob = typeof Blob === \"function\" ||\n (typeof Blob !== \"undefined\" &&\n Object.prototype.toString.call(Blob) === \"[object BlobConstructor]\");\nconst withNativeArrayBuffer = typeof ArrayBuffer === \"function\";\n// ArrayBuffer.isView method is not defined in IE10\nconst isView = obj => {\n return typeof ArrayBuffer.isView === \"function\"\n ? ArrayBuffer.isView(obj)\n : obj && obj.buffer instanceof ArrayBuffer;\n};\nconst encodePacket = ({ type, data }, supportsBinary, callback) => {\n if (withNativeBlob && data instanceof Blob) {\n if (supportsBinary) {\n return callback(data);\n }\n else {\n return encodeBlobAsBase64(data, callback);\n }\n }\n else if (withNativeArrayBuffer &&\n (data instanceof ArrayBuffer || isView(data))) {\n if (supportsBinary) {\n return callback(data);\n }\n else {\n return encodeBlobAsBase64(new Blob([data]), callback);\n }\n }\n // plain string\n return callback(PACKET_TYPES[type] + (data || \"\"));\n};\nconst encodeBlobAsBase64 = (data, callback) => {\n const fileReader = new FileReader();\n fileReader.onload = function () {\n const content = fileReader.result.split(\",\")[1];\n callback(\"b\" + content);\n };\n return fileReader.readAsDataURL(data);\n};\nexport default encodePacket;\n","/*\n * base64-arraybuffer 1.0.1 \n * Copyright (c) 2022 Niklas von Hertzen \n * Released under MIT License\n */\nvar chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n// Use a lookup table to find the index.\nvar lookup = typeof Uint8Array === 'undefined' ? [] : new Uint8Array(256);\nfor (var i = 0; i < chars.length; i++) {\n lookup[chars.charCodeAt(i)] = i;\n}\nvar encode = function (arraybuffer) {\n var bytes = new Uint8Array(arraybuffer), i, len = bytes.length, base64 = '';\n for (i = 0; i < len; i += 3) {\n base64 += chars[bytes[i] >> 2];\n base64 += chars[((bytes[i] & 3) << 4) | (bytes[i + 1] >> 4)];\n base64 += chars[((bytes[i + 1] & 15) << 2) | (bytes[i + 2] >> 6)];\n base64 += chars[bytes[i + 2] & 63];\n }\n if (len % 3 === 2) {\n base64 = base64.substring(0, base64.length - 1) + '=';\n }\n else if (len % 3 === 1) {\n base64 = base64.substring(0, base64.length - 2) + '==';\n }\n return base64;\n};\nvar decode = function (base64) {\n var bufferLength = base64.length * 0.75, len = base64.length, i, p = 0, encoded1, encoded2, encoded3, encoded4;\n if (base64[base64.length - 1] === '=') {\n bufferLength--;\n if (base64[base64.length - 2] === '=') {\n bufferLength--;\n }\n }\n var arraybuffer = new ArrayBuffer(bufferLength), bytes = new Uint8Array(arraybuffer);\n for (i = 0; i < len; i += 4) {\n encoded1 = lookup[base64.charCodeAt(i)];\n encoded2 = lookup[base64.charCodeAt(i + 1)];\n encoded3 = lookup[base64.charCodeAt(i + 2)];\n encoded4 = lookup[base64.charCodeAt(i + 3)];\n bytes[p++] = (encoded1 << 2) | (encoded2 >> 4);\n bytes[p++] = ((encoded2 & 15) << 4) | (encoded3 >> 2);\n bytes[p++] = ((encoded3 & 3) << 6) | (encoded4 & 63);\n }\n return arraybuffer;\n};\n\nexport { decode, encode };\n//# sourceMappingURL=base64-arraybuffer.es5.js.map\n","import { ERROR_PACKET, PACKET_TYPES_REVERSE } from \"./commons.js\";\nimport { decode } from \"@socket.io/base64-arraybuffer\";\nconst withNativeArrayBuffer = typeof ArrayBuffer === \"function\";\nconst decodePacket = (encodedPacket, binaryType) => {\n if (typeof encodedPacket !== \"string\") {\n return {\n type: \"message\",\n data: mapBinary(encodedPacket, binaryType)\n };\n }\n const type = encodedPacket.charAt(0);\n if (type === \"b\") {\n return {\n type: \"message\",\n data: decodeBase64Packet(encodedPacket.substring(1), binaryType)\n };\n }\n const packetType = PACKET_TYPES_REVERSE[type];\n if (!packetType) {\n return ERROR_PACKET;\n }\n return encodedPacket.length > 1\n ? {\n type: PACKET_TYPES_REVERSE[type],\n data: encodedPacket.substring(1)\n }\n : {\n type: PACKET_TYPES_REVERSE[type]\n };\n};\nconst decodeBase64Packet = (data, binaryType) => {\n if (withNativeArrayBuffer) {\n const decoded = decode(data);\n return mapBinary(decoded, binaryType);\n }\n else {\n return { base64: true, data }; // fallback for old browsers\n }\n};\nconst mapBinary = (data, binaryType) => {\n switch (binaryType) {\n case \"blob\":\n return data instanceof ArrayBuffer ? new Blob([data]) : data;\n case \"arraybuffer\":\n default:\n return data; // assuming the data is already an ArrayBuffer\n }\n};\nexport default decodePacket;\n","import encodePacket from \"./encodePacket.js\";\nimport decodePacket from \"./decodePacket.js\";\nconst SEPARATOR = String.fromCharCode(30); // see https://en.wikipedia.org/wiki/Delimiter#ASCII_delimited_text\nconst encodePayload = (packets, callback) => {\n // some packets may be added to the array while encoding, so the initial length must be saved\n const length = packets.length;\n const encodedPackets = new Array(length);\n let count = 0;\n packets.forEach((packet, i) => {\n // force base64 encoding for binary packets\n encodePacket(packet, false, encodedPacket => {\n encodedPackets[i] = encodedPacket;\n if (++count === length) {\n callback(encodedPackets.join(SEPARATOR));\n }\n });\n });\n};\nconst decodePayload = (encodedPayload, binaryType) => {\n const encodedPackets = encodedPayload.split(SEPARATOR);\n const packets = [];\n for (let i = 0; i < encodedPackets.length; i++) {\n const decodedPacket = decodePacket(encodedPackets[i], binaryType);\n packets.push(decodedPacket);\n if (decodedPacket.type === \"error\") {\n break;\n }\n }\n return packets;\n};\nexport const protocol = 4;\nexport { encodePacket, encodePayload, decodePacket, decodePayload };\n","/**\n * Initialize a new `Emitter`.\n *\n * @api public\n */\n\nexport function Emitter(obj) {\n if (obj) return mixin(obj);\n}\n\n/**\n * Mixin the emitter properties.\n *\n * @param {Object} obj\n * @return {Object}\n * @api private\n */\n\nfunction mixin(obj) {\n for (var key in Emitter.prototype) {\n obj[key] = Emitter.prototype[key];\n }\n return obj;\n}\n\n/**\n * Listen on the given `event` with `fn`.\n *\n * @param {String} event\n * @param {Function} fn\n * @return {Emitter}\n * @api public\n */\n\nEmitter.prototype.on =\nEmitter.prototype.addEventListener = function(event, fn){\n this._callbacks = this._callbacks || {};\n (this._callbacks['$' + event] = this._callbacks['$' + event] || [])\n .push(fn);\n return this;\n};\n\n/**\n * Adds an `event` listener that will be invoked a single\n * time then automatically removed.\n *\n * @param {String} event\n * @param {Function} fn\n * @return {Emitter}\n * @api public\n */\n\nEmitter.prototype.once = function(event, fn){\n function on() {\n this.off(event, on);\n fn.apply(this, arguments);\n }\n\n on.fn = fn;\n this.on(event, on);\n return this;\n};\n\n/**\n * Remove the given callback for `event` or all\n * registered callbacks.\n *\n * @param {String} event\n * @param {Function} fn\n * @return {Emitter}\n * @api public\n */\n\nEmitter.prototype.off =\nEmitter.prototype.removeListener =\nEmitter.prototype.removeAllListeners =\nEmitter.prototype.removeEventListener = function(event, fn){\n this._callbacks = this._callbacks || {};\n\n // all\n if (0 == arguments.length) {\n this._callbacks = {};\n return this;\n }\n\n // specific event\n var callbacks = this._callbacks['$' + event];\n if (!callbacks) return this;\n\n // remove all handlers\n if (1 == arguments.length) {\n delete this._callbacks['$' + event];\n return this;\n }\n\n // remove specific handler\n var cb;\n for (var i = 0; i < callbacks.length; i++) {\n cb = callbacks[i];\n if (cb === fn || cb.fn === fn) {\n callbacks.splice(i, 1);\n break;\n }\n }\n\n // Remove event specific arrays for event types that no\n // one is subscribed for to avoid memory leak.\n if (callbacks.length === 0) {\n delete this._callbacks['$' + event];\n }\n\n return this;\n};\n\n/**\n * Emit `event` with the given args.\n *\n * @param {String} event\n * @param {Mixed} ...\n * @return {Emitter}\n */\n\nEmitter.prototype.emit = function(event){\n this._callbacks = this._callbacks || {};\n\n var args = new Array(arguments.length - 1)\n , callbacks = this._callbacks['$' + event];\n\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n\n if (callbacks) {\n callbacks = callbacks.slice(0);\n for (var i = 0, len = callbacks.length; i < len; ++i) {\n callbacks[i].apply(this, args);\n }\n }\n\n return this;\n};\n\n// alias used for reserved events (protected method)\nEmitter.prototype.emitReserved = Emitter.prototype.emit;\n\n/**\n * Return array of callbacks for `event`.\n *\n * @param {String} event\n * @return {Array}\n * @api public\n */\n\nEmitter.prototype.listeners = function(event){\n this._callbacks = this._callbacks || {};\n return this._callbacks['$' + event] || [];\n};\n\n/**\n * Check if this emitter has `event` handlers.\n *\n * @param {String} event\n * @return {Boolean}\n * @api public\n */\n\nEmitter.prototype.hasListeners = function(event){\n return !! this.listeners(event).length;\n};\n","export const globalThisShim = (() => {\n if (typeof self !== \"undefined\") {\n return self;\n }\n else if (typeof window !== \"undefined\") {\n return window;\n }\n else {\n return Function(\"return this\")();\n }\n})();\n","import { globalThisShim as globalThis } from \"./globalThis.js\";\nexport function pick(obj, ...attr) {\n return attr.reduce((acc, k) => {\n if (obj.hasOwnProperty(k)) {\n acc[k] = obj[k];\n }\n return acc;\n }, {});\n}\n// Keep a reference to the real timeout functions so they can be used when overridden\nconst NATIVE_SET_TIMEOUT = globalThis.setTimeout;\nconst NATIVE_CLEAR_TIMEOUT = globalThis.clearTimeout;\nexport function installTimerFunctions(obj, opts) {\n if (opts.useNativeTimers) {\n obj.setTimeoutFn = NATIVE_SET_TIMEOUT.bind(globalThis);\n obj.clearTimeoutFn = NATIVE_CLEAR_TIMEOUT.bind(globalThis);\n }\n else {\n obj.setTimeoutFn = globalThis.setTimeout.bind(globalThis);\n obj.clearTimeoutFn = globalThis.clearTimeout.bind(globalThis);\n }\n}\n// base64 encoded buffers are about 33% bigger (https://en.wikipedia.org/wiki/Base64)\nconst BASE64_OVERHEAD = 1.33;\n// we could also have used `new Blob([obj]).size`, but it isn't supported in IE9\nexport function byteLength(obj) {\n if (typeof obj === \"string\") {\n return utf8Length(obj);\n }\n // arraybuffer or blob\n return Math.ceil((obj.byteLength || obj.size) * BASE64_OVERHEAD);\n}\nfunction utf8Length(str) {\n let c = 0, length = 0;\n for (let i = 0, l = str.length; i < l; i++) {\n c = str.charCodeAt(i);\n if (c < 0x80) {\n length += 1;\n }\n else if (c < 0x800) {\n length += 2;\n }\n else if (c < 0xd800 || c >= 0xe000) {\n length += 3;\n }\n else {\n i++;\n length += 4;\n }\n }\n return length;\n}\n","import { decodePacket } from \"engine.io-parser\";\nimport { Emitter } from \"@socket.io/component-emitter\";\nimport { installTimerFunctions } from \"./util.js\";\nclass TransportError extends Error {\n constructor(reason, description, context) {\n super(reason);\n this.description = description;\n this.context = context;\n this.type = \"TransportError\";\n }\n}\nexport class Transport extends Emitter {\n /**\n * Transport abstract constructor.\n *\n * @param {Object} opts - options\n * @protected\n */\n constructor(opts) {\n super();\n this.writable = false;\n installTimerFunctions(this, opts);\n this.opts = opts;\n this.query = opts.query;\n this.socket = opts.socket;\n }\n /**\n * Emits an error.\n *\n * @param {String} reason\n * @param description\n * @param context - the error context\n * @return {Transport} for chaining\n * @protected\n */\n onError(reason, description, context) {\n super.emitReserved(\"error\", new TransportError(reason, description, context));\n return this;\n }\n /**\n * Opens the transport.\n */\n open() {\n this.readyState = \"opening\";\n this.doOpen();\n return this;\n }\n /**\n * Closes the transport.\n */\n close() {\n if (this.readyState === \"opening\" || this.readyState === \"open\") {\n this.doClose();\n this.onClose();\n }\n return this;\n }\n /**\n * Sends multiple packets.\n *\n * @param {Array} packets\n */\n send(packets) {\n if (this.readyState === \"open\") {\n this.write(packets);\n }\n else {\n // this might happen if the transport was silently closed in the beforeunload event handler\n }\n }\n /**\n * Called upon open\n *\n * @protected\n */\n onOpen() {\n this.readyState = \"open\";\n this.writable = true;\n super.emitReserved(\"open\");\n }\n /**\n * Called with data.\n *\n * @param {String} data\n * @protected\n */\n onData(data) {\n const packet = decodePacket(data, this.socket.binaryType);\n this.onPacket(packet);\n }\n /**\n * Called with a decoded packet.\n *\n * @protected\n */\n onPacket(packet) {\n super.emitReserved(\"packet\", packet);\n }\n /**\n * Called upon close.\n *\n * @protected\n */\n onClose(details) {\n this.readyState = \"closed\";\n super.emitReserved(\"close\", details);\n }\n /**\n * Pauses the transport, in order not to lose packets during an upgrade.\n *\n * @param onPause\n */\n pause(onPause) { }\n}\n","// imported from https://github.com/unshiftio/yeast\n'use strict';\nconst alphabet = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-_'.split(''), length = 64, map = {};\nlet seed = 0, i = 0, prev;\n/**\n * Return a string representing the specified number.\n *\n * @param {Number} num The number to convert.\n * @returns {String} The string representation of the number.\n * @api public\n */\nexport function encode(num) {\n let encoded = '';\n do {\n encoded = alphabet[num % length] + encoded;\n num = Math.floor(num / length);\n } while (num > 0);\n return encoded;\n}\n/**\n * Return the integer value specified by the given string.\n *\n * @param {String} str The string to convert.\n * @returns {Number} The integer value represented by the string.\n * @api public\n */\nexport function decode(str) {\n let decoded = 0;\n for (i = 0; i < str.length; i++) {\n decoded = decoded * length + map[str.charAt(i)];\n }\n return decoded;\n}\n/**\n * Yeast: A tiny growing id generator.\n *\n * @returns {String} A unique id.\n * @api public\n */\nexport function yeast() {\n const now = encode(+new Date());\n if (now !== prev)\n return seed = 0, prev = now;\n return now + '.' + encode(seed++);\n}\n//\n// Map each character to its index.\n//\nfor (; i < length; i++)\n map[alphabet[i]] = i;\n","// imported from https://github.com/galkn/querystring\n/**\n * Compiles a querystring\n * Returns string representation of the object\n *\n * @param {Object}\n * @api private\n */\nexport function encode(obj) {\n let str = '';\n for (let i in obj) {\n if (obj.hasOwnProperty(i)) {\n if (str.length)\n str += '&';\n str += encodeURIComponent(i) + '=' + encodeURIComponent(obj[i]);\n }\n }\n return str;\n}\n/**\n * Parses a simple querystring into an object\n *\n * @param {String} qs\n * @api private\n */\nexport function decode(qs) {\n let qry = {};\n let pairs = qs.split('&');\n for (let i = 0, l = pairs.length; i < l; i++) {\n let pair = pairs[i].split('=');\n qry[decodeURIComponent(pair[0])] = decodeURIComponent(pair[1]);\n }\n return qry;\n}\n","// imported from https://github.com/component/has-cors\nlet value = false;\ntry {\n value = typeof XMLHttpRequest !== 'undefined' &&\n 'withCredentials' in new XMLHttpRequest();\n}\ncatch (err) {\n // if XMLHttp support is disabled in IE then it will throw\n // when trying to create\n}\nexport const hasCORS = value;\n","// browser shim for xmlhttprequest module\nimport { hasCORS } from \"../contrib/has-cors.js\";\nimport { globalThisShim as globalThis } from \"../globalThis.js\";\nexport function XHR(opts) {\n const xdomain = opts.xdomain;\n // XMLHttpRequest can be disabled on IE\n try {\n if (\"undefined\" !== typeof XMLHttpRequest && (!xdomain || hasCORS)) {\n return new XMLHttpRequest();\n }\n }\n catch (e) { }\n if (!xdomain) {\n try {\n return new globalThis[[\"Active\"].concat(\"Object\").join(\"X\")](\"Microsoft.XMLHTTP\");\n }\n catch (e) { }\n }\n}\n","import { Transport } from \"../transport.js\";\nimport { yeast } from \"../contrib/yeast.js\";\nimport { encode } from \"../contrib/parseqs.js\";\nimport { encodePayload, decodePayload } from \"engine.io-parser\";\nimport { XHR as XMLHttpRequest } from \"./xmlhttprequest.js\";\nimport { Emitter } from \"@socket.io/component-emitter\";\nimport { installTimerFunctions, pick } from \"../util.js\";\nimport { globalThisShim as globalThis } from \"../globalThis.js\";\nfunction empty() { }\nconst hasXHR2 = (function () {\n const xhr = new XMLHttpRequest({\n xdomain: false,\n });\n return null != xhr.responseType;\n})();\nexport class Polling extends Transport {\n /**\n * XHR Polling constructor.\n *\n * @param {Object} opts\n * @package\n */\n constructor(opts) {\n super(opts);\n this.polling = false;\n if (typeof location !== \"undefined\") {\n const isSSL = \"https:\" === location.protocol;\n let port = location.port;\n // some user agents have empty `location.port`\n if (!port) {\n port = isSSL ? \"443\" : \"80\";\n }\n this.xd =\n (typeof location !== \"undefined\" &&\n opts.hostname !== location.hostname) ||\n port !== opts.port;\n this.xs = opts.secure !== isSSL;\n }\n /**\n * XHR supports binary\n */\n const forceBase64 = opts && opts.forceBase64;\n this.supportsBinary = hasXHR2 && !forceBase64;\n }\n get name() {\n return \"polling\";\n }\n /**\n * Opens the socket (triggers polling). We write a PING message to determine\n * when the transport is open.\n *\n * @protected\n */\n doOpen() {\n this.poll();\n }\n /**\n * Pauses polling.\n *\n * @param {Function} onPause - callback upon buffers are flushed and transport is paused\n * @package\n */\n pause(onPause) {\n this.readyState = \"pausing\";\n const pause = () => {\n this.readyState = \"paused\";\n onPause();\n };\n if (this.polling || !this.writable) {\n let total = 0;\n if (this.polling) {\n total++;\n this.once(\"pollComplete\", function () {\n --total || pause();\n });\n }\n if (!this.writable) {\n total++;\n this.once(\"drain\", function () {\n --total || pause();\n });\n }\n }\n else {\n pause();\n }\n }\n /**\n * Starts polling cycle.\n *\n * @private\n */\n poll() {\n this.polling = true;\n this.doPoll();\n this.emitReserved(\"poll\");\n }\n /**\n * Overloads onData to detect payloads.\n *\n * @protected\n */\n onData(data) {\n const callback = (packet) => {\n // if its the first message we consider the transport open\n if (\"opening\" === this.readyState && packet.type === \"open\") {\n this.onOpen();\n }\n // if its a close packet, we close the ongoing requests\n if (\"close\" === packet.type) {\n this.onClose({ description: \"transport closed by the server\" });\n return false;\n }\n // otherwise bypass onData and handle the message\n this.onPacket(packet);\n };\n // decode payload\n decodePayload(data, this.socket.binaryType).forEach(callback);\n // if an event did not trigger closing\n if (\"closed\" !== this.readyState) {\n // if we got data we're not polling\n this.polling = false;\n this.emitReserved(\"pollComplete\");\n if (\"open\" === this.readyState) {\n this.poll();\n }\n else {\n }\n }\n }\n /**\n * For polling, send a close packet.\n *\n * @protected\n */\n doClose() {\n const close = () => {\n this.write([{ type: \"close\" }]);\n };\n if (\"open\" === this.readyState) {\n close();\n }\n else {\n // in case we're trying to close while\n // handshaking is in progress (GH-164)\n this.once(\"open\", close);\n }\n }\n /**\n * Writes a packets payload.\n *\n * @param {Array} packets - data packets\n * @protected\n */\n write(packets) {\n this.writable = false;\n encodePayload(packets, (data) => {\n this.doWrite(data, () => {\n this.writable = true;\n this.emitReserved(\"drain\");\n });\n });\n }\n /**\n * Generates uri for connection.\n *\n * @private\n */\n uri() {\n let query = this.query || {};\n const schema = this.opts.secure ? \"https\" : \"http\";\n let port = \"\";\n // cache busting is forced\n if (false !== this.opts.timestampRequests) {\n query[this.opts.timestampParam] = yeast();\n }\n if (!this.supportsBinary && !query.sid) {\n query.b64 = 1;\n }\n // avoid port if default for schema\n if (this.opts.port &&\n ((\"https\" === schema && Number(this.opts.port) !== 443) ||\n (\"http\" === schema && Number(this.opts.port) !== 80))) {\n port = \":\" + this.opts.port;\n }\n const encodedQuery = encode(query);\n const ipv6 = this.opts.hostname.indexOf(\":\") !== -1;\n return (schema +\n \"://\" +\n (ipv6 ? \"[\" + this.opts.hostname + \"]\" : this.opts.hostname) +\n port +\n this.opts.path +\n (encodedQuery.length ? \"?\" + encodedQuery : \"\"));\n }\n /**\n * Creates a request.\n *\n * @param {String} method\n * @private\n */\n request(opts = {}) {\n Object.assign(opts, { xd: this.xd, xs: this.xs }, this.opts);\n return new Request(this.uri(), opts);\n }\n /**\n * Sends data.\n *\n * @param {String} data to send.\n * @param {Function} called upon flush.\n * @private\n */\n doWrite(data, fn) {\n const req = this.request({\n method: \"POST\",\n data: data,\n });\n req.on(\"success\", fn);\n req.on(\"error\", (xhrStatus, context) => {\n this.onError(\"xhr post error\", xhrStatus, context);\n });\n }\n /**\n * Starts a poll cycle.\n *\n * @private\n */\n doPoll() {\n const req = this.request();\n req.on(\"data\", this.onData.bind(this));\n req.on(\"error\", (xhrStatus, context) => {\n this.onError(\"xhr poll error\", xhrStatus, context);\n });\n this.pollXhr = req;\n }\n}\nexport class Request extends Emitter {\n /**\n * Request constructor\n *\n * @param {Object} options\n * @package\n */\n constructor(uri, opts) {\n super();\n installTimerFunctions(this, opts);\n this.opts = opts;\n this.method = opts.method || \"GET\";\n this.uri = uri;\n this.async = false !== opts.async;\n this.data = undefined !== opts.data ? opts.data : null;\n this.create();\n }\n /**\n * Creates the XHR object and sends the request.\n *\n * @private\n */\n create() {\n const opts = pick(this.opts, \"agent\", \"pfx\", \"key\", \"passphrase\", \"cert\", \"ca\", \"ciphers\", \"rejectUnauthorized\", \"autoUnref\");\n opts.xdomain = !!this.opts.xd;\n opts.xscheme = !!this.opts.xs;\n const xhr = (this.xhr = new XMLHttpRequest(opts));\n try {\n xhr.open(this.method, this.uri, this.async);\n try {\n if (this.opts.extraHeaders) {\n xhr.setDisableHeaderCheck && xhr.setDisableHeaderCheck(true);\n for (let i in this.opts.extraHeaders) {\n if (this.opts.extraHeaders.hasOwnProperty(i)) {\n xhr.setRequestHeader(i, this.opts.extraHeaders[i]);\n }\n }\n }\n }\n catch (e) { }\n if (\"POST\" === this.method) {\n try {\n xhr.setRequestHeader(\"Content-type\", \"text/plain;charset=UTF-8\");\n }\n catch (e) { }\n }\n try {\n xhr.setRequestHeader(\"Accept\", \"*/*\");\n }\n catch (e) { }\n // ie6 check\n if (\"withCredentials\" in xhr) {\n xhr.withCredentials = this.opts.withCredentials;\n }\n if (this.opts.requestTimeout) {\n xhr.timeout = this.opts.requestTimeout;\n }\n xhr.onreadystatechange = () => {\n if (4 !== xhr.readyState)\n return;\n if (200 === xhr.status || 1223 === xhr.status) {\n this.onLoad();\n }\n else {\n // make sure the `error` event handler that's user-set\n // does not throw in the same tick and gets caught here\n this.setTimeoutFn(() => {\n this.onError(typeof xhr.status === \"number\" ? xhr.status : 0);\n }, 0);\n }\n };\n xhr.send(this.data);\n }\n catch (e) {\n // Need to defer since .create() is called directly from the constructor\n // and thus the 'error' event can only be only bound *after* this exception\n // occurs. Therefore, also, we cannot throw here at all.\n this.setTimeoutFn(() => {\n this.onError(e);\n }, 0);\n return;\n }\n if (typeof document !== \"undefined\") {\n this.index = Request.requestsCount++;\n Request.requests[this.index] = this;\n }\n }\n /**\n * Called upon error.\n *\n * @private\n */\n onError(err) {\n this.emitReserved(\"error\", err, this.xhr);\n this.cleanup(true);\n }\n /**\n * Cleans up house.\n *\n * @private\n */\n cleanup(fromError) {\n if (\"undefined\" === typeof this.xhr || null === this.xhr) {\n return;\n }\n this.xhr.onreadystatechange = empty;\n if (fromError) {\n try {\n this.xhr.abort();\n }\n catch (e) { }\n }\n if (typeof document !== \"undefined\") {\n delete Request.requests[this.index];\n }\n this.xhr = null;\n }\n /**\n * Called upon load.\n *\n * @private\n */\n onLoad() {\n const data = this.xhr.responseText;\n if (data !== null) {\n this.emitReserved(\"data\", data);\n this.emitReserved(\"success\");\n this.cleanup();\n }\n }\n /**\n * Aborts the request.\n *\n * @package\n */\n abort() {\n this.cleanup();\n }\n}\nRequest.requestsCount = 0;\nRequest.requests = {};\n/**\n * Aborts pending requests when unloading the window. This is needed to prevent\n * memory leaks (e.g. when using IE) and to ensure that no spurious error is\n * emitted.\n */\nif (typeof document !== \"undefined\") {\n // @ts-ignore\n if (typeof attachEvent === \"function\") {\n // @ts-ignore\n attachEvent(\"onunload\", unloadHandler);\n }\n else if (typeof addEventListener === \"function\") {\n const terminationEvent = \"onpagehide\" in globalThis ? \"pagehide\" : \"unload\";\n addEventListener(terminationEvent, unloadHandler, false);\n }\n}\nfunction unloadHandler() {\n for (let i in Request.requests) {\n if (Request.requests.hasOwnProperty(i)) {\n Request.requests[i].abort();\n }\n }\n}\n","import { globalThisShim as globalThis } from \"../globalThis.js\";\nexport const nextTick = (() => {\n const isPromiseAvailable = typeof Promise === \"function\" && typeof Promise.resolve === \"function\";\n if (isPromiseAvailable) {\n return (cb) => Promise.resolve().then(cb);\n }\n else {\n return (cb, setTimeoutFn) => setTimeoutFn(cb, 0);\n }\n})();\nexport const WebSocket = globalThis.WebSocket || globalThis.MozWebSocket;\nexport const usingBrowserWebSocket = true;\nexport const defaultBinaryType = \"arraybuffer\";\n","import { Transport } from \"../transport.js\";\nimport { encode } from \"../contrib/parseqs.js\";\nimport { yeast } from \"../contrib/yeast.js\";\nimport { pick } from \"../util.js\";\nimport { defaultBinaryType, nextTick, usingBrowserWebSocket, WebSocket, } from \"./websocket-constructor.js\";\nimport { encodePacket } from \"engine.io-parser\";\n// detect ReactNative environment\nconst isReactNative = typeof navigator !== \"undefined\" &&\n typeof navigator.product === \"string\" &&\n navigator.product.toLowerCase() === \"reactnative\";\nexport class WS extends Transport {\n /**\n * WebSocket transport constructor.\n *\n * @param {Object} opts - connection options\n * @protected\n */\n constructor(opts) {\n super(opts);\n this.supportsBinary = !opts.forceBase64;\n }\n get name() {\n return \"websocket\";\n }\n doOpen() {\n if (!this.check()) {\n // let probe timeout\n return;\n }\n const uri = this.uri();\n const protocols = this.opts.protocols;\n // React Native only supports the 'headers' option, and will print a warning if anything else is passed\n const opts = isReactNative\n ? {}\n : pick(this.opts, \"agent\", \"perMessageDeflate\", \"pfx\", \"key\", \"passphrase\", \"cert\", \"ca\", \"ciphers\", \"rejectUnauthorized\", \"localAddress\", \"protocolVersion\", \"origin\", \"maxPayload\", \"family\", \"checkServerIdentity\");\n if (this.opts.extraHeaders) {\n opts.headers = this.opts.extraHeaders;\n }\n try {\n this.ws =\n usingBrowserWebSocket && !isReactNative\n ? protocols\n ? new WebSocket(uri, protocols)\n : new WebSocket(uri)\n : new WebSocket(uri, protocols, opts);\n }\n catch (err) {\n return this.emitReserved(\"error\", err);\n }\n this.ws.binaryType = this.socket.binaryType || defaultBinaryType;\n this.addEventListeners();\n }\n /**\n * Adds event listeners to the socket\n *\n * @private\n */\n addEventListeners() {\n this.ws.onopen = () => {\n if (this.opts.autoUnref) {\n this.ws._socket.unref();\n }\n this.onOpen();\n };\n this.ws.onclose = (closeEvent) => this.onClose({\n description: \"websocket connection closed\",\n context: closeEvent,\n });\n this.ws.onmessage = (ev) => this.onData(ev.data);\n this.ws.onerror = (e) => this.onError(\"websocket error\", e);\n }\n write(packets) {\n this.writable = false;\n // encodePacket efficient as it uses WS framing\n // no need for encodePayload\n for (let i = 0; i < packets.length; i++) {\n const packet = packets[i];\n const lastPacket = i === packets.length - 1;\n encodePacket(packet, this.supportsBinary, (data) => {\n // always create a new object (GH-437)\n const opts = {};\n if (!usingBrowserWebSocket) {\n if (packet.options) {\n opts.compress = packet.options.compress;\n }\n if (this.opts.perMessageDeflate) {\n const len = \n // @ts-ignore\n \"string\" === typeof data ? Buffer.byteLength(data) : data.length;\n if (len < this.opts.perMessageDeflate.threshold) {\n opts.compress = false;\n }\n }\n }\n // Sometimes the websocket has already been closed but the browser didn't\n // have a chance of informing us about it yet, in that case send will\n // throw an error\n try {\n if (usingBrowserWebSocket) {\n // TypeError is thrown when passing the second argument on Safari\n this.ws.send(data);\n }\n else {\n this.ws.send(data, opts);\n }\n }\n catch (e) {\n }\n if (lastPacket) {\n // fake drain\n // defer to next tick to allow Socket to clear writeBuffer\n nextTick(() => {\n this.writable = true;\n this.emitReserved(\"drain\");\n }, this.setTimeoutFn);\n }\n });\n }\n }\n doClose() {\n if (typeof this.ws !== \"undefined\") {\n this.ws.close();\n this.ws = null;\n }\n }\n /**\n * Generates uri for connection.\n *\n * @private\n */\n uri() {\n let query = this.query || {};\n const schema = this.opts.secure ? \"wss\" : \"ws\";\n let port = \"\";\n // avoid port if default for schema\n if (this.opts.port &&\n ((\"wss\" === schema && Number(this.opts.port) !== 443) ||\n (\"ws\" === schema && Number(this.opts.port) !== 80))) {\n port = \":\" + this.opts.port;\n }\n // append timestamp to URI\n if (this.opts.timestampRequests) {\n query[this.opts.timestampParam] = yeast();\n }\n // communicate binary support capabilities\n if (!this.supportsBinary) {\n query.b64 = 1;\n }\n const encodedQuery = encode(query);\n const ipv6 = this.opts.hostname.indexOf(\":\") !== -1;\n return (schema +\n \"://\" +\n (ipv6 ? \"[\" + this.opts.hostname + \"]\" : this.opts.hostname) +\n port +\n this.opts.path +\n (encodedQuery.length ? \"?\" + encodedQuery : \"\"));\n }\n /**\n * Feature detection for WebSocket.\n *\n * @return {Boolean} whether this transport is available.\n * @private\n */\n check() {\n return !!WebSocket;\n }\n}\n","import { Polling } from \"./polling.js\";\nimport { WS } from \"./websocket.js\";\nexport const transports = {\n websocket: WS,\n polling: Polling,\n};\n","// imported from https://github.com/galkn/parseuri\n/**\n * Parses a URI\n *\n * Note: we could also have used the built-in URL object, but it isn't supported on all platforms.\n *\n * See:\n * - https://developer.mozilla.org/en-US/docs/Web/API/URL\n * - https://caniuse.com/url\n * - https://www.rfc-editor.org/rfc/rfc3986#appendix-B\n *\n * History of the parse() method:\n * - first commit: https://github.com/socketio/socket.io-client/commit/4ee1d5d94b3906a9c052b459f1a818b15f38f91c\n * - export into its own module: https://github.com/socketio/engine.io-client/commit/de2c561e4564efeb78f1bdb1ba39ef81b2822cb3\n * - reimport: https://github.com/socketio/engine.io-client/commit/df32277c3f6d622eec5ed09f493cae3f3391d242\n *\n * @author Steven Levithan (MIT license)\n * @api private\n */\nconst re = /^(?:(?![^:@\\/?#]+:[^:@\\/]*@)(http|https|ws|wss):\\/\\/)?((?:(([^:@\\/?#]*)(?::([^:@\\/?#]*))?)?@)?((?:[a-f0-9]{0,4}:){2,7}[a-f0-9]{0,4}|[^:\\/?#]*)(?::(\\d*))?)(((\\/(?:[^?#](?![^?#\\/]*\\.[^?#\\/.]+(?:[?#]|$)))*\\/?)?([^?#\\/]*))(?:\\?([^#]*))?(?:#(.*))?)/;\nconst parts = [\n 'source', 'protocol', 'authority', 'userInfo', 'user', 'password', 'host', 'port', 'relative', 'path', 'directory', 'file', 'query', 'anchor'\n];\nexport function parse(str) {\n const src = str, b = str.indexOf('['), e = str.indexOf(']');\n if (b != -1 && e != -1) {\n str = str.substring(0, b) + str.substring(b, e).replace(/:/g, ';') + str.substring(e, str.length);\n }\n let m = re.exec(str || ''), uri = {}, i = 14;\n while (i--) {\n uri[parts[i]] = m[i] || '';\n }\n if (b != -1 && e != -1) {\n uri.source = src;\n uri.host = uri.host.substring(1, uri.host.length - 1).replace(/;/g, ':');\n uri.authority = uri.authority.replace('[', '').replace(']', '').replace(/;/g, ':');\n uri.ipv6uri = true;\n }\n uri.pathNames = pathNames(uri, uri['path']);\n uri.queryKey = queryKey(uri, uri['query']);\n return uri;\n}\nfunction pathNames(obj, path) {\n const regx = /\\/{2,9}/g, names = path.replace(regx, \"/\").split(\"/\");\n if (path.slice(0, 1) == '/' || path.length === 0) {\n names.splice(0, 1);\n }\n if (path.slice(-1) == '/') {\n names.splice(names.length - 1, 1);\n }\n return names;\n}\nfunction queryKey(uri, query) {\n const data = {};\n query.replace(/(?:^|&)([^&=]*)=?([^&]*)/g, function ($0, $1, $2) {\n if ($1) {\n data[$1] = $2;\n }\n });\n return data;\n}\n","import { transports } from \"./transports/index.js\";\nimport { installTimerFunctions, byteLength } from \"./util.js\";\nimport { decode } from \"./contrib/parseqs.js\";\nimport { parse } from \"./contrib/parseuri.js\";\nimport { Emitter } from \"@socket.io/component-emitter\";\nimport { protocol } from \"engine.io-parser\";\nexport class Socket extends Emitter {\n /**\n * Socket constructor.\n *\n * @param {String|Object} uri - uri or options\n * @param {Object} opts - options\n */\n constructor(uri, opts = {}) {\n super();\n this.writeBuffer = [];\n if (uri && \"object\" === typeof uri) {\n opts = uri;\n uri = null;\n }\n if (uri) {\n uri = parse(uri);\n opts.hostname = uri.host;\n opts.secure = uri.protocol === \"https\" || uri.protocol === \"wss\";\n opts.port = uri.port;\n if (uri.query)\n opts.query = uri.query;\n }\n else if (opts.host) {\n opts.hostname = parse(opts.host).host;\n }\n installTimerFunctions(this, opts);\n this.secure =\n null != opts.secure\n ? opts.secure\n : typeof location !== \"undefined\" && \"https:\" === location.protocol;\n if (opts.hostname && !opts.port) {\n // if no port is specified manually, use the protocol default\n opts.port = this.secure ? \"443\" : \"80\";\n }\n this.hostname =\n opts.hostname ||\n (typeof location !== \"undefined\" ? location.hostname : \"localhost\");\n this.port =\n opts.port ||\n (typeof location !== \"undefined\" && location.port\n ? location.port\n : this.secure\n ? \"443\"\n : \"80\");\n this.transports = opts.transports || [\"polling\", \"websocket\"];\n this.writeBuffer = [];\n this.prevBufferLen = 0;\n this.opts = Object.assign({\n path: \"/engine.io\",\n agent: false,\n withCredentials: false,\n upgrade: true,\n timestampParam: \"t\",\n rememberUpgrade: false,\n addTrailingSlash: true,\n rejectUnauthorized: true,\n perMessageDeflate: {\n threshold: 1024,\n },\n transportOptions: {},\n closeOnBeforeunload: true,\n }, opts);\n this.opts.path =\n this.opts.path.replace(/\\/$/, \"\") +\n (this.opts.addTrailingSlash ? \"/\" : \"\");\n if (typeof this.opts.query === \"string\") {\n this.opts.query = decode(this.opts.query);\n }\n // set on handshake\n this.id = null;\n this.upgrades = null;\n this.pingInterval = null;\n this.pingTimeout = null;\n // set on heartbeat\n this.pingTimeoutTimer = null;\n if (typeof addEventListener === \"function\") {\n if (this.opts.closeOnBeforeunload) {\n // Firefox closes the connection when the \"beforeunload\" event is emitted but not Chrome. This event listener\n // ensures every browser behaves the same (no \"disconnect\" event at the Socket.IO level when the page is\n // closed/reloaded)\n this.beforeunloadEventListener = () => {\n if (this.transport) {\n // silently close the transport\n this.transport.removeAllListeners();\n this.transport.close();\n }\n };\n addEventListener(\"beforeunload\", this.beforeunloadEventListener, false);\n }\n if (this.hostname !== \"localhost\") {\n this.offlineEventListener = () => {\n this.onClose(\"transport close\", {\n description: \"network connection lost\",\n });\n };\n addEventListener(\"offline\", this.offlineEventListener, false);\n }\n }\n this.open();\n }\n /**\n * Creates transport of the given type.\n *\n * @param {String} name - transport name\n * @return {Transport}\n * @private\n */\n createTransport(name) {\n const query = Object.assign({}, this.opts.query);\n // append engine.io protocol identifier\n query.EIO = protocol;\n // transport name\n query.transport = name;\n // session id if we already have one\n if (this.id)\n query.sid = this.id;\n const opts = Object.assign({}, this.opts.transportOptions[name], this.opts, {\n query,\n socket: this,\n hostname: this.hostname,\n secure: this.secure,\n port: this.port,\n });\n return new transports[name](opts);\n }\n /**\n * Initializes transport to use and starts probe.\n *\n * @private\n */\n open() {\n let transport;\n if (this.opts.rememberUpgrade &&\n Socket.priorWebsocketSuccess &&\n this.transports.indexOf(\"websocket\") !== -1) {\n transport = \"websocket\";\n }\n else if (0 === this.transports.length) {\n // Emit error on next tick so it can be listened to\n this.setTimeoutFn(() => {\n this.emitReserved(\"error\", \"No transports available\");\n }, 0);\n return;\n }\n else {\n transport = this.transports[0];\n }\n this.readyState = \"opening\";\n // Retry with the next transport if the transport is disabled (jsonp: false)\n try {\n transport = this.createTransport(transport);\n }\n catch (e) {\n this.transports.shift();\n this.open();\n return;\n }\n transport.open();\n this.setTransport(transport);\n }\n /**\n * Sets the current transport. Disables the existing one (if any).\n *\n * @private\n */\n setTransport(transport) {\n if (this.transport) {\n this.transport.removeAllListeners();\n }\n // set up transport\n this.transport = transport;\n // set up transport listeners\n transport\n .on(\"drain\", this.onDrain.bind(this))\n .on(\"packet\", this.onPacket.bind(this))\n .on(\"error\", this.onError.bind(this))\n .on(\"close\", (reason) => this.onClose(\"transport close\", reason));\n }\n /**\n * Probes a transport.\n *\n * @param {String} name - transport name\n * @private\n */\n probe(name) {\n let transport = this.createTransport(name);\n let failed = false;\n Socket.priorWebsocketSuccess = false;\n const onTransportOpen = () => {\n if (failed)\n return;\n transport.send([{ type: \"ping\", data: \"probe\" }]);\n transport.once(\"packet\", (msg) => {\n if (failed)\n return;\n if (\"pong\" === msg.type && \"probe\" === msg.data) {\n this.upgrading = true;\n this.emitReserved(\"upgrading\", transport);\n if (!transport)\n return;\n Socket.priorWebsocketSuccess = \"websocket\" === transport.name;\n this.transport.pause(() => {\n if (failed)\n return;\n if (\"closed\" === this.readyState)\n return;\n cleanup();\n this.setTransport(transport);\n transport.send([{ type: \"upgrade\" }]);\n this.emitReserved(\"upgrade\", transport);\n transport = null;\n this.upgrading = false;\n this.flush();\n });\n }\n else {\n const err = new Error(\"probe error\");\n // @ts-ignore\n err.transport = transport.name;\n this.emitReserved(\"upgradeError\", err);\n }\n });\n };\n function freezeTransport() {\n if (failed)\n return;\n // Any callback called by transport should be ignored since now\n failed = true;\n cleanup();\n transport.close();\n transport = null;\n }\n // Handle any error that happens while probing\n const onerror = (err) => {\n const error = new Error(\"probe error: \" + err);\n // @ts-ignore\n error.transport = transport.name;\n freezeTransport();\n this.emitReserved(\"upgradeError\", error);\n };\n function onTransportClose() {\n onerror(\"transport closed\");\n }\n // When the socket is closed while we're probing\n function onclose() {\n onerror(\"socket closed\");\n }\n // When the socket is upgraded while we're probing\n function onupgrade(to) {\n if (transport && to.name !== transport.name) {\n freezeTransport();\n }\n }\n // Remove all listeners on the transport and on self\n const cleanup = () => {\n transport.removeListener(\"open\", onTransportOpen);\n transport.removeListener(\"error\", onerror);\n transport.removeListener(\"close\", onTransportClose);\n this.off(\"close\", onclose);\n this.off(\"upgrading\", onupgrade);\n };\n transport.once(\"open\", onTransportOpen);\n transport.once(\"error\", onerror);\n transport.once(\"close\", onTransportClose);\n this.once(\"close\", onclose);\n this.once(\"upgrading\", onupgrade);\n transport.open();\n }\n /**\n * Called when connection is deemed open.\n *\n * @private\n */\n onOpen() {\n this.readyState = \"open\";\n Socket.priorWebsocketSuccess = \"websocket\" === this.transport.name;\n this.emitReserved(\"open\");\n this.flush();\n // we check for `readyState` in case an `open`\n // listener already closed the socket\n if (\"open\" === this.readyState && this.opts.upgrade) {\n let i = 0;\n const l = this.upgrades.length;\n for (; i < l; i++) {\n this.probe(this.upgrades[i]);\n }\n }\n }\n /**\n * Handles a packet.\n *\n * @private\n */\n onPacket(packet) {\n if (\"opening\" === this.readyState ||\n \"open\" === this.readyState ||\n \"closing\" === this.readyState) {\n this.emitReserved(\"packet\", packet);\n // Socket is live - any packet counts\n this.emitReserved(\"heartbeat\");\n switch (packet.type) {\n case \"open\":\n this.onHandshake(JSON.parse(packet.data));\n break;\n case \"ping\":\n this.resetPingTimeout();\n this.sendPacket(\"pong\");\n this.emitReserved(\"ping\");\n this.emitReserved(\"pong\");\n break;\n case \"error\":\n const err = new Error(\"server error\");\n // @ts-ignore\n err.code = packet.data;\n this.onError(err);\n break;\n case \"message\":\n this.emitReserved(\"data\", packet.data);\n this.emitReserved(\"message\", packet.data);\n break;\n }\n }\n else {\n }\n }\n /**\n * Called upon handshake completion.\n *\n * @param {Object} data - handshake obj\n * @private\n */\n onHandshake(data) {\n this.emitReserved(\"handshake\", data);\n this.id = data.sid;\n this.transport.query.sid = data.sid;\n this.upgrades = this.filterUpgrades(data.upgrades);\n this.pingInterval = data.pingInterval;\n this.pingTimeout = data.pingTimeout;\n this.maxPayload = data.maxPayload;\n this.onOpen();\n // In case open handler closes socket\n if (\"closed\" === this.readyState)\n return;\n this.resetPingTimeout();\n }\n /**\n * Sets and resets ping timeout timer based on server pings.\n *\n * @private\n */\n resetPingTimeout() {\n this.clearTimeoutFn(this.pingTimeoutTimer);\n this.pingTimeoutTimer = this.setTimeoutFn(() => {\n this.onClose(\"ping timeout\");\n }, this.pingInterval + this.pingTimeout);\n if (this.opts.autoUnref) {\n this.pingTimeoutTimer.unref();\n }\n }\n /**\n * Called on `drain` event\n *\n * @private\n */\n onDrain() {\n this.writeBuffer.splice(0, this.prevBufferLen);\n // setting prevBufferLen = 0 is very important\n // for example, when upgrading, upgrade packet is sent over,\n // and a nonzero prevBufferLen could cause problems on `drain`\n this.prevBufferLen = 0;\n if (0 === this.writeBuffer.length) {\n this.emitReserved(\"drain\");\n }\n else {\n this.flush();\n }\n }\n /**\n * Flush write buffers.\n *\n * @private\n */\n flush() {\n if (\"closed\" !== this.readyState &&\n this.transport.writable &&\n !this.upgrading &&\n this.writeBuffer.length) {\n const packets = this.getWritablePackets();\n this.transport.send(packets);\n // keep track of current length of writeBuffer\n // splice writeBuffer and callbackBuffer on `drain`\n this.prevBufferLen = packets.length;\n this.emitReserved(\"flush\");\n }\n }\n /**\n * Ensure the encoded size of the writeBuffer is below the maxPayload value sent by the server (only for HTTP\n * long-polling)\n *\n * @private\n */\n getWritablePackets() {\n const shouldCheckPayloadSize = this.maxPayload &&\n this.transport.name === \"polling\" &&\n this.writeBuffer.length > 1;\n if (!shouldCheckPayloadSize) {\n return this.writeBuffer;\n }\n let payloadSize = 1; // first packet type\n for (let i = 0; i < this.writeBuffer.length; i++) {\n const data = this.writeBuffer[i].data;\n if (data) {\n payloadSize += byteLength(data);\n }\n if (i > 0 && payloadSize > this.maxPayload) {\n return this.writeBuffer.slice(0, i);\n }\n payloadSize += 2; // separator + packet type\n }\n return this.writeBuffer;\n }\n /**\n * Sends a message.\n *\n * @param {String} msg - message.\n * @param {Object} options.\n * @param {Function} callback function.\n * @return {Socket} for chaining.\n */\n write(msg, options, fn) {\n this.sendPacket(\"message\", msg, options, fn);\n return this;\n }\n send(msg, options, fn) {\n this.sendPacket(\"message\", msg, options, fn);\n return this;\n }\n /**\n * Sends a packet.\n *\n * @param {String} type: packet type.\n * @param {String} data.\n * @param {Object} options.\n * @param {Function} fn - callback function.\n * @private\n */\n sendPacket(type, data, options, fn) {\n if (\"function\" === typeof data) {\n fn = data;\n data = undefined;\n }\n if (\"function\" === typeof options) {\n fn = options;\n options = null;\n }\n if (\"closing\" === this.readyState || \"closed\" === this.readyState) {\n return;\n }\n options = options || {};\n options.compress = false !== options.compress;\n const packet = {\n type: type,\n data: data,\n options: options,\n };\n this.emitReserved(\"packetCreate\", packet);\n this.writeBuffer.push(packet);\n if (fn)\n this.once(\"flush\", fn);\n this.flush();\n }\n /**\n * Closes the connection.\n */\n close() {\n const close = () => {\n this.onClose(\"forced close\");\n this.transport.close();\n };\n const cleanupAndClose = () => {\n this.off(\"upgrade\", cleanupAndClose);\n this.off(\"upgradeError\", cleanupAndClose);\n close();\n };\n const waitForUpgrade = () => {\n // wait for upgrade to finish since we can't send packets while pausing a transport\n this.once(\"upgrade\", cleanupAndClose);\n this.once(\"upgradeError\", cleanupAndClose);\n };\n if (\"opening\" === this.readyState || \"open\" === this.readyState) {\n this.readyState = \"closing\";\n if (this.writeBuffer.length) {\n this.once(\"drain\", () => {\n if (this.upgrading) {\n waitForUpgrade();\n }\n else {\n close();\n }\n });\n }\n else if (this.upgrading) {\n waitForUpgrade();\n }\n else {\n close();\n }\n }\n return this;\n }\n /**\n * Called upon transport error\n *\n * @private\n */\n onError(err) {\n Socket.priorWebsocketSuccess = false;\n this.emitReserved(\"error\", err);\n this.onClose(\"transport error\", err);\n }\n /**\n * Called upon transport close.\n *\n * @private\n */\n onClose(reason, description) {\n if (\"opening\" === this.readyState ||\n \"open\" === this.readyState ||\n \"closing\" === this.readyState) {\n // clear timers\n this.clearTimeoutFn(this.pingTimeoutTimer);\n // stop event from firing again for transport\n this.transport.removeAllListeners(\"close\");\n // ensure transport won't stay open\n this.transport.close();\n // ignore further transport communication\n this.transport.removeAllListeners();\n if (typeof removeEventListener === \"function\") {\n removeEventListener(\"beforeunload\", this.beforeunloadEventListener, false);\n removeEventListener(\"offline\", this.offlineEventListener, false);\n }\n // set ready state\n this.readyState = \"closed\";\n // clear session id\n this.id = null;\n // emit close event\n this.emitReserved(\"close\", reason, description);\n // clean buffers after, so users can still\n // grab the buffers on `close` event\n this.writeBuffer = [];\n this.prevBufferLen = 0;\n }\n }\n /**\n * Filters upgrades, returning only those matching client transports.\n *\n * @param {Array} upgrades - server upgrades\n * @private\n */\n filterUpgrades(upgrades) {\n const filteredUpgrades = [];\n let i = 0;\n const j = upgrades.length;\n for (; i < j; i++) {\n if (~this.transports.indexOf(upgrades[i]))\n filteredUpgrades.push(upgrades[i]);\n }\n return filteredUpgrades;\n }\n}\nSocket.protocol = protocol;\n","import { Socket } from \"./socket.js\";\nexport default (uri, opts) => new Socket(uri, opts);\n"],"names":["PACKET_TYPES","Object","create","PACKET_TYPES_REVERSE","keys","forEach","key","ERROR_PACKET","type","data","withNativeBlob","Blob","prototype","toString","call","withNativeArrayBuffer","ArrayBuffer","isView","obj","buffer","encodePacket","supportsBinary","callback","encodeBlobAsBase64","fileReader","FileReader","onload","content","result","split","readAsDataURL","i","decode","decodePacket","encodedPacket","binaryType","mapBinary","charAt","decodeBase64Packet","substring","packetType","length","decoded","base64","SEPARATOR","String","fromCharCode","encodePayload","packets","encodedPackets","Array","count","packet","join","decodePayload","encodedPayload","decodedPacket","push","protocol","Emitter","mixin","on","addEventListener","event","fn","_callbacks","once","off","apply","arguments","removeListener","removeAllListeners","removeEventListener","callbacks","cb","splice","emit","args","slice","len","emitReserved","listeners","hasListeners","globalThisShim","self","window","Function","pick","attr","reduce","acc","k","hasOwnProperty","NATIVE_SET_TIMEOUT","globalThis","setTimeout","NATIVE_CLEAR_TIMEOUT","clearTimeout","installTimerFunctions","opts","useNativeTimers","setTimeoutFn","bind","clearTimeoutFn","BASE64_OVERHEAD","byteLength","utf8Length","Math","ceil","size","str","c","l","charCodeAt","TransportError","reason","description","context","Error","Transport","writable","query","socket","readyState","doOpen","doClose","onClose","write","onPacket","details","onPause","alphabet","map","seed","prev","encode","num","encoded","floor","yeast","now","Date","encodeURIComponent","qs","qry","pairs","pair","decodeURIComponent","value","XMLHttpRequest","err","hasCORS","XHR","xdomain","e","concat","empty","hasXHR2","xhr","responseType","Polling","polling","location","isSSL","port","xd","hostname","xs","secure","forceBase64","poll","pause","total","doPoll","onOpen","close","doWrite","schema","timestampRequests","timestampParam","sid","b64","Number","encodedQuery","ipv6","indexOf","path","Request","uri","req","request","method","xhrStatus","onError","onData","pollXhr","async","undefined","xscheme","open","extraHeaders","setDisableHeaderCheck","setRequestHeader","withCredentials","requestTimeout","timeout","onreadystatechange","status","onLoad","send","document","index","requestsCount","requests","cleanup","fromError","abort","responseText","attachEvent","unloadHandler","terminationEvent","nextTick","isPromiseAvailable","Promise","resolve","then","WebSocket","MozWebSocket","usingBrowserWebSocket","defaultBinaryType","isReactNative","navigator","product","toLowerCase","WS","check","protocols","headers","ws","addEventListeners","onopen","autoUnref","_socket","unref","onclose","closeEvent","onmessage","ev","onerror","lastPacket","transports","websocket","re","parts","parse","src","b","replace","m","exec","source","host","authority","ipv6uri","pathNames","queryKey","regx","names","$0","$1","$2","Socket","writeBuffer","prevBufferLen","agent","upgrade","rememberUpgrade","addTrailingSlash","rejectUnauthorized","perMessageDeflate","threshold","transportOptions","closeOnBeforeunload","id","upgrades","pingInterval","pingTimeout","pingTimeoutTimer","beforeunloadEventListener","transport","offlineEventListener","name","EIO","priorWebsocketSuccess","createTransport","shift","setTransport","onDrain","failed","onTransportOpen","msg","upgrading","flush","freezeTransport","error","onTransportClose","onupgrade","to","probe","onHandshake","JSON","resetPingTimeout","sendPacket","code","filterUpgrades","maxPayload","getWritablePackets","shouldCheckPayloadSize","payloadSize","options","compress","cleanupAndClose","waitForUpgrade","filteredUpgrades","j"],"mappings":"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"} \ No newline at end of file diff --git a/dist/engine.io.min.js b/dist/engine.io.min.js index ddd8df8aa..96efe594c 100644 --- a/dist/engine.io.min.js +++ b/dist/engine.io.min.js @@ -1,7 +1,7 @@ /*! - * Engine.IO v6.3.0 + * Engine.IO v6.3.1 * (c) 2014-2023 Guillermo Rauch * Released under the MIT License. */ -!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).eio=t()}(this,(function(){"use strict";function e(t){return e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},e(t)}function t(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function r(e,t){for(var r=0;r1?{type:m[r],data:e.substring(1)}:{type:m[r]}:g},P=function(e,t){if(x){var r=function(e){var t,r,n,o,i,s=.75*e.length,a=e.length,u=0;"="===e[e.length-1]&&(s--,"="===e[e.length-2]&&s--);var c=new ArrayBuffer(s),p=new Uint8Array(c);for(t=0;t>4,p[u++]=(15&n)<<4|o>>2,p[u++]=(3&o)<<6|63&i;return c}(e);return B(r,t)}return{base64:!0,data:e}},B=function(e,t){return"blob"===t&&e instanceof ArrayBuffer?new Blob([e]):e},L=String.fromCharCode(30);function C(e){if(e)return function(e){for(var t in C.prototype)e[t]=C.prototype[t];return e}(e)}C.prototype.on=C.prototype.addEventListener=function(e,t){return this._callbacks=this._callbacks||{},(this._callbacks["$"+e]=this._callbacks["$"+e]||[]).push(t),this},C.prototype.once=function(e,t){function r(){this.off(e,r),t.apply(this,arguments)}return r.fn=t,this.on(e,r),this},C.prototype.off=C.prototype.removeListener=C.prototype.removeAllListeners=C.prototype.removeEventListener=function(e,t){if(this._callbacks=this._callbacks||{},0==arguments.length)return this._callbacks={},this;var r,n=this._callbacks["$"+e];if(!n)return this;if(1==arguments.length)return delete this._callbacks["$"+e],this;for(var o=0;o1?t-1:0),n=1;n0);return t}function $(){var e=X(+new Date);return e!==H?(W=0,H=e):e+"."+X(W++)}for(;N<64;N++)I[M[N]]=N;function z(e){var t="";for(var r in e)e.hasOwnProperty(r)&&(t.length&&(t+="&"),t+=encodeURIComponent(r)+"="+encodeURIComponent(e[r]));return t}function V(e){for(var t={},r=e.split("&"),n=0,o=r.length;n0&&void 0!==arguments[0]?arguments[0]:{};return o(e,{xd:this.xd,xs:this.xs},this.opts),new ee(this.uri(),e)}},{key:"doWrite",value:function(e,t){var r=this,n=this.request({method:"POST",data:e});n.on("success",t),n.on("error",(function(e,t){r.onError("xhr post error",e,t)}))}},{key:"doPoll",value:function(){var e=this,t=this.request();t.on("data",this.onData.bind(this)),t.on("error",(function(t,r){e.onError("xhr poll error",t,r)})),this.pollXhr=t}}]),s}(D),ee=function(e){i(o,e);var r=f(o);function o(e,n){var i;return t(this,o),U(h(i=r.call(this)),n),i.opts=n,i.method=n.method||"GET",i.uri=e,i.async=!1!==n.async,i.data=void 0!==n.data?n.data:null,i.create(),i}return n(o,[{key:"create",value:function(){var e=this,t=j(this.opts,"agent","pfx","key","passphrase","cert","ca","ciphers","rejectUnauthorized","autoUnref");t.xdomain=!!this.opts.xd,t.xscheme=!!this.opts.xs;var r=this.xhr=new K(t);try{r.open(this.method,this.uri,this.async);try{if(this.opts.extraHeaders)for(var n in r.setDisableHeaderCheck&&r.setDisableHeaderCheck(!0),this.opts.extraHeaders)this.opts.extraHeaders.hasOwnProperty(n)&&r.setRequestHeader(n,this.opts.extraHeaders[n])}catch(e){}if("POST"===this.method)try{r.setRequestHeader("Content-type","text/plain;charset=UTF-8")}catch(e){}try{r.setRequestHeader("Accept","*/*")}catch(e){}"withCredentials"in r&&(r.withCredentials=this.opts.withCredentials),this.opts.requestTimeout&&(r.timeout=this.opts.requestTimeout),r.onreadystatechange=function(){4===r.readyState&&(200===r.status||1223===r.status?e.onLoad():e.setTimeoutFn((function(){e.onError("number"==typeof r.status?r.status:0)}),0))},r.send(this.data)}catch(t){return void this.setTimeoutFn((function(){e.onError(t)}),0)}"undefined"!=typeof document&&(this.index=o.requestsCount++,o.requests[this.index]=this)}},{key:"onError",value:function(e){this.emitReserved("error",e,this.xhr),this.cleanup(!0)}},{key:"cleanup",value:function(e){if(void 0!==this.xhr&&null!==this.xhr){if(this.xhr.onreadystatechange=Q,e)try{this.xhr.abort()}catch(e){}"undefined"!=typeof document&&delete o.requests[this.index],this.xhr=null}}},{key:"onLoad",value:function(){var e=this.xhr.responseText;null!==e&&(this.emitReserved("data",e),this.emitReserved("success"),this.cleanup())}},{key:"abort",value:function(){this.cleanup()}}]),o}(C);if(ee.requestsCount=0,ee.requests={},"undefined"!=typeof document)if("function"==typeof attachEvent)attachEvent("onunload",te);else if("function"==typeof addEventListener){addEventListener("onpagehide"in q?"pagehide":"unload",te,!1)}function te(){for(var e in ee.requests)ee.requests.hasOwnProperty(e)&&ee.requests[e].abort()}var re="function"==typeof Promise&&"function"==typeof Promise.resolve?function(e){return Promise.resolve().then(e)}:function(e,t){return t(e,0)},ne=q.WebSocket||q.MozWebSocket,oe="undefined"!=typeof navigator&&"string"==typeof navigator.product&&"reactnative"===navigator.product.toLowerCase(),ie=function(e){i(o,e);var r=f(o);function o(e){var n;return t(this,o),(n=r.call(this,e)).supportsBinary=!e.forceBase64,n}return n(o,[{key:"name",get:function(){return"websocket"}},{key:"doOpen",value:function(){if(this.check()){var e=this.uri(),t=this.opts.protocols,r=oe?{}:j(this.opts,"agent","perMessageDeflate","pfx","key","passphrase","cert","ca","ciphers","rejectUnauthorized","localAddress","protocolVersion","origin","maxPayload","family","checkServerIdentity");this.opts.extraHeaders&&(r.headers=this.opts.extraHeaders);try{this.ws=oe?new ne(e,t,r):t?new ne(e,t):new ne(e)}catch(e){return this.emitReserved("error",e)}this.ws.binaryType=this.socket.binaryType||"arraybuffer",this.addEventListeners()}}},{key:"addEventListeners",value:function(){var e=this;this.ws.onopen=function(){e.opts.autoUnref&&e.ws._socket.unref(),e.onOpen()},this.ws.onclose=function(t){return e.onClose({description:"websocket connection closed",context:t})},this.ws.onmessage=function(t){return e.onData(t.data)},this.ws.onerror=function(t){return e.onError("websocket error",t)}}},{key:"write",value:function(e){var t=this;this.writable=!1;for(var r=function(r){var n=e[r],o=r===e.length-1;w(n,t.supportsBinary,(function(e){try{t.ws.send(e)}catch(e){}o&&re((function(){t.writable=!0,t.emitReserved("drain")}),t.setTimeoutFn)}))},n=0;n1&&void 0!==arguments[1]?arguments[1]:{};return t(this,a),(n=s.call(this)).writeBuffer=[],r&&"object"===e(r)&&(i=r,r=null),r?(r=ce(r),i.hostname=r.host,i.secure="https"===r.protocol||"wss"===r.protocol,i.port=r.port,r.query&&(i.query=r.query)):i.host&&(i.hostname=ce(i.host).host),U(h(n),i),n.secure=null!=i.secure?i.secure:"undefined"!=typeof location&&"https:"===location.protocol,i.hostname&&!i.port&&(i.port=n.secure?"443":"80"),n.hostname=i.hostname||("undefined"!=typeof location?location.hostname:"localhost"),n.port=i.port||("undefined"!=typeof location&&location.port?location.port:n.secure?"443":"80"),n.transports=i.transports||["polling","websocket"],n.writeBuffer=[],n.prevBufferLen=0,n.opts=o({path:"/engine.io",agent:!1,withCredentials:!1,upgrade:!0,timestampParam:"t",rememberUpgrade:!1,addTrailingSlash:!0,rejectUnauthorized:!0,perMessageDeflate:{threshold:1024},transportOptions:{},closeOnBeforeunload:!0},i),n.opts.path=n.opts.path.replace(/\/$/,"")+(n.opts.addTrailingSlash?"/":""),"string"==typeof n.opts.query&&(n.opts.query=V(n.opts.query)),n.id=null,n.upgrades=null,n.pingInterval=null,n.pingTimeout=null,n.pingTimeoutTimer=null,"function"==typeof addEventListener&&(n.opts.closeOnBeforeunload&&(n.beforeunloadEventListener=function(){n.transport&&(n.transport.removeAllListeners(),n.transport.close())},addEventListener("beforeunload",n.beforeunloadEventListener,!1)),"localhost"!==n.hostname&&(n.offlineEventListener=function(){n.onClose("transport close",{description:"network connection lost"})},addEventListener("offline",n.offlineEventListener,!1))),n.open(),n}return n(a,[{key:"createTransport",value:function(e){var t=o({},this.opts.query);t.EIO=4,t.transport=e,this.id&&(t.sid=this.id);var r=o({},this.opts.transportOptions[e],this.opts,{query:t,socket:this,hostname:this.hostname,secure:this.secure,port:this.port});return new se[e](r)}},{key:"open",value:function(){var e,t=this;if(this.opts.rememberUpgrade&&a.priorWebsocketSuccess&&-1!==this.transports.indexOf("websocket"))e="websocket";else{if(0===this.transports.length)return void this.setTimeoutFn((function(){t.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)}},{key:"setTransport",value:function(e){var t=this;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",(function(e){return t.onClose("transport close",e)}))}},{key:"probe",value:function(e){var t=this,r=this.createTransport(e),n=!1;a.priorWebsocketSuccess=!1;var o=function(){n||(r.send([{type:"ping",data:"probe"}]),r.once("packet",(function(e){if(!n)if("pong"===e.type&&"probe"===e.data){if(t.upgrading=!0,t.emitReserved("upgrading",r),!r)return;a.priorWebsocketSuccess="websocket"===r.name,t.transport.pause((function(){n||"closed"!==t.readyState&&(h(),t.setTransport(r),r.send([{type:"upgrade"}]),t.emitReserved("upgrade",r),r=null,t.upgrading=!1,t.flush())}))}else{var o=new Error("probe error");o.transport=r.name,t.emitReserved("upgradeError",o)}})))};function i(){n||(n=!0,h(),r.close(),r=null)}var s=function(e){var n=new Error("probe error: "+e);n.transport=r.name,i(),t.emitReserved("upgradeError",n)};function u(){s("transport closed")}function c(){s("socket closed")}function p(e){r&&e.name!==r.name&&i()}var h=function(){r.removeListener("open",o),r.removeListener("error",s),r.removeListener("close",u),t.off("close",c),t.off("upgrading",p)};r.once("open",o),r.once("error",s),r.once("close",u),this.once("close",c),this.once("upgrading",p),r.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)for(var e=0,t=this.upgrades.length;e1))return this.writeBuffer;for(var e,t=1,r=0;r=57344?r+=3:(n++,r+=4);return r}(e):Math.ceil(1.33*(e.byteLength||e.size))),r>0&&t>this.maxPayload)return this.writeBuffer.slice(0,r);t+=2}return this.writeBuffer}},{key:"write",value:function(e,t,r){return this.sendPacket("message",e,t,r),this}},{key:"send",value:function(e,t,r){return this.sendPacket("message",e,t,r),this}},{key:"sendPacket",value:function(e,t,r,n){if("function"==typeof t&&(n=t,t=void 0),"function"==typeof r&&(n=r,r=null),"closing"!==this.readyState&&"closed"!==this.readyState){(r=r||{}).compress=!1!==r.compress;var o={type:e,data:t,options:r};this.emitReserved("packetCreate",o),this.writeBuffer.push(o),n&&this.once("flush",n),this.flush()}}},{key:"close",value:function(){var e=this,t=function(){e.onClose("forced close"),e.transport.close()},r=function r(){e.off("upgrade",r),e.off("upgradeError",r),t()},n=function(){e.once("upgrade",r),e.once("upgradeError",r)};return"opening"!==this.readyState&&"open"!==this.readyState||(this.readyState="closing",this.writeBuffer.length?this.once("drain",(function(){e.upgrading?n():t()})):this.upgrading?n():t()),this}},{key:"onError",value:function(e){a.priorWebsocketSuccess=!1,this.emitReserved("error",e),this.onClose("transport error",e)}},{key:"onClose",value:function(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("beforeunload",this.beforeunloadEventListener,!1),removeEventListener("offline",this.offlineEventListener,!1)),this.readyState="closed",this.id=null,this.emitReserved("close",e,t),this.writeBuffer=[],this.prevBufferLen=0)}},{key:"filterUpgrades",value:function(e){for(var t=[],r=0,n=e.length;r1?{type:v[r],data:e.substring(1)}:{type:v[r]}:m},E=function(e,t){if(S){var r=function(e){var t,r,n,o,i,s=.75*e.length,a=e.length,u=0;"="===e[e.length-1]&&(s--,"="===e[e.length-2]&&s--);var c=new ArrayBuffer(s),p=new Uint8Array(c);for(t=0;t>4,p[u++]=(15&n)<<4|o>>2,p[u++]=(3&o)<<6|63&i;return c}(e);return B(r,t)}return{base64:!0,data:e}},B=function(e,t){return"blob"===t&&e instanceof ArrayBuffer?new Blob([e]):e},L=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 r(){this.off(e,r),t.apply(this,arguments)}return r.fn=t,this.on(e,r),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 r,n=this._callbacks["$"+e];if(!n)return this;if(1==arguments.length)return delete this._callbacks["$"+e],this;for(var o=0;o1?t-1:0),n=1;n0);return t}function X(){var e=N(+new Date);return e!==U?(I=0,U=e):e+"."+N(I++)}for(;W<64;W++)M[D[W]]=W;function $(e){var t="";for(var r in e)e.hasOwnProperty(r)&&(t.length&&(t+="&"),t+=encodeURIComponent(r)+"="+encodeURIComponent(e[r]));return t}function z(e){for(var t={},r=e.split("&"),n=0,o=r.length;n0&&void 0!==arguments[0]?arguments[0]:{};return o(e,{xd:this.xd,xs:this.xs},this.opts),new Z(this.uri(),e)}},{key:"doWrite",value:function(e,t){var r=this,n=this.request({method:"POST",data:e});n.on("success",t),n.on("error",(function(e,t){r.onError("xhr post error",e,t)}))}},{key:"doPoll",value:function(){var e=this,t=this.request();t.on("data",this.onData.bind(this)),t.on("error",(function(t,r){e.onError("xhr poll error",t,r)})),this.pollXhr=t}},{key:"name",get:function(){return"polling"}}]),s}(F),Z=function(e){i(o,e);var r=f(o);function o(e,n){var i;return t(this,o),_(h(i=r.call(this)),n),i.opts=n,i.method=n.method||"GET",i.uri=e,i.async=!1!==n.async,i.data=void 0!==n.data?n.data:null,i.create(),i}return n(o,[{key:"create",value:function(){var e=this,t=q(this.opts,"agent","pfx","key","passphrase","cert","ca","ciphers","rejectUnauthorized","autoUnref");t.xdomain=!!this.opts.xd,t.xscheme=!!this.opts.xs;var r=this.xhr=new J(t);try{r.open(this.method,this.uri,this.async);try{if(this.opts.extraHeaders)for(var n in r.setDisableHeaderCheck&&r.setDisableHeaderCheck(!0),this.opts.extraHeaders)this.opts.extraHeaders.hasOwnProperty(n)&&r.setRequestHeader(n,this.opts.extraHeaders[n])}catch(e){}if("POST"===this.method)try{r.setRequestHeader("Content-type","text/plain;charset=UTF-8")}catch(e){}try{r.setRequestHeader("Accept","*/*")}catch(e){}"withCredentials"in r&&(r.withCredentials=this.opts.withCredentials),this.opts.requestTimeout&&(r.timeout=this.opts.requestTimeout),r.onreadystatechange=function(){4===r.readyState&&(200===r.status||1223===r.status?e.onLoad():e.setTimeoutFn((function(){e.onError("number"==typeof r.status?r.status:0)}),0))},r.send(this.data)}catch(t){return void this.setTimeoutFn((function(){e.onError(t)}),0)}"undefined"!=typeof document&&(this.index=o.requestsCount++,o.requests[this.index]=this)}},{key:"onError",value:function(e){this.emitReserved("error",e,this.xhr),this.cleanup(!0)}},{key:"cleanup",value:function(e){if(void 0!==this.xhr&&null!==this.xhr){if(this.xhr.onreadystatechange=K,e)try{this.xhr.abort()}catch(e){}"undefined"!=typeof document&&delete o.requests[this.index],this.xhr=null}}},{key:"onLoad",value:function(){var e=this.xhr.responseText;null!==e&&(this.emitReserved("data",e),this.emitReserved("success"),this.cleanup())}},{key:"abort",value:function(){this.cleanup()}}]),o}(P);if(Z.requestsCount=0,Z.requests={},"undefined"!=typeof document)if("function"==typeof attachEvent)attachEvent("onunload",ee);else if("function"==typeof addEventListener){addEventListener("onpagehide"in C?"pagehide":"unload",ee,!1)}function ee(){for(var e in Z.requests)Z.requests.hasOwnProperty(e)&&Z.requests[e].abort()}var te="function"==typeof Promise&&"function"==typeof Promise.resolve?function(e){return Promise.resolve().then(e)}:function(e,t){return t(e,0)},re=C.WebSocket||C.MozWebSocket,ne="undefined"!=typeof navigator&&"string"==typeof navigator.product&&"reactnative"===navigator.product.toLowerCase(),oe=function(e){i(o,e);var r=f(o);function o(e){var n;return t(this,o),(n=r.call(this,e)).supportsBinary=!e.forceBase64,n}return n(o,[{key:"doOpen",value:function(){if(this.check()){var e=this.uri(),t=this.opts.protocols,r=ne?{}:q(this.opts,"agent","perMessageDeflate","pfx","key","passphrase","cert","ca","ciphers","rejectUnauthorized","localAddress","protocolVersion","origin","maxPayload","family","checkServerIdentity");this.opts.extraHeaders&&(r.headers=this.opts.extraHeaders);try{this.ws=ne?new re(e,t,r):t?new re(e,t):new re(e)}catch(e){return this.emitReserved("error",e)}this.ws.binaryType=this.socket.binaryType||"arraybuffer",this.addEventListeners()}}},{key:"addEventListeners",value:function(){var e=this;this.ws.onopen=function(){e.opts.autoUnref&&e.ws._socket.unref(),e.onOpen()},this.ws.onclose=function(t){return e.onClose({description:"websocket connection closed",context:t})},this.ws.onmessage=function(t){return e.onData(t.data)},this.ws.onerror=function(t){return e.onError("websocket error",t)}}},{key:"write",value:function(e){var t=this;this.writable=!1;for(var r=function(r){var n=e[r],o=r===e.length-1;k(n,t.supportsBinary,(function(e){try{t.ws.send(e)}catch(e){}o&&te((function(){t.writable=!0,t.emitReserved("drain")}),t.setTimeoutFn)}))},n=0;n1&&void 0!==arguments[1]?arguments[1]:{};return t(this,a),(n=s.call(this)).writeBuffer=[],r&&"object"===e(r)&&(i=r,r=null),r?(r=ue(r),i.hostname=r.host,i.secure="https"===r.protocol||"wss"===r.protocol,i.port=r.port,r.query&&(i.query=r.query)):i.host&&(i.hostname=ue(i.host).host),_(h(n),i),n.secure=null!=i.secure?i.secure:"undefined"!=typeof location&&"https:"===location.protocol,i.hostname&&!i.port&&(i.port=n.secure?"443":"80"),n.hostname=i.hostname||("undefined"!=typeof location?location.hostname:"localhost"),n.port=i.port||("undefined"!=typeof location&&location.port?location.port:n.secure?"443":"80"),n.transports=i.transports||["polling","websocket"],n.writeBuffer=[],n.prevBufferLen=0,n.opts=o({path:"/engine.io",agent:!1,withCredentials:!1,upgrade:!0,timestampParam:"t",rememberUpgrade:!1,addTrailingSlash:!0,rejectUnauthorized:!0,perMessageDeflate:{threshold:1024},transportOptions:{},closeOnBeforeunload:!0},i),n.opts.path=n.opts.path.replace(/\/$/,"")+(n.opts.addTrailingSlash?"/":""),"string"==typeof n.opts.query&&(n.opts.query=z(n.opts.query)),n.id=null,n.upgrades=null,n.pingInterval=null,n.pingTimeout=null,n.pingTimeoutTimer=null,"function"==typeof addEventListener&&(n.opts.closeOnBeforeunload&&(n.beforeunloadEventListener=function(){n.transport&&(n.transport.removeAllListeners(),n.transport.close())},addEventListener("beforeunload",n.beforeunloadEventListener,!1)),"localhost"!==n.hostname&&(n.offlineEventListener=function(){n.onClose("transport close",{description:"network connection lost"})},addEventListener("offline",n.offlineEventListener,!1))),n.open(),n}return n(a,[{key:"createTransport",value:function(e){var t=o({},this.opts.query);t.EIO=4,t.transport=e,this.id&&(t.sid=this.id);var r=o({},this.opts.transportOptions[e],this.opts,{query:t,socket:this,hostname:this.hostname,secure:this.secure,port:this.port});return new ie[e](r)}},{key:"open",value:function(){var e,t=this;if(this.opts.rememberUpgrade&&a.priorWebsocketSuccess&&-1!==this.transports.indexOf("websocket"))e="websocket";else{if(0===this.transports.length)return void this.setTimeoutFn((function(){t.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)}},{key:"setTransport",value:function(e){var t=this;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",(function(e){return t.onClose("transport close",e)}))}},{key:"probe",value:function(e){var t=this,r=this.createTransport(e),n=!1;a.priorWebsocketSuccess=!1;var o=function(){n||(r.send([{type:"ping",data:"probe"}]),r.once("packet",(function(e){if(!n)if("pong"===e.type&&"probe"===e.data){if(t.upgrading=!0,t.emitReserved("upgrading",r),!r)return;a.priorWebsocketSuccess="websocket"===r.name,t.transport.pause((function(){n||"closed"!==t.readyState&&(h(),t.setTransport(r),r.send([{type:"upgrade"}]),t.emitReserved("upgrade",r),r=null,t.upgrading=!1,t.flush())}))}else{var o=new Error("probe error");o.transport=r.name,t.emitReserved("upgradeError",o)}})))};function i(){n||(n=!0,h(),r.close(),r=null)}var s=function(e){var n=new Error("probe error: "+e);n.transport=r.name,i(),t.emitReserved("upgradeError",n)};function u(){s("transport closed")}function c(){s("socket closed")}function p(e){r&&e.name!==r.name&&i()}var h=function(){r.removeListener("open",o),r.removeListener("error",s),r.removeListener("close",u),t.off("close",c),t.off("upgrading",p)};r.once("open",o),r.once("error",s),r.once("close",u),this.once("close",c),this.once("upgrading",p),r.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)for(var e=0,t=this.upgrades.length;e1))return this.writeBuffer;for(var e,t=1,r=0;r=57344?r+=3:(n++,r+=4);return r}(e):Math.ceil(1.33*(e.byteLength||e.size))),r>0&&t>this.maxPayload)return this.writeBuffer.slice(0,r);t+=2}return this.writeBuffer}},{key:"write",value:function(e,t,r){return this.sendPacket("message",e,t,r),this}},{key:"send",value:function(e,t,r){return this.sendPacket("message",e,t,r),this}},{key:"sendPacket",value:function(e,t,r,n){if("function"==typeof t&&(n=t,t=void 0),"function"==typeof r&&(n=r,r=null),"closing"!==this.readyState&&"closed"!==this.readyState){(r=r||{}).compress=!1!==r.compress;var o={type:e,data:t,options:r};this.emitReserved("packetCreate",o),this.writeBuffer.push(o),n&&this.once("flush",n),this.flush()}}},{key:"close",value:function(){var e=this,t=function(){e.onClose("forced close"),e.transport.close()},r=function r(){e.off("upgrade",r),e.off("upgradeError",r),t()},n=function(){e.once("upgrade",r),e.once("upgradeError",r)};return"opening"!==this.readyState&&"open"!==this.readyState||(this.readyState="closing",this.writeBuffer.length?this.once("drain",(function(){e.upgrading?n():t()})):this.upgrading?n():t()),this}},{key:"onError",value:function(e){a.priorWebsocketSuccess=!1,this.emitReserved("error",e),this.onClose("transport error",e)}},{key:"onClose",value:function(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("beforeunload",this.beforeunloadEventListener,!1),removeEventListener("offline",this.offlineEventListener,!1)),this.readyState="closed",this.id=null,this.emitReserved("close",e,t),this.writeBuffer=[],this.prevBufferLen=0)}},{key:"filterUpgrades",value:function(e){for(var t=[],r=0,n=e.length;r {\n PACKET_TYPES_REVERSE[PACKET_TYPES[key]] = key;\n});\nconst ERROR_PACKET = { type: \"error\", data: \"parser error\" };\nexport { PACKET_TYPES, PACKET_TYPES_REVERSE, ERROR_PACKET };\n","/*\n * base64-arraybuffer 1.0.1 \n * Copyright (c) 2022 Niklas von Hertzen \n * Released under MIT License\n */\nvar chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n// Use a lookup table to find the index.\nvar lookup = typeof Uint8Array === 'undefined' ? [] : new Uint8Array(256);\nfor (var i = 0; i < chars.length; i++) {\n lookup[chars.charCodeAt(i)] = i;\n}\nvar encode = function (arraybuffer) {\n var bytes = new Uint8Array(arraybuffer), i, len = bytes.length, base64 = '';\n for (i = 0; i < len; i += 3) {\n base64 += chars[bytes[i] >> 2];\n base64 += chars[((bytes[i] & 3) << 4) | (bytes[i + 1] >> 4)];\n base64 += chars[((bytes[i + 1] & 15) << 2) | (bytes[i + 2] >> 6)];\n base64 += chars[bytes[i + 2] & 63];\n }\n if (len % 3 === 2) {\n base64 = base64.substring(0, base64.length - 1) + '=';\n }\n else if (len % 3 === 1) {\n base64 = base64.substring(0, base64.length - 2) + '==';\n }\n return base64;\n};\nvar decode = function (base64) {\n var bufferLength = base64.length * 0.75, len = base64.length, i, p = 0, encoded1, encoded2, encoded3, encoded4;\n if (base64[base64.length - 1] === '=') {\n bufferLength--;\n if (base64[base64.length - 2] === '=') {\n bufferLength--;\n }\n }\n var arraybuffer = new ArrayBuffer(bufferLength), bytes = new Uint8Array(arraybuffer);\n for (i = 0; i < len; i += 4) {\n encoded1 = lookup[base64.charCodeAt(i)];\n encoded2 = lookup[base64.charCodeAt(i + 1)];\n encoded3 = lookup[base64.charCodeAt(i + 2)];\n encoded4 = lookup[base64.charCodeAt(i + 3)];\n bytes[p++] = (encoded1 << 2) | (encoded2 >> 4);\n bytes[p++] = ((encoded2 & 15) << 4) | (encoded3 >> 2);\n bytes[p++] = ((encoded3 & 3) << 6) | (encoded4 & 63);\n }\n return arraybuffer;\n};\n\nexport { decode, encode };\n//# sourceMappingURL=base64-arraybuffer.es5.js.map\n","import { PACKET_TYPES } from \"./commons.js\";\nconst withNativeBlob = typeof Blob === \"function\" ||\n (typeof Blob !== \"undefined\" &&\n Object.prototype.toString.call(Blob) === \"[object BlobConstructor]\");\nconst withNativeArrayBuffer = typeof ArrayBuffer === \"function\";\n// ArrayBuffer.isView method is not defined in IE10\nconst isView = obj => {\n return typeof ArrayBuffer.isView === \"function\"\n ? ArrayBuffer.isView(obj)\n : obj && obj.buffer instanceof ArrayBuffer;\n};\nconst encodePacket = ({ type, data }, supportsBinary, callback) => {\n if (withNativeBlob && data instanceof Blob) {\n if (supportsBinary) {\n return callback(data);\n }\n else {\n return encodeBlobAsBase64(data, callback);\n }\n }\n else if (withNativeArrayBuffer &&\n (data instanceof ArrayBuffer || isView(data))) {\n if (supportsBinary) {\n return callback(data);\n }\n else {\n return encodeBlobAsBase64(new Blob([data]), callback);\n }\n }\n // plain string\n return callback(PACKET_TYPES[type] + (data || \"\"));\n};\nconst encodeBlobAsBase64 = (data, callback) => {\n const fileReader = new FileReader();\n fileReader.onload = function () {\n const content = fileReader.result.split(\",\")[1];\n callback(\"b\" + content);\n };\n return fileReader.readAsDataURL(data);\n};\nexport default encodePacket;\n","import { ERROR_PACKET, PACKET_TYPES_REVERSE } from \"./commons.js\";\nimport { decode } from \"@socket.io/base64-arraybuffer\";\nconst withNativeArrayBuffer = typeof ArrayBuffer === \"function\";\nconst decodePacket = (encodedPacket, binaryType) => {\n if (typeof encodedPacket !== \"string\") {\n return {\n type: \"message\",\n data: mapBinary(encodedPacket, binaryType)\n };\n }\n const type = encodedPacket.charAt(0);\n if (type === \"b\") {\n return {\n type: \"message\",\n data: decodeBase64Packet(encodedPacket.substring(1), binaryType)\n };\n }\n const packetType = PACKET_TYPES_REVERSE[type];\n if (!packetType) {\n return ERROR_PACKET;\n }\n return encodedPacket.length > 1\n ? {\n type: PACKET_TYPES_REVERSE[type],\n data: encodedPacket.substring(1)\n }\n : {\n type: PACKET_TYPES_REVERSE[type]\n };\n};\nconst decodeBase64Packet = (data, binaryType) => {\n if (withNativeArrayBuffer) {\n const decoded = decode(data);\n return mapBinary(decoded, binaryType);\n }\n else {\n return { base64: true, data }; // fallback for old browsers\n }\n};\nconst mapBinary = (data, binaryType) => {\n switch (binaryType) {\n case \"blob\":\n return data instanceof ArrayBuffer ? new Blob([data]) : data;\n case \"arraybuffer\":\n default:\n return data; // assuming the data is already an ArrayBuffer\n }\n};\nexport default decodePacket;\n","import encodePacket from \"./encodePacket.js\";\nimport decodePacket from \"./decodePacket.js\";\nconst SEPARATOR = String.fromCharCode(30); // see https://en.wikipedia.org/wiki/Delimiter#ASCII_delimited_text\nconst encodePayload = (packets, callback) => {\n // some packets may be added to the array while encoding, so the initial length must be saved\n const length = packets.length;\n const encodedPackets = new Array(length);\n let count = 0;\n packets.forEach((packet, i) => {\n // force base64 encoding for binary packets\n encodePacket(packet, false, encodedPacket => {\n encodedPackets[i] = encodedPacket;\n if (++count === length) {\n callback(encodedPackets.join(SEPARATOR));\n }\n });\n });\n};\nconst decodePayload = (encodedPayload, binaryType) => {\n const encodedPackets = encodedPayload.split(SEPARATOR);\n const packets = [];\n for (let i = 0; i < encodedPackets.length; i++) {\n const decodedPacket = decodePacket(encodedPackets[i], binaryType);\n packets.push(decodedPacket);\n if (decodedPacket.type === \"error\") {\n break;\n }\n }\n return packets;\n};\nexport const protocol = 4;\nexport { encodePacket, encodePayload, decodePacket, decodePayload };\n","/**\n * Initialize a new `Emitter`.\n *\n * @api public\n */\n\nexport function Emitter(obj) {\n if (obj) return mixin(obj);\n}\n\n/**\n * Mixin the emitter properties.\n *\n * @param {Object} obj\n * @return {Object}\n * @api private\n */\n\nfunction mixin(obj) {\n for (var key in Emitter.prototype) {\n obj[key] = Emitter.prototype[key];\n }\n return obj;\n}\n\n/**\n * Listen on the given `event` with `fn`.\n *\n * @param {String} event\n * @param {Function} fn\n * @return {Emitter}\n * @api public\n */\n\nEmitter.prototype.on =\nEmitter.prototype.addEventListener = function(event, fn){\n this._callbacks = this._callbacks || {};\n (this._callbacks['$' + event] = this._callbacks['$' + event] || [])\n .push(fn);\n return this;\n};\n\n/**\n * Adds an `event` listener that will be invoked a single\n * time then automatically removed.\n *\n * @param {String} event\n * @param {Function} fn\n * @return {Emitter}\n * @api public\n */\n\nEmitter.prototype.once = function(event, fn){\n function on() {\n this.off(event, on);\n fn.apply(this, arguments);\n }\n\n on.fn = fn;\n this.on(event, on);\n return this;\n};\n\n/**\n * Remove the given callback for `event` or all\n * registered callbacks.\n *\n * @param {String} event\n * @param {Function} fn\n * @return {Emitter}\n * @api public\n */\n\nEmitter.prototype.off =\nEmitter.prototype.removeListener =\nEmitter.prototype.removeAllListeners =\nEmitter.prototype.removeEventListener = function(event, fn){\n this._callbacks = this._callbacks || {};\n\n // all\n if (0 == arguments.length) {\n this._callbacks = {};\n return this;\n }\n\n // specific event\n var callbacks = this._callbacks['$' + event];\n if (!callbacks) return this;\n\n // remove all handlers\n if (1 == arguments.length) {\n delete this._callbacks['$' + event];\n return this;\n }\n\n // remove specific handler\n var cb;\n for (var i = 0; i < callbacks.length; i++) {\n cb = callbacks[i];\n if (cb === fn || cb.fn === fn) {\n callbacks.splice(i, 1);\n break;\n }\n }\n\n // Remove event specific arrays for event types that no\n // one is subscribed for to avoid memory leak.\n if (callbacks.length === 0) {\n delete this._callbacks['$' + event];\n }\n\n return this;\n};\n\n/**\n * Emit `event` with the given args.\n *\n * @param {String} event\n * @param {Mixed} ...\n * @return {Emitter}\n */\n\nEmitter.prototype.emit = function(event){\n this._callbacks = this._callbacks || {};\n\n var args = new Array(arguments.length - 1)\n , callbacks = this._callbacks['$' + event];\n\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n\n if (callbacks) {\n callbacks = callbacks.slice(0);\n for (var i = 0, len = callbacks.length; i < len; ++i) {\n callbacks[i].apply(this, args);\n }\n }\n\n return this;\n};\n\n// alias used for reserved events (protected method)\nEmitter.prototype.emitReserved = Emitter.prototype.emit;\n\n/**\n * Return array of callbacks for `event`.\n *\n * @param {String} event\n * @return {Array}\n * @api public\n */\n\nEmitter.prototype.listeners = function(event){\n this._callbacks = this._callbacks || {};\n return this._callbacks['$' + event] || [];\n};\n\n/**\n * Check if this emitter has `event` handlers.\n *\n * @param {String} event\n * @return {Boolean}\n * @api public\n */\n\nEmitter.prototype.hasListeners = function(event){\n return !! this.listeners(event).length;\n};\n","export const globalThisShim = (() => {\n if (typeof self !== \"undefined\") {\n return self;\n }\n else if (typeof window !== \"undefined\") {\n return window;\n }\n else {\n return Function(\"return this\")();\n }\n})();\n","import { globalThisShim as globalThis } from \"./globalThis.js\";\nexport function pick(obj, ...attr) {\n return attr.reduce((acc, k) => {\n if (obj.hasOwnProperty(k)) {\n acc[k] = obj[k];\n }\n return acc;\n }, {});\n}\n// Keep a reference to the real timeout functions so they can be used when overridden\nconst NATIVE_SET_TIMEOUT = globalThis.setTimeout;\nconst NATIVE_CLEAR_TIMEOUT = globalThis.clearTimeout;\nexport function installTimerFunctions(obj, opts) {\n if (opts.useNativeTimers) {\n obj.setTimeoutFn = NATIVE_SET_TIMEOUT.bind(globalThis);\n obj.clearTimeoutFn = NATIVE_CLEAR_TIMEOUT.bind(globalThis);\n }\n else {\n obj.setTimeoutFn = globalThis.setTimeout.bind(globalThis);\n obj.clearTimeoutFn = globalThis.clearTimeout.bind(globalThis);\n }\n}\n// base64 encoded buffers are about 33% bigger (https://en.wikipedia.org/wiki/Base64)\nconst BASE64_OVERHEAD = 1.33;\n// we could also have used `new Blob([obj]).size`, but it isn't supported in IE9\nexport function byteLength(obj) {\n if (typeof obj === \"string\") {\n return utf8Length(obj);\n }\n // arraybuffer or blob\n return Math.ceil((obj.byteLength || obj.size) * BASE64_OVERHEAD);\n}\nfunction utf8Length(str) {\n let c = 0, length = 0;\n for (let i = 0, l = str.length; i < l; i++) {\n c = str.charCodeAt(i);\n if (c < 0x80) {\n length += 1;\n }\n else if (c < 0x800) {\n length += 2;\n }\n else if (c < 0xd800 || c >= 0xe000) {\n length += 3;\n }\n else {\n i++;\n length += 4;\n }\n }\n return length;\n}\n","import { decodePacket } from \"engine.io-parser\";\nimport { Emitter } from \"@socket.io/component-emitter\";\nimport { installTimerFunctions } from \"./util.js\";\nclass TransportError extends Error {\n constructor(reason, description, context) {\n super(reason);\n this.description = description;\n this.context = context;\n this.type = \"TransportError\";\n }\n}\nexport class Transport extends Emitter {\n /**\n * Transport abstract constructor.\n *\n * @param {Object} opts - options\n * @protected\n */\n constructor(opts) {\n super();\n this.writable = false;\n installTimerFunctions(this, opts);\n this.opts = opts;\n this.query = opts.query;\n this.socket = opts.socket;\n }\n /**\n * Emits an error.\n *\n * @param {String} reason\n * @param description\n * @param context - the error context\n * @return {Transport} for chaining\n * @protected\n */\n onError(reason, description, context) {\n super.emitReserved(\"error\", new TransportError(reason, description, context));\n return this;\n }\n /**\n * Opens the transport.\n */\n open() {\n this.readyState = \"opening\";\n this.doOpen();\n return this;\n }\n /**\n * Closes the transport.\n */\n close() {\n if (this.readyState === \"opening\" || this.readyState === \"open\") {\n this.doClose();\n this.onClose();\n }\n return this;\n }\n /**\n * Sends multiple packets.\n *\n * @param {Array} packets\n */\n send(packets) {\n if (this.readyState === \"open\") {\n this.write(packets);\n }\n else {\n // this might happen if the transport was silently closed in the beforeunload event handler\n }\n }\n /**\n * Called upon open\n *\n * @protected\n */\n onOpen() {\n this.readyState = \"open\";\n this.writable = true;\n super.emitReserved(\"open\");\n }\n /**\n * Called with data.\n *\n * @param {String} data\n * @protected\n */\n onData(data) {\n const packet = decodePacket(data, this.socket.binaryType);\n this.onPacket(packet);\n }\n /**\n * Called with a decoded packet.\n *\n * @protected\n */\n onPacket(packet) {\n super.emitReserved(\"packet\", packet);\n }\n /**\n * Called upon close.\n *\n * @protected\n */\n onClose(details) {\n this.readyState = \"closed\";\n super.emitReserved(\"close\", details);\n }\n /**\n * Pauses the transport, in order not to lose packets during an upgrade.\n *\n * @param onPause\n */\n pause(onPause) { }\n}\n","// imported from https://github.com/unshiftio/yeast\n'use strict';\nconst alphabet = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-_'.split(''), length = 64, map = {};\nlet seed = 0, i = 0, prev;\n/**\n * Return a string representing the specified number.\n *\n * @param {Number} num The number to convert.\n * @returns {String} The string representation of the number.\n * @api public\n */\nexport function encode(num) {\n let encoded = '';\n do {\n encoded = alphabet[num % length] + encoded;\n num = Math.floor(num / length);\n } while (num > 0);\n return encoded;\n}\n/**\n * Return the integer value specified by the given string.\n *\n * @param {String} str The string to convert.\n * @returns {Number} The integer value represented by the string.\n * @api public\n */\nexport function decode(str) {\n let decoded = 0;\n for (i = 0; i < str.length; i++) {\n decoded = decoded * length + map[str.charAt(i)];\n }\n return decoded;\n}\n/**\n * Yeast: A tiny growing id generator.\n *\n * @returns {String} A unique id.\n * @api public\n */\nexport function yeast() {\n const now = encode(+new Date());\n if (now !== prev)\n return seed = 0, prev = now;\n return now + '.' + encode(seed++);\n}\n//\n// Map each character to its index.\n//\nfor (; i < length; i++)\n map[alphabet[i]] = i;\n","// imported from https://github.com/galkn/querystring\n/**\n * Compiles a querystring\n * Returns string representation of the object\n *\n * @param {Object}\n * @api private\n */\nexport function encode(obj) {\n let str = '';\n for (let i in obj) {\n if (obj.hasOwnProperty(i)) {\n if (str.length)\n str += '&';\n str += encodeURIComponent(i) + '=' + encodeURIComponent(obj[i]);\n }\n }\n return str;\n}\n/**\n * Parses a simple querystring into an object\n *\n * @param {String} qs\n * @api private\n */\nexport function decode(qs) {\n let qry = {};\n let pairs = qs.split('&');\n for (let i = 0, l = pairs.length; i < l; i++) {\n let pair = pairs[i].split('=');\n qry[decodeURIComponent(pair[0])] = decodeURIComponent(pair[1]);\n }\n return qry;\n}\n","// imported from https://github.com/component/has-cors\nlet value = false;\ntry {\n value = typeof XMLHttpRequest !== 'undefined' &&\n 'withCredentials' in new XMLHttpRequest();\n}\ncatch (err) {\n // if XMLHttp support is disabled in IE then it will throw\n // when trying to create\n}\nexport const hasCORS = value;\n","// browser shim for xmlhttprequest module\nimport { hasCORS } from \"../contrib/has-cors.js\";\nimport { globalThisShim as globalThis } from \"../globalThis.js\";\nexport function XHR(opts) {\n const xdomain = opts.xdomain;\n // XMLHttpRequest can be disabled on IE\n try {\n if (\"undefined\" !== typeof XMLHttpRequest && (!xdomain || hasCORS)) {\n return new XMLHttpRequest();\n }\n }\n catch (e) { }\n if (!xdomain) {\n try {\n return new globalThis[[\"Active\"].concat(\"Object\").join(\"X\")](\"Microsoft.XMLHTTP\");\n }\n catch (e) { }\n }\n}\n","import { Transport } from \"../transport.js\";\nimport { yeast } from \"../contrib/yeast.js\";\nimport { encode } from \"../contrib/parseqs.js\";\nimport { encodePayload, decodePayload } from \"engine.io-parser\";\nimport { XHR as XMLHttpRequest } from \"./xmlhttprequest.js\";\nimport { Emitter } from \"@socket.io/component-emitter\";\nimport { installTimerFunctions, pick } from \"../util.js\";\nimport { globalThisShim as globalThis } from \"../globalThis.js\";\nfunction empty() { }\nconst hasXHR2 = (function () {\n const xhr = new XMLHttpRequest({\n xdomain: false,\n });\n return null != xhr.responseType;\n})();\nexport class Polling extends Transport {\n /**\n * XHR Polling constructor.\n *\n * @param {Object} opts\n * @package\n */\n constructor(opts) {\n super(opts);\n this.polling = false;\n if (typeof location !== \"undefined\") {\n const isSSL = \"https:\" === location.protocol;\n let port = location.port;\n // some user agents have empty `location.port`\n if (!port) {\n port = isSSL ? \"443\" : \"80\";\n }\n this.xd =\n (typeof location !== \"undefined\" &&\n opts.hostname !== location.hostname) ||\n port !== opts.port;\n this.xs = opts.secure !== isSSL;\n }\n /**\n * XHR supports binary\n */\n const forceBase64 = opts && opts.forceBase64;\n this.supportsBinary = hasXHR2 && !forceBase64;\n }\n get name() {\n return \"polling\";\n }\n /**\n * Opens the socket (triggers polling). We write a PING message to determine\n * when the transport is open.\n *\n * @protected\n */\n doOpen() {\n this.poll();\n }\n /**\n * Pauses polling.\n *\n * @param {Function} onPause - callback upon buffers are flushed and transport is paused\n * @package\n */\n pause(onPause) {\n this.readyState = \"pausing\";\n const pause = () => {\n this.readyState = \"paused\";\n onPause();\n };\n if (this.polling || !this.writable) {\n let total = 0;\n if (this.polling) {\n total++;\n this.once(\"pollComplete\", function () {\n --total || pause();\n });\n }\n if (!this.writable) {\n total++;\n this.once(\"drain\", function () {\n --total || pause();\n });\n }\n }\n else {\n pause();\n }\n }\n /**\n * Starts polling cycle.\n *\n * @private\n */\n poll() {\n this.polling = true;\n this.doPoll();\n this.emitReserved(\"poll\");\n }\n /**\n * Overloads onData to detect payloads.\n *\n * @protected\n */\n onData(data) {\n const callback = (packet) => {\n // if its the first message we consider the transport open\n if (\"opening\" === this.readyState && packet.type === \"open\") {\n this.onOpen();\n }\n // if its a close packet, we close the ongoing requests\n if (\"close\" === packet.type) {\n this.onClose({ description: \"transport closed by the server\" });\n return false;\n }\n // otherwise bypass onData and handle the message\n this.onPacket(packet);\n };\n // decode payload\n decodePayload(data, this.socket.binaryType).forEach(callback);\n // if an event did not trigger closing\n if (\"closed\" !== this.readyState) {\n // if we got data we're not polling\n this.polling = false;\n this.emitReserved(\"pollComplete\");\n if (\"open\" === this.readyState) {\n this.poll();\n }\n else {\n }\n }\n }\n /**\n * For polling, send a close packet.\n *\n * @protected\n */\n doClose() {\n const close = () => {\n this.write([{ type: \"close\" }]);\n };\n if (\"open\" === this.readyState) {\n close();\n }\n else {\n // in case we're trying to close while\n // handshaking is in progress (GH-164)\n this.once(\"open\", close);\n }\n }\n /**\n * Writes a packets payload.\n *\n * @param {Array} packets - data packets\n * @protected\n */\n write(packets) {\n this.writable = false;\n encodePayload(packets, (data) => {\n this.doWrite(data, () => {\n this.writable = true;\n this.emitReserved(\"drain\");\n });\n });\n }\n /**\n * Generates uri for connection.\n *\n * @private\n */\n uri() {\n let query = this.query || {};\n const schema = this.opts.secure ? \"https\" : \"http\";\n let port = \"\";\n // cache busting is forced\n if (false !== this.opts.timestampRequests) {\n query[this.opts.timestampParam] = yeast();\n }\n if (!this.supportsBinary && !query.sid) {\n query.b64 = 1;\n }\n // avoid port if default for schema\n if (this.opts.port &&\n ((\"https\" === schema && Number(this.opts.port) !== 443) ||\n (\"http\" === schema && Number(this.opts.port) !== 80))) {\n port = \":\" + this.opts.port;\n }\n const encodedQuery = encode(query);\n const ipv6 = this.opts.hostname.indexOf(\":\") !== -1;\n return (schema +\n \"://\" +\n (ipv6 ? \"[\" + this.opts.hostname + \"]\" : this.opts.hostname) +\n port +\n this.opts.path +\n (encodedQuery.length ? \"?\" + encodedQuery : \"\"));\n }\n /**\n * Creates a request.\n *\n * @param {String} method\n * @private\n */\n request(opts = {}) {\n Object.assign(opts, { xd: this.xd, xs: this.xs }, this.opts);\n return new Request(this.uri(), opts);\n }\n /**\n * Sends data.\n *\n * @param {String} data to send.\n * @param {Function} called upon flush.\n * @private\n */\n doWrite(data, fn) {\n const req = this.request({\n method: \"POST\",\n data: data,\n });\n req.on(\"success\", fn);\n req.on(\"error\", (xhrStatus, context) => {\n this.onError(\"xhr post error\", xhrStatus, context);\n });\n }\n /**\n * Starts a poll cycle.\n *\n * @private\n */\n doPoll() {\n const req = this.request();\n req.on(\"data\", this.onData.bind(this));\n req.on(\"error\", (xhrStatus, context) => {\n this.onError(\"xhr poll error\", xhrStatus, context);\n });\n this.pollXhr = req;\n }\n}\nexport class Request extends Emitter {\n /**\n * Request constructor\n *\n * @param {Object} options\n * @package\n */\n constructor(uri, opts) {\n super();\n installTimerFunctions(this, opts);\n this.opts = opts;\n this.method = opts.method || \"GET\";\n this.uri = uri;\n this.async = false !== opts.async;\n this.data = undefined !== opts.data ? opts.data : null;\n this.create();\n }\n /**\n * Creates the XHR object and sends the request.\n *\n * @private\n */\n create() {\n const opts = pick(this.opts, \"agent\", \"pfx\", \"key\", \"passphrase\", \"cert\", \"ca\", \"ciphers\", \"rejectUnauthorized\", \"autoUnref\");\n opts.xdomain = !!this.opts.xd;\n opts.xscheme = !!this.opts.xs;\n const xhr = (this.xhr = new XMLHttpRequest(opts));\n try {\n xhr.open(this.method, this.uri, this.async);\n try {\n if (this.opts.extraHeaders) {\n xhr.setDisableHeaderCheck && xhr.setDisableHeaderCheck(true);\n for (let i in this.opts.extraHeaders) {\n if (this.opts.extraHeaders.hasOwnProperty(i)) {\n xhr.setRequestHeader(i, this.opts.extraHeaders[i]);\n }\n }\n }\n }\n catch (e) { }\n if (\"POST\" === this.method) {\n try {\n xhr.setRequestHeader(\"Content-type\", \"text/plain;charset=UTF-8\");\n }\n catch (e) { }\n }\n try {\n xhr.setRequestHeader(\"Accept\", \"*/*\");\n }\n catch (e) { }\n // ie6 check\n if (\"withCredentials\" in xhr) {\n xhr.withCredentials = this.opts.withCredentials;\n }\n if (this.opts.requestTimeout) {\n xhr.timeout = this.opts.requestTimeout;\n }\n xhr.onreadystatechange = () => {\n if (4 !== xhr.readyState)\n return;\n if (200 === xhr.status || 1223 === xhr.status) {\n this.onLoad();\n }\n else {\n // make sure the `error` event handler that's user-set\n // does not throw in the same tick and gets caught here\n this.setTimeoutFn(() => {\n this.onError(typeof xhr.status === \"number\" ? xhr.status : 0);\n }, 0);\n }\n };\n xhr.send(this.data);\n }\n catch (e) {\n // Need to defer since .create() is called directly from the constructor\n // and thus the 'error' event can only be only bound *after* this exception\n // occurs. Therefore, also, we cannot throw here at all.\n this.setTimeoutFn(() => {\n this.onError(e);\n }, 0);\n return;\n }\n if (typeof document !== \"undefined\") {\n this.index = Request.requestsCount++;\n Request.requests[this.index] = this;\n }\n }\n /**\n * Called upon error.\n *\n * @private\n */\n onError(err) {\n this.emitReserved(\"error\", err, this.xhr);\n this.cleanup(true);\n }\n /**\n * Cleans up house.\n *\n * @private\n */\n cleanup(fromError) {\n if (\"undefined\" === typeof this.xhr || null === this.xhr) {\n return;\n }\n this.xhr.onreadystatechange = empty;\n if (fromError) {\n try {\n this.xhr.abort();\n }\n catch (e) { }\n }\n if (typeof document !== \"undefined\") {\n delete Request.requests[this.index];\n }\n this.xhr = null;\n }\n /**\n * Called upon load.\n *\n * @private\n */\n onLoad() {\n const data = this.xhr.responseText;\n if (data !== null) {\n this.emitReserved(\"data\", data);\n this.emitReserved(\"success\");\n this.cleanup();\n }\n }\n /**\n * Aborts the request.\n *\n * @package\n */\n abort() {\n this.cleanup();\n }\n}\nRequest.requestsCount = 0;\nRequest.requests = {};\n/**\n * Aborts pending requests when unloading the window. This is needed to prevent\n * memory leaks (e.g. when using IE) and to ensure that no spurious error is\n * emitted.\n */\nif (typeof document !== \"undefined\") {\n // @ts-ignore\n if (typeof attachEvent === \"function\") {\n // @ts-ignore\n attachEvent(\"onunload\", unloadHandler);\n }\n else if (typeof addEventListener === \"function\") {\n const terminationEvent = \"onpagehide\" in globalThis ? \"pagehide\" : \"unload\";\n addEventListener(terminationEvent, unloadHandler, false);\n }\n}\nfunction unloadHandler() {\n for (let i in Request.requests) {\n if (Request.requests.hasOwnProperty(i)) {\n Request.requests[i].abort();\n }\n }\n}\n","import { globalThisShim as globalThis } from \"../globalThis.js\";\nexport const nextTick = (() => {\n const isPromiseAvailable = typeof Promise === \"function\" && typeof Promise.resolve === \"function\";\n if (isPromiseAvailable) {\n return (cb) => Promise.resolve().then(cb);\n }\n else {\n return (cb, setTimeoutFn) => setTimeoutFn(cb, 0);\n }\n})();\nexport const WebSocket = globalThis.WebSocket || globalThis.MozWebSocket;\nexport const usingBrowserWebSocket = true;\nexport const defaultBinaryType = \"arraybuffer\";\n","import { Transport } from \"../transport.js\";\nimport { encode } from \"../contrib/parseqs.js\";\nimport { yeast } from \"../contrib/yeast.js\";\nimport { pick } from \"../util.js\";\nimport { defaultBinaryType, nextTick, usingBrowserWebSocket, WebSocket, } from \"./websocket-constructor.js\";\nimport { encodePacket } from \"engine.io-parser\";\n// detect ReactNative environment\nconst isReactNative = typeof navigator !== \"undefined\" &&\n typeof navigator.product === \"string\" &&\n navigator.product.toLowerCase() === \"reactnative\";\nexport class WS extends Transport {\n /**\n * WebSocket transport constructor.\n *\n * @param {Object} opts - connection options\n * @protected\n */\n constructor(opts) {\n super(opts);\n this.supportsBinary = !opts.forceBase64;\n }\n get name() {\n return \"websocket\";\n }\n doOpen() {\n if (!this.check()) {\n // let probe timeout\n return;\n }\n const uri = this.uri();\n const protocols = this.opts.protocols;\n // React Native only supports the 'headers' option, and will print a warning if anything else is passed\n const opts = isReactNative\n ? {}\n : pick(this.opts, \"agent\", \"perMessageDeflate\", \"pfx\", \"key\", \"passphrase\", \"cert\", \"ca\", \"ciphers\", \"rejectUnauthorized\", \"localAddress\", \"protocolVersion\", \"origin\", \"maxPayload\", \"family\", \"checkServerIdentity\");\n if (this.opts.extraHeaders) {\n opts.headers = this.opts.extraHeaders;\n }\n try {\n this.ws =\n usingBrowserWebSocket && !isReactNative\n ? protocols\n ? new WebSocket(uri, protocols)\n : new WebSocket(uri)\n : new WebSocket(uri, protocols, opts);\n }\n catch (err) {\n return this.emitReserved(\"error\", err);\n }\n this.ws.binaryType = this.socket.binaryType || defaultBinaryType;\n this.addEventListeners();\n }\n /**\n * Adds event listeners to the socket\n *\n * @private\n */\n addEventListeners() {\n this.ws.onopen = () => {\n if (this.opts.autoUnref) {\n this.ws._socket.unref();\n }\n this.onOpen();\n };\n this.ws.onclose = (closeEvent) => this.onClose({\n description: \"websocket connection closed\",\n context: closeEvent,\n });\n this.ws.onmessage = (ev) => this.onData(ev.data);\n this.ws.onerror = (e) => this.onError(\"websocket error\", e);\n }\n write(packets) {\n this.writable = false;\n // encodePacket efficient as it uses WS framing\n // no need for encodePayload\n for (let i = 0; i < packets.length; i++) {\n const packet = packets[i];\n const lastPacket = i === packets.length - 1;\n encodePacket(packet, this.supportsBinary, (data) => {\n // always create a new object (GH-437)\n const opts = {};\n if (!usingBrowserWebSocket) {\n if (packet.options) {\n opts.compress = packet.options.compress;\n }\n if (this.opts.perMessageDeflate) {\n const len = \n // @ts-ignore\n \"string\" === typeof data ? Buffer.byteLength(data) : data.length;\n if (len < this.opts.perMessageDeflate.threshold) {\n opts.compress = false;\n }\n }\n }\n // Sometimes the websocket has already been closed but the browser didn't\n // have a chance of informing us about it yet, in that case send will\n // throw an error\n try {\n if (usingBrowserWebSocket) {\n // TypeError is thrown when passing the second argument on Safari\n this.ws.send(data);\n }\n else {\n this.ws.send(data, opts);\n }\n }\n catch (e) {\n }\n if (lastPacket) {\n // fake drain\n // defer to next tick to allow Socket to clear writeBuffer\n nextTick(() => {\n this.writable = true;\n this.emitReserved(\"drain\");\n }, this.setTimeoutFn);\n }\n });\n }\n }\n doClose() {\n if (typeof this.ws !== \"undefined\") {\n this.ws.close();\n this.ws = null;\n }\n }\n /**\n * Generates uri for connection.\n *\n * @private\n */\n uri() {\n let query = this.query || {};\n const schema = this.opts.secure ? \"wss\" : \"ws\";\n let port = \"\";\n // avoid port if default for schema\n if (this.opts.port &&\n ((\"wss\" === schema && Number(this.opts.port) !== 443) ||\n (\"ws\" === schema && Number(this.opts.port) !== 80))) {\n port = \":\" + this.opts.port;\n }\n // append timestamp to URI\n if (this.opts.timestampRequests) {\n query[this.opts.timestampParam] = yeast();\n }\n // communicate binary support capabilities\n if (!this.supportsBinary) {\n query.b64 = 1;\n }\n const encodedQuery = encode(query);\n const ipv6 = this.opts.hostname.indexOf(\":\") !== -1;\n return (schema +\n \"://\" +\n (ipv6 ? \"[\" + this.opts.hostname + \"]\" : this.opts.hostname) +\n port +\n this.opts.path +\n (encodedQuery.length ? \"?\" + encodedQuery : \"\"));\n }\n /**\n * Feature detection for WebSocket.\n *\n * @return {Boolean} whether this transport is available.\n * @private\n */\n check() {\n return !!WebSocket;\n }\n}\n","import { Polling } from \"./polling.js\";\nimport { WS } from \"./websocket.js\";\nexport const transports = {\n websocket: WS,\n polling: Polling,\n};\n","// imported from https://github.com/galkn/parseuri\n/**\n * Parses a URI\n *\n * Note: we could also have used the built-in URL object, but it isn't supported on all platforms.\n *\n * See:\n * - https://developer.mozilla.org/en-US/docs/Web/API/URL\n * - https://caniuse.com/url\n * - https://www.rfc-editor.org/rfc/rfc3986#appendix-B\n *\n * History of the parse() method:\n * - first commit: https://github.com/socketio/socket.io-client/commit/4ee1d5d94b3906a9c052b459f1a818b15f38f91c\n * - export into its own module: https://github.com/socketio/engine.io-client/commit/de2c561e4564efeb78f1bdb1ba39ef81b2822cb3\n * - reimport: https://github.com/socketio/engine.io-client/commit/df32277c3f6d622eec5ed09f493cae3f3391d242\n *\n * @author Steven Levithan (MIT license)\n * @api private\n */\nconst re = /^(?:(?![^:@\\/?#]+:[^:@\\/]*@)(http|https|ws|wss):\\/\\/)?((?:(([^:@\\/?#]*)(?::([^:@\\/?#]*))?)?@)?((?:[a-f0-9]{0,4}:){2,7}[a-f0-9]{0,4}|[^:\\/?#]*)(?::(\\d*))?)(((\\/(?:[^?#](?![^?#\\/]*\\.[^?#\\/.]+(?:[?#]|$)))*\\/?)?([^?#\\/]*))(?:\\?([^#]*))?(?:#(.*))?)/;\nconst parts = [\n 'source', 'protocol', 'authority', 'userInfo', 'user', 'password', 'host', 'port', 'relative', 'path', 'directory', 'file', 'query', 'anchor'\n];\nexport function parse(str) {\n const src = str, b = str.indexOf('['), e = str.indexOf(']');\n if (b != -1 && e != -1) {\n str = str.substring(0, b) + str.substring(b, e).replace(/:/g, ';') + str.substring(e, str.length);\n }\n let m = re.exec(str || ''), uri = {}, i = 14;\n while (i--) {\n uri[parts[i]] = m[i] || '';\n }\n if (b != -1 && e != -1) {\n uri.source = src;\n uri.host = uri.host.substring(1, uri.host.length - 1).replace(/;/g, ':');\n uri.authority = uri.authority.replace('[', '').replace(']', '').replace(/;/g, ':');\n uri.ipv6uri = true;\n }\n uri.pathNames = pathNames(uri, uri['path']);\n uri.queryKey = queryKey(uri, uri['query']);\n return uri;\n}\nfunction pathNames(obj, path) {\n const regx = /\\/{2,9}/g, names = path.replace(regx, \"/\").split(\"/\");\n if (path.slice(0, 1) == '/' || path.length === 0) {\n names.splice(0, 1);\n }\n if (path.slice(-1) == '/') {\n names.splice(names.length - 1, 1);\n }\n return names;\n}\nfunction queryKey(uri, query) {\n const data = {};\n query.replace(/(?:^|&)([^&=]*)=?([^&]*)/g, function ($0, $1, $2) {\n if ($1) {\n data[$1] = $2;\n }\n });\n return data;\n}\n","import { transports } from \"./transports/index.js\";\nimport { installTimerFunctions, byteLength } from \"./util.js\";\nimport { decode } from \"./contrib/parseqs.js\";\nimport { parse } from \"./contrib/parseuri.js\";\nimport { Emitter } from \"@socket.io/component-emitter\";\nimport { protocol, } from \"engine.io-parser\";\nexport class Socket extends Emitter {\n /**\n * Socket constructor.\n *\n * @param {String|Object} uri - uri or options\n * @param {Object} opts - options\n */\n constructor(uri, opts = {}) {\n super();\n this.writeBuffer = [];\n if (uri && \"object\" === typeof uri) {\n opts = uri;\n uri = null;\n }\n if (uri) {\n uri = parse(uri);\n opts.hostname = uri.host;\n opts.secure = uri.protocol === \"https\" || uri.protocol === \"wss\";\n opts.port = uri.port;\n if (uri.query)\n opts.query = uri.query;\n }\n else if (opts.host) {\n opts.hostname = parse(opts.host).host;\n }\n installTimerFunctions(this, opts);\n this.secure =\n null != opts.secure\n ? opts.secure\n : typeof location !== \"undefined\" && \"https:\" === location.protocol;\n if (opts.hostname && !opts.port) {\n // if no port is specified manually, use the protocol default\n opts.port = this.secure ? \"443\" : \"80\";\n }\n this.hostname =\n opts.hostname ||\n (typeof location !== \"undefined\" ? location.hostname : \"localhost\");\n this.port =\n opts.port ||\n (typeof location !== \"undefined\" && location.port\n ? location.port\n : this.secure\n ? \"443\"\n : \"80\");\n this.transports = opts.transports || [\"polling\", \"websocket\"];\n this.writeBuffer = [];\n this.prevBufferLen = 0;\n this.opts = Object.assign({\n path: \"/engine.io\",\n agent: false,\n withCredentials: false,\n upgrade: true,\n timestampParam: \"t\",\n rememberUpgrade: false,\n addTrailingSlash: true,\n rejectUnauthorized: true,\n perMessageDeflate: {\n threshold: 1024,\n },\n transportOptions: {},\n closeOnBeforeunload: true,\n }, opts);\n this.opts.path =\n this.opts.path.replace(/\\/$/, \"\") +\n (this.opts.addTrailingSlash ? \"/\" : \"\");\n if (typeof this.opts.query === \"string\") {\n this.opts.query = decode(this.opts.query);\n }\n // set on handshake\n this.id = null;\n this.upgrades = null;\n this.pingInterval = null;\n this.pingTimeout = null;\n // set on heartbeat\n this.pingTimeoutTimer = null;\n if (typeof addEventListener === \"function\") {\n if (this.opts.closeOnBeforeunload) {\n // Firefox closes the connection when the \"beforeunload\" event is emitted but not Chrome. This event listener\n // ensures every browser behaves the same (no \"disconnect\" event at the Socket.IO level when the page is\n // closed/reloaded)\n this.beforeunloadEventListener = () => {\n if (this.transport) {\n // silently close the transport\n this.transport.removeAllListeners();\n this.transport.close();\n }\n };\n addEventListener(\"beforeunload\", this.beforeunloadEventListener, false);\n }\n if (this.hostname !== \"localhost\") {\n this.offlineEventListener = () => {\n this.onClose(\"transport close\", {\n description: \"network connection lost\",\n });\n };\n addEventListener(\"offline\", this.offlineEventListener, false);\n }\n }\n this.open();\n }\n /**\n * Creates transport of the given type.\n *\n * @param {String} name - transport name\n * @return {Transport}\n * @private\n */\n createTransport(name) {\n const query = Object.assign({}, this.opts.query);\n // append engine.io protocol identifier\n query.EIO = protocol;\n // transport name\n query.transport = name;\n // session id if we already have one\n if (this.id)\n query.sid = this.id;\n const opts = Object.assign({}, this.opts.transportOptions[name], this.opts, {\n query,\n socket: this,\n hostname: this.hostname,\n secure: this.secure,\n port: this.port,\n });\n return new transports[name](opts);\n }\n /**\n * Initializes transport to use and starts probe.\n *\n * @private\n */\n open() {\n let transport;\n if (this.opts.rememberUpgrade &&\n Socket.priorWebsocketSuccess &&\n this.transports.indexOf(\"websocket\") !== -1) {\n transport = \"websocket\";\n }\n else if (0 === this.transports.length) {\n // Emit error on next tick so it can be listened to\n this.setTimeoutFn(() => {\n this.emitReserved(\"error\", \"No transports available\");\n }, 0);\n return;\n }\n else {\n transport = this.transports[0];\n }\n this.readyState = \"opening\";\n // Retry with the next transport if the transport is disabled (jsonp: false)\n try {\n transport = this.createTransport(transport);\n }\n catch (e) {\n this.transports.shift();\n this.open();\n return;\n }\n transport.open();\n this.setTransport(transport);\n }\n /**\n * Sets the current transport. Disables the existing one (if any).\n *\n * @private\n */\n setTransport(transport) {\n if (this.transport) {\n this.transport.removeAllListeners();\n }\n // set up transport\n this.transport = transport;\n // set up transport listeners\n transport\n .on(\"drain\", this.onDrain.bind(this))\n .on(\"packet\", this.onPacket.bind(this))\n .on(\"error\", this.onError.bind(this))\n .on(\"close\", (reason) => this.onClose(\"transport close\", reason));\n }\n /**\n * Probes a transport.\n *\n * @param {String} name - transport name\n * @private\n */\n probe(name) {\n let transport = this.createTransport(name);\n let failed = false;\n Socket.priorWebsocketSuccess = false;\n const onTransportOpen = () => {\n if (failed)\n return;\n transport.send([{ type: \"ping\", data: \"probe\" }]);\n transport.once(\"packet\", (msg) => {\n if (failed)\n return;\n if (\"pong\" === msg.type && \"probe\" === msg.data) {\n this.upgrading = true;\n this.emitReserved(\"upgrading\", transport);\n if (!transport)\n return;\n Socket.priorWebsocketSuccess = \"websocket\" === transport.name;\n this.transport.pause(() => {\n if (failed)\n return;\n if (\"closed\" === this.readyState)\n return;\n cleanup();\n this.setTransport(transport);\n transport.send([{ type: \"upgrade\" }]);\n this.emitReserved(\"upgrade\", transport);\n transport = null;\n this.upgrading = false;\n this.flush();\n });\n }\n else {\n const err = new Error(\"probe error\");\n // @ts-ignore\n err.transport = transport.name;\n this.emitReserved(\"upgradeError\", err);\n }\n });\n };\n function freezeTransport() {\n if (failed)\n return;\n // Any callback called by transport should be ignored since now\n failed = true;\n cleanup();\n transport.close();\n transport = null;\n }\n // Handle any error that happens while probing\n const onerror = (err) => {\n const error = new Error(\"probe error: \" + err);\n // @ts-ignore\n error.transport = transport.name;\n freezeTransport();\n this.emitReserved(\"upgradeError\", error);\n };\n function onTransportClose() {\n onerror(\"transport closed\");\n }\n // When the socket is closed while we're probing\n function onclose() {\n onerror(\"socket closed\");\n }\n // When the socket is upgraded while we're probing\n function onupgrade(to) {\n if (transport && to.name !== transport.name) {\n freezeTransport();\n }\n }\n // Remove all listeners on the transport and on self\n const cleanup = () => {\n transport.removeListener(\"open\", onTransportOpen);\n transport.removeListener(\"error\", onerror);\n transport.removeListener(\"close\", onTransportClose);\n this.off(\"close\", onclose);\n this.off(\"upgrading\", onupgrade);\n };\n transport.once(\"open\", onTransportOpen);\n transport.once(\"error\", onerror);\n transport.once(\"close\", onTransportClose);\n this.once(\"close\", onclose);\n this.once(\"upgrading\", onupgrade);\n transport.open();\n }\n /**\n * Called when connection is deemed open.\n *\n * @private\n */\n onOpen() {\n this.readyState = \"open\";\n Socket.priorWebsocketSuccess = \"websocket\" === this.transport.name;\n this.emitReserved(\"open\");\n this.flush();\n // we check for `readyState` in case an `open`\n // listener already closed the socket\n if (\"open\" === this.readyState && this.opts.upgrade) {\n let i = 0;\n const l = this.upgrades.length;\n for (; i < l; i++) {\n this.probe(this.upgrades[i]);\n }\n }\n }\n /**\n * Handles a packet.\n *\n * @private\n */\n onPacket(packet) {\n if (\"opening\" === this.readyState ||\n \"open\" === this.readyState ||\n \"closing\" === this.readyState) {\n this.emitReserved(\"packet\", packet);\n // Socket is live - any packet counts\n this.emitReserved(\"heartbeat\");\n switch (packet.type) {\n case \"open\":\n this.onHandshake(JSON.parse(packet.data));\n break;\n case \"ping\":\n this.resetPingTimeout();\n this.sendPacket(\"pong\");\n this.emitReserved(\"ping\");\n this.emitReserved(\"pong\");\n break;\n case \"error\":\n const err = new Error(\"server error\");\n // @ts-ignore\n err.code = packet.data;\n this.onError(err);\n break;\n case \"message\":\n this.emitReserved(\"data\", packet.data);\n this.emitReserved(\"message\", packet.data);\n break;\n }\n }\n else {\n }\n }\n /**\n * Called upon handshake completion.\n *\n * @param {Object} data - handshake obj\n * @private\n */\n onHandshake(data) {\n this.emitReserved(\"handshake\", data);\n this.id = data.sid;\n this.transport.query.sid = data.sid;\n this.upgrades = this.filterUpgrades(data.upgrades);\n this.pingInterval = data.pingInterval;\n this.pingTimeout = data.pingTimeout;\n this.maxPayload = data.maxPayload;\n this.onOpen();\n // In case open handler closes socket\n if (\"closed\" === this.readyState)\n return;\n this.resetPingTimeout();\n }\n /**\n * Sets and resets ping timeout timer based on server pings.\n *\n * @private\n */\n resetPingTimeout() {\n this.clearTimeoutFn(this.pingTimeoutTimer);\n this.pingTimeoutTimer = this.setTimeoutFn(() => {\n this.onClose(\"ping timeout\");\n }, this.pingInterval + this.pingTimeout);\n if (this.opts.autoUnref) {\n this.pingTimeoutTimer.unref();\n }\n }\n /**\n * Called on `drain` event\n *\n * @private\n */\n onDrain() {\n this.writeBuffer.splice(0, this.prevBufferLen);\n // setting prevBufferLen = 0 is very important\n // for example, when upgrading, upgrade packet is sent over,\n // and a nonzero prevBufferLen could cause problems on `drain`\n this.prevBufferLen = 0;\n if (0 === this.writeBuffer.length) {\n this.emitReserved(\"drain\");\n }\n else {\n this.flush();\n }\n }\n /**\n * Flush write buffers.\n *\n * @private\n */\n flush() {\n if (\"closed\" !== this.readyState &&\n this.transport.writable &&\n !this.upgrading &&\n this.writeBuffer.length) {\n const packets = this.getWritablePackets();\n this.transport.send(packets);\n // keep track of current length of writeBuffer\n // splice writeBuffer and callbackBuffer on `drain`\n this.prevBufferLen = packets.length;\n this.emitReserved(\"flush\");\n }\n }\n /**\n * Ensure the encoded size of the writeBuffer is below the maxPayload value sent by the server (only for HTTP\n * long-polling)\n *\n * @private\n */\n getWritablePackets() {\n const shouldCheckPayloadSize = this.maxPayload &&\n this.transport.name === \"polling\" &&\n this.writeBuffer.length > 1;\n if (!shouldCheckPayloadSize) {\n return this.writeBuffer;\n }\n let payloadSize = 1; // first packet type\n for (let i = 0; i < this.writeBuffer.length; i++) {\n const data = this.writeBuffer[i].data;\n if (data) {\n payloadSize += byteLength(data);\n }\n if (i > 0 && payloadSize > this.maxPayload) {\n return this.writeBuffer.slice(0, i);\n }\n payloadSize += 2; // separator + packet type\n }\n return this.writeBuffer;\n }\n /**\n * Sends a message.\n *\n * @param {String} msg - message.\n * @param {Object} options.\n * @param {Function} callback function.\n * @return {Socket} for chaining.\n */\n write(msg, options, fn) {\n this.sendPacket(\"message\", msg, options, fn);\n return this;\n }\n send(msg, options, fn) {\n this.sendPacket(\"message\", msg, options, fn);\n return this;\n }\n /**\n * Sends a packet.\n *\n * @param {String} type: packet type.\n * @param {String} data.\n * @param {Object} options.\n * @param {Function} fn - callback function.\n * @private\n */\n sendPacket(type, data, options, fn) {\n if (\"function\" === typeof data) {\n fn = data;\n data = undefined;\n }\n if (\"function\" === typeof options) {\n fn = options;\n options = null;\n }\n if (\"closing\" === this.readyState || \"closed\" === this.readyState) {\n return;\n }\n options = options || {};\n options.compress = false !== options.compress;\n const packet = {\n type: type,\n data: data,\n options: options,\n };\n this.emitReserved(\"packetCreate\", packet);\n this.writeBuffer.push(packet);\n if (fn)\n this.once(\"flush\", fn);\n this.flush();\n }\n /**\n * Closes the connection.\n */\n close() {\n const close = () => {\n this.onClose(\"forced close\");\n this.transport.close();\n };\n const cleanupAndClose = () => {\n this.off(\"upgrade\", cleanupAndClose);\n this.off(\"upgradeError\", cleanupAndClose);\n close();\n };\n const waitForUpgrade = () => {\n // wait for upgrade to finish since we can't send packets while pausing a transport\n this.once(\"upgrade\", cleanupAndClose);\n this.once(\"upgradeError\", cleanupAndClose);\n };\n if (\"opening\" === this.readyState || \"open\" === this.readyState) {\n this.readyState = \"closing\";\n if (this.writeBuffer.length) {\n this.once(\"drain\", () => {\n if (this.upgrading) {\n waitForUpgrade();\n }\n else {\n close();\n }\n });\n }\n else if (this.upgrading) {\n waitForUpgrade();\n }\n else {\n close();\n }\n }\n return this;\n }\n /**\n * Called upon transport error\n *\n * @private\n */\n onError(err) {\n Socket.priorWebsocketSuccess = false;\n this.emitReserved(\"error\", err);\n this.onClose(\"transport error\", err);\n }\n /**\n * Called upon transport close.\n *\n * @private\n */\n onClose(reason, description) {\n if (\"opening\" === this.readyState ||\n \"open\" === this.readyState ||\n \"closing\" === this.readyState) {\n // clear timers\n this.clearTimeoutFn(this.pingTimeoutTimer);\n // stop event from firing again for transport\n this.transport.removeAllListeners(\"close\");\n // ensure transport won't stay open\n this.transport.close();\n // ignore further transport communication\n this.transport.removeAllListeners();\n if (typeof removeEventListener === \"function\") {\n removeEventListener(\"beforeunload\", this.beforeunloadEventListener, false);\n removeEventListener(\"offline\", this.offlineEventListener, false);\n }\n // set ready state\n this.readyState = \"closed\";\n // clear session id\n this.id = null;\n // emit close event\n this.emitReserved(\"close\", reason, description);\n // clean buffers after, so users can still\n // grab the buffers on `close` event\n this.writeBuffer = [];\n this.prevBufferLen = 0;\n }\n }\n /**\n * Filters upgrades, returning only those matching client transports.\n *\n * @param {Array} upgrades - server upgrades\n * @private\n */\n filterUpgrades(upgrades) {\n const filteredUpgrades = [];\n let i = 0;\n const j = upgrades.length;\n for (; i < j; i++) {\n if (~this.transports.indexOf(upgrades[i]))\n filteredUpgrades.push(upgrades[i]);\n }\n return filteredUpgrades;\n }\n}\nSocket.protocol = protocol;\n","import { Socket } from \"./socket.js\";\nexport default (uri, opts) => new Socket(uri, opts);\n"],"names":["PACKET_TYPES","Object","create","PACKET_TYPES_REVERSE","keys","forEach","key","ERROR_PACKET","type","data","withNativeBlob","Blob","prototype","toString","call","withNativeArrayBuffer","ArrayBuffer","encodePacket","supportsBinary","callback","obj","encodeBlobAsBase64","isView","buffer","fileReader","FileReader","onload","content","result","split","readAsDataURL","chars","lookup","Uint8Array","i","length","charCodeAt","decodePacket","encodedPacket","binaryType","mapBinary","charAt","decodeBase64Packet","substring","decoded","base64","encoded1","encoded2","encoded3","encoded4","bufferLength","len","p","arraybuffer","bytes","decode","SEPARATOR","String","fromCharCode","Emitter","mixin","on","addEventListener","event","fn","this","_callbacks","push","once","off","apply","arguments","removeListener","removeAllListeners","removeEventListener","cb","callbacks","splice","emit","args","Array","slice","emitReserved","listeners","hasListeners","globalThisShim","self","window","Function","pick","attr","reduce","acc","k","hasOwnProperty","NATIVE_SET_TIMEOUT","globalThis","setTimeout","NATIVE_CLEAR_TIMEOUT","clearTimeout","installTimerFunctions","opts","useNativeTimers","setTimeoutFn","bind","clearTimeoutFn","prev","TransportError","_inherits","reason","description","context","_classCallCheck","_this","Error","Transport","_this2","writable","query","socket","_createClass","value","_get","readyState","doOpen","doClose","onClose","packets","write","packet","onPacket","details","onPause","alphabet","map","seed","encode","num","encoded","Math","floor","yeast","now","Date","str","encodeURIComponent","qs","qry","pairs","l","pair","decodeURIComponent","XMLHttpRequest","err","hasCORS","XHR","xdomain","e","concat","join","empty","hasXHR2","responseType","Polling","polling","location","isSSL","protocol","port","xd","hostname","xs","secure","forceBase64","get","poll","pause","total","doPoll","encodedPayload","encodedPackets","decodedPacket","decodePayload","_this3","onOpen","close","_this4","count","encodePayload","_this5","doWrite","schema","timestampRequests","timestampParam","sid","b64","Number","encodedQuery","indexOf","path","_extends","Request","uri","req","request","method","xhrStatus","_this6","onError","onData","_this7","pollXhr","_this8","async","undefined","xscheme","xhr","open","extraHeaders","setDisableHeaderCheck","setRequestHeader","withCredentials","requestTimeout","timeout","onreadystatechange","status","_this9","onLoad","send","document","index","requestsCount","requests","cleanup","fromError","abort","responseText","attachEvent","unloadHandler","nextTick","Promise","resolve","then","WebSocket","MozWebSocket","isReactNative","navigator","product","toLowerCase","WS","check","protocols","headers","ws","addEventListeners","onopen","autoUnref","_socket","unref","onclose","closeEvent","onmessage","ev","onerror","lastPacket","_loop","transports","websocket","re","parts","parse","src","b","replace","m","exec","source","host","authority","ipv6uri","pathNames","regx","names","queryKey","$0","$1","$2","Socket","writeBuffer","prevBufferLen","agent","upgrade","rememberUpgrade","addTrailingSlash","rejectUnauthorized","perMessageDeflate","threshold","transportOptions","closeOnBeforeunload","id","upgrades","pingInterval","pingTimeout","pingTimeoutTimer","beforeunloadEventListener","transport","offlineEventListener","name","EIO","priorWebsocketSuccess","createTransport","shift","setTransport","onDrain","failed","onTransportOpen","msg","upgrading","flush","freezeTransport","error","onTransportClose","onupgrade","to","probe","onHandshake","JSON","resetPingTimeout","sendPacket","code","filterUpgrades","maxPayload","getWritablePackets","payloadSize","c","utf8Length","ceil","byteLength","size","options","compress","cleanupAndClose","waitForUpgrade","filteredUpgrades","j"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"engine.io.min.js","sources":["../node_modules/engine.io-parser/build/esm/commons.js","../node_modules/@socket.io/base64-arraybuffer/dist/base64-arraybuffer.es5.js","../node_modules/engine.io-parser/build/esm/encodePacket.browser.js","../node_modules/engine.io-parser/build/esm/decodePacket.browser.js","../node_modules/engine.io-parser/build/esm/index.js","../node_modules/@socket.io/component-emitter/index.mjs","../build/esm/globalThis.browser.js","../build/esm/util.js","../build/esm/contrib/yeast.js","../build/esm/transport.js","../build/esm/contrib/parseqs.js","../build/esm/contrib/has-cors.js","../build/esm/transports/xmlhttprequest.browser.js","../build/esm/transports/polling.js","../build/esm/transports/websocket-constructor.browser.js","../build/esm/transports/websocket.js","../build/esm/transports/index.js","../build/esm/contrib/parseuri.js","../build/esm/socket.js","../build/esm/browser-entrypoint.js"],"sourcesContent":["const PACKET_TYPES = Object.create(null); // no Map = no polyfill\nPACKET_TYPES[\"open\"] = \"0\";\nPACKET_TYPES[\"close\"] = \"1\";\nPACKET_TYPES[\"ping\"] = \"2\";\nPACKET_TYPES[\"pong\"] = \"3\";\nPACKET_TYPES[\"message\"] = \"4\";\nPACKET_TYPES[\"upgrade\"] = \"5\";\nPACKET_TYPES[\"noop\"] = \"6\";\nconst PACKET_TYPES_REVERSE = Object.create(null);\nObject.keys(PACKET_TYPES).forEach(key => {\n PACKET_TYPES_REVERSE[PACKET_TYPES[key]] = key;\n});\nconst ERROR_PACKET = { type: \"error\", data: \"parser error\" };\nexport { PACKET_TYPES, PACKET_TYPES_REVERSE, ERROR_PACKET };\n","/*\n * base64-arraybuffer 1.0.1 \n * Copyright (c) 2022 Niklas von Hertzen \n * Released under MIT License\n */\nvar chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n// Use a lookup table to find the index.\nvar lookup = typeof Uint8Array === 'undefined' ? [] : new Uint8Array(256);\nfor (var i = 0; i < chars.length; i++) {\n lookup[chars.charCodeAt(i)] = i;\n}\nvar encode = function (arraybuffer) {\n var bytes = new Uint8Array(arraybuffer), i, len = bytes.length, base64 = '';\n for (i = 0; i < len; i += 3) {\n base64 += chars[bytes[i] >> 2];\n base64 += chars[((bytes[i] & 3) << 4) | (bytes[i + 1] >> 4)];\n base64 += chars[((bytes[i + 1] & 15) << 2) | (bytes[i + 2] >> 6)];\n base64 += chars[bytes[i + 2] & 63];\n }\n if (len % 3 === 2) {\n base64 = base64.substring(0, base64.length - 1) + '=';\n }\n else if (len % 3 === 1) {\n base64 = base64.substring(0, base64.length - 2) + '==';\n }\n return base64;\n};\nvar decode = function (base64) {\n var bufferLength = base64.length * 0.75, len = base64.length, i, p = 0, encoded1, encoded2, encoded3, encoded4;\n if (base64[base64.length - 1] === '=') {\n bufferLength--;\n if (base64[base64.length - 2] === '=') {\n bufferLength--;\n }\n }\n var arraybuffer = new ArrayBuffer(bufferLength), bytes = new Uint8Array(arraybuffer);\n for (i = 0; i < len; i += 4) {\n encoded1 = lookup[base64.charCodeAt(i)];\n encoded2 = lookup[base64.charCodeAt(i + 1)];\n encoded3 = lookup[base64.charCodeAt(i + 2)];\n encoded4 = lookup[base64.charCodeAt(i + 3)];\n bytes[p++] = (encoded1 << 2) | (encoded2 >> 4);\n bytes[p++] = ((encoded2 & 15) << 4) | (encoded3 >> 2);\n bytes[p++] = ((encoded3 & 3) << 6) | (encoded4 & 63);\n }\n return arraybuffer;\n};\n\nexport { decode, encode };\n//# sourceMappingURL=base64-arraybuffer.es5.js.map\n","import { PACKET_TYPES } from \"./commons.js\";\nconst withNativeBlob = typeof Blob === \"function\" ||\n (typeof Blob !== \"undefined\" &&\n Object.prototype.toString.call(Blob) === \"[object BlobConstructor]\");\nconst withNativeArrayBuffer = typeof ArrayBuffer === \"function\";\n// ArrayBuffer.isView method is not defined in IE10\nconst isView = obj => {\n return typeof ArrayBuffer.isView === \"function\"\n ? ArrayBuffer.isView(obj)\n : obj && obj.buffer instanceof ArrayBuffer;\n};\nconst encodePacket = ({ type, data }, supportsBinary, callback) => {\n if (withNativeBlob && data instanceof Blob) {\n if (supportsBinary) {\n return callback(data);\n }\n else {\n return encodeBlobAsBase64(data, callback);\n }\n }\n else if (withNativeArrayBuffer &&\n (data instanceof ArrayBuffer || isView(data))) {\n if (supportsBinary) {\n return callback(data);\n }\n else {\n return encodeBlobAsBase64(new Blob([data]), callback);\n }\n }\n // plain string\n return callback(PACKET_TYPES[type] + (data || \"\"));\n};\nconst encodeBlobAsBase64 = (data, callback) => {\n const fileReader = new FileReader();\n fileReader.onload = function () {\n const content = fileReader.result.split(\",\")[1];\n callback(\"b\" + content);\n };\n return fileReader.readAsDataURL(data);\n};\nexport default encodePacket;\n","import { ERROR_PACKET, PACKET_TYPES_REVERSE } from \"./commons.js\";\nimport { decode } from \"@socket.io/base64-arraybuffer\";\nconst withNativeArrayBuffer = typeof ArrayBuffer === \"function\";\nconst decodePacket = (encodedPacket, binaryType) => {\n if (typeof encodedPacket !== \"string\") {\n return {\n type: \"message\",\n data: mapBinary(encodedPacket, binaryType)\n };\n }\n const type = encodedPacket.charAt(0);\n if (type === \"b\") {\n return {\n type: \"message\",\n data: decodeBase64Packet(encodedPacket.substring(1), binaryType)\n };\n }\n const packetType = PACKET_TYPES_REVERSE[type];\n if (!packetType) {\n return ERROR_PACKET;\n }\n return encodedPacket.length > 1\n ? {\n type: PACKET_TYPES_REVERSE[type],\n data: encodedPacket.substring(1)\n }\n : {\n type: PACKET_TYPES_REVERSE[type]\n };\n};\nconst decodeBase64Packet = (data, binaryType) => {\n if (withNativeArrayBuffer) {\n const decoded = decode(data);\n return mapBinary(decoded, binaryType);\n }\n else {\n return { base64: true, data }; // fallback for old browsers\n }\n};\nconst mapBinary = (data, binaryType) => {\n switch (binaryType) {\n case \"blob\":\n return data instanceof ArrayBuffer ? new Blob([data]) : data;\n case \"arraybuffer\":\n default:\n return data; // assuming the data is already an ArrayBuffer\n }\n};\nexport default decodePacket;\n","import encodePacket from \"./encodePacket.js\";\nimport decodePacket from \"./decodePacket.js\";\nconst SEPARATOR = String.fromCharCode(30); // see https://en.wikipedia.org/wiki/Delimiter#ASCII_delimited_text\nconst encodePayload = (packets, callback) => {\n // some packets may be added to the array while encoding, so the initial length must be saved\n const length = packets.length;\n const encodedPackets = new Array(length);\n let count = 0;\n packets.forEach((packet, i) => {\n // force base64 encoding for binary packets\n encodePacket(packet, false, encodedPacket => {\n encodedPackets[i] = encodedPacket;\n if (++count === length) {\n callback(encodedPackets.join(SEPARATOR));\n }\n });\n });\n};\nconst decodePayload = (encodedPayload, binaryType) => {\n const encodedPackets = encodedPayload.split(SEPARATOR);\n const packets = [];\n for (let i = 0; i < encodedPackets.length; i++) {\n const decodedPacket = decodePacket(encodedPackets[i], binaryType);\n packets.push(decodedPacket);\n if (decodedPacket.type === \"error\") {\n break;\n }\n }\n return packets;\n};\nexport const protocol = 4;\nexport { encodePacket, encodePayload, decodePacket, decodePayload };\n","/**\n * Initialize a new `Emitter`.\n *\n * @api public\n */\n\nexport function Emitter(obj) {\n if (obj) return mixin(obj);\n}\n\n/**\n * Mixin the emitter properties.\n *\n * @param {Object} obj\n * @return {Object}\n * @api private\n */\n\nfunction mixin(obj) {\n for (var key in Emitter.prototype) {\n obj[key] = Emitter.prototype[key];\n }\n return obj;\n}\n\n/**\n * Listen on the given `event` with `fn`.\n *\n * @param {String} event\n * @param {Function} fn\n * @return {Emitter}\n * @api public\n */\n\nEmitter.prototype.on =\nEmitter.prototype.addEventListener = function(event, fn){\n this._callbacks = this._callbacks || {};\n (this._callbacks['$' + event] = this._callbacks['$' + event] || [])\n .push(fn);\n return this;\n};\n\n/**\n * Adds an `event` listener that will be invoked a single\n * time then automatically removed.\n *\n * @param {String} event\n * @param {Function} fn\n * @return {Emitter}\n * @api public\n */\n\nEmitter.prototype.once = function(event, fn){\n function on() {\n this.off(event, on);\n fn.apply(this, arguments);\n }\n\n on.fn = fn;\n this.on(event, on);\n return this;\n};\n\n/**\n * Remove the given callback for `event` or all\n * registered callbacks.\n *\n * @param {String} event\n * @param {Function} fn\n * @return {Emitter}\n * @api public\n */\n\nEmitter.prototype.off =\nEmitter.prototype.removeListener =\nEmitter.prototype.removeAllListeners =\nEmitter.prototype.removeEventListener = function(event, fn){\n this._callbacks = this._callbacks || {};\n\n // all\n if (0 == arguments.length) {\n this._callbacks = {};\n return this;\n }\n\n // specific event\n var callbacks = this._callbacks['$' + event];\n if (!callbacks) return this;\n\n // remove all handlers\n if (1 == arguments.length) {\n delete this._callbacks['$' + event];\n return this;\n }\n\n // remove specific handler\n var cb;\n for (var i = 0; i < callbacks.length; i++) {\n cb = callbacks[i];\n if (cb === fn || cb.fn === fn) {\n callbacks.splice(i, 1);\n break;\n }\n }\n\n // Remove event specific arrays for event types that no\n // one is subscribed for to avoid memory leak.\n if (callbacks.length === 0) {\n delete this._callbacks['$' + event];\n }\n\n return this;\n};\n\n/**\n * Emit `event` with the given args.\n *\n * @param {String} event\n * @param {Mixed} ...\n * @return {Emitter}\n */\n\nEmitter.prototype.emit = function(event){\n this._callbacks = this._callbacks || {};\n\n var args = new Array(arguments.length - 1)\n , callbacks = this._callbacks['$' + event];\n\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n\n if (callbacks) {\n callbacks = callbacks.slice(0);\n for (var i = 0, len = callbacks.length; i < len; ++i) {\n callbacks[i].apply(this, args);\n }\n }\n\n return this;\n};\n\n// alias used for reserved events (protected method)\nEmitter.prototype.emitReserved = Emitter.prototype.emit;\n\n/**\n * Return array of callbacks for `event`.\n *\n * @param {String} event\n * @return {Array}\n * @api public\n */\n\nEmitter.prototype.listeners = function(event){\n this._callbacks = this._callbacks || {};\n return this._callbacks['$' + event] || [];\n};\n\n/**\n * Check if this emitter has `event` handlers.\n *\n * @param {String} event\n * @return {Boolean}\n * @api public\n */\n\nEmitter.prototype.hasListeners = function(event){\n return !! this.listeners(event).length;\n};\n","export const globalThisShim = (() => {\n if (typeof self !== \"undefined\") {\n return self;\n }\n else if (typeof window !== \"undefined\") {\n return window;\n }\n else {\n return Function(\"return this\")();\n }\n})();\n","import { globalThisShim as globalThis } from \"./globalThis.js\";\nexport function pick(obj, ...attr) {\n return attr.reduce((acc, k) => {\n if (obj.hasOwnProperty(k)) {\n acc[k] = obj[k];\n }\n return acc;\n }, {});\n}\n// Keep a reference to the real timeout functions so they can be used when overridden\nconst NATIVE_SET_TIMEOUT = globalThis.setTimeout;\nconst NATIVE_CLEAR_TIMEOUT = globalThis.clearTimeout;\nexport function installTimerFunctions(obj, opts) {\n if (opts.useNativeTimers) {\n obj.setTimeoutFn = NATIVE_SET_TIMEOUT.bind(globalThis);\n obj.clearTimeoutFn = NATIVE_CLEAR_TIMEOUT.bind(globalThis);\n }\n else {\n obj.setTimeoutFn = globalThis.setTimeout.bind(globalThis);\n obj.clearTimeoutFn = globalThis.clearTimeout.bind(globalThis);\n }\n}\n// base64 encoded buffers are about 33% bigger (https://en.wikipedia.org/wiki/Base64)\nconst BASE64_OVERHEAD = 1.33;\n// we could also have used `new Blob([obj]).size`, but it isn't supported in IE9\nexport function byteLength(obj) {\n if (typeof obj === \"string\") {\n return utf8Length(obj);\n }\n // arraybuffer or blob\n return Math.ceil((obj.byteLength || obj.size) * BASE64_OVERHEAD);\n}\nfunction utf8Length(str) {\n let c = 0, length = 0;\n for (let i = 0, l = str.length; i < l; i++) {\n c = str.charCodeAt(i);\n if (c < 0x80) {\n length += 1;\n }\n else if (c < 0x800) {\n length += 2;\n }\n else if (c < 0xd800 || c >= 0xe000) {\n length += 3;\n }\n else {\n i++;\n length += 4;\n }\n }\n return length;\n}\n","// imported from https://github.com/unshiftio/yeast\n'use strict';\nconst alphabet = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-_'.split(''), length = 64, map = {};\nlet seed = 0, i = 0, prev;\n/**\n * Return a string representing the specified number.\n *\n * @param {Number} num The number to convert.\n * @returns {String} The string representation of the number.\n * @api public\n */\nexport function encode(num) {\n let encoded = '';\n do {\n encoded = alphabet[num % length] + encoded;\n num = Math.floor(num / length);\n } while (num > 0);\n return encoded;\n}\n/**\n * Return the integer value specified by the given string.\n *\n * @param {String} str The string to convert.\n * @returns {Number} The integer value represented by the string.\n * @api public\n */\nexport function decode(str) {\n let decoded = 0;\n for (i = 0; i < str.length; i++) {\n decoded = decoded * length + map[str.charAt(i)];\n }\n return decoded;\n}\n/**\n * Yeast: A tiny growing id generator.\n *\n * @returns {String} A unique id.\n * @api public\n */\nexport function yeast() {\n const now = encode(+new Date());\n if (now !== prev)\n return seed = 0, prev = now;\n return now + '.' + encode(seed++);\n}\n//\n// Map each character to its index.\n//\nfor (; i < length; i++)\n map[alphabet[i]] = i;\n","import { decodePacket } from \"engine.io-parser\";\nimport { Emitter } from \"@socket.io/component-emitter\";\nimport { installTimerFunctions } from \"./util.js\";\nclass TransportError extends Error {\n constructor(reason, description, context) {\n super(reason);\n this.description = description;\n this.context = context;\n this.type = \"TransportError\";\n }\n}\nexport class Transport extends Emitter {\n /**\n * Transport abstract constructor.\n *\n * @param {Object} opts - options\n * @protected\n */\n constructor(opts) {\n super();\n this.writable = false;\n installTimerFunctions(this, opts);\n this.opts = opts;\n this.query = opts.query;\n this.socket = opts.socket;\n }\n /**\n * Emits an error.\n *\n * @param {String} reason\n * @param description\n * @param context - the error context\n * @return {Transport} for chaining\n * @protected\n */\n onError(reason, description, context) {\n super.emitReserved(\"error\", new TransportError(reason, description, context));\n return this;\n }\n /**\n * Opens the transport.\n */\n open() {\n this.readyState = \"opening\";\n this.doOpen();\n return this;\n }\n /**\n * Closes the transport.\n */\n close() {\n if (this.readyState === \"opening\" || this.readyState === \"open\") {\n this.doClose();\n this.onClose();\n }\n return this;\n }\n /**\n * Sends multiple packets.\n *\n * @param {Array} packets\n */\n send(packets) {\n if (this.readyState === \"open\") {\n this.write(packets);\n }\n else {\n // this might happen if the transport was silently closed in the beforeunload event handler\n }\n }\n /**\n * Called upon open\n *\n * @protected\n */\n onOpen() {\n this.readyState = \"open\";\n this.writable = true;\n super.emitReserved(\"open\");\n }\n /**\n * Called with data.\n *\n * @param {String} data\n * @protected\n */\n onData(data) {\n const packet = decodePacket(data, this.socket.binaryType);\n this.onPacket(packet);\n }\n /**\n * Called with a decoded packet.\n *\n * @protected\n */\n onPacket(packet) {\n super.emitReserved(\"packet\", packet);\n }\n /**\n * Called upon close.\n *\n * @protected\n */\n onClose(details) {\n this.readyState = \"closed\";\n super.emitReserved(\"close\", details);\n }\n /**\n * Pauses the transport, in order not to lose packets during an upgrade.\n *\n * @param onPause\n */\n pause(onPause) { }\n}\n","// imported from https://github.com/galkn/querystring\n/**\n * Compiles a querystring\n * Returns string representation of the object\n *\n * @param {Object}\n * @api private\n */\nexport function encode(obj) {\n let str = '';\n for (let i in obj) {\n if (obj.hasOwnProperty(i)) {\n if (str.length)\n str += '&';\n str += encodeURIComponent(i) + '=' + encodeURIComponent(obj[i]);\n }\n }\n return str;\n}\n/**\n * Parses a simple querystring into an object\n *\n * @param {String} qs\n * @api private\n */\nexport function decode(qs) {\n let qry = {};\n let pairs = qs.split('&');\n for (let i = 0, l = pairs.length; i < l; i++) {\n let pair = pairs[i].split('=');\n qry[decodeURIComponent(pair[0])] = decodeURIComponent(pair[1]);\n }\n return qry;\n}\n","// imported from https://github.com/component/has-cors\nlet value = false;\ntry {\n value = typeof XMLHttpRequest !== 'undefined' &&\n 'withCredentials' in new XMLHttpRequest();\n}\ncatch (err) {\n // if XMLHttp support is disabled in IE then it will throw\n // when trying to create\n}\nexport const hasCORS = value;\n","// browser shim for xmlhttprequest module\nimport { hasCORS } from \"../contrib/has-cors.js\";\nimport { globalThisShim as globalThis } from \"../globalThis.js\";\nexport function XHR(opts) {\n const xdomain = opts.xdomain;\n // XMLHttpRequest can be disabled on IE\n try {\n if (\"undefined\" !== typeof XMLHttpRequest && (!xdomain || hasCORS)) {\n return new XMLHttpRequest();\n }\n }\n catch (e) { }\n if (!xdomain) {\n try {\n return new globalThis[[\"Active\"].concat(\"Object\").join(\"X\")](\"Microsoft.XMLHTTP\");\n }\n catch (e) { }\n }\n}\n","import { Transport } from \"../transport.js\";\nimport { yeast } from \"../contrib/yeast.js\";\nimport { encode } from \"../contrib/parseqs.js\";\nimport { encodePayload, decodePayload } from \"engine.io-parser\";\nimport { XHR as XMLHttpRequest } from \"./xmlhttprequest.js\";\nimport { Emitter } from \"@socket.io/component-emitter\";\nimport { installTimerFunctions, pick } from \"../util.js\";\nimport { globalThisShim as globalThis } from \"../globalThis.js\";\nfunction empty() { }\nconst hasXHR2 = (function () {\n const xhr = new XMLHttpRequest({\n xdomain: false,\n });\n return null != xhr.responseType;\n})();\nexport class Polling extends Transport {\n /**\n * XHR Polling constructor.\n *\n * @param {Object} opts\n * @package\n */\n constructor(opts) {\n super(opts);\n this.polling = false;\n if (typeof location !== \"undefined\") {\n const isSSL = \"https:\" === location.protocol;\n let port = location.port;\n // some user agents have empty `location.port`\n if (!port) {\n port = isSSL ? \"443\" : \"80\";\n }\n this.xd =\n (typeof location !== \"undefined\" &&\n opts.hostname !== location.hostname) ||\n port !== opts.port;\n this.xs = opts.secure !== isSSL;\n }\n /**\n * XHR supports binary\n */\n const forceBase64 = opts && opts.forceBase64;\n this.supportsBinary = hasXHR2 && !forceBase64;\n }\n get name() {\n return \"polling\";\n }\n /**\n * Opens the socket (triggers polling). We write a PING message to determine\n * when the transport is open.\n *\n * @protected\n */\n doOpen() {\n this.poll();\n }\n /**\n * Pauses polling.\n *\n * @param {Function} onPause - callback upon buffers are flushed and transport is paused\n * @package\n */\n pause(onPause) {\n this.readyState = \"pausing\";\n const pause = () => {\n this.readyState = \"paused\";\n onPause();\n };\n if (this.polling || !this.writable) {\n let total = 0;\n if (this.polling) {\n total++;\n this.once(\"pollComplete\", function () {\n --total || pause();\n });\n }\n if (!this.writable) {\n total++;\n this.once(\"drain\", function () {\n --total || pause();\n });\n }\n }\n else {\n pause();\n }\n }\n /**\n * Starts polling cycle.\n *\n * @private\n */\n poll() {\n this.polling = true;\n this.doPoll();\n this.emitReserved(\"poll\");\n }\n /**\n * Overloads onData to detect payloads.\n *\n * @protected\n */\n onData(data) {\n const callback = (packet) => {\n // if its the first message we consider the transport open\n if (\"opening\" === this.readyState && packet.type === \"open\") {\n this.onOpen();\n }\n // if its a close packet, we close the ongoing requests\n if (\"close\" === packet.type) {\n this.onClose({ description: \"transport closed by the server\" });\n return false;\n }\n // otherwise bypass onData and handle the message\n this.onPacket(packet);\n };\n // decode payload\n decodePayload(data, this.socket.binaryType).forEach(callback);\n // if an event did not trigger closing\n if (\"closed\" !== this.readyState) {\n // if we got data we're not polling\n this.polling = false;\n this.emitReserved(\"pollComplete\");\n if (\"open\" === this.readyState) {\n this.poll();\n }\n else {\n }\n }\n }\n /**\n * For polling, send a close packet.\n *\n * @protected\n */\n doClose() {\n const close = () => {\n this.write([{ type: \"close\" }]);\n };\n if (\"open\" === this.readyState) {\n close();\n }\n else {\n // in case we're trying to close while\n // handshaking is in progress (GH-164)\n this.once(\"open\", close);\n }\n }\n /**\n * Writes a packets payload.\n *\n * @param {Array} packets - data packets\n * @protected\n */\n write(packets) {\n this.writable = false;\n encodePayload(packets, (data) => {\n this.doWrite(data, () => {\n this.writable = true;\n this.emitReserved(\"drain\");\n });\n });\n }\n /**\n * Generates uri for connection.\n *\n * @private\n */\n uri() {\n let query = this.query || {};\n const schema = this.opts.secure ? \"https\" : \"http\";\n let port = \"\";\n // cache busting is forced\n if (false !== this.opts.timestampRequests) {\n query[this.opts.timestampParam] = yeast();\n }\n if (!this.supportsBinary && !query.sid) {\n query.b64 = 1;\n }\n // avoid port if default for schema\n if (this.opts.port &&\n ((\"https\" === schema && Number(this.opts.port) !== 443) ||\n (\"http\" === schema && Number(this.opts.port) !== 80))) {\n port = \":\" + this.opts.port;\n }\n const encodedQuery = encode(query);\n const ipv6 = this.opts.hostname.indexOf(\":\") !== -1;\n return (schema +\n \"://\" +\n (ipv6 ? \"[\" + this.opts.hostname + \"]\" : this.opts.hostname) +\n port +\n this.opts.path +\n (encodedQuery.length ? \"?\" + encodedQuery : \"\"));\n }\n /**\n * Creates a request.\n *\n * @param {String} method\n * @private\n */\n request(opts = {}) {\n Object.assign(opts, { xd: this.xd, xs: this.xs }, this.opts);\n return new Request(this.uri(), opts);\n }\n /**\n * Sends data.\n *\n * @param {String} data to send.\n * @param {Function} called upon flush.\n * @private\n */\n doWrite(data, fn) {\n const req = this.request({\n method: \"POST\",\n data: data,\n });\n req.on(\"success\", fn);\n req.on(\"error\", (xhrStatus, context) => {\n this.onError(\"xhr post error\", xhrStatus, context);\n });\n }\n /**\n * Starts a poll cycle.\n *\n * @private\n */\n doPoll() {\n const req = this.request();\n req.on(\"data\", this.onData.bind(this));\n req.on(\"error\", (xhrStatus, context) => {\n this.onError(\"xhr poll error\", xhrStatus, context);\n });\n this.pollXhr = req;\n }\n}\nexport class Request extends Emitter {\n /**\n * Request constructor\n *\n * @param {Object} options\n * @package\n */\n constructor(uri, opts) {\n super();\n installTimerFunctions(this, opts);\n this.opts = opts;\n this.method = opts.method || \"GET\";\n this.uri = uri;\n this.async = false !== opts.async;\n this.data = undefined !== opts.data ? opts.data : null;\n this.create();\n }\n /**\n * Creates the XHR object and sends the request.\n *\n * @private\n */\n create() {\n const opts = pick(this.opts, \"agent\", \"pfx\", \"key\", \"passphrase\", \"cert\", \"ca\", \"ciphers\", \"rejectUnauthorized\", \"autoUnref\");\n opts.xdomain = !!this.opts.xd;\n opts.xscheme = !!this.opts.xs;\n const xhr = (this.xhr = new XMLHttpRequest(opts));\n try {\n xhr.open(this.method, this.uri, this.async);\n try {\n if (this.opts.extraHeaders) {\n xhr.setDisableHeaderCheck && xhr.setDisableHeaderCheck(true);\n for (let i in this.opts.extraHeaders) {\n if (this.opts.extraHeaders.hasOwnProperty(i)) {\n xhr.setRequestHeader(i, this.opts.extraHeaders[i]);\n }\n }\n }\n }\n catch (e) { }\n if (\"POST\" === this.method) {\n try {\n xhr.setRequestHeader(\"Content-type\", \"text/plain;charset=UTF-8\");\n }\n catch (e) { }\n }\n try {\n xhr.setRequestHeader(\"Accept\", \"*/*\");\n }\n catch (e) { }\n // ie6 check\n if (\"withCredentials\" in xhr) {\n xhr.withCredentials = this.opts.withCredentials;\n }\n if (this.opts.requestTimeout) {\n xhr.timeout = this.opts.requestTimeout;\n }\n xhr.onreadystatechange = () => {\n if (4 !== xhr.readyState)\n return;\n if (200 === xhr.status || 1223 === xhr.status) {\n this.onLoad();\n }\n else {\n // make sure the `error` event handler that's user-set\n // does not throw in the same tick and gets caught here\n this.setTimeoutFn(() => {\n this.onError(typeof xhr.status === \"number\" ? xhr.status : 0);\n }, 0);\n }\n };\n xhr.send(this.data);\n }\n catch (e) {\n // Need to defer since .create() is called directly from the constructor\n // and thus the 'error' event can only be only bound *after* this exception\n // occurs. Therefore, also, we cannot throw here at all.\n this.setTimeoutFn(() => {\n this.onError(e);\n }, 0);\n return;\n }\n if (typeof document !== \"undefined\") {\n this.index = Request.requestsCount++;\n Request.requests[this.index] = this;\n }\n }\n /**\n * Called upon error.\n *\n * @private\n */\n onError(err) {\n this.emitReserved(\"error\", err, this.xhr);\n this.cleanup(true);\n }\n /**\n * Cleans up house.\n *\n * @private\n */\n cleanup(fromError) {\n if (\"undefined\" === typeof this.xhr || null === this.xhr) {\n return;\n }\n this.xhr.onreadystatechange = empty;\n if (fromError) {\n try {\n this.xhr.abort();\n }\n catch (e) { }\n }\n if (typeof document !== \"undefined\") {\n delete Request.requests[this.index];\n }\n this.xhr = null;\n }\n /**\n * Called upon load.\n *\n * @private\n */\n onLoad() {\n const data = this.xhr.responseText;\n if (data !== null) {\n this.emitReserved(\"data\", data);\n this.emitReserved(\"success\");\n this.cleanup();\n }\n }\n /**\n * Aborts the request.\n *\n * @package\n */\n abort() {\n this.cleanup();\n }\n}\nRequest.requestsCount = 0;\nRequest.requests = {};\n/**\n * Aborts pending requests when unloading the window. This is needed to prevent\n * memory leaks (e.g. when using IE) and to ensure that no spurious error is\n * emitted.\n */\nif (typeof document !== \"undefined\") {\n // @ts-ignore\n if (typeof attachEvent === \"function\") {\n // @ts-ignore\n attachEvent(\"onunload\", unloadHandler);\n }\n else if (typeof addEventListener === \"function\") {\n const terminationEvent = \"onpagehide\" in globalThis ? \"pagehide\" : \"unload\";\n addEventListener(terminationEvent, unloadHandler, false);\n }\n}\nfunction unloadHandler() {\n for (let i in Request.requests) {\n if (Request.requests.hasOwnProperty(i)) {\n Request.requests[i].abort();\n }\n }\n}\n","import { globalThisShim as globalThis } from \"../globalThis.js\";\nexport const nextTick = (() => {\n const isPromiseAvailable = typeof Promise === \"function\" && typeof Promise.resolve === \"function\";\n if (isPromiseAvailable) {\n return (cb) => Promise.resolve().then(cb);\n }\n else {\n return (cb, setTimeoutFn) => setTimeoutFn(cb, 0);\n }\n})();\nexport const WebSocket = globalThis.WebSocket || globalThis.MozWebSocket;\nexport const usingBrowserWebSocket = true;\nexport const defaultBinaryType = \"arraybuffer\";\n","import { Transport } from \"../transport.js\";\nimport { encode } from \"../contrib/parseqs.js\";\nimport { yeast } from \"../contrib/yeast.js\";\nimport { pick } from \"../util.js\";\nimport { defaultBinaryType, nextTick, usingBrowserWebSocket, WebSocket, } from \"./websocket-constructor.js\";\nimport { encodePacket } from \"engine.io-parser\";\n// detect ReactNative environment\nconst isReactNative = typeof navigator !== \"undefined\" &&\n typeof navigator.product === \"string\" &&\n navigator.product.toLowerCase() === \"reactnative\";\nexport class WS extends Transport {\n /**\n * WebSocket transport constructor.\n *\n * @param {Object} opts - connection options\n * @protected\n */\n constructor(opts) {\n super(opts);\n this.supportsBinary = !opts.forceBase64;\n }\n get name() {\n return \"websocket\";\n }\n doOpen() {\n if (!this.check()) {\n // let probe timeout\n return;\n }\n const uri = this.uri();\n const protocols = this.opts.protocols;\n // React Native only supports the 'headers' option, and will print a warning if anything else is passed\n const opts = isReactNative\n ? {}\n : pick(this.opts, \"agent\", \"perMessageDeflate\", \"pfx\", \"key\", \"passphrase\", \"cert\", \"ca\", \"ciphers\", \"rejectUnauthorized\", \"localAddress\", \"protocolVersion\", \"origin\", \"maxPayload\", \"family\", \"checkServerIdentity\");\n if (this.opts.extraHeaders) {\n opts.headers = this.opts.extraHeaders;\n }\n try {\n this.ws =\n usingBrowserWebSocket && !isReactNative\n ? protocols\n ? new WebSocket(uri, protocols)\n : new WebSocket(uri)\n : new WebSocket(uri, protocols, opts);\n }\n catch (err) {\n return this.emitReserved(\"error\", err);\n }\n this.ws.binaryType = this.socket.binaryType || defaultBinaryType;\n this.addEventListeners();\n }\n /**\n * Adds event listeners to the socket\n *\n * @private\n */\n addEventListeners() {\n this.ws.onopen = () => {\n if (this.opts.autoUnref) {\n this.ws._socket.unref();\n }\n this.onOpen();\n };\n this.ws.onclose = (closeEvent) => this.onClose({\n description: \"websocket connection closed\",\n context: closeEvent,\n });\n this.ws.onmessage = (ev) => this.onData(ev.data);\n this.ws.onerror = (e) => this.onError(\"websocket error\", e);\n }\n write(packets) {\n this.writable = false;\n // encodePacket efficient as it uses WS framing\n // no need for encodePayload\n for (let i = 0; i < packets.length; i++) {\n const packet = packets[i];\n const lastPacket = i === packets.length - 1;\n encodePacket(packet, this.supportsBinary, (data) => {\n // always create a new object (GH-437)\n const opts = {};\n if (!usingBrowserWebSocket) {\n if (packet.options) {\n opts.compress = packet.options.compress;\n }\n if (this.opts.perMessageDeflate) {\n const len = \n // @ts-ignore\n \"string\" === typeof data ? Buffer.byteLength(data) : data.length;\n if (len < this.opts.perMessageDeflate.threshold) {\n opts.compress = false;\n }\n }\n }\n // Sometimes the websocket has already been closed but the browser didn't\n // have a chance of informing us about it yet, in that case send will\n // throw an error\n try {\n if (usingBrowserWebSocket) {\n // TypeError is thrown when passing the second argument on Safari\n this.ws.send(data);\n }\n else {\n this.ws.send(data, opts);\n }\n }\n catch (e) {\n }\n if (lastPacket) {\n // fake drain\n // defer to next tick to allow Socket to clear writeBuffer\n nextTick(() => {\n this.writable = true;\n this.emitReserved(\"drain\");\n }, this.setTimeoutFn);\n }\n });\n }\n }\n doClose() {\n if (typeof this.ws !== \"undefined\") {\n this.ws.close();\n this.ws = null;\n }\n }\n /**\n * Generates uri for connection.\n *\n * @private\n */\n uri() {\n let query = this.query || {};\n const schema = this.opts.secure ? \"wss\" : \"ws\";\n let port = \"\";\n // avoid port if default for schema\n if (this.opts.port &&\n ((\"wss\" === schema && Number(this.opts.port) !== 443) ||\n (\"ws\" === schema && Number(this.opts.port) !== 80))) {\n port = \":\" + this.opts.port;\n }\n // append timestamp to URI\n if (this.opts.timestampRequests) {\n query[this.opts.timestampParam] = yeast();\n }\n // communicate binary support capabilities\n if (!this.supportsBinary) {\n query.b64 = 1;\n }\n const encodedQuery = encode(query);\n const ipv6 = this.opts.hostname.indexOf(\":\") !== -1;\n return (schema +\n \"://\" +\n (ipv6 ? \"[\" + this.opts.hostname + \"]\" : this.opts.hostname) +\n port +\n this.opts.path +\n (encodedQuery.length ? \"?\" + encodedQuery : \"\"));\n }\n /**\n * Feature detection for WebSocket.\n *\n * @return {Boolean} whether this transport is available.\n * @private\n */\n check() {\n return !!WebSocket;\n }\n}\n","import { Polling } from \"./polling.js\";\nimport { WS } from \"./websocket.js\";\nexport const transports = {\n websocket: WS,\n polling: Polling,\n};\n","// imported from https://github.com/galkn/parseuri\n/**\n * Parses a URI\n *\n * Note: we could also have used the built-in URL object, but it isn't supported on all platforms.\n *\n * See:\n * - https://developer.mozilla.org/en-US/docs/Web/API/URL\n * - https://caniuse.com/url\n * - https://www.rfc-editor.org/rfc/rfc3986#appendix-B\n *\n * History of the parse() method:\n * - first commit: https://github.com/socketio/socket.io-client/commit/4ee1d5d94b3906a9c052b459f1a818b15f38f91c\n * - export into its own module: https://github.com/socketio/engine.io-client/commit/de2c561e4564efeb78f1bdb1ba39ef81b2822cb3\n * - reimport: https://github.com/socketio/engine.io-client/commit/df32277c3f6d622eec5ed09f493cae3f3391d242\n *\n * @author Steven Levithan (MIT license)\n * @api private\n */\nconst re = /^(?:(?![^:@\\/?#]+:[^:@\\/]*@)(http|https|ws|wss):\\/\\/)?((?:(([^:@\\/?#]*)(?::([^:@\\/?#]*))?)?@)?((?:[a-f0-9]{0,4}:){2,7}[a-f0-9]{0,4}|[^:\\/?#]*)(?::(\\d*))?)(((\\/(?:[^?#](?![^?#\\/]*\\.[^?#\\/.]+(?:[?#]|$)))*\\/?)?([^?#\\/]*))(?:\\?([^#]*))?(?:#(.*))?)/;\nconst parts = [\n 'source', 'protocol', 'authority', 'userInfo', 'user', 'password', 'host', 'port', 'relative', 'path', 'directory', 'file', 'query', 'anchor'\n];\nexport function parse(str) {\n const src = str, b = str.indexOf('['), e = str.indexOf(']');\n if (b != -1 && e != -1) {\n str = str.substring(0, b) + str.substring(b, e).replace(/:/g, ';') + str.substring(e, str.length);\n }\n let m = re.exec(str || ''), uri = {}, i = 14;\n while (i--) {\n uri[parts[i]] = m[i] || '';\n }\n if (b != -1 && e != -1) {\n uri.source = src;\n uri.host = uri.host.substring(1, uri.host.length - 1).replace(/;/g, ':');\n uri.authority = uri.authority.replace('[', '').replace(']', '').replace(/;/g, ':');\n uri.ipv6uri = true;\n }\n uri.pathNames = pathNames(uri, uri['path']);\n uri.queryKey = queryKey(uri, uri['query']);\n return uri;\n}\nfunction pathNames(obj, path) {\n const regx = /\\/{2,9}/g, names = path.replace(regx, \"/\").split(\"/\");\n if (path.slice(0, 1) == '/' || path.length === 0) {\n names.splice(0, 1);\n }\n if (path.slice(-1) == '/') {\n names.splice(names.length - 1, 1);\n }\n return names;\n}\nfunction queryKey(uri, query) {\n const data = {};\n query.replace(/(?:^|&)([^&=]*)=?([^&]*)/g, function ($0, $1, $2) {\n if ($1) {\n data[$1] = $2;\n }\n });\n return data;\n}\n","import { transports } from \"./transports/index.js\";\nimport { installTimerFunctions, byteLength } from \"./util.js\";\nimport { decode } from \"./contrib/parseqs.js\";\nimport { parse } from \"./contrib/parseuri.js\";\nimport { Emitter } from \"@socket.io/component-emitter\";\nimport { protocol } from \"engine.io-parser\";\nexport class Socket extends Emitter {\n /**\n * Socket constructor.\n *\n * @param {String|Object} uri - uri or options\n * @param {Object} opts - options\n */\n constructor(uri, opts = {}) {\n super();\n this.writeBuffer = [];\n if (uri && \"object\" === typeof uri) {\n opts = uri;\n uri = null;\n }\n if (uri) {\n uri = parse(uri);\n opts.hostname = uri.host;\n opts.secure = uri.protocol === \"https\" || uri.protocol === \"wss\";\n opts.port = uri.port;\n if (uri.query)\n opts.query = uri.query;\n }\n else if (opts.host) {\n opts.hostname = parse(opts.host).host;\n }\n installTimerFunctions(this, opts);\n this.secure =\n null != opts.secure\n ? opts.secure\n : typeof location !== \"undefined\" && \"https:\" === location.protocol;\n if (opts.hostname && !opts.port) {\n // if no port is specified manually, use the protocol default\n opts.port = this.secure ? \"443\" : \"80\";\n }\n this.hostname =\n opts.hostname ||\n (typeof location !== \"undefined\" ? location.hostname : \"localhost\");\n this.port =\n opts.port ||\n (typeof location !== \"undefined\" && location.port\n ? location.port\n : this.secure\n ? \"443\"\n : \"80\");\n this.transports = opts.transports || [\"polling\", \"websocket\"];\n this.writeBuffer = [];\n this.prevBufferLen = 0;\n this.opts = Object.assign({\n path: \"/engine.io\",\n agent: false,\n withCredentials: false,\n upgrade: true,\n timestampParam: \"t\",\n rememberUpgrade: false,\n addTrailingSlash: true,\n rejectUnauthorized: true,\n perMessageDeflate: {\n threshold: 1024,\n },\n transportOptions: {},\n closeOnBeforeunload: true,\n }, opts);\n this.opts.path =\n this.opts.path.replace(/\\/$/, \"\") +\n (this.opts.addTrailingSlash ? \"/\" : \"\");\n if (typeof this.opts.query === \"string\") {\n this.opts.query = decode(this.opts.query);\n }\n // set on handshake\n this.id = null;\n this.upgrades = null;\n this.pingInterval = null;\n this.pingTimeout = null;\n // set on heartbeat\n this.pingTimeoutTimer = null;\n if (typeof addEventListener === \"function\") {\n if (this.opts.closeOnBeforeunload) {\n // Firefox closes the connection when the \"beforeunload\" event is emitted but not Chrome. This event listener\n // ensures every browser behaves the same (no \"disconnect\" event at the Socket.IO level when the page is\n // closed/reloaded)\n this.beforeunloadEventListener = () => {\n if (this.transport) {\n // silently close the transport\n this.transport.removeAllListeners();\n this.transport.close();\n }\n };\n addEventListener(\"beforeunload\", this.beforeunloadEventListener, false);\n }\n if (this.hostname !== \"localhost\") {\n this.offlineEventListener = () => {\n this.onClose(\"transport close\", {\n description: \"network connection lost\",\n });\n };\n addEventListener(\"offline\", this.offlineEventListener, false);\n }\n }\n this.open();\n }\n /**\n * Creates transport of the given type.\n *\n * @param {String} name - transport name\n * @return {Transport}\n * @private\n */\n createTransport(name) {\n const query = Object.assign({}, this.opts.query);\n // append engine.io protocol identifier\n query.EIO = protocol;\n // transport name\n query.transport = name;\n // session id if we already have one\n if (this.id)\n query.sid = this.id;\n const opts = Object.assign({}, this.opts.transportOptions[name], this.opts, {\n query,\n socket: this,\n hostname: this.hostname,\n secure: this.secure,\n port: this.port,\n });\n return new transports[name](opts);\n }\n /**\n * Initializes transport to use and starts probe.\n *\n * @private\n */\n open() {\n let transport;\n if (this.opts.rememberUpgrade &&\n Socket.priorWebsocketSuccess &&\n this.transports.indexOf(\"websocket\") !== -1) {\n transport = \"websocket\";\n }\n else if (0 === this.transports.length) {\n // Emit error on next tick so it can be listened to\n this.setTimeoutFn(() => {\n this.emitReserved(\"error\", \"No transports available\");\n }, 0);\n return;\n }\n else {\n transport = this.transports[0];\n }\n this.readyState = \"opening\";\n // Retry with the next transport if the transport is disabled (jsonp: false)\n try {\n transport = this.createTransport(transport);\n }\n catch (e) {\n this.transports.shift();\n this.open();\n return;\n }\n transport.open();\n this.setTransport(transport);\n }\n /**\n * Sets the current transport. Disables the existing one (if any).\n *\n * @private\n */\n setTransport(transport) {\n if (this.transport) {\n this.transport.removeAllListeners();\n }\n // set up transport\n this.transport = transport;\n // set up transport listeners\n transport\n .on(\"drain\", this.onDrain.bind(this))\n .on(\"packet\", this.onPacket.bind(this))\n .on(\"error\", this.onError.bind(this))\n .on(\"close\", (reason) => this.onClose(\"transport close\", reason));\n }\n /**\n * Probes a transport.\n *\n * @param {String} name - transport name\n * @private\n */\n probe(name) {\n let transport = this.createTransport(name);\n let failed = false;\n Socket.priorWebsocketSuccess = false;\n const onTransportOpen = () => {\n if (failed)\n return;\n transport.send([{ type: \"ping\", data: \"probe\" }]);\n transport.once(\"packet\", (msg) => {\n if (failed)\n return;\n if (\"pong\" === msg.type && \"probe\" === msg.data) {\n this.upgrading = true;\n this.emitReserved(\"upgrading\", transport);\n if (!transport)\n return;\n Socket.priorWebsocketSuccess = \"websocket\" === transport.name;\n this.transport.pause(() => {\n if (failed)\n return;\n if (\"closed\" === this.readyState)\n return;\n cleanup();\n this.setTransport(transport);\n transport.send([{ type: \"upgrade\" }]);\n this.emitReserved(\"upgrade\", transport);\n transport = null;\n this.upgrading = false;\n this.flush();\n });\n }\n else {\n const err = new Error(\"probe error\");\n // @ts-ignore\n err.transport = transport.name;\n this.emitReserved(\"upgradeError\", err);\n }\n });\n };\n function freezeTransport() {\n if (failed)\n return;\n // Any callback called by transport should be ignored since now\n failed = true;\n cleanup();\n transport.close();\n transport = null;\n }\n // Handle any error that happens while probing\n const onerror = (err) => {\n const error = new Error(\"probe error: \" + err);\n // @ts-ignore\n error.transport = transport.name;\n freezeTransport();\n this.emitReserved(\"upgradeError\", error);\n };\n function onTransportClose() {\n onerror(\"transport closed\");\n }\n // When the socket is closed while we're probing\n function onclose() {\n onerror(\"socket closed\");\n }\n // When the socket is upgraded while we're probing\n function onupgrade(to) {\n if (transport && to.name !== transport.name) {\n freezeTransport();\n }\n }\n // Remove all listeners on the transport and on self\n const cleanup = () => {\n transport.removeListener(\"open\", onTransportOpen);\n transport.removeListener(\"error\", onerror);\n transport.removeListener(\"close\", onTransportClose);\n this.off(\"close\", onclose);\n this.off(\"upgrading\", onupgrade);\n };\n transport.once(\"open\", onTransportOpen);\n transport.once(\"error\", onerror);\n transport.once(\"close\", onTransportClose);\n this.once(\"close\", onclose);\n this.once(\"upgrading\", onupgrade);\n transport.open();\n }\n /**\n * Called when connection is deemed open.\n *\n * @private\n */\n onOpen() {\n this.readyState = \"open\";\n Socket.priorWebsocketSuccess = \"websocket\" === this.transport.name;\n this.emitReserved(\"open\");\n this.flush();\n // we check for `readyState` in case an `open`\n // listener already closed the socket\n if (\"open\" === this.readyState && this.opts.upgrade) {\n let i = 0;\n const l = this.upgrades.length;\n for (; i < l; i++) {\n this.probe(this.upgrades[i]);\n }\n }\n }\n /**\n * Handles a packet.\n *\n * @private\n */\n onPacket(packet) {\n if (\"opening\" === this.readyState ||\n \"open\" === this.readyState ||\n \"closing\" === this.readyState) {\n this.emitReserved(\"packet\", packet);\n // Socket is live - any packet counts\n this.emitReserved(\"heartbeat\");\n switch (packet.type) {\n case \"open\":\n this.onHandshake(JSON.parse(packet.data));\n break;\n case \"ping\":\n this.resetPingTimeout();\n this.sendPacket(\"pong\");\n this.emitReserved(\"ping\");\n this.emitReserved(\"pong\");\n break;\n case \"error\":\n const err = new Error(\"server error\");\n // @ts-ignore\n err.code = packet.data;\n this.onError(err);\n break;\n case \"message\":\n this.emitReserved(\"data\", packet.data);\n this.emitReserved(\"message\", packet.data);\n break;\n }\n }\n else {\n }\n }\n /**\n * Called upon handshake completion.\n *\n * @param {Object} data - handshake obj\n * @private\n */\n onHandshake(data) {\n this.emitReserved(\"handshake\", data);\n this.id = data.sid;\n this.transport.query.sid = data.sid;\n this.upgrades = this.filterUpgrades(data.upgrades);\n this.pingInterval = data.pingInterval;\n this.pingTimeout = data.pingTimeout;\n this.maxPayload = data.maxPayload;\n this.onOpen();\n // In case open handler closes socket\n if (\"closed\" === this.readyState)\n return;\n this.resetPingTimeout();\n }\n /**\n * Sets and resets ping timeout timer based on server pings.\n *\n * @private\n */\n resetPingTimeout() {\n this.clearTimeoutFn(this.pingTimeoutTimer);\n this.pingTimeoutTimer = this.setTimeoutFn(() => {\n this.onClose(\"ping timeout\");\n }, this.pingInterval + this.pingTimeout);\n if (this.opts.autoUnref) {\n this.pingTimeoutTimer.unref();\n }\n }\n /**\n * Called on `drain` event\n *\n * @private\n */\n onDrain() {\n this.writeBuffer.splice(0, this.prevBufferLen);\n // setting prevBufferLen = 0 is very important\n // for example, when upgrading, upgrade packet is sent over,\n // and a nonzero prevBufferLen could cause problems on `drain`\n this.prevBufferLen = 0;\n if (0 === this.writeBuffer.length) {\n this.emitReserved(\"drain\");\n }\n else {\n this.flush();\n }\n }\n /**\n * Flush write buffers.\n *\n * @private\n */\n flush() {\n if (\"closed\" !== this.readyState &&\n this.transport.writable &&\n !this.upgrading &&\n this.writeBuffer.length) {\n const packets = this.getWritablePackets();\n this.transport.send(packets);\n // keep track of current length of writeBuffer\n // splice writeBuffer and callbackBuffer on `drain`\n this.prevBufferLen = packets.length;\n this.emitReserved(\"flush\");\n }\n }\n /**\n * Ensure the encoded size of the writeBuffer is below the maxPayload value sent by the server (only for HTTP\n * long-polling)\n *\n * @private\n */\n getWritablePackets() {\n const shouldCheckPayloadSize = this.maxPayload &&\n this.transport.name === \"polling\" &&\n this.writeBuffer.length > 1;\n if (!shouldCheckPayloadSize) {\n return this.writeBuffer;\n }\n let payloadSize = 1; // first packet type\n for (let i = 0; i < this.writeBuffer.length; i++) {\n const data = this.writeBuffer[i].data;\n if (data) {\n payloadSize += byteLength(data);\n }\n if (i > 0 && payloadSize > this.maxPayload) {\n return this.writeBuffer.slice(0, i);\n }\n payloadSize += 2; // separator + packet type\n }\n return this.writeBuffer;\n }\n /**\n * Sends a message.\n *\n * @param {String} msg - message.\n * @param {Object} options.\n * @param {Function} callback function.\n * @return {Socket} for chaining.\n */\n write(msg, options, fn) {\n this.sendPacket(\"message\", msg, options, fn);\n return this;\n }\n send(msg, options, fn) {\n this.sendPacket(\"message\", msg, options, fn);\n return this;\n }\n /**\n * Sends a packet.\n *\n * @param {String} type: packet type.\n * @param {String} data.\n * @param {Object} options.\n * @param {Function} fn - callback function.\n * @private\n */\n sendPacket(type, data, options, fn) {\n if (\"function\" === typeof data) {\n fn = data;\n data = undefined;\n }\n if (\"function\" === typeof options) {\n fn = options;\n options = null;\n }\n if (\"closing\" === this.readyState || \"closed\" === this.readyState) {\n return;\n }\n options = options || {};\n options.compress = false !== options.compress;\n const packet = {\n type: type,\n data: data,\n options: options,\n };\n this.emitReserved(\"packetCreate\", packet);\n this.writeBuffer.push(packet);\n if (fn)\n this.once(\"flush\", fn);\n this.flush();\n }\n /**\n * Closes the connection.\n */\n close() {\n const close = () => {\n this.onClose(\"forced close\");\n this.transport.close();\n };\n const cleanupAndClose = () => {\n this.off(\"upgrade\", cleanupAndClose);\n this.off(\"upgradeError\", cleanupAndClose);\n close();\n };\n const waitForUpgrade = () => {\n // wait for upgrade to finish since we can't send packets while pausing a transport\n this.once(\"upgrade\", cleanupAndClose);\n this.once(\"upgradeError\", cleanupAndClose);\n };\n if (\"opening\" === this.readyState || \"open\" === this.readyState) {\n this.readyState = \"closing\";\n if (this.writeBuffer.length) {\n this.once(\"drain\", () => {\n if (this.upgrading) {\n waitForUpgrade();\n }\n else {\n close();\n }\n });\n }\n else if (this.upgrading) {\n waitForUpgrade();\n }\n else {\n close();\n }\n }\n return this;\n }\n /**\n * Called upon transport error\n *\n * @private\n */\n onError(err) {\n Socket.priorWebsocketSuccess = false;\n this.emitReserved(\"error\", err);\n this.onClose(\"transport error\", err);\n }\n /**\n * Called upon transport close.\n *\n * @private\n */\n onClose(reason, description) {\n if (\"opening\" === this.readyState ||\n \"open\" === this.readyState ||\n \"closing\" === this.readyState) {\n // clear timers\n this.clearTimeoutFn(this.pingTimeoutTimer);\n // stop event from firing again for transport\n this.transport.removeAllListeners(\"close\");\n // ensure transport won't stay open\n this.transport.close();\n // ignore further transport communication\n this.transport.removeAllListeners();\n if (typeof removeEventListener === \"function\") {\n removeEventListener(\"beforeunload\", this.beforeunloadEventListener, false);\n removeEventListener(\"offline\", this.offlineEventListener, false);\n }\n // set ready state\n this.readyState = \"closed\";\n // clear session id\n this.id = null;\n // emit close event\n this.emitReserved(\"close\", reason, description);\n // clean buffers after, so users can still\n // grab the buffers on `close` event\n this.writeBuffer = [];\n this.prevBufferLen = 0;\n }\n }\n /**\n * Filters upgrades, returning only those matching client transports.\n *\n * @param {Array} upgrades - server upgrades\n * @private\n */\n filterUpgrades(upgrades) {\n const filteredUpgrades = [];\n let i = 0;\n const j = upgrades.length;\n for (; i < j; i++) {\n if (~this.transports.indexOf(upgrades[i]))\n filteredUpgrades.push(upgrades[i]);\n }\n return filteredUpgrades;\n }\n}\nSocket.protocol = protocol;\n","import { Socket } from \"./socket.js\";\nexport default (uri, opts) => new Socket(uri, opts);\n"],"names":["PACKET_TYPES","Object","create","PACKET_TYPES_REVERSE","keys","forEach","key","ERROR_PACKET","type","data","withNativeBlob","Blob","prototype","toString","call","withNativeArrayBuffer","ArrayBuffer","encodePacket","supportsBinary","callback","obj","encodeBlobAsBase64","isView","buffer","fileReader","FileReader","onload","content","result","split","readAsDataURL","chars","lookup","Uint8Array","i","length","charCodeAt","decodePacket","encodedPacket","binaryType","mapBinary","charAt","decodeBase64Packet","substring","decoded","base64","encoded1","encoded2","encoded3","encoded4","bufferLength","len","p","arraybuffer","bytes","decode","SEPARATOR","String","fromCharCode","Emitter","mixin","on","addEventListener","event","fn","_callbacks","this","push","once","off","apply","arguments","removeListener","removeAllListeners","removeEventListener","cb","callbacks","splice","emit","args","Array","slice","emitReserved","listeners","hasListeners","globalThisShim","self","window","Function","pick","attr","reduce","acc","k","hasOwnProperty","NATIVE_SET_TIMEOUT","globalThis","setTimeout","NATIVE_CLEAR_TIMEOUT","clearTimeout","installTimerFunctions","opts","useNativeTimers","setTimeoutFn","bind","clearTimeoutFn","prev","TransportError","reason","description","context","Error","Transport","writable","query","socket","readyState","doOpen","doClose","onClose","packets","write","packet","onPacket","details","onPause","alphabet","map","seed","encode","num","encoded","Math","floor","yeast","now","Date","str","encodeURIComponent","qs","qry","pairs","l","pair","decodeURIComponent","value","XMLHttpRequest","err","hasCORS","XHR","xdomain","e","concat","join","empty","hasXHR2","responseType","Polling","polling","location","isSSL","protocol","port","xd","hostname","xs","secure","forceBase64","poll","pause","_this2","total","doPoll","encodedPayload","encodedPackets","decodedPacket","decodePayload","_this3","onOpen","close","_this4","count","encodePayload","_this5","doWrite","schema","timestampRequests","timestampParam","sid","b64","Number","encodedQuery","indexOf","path","Request","uri","req","request","method","xhrStatus","_this6","onError","onData","_this7","pollXhr","async","undefined","xscheme","xhr","open","extraHeaders","setDisableHeaderCheck","setRequestHeader","withCredentials","requestTimeout","timeout","onreadystatechange","status","_this9","onLoad","send","document","index","requestsCount","requests","cleanup","fromError","abort","responseText","attachEvent","unloadHandler","nextTick","Promise","resolve","then","WebSocket","MozWebSocket","isReactNative","navigator","product","toLowerCase","WS","check","protocols","headers","ws","addEventListeners","onopen","autoUnref","_socket","unref","onclose","closeEvent","onmessage","ev","onerror","lastPacket","transports","websocket","re","parts","parse","src","b","replace","m","exec","source","host","authority","ipv6uri","pathNames","regx","names","queryKey","$0","$1","$2","Socket","writeBuffer","_this","prevBufferLen","_extends","agent","upgrade","rememberUpgrade","addTrailingSlash","rejectUnauthorized","perMessageDeflate","threshold","transportOptions","closeOnBeforeunload","id","upgrades","pingInterval","pingTimeout","pingTimeoutTimer","beforeunloadEventListener","transport","offlineEventListener","name","EIO","priorWebsocketSuccess","createTransport","shift","setTransport","onDrain","failed","onTransportOpen","msg","upgrading","flush","freezeTransport","error","onTransportClose","onupgrade","to","probe","onHandshake","JSON","resetPingTimeout","sendPacket","code","filterUpgrades","maxPayload","getWritablePackets","payloadSize","c","utf8Length","ceil","byteLength","size","options","compress","cleanupAndClose","waitForUpgrade","filteredUpgrades","j"],"mappings":"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"} \ No newline at end of file diff --git a/package.json b/package.json index ff3d689e3..12123c238 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "engine.io-client", "description": "Client for the realtime Engine", "license": "MIT", - "version": "6.3.0", + "version": "6.3.1", "main": "./build/cjs/index.js", "module": "./build/esm/index.js", "exports": {