{"version":3,"file":"socket.io.js","sources":["../node_modules/engine.io-client/node_modules/engine.io-parser/build/esm/commons.js","../node_modules/engine.io-client/node_modules/engine.io-parser/build/esm/encodePacket.browser.js","../node_modules/engine.io-client/node_modules/engine.io-parser/build/esm/contrib/base64-arraybuffer.js","../node_modules/engine.io-client/node_modules/engine.io-parser/build/esm/decodePacket.browser.js","../node_modules/engine.io-client/node_modules/engine.io-parser/build/esm/index.js","../node_modules/@socket.io/component-emitter/index.mjs","../node_modules/engine.io-client/build/esm/globalThis.browser.js","../node_modules/engine.io-client/build/esm/util.js","../node_modules/engine.io-client/build/esm/contrib/parseqs.js","../node_modules/engine.io-client/build/esm/transport.js","../node_modules/engine.io-client/build/esm/contrib/yeast.js","../node_modules/engine.io-client/build/esm/contrib/has-cors.js","../node_modules/engine.io-client/build/esm/transports/xmlhttprequest.browser.js","../node_modules/engine.io-client/build/esm/transports/polling.js","../node_modules/engine.io-client/build/esm/transports/websocket-constructor.browser.js","../node_modules/engine.io-client/build/esm/transports/websocket.js","../node_modules/engine.io-client/build/esm/transports/webtransport.js","../node_modules/engine.io-client/build/esm/transports/index.js","../node_modules/engine.io-client/build/esm/contrib/parseuri.js","../node_modules/engine.io-client/build/esm/socket.js","../node_modules/engine.io-client/build/esm/index.js","../build/esm/url.js","../node_modules/socket.io-parser/build/esm/is-binary.js","../node_modules/socket.io-parser/build/esm/binary.js","../node_modules/socket.io-parser/build/esm/index.js","../build/esm/on.js","../build/esm/socket.js","../build/esm/contrib/backo2.js","../build/esm/manager.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};\nfunction toArray(data) {\n    if (data instanceof Uint8Array) {\n        return data;\n    }\n    else if (data instanceof ArrayBuffer) {\n        return new Uint8Array(data);\n    }\n    else {\n        return new Uint8Array(data.buffer, data.byteOffset, data.byteLength);\n    }\n}\nlet TEXT_ENCODER;\nexport function encodePacketToBinary(packet, callback) {\n    if (withNativeBlob && packet.data instanceof Blob) {\n        return packet.data\n            .arrayBuffer()\n            .then(toArray)\n            .then(callback);\n    }\n    else if (withNativeArrayBuffer &&\n        (packet.data instanceof ArrayBuffer || isView(packet.data))) {\n        return callback(toArray(packet.data));\n    }\n    encodePacket(packet, false, encoded => {\n        if (!TEXT_ENCODER) {\n            TEXT_ENCODER = new TextEncoder();\n        }\n        callback(TEXT_ENCODER.encode(encoded));\n    });\n}\nexport { encodePacket };\n","// imported from https://github.com/socketio/base64-arraybuffer\nconst chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n// Use a lookup table to find the index.\nconst lookup = typeof Uint8Array === 'undefined' ? [] : new Uint8Array(256);\nfor (let i = 0; i < chars.length; i++) {\n    lookup[chars.charCodeAt(i)] = i;\n}\nexport const encode = (arraybuffer) => {\n    let 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};\nexport const decode = (base64) => {\n    let 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    const 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","import { ERROR_PACKET, PACKET_TYPES_REVERSE } from \"./commons.js\";\nimport { decode } from \"./contrib/base64-arraybuffer.js\";\nconst withNativeArrayBuffer = typeof ArrayBuffer === \"function\";\nexport const 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            if (data instanceof Blob) {\n                // from WebSocket + binaryType \"blob\"\n                return data;\n            }\n            else {\n                // from HTTP long-polling or WebTransport\n                return new Blob([data]);\n            }\n        case \"arraybuffer\":\n        default:\n            if (data instanceof ArrayBuffer) {\n                // from HTTP long-polling (base64) or WebSocket + binaryType \"arraybuffer\"\n                return data;\n            }\n            else {\n                // from WebTransport (Uint8Array)\n                return data.buffer;\n            }\n    }\n};\n","import { encodePacket, encodePacketToBinary } 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};\nlet TEXT_DECODER;\nexport function decodePacketFromBinary(data, isBinary, binaryType) {\n    if (!TEXT_DECODER) {\n        // lazily created for compatibility with old browser platforms\n        TEXT_DECODER = new TextDecoder();\n    }\n    // 48 === \"0\".charCodeAt(0) (OPEN packet type)\n    // 54 === \"6\".charCodeAt(0) (NOOP packet type)\n    const isPlainBinary = isBinary || data[0] < 48 || data[0] > 54;\n    return decodePacket(isPlainBinary ? data : TEXT_DECODER.decode(data), binaryType);\n}\nexport const protocol = 4;\nexport { encodePacket, encodePacketToBinary, 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/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","import { decodePacket } from \"engine.io-parser\";\nimport { Emitter } from \"@socket.io/component-emitter\";\nimport { installTimerFunctions } from \"./util.js\";\nimport { encode } from \"./contrib/parseqs.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    createUri(schema, query = {}) {\n        return (schema +\n            \"://\" +\n            this._hostname() +\n            this._port() +\n            this.opts.path +\n            this._query(query));\n    }\n    _hostname() {\n        const hostname = this.opts.hostname;\n        return hostname.indexOf(\":\") === -1 ? hostname : \"[\" + hostname + \"]\";\n    }\n    _port() {\n        if (this.opts.port &&\n            ((this.opts.secure && Number(this.opts.port !== 443)) ||\n                (!this.opts.secure && Number(this.opts.port) !== 80))) {\n            return \":\" + this.opts.port;\n        }\n        else {\n            return \"\";\n        }\n    }\n    _query(query) {\n        const encodedQuery = encode(query);\n        return encodedQuery.length ? \"?\" + encodedQuery : \"\";\n    }\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/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}\nexport function createCookieJar() { }\n","import { Transport } from \"../transport.js\";\nimport { yeast } from \"../contrib/yeast.js\";\nimport { encodePayload, decodePayload } from \"engine.io-parser\";\nimport { createCookieJar, 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        }\n        /**\n         * XHR supports binary\n         */\n        const forceBase64 = opts && opts.forceBase64;\n        this.supportsBinary = hasXHR2 && !forceBase64;\n        if (this.opts.withCredentials) {\n            this.cookieJar = createCookieJar();\n        }\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        const schema = this.opts.secure ? \"https\" : \"http\";\n        const query = this.query || {};\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        return this.createUri(schema, query);\n    }\n    /**\n     * Creates a request.\n     *\n     * @param {String} method\n     * @private\n     */\n    request(opts = {}) {\n        Object.assign(opts, { xd: this.xd, cookieJar: this.cookieJar }, 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.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        var _a;\n        const opts = pick(this.opts, \"agent\", \"pfx\", \"key\", \"passphrase\", \"cert\", \"ca\", \"ciphers\", \"rejectUnauthorized\", \"autoUnref\");\n        opts.xdomain = !!this.opts.xd;\n        const xhr = (this.xhr = new XMLHttpRequest(opts));\n        try {\n            xhr.open(this.method, this.uri, true);\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            (_a = this.opts.cookieJar) === null || _a === void 0 ? void 0 : _a.addCookies(xhr);\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                var _a;\n                if (xhr.readyState === 3) {\n                    (_a = this.opts.cookieJar) === null || _a === void 0 ? void 0 : _a.parseCookies(xhr);\n                }\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 { 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        const schema = this.opts.secure ? \"wss\" : \"ws\";\n        const query = this.query || {};\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        return this.createUri(schema, query);\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 { Transport } from \"../transport.js\";\nimport { nextTick } from \"./websocket-constructor.js\";\nimport { encodePacketToBinary, decodePacketFromBinary, } from \"engine.io-parser\";\nfunction shouldIncludeBinaryHeader(packet, encoded) {\n    // 48 === \"0\".charCodeAt(0) (OPEN packet type)\n    // 54 === \"6\".charCodeAt(0) (NOOP packet type)\n    return (packet.type === \"message\" &&\n        typeof packet.data !== \"string\" &&\n        encoded[0] >= 48 &&\n        encoded[0] <= 54);\n}\nexport class WT extends Transport {\n    get name() {\n        return \"webtransport\";\n    }\n    doOpen() {\n        // @ts-ignore\n        if (typeof WebTransport !== \"function\") {\n            return;\n        }\n        // @ts-ignore\n        this.transport = new WebTransport(this.createUri(\"https\"), this.opts.transportOptions[this.name]);\n        this.transport.closed.then(() => this.onClose());\n        // note: we could have used async/await, but that would require some additional polyfills\n        this.transport.ready.then(() => {\n            this.transport.createBidirectionalStream().then((stream) => {\n                const reader = stream.readable.getReader();\n                this.writer = stream.writable.getWriter();\n                let binaryFlag;\n                const read = () => {\n                    reader.read().then(({ done, value }) => {\n                        if (done) {\n                            return;\n                        }\n                        if (!binaryFlag && value.byteLength === 1 && value[0] === 54) {\n                            binaryFlag = true;\n                        }\n                        else {\n                            // TODO expose binarytype\n                            this.onPacket(decodePacketFromBinary(value, binaryFlag, \"arraybuffer\"));\n                            binaryFlag = false;\n                        }\n                        read();\n                    });\n                };\n                read();\n                const handshake = this.query.sid ? `0{\"sid\":\"${this.query.sid}\"}` : \"0\";\n                this.writer\n                    .write(new TextEncoder().encode(handshake))\n                    .then(() => this.onOpen());\n            });\n        });\n    }\n    write(packets) {\n        this.writable = false;\n        for (let i = 0; i < packets.length; i++) {\n            const packet = packets[i];\n            const lastPacket = i === packets.length - 1;\n            encodePacketToBinary(packet, (data) => {\n                if (shouldIncludeBinaryHeader(packet, data)) {\n                    this.writer.write(Uint8Array.of(54));\n                }\n                this.writer.write(data).then(() => {\n                    if (lastPacket) {\n                        nextTick(() => {\n                            this.writable = true;\n                            this.emitReserved(\"drain\");\n                        }, this.setTimeoutFn);\n                    }\n                });\n            });\n        }\n    }\n    doClose() {\n        var _a;\n        (_a = this.transport) === null || _a === void 0 ? void 0 : _a.close();\n    }\n}\n","import { Polling } from \"./polling.js\";\nimport { WS } from \"./websocket.js\";\nimport { WT } from \"./webtransport.js\";\nexport const transports = {\n    websocket: WS,\n    webtransport: WT,\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 <stevenlevithan.com> (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 || [\n            \"polling\",\n            \"websocket\",\n            \"webtransport\",\n        ];\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        if (this.upgrades.indexOf(\"webtransport\") !== -1 &&\n            name !== \"webtransport\") {\n            // favor WebTransport\n            this.setTimeoutFn(() => {\n                if (!failed) {\n                    transport.open();\n                }\n            }, 200);\n        }\n        else {\n            transport.open();\n        }\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","import { parse } from \"engine.io-client\";\n/**\n * URL parser.\n *\n * @param uri - url\n * @param path - the request path of the connection\n * @param loc - An object meant to mimic window.location.\n *        Defaults to window.location.\n * @public\n */\nexport function url(uri, path = \"\", loc) {\n    let obj = uri;\n    // default to window.location\n    loc = loc || (typeof location !== \"undefined\" && location);\n    if (null == uri)\n        uri = loc.protocol + \"//\" + loc.host;\n    // relative path support\n    if (typeof uri === \"string\") {\n        if (\"/\" === uri.charAt(0)) {\n            if (\"/\" === uri.charAt(1)) {\n                uri = loc.protocol + uri;\n            }\n            else {\n                uri = loc.host + uri;\n            }\n        }\n        if (!/^(https?|wss?):\\/\\//.test(uri)) {\n            if (\"undefined\" !== typeof loc) {\n                uri = loc.protocol + \"//\" + uri;\n            }\n            else {\n                uri = \"https://\" + uri;\n            }\n        }\n        // parse\n        obj = parse(uri);\n    }\n    // make sure we treat `localhost:80` and `localhost` equally\n    if (!obj.port) {\n        if (/^(http|ws)$/.test(obj.protocol)) {\n            obj.port = \"80\";\n        }\n        else if (/^(http|ws)s$/.test(obj.protocol)) {\n            obj.port = \"443\";\n        }\n    }\n    obj.path = obj.path || \"/\";\n    const ipv6 = obj.host.indexOf(\":\") !== -1;\n    const host = ipv6 ? \"[\" + obj.host + \"]\" : obj.host;\n    // define unique id\n    obj.id = obj.protocol + \"://\" + host + \":\" + obj.port + path;\n    // define href\n    obj.href =\n        obj.protocol +\n            \"://\" +\n            host +\n            (loc && loc.port === obj.port ? \"\" : \":\" + obj.port);\n    return obj;\n}\n","const withNativeArrayBuffer = typeof ArrayBuffer === \"function\";\nconst isView = (obj) => {\n    return typeof ArrayBuffer.isView === \"function\"\n        ? ArrayBuffer.isView(obj)\n        : obj.buffer instanceof ArrayBuffer;\n};\nconst toString = Object.prototype.toString;\nconst withNativeBlob = typeof Blob === \"function\" ||\n    (typeof Blob !== \"undefined\" &&\n        toString.call(Blob) === \"[object BlobConstructor]\");\nconst withNativeFile = typeof File === \"function\" ||\n    (typeof File !== \"undefined\" &&\n        toString.call(File) === \"[object FileConstructor]\");\n/**\n * Returns true if obj is a Buffer, an ArrayBuffer, a Blob or a File.\n *\n * @private\n */\nexport function isBinary(obj) {\n    return ((withNativeArrayBuffer && (obj instanceof ArrayBuffer || isView(obj))) ||\n        (withNativeBlob && obj instanceof Blob) ||\n        (withNativeFile && obj instanceof File));\n}\nexport function hasBinary(obj, toJSON) {\n    if (!obj || typeof obj !== \"object\") {\n        return false;\n    }\n    if (Array.isArray(obj)) {\n        for (let i = 0, l = obj.length; i < l; i++) {\n            if (hasBinary(obj[i])) {\n                return true;\n            }\n        }\n        return false;\n    }\n    if (isBinary(obj)) {\n        return true;\n    }\n    if (obj.toJSON &&\n        typeof obj.toJSON === \"function\" &&\n        arguments.length === 1) {\n        return hasBinary(obj.toJSON(), true);\n    }\n    for (const key in obj) {\n        if (Object.prototype.hasOwnProperty.call(obj, key) && hasBinary(obj[key])) {\n            return true;\n        }\n    }\n    return false;\n}\n","import { isBinary } from \"./is-binary.js\";\n/**\n * Replaces every Buffer | ArrayBuffer | Blob | File in packet with a numbered placeholder.\n *\n * @param {Object} packet - socket.io event packet\n * @return {Object} with deconstructed packet and list of buffers\n * @public\n */\nexport function deconstructPacket(packet) {\n    const buffers = [];\n    const packetData = packet.data;\n    const pack = packet;\n    pack.data = _deconstructPacket(packetData, buffers);\n    pack.attachments = buffers.length; // number of binary 'attachments'\n    return { packet: pack, buffers: buffers };\n}\nfunction _deconstructPacket(data, buffers) {\n    if (!data)\n        return data;\n    if (isBinary(data)) {\n        const placeholder = { _placeholder: true, num: buffers.length };\n        buffers.push(data);\n        return placeholder;\n    }\n    else if (Array.isArray(data)) {\n        const newData = new Array(data.length);\n        for (let i = 0; i < data.length; i++) {\n            newData[i] = _deconstructPacket(data[i], buffers);\n        }\n        return newData;\n    }\n    else if (typeof data === \"object\" && !(data instanceof Date)) {\n        const newData = {};\n        for (const key in data) {\n            if (Object.prototype.hasOwnProperty.call(data, key)) {\n                newData[key] = _deconstructPacket(data[key], buffers);\n            }\n        }\n        return newData;\n    }\n    return data;\n}\n/**\n * Reconstructs a binary packet from its placeholder packet and buffers\n *\n * @param {Object} packet - event packet with placeholders\n * @param {Array} buffers - binary buffers to put in placeholder positions\n * @return {Object} reconstructed packet\n * @public\n */\nexport function reconstructPacket(packet, buffers) {\n    packet.data = _reconstructPacket(packet.data, buffers);\n    delete packet.attachments; // no longer useful\n    return packet;\n}\nfunction _reconstructPacket(data, buffers) {\n    if (!data)\n        return data;\n    if (data && data._placeholder === true) {\n        const isIndexValid = typeof data.num === \"number\" &&\n            data.num >= 0 &&\n            data.num < buffers.length;\n        if (isIndexValid) {\n            return buffers[data.num]; // appropriate buffer (should be natural order anyway)\n        }\n        else {\n            throw new Error(\"illegal attachments\");\n        }\n    }\n    else if (Array.isArray(data)) {\n        for (let i = 0; i < data.length; i++) {\n            data[i] = _reconstructPacket(data[i], buffers);\n        }\n    }\n    else if (typeof data === \"object\") {\n        for (const key in data) {\n            if (Object.prototype.hasOwnProperty.call(data, key)) {\n                data[key] = _reconstructPacket(data[key], buffers);\n            }\n        }\n    }\n    return data;\n}\n","import { Emitter } from \"@socket.io/component-emitter\";\nimport { deconstructPacket, reconstructPacket } from \"./binary.js\";\nimport { isBinary, hasBinary } from \"./is-binary.js\";\n/**\n * These strings must not be used as event names, as they have a special meaning.\n */\nconst RESERVED_EVENTS = [\n    \"connect\",\n    \"connect_error\",\n    \"disconnect\",\n    \"disconnecting\",\n    \"newListener\",\n    \"removeListener\", // used by the Node.js EventEmitter\n];\n/**\n * Protocol version.\n *\n * @public\n */\nexport const protocol = 5;\nexport var PacketType;\n(function (PacketType) {\n    PacketType[PacketType[\"CONNECT\"] = 0] = \"CONNECT\";\n    PacketType[PacketType[\"DISCONNECT\"] = 1] = \"DISCONNECT\";\n    PacketType[PacketType[\"EVENT\"] = 2] = \"EVENT\";\n    PacketType[PacketType[\"ACK\"] = 3] = \"ACK\";\n    PacketType[PacketType[\"CONNECT_ERROR\"] = 4] = \"CONNECT_ERROR\";\n    PacketType[PacketType[\"BINARY_EVENT\"] = 5] = \"BINARY_EVENT\";\n    PacketType[PacketType[\"BINARY_ACK\"] = 6] = \"BINARY_ACK\";\n})(PacketType || (PacketType = {}));\n/**\n * A socket.io Encoder instance\n */\nexport class Encoder {\n    /**\n     * Encoder constructor\n     *\n     * @param {function} replacer - custom replacer to pass down to JSON.parse\n     */\n    constructor(replacer) {\n        this.replacer = replacer;\n    }\n    /**\n     * Encode a packet as a single string if non-binary, or as a\n     * buffer sequence, depending on packet type.\n     *\n     * @param {Object} obj - packet object\n     */\n    encode(obj) {\n        if (obj.type === PacketType.EVENT || obj.type === PacketType.ACK) {\n            if (hasBinary(obj)) {\n                return this.encodeAsBinary({\n                    type: obj.type === PacketType.EVENT\n                        ? PacketType.BINARY_EVENT\n                        : PacketType.BINARY_ACK,\n                    nsp: obj.nsp,\n                    data: obj.data,\n                    id: obj.id,\n                });\n            }\n        }\n        return [this.encodeAsString(obj)];\n    }\n    /**\n     * Encode packet as string.\n     */\n    encodeAsString(obj) {\n        // first is type\n        let str = \"\" + obj.type;\n        // attachments if we have them\n        if (obj.type === PacketType.BINARY_EVENT ||\n            obj.type === PacketType.BINARY_ACK) {\n            str += obj.attachments + \"-\";\n        }\n        // if we have a namespace other than `/`\n        // we append it followed by a comma `,`\n        if (obj.nsp && \"/\" !== obj.nsp) {\n            str += obj.nsp + \",\";\n        }\n        // immediately followed by the id\n        if (null != obj.id) {\n            str += obj.id;\n        }\n        // json data\n        if (null != obj.data) {\n            str += JSON.stringify(obj.data, this.replacer);\n        }\n        return str;\n    }\n    /**\n     * Encode packet as 'buffer sequence' by removing blobs, and\n     * deconstructing packet into object with placeholders and\n     * a list of buffers.\n     */\n    encodeAsBinary(obj) {\n        const deconstruction = deconstructPacket(obj);\n        const pack = this.encodeAsString(deconstruction.packet);\n        const buffers = deconstruction.buffers;\n        buffers.unshift(pack); // add packet info to beginning of data list\n        return buffers; // write all the buffers\n    }\n}\n// see https://stackoverflow.com/questions/8511281/check-if-a-value-is-an-object-in-javascript\nfunction isObject(value) {\n    return Object.prototype.toString.call(value) === \"[object Object]\";\n}\n/**\n * A socket.io Decoder instance\n *\n * @return {Object} decoder\n */\nexport class Decoder extends Emitter {\n    /**\n     * Decoder constructor\n     *\n     * @param {function} reviver - custom reviver to pass down to JSON.stringify\n     */\n    constructor(reviver) {\n        super();\n        this.reviver = reviver;\n    }\n    /**\n     * Decodes an encoded packet string into packet JSON.\n     *\n     * @param {String} obj - encoded packet\n     */\n    add(obj) {\n        let packet;\n        if (typeof obj === \"string\") {\n            if (this.reconstructor) {\n                throw new Error(\"got plaintext data when reconstructing a packet\");\n            }\n            packet = this.decodeString(obj);\n            const isBinaryEvent = packet.type === PacketType.BINARY_EVENT;\n            if (isBinaryEvent || packet.type === PacketType.BINARY_ACK) {\n                packet.type = isBinaryEvent ? PacketType.EVENT : PacketType.ACK;\n                // binary packet's json\n                this.reconstructor = new BinaryReconstructor(packet);\n                // no attachments, labeled binary but no binary data to follow\n                if (packet.attachments === 0) {\n                    super.emitReserved(\"decoded\", packet);\n                }\n            }\n            else {\n                // non-binary full packet\n                super.emitReserved(\"decoded\", packet);\n            }\n        }\n        else if (isBinary(obj) || obj.base64) {\n            // raw binary data\n            if (!this.reconstructor) {\n                throw new Error(\"got binary data when not reconstructing a packet\");\n            }\n            else {\n                packet = this.reconstructor.takeBinaryData(obj);\n                if (packet) {\n                    // received final buffer\n                    this.reconstructor = null;\n                    super.emitReserved(\"decoded\", packet);\n                }\n            }\n        }\n        else {\n            throw new Error(\"Unknown type: \" + obj);\n        }\n    }\n    /**\n     * Decode a packet String (JSON data)\n     *\n     * @param {String} str\n     * @return {Object} packet\n     */\n    decodeString(str) {\n        let i = 0;\n        // look up type\n        const p = {\n            type: Number(str.charAt(0)),\n        };\n        if (PacketType[p.type] === undefined) {\n            throw new Error(\"unknown packet type \" + p.type);\n        }\n        // look up attachments if type binary\n        if (p.type === PacketType.BINARY_EVENT ||\n            p.type === PacketType.BINARY_ACK) {\n            const start = i + 1;\n            while (str.charAt(++i) !== \"-\" && i != str.length) { }\n            const buf = str.substring(start, i);\n            if (buf != Number(buf) || str.charAt(i) !== \"-\") {\n                throw new Error(\"Illegal attachments\");\n            }\n            p.attachments = Number(buf);\n        }\n        // look up namespace (if any)\n        if (\"/\" === str.charAt(i + 1)) {\n            const start = i + 1;\n            while (++i) {\n                const c = str.charAt(i);\n                if (\",\" === c)\n                    break;\n                if (i === str.length)\n                    break;\n            }\n            p.nsp = str.substring(start, i);\n        }\n        else {\n            p.nsp = \"/\";\n        }\n        // look up id\n        const next = str.charAt(i + 1);\n        if (\"\" !== next && Number(next) == next) {\n            const start = i + 1;\n            while (++i) {\n                const c = str.charAt(i);\n                if (null == c || Number(c) != c) {\n                    --i;\n                    break;\n                }\n                if (i === str.length)\n                    break;\n            }\n            p.id = Number(str.substring(start, i + 1));\n        }\n        // look up json data\n        if (str.charAt(++i)) {\n            const payload = this.tryParse(str.substr(i));\n            if (Decoder.isPayloadValid(p.type, payload)) {\n                p.data = payload;\n            }\n            else {\n                throw new Error(\"invalid payload\");\n            }\n        }\n        return p;\n    }\n    tryParse(str) {\n        try {\n            return JSON.parse(str, this.reviver);\n        }\n        catch (e) {\n            return false;\n        }\n    }\n    static isPayloadValid(type, payload) {\n        switch (type) {\n            case PacketType.CONNECT:\n                return isObject(payload);\n            case PacketType.DISCONNECT:\n                return payload === undefined;\n            case PacketType.CONNECT_ERROR:\n                return typeof payload === \"string\" || isObject(payload);\n            case PacketType.EVENT:\n            case PacketType.BINARY_EVENT:\n                return (Array.isArray(payload) &&\n                    (typeof payload[0] === \"number\" ||\n                        (typeof payload[0] === \"string\" &&\n                            RESERVED_EVENTS.indexOf(payload[0]) === -1)));\n            case PacketType.ACK:\n            case PacketType.BINARY_ACK:\n                return Array.isArray(payload);\n        }\n    }\n    /**\n     * Deallocates a parser's resources\n     */\n    destroy() {\n        if (this.reconstructor) {\n            this.reconstructor.finishedReconstruction();\n            this.reconstructor = null;\n        }\n    }\n}\n/**\n * A manager of a binary event's 'buffer sequence'. Should\n * be constructed whenever a packet of type BINARY_EVENT is\n * decoded.\n *\n * @param {Object} packet\n * @return {BinaryReconstructor} initialized reconstructor\n */\nclass BinaryReconstructor {\n    constructor(packet) {\n        this.packet = packet;\n        this.buffers = [];\n        this.reconPack = packet;\n    }\n    /**\n     * Method to be called when binary data received from connection\n     * after a BINARY_EVENT packet.\n     *\n     * @param {Buffer | ArrayBuffer} binData - the raw binary data received\n     * @return {null | Object} returns null if more binary data is expected or\n     *   a reconstructed packet object if all buffers have been received.\n     */\n    takeBinaryData(binData) {\n        this.buffers.push(binData);\n        if (this.buffers.length === this.reconPack.attachments) {\n            // done with buffer list\n            const packet = reconstructPacket(this.reconPack, this.buffers);\n            this.finishedReconstruction();\n            return packet;\n        }\n        return null;\n    }\n    /**\n     * Cleans up binary packet reconstruction variables.\n     */\n    finishedReconstruction() {\n        this.reconPack = null;\n        this.buffers = [];\n    }\n}\n","export function on(obj, ev, fn) {\n    obj.on(ev, fn);\n    return function subDestroy() {\n        obj.off(ev, fn);\n    };\n}\n","import { PacketType } from \"socket.io-parser\";\nimport { on } from \"./on.js\";\nimport { Emitter, } from \"@socket.io/component-emitter\";\n/**\n * Internal events.\n * These events can't be emitted by the user.\n */\nconst RESERVED_EVENTS = Object.freeze({\n    connect: 1,\n    connect_error: 1,\n    disconnect: 1,\n    disconnecting: 1,\n    // EventEmitter reserved events: https://nodejs.org/api/events.html#events_event_newlistener\n    newListener: 1,\n    removeListener: 1,\n});\n/**\n * A Socket is the fundamental class for interacting with the server.\n *\n * A Socket belongs to a certain Namespace (by default /) and uses an underlying {@link Manager} to communicate.\n *\n * @example\n * const socket = io();\n *\n * socket.on(\"connect\", () => {\n *   console.log(\"connected\");\n * });\n *\n * // send an event to the server\n * socket.emit(\"foo\", \"bar\");\n *\n * socket.on(\"foobar\", () => {\n *   // an event was received from the server\n * });\n *\n * // upon disconnection\n * socket.on(\"disconnect\", (reason) => {\n *   console.log(`disconnected due to ${reason}`);\n * });\n */\nexport class Socket extends Emitter {\n    /**\n     * `Socket` constructor.\n     */\n    constructor(io, nsp, opts) {\n        super();\n        /**\n         * Whether the socket is currently connected to the server.\n         *\n         * @example\n         * const socket = io();\n         *\n         * socket.on(\"connect\", () => {\n         *   console.log(socket.connected); // true\n         * });\n         *\n         * socket.on(\"disconnect\", () => {\n         *   console.log(socket.connected); // false\n         * });\n         */\n        this.connected = false;\n        /**\n         * Whether the connection state was recovered after a temporary disconnection. In that case, any missed packets will\n         * be transmitted by the server.\n         */\n        this.recovered = false;\n        /**\n         * Buffer for packets received before the CONNECT packet\n         */\n        this.receiveBuffer = [];\n        /**\n         * Buffer for packets that will be sent once the socket is connected\n         */\n        this.sendBuffer = [];\n        /**\n         * The queue of packets to be sent with retry in case of failure.\n         *\n         * Packets are sent one by one, each waiting for the server acknowledgement, in order to guarantee the delivery order.\n         * @private\n         */\n        this._queue = [];\n        /**\n         * A sequence to generate the ID of the {@link QueuedPacket}.\n         * @private\n         */\n        this._queueSeq = 0;\n        this.ids = 0;\n        this.acks = {};\n        this.flags = {};\n        this.io = io;\n        this.nsp = nsp;\n        if (opts && opts.auth) {\n            this.auth = opts.auth;\n        }\n        this._opts = Object.assign({}, opts);\n        if (this.io._autoConnect)\n            this.open();\n    }\n    /**\n     * Whether the socket is currently disconnected\n     *\n     * @example\n     * const socket = io();\n     *\n     * socket.on(\"connect\", () => {\n     *   console.log(socket.disconnected); // false\n     * });\n     *\n     * socket.on(\"disconnect\", () => {\n     *   console.log(socket.disconnected); // true\n     * });\n     */\n    get disconnected() {\n        return !this.connected;\n    }\n    /**\n     * Subscribe to open, close and packet events\n     *\n     * @private\n     */\n    subEvents() {\n        if (this.subs)\n            return;\n        const io = this.io;\n        this.subs = [\n            on(io, \"open\", this.onopen.bind(this)),\n            on(io, \"packet\", this.onpacket.bind(this)),\n            on(io, \"error\", this.onerror.bind(this)),\n            on(io, \"close\", this.onclose.bind(this)),\n        ];\n    }\n    /**\n     * Whether the Socket will try to reconnect when its Manager connects or reconnects.\n     *\n     * @example\n     * const socket = io();\n     *\n     * console.log(socket.active); // true\n     *\n     * socket.on(\"disconnect\", (reason) => {\n     *   if (reason === \"io server disconnect\") {\n     *     // the disconnection was initiated by the server, you need to manually reconnect\n     *     console.log(socket.active); // false\n     *   }\n     *   // else the socket will automatically try to reconnect\n     *   console.log(socket.active); // true\n     * });\n     */\n    get active() {\n        return !!this.subs;\n    }\n    /**\n     * \"Opens\" the socket.\n     *\n     * @example\n     * const socket = io({\n     *   autoConnect: false\n     * });\n     *\n     * socket.connect();\n     */\n    connect() {\n        if (this.connected)\n            return this;\n        this.subEvents();\n        if (!this.io[\"_reconnecting\"])\n            this.io.open(); // ensure open\n        if (\"open\" === this.io._readyState)\n            this.onopen();\n        return this;\n    }\n    /**\n     * Alias for {@link connect()}.\n     */\n    open() {\n        return this.connect();\n    }\n    /**\n     * Sends a `message` event.\n     *\n     * This method mimics the WebSocket.send() method.\n     *\n     * @see https://developer.mozilla.org/en-US/docs/Web/API/WebSocket/send\n     *\n     * @example\n     * socket.send(\"hello\");\n     *\n     * // this is equivalent to\n     * socket.emit(\"message\", \"hello\");\n     *\n     * @return self\n     */\n    send(...args) {\n        args.unshift(\"message\");\n        this.emit.apply(this, args);\n        return this;\n    }\n    /**\n     * Override `emit`.\n     * If the event is in `events`, it's emitted normally.\n     *\n     * @example\n     * socket.emit(\"hello\", \"world\");\n     *\n     * // all serializable datastructures are supported (no need to call JSON.stringify)\n     * socket.emit(\"hello\", 1, \"2\", { 3: [\"4\"], 5: Uint8Array.from([6]) });\n     *\n     * // with an acknowledgement from the server\n     * socket.emit(\"hello\", \"world\", (val) => {\n     *   // ...\n     * });\n     *\n     * @return self\n     */\n    emit(ev, ...args) {\n        if (RESERVED_EVENTS.hasOwnProperty(ev)) {\n            throw new Error('\"' + ev.toString() + '\" is a reserved event name');\n        }\n        args.unshift(ev);\n        if (this._opts.retries && !this.flags.fromQueue && !this.flags.volatile) {\n            this._addToQueue(args);\n            return this;\n        }\n        const packet = {\n            type: PacketType.EVENT,\n            data: args,\n        };\n        packet.options = {};\n        packet.options.compress = this.flags.compress !== false;\n        // event ack callback\n        if (\"function\" === typeof args[args.length - 1]) {\n            const id = this.ids++;\n            const ack = args.pop();\n            this._registerAckCallback(id, ack);\n            packet.id = id;\n        }\n        const isTransportWritable = this.io.engine &&\n            this.io.engine.transport &&\n            this.io.engine.transport.writable;\n        const discardPacket = this.flags.volatile && (!isTransportWritable || !this.connected);\n        if (discardPacket) {\n        }\n        else if (this.connected) {\n            this.notifyOutgoingListeners(packet);\n            this.packet(packet);\n        }\n        else {\n            this.sendBuffer.push(packet);\n        }\n        this.flags = {};\n        return this;\n    }\n    /**\n     * @private\n     */\n    _registerAckCallback(id, ack) {\n        var _a;\n        const timeout = (_a = this.flags.timeout) !== null && _a !== void 0 ? _a : this._opts.ackTimeout;\n        if (timeout === undefined) {\n            this.acks[id] = ack;\n            return;\n        }\n        // @ts-ignore\n        const timer = this.io.setTimeoutFn(() => {\n            delete this.acks[id];\n            for (let i = 0; i < this.sendBuffer.length; i++) {\n                if (this.sendBuffer[i].id === id) {\n                    this.sendBuffer.splice(i, 1);\n                }\n            }\n            ack.call(this, new Error(\"operation has timed out\"));\n        }, timeout);\n        this.acks[id] = (...args) => {\n            // @ts-ignore\n            this.io.clearTimeoutFn(timer);\n            ack.apply(this, [null, ...args]);\n        };\n    }\n    /**\n     * Emits an event and waits for an acknowledgement\n     *\n     * @example\n     * // without timeout\n     * const response = await socket.emitWithAck(\"hello\", \"world\");\n     *\n     * // with a specific timeout\n     * try {\n     *   const response = await socket.timeout(1000).emitWithAck(\"hello\", \"world\");\n     * } catch (err) {\n     *   // the server did not acknowledge the event in the given delay\n     * }\n     *\n     * @return a Promise that will be fulfilled when the server acknowledges the event\n     */\n    emitWithAck(ev, ...args) {\n        // the timeout flag is optional\n        const withErr = this.flags.timeout !== undefined || this._opts.ackTimeout !== undefined;\n        return new Promise((resolve, reject) => {\n            args.push((arg1, arg2) => {\n                if (withErr) {\n                    return arg1 ? reject(arg1) : resolve(arg2);\n                }\n                else {\n                    return resolve(arg1);\n                }\n            });\n            this.emit(ev, ...args);\n        });\n    }\n    /**\n     * Add the packet to the queue.\n     * @param args\n     * @private\n     */\n    _addToQueue(args) {\n        let ack;\n        if (typeof args[args.length - 1] === \"function\") {\n            ack = args.pop();\n        }\n        const packet = {\n            id: this._queueSeq++,\n            tryCount: 0,\n            pending: false,\n            args,\n            flags: Object.assign({ fromQueue: true }, this.flags),\n        };\n        args.push((err, ...responseArgs) => {\n            if (packet !== this._queue[0]) {\n                // the packet has already been acknowledged\n                return;\n            }\n            const hasError = err !== null;\n            if (hasError) {\n                if (packet.tryCount > this._opts.retries) {\n                    this._queue.shift();\n                    if (ack) {\n                        ack(err);\n                    }\n                }\n            }\n            else {\n                this._queue.shift();\n                if (ack) {\n                    ack(null, ...responseArgs);\n                }\n            }\n            packet.pending = false;\n            return this._drainQueue();\n        });\n        this._queue.push(packet);\n        this._drainQueue();\n    }\n    /**\n     * Send the first packet of the queue, and wait for an acknowledgement from the server.\n     * @param force - whether to resend a packet that has not been acknowledged yet\n     *\n     * @private\n     */\n    _drainQueue(force = false) {\n        if (!this.connected || this._queue.length === 0) {\n            return;\n        }\n        const packet = this._queue[0];\n        if (packet.pending && !force) {\n            return;\n        }\n        packet.pending = true;\n        packet.tryCount++;\n        this.flags = packet.flags;\n        this.emit.apply(this, packet.args);\n    }\n    /**\n     * Sends a packet.\n     *\n     * @param packet\n     * @private\n     */\n    packet(packet) {\n        packet.nsp = this.nsp;\n        this.io._packet(packet);\n    }\n    /**\n     * Called upon engine `open`.\n     *\n     * @private\n     */\n    onopen() {\n        if (typeof this.auth == \"function\") {\n            this.auth((data) => {\n                this._sendConnectPacket(data);\n            });\n        }\n        else {\n            this._sendConnectPacket(this.auth);\n        }\n    }\n    /**\n     * Sends a CONNECT packet to initiate the Socket.IO session.\n     *\n     * @param data\n     * @private\n     */\n    _sendConnectPacket(data) {\n        this.packet({\n            type: PacketType.CONNECT,\n            data: this._pid\n                ? Object.assign({ pid: this._pid, offset: this._lastOffset }, data)\n                : data,\n        });\n    }\n    /**\n     * Called upon engine or manager `error`.\n     *\n     * @param err\n     * @private\n     */\n    onerror(err) {\n        if (!this.connected) {\n            this.emitReserved(\"connect_error\", err);\n        }\n    }\n    /**\n     * Called upon engine `close`.\n     *\n     * @param reason\n     * @param description\n     * @private\n     */\n    onclose(reason, description) {\n        this.connected = false;\n        delete this.id;\n        this.emitReserved(\"disconnect\", reason, description);\n    }\n    /**\n     * Called with socket packet.\n     *\n     * @param packet\n     * @private\n     */\n    onpacket(packet) {\n        const sameNamespace = packet.nsp === this.nsp;\n        if (!sameNamespace)\n            return;\n        switch (packet.type) {\n            case PacketType.CONNECT:\n                if (packet.data && packet.data.sid) {\n                    this.onconnect(packet.data.sid, packet.data.pid);\n                }\n                else {\n                    this.emitReserved(\"connect_error\", new Error(\"It seems you are trying to reach a Socket.IO server in v2.x with a v3.x client, but they are not compatible (more information here: https://socket.io/docs/v3/migrating-from-2-x-to-3-0/)\"));\n                }\n                break;\n            case PacketType.EVENT:\n            case PacketType.BINARY_EVENT:\n                this.onevent(packet);\n                break;\n            case PacketType.ACK:\n            case PacketType.BINARY_ACK:\n                this.onack(packet);\n                break;\n            case PacketType.DISCONNECT:\n                this.ondisconnect();\n                break;\n            case PacketType.CONNECT_ERROR:\n                this.destroy();\n                const err = new Error(packet.data.message);\n                // @ts-ignore\n                err.data = packet.data.data;\n                this.emitReserved(\"connect_error\", err);\n                break;\n        }\n    }\n    /**\n     * Called upon a server event.\n     *\n     * @param packet\n     * @private\n     */\n    onevent(packet) {\n        const args = packet.data || [];\n        if (null != packet.id) {\n            args.push(this.ack(packet.id));\n        }\n        if (this.connected) {\n            this.emitEvent(args);\n        }\n        else {\n            this.receiveBuffer.push(Object.freeze(args));\n        }\n    }\n    emitEvent(args) {\n        if (this._anyListeners && this._anyListeners.length) {\n            const listeners = this._anyListeners.slice();\n            for (const listener of listeners) {\n                listener.apply(this, args);\n            }\n        }\n        super.emit.apply(this, args);\n        if (this._pid && args.length && typeof args[args.length - 1] === \"string\") {\n            this._lastOffset = args[args.length - 1];\n        }\n    }\n    /**\n     * Produces an ack callback to emit with an event.\n     *\n     * @private\n     */\n    ack(id) {\n        const self = this;\n        let sent = false;\n        return function (...args) {\n            // prevent double callbacks\n            if (sent)\n                return;\n            sent = true;\n            self.packet({\n                type: PacketType.ACK,\n                id: id,\n                data: args,\n            });\n        };\n    }\n    /**\n     * Called upon a server acknowlegement.\n     *\n     * @param packet\n     * @private\n     */\n    onack(packet) {\n        const ack = this.acks[packet.id];\n        if (\"function\" === typeof ack) {\n            ack.apply(this, packet.data);\n            delete this.acks[packet.id];\n        }\n        else {\n        }\n    }\n    /**\n     * Called upon server connect.\n     *\n     * @private\n     */\n    onconnect(id, pid) {\n        this.id = id;\n        this.recovered = pid && this._pid === pid;\n        this._pid = pid; // defined only if connection state recovery is enabled\n        this.connected = true;\n        this.emitBuffered();\n        this.emitReserved(\"connect\");\n        this._drainQueue(true);\n    }\n    /**\n     * Emit buffered events (received and emitted).\n     *\n     * @private\n     */\n    emitBuffered() {\n        this.receiveBuffer.forEach((args) => this.emitEvent(args));\n        this.receiveBuffer = [];\n        this.sendBuffer.forEach((packet) => {\n            this.notifyOutgoingListeners(packet);\n            this.packet(packet);\n        });\n        this.sendBuffer = [];\n    }\n    /**\n     * Called upon server disconnect.\n     *\n     * @private\n     */\n    ondisconnect() {\n        this.destroy();\n        this.onclose(\"io server disconnect\");\n    }\n    /**\n     * Called upon forced client/server side disconnections,\n     * this method ensures the manager stops tracking us and\n     * that reconnections don't get triggered for this.\n     *\n     * @private\n     */\n    destroy() {\n        if (this.subs) {\n            // clean subscriptions to avoid reconnections\n            this.subs.forEach((subDestroy) => subDestroy());\n            this.subs = undefined;\n        }\n        this.io[\"_destroy\"](this);\n    }\n    /**\n     * Disconnects the socket manually. In that case, the socket will not try to reconnect.\n     *\n     * If this is the last active Socket instance of the {@link Manager}, the low-level connection will be closed.\n     *\n     * @example\n     * const socket = io();\n     *\n     * socket.on(\"disconnect\", (reason) => {\n     *   // console.log(reason); prints \"io client disconnect\"\n     * });\n     *\n     * socket.disconnect();\n     *\n     * @return self\n     */\n    disconnect() {\n        if (this.connected) {\n            this.packet({ type: PacketType.DISCONNECT });\n        }\n        // remove socket from pool\n        this.destroy();\n        if (this.connected) {\n            // fire events\n            this.onclose(\"io client disconnect\");\n        }\n        return this;\n    }\n    /**\n     * Alias for {@link disconnect()}.\n     *\n     * @return self\n     */\n    close() {\n        return this.disconnect();\n    }\n    /**\n     * Sets the compress flag.\n     *\n     * @example\n     * socket.compress(false).emit(\"hello\");\n     *\n     * @param compress - if `true`, compresses the sending data\n     * @return self\n     */\n    compress(compress) {\n        this.flags.compress = compress;\n        return this;\n    }\n    /**\n     * Sets a modifier for a subsequent event emission that the event message will be dropped when this socket is not\n     * ready to send messages.\n     *\n     * @example\n     * socket.volatile.emit(\"hello\"); // the server may or may not receive it\n     *\n     * @returns self\n     */\n    get volatile() {\n        this.flags.volatile = true;\n        return this;\n    }\n    /**\n     * Sets a modifier for a subsequent event emission that the callback will be called with an error when the\n     * given number of milliseconds have elapsed without an acknowledgement from the server:\n     *\n     * @example\n     * socket.timeout(5000).emit(\"my-event\", (err) => {\n     *   if (err) {\n     *     // the server did not acknowledge the event in the given delay\n     *   }\n     * });\n     *\n     * @returns self\n     */\n    timeout(timeout) {\n        this.flags.timeout = timeout;\n        return this;\n    }\n    /**\n     * Adds a listener that will be fired when any event is emitted. The event name is passed as the first argument to the\n     * callback.\n     *\n     * @example\n     * socket.onAny((event, ...args) => {\n     *   console.log(`got ${event}`);\n     * });\n     *\n     * @param listener\n     */\n    onAny(listener) {\n        this._anyListeners = this._anyListeners || [];\n        this._anyListeners.push(listener);\n        return this;\n    }\n    /**\n     * Adds a listener that will be fired when any event is emitted. The event name is passed as the first argument to the\n     * callback. The listener is added to the beginning of the listeners array.\n     *\n     * @example\n     * socket.prependAny((event, ...args) => {\n     *   console.log(`got event ${event}`);\n     * });\n     *\n     * @param listener\n     */\n    prependAny(listener) {\n        this._anyListeners = this._anyListeners || [];\n        this._anyListeners.unshift(listener);\n        return this;\n    }\n    /**\n     * Removes the listener that will be fired when any event is emitted.\n     *\n     * @example\n     * const catchAllListener = (event, ...args) => {\n     *   console.log(`got event ${event}`);\n     * }\n     *\n     * socket.onAny(catchAllListener);\n     *\n     * // remove a specific listener\n     * socket.offAny(catchAllListener);\n     *\n     * // or remove all listeners\n     * socket.offAny();\n     *\n     * @param listener\n     */\n    offAny(listener) {\n        if (!this._anyListeners) {\n            return this;\n        }\n        if (listener) {\n            const listeners = this._anyListeners;\n            for (let i = 0; i < listeners.length; i++) {\n                if (listener === listeners[i]) {\n                    listeners.splice(i, 1);\n                    return this;\n                }\n            }\n        }\n        else {\n            this._anyListeners = [];\n        }\n        return this;\n    }\n    /**\n     * Returns an array of listeners that are listening for any event that is specified. This array can be manipulated,\n     * e.g. to remove listeners.\n     */\n    listenersAny() {\n        return this._anyListeners || [];\n    }\n    /**\n     * Adds a listener that will be fired when any event is emitted. The event name is passed as the first argument to the\n     * callback.\n     *\n     * Note: acknowledgements sent to the server are not included.\n     *\n     * @example\n     * socket.onAnyOutgoing((event, ...args) => {\n     *   console.log(`sent event ${event}`);\n     * });\n     *\n     * @param listener\n     */\n    onAnyOutgoing(listener) {\n        this._anyOutgoingListeners = this._anyOutgoingListeners || [];\n        this._anyOutgoingListeners.push(listener);\n        return this;\n    }\n    /**\n     * Adds a listener that will be fired when any event is emitted. The event name is passed as the first argument to the\n     * callback. The listener is added to the beginning of the listeners array.\n     *\n     * Note: acknowledgements sent to the server are not included.\n     *\n     * @example\n     * socket.prependAnyOutgoing((event, ...args) => {\n     *   console.log(`sent event ${event}`);\n     * });\n     *\n     * @param listener\n     */\n    prependAnyOutgoing(listener) {\n        this._anyOutgoingListeners = this._anyOutgoingListeners || [];\n        this._anyOutgoingListeners.unshift(listener);\n        return this;\n    }\n    /**\n     * Removes the listener that will be fired when any event is emitted.\n     *\n     * @example\n     * const catchAllListener = (event, ...args) => {\n     *   console.log(`sent event ${event}`);\n     * }\n     *\n     * socket.onAnyOutgoing(catchAllListener);\n     *\n     * // remove a specific listener\n     * socket.offAnyOutgoing(catchAllListener);\n     *\n     * // or remove all listeners\n     * socket.offAnyOutgoing();\n     *\n     * @param [listener] - the catch-all listener (optional)\n     */\n    offAnyOutgoing(listener) {\n        if (!this._anyOutgoingListeners) {\n            return this;\n        }\n        if (listener) {\n            const listeners = this._anyOutgoingListeners;\n            for (let i = 0; i < listeners.length; i++) {\n                if (listener === listeners[i]) {\n                    listeners.splice(i, 1);\n                    return this;\n                }\n            }\n        }\n        else {\n            this._anyOutgoingListeners = [];\n        }\n        return this;\n    }\n    /**\n     * Returns an array of listeners that are listening for any event that is specified. This array can be manipulated,\n     * e.g. to remove listeners.\n     */\n    listenersAnyOutgoing() {\n        return this._anyOutgoingListeners || [];\n    }\n    /**\n     * Notify the listeners for each packet sent\n     *\n     * @param packet\n     *\n     * @private\n     */\n    notifyOutgoingListeners(packet) {\n        if (this._anyOutgoingListeners && this._anyOutgoingListeners.length) {\n            const listeners = this._anyOutgoingListeners.slice();\n            for (const listener of listeners) {\n                listener.apply(this, packet.data);\n            }\n        }\n    }\n}\n","/**\n * Initialize backoff timer with `opts`.\n *\n * - `min` initial timeout in milliseconds [100]\n * - `max` max timeout [10000]\n * - `jitter` [0]\n * - `factor` [2]\n *\n * @param {Object} opts\n * @api public\n */\nexport function Backoff(opts) {\n    opts = opts || {};\n    this.ms = opts.min || 100;\n    this.max = opts.max || 10000;\n    this.factor = opts.factor || 2;\n    this.jitter = opts.jitter > 0 && opts.jitter <= 1 ? opts.jitter : 0;\n    this.attempts = 0;\n}\n/**\n * Return the backoff duration.\n *\n * @return {Number}\n * @api public\n */\nBackoff.prototype.duration = function () {\n    var ms = this.ms * Math.pow(this.factor, this.attempts++);\n    if (this.jitter) {\n        var rand = Math.random();\n        var deviation = Math.floor(rand * this.jitter * ms);\n        ms = (Math.floor(rand * 10) & 1) == 0 ? ms - deviation : ms + deviation;\n    }\n    return Math.min(ms, this.max) | 0;\n};\n/**\n * Reset the number of attempts.\n *\n * @api public\n */\nBackoff.prototype.reset = function () {\n    this.attempts = 0;\n};\n/**\n * Set the minimum duration\n *\n * @api public\n */\nBackoff.prototype.setMin = function (min) {\n    this.ms = min;\n};\n/**\n * Set the maximum duration\n *\n * @api public\n */\nBackoff.prototype.setMax = function (max) {\n    this.max = max;\n};\n/**\n * Set the jitter\n *\n * @api public\n */\nBackoff.prototype.setJitter = function (jitter) {\n    this.jitter = jitter;\n};\n","import { Socket as Engine, installTimerFunctions, nextTick, } from \"engine.io-client\";\nimport { Socket } from \"./socket.js\";\nimport * as parser from \"socket.io-parser\";\nimport { on } from \"./on.js\";\nimport { Backoff } from \"./contrib/backo2.js\";\nimport { Emitter, } from \"@socket.io/component-emitter\";\nexport class Manager extends Emitter {\n    constructor(uri, opts) {\n        var _a;\n        super();\n        this.nsps = {};\n        this.subs = [];\n        if (uri && \"object\" === typeof uri) {\n            opts = uri;\n            uri = undefined;\n        }\n        opts = opts || {};\n        opts.path = opts.path || \"/socket.io\";\n        this.opts = opts;\n        installTimerFunctions(this, opts);\n        this.reconnection(opts.reconnection !== false);\n        this.reconnectionAttempts(opts.reconnectionAttempts || Infinity);\n        this.reconnectionDelay(opts.reconnectionDelay || 1000);\n        this.reconnectionDelayMax(opts.reconnectionDelayMax || 5000);\n        this.randomizationFactor((_a = opts.randomizationFactor) !== null && _a !== void 0 ? _a : 0.5);\n        this.backoff = new Backoff({\n            min: this.reconnectionDelay(),\n            max: this.reconnectionDelayMax(),\n            jitter: this.randomizationFactor(),\n        });\n        this.timeout(null == opts.timeout ? 20000 : opts.timeout);\n        this._readyState = \"closed\";\n        this.uri = uri;\n        const _parser = opts.parser || parser;\n        this.encoder = new _parser.Encoder();\n        this.decoder = new _parser.Decoder();\n        this._autoConnect = opts.autoConnect !== false;\n        if (this._autoConnect)\n            this.open();\n    }\n    reconnection(v) {\n        if (!arguments.length)\n            return this._reconnection;\n        this._reconnection = !!v;\n        return this;\n    }\n    reconnectionAttempts(v) {\n        if (v === undefined)\n            return this._reconnectionAttempts;\n        this._reconnectionAttempts = v;\n        return this;\n    }\n    reconnectionDelay(v) {\n        var _a;\n        if (v === undefined)\n            return this._reconnectionDelay;\n        this._reconnectionDelay = v;\n        (_a = this.backoff) === null || _a === void 0 ? void 0 : _a.setMin(v);\n        return this;\n    }\n    randomizationFactor(v) {\n        var _a;\n        if (v === undefined)\n            return this._randomizationFactor;\n        this._randomizationFactor = v;\n        (_a = this.backoff) === null || _a === void 0 ? void 0 : _a.setJitter(v);\n        return this;\n    }\n    reconnectionDelayMax(v) {\n        var _a;\n        if (v === undefined)\n            return this._reconnectionDelayMax;\n        this._reconnectionDelayMax = v;\n        (_a = this.backoff) === null || _a === void 0 ? void 0 : _a.setMax(v);\n        return this;\n    }\n    timeout(v) {\n        if (!arguments.length)\n            return this._timeout;\n        this._timeout = v;\n        return this;\n    }\n    /**\n     * Starts trying to reconnect if reconnection is enabled and we have not\n     * started reconnecting yet\n     *\n     * @private\n     */\n    maybeReconnectOnOpen() {\n        // Only try to reconnect if it's the first time we're connecting\n        if (!this._reconnecting &&\n            this._reconnection &&\n            this.backoff.attempts === 0) {\n            // keeps reconnection from firing twice for the same reconnection loop\n            this.reconnect();\n        }\n    }\n    /**\n     * Sets the current transport `socket`.\n     *\n     * @param {Function} fn - optional, callback\n     * @return self\n     * @public\n     */\n    open(fn) {\n        if (~this._readyState.indexOf(\"open\"))\n            return this;\n        this.engine = new Engine(this.uri, this.opts);\n        const socket = this.engine;\n        const self = this;\n        this._readyState = \"opening\";\n        this.skipReconnect = false;\n        // emit `open`\n        const openSubDestroy = on(socket, \"open\", function () {\n            self.onopen();\n            fn && fn();\n        });\n        const onError = (err) => {\n            this.cleanup();\n            this._readyState = \"closed\";\n            this.emitReserved(\"error\", err);\n            if (fn) {\n                fn(err);\n            }\n            else {\n                // Only do this if there is no fn to handle the error\n                this.maybeReconnectOnOpen();\n            }\n        };\n        // emit `error`\n        const errorSub = on(socket, \"error\", onError);\n        if (false !== this._timeout) {\n            const timeout = this._timeout;\n            // set timer\n            const timer = this.setTimeoutFn(() => {\n                openSubDestroy();\n                onError(new Error(\"timeout\"));\n                socket.close();\n            }, timeout);\n            if (this.opts.autoUnref) {\n                timer.unref();\n            }\n            this.subs.push(() => {\n                this.clearTimeoutFn(timer);\n            });\n        }\n        this.subs.push(openSubDestroy);\n        this.subs.push(errorSub);\n        return this;\n    }\n    /**\n     * Alias for open()\n     *\n     * @return self\n     * @public\n     */\n    connect(fn) {\n        return this.open(fn);\n    }\n    /**\n     * Called upon transport open.\n     *\n     * @private\n     */\n    onopen() {\n        // clear old subs\n        this.cleanup();\n        // mark as open\n        this._readyState = \"open\";\n        this.emitReserved(\"open\");\n        // add new subs\n        const socket = this.engine;\n        this.subs.push(on(socket, \"ping\", this.onping.bind(this)), on(socket, \"data\", this.ondata.bind(this)), on(socket, \"error\", this.onerror.bind(this)), on(socket, \"close\", this.onclose.bind(this)), on(this.decoder, \"decoded\", this.ondecoded.bind(this)));\n    }\n    /**\n     * Called upon a ping.\n     *\n     * @private\n     */\n    onping() {\n        this.emitReserved(\"ping\");\n    }\n    /**\n     * Called with data.\n     *\n     * @private\n     */\n    ondata(data) {\n        try {\n            this.decoder.add(data);\n        }\n        catch (e) {\n            this.onclose(\"parse error\", e);\n        }\n    }\n    /**\n     * Called when parser fully decodes a packet.\n     *\n     * @private\n     */\n    ondecoded(packet) {\n        // the nextTick call prevents an exception in a user-provided event listener from triggering a disconnection due to a \"parse error\"\n        nextTick(() => {\n            this.emitReserved(\"packet\", packet);\n        }, this.setTimeoutFn);\n    }\n    /**\n     * Called upon socket error.\n     *\n     * @private\n     */\n    onerror(err) {\n        this.emitReserved(\"error\", err);\n    }\n    /**\n     * Creates a new socket for the given `nsp`.\n     *\n     * @return {Socket}\n     * @public\n     */\n    socket(nsp, opts) {\n        let socket = this.nsps[nsp];\n        if (!socket) {\n            socket = new Socket(this, nsp, opts);\n            this.nsps[nsp] = socket;\n        }\n        else if (this._autoConnect && !socket.active) {\n            socket.connect();\n        }\n        return socket;\n    }\n    /**\n     * Called upon a socket close.\n     *\n     * @param socket\n     * @private\n     */\n    _destroy(socket) {\n        const nsps = Object.keys(this.nsps);\n        for (const nsp of nsps) {\n            const socket = this.nsps[nsp];\n            if (socket.active) {\n                return;\n            }\n        }\n        this._close();\n    }\n    /**\n     * Writes a packet.\n     *\n     * @param packet\n     * @private\n     */\n    _packet(packet) {\n        const encodedPackets = this.encoder.encode(packet);\n        for (let i = 0; i < encodedPackets.length; i++) {\n            this.engine.write(encodedPackets[i], packet.options);\n        }\n    }\n    /**\n     * Clean up transport subscriptions and packet buffer.\n     *\n     * @private\n     */\n    cleanup() {\n        this.subs.forEach((subDestroy) => subDestroy());\n        this.subs.length = 0;\n        this.decoder.destroy();\n    }\n    /**\n     * Close the current socket.\n     *\n     * @private\n     */\n    _close() {\n        this.skipReconnect = true;\n        this._reconnecting = false;\n        this.onclose(\"forced close\");\n        if (this.engine)\n            this.engine.close();\n    }\n    /**\n     * Alias for close()\n     *\n     * @private\n     */\n    disconnect() {\n        return this._close();\n    }\n    /**\n     * Called upon engine close.\n     *\n     * @private\n     */\n    onclose(reason, description) {\n        this.cleanup();\n        this.backoff.reset();\n        this._readyState = \"closed\";\n        this.emitReserved(\"close\", reason, description);\n        if (this._reconnection && !this.skipReconnect) {\n            this.reconnect();\n        }\n    }\n    /**\n     * Attempt a reconnection.\n     *\n     * @private\n     */\n    reconnect() {\n        if (this._reconnecting || this.skipReconnect)\n            return this;\n        const self = this;\n        if (this.backoff.attempts >= this._reconnectionAttempts) {\n            this.backoff.reset();\n            this.emitReserved(\"reconnect_failed\");\n            this._reconnecting = false;\n        }\n        else {\n            const delay = this.backoff.duration();\n            this._reconnecting = true;\n            const timer = this.setTimeoutFn(() => {\n                if (self.skipReconnect)\n                    return;\n                this.emitReserved(\"reconnect_attempt\", self.backoff.attempts);\n                // check again for the case socket closed in above events\n                if (self.skipReconnect)\n                    return;\n                self.open((err) => {\n                    if (err) {\n                        self._reconnecting = false;\n                        self.reconnect();\n                        this.emitReserved(\"reconnect_error\", err);\n                    }\n                    else {\n                        self.onreconnect();\n                    }\n                });\n            }, delay);\n            if (this.opts.autoUnref) {\n                timer.unref();\n            }\n            this.subs.push(() => {\n                this.clearTimeoutFn(timer);\n            });\n        }\n    }\n    /**\n     * Called upon successful reconnect.\n     *\n     * @private\n     */\n    onreconnect() {\n        const attempt = this.backoff.attempts;\n        this._reconnecting = false;\n        this.backoff.reset();\n        this.emitReserved(\"reconnect\", attempt);\n    }\n}\n","import { url } from \"./url.js\";\nimport { Manager } from \"./manager.js\";\nimport { Socket } from \"./socket.js\";\n/**\n * Managers cache.\n */\nconst cache = {};\nfunction lookup(uri, opts) {\n    if (typeof uri === \"object\") {\n        opts = uri;\n        uri = undefined;\n    }\n    opts = opts || {};\n    const parsed = url(uri, opts.path || \"/socket.io\");\n    const source = parsed.source;\n    const id = parsed.id;\n    const path = parsed.path;\n    const sameNamespace = cache[id] && path in cache[id][\"nsps\"];\n    const newConnection = opts.forceNew ||\n        opts[\"force new connection\"] ||\n        false === opts.multiplex ||\n        sameNamespace;\n    let io;\n    if (newConnection) {\n        io = new Manager(source, opts);\n    }\n    else {\n        if (!cache[id]) {\n            cache[id] = new Manager(source, opts);\n        }\n        io = cache[id];\n    }\n    if (parsed.query && !opts.query) {\n        opts.query = parsed.queryKey;\n    }\n    return io.socket(parsed.path, opts);\n}\n// so that \"lookup\" can be used both as a function (e.g. `io(...)`) and as a\n// namespace (e.g. `io.connect(...)`), for backward compatibility\nObject.assign(lookup, {\n    Manager,\n    Socket,\n    io: lookup,\n    connect: lookup,\n});\n/**\n * Protocol version.\n *\n * @public\n */\nexport { protocol } from \"socket.io-parser\";\n/**\n * Expose constructors for standalone build.\n *\n * @public\n */\nexport { Manager, Socket, lookup as io, lookup as connect, lookup as default, };\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","toArray","Uint8Array","byteOffset","byteLength","TEXT_ENCODER","encodePacketToBinary","packet","arrayBuffer","then","encoded","TextEncoder","encode","chars","lookup","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","join","decodePayload","encodedPayload","decodedPacket","push","TEXT_DECODER","decodePacketFromBinary","isBinary","TextDecoder","isPlainBinary","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","utf8Length","Math","ceil","size","str","c","l","encodeURIComponent","qs","qry","pairs","pair","decodeURIComponent","TransportError","reason","description","context","Error","Transport","writable","query","socket","readyState","doOpen","doClose","onClose","write","onPacket","details","onPause","schema","_hostname","_port","path","_query","hostname","indexOf","port","secure","Number","encodedQuery","alphabet","map","seed","prev","num","floor","yeast","now","Date","value","XMLHttpRequest","err","hasCORS","XHR","xdomain","e","concat","createCookieJar","empty","hasXHR2","xhr","responseType","Polling","polling","location","isSSL","xd","forceBase64","withCredentials","cookieJar","poll","pause","total","doPoll","onOpen","close","doWrite","timestampRequests","timestampParam","sid","b64","createUri","Request","uri","req","request","method","xhrStatus","onError","onData","pollXhr","undefined","_a","open","extraHeaders","setDisableHeaderCheck","setRequestHeader","addCookies","requestTimeout","timeout","onreadystatechange","parseCookies","status","onLoad","send","document","index","requestsCount","requests","cleanup","fromError","abort","responseText","attachEvent","unloadHandler","terminationEvent","nextTick","isPromiseAvailable","Promise","resolve","WebSocket","MozWebSocket","usingBrowserWebSocket","defaultBinaryType","isReactNative","navigator","product","toLowerCase","WS","check","protocols","headers","ws","addEventListeners","onopen","autoUnref","_socket","unref","onclose","closeEvent","onmessage","ev","onerror","lastPacket","shouldIncludeBinaryHeader","WT","WebTransport","transport","transportOptions","name","closed","ready","createBidirectionalStream","stream","reader","readable","getReader","writer","getWriter","binaryFlag","read","done","handshake","of","transports","websocket","webtransport","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","closeOnBeforeunload","id","upgrades","pingInterval","pingTimeout","pingTimeoutTimer","beforeunloadEventListener","offlineEventListener","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","url","loc","test","ipv6","href","withNativeFile","File","hasBinary","toJSON","isArray","deconstructPacket","buffers","packetData","pack","_deconstructPacket","attachments","placeholder","_placeholder","newData","reconstructPacket","_reconstructPacket","isIndexValid","RESERVED_EVENTS","PacketType","Encoder","replacer","EVENT","ACK","encodeAsBinary","BINARY_EVENT","BINARY_ACK","nsp","encodeAsString","stringify","deconstruction","unshift","isObject","Decoder","reviver","reconstructor","decodeString","isBinaryEvent","BinaryReconstructor","takeBinaryData","start","buf","next","payload","tryParse","substr","isPayloadValid","finishedReconstruction","CONNECT","DISCONNECT","CONNECT_ERROR","reconPack","binData","subDestroy","freeze","connect","connect_error","disconnect","disconnecting","newListener","io","connected","recovered","receiveBuffer","sendBuffer","_queue","_queueSeq","ids","acks","flags","auth","_opts","_autoConnect","subs","onpacket","subEvents","_readyState","retries","fromQueue","_addToQueue","ack","pop","_registerAckCallback","isTransportWritable","engine","discardPacket","notifyOutgoingListeners","ackTimeout","timer","withErr","reject","arg1","arg2","tryCount","pending","hasError","responseArgs","_drainQueue","force","_packet","_sendConnectPacket","_pid","pid","offset","_lastOffset","sameNamespace","onconnect","onevent","onack","ondisconnect","destroy","message","emitEvent","_anyListeners","listener","sent","emitBuffered","_anyOutgoingListeners","Backoff","ms","min","max","factor","jitter","attempts","duration","pow","rand","random","deviation","reset","setMin","setMax","setJitter","Manager","nsps","reconnection","reconnectionAttempts","Infinity","reconnectionDelay","reconnectionDelayMax","randomizationFactor","backoff","_parser","parser","encoder","decoder","autoConnect","v","_reconnection","_reconnectionAttempts","_reconnectionDelay","_randomizationFactor","_reconnectionDelayMax","_timeout","_reconnecting","reconnect","Engine","skipReconnect","openSubDestroy","maybeReconnectOnOpen","errorSub","onping","ondata","ondecoded","add","active","_close","delay","onreconnect","attempt","cache","parsed","newConnection","forceNew","multiplex"],"mappings":"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"}