From 9b235ec01d2ea7f1685b704bd2c5001597635f51 Mon Sep 17 00:00:00 2001 From: Damien Arrachequesne Date: Thu, 22 Jun 2023 11:17:34 +0200 Subject: [PATCH] chore(release): 4.7.0 Diff: https://github.com/socketio/socket.io-client/compare/4.6.2...4.7.0 --- CHANGELOG.md | 83 +++++++ dist/socket.io.esm.min.js | 4 +- dist/socket.io.esm.min.js.map | 2 +- dist/socket.io.js | 391 ++++++++++++++++++++++-------- dist/socket.io.js.map | 2 +- dist/socket.io.min.js | 4 +- dist/socket.io.min.js.map | 2 +- dist/socket.io.msgpack.min.js | 4 +- dist/socket.io.msgpack.min.js.map | 2 +- package.json | 2 +- 10 files changed, 390 insertions(+), 106 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ee9ec6f4..9f38645a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,7 @@ ## 2023 +- [4.7.0](#470-2023-06-22) (Jun 2023) - [4.6.2](#462-2023-05-31) (May 2023) - [4.6.1](#461-2023-02-20) (Feb 2023) - [4.6.0](#460-2023-02-07) (Feb 2023) @@ -59,6 +60,88 @@ # Release notes +## [4.7.0](https://github.com/socketio/socket.io-client/compare/4.6.2...4.7.0) (2023-06-22) + + +### Bug Fixes + +* properly report timeout error when connecting ([5bc94b5](https://github.com/socketio/socket.io-client/commit/5bc94b56bc1788bab16d9d514d2c8abf3b1d8f87)) +* use same scope for setTimeout and clearTimeout calls ([#1568](https://github.com/socketio/socket.io-client/issues/1568)) ([f2892ab](https://github.com/socketio/socket.io-client/commit/f2892aba0beeae7c9be930221655d7da6094c5f1)) + + +### Features + +#### Support for WebTransport + +The Engine.IO client can now use WebTransport as the underlying transport. + +WebTransport is a web API that uses the HTTP/3 protocol as a bidirectional transport. It's intended for two-way communications between a web client and an HTTP/3 server. + +References: + +- https://w3c.github.io/webtransport/ +- https://developer.mozilla.org/en-US/docs/Web/API/WebTransport +- https://developer.chrome.com/articles/webtransport/ + +**For Node.js clients**: until WebTransport support lands [in Node.js](https://github.com/nodejs/node/issues/38478), you can use the `@fails-components/webtransport` package: + +```js +import { WebTransport } from "@fails-components/webtransport"; + +global.WebTransport = WebTransport; +``` + +Added in [7195c0f](https://github.com/socketio/engine.io-client/commit/7195c0f305b482f7b1ca2ed812030caaf72c0906). + +#### Cookie management for the Node.js client + +When setting the `withCredentials` option to `true`, the Node.js client will now include the cookies in the HTTP requests, making it easier to use it with cookie-based sticky sessions. + +```js +import { io } from "socket.io-client"; + +const socket = io("https://example.com", { + withCredentials: true +}); +``` + +Added in [5fc88a6](https://github.com/socketio/engine.io-client/commit/5fc88a62d4017cdc144fa39b9755deadfff2db34). + +#### Conditional import of the ESM build with debug logs + +By default, the ESM build does not include the `debug` package in the browser environments, because it increases the bundle size (see [16b6569](https://github.com/socketio/socket.io-client/commit/16b65698aed766e1e645c78847f2e91bfc5b6f56)). + +Which means that, unfortunately, debug logs are not available in the devtools console, even when setting the `localStorage.debug = ...` attribute. + +You can now import the build which includes the `debug` packages with a [conditional import](https://nodejs.org/api/packages.html#conditional-exports). Example with vite: + +```js +import { defineConfig } from 'vite' +import react from '@vitejs/plugin-react' + +export default defineConfig({ + plugins: [react()], + server: { + port: 4000 + }, + resolve: { + conditions: ["development"] + } +}) +``` + +Reference: https://v2.vitejs.dev/config/#resolve-conditions + +Added in [781d753](https://github.com/socketio/socket.io-client/commit/781d753a626d01e675056a2ff4e27f5dd599564f). + + +### Dependencies + +- [`engine.io-client@~6.5.0`](https://github.com/socketio/engine.io-client/releases/tag/6.5.0) ([diff](https://github.com/socketio/engine.io-client/compare/6.4.0...6.5.0)) +- [`ws@~8.11.0`](https://github.com/websockets/ws/releases/tag/8.11.0) (no change) + + + ## [4.6.2](https://github.com/socketio/socket.io-client/compare/4.6.1...4.6.2) (2023-05-31) diff --git a/dist/socket.io.esm.min.js b/dist/socket.io.esm.min.js index deb92cba..005dd538 100644 --- a/dist/socket.io.esm.min.js +++ b/dist/socket.io.esm.min.js @@ -1,7 +1,7 @@ /*! - * Socket.IO v4.6.2 + * Socket.IO v4.7.0 * (c) 2014-2023 Guillermo Rauch * Released under the MIT License. */ -const t=Object.create(null);t.open="0",t.close="1",t.ping="2",t.pong="3",t.message="4",t.upgrade="5",t.noop="6";const e=Object.create(null);Object.keys(t).forEach((s=>{e[t[s]]=s}));const s={type:"error",data:"parser error"},n="function"==typeof Blob||"undefined"!=typeof Blob&&"[object BlobConstructor]"===Object.prototype.toString.call(Blob),i="function"==typeof ArrayBuffer,r=({type:e,data:s},r,h)=>{return n&&s instanceof Blob?r?h(s):o(s,h):i&&(s instanceof ArrayBuffer||(a=s,"function"==typeof ArrayBuffer.isView?ArrayBuffer.isView(a):a&&a.buffer instanceof ArrayBuffer))?r?h(s):o(new Blob([s]),h):h(t[e]+(s||""));var a},o=(t,e)=>{const s=new FileReader;return s.onload=function(){const t=s.result.split(",")[1];e("b"+t)},s.readAsDataURL(t)},h="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",a="undefined"==typeof Uint8Array?[]:new Uint8Array(256);for(let t=0;t{if("string"!=typeof t)return{type:"message",data:l(t,n)};const i=t.charAt(0);if("b"===i)return{type:"message",data:u(t.substring(1),n)};return e[i]?t.length>1?{type:e[i],data:t.substring(1)}:{type:e[i]}:s},u=(t,e)=>{if(c){const s=(t=>{let e,s,n,i,r,o=.75*t.length,h=t.length,c=0;"="===t[t.length-1]&&(o--,"="===t[t.length-2]&&o--);const p=new ArrayBuffer(o),u=new Uint8Array(p);for(e=0;e>4,u[c++]=(15&n)<<4|i>>2,u[c++]=(3&i)<<6|63&r;return p})(t);return l(s,e)}return{base64:!0,data:t}},l=(t,e)=>"blob"===e&&t instanceof ArrayBuffer?new Blob([t]):t,d=String.fromCharCode(30);function f(t){if(t)return function(t){for(var e in f.prototype)t[e]=f.prototype[e];return t}(t)}f.prototype.on=f.prototype.addEventListener=function(t,e){return this._callbacks=this._callbacks||{},(this._callbacks["$"+t]=this._callbacks["$"+t]||[]).push(e),this},f.prototype.once=function(t,e){function s(){this.off(t,s),e.apply(this,arguments)}return s.fn=e,this.on(t,s),this},f.prototype.off=f.prototype.removeListener=f.prototype.removeAllListeners=f.prototype.removeEventListener=function(t,e){if(this._callbacks=this._callbacks||{},0==arguments.length)return this._callbacks={},this;var s,n=this._callbacks["$"+t];if(!n)return this;if(1==arguments.length)return delete this._callbacks["$"+t],this;for(var i=0;i(t.hasOwnProperty(s)&&(e[s]=t[s]),e)),{})}const m=y.setTimeout,b=y.clearTimeout;function v(t,e){e.useNativeTimers?(t.setTimeoutFn=m.bind(y),t.clearTimeoutFn=b.bind(y)):(t.setTimeoutFn=y.setTimeout.bind(y),t.clearTimeoutFn=y.clearTimeout.bind(y))}class k extends Error{constructor(t,e,s){super(t),this.description=e,this.context=s,this.type="TransportError"}}class w extends f{constructor(t){super(),this.writable=!1,v(this,t),this.opts=t,this.query=t.query,this.socket=t.socket}onError(t,e,s){return super.emitReserved("error",new k(t,e,s)),this}open(){return this.readyState="opening",this.doOpen(),this}close(){return"opening"!==this.readyState&&"open"!==this.readyState||(this.doClose(),this.onClose()),this}send(t){"open"===this.readyState&&this.write(t)}onOpen(){this.readyState="open",this.writable=!0,super.emitReserved("open")}onData(t){const e=p(t,this.socket.binaryType);this.onPacket(e)}onPacket(t){super.emitReserved("packet",t)}onClose(t){this.readyState="closed",super.emitReserved("close",t)}pause(t){}}const _="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-_".split(""),E={};let A,O=0,R=0;function C(t){let e="";do{e=_[t%64]+e,t=Math.floor(t/64)}while(t>0);return e}function T(){const t=C(+new Date);return t!==A?(O=0,A=t):t+"."+C(O++)}for(;R<64;R++)E[_[R]]=R;function B(t){let e="";for(let s in t)t.hasOwnProperty(s)&&(e.length&&(e+="&"),e+=encodeURIComponent(s)+"="+encodeURIComponent(t[s]));return e}let x=!1;try{x="undefined"!=typeof XMLHttpRequest&&"withCredentials"in new XMLHttpRequest}catch(t){}const N=x;function L(t){const e=t.xdomain;try{if("undefined"!=typeof XMLHttpRequest&&(!e||N))return new XMLHttpRequest}catch(t){}if(!e)try{return new(y[["Active"].concat("Object").join("X")])("Microsoft.XMLHTTP")}catch(t){}}function S(){}const q=null!=new L({xdomain:!1}).responseType;class P extends f{constructor(t,e){super(),v(this,e),this.opts=e,this.method=e.method||"GET",this.uri=t,this.async=!1!==e.async,this.data=void 0!==e.data?e.data:null,this.create()}create(){const t=g(this.opts,"agent","pfx","key","passphrase","cert","ca","ciphers","rejectUnauthorized","autoUnref");t.xdomain=!!this.opts.xd,t.xscheme=!!this.opts.xs;const e=this.xhr=new L(t);try{e.open(this.method,this.uri,this.async);try{if(this.opts.extraHeaders){e.setDisableHeaderCheck&&e.setDisableHeaderCheck(!0);for(let t in this.opts.extraHeaders)this.opts.extraHeaders.hasOwnProperty(t)&&e.setRequestHeader(t,this.opts.extraHeaders[t])}}catch(t){}if("POST"===this.method)try{e.setRequestHeader("Content-type","text/plain;charset=UTF-8")}catch(t){}try{e.setRequestHeader("Accept","*/*")}catch(t){}"withCredentials"in e&&(e.withCredentials=this.opts.withCredentials),this.opts.requestTimeout&&(e.timeout=this.opts.requestTimeout),e.onreadystatechange=()=>{4===e.readyState&&(200===e.status||1223===e.status?this.onLoad():this.setTimeoutFn((()=>{this.onError("number"==typeof e.status?e.status:0)}),0))},e.send(this.data)}catch(t){return void this.setTimeoutFn((()=>{this.onError(t)}),0)}"undefined"!=typeof document&&(this.index=P.requestsCount++,P.requests[this.index]=this)}onError(t){this.emitReserved("error",t,this.xhr),this.cleanup(!0)}cleanup(t){if(void 0!==this.xhr&&null!==this.xhr){if(this.xhr.onreadystatechange=S,t)try{this.xhr.abort()}catch(t){}"undefined"!=typeof document&&delete P.requests[this.index],this.xhr=null}}onLoad(){const t=this.xhr.responseText;null!==t&&(this.emitReserved("data",t),this.emitReserved("success"),this.cleanup())}abort(){this.cleanup()}}if(P.requestsCount=0,P.requests={},"undefined"!=typeof document)if("function"==typeof attachEvent)attachEvent("onunload",j);else if("function"==typeof addEventListener){addEventListener("onpagehide"in y?"pagehide":"unload",j,!1)}function j(){for(let t in P.requests)P.requests.hasOwnProperty(t)&&P.requests[t].abort()}const I="function"==typeof Promise&&"function"==typeof Promise.resolve?t=>Promise.resolve().then(t):(t,e)=>e(t,0),D=y.WebSocket||y.MozWebSocket,F="undefined"!=typeof navigator&&"string"==typeof navigator.product&&"reactnative"===navigator.product.toLowerCase();const M={websocket:class extends w{constructor(t){super(t),this.supportsBinary=!t.forceBase64}get name(){return"websocket"}doOpen(){if(!this.check())return;const t=this.uri(),e=this.opts.protocols,s=F?{}:g(this.opts,"agent","perMessageDeflate","pfx","key","passphrase","cert","ca","ciphers","rejectUnauthorized","localAddress","protocolVersion","origin","maxPayload","family","checkServerIdentity");this.opts.extraHeaders&&(s.headers=this.opts.extraHeaders);try{this.ws=F?new D(t,e,s):e?new D(t,e):new D(t)}catch(t){return this.emitReserved("error",t)}this.ws.binaryType=this.socket.binaryType||"arraybuffer",this.addEventListeners()}addEventListeners(){this.ws.onopen=()=>{this.opts.autoUnref&&this.ws._socket.unref(),this.onOpen()},this.ws.onclose=t=>this.onClose({description:"websocket connection closed",context:t}),this.ws.onmessage=t=>this.onData(t.data),this.ws.onerror=t=>this.onError("websocket error",t)}write(t){this.writable=!1;for(let e=0;e{try{this.ws.send(t)}catch(t){}n&&I((()=>{this.writable=!0,this.emitReserved("drain")}),this.setTimeoutFn)}))}}doClose(){void 0!==this.ws&&(this.ws.close(),this.ws=null)}uri(){let t=this.query||{};const e=this.opts.secure?"wss":"ws";let s="";this.opts.port&&("wss"===e&&443!==Number(this.opts.port)||"ws"===e&&80!==Number(this.opts.port))&&(s=":"+this.opts.port),this.opts.timestampRequests&&(t[this.opts.timestampParam]=T()),this.supportsBinary||(t.b64=1);const n=B(t);return e+"://"+(-1!==this.opts.hostname.indexOf(":")?"["+this.opts.hostname+"]":this.opts.hostname)+s+this.opts.path+(n.length?"?"+n:"")}check(){return!!D}},polling:class extends w{constructor(t){if(super(t),this.polling=!1,"undefined"!=typeof location){const e="https:"===location.protocol;let s=location.port;s||(s=e?"443":"80"),this.xd="undefined"!=typeof location&&t.hostname!==location.hostname||s!==t.port,this.xs=t.secure!==e}const e=t&&t.forceBase64;this.supportsBinary=q&&!e}get name(){return"polling"}doOpen(){this.poll()}pause(t){this.readyState="pausing";const e=()=>{this.readyState="paused",t()};if(this.polling||!this.writable){let t=0;this.polling&&(t++,this.once("pollComplete",(function(){--t||e()}))),this.writable||(t++,this.once("drain",(function(){--t||e()})))}else e()}poll(){this.polling=!0,this.doPoll(),this.emitReserved("poll")}onData(t){((t,e)=>{const s=t.split(d),n=[];for(let t=0;t{if("opening"===this.readyState&&"open"===t.type&&this.onOpen(),"close"===t.type)return this.onClose({description:"transport closed by the server"}),!1;this.onPacket(t)})),"closed"!==this.readyState&&(this.polling=!1,this.emitReserved("pollComplete"),"open"===this.readyState&&this.poll())}doClose(){const t=()=>{this.write([{type:"close"}])};"open"===this.readyState?t():this.once("open",t)}write(t){this.writable=!1,((t,e)=>{const s=t.length,n=new Array(s);let i=0;t.forEach(((t,o)=>{r(t,!1,(t=>{n[o]=t,++i===s&&e(n.join(d))}))}))})(t,(t=>{this.doWrite(t,(()=>{this.writable=!0,this.emitReserved("drain")}))}))}uri(){let t=this.query||{};const e=this.opts.secure?"https":"http";let s="";!1!==this.opts.timestampRequests&&(t[this.opts.timestampParam]=T()),this.supportsBinary||t.sid||(t.b64=1),this.opts.port&&("https"===e&&443!==Number(this.opts.port)||"http"===e&&80!==Number(this.opts.port))&&(s=":"+this.opts.port);const n=B(t);return e+"://"+(-1!==this.opts.hostname.indexOf(":")?"["+this.opts.hostname+"]":this.opts.hostname)+s+this.opts.path+(n.length?"?"+n:"")}request(t={}){return Object.assign(t,{xd:this.xd,xs:this.xs},this.opts),new P(this.uri(),t)}doWrite(t,e){const s=this.request({method:"POST",data:t});s.on("success",e),s.on("error",((t,e)=>{this.onError("xhr post error",t,e)}))}doPoll(){const t=this.request();t.on("data",this.onData.bind(this)),t.on("error",((t,e)=>{this.onError("xhr poll error",t,e)})),this.pollXhr=t}}},V=/^(?:(?![^:@\/?#]+:[^:@\/]*@)(http|https|ws|wss):\/\/)?((?:(([^:@\/?#]*)(?::([^:@\/?#]*))?)?@)?((?:[a-f0-9]{0,4}:){2,7}[a-f0-9]{0,4}|[^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/,U=["source","protocol","authority","userInfo","user","password","host","port","relative","path","directory","file","query","anchor"];function H(t){const e=t,s=t.indexOf("["),n=t.indexOf("]");-1!=s&&-1!=n&&(t=t.substring(0,s)+t.substring(s,n).replace(/:/g,";")+t.substring(n,t.length));let i=V.exec(t||""),r={},o=14;for(;o--;)r[U[o]]=i[o]||"";return-1!=s&&-1!=n&&(r.source=e,r.host=r.host.substring(1,r.host.length-1).replace(/;/g,":"),r.authority=r.authority.replace("[","").replace("]","").replace(/;/g,":"),r.ipv6uri=!0),r.pathNames=function(t,e){const s=/\/{2,9}/g,n=e.replace(s,"/").split("/");"/"!=e.slice(0,1)&&0!==e.length||n.splice(0,1);"/"==e.slice(-1)&&n.splice(n.length-1,1);return n}(0,r.path),r.queryKey=function(t,e){const s={};return e.replace(/(?:^|&)([^&=]*)=?([^&]*)/g,(function(t,e,n){e&&(s[e]=n)})),s}(0,r.query),r}class K extends f{constructor(t,e={}){super(),this.writeBuffer=[],t&&"object"==typeof t&&(e=t,t=null),t?(t=H(t),e.hostname=t.host,e.secure="https"===t.protocol||"wss"===t.protocol,e.port=t.port,t.query&&(e.query=t.query)):e.host&&(e.hostname=H(e.host).host),v(this,e),this.secure=null!=e.secure?e.secure:"undefined"!=typeof location&&"https:"===location.protocol,e.hostname&&!e.port&&(e.port=this.secure?"443":"80"),this.hostname=e.hostname||("undefined"!=typeof location?location.hostname:"localhost"),this.port=e.port||("undefined"!=typeof location&&location.port?location.port:this.secure?"443":"80"),this.transports=e.transports||["polling","websocket"],this.writeBuffer=[],this.prevBufferLen=0,this.opts=Object.assign({path:"/engine.io",agent:!1,withCredentials:!1,upgrade:!0,timestampParam:"t",rememberUpgrade:!1,addTrailingSlash:!0,rejectUnauthorized:!0,perMessageDeflate:{threshold:1024},transportOptions:{},closeOnBeforeunload:!0},e),this.opts.path=this.opts.path.replace(/\/$/,"")+(this.opts.addTrailingSlash?"/":""),"string"==typeof this.opts.query&&(this.opts.query=function(t){let e={},s=t.split("&");for(let t=0,n=s.length;t{this.transport&&(this.transport.removeAllListeners(),this.transport.close())},addEventListener("beforeunload",this.beforeunloadEventListener,!1)),"localhost"!==this.hostname&&(this.offlineEventListener=()=>{this.onClose("transport close",{description:"network connection lost"})},addEventListener("offline",this.offlineEventListener,!1))),this.open()}createTransport(t){const e=Object.assign({},this.opts.query);e.EIO=4,e.transport=t,this.id&&(e.sid=this.id);const s=Object.assign({},this.opts.transportOptions[t],this.opts,{query:e,socket:this,hostname:this.hostname,secure:this.secure,port:this.port});return new M[t](s)}open(){let t;if(this.opts.rememberUpgrade&&K.priorWebsocketSuccess&&-1!==this.transports.indexOf("websocket"))t="websocket";else{if(0===this.transports.length)return void this.setTimeoutFn((()=>{this.emitReserved("error","No transports available")}),0);t=this.transports[0]}this.readyState="opening";try{t=this.createTransport(t)}catch(t){return this.transports.shift(),void this.open()}t.open(),this.setTransport(t)}setTransport(t){this.transport&&this.transport.removeAllListeners(),this.transport=t,t.on("drain",this.onDrain.bind(this)).on("packet",this.onPacket.bind(this)).on("error",this.onError.bind(this)).on("close",(t=>this.onClose("transport close",t)))}probe(t){let e=this.createTransport(t),s=!1;K.priorWebsocketSuccess=!1;const n=()=>{s||(e.send([{type:"ping",data:"probe"}]),e.once("packet",(t=>{if(!s)if("pong"===t.type&&"probe"===t.data){if(this.upgrading=!0,this.emitReserved("upgrading",e),!e)return;K.priorWebsocketSuccess="websocket"===e.name,this.transport.pause((()=>{s||"closed"!==this.readyState&&(c(),this.setTransport(e),e.send([{type:"upgrade"}]),this.emitReserved("upgrade",e),e=null,this.upgrading=!1,this.flush())}))}else{const t=new Error("probe error");t.transport=e.name,this.emitReserved("upgradeError",t)}})))};function i(){s||(s=!0,c(),e.close(),e=null)}const r=t=>{const s=new Error("probe error: "+t);s.transport=e.name,i(),this.emitReserved("upgradeError",s)};function o(){r("transport closed")}function h(){r("socket closed")}function a(t){e&&t.name!==e.name&&i()}const c=()=>{e.removeListener("open",n),e.removeListener("error",r),e.removeListener("close",o),this.off("close",h),this.off("upgrading",a)};e.once("open",n),e.once("error",r),e.once("close",o),this.once("close",h),this.once("upgrading",a),e.open()}onOpen(){if(this.readyState="open",K.priorWebsocketSuccess="websocket"===this.transport.name,this.emitReserved("open"),this.flush(),"open"===this.readyState&&this.opts.upgrade){let t=0;const e=this.upgrades.length;for(;t{this.onClose("ping timeout")}),this.pingInterval+this.pingTimeout),this.opts.autoUnref&&this.pingTimeoutTimer.unref()}onDrain(){this.writeBuffer.splice(0,this.prevBufferLen),this.prevBufferLen=0,0===this.writeBuffer.length?this.emitReserved("drain"):this.flush()}flush(){if("closed"!==this.readyState&&this.transport.writable&&!this.upgrading&&this.writeBuffer.length){const t=this.getWritablePackets();this.transport.send(t),this.prevBufferLen=t.length,this.emitReserved("flush")}}getWritablePackets(){if(!(this.maxPayload&&"polling"===this.transport.name&&this.writeBuffer.length>1))return this.writeBuffer;let t=1;for(let s=0;s=57344?s+=3:(n++,s+=4);return s}(e):Math.ceil(1.33*(e.byteLength||e.size))),s>0&&t>this.maxPayload)return this.writeBuffer.slice(0,s);t+=2}var e;return this.writeBuffer}write(t,e,s){return this.sendPacket("message",t,e,s),this}send(t,e,s){return this.sendPacket("message",t,e,s),this}sendPacket(t,e,s,n){if("function"==typeof e&&(n=e,e=void 0),"function"==typeof s&&(n=s,s=null),"closing"===this.readyState||"closed"===this.readyState)return;(s=s||{}).compress=!1!==s.compress;const i={type:t,data:e,options:s};this.emitReserved("packetCreate",i),this.writeBuffer.push(i),n&&this.once("flush",n),this.flush()}close(){const t=()=>{this.onClose("forced close"),this.transport.close()},e=()=>{this.off("upgrade",e),this.off("upgradeError",e),t()},s=()=>{this.once("upgrade",e),this.once("upgradeError",e)};return"opening"!==this.readyState&&"open"!==this.readyState||(this.readyState="closing",this.writeBuffer.length?this.once("drain",(()=>{this.upgrading?s():t()})):this.upgrading?s():t()),this}onError(t){K.priorWebsocketSuccess=!1,this.emitReserved("error",t),this.onClose("transport error",t)}onClose(t,e){"opening"!==this.readyState&&"open"!==this.readyState&&"closing"!==this.readyState||(this.clearTimeoutFn(this.pingTimeoutTimer),this.transport.removeAllListeners("close"),this.transport.close(),this.transport.removeAllListeners(),"function"==typeof removeEventListener&&(removeEventListener("beforeunload",this.beforeunloadEventListener,!1),removeEventListener("offline",this.offlineEventListener,!1)),this.readyState="closed",this.id=null,this.emitReserved("close",t,e),this.writeBuffer=[],this.prevBufferLen=0)}filterUpgrades(t){const e=[];let s=0;const n=t.length;for(;s"function"==typeof ArrayBuffer.isView?ArrayBuffer.isView(t):t.buffer instanceof ArrayBuffer)(t))||W&&t instanceof Blob||$&&t instanceof File}function Q(t,e){if(!t||"object"!=typeof t)return!1;if(Array.isArray(t)){for(let e=0,s=t.length;e=0&&t.num{delete this.acks[t];for(let e=0;e{this.io.clearTimeoutFn(i),e.apply(this,[null,...t])}}emitWithAck(t,...e){const s=void 0!==this.flags.timeout||void 0!==this._opts.ackTimeout;return new Promise(((n,i)=>{e.push(((t,e)=>s?t?i(t):n(e):n(t))),this.emit(t,...e)}))}_addToQueue(t){let e;"function"==typeof t[t.length-1]&&(e=t.pop());const s={id:this._queueSeq++,tryCount:0,pending:!1,args:t,flags:Object.assign({fromQueue:!0},this.flags)};t.push(((t,...n)=>{if(s!==this._queue[0])return;return null!==t?s.tryCount>this._opts.retries&&(this._queue.shift(),e&&e(t)):(this._queue.shift(),e&&e(null,...n)),s.pending=!1,this._drainQueue()})),this._queue.push(s),this._drainQueue()}_drainQueue(t=!1){if(!this.connected||0===this._queue.length)return;const e=this._queue[0];e.pending&&!t||(e.pending=!0,e.tryCount++,this.flags=e.flags,this.emit.apply(this,e.args))}packet(t){t.nsp=this.nsp,this.io._packet(t)}onopen(){"function"==typeof this.auth?this.auth((t=>{this._sendConnectPacket(t)})):this._sendConnectPacket(this.auth)}_sendConnectPacket(t){this.packet({type:nt.CONNECT,data:this._pid?Object.assign({pid:this._pid,offset:this._lastOffset},t):t})}onerror(t){this.connected||this.emitReserved("connect_error",t)}onclose(t,e){this.connected=!1,delete this.id,this.emitReserved("disconnect",t,e)}onpacket(t){if(t.nsp===this.nsp)switch(t.type){case nt.CONNECT:t.data&&t.data.sid?this.onconnect(t.data.sid,t.data.pid):this.emitReserved("connect_error",new Error("It seems you are trying to reach a Socket.IO server in v2.x with a v3.x client, but they are not compatible (more information here: https://socket.io/docs/v3/migrating-from-2-x-to-3-0/)"));break;case nt.EVENT:case nt.BINARY_EVENT:this.onevent(t);break;case nt.ACK:case nt.BINARY_ACK:this.onack(t);break;case nt.DISCONNECT:this.ondisconnect();break;case nt.CONNECT_ERROR:this.destroy();const e=new Error(t.data.message);e.data=t.data.data,this.emitReserved("connect_error",e)}}onevent(t){const e=t.data||[];null!=t.id&&e.push(this.ack(t.id)),this.connected?this.emitEvent(e):this.receiveBuffer.push(Object.freeze(e))}emitEvent(t){if(this._anyListeners&&this._anyListeners.length){const e=this._anyListeners.slice();for(const s of e)s.apply(this,t)}super.emit.apply(this,t),this._pid&&t.length&&"string"==typeof t[t.length-1]&&(this._lastOffset=t[t.length-1])}ack(t){const e=this;let s=!1;return function(...n){s||(s=!0,e.packet({type:nt.ACK,id:t,data:n}))}}onack(t){const e=this.acks[t.id];"function"==typeof e&&(e.apply(this,t.data),delete this.acks[t.id])}onconnect(t,e){this.id=t,this.recovered=e&&this._pid===e,this._pid=e,this.connected=!0,this.emitBuffered(),this.emitReserved("connect"),this._drainQueue(!0)}emitBuffered(){this.receiveBuffer.forEach((t=>this.emitEvent(t))),this.receiveBuffer=[],this.sendBuffer.forEach((t=>{this.notifyOutgoingListeners(t),this.packet(t)})),this.sendBuffer=[]}ondisconnect(){this.destroy(),this.onclose("io server disconnect")}destroy(){this.subs&&(this.subs.forEach((t=>t())),this.subs=void 0),this.io._destroy(this)}disconnect(){return this.connected&&this.packet({type:nt.DISCONNECT}),this.destroy(),this.connected&&this.onclose("io client disconnect"),this}close(){return this.disconnect()}compress(t){return this.flags.compress=t,this}get volatile(){return this.flags.volatile=!0,this}timeout(t){return this.flags.timeout=t,this}onAny(t){return this._anyListeners=this._anyListeners||[],this._anyListeners.push(t),this}prependAny(t){return this._anyListeners=this._anyListeners||[],this._anyListeners.unshift(t),this}offAny(t){if(!this._anyListeners)return this;if(t){const e=this._anyListeners;for(let s=0;s0&&t.jitter<=1?t.jitter:0,this.attempts=0}ut.prototype.duration=function(){var t=this.ms*Math.pow(this.factor,this.attempts++);if(this.jitter){var e=Math.random(),s=Math.floor(e*this.jitter*t);t=0==(1&Math.floor(10*e))?t-s:t+s}return 0|Math.min(t,this.max)},ut.prototype.reset=function(){this.attempts=0},ut.prototype.setMin=function(t){this.ms=t},ut.prototype.setMax=function(t){this.max=t},ut.prototype.setJitter=function(t){this.jitter=t};class lt extends f{constructor(t,e){var s;super(),this.nsps={},this.subs=[],t&&"object"==typeof t&&(e=t,t=void 0),(e=e||{}).path=e.path||"/socket.io",this.opts=e,v(this,e),this.reconnection(!1!==e.reconnection),this.reconnectionAttempts(e.reconnectionAttempts||1/0),this.reconnectionDelay(e.reconnectionDelay||1e3),this.reconnectionDelayMax(e.reconnectionDelayMax||5e3),this.randomizationFactor(null!==(s=e.randomizationFactor)&&void 0!==s?s:.5),this.backoff=new ut({min:this.reconnectionDelay(),max:this.reconnectionDelayMax(),jitter:this.randomizationFactor()}),this.timeout(null==e.timeout?2e4:e.timeout),this._readyState="closed",this.uri=t;const n=e.parser||ht;this.encoder=new n.Encoder,this.decoder=new n.Decoder,this._autoConnect=!1!==e.autoConnect,this._autoConnect&&this.open()}reconnection(t){return arguments.length?(this._reconnection=!!t,this):this._reconnection}reconnectionAttempts(t){return void 0===t?this._reconnectionAttempts:(this._reconnectionAttempts=t,this)}reconnectionDelay(t){var e;return void 0===t?this._reconnectionDelay:(this._reconnectionDelay=t,null===(e=this.backoff)||void 0===e||e.setMin(t),this)}randomizationFactor(t){var e;return void 0===t?this._randomizationFactor:(this._randomizationFactor=t,null===(e=this.backoff)||void 0===e||e.setJitter(t),this)}reconnectionDelayMax(t){var e;return void 0===t?this._reconnectionDelayMax:(this._reconnectionDelayMax=t,null===(e=this.backoff)||void 0===e||e.setMax(t),this)}timeout(t){return arguments.length?(this._timeout=t,this):this._timeout}maybeReconnectOnOpen(){!this._reconnecting&&this._reconnection&&0===this.backoff.attempts&&this.reconnect()}open(t){if(~this._readyState.indexOf("open"))return this;this.engine=new K(this.uri,this.opts);const e=this.engine,s=this;this._readyState="opening",this.skipReconnect=!1;const n=at(e,"open",(function(){s.onopen(),t&&t()})),i=at(e,"error",(e=>{s.cleanup(),s._readyState="closed",this.emitReserved("error",e),t?t(e):s.maybeReconnectOnOpen()}));if(!1!==this._timeout){const t=this._timeout;0===t&&n();const s=this.setTimeoutFn((()=>{n(),e.close(),e.emit("error",new Error("timeout"))}),t);this.opts.autoUnref&&s.unref(),this.subs.push((function(){clearTimeout(s)}))}return this.subs.push(n),this.subs.push(i),this}connect(t){return this.open(t)}onopen(){this.cleanup(),this._readyState="open",this.emitReserved("open");const t=this.engine;this.subs.push(at(t,"ping",this.onping.bind(this)),at(t,"data",this.ondata.bind(this)),at(t,"error",this.onerror.bind(this)),at(t,"close",this.onclose.bind(this)),at(this.decoder,"decoded",this.ondecoded.bind(this)))}onping(){this.emitReserved("ping")}ondata(t){try{this.decoder.add(t)}catch(t){this.onclose("parse error",t)}}ondecoded(t){I((()=>{this.emitReserved("packet",t)}),this.setTimeoutFn)}onerror(t){this.emitReserved("error",t)}socket(t,e){let s=this.nsps[t];return s?this._autoConnect&&!s.active&&s.connect():(s=new pt(this,t,e),this.nsps[t]=s),s}_destroy(t){const e=Object.keys(this.nsps);for(const t of e){if(this.nsps[t].active)return}this._close()}_packet(t){const e=this.encoder.encode(t);for(let s=0;st())),this.subs.length=0,this.decoder.destroy()}_close(){this.skipReconnect=!0,this._reconnecting=!1,this.onclose("forced close"),this.engine&&this.engine.close()}disconnect(){return this._close()}onclose(t,e){this.cleanup(),this.backoff.reset(),this._readyState="closed",this.emitReserved("close",t,e),this._reconnection&&!this.skipReconnect&&this.reconnect()}reconnect(){if(this._reconnecting||this.skipReconnect)return this;const t=this;if(this.backoff.attempts>=this._reconnectionAttempts)this.backoff.reset(),this.emitReserved("reconnect_failed"),this._reconnecting=!1;else{const e=this.backoff.duration();this._reconnecting=!0;const s=this.setTimeoutFn((()=>{t.skipReconnect||(this.emitReserved("reconnect_attempt",t.backoff.attempts),t.skipReconnect||t.open((e=>{e?(t._reconnecting=!1,t.reconnect(),this.emitReserved("reconnect_error",e)):t.onreconnect()})))}),e);this.opts.autoUnref&&s.unref(),this.subs.push((function(){clearTimeout(s)}))}}onreconnect(){const t=this.backoff.attempts;this._reconnecting=!1,this.backoff.reset(),this.emitReserved("reconnect",t)}}const dt={};function ft(t,e){"object"==typeof t&&(e=t,t=void 0);const s=function(t,e="",s){let n=t;s=s||"undefined"!=typeof location&&location,null==t&&(t=s.protocol+"//"+s.host),"string"==typeof t&&("/"===t.charAt(0)&&(t="/"===t.charAt(1)?s.protocol+t:s.host+t),/^(https?|wss?):\/\//.test(t)||(t=void 0!==s?s.protocol+"//"+t:"https://"+t),n=H(t)),n.port||(/^(http|ws)$/.test(n.protocol)?n.port="80":/^(http|ws)s$/.test(n.protocol)&&(n.port="443")),n.path=n.path||"/";const i=-1!==n.host.indexOf(":")?"["+n.host+"]":n.host;return n.id=n.protocol+"://"+i+":"+n.port+e,n.href=n.protocol+"://"+i+(s&&s.port===n.port?"":":"+n.port),n}(t,(e=e||{}).path||"/socket.io"),n=s.source,i=s.id,r=s.path,o=dt[i]&&r in dt[i].nsps;let h;return e.forceNew||e["force new connection"]||!1===e.multiplex||o?h=new lt(n,e):(dt[i]||(dt[i]=new lt(n,e)),h=dt[i]),s.query&&!e.query&&(e.query=s.queryKey),h.socket(s.path,e)}Object.assign(ft,{Manager:lt,Socket:pt,io:ft,connect:ft});export{lt as Manager,pt as Socket,ft as connect,ft as default,ft as io,st as protocol}; +const t=Object.create(null);t.open="0",t.close="1",t.ping="2",t.pong="3",t.message="4",t.upgrade="5",t.noop="6";const e=Object.create(null);Object.keys(t).forEach((s=>{e[t[s]]=s}));const s={type:"error",data:"parser error"},n="function"==typeof Blob||"undefined"!=typeof Blob&&"[object BlobConstructor]"===Object.prototype.toString.call(Blob),i="function"==typeof ArrayBuffer,r=t=>"function"==typeof ArrayBuffer.isView?ArrayBuffer.isView(t):t&&t.buffer instanceof ArrayBuffer,o=({type:e,data:s},o,h)=>n&&s instanceof Blob?o?h(s):a(s,h):i&&(s instanceof ArrayBuffer||r(s))?o?h(s):a(new Blob([s]),h):h(t[e]+(s||"")),a=(t,e)=>{const s=new FileReader;return s.onload=function(){const t=s.result.split(",")[1];e("b"+(t||""))},s.readAsDataURL(t)};function h(t){return t instanceof Uint8Array?t:t instanceof ArrayBuffer?new Uint8Array(t):new Uint8Array(t.buffer,t.byteOffset,t.byteLength)}let c;function u(t,e){return n&&t.data instanceof Blob?t.data.arrayBuffer().then(h).then(e):i&&(t.data instanceof ArrayBuffer||r(t.data))?e(h(t.data)):void o(t,!1,(t=>{c||(c=new TextEncoder),e(c.encode(t))}))}const p="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",l="undefined"==typeof Uint8Array?[]:new Uint8Array(256);for(let t=0;t{if("string"!=typeof t)return{type:"message",data:g(t,n)};const i=t.charAt(0);if("b"===i)return{type:"message",data:y(t.substring(1),n)};return e[i]?t.length>1?{type:e[i],data:t.substring(1)}:{type:e[i]}:s},y=(t,e)=>{if(d){const s=(t=>{let e,s,n,i,r,o=.75*t.length,a=t.length,h=0;"="===t[t.length-1]&&(o--,"="===t[t.length-2]&&o--);const c=new ArrayBuffer(o),u=new Uint8Array(c);for(e=0;e>4,u[h++]=(15&n)<<4|i>>2,u[h++]=(3&i)<<6|63&r;return c})(t);return g(s,e)}return{base64:!0,data:t}},g=(t,e)=>"blob"===e?t instanceof Blob?t:new Blob([t]):t instanceof ArrayBuffer?t:t.buffer,m=String.fromCharCode(30);let b;function v(t){if(t)return function(t){for(var e in v.prototype)t[e]=v.prototype[e];return t}(t)}v.prototype.on=v.prototype.addEventListener=function(t,e){return this._callbacks=this._callbacks||{},(this._callbacks["$"+t]=this._callbacks["$"+t]||[]).push(e),this},v.prototype.once=function(t,e){function s(){this.off(t,s),e.apply(this,arguments)}return s.fn=e,this.on(t,s),this},v.prototype.off=v.prototype.removeListener=v.prototype.removeAllListeners=v.prototype.removeEventListener=function(t,e){if(this._callbacks=this._callbacks||{},0==arguments.length)return this._callbacks={},this;var s,n=this._callbacks["$"+t];if(!n)return this;if(1==arguments.length)return delete this._callbacks["$"+t],this;for(var i=0;i(t.hasOwnProperty(s)&&(e[s]=t[s]),e)),{})}const _=w.setTimeout,E=w.clearTimeout;function A(t,e){e.useNativeTimers?(t.setTimeoutFn=_.bind(w),t.clearTimeoutFn=E.bind(w)):(t.setTimeoutFn=w.setTimeout.bind(w),t.clearTimeoutFn=w.clearTimeout.bind(w))}class O extends Error{constructor(t,e,s){super(t),this.description=e,this.context=s,this.type="TransportError"}}class R extends v{constructor(t){super(),this.writable=!1,A(this,t),this.opts=t,this.query=t.query,this.socket=t.socket}onError(t,e,s){return super.emitReserved("error",new O(t,e,s)),this}open(){return this.readyState="opening",this.doOpen(),this}close(){return"opening"!==this.readyState&&"open"!==this.readyState||(this.doClose(),this.onClose()),this}send(t){"open"===this.readyState&&this.write(t)}onOpen(){this.readyState="open",this.writable=!0,super.emitReserved("open")}onData(t){const e=f(t,this.socket.binaryType);this.onPacket(e)}onPacket(t){super.emitReserved("packet",t)}onClose(t){this.readyState="closed",super.emitReserved("close",t)}pause(t){}createUri(t,e={}){return t+"://"+this._hostname()+this._port()+this.opts.path+this._query(e)}_hostname(){const t=this.opts.hostname;return-1===t.indexOf(":")?t:"["+t+"]"}_port(){return this.opts.port&&(this.opts.secure&&Number(443!==this.opts.port)||!this.opts.secure&&80!==Number(this.opts.port))?":"+this.opts.port:""}_query(t){const e=function(t){let e="";for(let s in t)t.hasOwnProperty(s)&&(e.length&&(e+="&"),e+=encodeURIComponent(s)+"="+encodeURIComponent(t[s]));return e}(t);return e.length?"?"+e:""}}const T="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-_".split(""),C={};let B,x=0,L=0;function N(t){let e="";do{e=T[t%64]+e,t=Math.floor(t/64)}while(t>0);return e}function S(){const t=N(+new Date);return t!==B?(x=0,B=t):t+"."+N(x++)}for(;L<64;L++)C[T[L]]=L;let q=!1;try{q="undefined"!=typeof XMLHttpRequest&&"withCredentials"in new XMLHttpRequest}catch(t){}const P=q;function j(t){const e=t.xdomain;try{if("undefined"!=typeof XMLHttpRequest&&(!e||P))return new XMLHttpRequest}catch(t){}if(!e)try{return new(w[["Active"].concat("Object").join("X")])("Microsoft.XMLHTTP")}catch(t){}}function D(){}const I=null!=new j({xdomain:!1}).responseType;class F extends v{constructor(t,e){super(),A(this,e),this.opts=e,this.method=e.method||"GET",this.uri=t,this.data=void 0!==e.data?e.data:null,this.create()}create(){var t;const e=k(this.opts,"agent","pfx","key","passphrase","cert","ca","ciphers","rejectUnauthorized","autoUnref");e.xdomain=!!this.opts.xd;const s=this.xhr=new j(e);try{s.open(this.method,this.uri,!0);try{if(this.opts.extraHeaders){s.setDisableHeaderCheck&&s.setDisableHeaderCheck(!0);for(let t in this.opts.extraHeaders)this.opts.extraHeaders.hasOwnProperty(t)&&s.setRequestHeader(t,this.opts.extraHeaders[t])}}catch(t){}if("POST"===this.method)try{s.setRequestHeader("Content-type","text/plain;charset=UTF-8")}catch(t){}try{s.setRequestHeader("Accept","*/*")}catch(t){}null===(t=this.opts.cookieJar)||void 0===t||t.addCookies(s),"withCredentials"in s&&(s.withCredentials=this.opts.withCredentials),this.opts.requestTimeout&&(s.timeout=this.opts.requestTimeout),s.onreadystatechange=()=>{var t;3===s.readyState&&(null===(t=this.opts.cookieJar)||void 0===t||t.parseCookies(s)),4===s.readyState&&(200===s.status||1223===s.status?this.onLoad():this.setTimeoutFn((()=>{this.onError("number"==typeof s.status?s.status:0)}),0))},s.send(this.data)}catch(t){return void this.setTimeoutFn((()=>{this.onError(t)}),0)}"undefined"!=typeof document&&(this.index=F.requestsCount++,F.requests[this.index]=this)}onError(t){this.emitReserved("error",t,this.xhr),this.cleanup(!0)}cleanup(t){if(void 0!==this.xhr&&null!==this.xhr){if(this.xhr.onreadystatechange=D,t)try{this.xhr.abort()}catch(t){}"undefined"!=typeof document&&delete F.requests[this.index],this.xhr=null}}onLoad(){const t=this.xhr.responseText;null!==t&&(this.emitReserved("data",t),this.emitReserved("success"),this.cleanup())}abort(){this.cleanup()}}if(F.requestsCount=0,F.requests={},"undefined"!=typeof document)if("function"==typeof attachEvent)attachEvent("onunload",U);else if("function"==typeof addEventListener){addEventListener("onpagehide"in w?"pagehide":"unload",U,!1)}function U(){for(let t in F.requests)F.requests.hasOwnProperty(t)&&F.requests[t].abort()}const M="function"==typeof Promise&&"function"==typeof Promise.resolve?t=>Promise.resolve().then(t):(t,e)=>e(t,0),V=w.WebSocket||w.MozWebSocket,H="undefined"!=typeof navigator&&"string"==typeof navigator.product&&"reactnative"===navigator.product.toLowerCase();function K(t,e){return"message"===t.type&&"string"!=typeof t.data&&e[0]>=48&&e[0]<=54}const Y={websocket:class extends R{constructor(t){super(t),this.supportsBinary=!t.forceBase64}get name(){return"websocket"}doOpen(){if(!this.check())return;const t=this.uri(),e=this.opts.protocols,s=H?{}:k(this.opts,"agent","perMessageDeflate","pfx","key","passphrase","cert","ca","ciphers","rejectUnauthorized","localAddress","protocolVersion","origin","maxPayload","family","checkServerIdentity");this.opts.extraHeaders&&(s.headers=this.opts.extraHeaders);try{this.ws=H?new V(t,e,s):e?new V(t,e):new V(t)}catch(t){return this.emitReserved("error",t)}this.ws.binaryType=this.socket.binaryType||"arraybuffer",this.addEventListeners()}addEventListeners(){this.ws.onopen=()=>{this.opts.autoUnref&&this.ws._socket.unref(),this.onOpen()},this.ws.onclose=t=>this.onClose({description:"websocket connection closed",context:t}),this.ws.onmessage=t=>this.onData(t.data),this.ws.onerror=t=>this.onError("websocket error",t)}write(t){this.writable=!1;for(let e=0;e{try{this.ws.send(t)}catch(t){}n&&M((()=>{this.writable=!0,this.emitReserved("drain")}),this.setTimeoutFn)}))}}doClose(){void 0!==this.ws&&(this.ws.close(),this.ws=null)}uri(){const t=this.opts.secure?"wss":"ws",e=this.query||{};return this.opts.timestampRequests&&(e[this.opts.timestampParam]=S()),this.supportsBinary||(e.b64=1),this.createUri(t,e)}check(){return!!V}},webtransport:class extends R{get name(){return"webtransport"}doOpen(){"function"==typeof WebTransport&&(this.transport=new WebTransport(this.createUri("https"),this.opts.transportOptions[this.name]),this.transport.closed.then((()=>this.onClose())),this.transport.ready.then((()=>{this.transport.createBidirectionalStream().then((t=>{const e=t.readable.getReader();let s;this.writer=t.writable.getWriter();const n=()=>{e.read().then((({done:t,value:e})=>{t||(s||1!==e.byteLength||54!==e[0]?(this.onPacket(function(t,e,s){b||(b=new TextDecoder);const n=e||t[0]<48||t[0]>54;return f(n?t:b.decode(t),s)}(e,s,"arraybuffer")),s=!1):s=!0,n())}))};n();const i=this.query.sid?`0{"sid":"${this.query.sid}"}`:"0";this.writer.write((new TextEncoder).encode(i)).then((()=>this.onOpen()))}))})))}write(t){this.writable=!1;for(let e=0;e{K(s,t)&&this.writer.write(Uint8Array.of(54)),this.writer.write(t).then((()=>{n&&M((()=>{this.writable=!0,this.emitReserved("drain")}),this.setTimeoutFn)}))}))}}doClose(){var t;null===(t=this.transport)||void 0===t||t.close()}},polling:class extends R{constructor(t){if(super(t),this.polling=!1,"undefined"!=typeof location){const e="https:"===location.protocol;let s=location.port;s||(s=e?"443":"80"),this.xd="undefined"!=typeof location&&t.hostname!==location.hostname||s!==t.port}const e=t&&t.forceBase64;this.supportsBinary=I&&!e,this.opts.withCredentials&&(this.cookieJar=void 0)}get name(){return"polling"}doOpen(){this.poll()}pause(t){this.readyState="pausing";const e=()=>{this.readyState="paused",t()};if(this.polling||!this.writable){let t=0;this.polling&&(t++,this.once("pollComplete",(function(){--t||e()}))),this.writable||(t++,this.once("drain",(function(){--t||e()})))}else e()}poll(){this.polling=!0,this.doPoll(),this.emitReserved("poll")}onData(t){((t,e)=>{const s=t.split(m),n=[];for(let t=0;t{if("opening"===this.readyState&&"open"===t.type&&this.onOpen(),"close"===t.type)return this.onClose({description:"transport closed by the server"}),!1;this.onPacket(t)})),"closed"!==this.readyState&&(this.polling=!1,this.emitReserved("pollComplete"),"open"===this.readyState&&this.poll())}doClose(){const t=()=>{this.write([{type:"close"}])};"open"===this.readyState?t():this.once("open",t)}write(t){this.writable=!1,((t,e)=>{const s=t.length,n=new Array(s);let i=0;t.forEach(((t,r)=>{o(t,!1,(t=>{n[r]=t,++i===s&&e(n.join(m))}))}))})(t,(t=>{this.doWrite(t,(()=>{this.writable=!0,this.emitReserved("drain")}))}))}uri(){const t=this.opts.secure?"https":"http",e=this.query||{};return!1!==this.opts.timestampRequests&&(e[this.opts.timestampParam]=S()),this.supportsBinary||e.sid||(e.b64=1),this.createUri(t,e)}request(t={}){return Object.assign(t,{xd:this.xd,cookieJar:this.cookieJar},this.opts),new F(this.uri(),t)}doWrite(t,e){const s=this.request({method:"POST",data:t});s.on("success",e),s.on("error",((t,e)=>{this.onError("xhr post error",t,e)}))}doPoll(){const t=this.request();t.on("data",this.onData.bind(this)),t.on("error",((t,e)=>{this.onError("xhr poll error",t,e)})),this.pollXhr=t}}},W=/^(?:(?![^:@\/?#]+:[^:@\/]*@)(http|https|ws|wss):\/\/)?((?:(([^:@\/?#]*)(?::([^:@\/?#]*))?)?@)?((?:[a-f0-9]{0,4}:){2,7}[a-f0-9]{0,4}|[^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/,z=["source","protocol","authority","userInfo","user","password","host","port","relative","path","directory","file","query","anchor"];function J(t){const e=t,s=t.indexOf("["),n=t.indexOf("]");-1!=s&&-1!=n&&(t=t.substring(0,s)+t.substring(s,n).replace(/:/g,";")+t.substring(n,t.length));let i=W.exec(t||""),r={},o=14;for(;o--;)r[z[o]]=i[o]||"";return-1!=s&&-1!=n&&(r.source=e,r.host=r.host.substring(1,r.host.length-1).replace(/;/g,":"),r.authority=r.authority.replace("[","").replace("]","").replace(/;/g,":"),r.ipv6uri=!0),r.pathNames=function(t,e){const s=/\/{2,9}/g,n=e.replace(s,"/").split("/");"/"!=e.slice(0,1)&&0!==e.length||n.splice(0,1);"/"==e.slice(-1)&&n.splice(n.length-1,1);return n}(0,r.path),r.queryKey=function(t,e){const s={};return e.replace(/(?:^|&)([^&=]*)=?([^&]*)/g,(function(t,e,n){e&&(s[e]=n)})),s}(0,r.query),r}class $ extends v{constructor(t,e={}){super(),this.writeBuffer=[],t&&"object"==typeof t&&(e=t,t=null),t?(t=J(t),e.hostname=t.host,e.secure="https"===t.protocol||"wss"===t.protocol,e.port=t.port,t.query&&(e.query=t.query)):e.host&&(e.hostname=J(e.host).host),A(this,e),this.secure=null!=e.secure?e.secure:"undefined"!=typeof location&&"https:"===location.protocol,e.hostname&&!e.port&&(e.port=this.secure?"443":"80"),this.hostname=e.hostname||("undefined"!=typeof location?location.hostname:"localhost"),this.port=e.port||("undefined"!=typeof location&&location.port?location.port:this.secure?"443":"80"),this.transports=e.transports||["polling","websocket","webtransport"],this.writeBuffer=[],this.prevBufferLen=0,this.opts=Object.assign({path:"/engine.io",agent:!1,withCredentials:!1,upgrade:!0,timestampParam:"t",rememberUpgrade:!1,addTrailingSlash:!0,rejectUnauthorized:!0,perMessageDeflate:{threshold:1024},transportOptions:{},closeOnBeforeunload:!0},e),this.opts.path=this.opts.path.replace(/\/$/,"")+(this.opts.addTrailingSlash?"/":""),"string"==typeof this.opts.query&&(this.opts.query=function(t){let e={},s=t.split("&");for(let t=0,n=s.length;t{this.transport&&(this.transport.removeAllListeners(),this.transport.close())},addEventListener("beforeunload",this.beforeunloadEventListener,!1)),"localhost"!==this.hostname&&(this.offlineEventListener=()=>{this.onClose("transport close",{description:"network connection lost"})},addEventListener("offline",this.offlineEventListener,!1))),this.open()}createTransport(t){const e=Object.assign({},this.opts.query);e.EIO=4,e.transport=t,this.id&&(e.sid=this.id);const s=Object.assign({},this.opts.transportOptions[t],this.opts,{query:e,socket:this,hostname:this.hostname,secure:this.secure,port:this.port});return new Y[t](s)}open(){let t;if(this.opts.rememberUpgrade&&$.priorWebsocketSuccess&&-1!==this.transports.indexOf("websocket"))t="websocket";else{if(0===this.transports.length)return void this.setTimeoutFn((()=>{this.emitReserved("error","No transports available")}),0);t=this.transports[0]}this.readyState="opening";try{t=this.createTransport(t)}catch(t){return this.transports.shift(),void this.open()}t.open(),this.setTransport(t)}setTransport(t){this.transport&&this.transport.removeAllListeners(),this.transport=t,t.on("drain",this.onDrain.bind(this)).on("packet",this.onPacket.bind(this)).on("error",this.onError.bind(this)).on("close",(t=>this.onClose("transport close",t)))}probe(t){let e=this.createTransport(t),s=!1;$.priorWebsocketSuccess=!1;const n=()=>{s||(e.send([{type:"ping",data:"probe"}]),e.once("packet",(t=>{if(!s)if("pong"===t.type&&"probe"===t.data){if(this.upgrading=!0,this.emitReserved("upgrading",e),!e)return;$.priorWebsocketSuccess="websocket"===e.name,this.transport.pause((()=>{s||"closed"!==this.readyState&&(c(),this.setTransport(e),e.send([{type:"upgrade"}]),this.emitReserved("upgrade",e),e=null,this.upgrading=!1,this.flush())}))}else{const t=new Error("probe error");t.transport=e.name,this.emitReserved("upgradeError",t)}})))};function i(){s||(s=!0,c(),e.close(),e=null)}const r=t=>{const s=new Error("probe error: "+t);s.transport=e.name,i(),this.emitReserved("upgradeError",s)};function o(){r("transport closed")}function a(){r("socket closed")}function h(t){e&&t.name!==e.name&&i()}const c=()=>{e.removeListener("open",n),e.removeListener("error",r),e.removeListener("close",o),this.off("close",a),this.off("upgrading",h)};e.once("open",n),e.once("error",r),e.once("close",o),this.once("close",a),this.once("upgrading",h),-1!==this.upgrades.indexOf("webtransport")&&"webtransport"!==t?this.setTimeoutFn((()=>{s||e.open()}),200):e.open()}onOpen(){if(this.readyState="open",$.priorWebsocketSuccess="websocket"===this.transport.name,this.emitReserved("open"),this.flush(),"open"===this.readyState&&this.opts.upgrade){let t=0;const e=this.upgrades.length;for(;t{this.onClose("ping timeout")}),this.pingInterval+this.pingTimeout),this.opts.autoUnref&&this.pingTimeoutTimer.unref()}onDrain(){this.writeBuffer.splice(0,this.prevBufferLen),this.prevBufferLen=0,0===this.writeBuffer.length?this.emitReserved("drain"):this.flush()}flush(){if("closed"!==this.readyState&&this.transport.writable&&!this.upgrading&&this.writeBuffer.length){const t=this.getWritablePackets();this.transport.send(t),this.prevBufferLen=t.length,this.emitReserved("flush")}}getWritablePackets(){if(!(this.maxPayload&&"polling"===this.transport.name&&this.writeBuffer.length>1))return this.writeBuffer;let t=1;for(let s=0;s=57344?s+=3:(n++,s+=4);return s}(e):Math.ceil(1.33*(e.byteLength||e.size))),s>0&&t>this.maxPayload)return this.writeBuffer.slice(0,s);t+=2}var e;return this.writeBuffer}write(t,e,s){return this.sendPacket("message",t,e,s),this}send(t,e,s){return this.sendPacket("message",t,e,s),this}sendPacket(t,e,s,n){if("function"==typeof e&&(n=e,e=void 0),"function"==typeof s&&(n=s,s=null),"closing"===this.readyState||"closed"===this.readyState)return;(s=s||{}).compress=!1!==s.compress;const i={type:t,data:e,options:s};this.emitReserved("packetCreate",i),this.writeBuffer.push(i),n&&this.once("flush",n),this.flush()}close(){const t=()=>{this.onClose("forced close"),this.transport.close()},e=()=>{this.off("upgrade",e),this.off("upgradeError",e),t()},s=()=>{this.once("upgrade",e),this.once("upgradeError",e)};return"opening"!==this.readyState&&"open"!==this.readyState||(this.readyState="closing",this.writeBuffer.length?this.once("drain",(()=>{this.upgrading?s():t()})):this.upgrading?s():t()),this}onError(t){$.priorWebsocketSuccess=!1,this.emitReserved("error",t),this.onClose("transport error",t)}onClose(t,e){"opening"!==this.readyState&&"open"!==this.readyState&&"closing"!==this.readyState||(this.clearTimeoutFn(this.pingTimeoutTimer),this.transport.removeAllListeners("close"),this.transport.close(),this.transport.removeAllListeners(),"function"==typeof removeEventListener&&(removeEventListener("beforeunload",this.beforeunloadEventListener,!1),removeEventListener("offline",this.offlineEventListener,!1)),this.readyState="closed",this.id=null,this.emitReserved("close",t,e),this.writeBuffer=[],this.prevBufferLen=0)}filterUpgrades(t){const e=[];let s=0;const n=t.length;for(;s"function"==typeof ArrayBuffer.isView?ArrayBuffer.isView(t):t.buffer instanceof ArrayBuffer)(t))||G&&t instanceof Blob||Z&&t instanceof File}function et(t,e){if(!t||"object"!=typeof t)return!1;if(Array.isArray(t)){for(let e=0,s=t.length;e=0&&t.num{delete this.acks[t];for(let e=0;e{this.io.clearTimeoutFn(i),e.apply(this,[null,...t])}}emitWithAck(t,...e){const s=void 0!==this.flags.timeout||void 0!==this._opts.ackTimeout;return new Promise(((n,i)=>{e.push(((t,e)=>s?t?i(t):n(e):n(t))),this.emit(t,...e)}))}_addToQueue(t){let e;"function"==typeof t[t.length-1]&&(e=t.pop());const s={id:this._queueSeq++,tryCount:0,pending:!1,args:t,flags:Object.assign({fromQueue:!0},this.flags)};t.push(((t,...n)=>{if(s!==this._queue[0])return;return null!==t?s.tryCount>this._opts.retries&&(this._queue.shift(),e&&e(t)):(this._queue.shift(),e&&e(null,...n)),s.pending=!1,this._drainQueue()})),this._queue.push(s),this._drainQueue()}_drainQueue(t=!1){if(!this.connected||0===this._queue.length)return;const e=this._queue[0];e.pending&&!t||(e.pending=!0,e.tryCount++,this.flags=e.flags,this.emit.apply(this,e.args))}packet(t){t.nsp=this.nsp,this.io._packet(t)}onopen(){"function"==typeof this.auth?this.auth((t=>{this._sendConnectPacket(t)})):this._sendConnectPacket(this.auth)}_sendConnectPacket(t){this.packet({type:ht.CONNECT,data:this._pid?Object.assign({pid:this._pid,offset:this._lastOffset},t):t})}onerror(t){this.connected||this.emitReserved("connect_error",t)}onclose(t,e){this.connected=!1,delete this.id,this.emitReserved("disconnect",t,e)}onpacket(t){if(t.nsp===this.nsp)switch(t.type){case ht.CONNECT:t.data&&t.data.sid?this.onconnect(t.data.sid,t.data.pid):this.emitReserved("connect_error",new Error("It seems you are trying to reach a Socket.IO server in v2.x with a v3.x client, but they are not compatible (more information here: https://socket.io/docs/v3/migrating-from-2-x-to-3-0/)"));break;case ht.EVENT:case ht.BINARY_EVENT:this.onevent(t);break;case ht.ACK:case ht.BINARY_ACK:this.onack(t);break;case ht.DISCONNECT:this.ondisconnect();break;case ht.CONNECT_ERROR:this.destroy();const e=new Error(t.data.message);e.data=t.data.data,this.emitReserved("connect_error",e)}}onevent(t){const e=t.data||[];null!=t.id&&e.push(this.ack(t.id)),this.connected?this.emitEvent(e):this.receiveBuffer.push(Object.freeze(e))}emitEvent(t){if(this._anyListeners&&this._anyListeners.length){const e=this._anyListeners.slice();for(const s of e)s.apply(this,t)}super.emit.apply(this,t),this._pid&&t.length&&"string"==typeof t[t.length-1]&&(this._lastOffset=t[t.length-1])}ack(t){const e=this;let s=!1;return function(...n){s||(s=!0,e.packet({type:ht.ACK,id:t,data:n}))}}onack(t){const e=this.acks[t.id];"function"==typeof e&&(e.apply(this,t.data),delete this.acks[t.id])}onconnect(t,e){this.id=t,this.recovered=e&&this._pid===e,this._pid=e,this.connected=!0,this.emitBuffered(),this.emitReserved("connect"),this._drainQueue(!0)}emitBuffered(){this.receiveBuffer.forEach((t=>this.emitEvent(t))),this.receiveBuffer=[],this.sendBuffer.forEach((t=>{this.notifyOutgoingListeners(t),this.packet(t)})),this.sendBuffer=[]}ondisconnect(){this.destroy(),this.onclose("io server disconnect")}destroy(){this.subs&&(this.subs.forEach((t=>t())),this.subs=void 0),this.io._destroy(this)}disconnect(){return this.connected&&this.packet({type:ht.DISCONNECT}),this.destroy(),this.connected&&this.onclose("io client disconnect"),this}close(){return this.disconnect()}compress(t){return this.flags.compress=t,this}get volatile(){return this.flags.volatile=!0,this}timeout(t){return this.flags.timeout=t,this}onAny(t){return this._anyListeners=this._anyListeners||[],this._anyListeners.push(t),this}prependAny(t){return this._anyListeners=this._anyListeners||[],this._anyListeners.unshift(t),this}offAny(t){if(!this._anyListeners)return this;if(t){const e=this._anyListeners;for(let s=0;s0&&t.jitter<=1?t.jitter:0,this.attempts=0}gt.prototype.duration=function(){var t=this.ms*Math.pow(this.factor,this.attempts++);if(this.jitter){var e=Math.random(),s=Math.floor(e*this.jitter*t);t=0==(1&Math.floor(10*e))?t-s:t+s}return 0|Math.min(t,this.max)},gt.prototype.reset=function(){this.attempts=0},gt.prototype.setMin=function(t){this.ms=t},gt.prototype.setMax=function(t){this.max=t},gt.prototype.setJitter=function(t){this.jitter=t};class mt extends v{constructor(t,e){var s;super(),this.nsps={},this.subs=[],t&&"object"==typeof t&&(e=t,t=void 0),(e=e||{}).path=e.path||"/socket.io",this.opts=e,A(this,e),this.reconnection(!1!==e.reconnection),this.reconnectionAttempts(e.reconnectionAttempts||1/0),this.reconnectionDelay(e.reconnectionDelay||1e3),this.reconnectionDelayMax(e.reconnectionDelayMax||5e3),this.randomizationFactor(null!==(s=e.randomizationFactor)&&void 0!==s?s:.5),this.backoff=new gt({min:this.reconnectionDelay(),max:this.reconnectionDelayMax(),jitter:this.randomizationFactor()}),this.timeout(null==e.timeout?2e4:e.timeout),this._readyState="closed",this.uri=t;const n=e.parser||lt;this.encoder=new n.Encoder,this.decoder=new n.Decoder,this._autoConnect=!1!==e.autoConnect,this._autoConnect&&this.open()}reconnection(t){return arguments.length?(this._reconnection=!!t,this):this._reconnection}reconnectionAttempts(t){return void 0===t?this._reconnectionAttempts:(this._reconnectionAttempts=t,this)}reconnectionDelay(t){var e;return void 0===t?this._reconnectionDelay:(this._reconnectionDelay=t,null===(e=this.backoff)||void 0===e||e.setMin(t),this)}randomizationFactor(t){var e;return void 0===t?this._randomizationFactor:(this._randomizationFactor=t,null===(e=this.backoff)||void 0===e||e.setJitter(t),this)}reconnectionDelayMax(t){var e;return void 0===t?this._reconnectionDelayMax:(this._reconnectionDelayMax=t,null===(e=this.backoff)||void 0===e||e.setMax(t),this)}timeout(t){return arguments.length?(this._timeout=t,this):this._timeout}maybeReconnectOnOpen(){!this._reconnecting&&this._reconnection&&0===this.backoff.attempts&&this.reconnect()}open(t){if(~this._readyState.indexOf("open"))return this;this.engine=new $(this.uri,this.opts);const e=this.engine,s=this;this._readyState="opening",this.skipReconnect=!1;const n=dt(e,"open",(function(){s.onopen(),t&&t()})),i=e=>{this.cleanup(),this._readyState="closed",this.emitReserved("error",e),t?t(e):this.maybeReconnectOnOpen()},r=dt(e,"error",i);if(!1!==this._timeout){const t=this._timeout,s=this.setTimeoutFn((()=>{n(),i(new Error("timeout")),e.close()}),t);this.opts.autoUnref&&s.unref(),this.subs.push((()=>{this.clearTimeoutFn(s)}))}return this.subs.push(n),this.subs.push(r),this}connect(t){return this.open(t)}onopen(){this.cleanup(),this._readyState="open",this.emitReserved("open");const t=this.engine;this.subs.push(dt(t,"ping",this.onping.bind(this)),dt(t,"data",this.ondata.bind(this)),dt(t,"error",this.onerror.bind(this)),dt(t,"close",this.onclose.bind(this)),dt(this.decoder,"decoded",this.ondecoded.bind(this)))}onping(){this.emitReserved("ping")}ondata(t){try{this.decoder.add(t)}catch(t){this.onclose("parse error",t)}}ondecoded(t){M((()=>{this.emitReserved("packet",t)}),this.setTimeoutFn)}onerror(t){this.emitReserved("error",t)}socket(t,e){let s=this.nsps[t];return s?this._autoConnect&&!s.active&&s.connect():(s=new yt(this,t,e),this.nsps[t]=s),s}_destroy(t){const e=Object.keys(this.nsps);for(const t of e){if(this.nsps[t].active)return}this._close()}_packet(t){const e=this.encoder.encode(t);for(let s=0;st())),this.subs.length=0,this.decoder.destroy()}_close(){this.skipReconnect=!0,this._reconnecting=!1,this.onclose("forced close"),this.engine&&this.engine.close()}disconnect(){return this._close()}onclose(t,e){this.cleanup(),this.backoff.reset(),this._readyState="closed",this.emitReserved("close",t,e),this._reconnection&&!this.skipReconnect&&this.reconnect()}reconnect(){if(this._reconnecting||this.skipReconnect)return this;const t=this;if(this.backoff.attempts>=this._reconnectionAttempts)this.backoff.reset(),this.emitReserved("reconnect_failed"),this._reconnecting=!1;else{const e=this.backoff.duration();this._reconnecting=!0;const s=this.setTimeoutFn((()=>{t.skipReconnect||(this.emitReserved("reconnect_attempt",t.backoff.attempts),t.skipReconnect||t.open((e=>{e?(t._reconnecting=!1,t.reconnect(),this.emitReserved("reconnect_error",e)):t.onreconnect()})))}),e);this.opts.autoUnref&&s.unref(),this.subs.push((()=>{this.clearTimeoutFn(s)}))}}onreconnect(){const t=this.backoff.attempts;this._reconnecting=!1,this.backoff.reset(),this.emitReserved("reconnect",t)}}const bt={};function vt(t,e){"object"==typeof t&&(e=t,t=void 0);const s=function(t,e="",s){let n=t;s=s||"undefined"!=typeof location&&location,null==t&&(t=s.protocol+"//"+s.host),"string"==typeof t&&("/"===t.charAt(0)&&(t="/"===t.charAt(1)?s.protocol+t:s.host+t),/^(https?|wss?):\/\//.test(t)||(t=void 0!==s?s.protocol+"//"+t:"https://"+t),n=J(t)),n.port||(/^(http|ws)$/.test(n.protocol)?n.port="80":/^(http|ws)s$/.test(n.protocol)&&(n.port="443")),n.path=n.path||"/";const i=-1!==n.host.indexOf(":")?"["+n.host+"]":n.host;return n.id=n.protocol+"://"+i+":"+n.port+e,n.href=n.protocol+"://"+i+(s&&s.port===n.port?"":":"+n.port),n}(t,(e=e||{}).path||"/socket.io"),n=s.source,i=s.id,r=s.path,o=bt[i]&&r in bt[i].nsps;let a;return e.forceNew||e["force new connection"]||!1===e.multiplex||o?a=new mt(n,e):(bt[i]||(bt[i]=new mt(n,e)),a=bt[i]),s.query&&!e.query&&(e.query=s.queryKey),a.socket(s.path,e)}Object.assign(vt,{Manager:mt,Socket:yt,io:vt,connect:vt});export{mt as Manager,yt as Socket,vt as connect,vt as default,vt as io,at as protocol}; //# sourceMappingURL=socket.io.esm.min.js.map diff --git a/dist/socket.io.esm.min.js.map b/dist/socket.io.esm.min.js.map index f3ca6bd9..c16ce8b3 100644 --- a/dist/socket.io.esm.min.js.map +++ b/dist/socket.io.esm.min.js.map @@ -1 +1 @@ -{"version":3,"file":"socket.io.esm.min.js","sources":["../node_modules/engine.io-parser/build/esm/commons.js","../node_modules/engine.io-parser/build/esm/encodePacket.browser.js","../node_modules/engine.io-parser/build/esm/contrib/base64-arraybuffer.js","../node_modules/engine.io-parser/build/esm/decodePacket.browser.js","../node_modules/engine.io-parser/build/esm/index.js","../node_modules/@socket.io/component-emitter/index.mjs","../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/transport.js","../node_modules/engine.io-client/build/esm/contrib/yeast.js","../node_modules/engine.io-client/build/esm/contrib/parseqs.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/index.js","../node_modules/engine.io-client/build/esm/contrib/parseuri.js","../node_modules/engine.io-client/build/esm/socket.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","../build/esm/url.js"],"sourcesContent":["const PACKET_TYPES = Object.create(null); // no Map = no polyfill\nPACKET_TYPES[\"open\"] = \"0\";\nPACKET_TYPES[\"close\"] = \"1\";\nPACKET_TYPES[\"ping\"] = \"2\";\nPACKET_TYPES[\"pong\"] = \"3\";\nPACKET_TYPES[\"message\"] = \"4\";\nPACKET_TYPES[\"upgrade\"] = \"5\";\nPACKET_TYPES[\"noop\"] = \"6\";\nconst PACKET_TYPES_REVERSE = Object.create(null);\nObject.keys(PACKET_TYPES).forEach(key => {\n PACKET_TYPES_REVERSE[PACKET_TYPES[key]] = key;\n});\nconst ERROR_PACKET = { type: \"error\", data: \"parser error\" };\nexport { PACKET_TYPES, PACKET_TYPES_REVERSE, ERROR_PACKET };\n","import { PACKET_TYPES } from \"./commons.js\";\nconst withNativeBlob = typeof Blob === \"function\" ||\n (typeof Blob !== \"undefined\" &&\n Object.prototype.toString.call(Blob) === \"[object BlobConstructor]\");\nconst withNativeArrayBuffer = typeof ArrayBuffer === \"function\";\n// ArrayBuffer.isView method is not defined in IE10\nconst isView = obj => {\n return typeof ArrayBuffer.isView === \"function\"\n ? ArrayBuffer.isView(obj)\n : obj && obj.buffer instanceof ArrayBuffer;\n};\nconst encodePacket = ({ type, data }, supportsBinary, callback) => {\n if (withNativeBlob && data instanceof Blob) {\n if (supportsBinary) {\n return callback(data);\n }\n else {\n return encodeBlobAsBase64(data, callback);\n }\n }\n else if (withNativeArrayBuffer &&\n (data instanceof ArrayBuffer || isView(data))) {\n if (supportsBinary) {\n return callback(data);\n }\n else {\n return encodeBlobAsBase64(new Blob([data]), callback);\n }\n }\n // plain string\n return callback(PACKET_TYPES[type] + (data || \"\"));\n};\nconst encodeBlobAsBase64 = (data, callback) => {\n const fileReader = new FileReader();\n fileReader.onload = function () {\n const content = fileReader.result.split(\",\")[1];\n callback(\"b\" + content);\n };\n return fileReader.readAsDataURL(data);\n};\nexport default encodePacket;\n","const 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\";\nconst decodePacket = (encodedPacket, binaryType) => {\n if (typeof encodedPacket !== \"string\") {\n return {\n type: \"message\",\n data: mapBinary(encodedPacket, binaryType)\n };\n }\n const type = encodedPacket.charAt(0);\n if (type === \"b\") {\n return {\n type: \"message\",\n data: decodeBase64Packet(encodedPacket.substring(1), binaryType)\n };\n }\n const packetType = PACKET_TYPES_REVERSE[type];\n if (!packetType) {\n return ERROR_PACKET;\n }\n return encodedPacket.length > 1\n ? {\n type: PACKET_TYPES_REVERSE[type],\n data: encodedPacket.substring(1)\n }\n : {\n type: PACKET_TYPES_REVERSE[type]\n };\n};\nconst decodeBase64Packet = (data, binaryType) => {\n if (withNativeArrayBuffer) {\n const decoded = decode(data);\n return mapBinary(decoded, binaryType);\n }\n else {\n return { base64: true, data }; // fallback for old browsers\n }\n};\nconst mapBinary = (data, binaryType) => {\n switch (binaryType) {\n case \"blob\":\n return data instanceof ArrayBuffer ? new Blob([data]) : data;\n case \"arraybuffer\":\n default:\n return data; // assuming the data is already an ArrayBuffer\n }\n};\nexport default decodePacket;\n","import encodePacket from \"./encodePacket.js\";\nimport decodePacket from \"./decodePacket.js\";\nconst SEPARATOR = String.fromCharCode(30); // see https://en.wikipedia.org/wiki/Delimiter#ASCII_delimited_text\nconst encodePayload = (packets, callback) => {\n // some packets may be added to the array while encoding, so the initial length must be saved\n const length = packets.length;\n const encodedPackets = new Array(length);\n let count = 0;\n packets.forEach((packet, i) => {\n // force base64 encoding for binary packets\n encodePacket(packet, false, encodedPacket => {\n encodedPackets[i] = encodedPacket;\n if (++count === length) {\n callback(encodedPackets.join(SEPARATOR));\n }\n });\n });\n};\nconst decodePayload = (encodedPayload, binaryType) => {\n const encodedPackets = encodedPayload.split(SEPARATOR);\n const packets = [];\n for (let i = 0; i < encodedPackets.length; i++) {\n const decodedPacket = decodePacket(encodedPackets[i], binaryType);\n packets.push(decodedPacket);\n if (decodedPacket.type === \"error\") {\n break;\n }\n }\n return packets;\n};\nexport const protocol = 4;\nexport { encodePacket, encodePayload, decodePacket, decodePayload };\n","/**\n * Initialize a new `Emitter`.\n *\n * @api public\n */\n\nexport function Emitter(obj) {\n if (obj) return mixin(obj);\n}\n\n/**\n * Mixin the emitter properties.\n *\n * @param {Object} obj\n * @return {Object}\n * @api private\n */\n\nfunction mixin(obj) {\n for (var key in Emitter.prototype) {\n obj[key] = Emitter.prototype[key];\n }\n return obj;\n}\n\n/**\n * Listen on the given `event` with `fn`.\n *\n * @param {String} event\n * @param {Function} fn\n * @return {Emitter}\n * @api public\n */\n\nEmitter.prototype.on =\nEmitter.prototype.addEventListener = function(event, fn){\n this._callbacks = this._callbacks || {};\n (this._callbacks['$' + event] = this._callbacks['$' + event] || [])\n .push(fn);\n return this;\n};\n\n/**\n * Adds an `event` listener that will be invoked a single\n * time then automatically removed.\n *\n * @param {String} event\n * @param {Function} fn\n * @return {Emitter}\n * @api public\n */\n\nEmitter.prototype.once = function(event, fn){\n function on() {\n this.off(event, on);\n fn.apply(this, arguments);\n }\n\n on.fn = fn;\n this.on(event, on);\n return this;\n};\n\n/**\n * Remove the given callback for `event` or all\n * registered callbacks.\n *\n * @param {String} event\n * @param {Function} fn\n * @return {Emitter}\n * @api public\n */\n\nEmitter.prototype.off =\nEmitter.prototype.removeListener =\nEmitter.prototype.removeAllListeners =\nEmitter.prototype.removeEventListener = function(event, fn){\n this._callbacks = this._callbacks || {};\n\n // all\n if (0 == arguments.length) {\n this._callbacks = {};\n return this;\n }\n\n // specific event\n var callbacks = this._callbacks['$' + event];\n if (!callbacks) return this;\n\n // remove all handlers\n if (1 == arguments.length) {\n delete this._callbacks['$' + event];\n return this;\n }\n\n // remove specific handler\n var cb;\n for (var i = 0; i < callbacks.length; i++) {\n cb = callbacks[i];\n if (cb === fn || cb.fn === fn) {\n callbacks.splice(i, 1);\n break;\n }\n }\n\n // Remove event specific arrays for event types that no\n // one is subscribed for to avoid memory leak.\n if (callbacks.length === 0) {\n delete this._callbacks['$' + event];\n }\n\n return this;\n};\n\n/**\n * Emit `event` with the given args.\n *\n * @param {String} event\n * @param {Mixed} ...\n * @return {Emitter}\n */\n\nEmitter.prototype.emit = function(event){\n this._callbacks = this._callbacks || {};\n\n var args = new Array(arguments.length - 1)\n , callbacks = this._callbacks['$' + event];\n\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n\n if (callbacks) {\n callbacks = callbacks.slice(0);\n for (var i = 0, len = callbacks.length; i < len; ++i) {\n callbacks[i].apply(this, args);\n }\n }\n\n return this;\n};\n\n// alias used for reserved events (protected method)\nEmitter.prototype.emitReserved = Emitter.prototype.emit;\n\n/**\n * Return array of callbacks for `event`.\n *\n * @param {String} event\n * @return {Array}\n * @api public\n */\n\nEmitter.prototype.listeners = function(event){\n this._callbacks = this._callbacks || {};\n return this._callbacks['$' + event] || [];\n};\n\n/**\n * Check if this emitter has `event` handlers.\n *\n * @param {String} event\n * @return {Boolean}\n * @api public\n */\n\nEmitter.prototype.hasListeners = function(event){\n return !! this.listeners(event).length;\n};\n","export const globalThisShim = (() => {\n if (typeof self !== \"undefined\") {\n return self;\n }\n else if (typeof window !== \"undefined\") {\n return window;\n }\n else {\n return Function(\"return this\")();\n }\n})();\n","import { globalThisShim as globalThis } from \"./globalThis.js\";\nexport function pick(obj, ...attr) {\n return attr.reduce((acc, k) => {\n if (obj.hasOwnProperty(k)) {\n acc[k] = obj[k];\n }\n return acc;\n }, {});\n}\n// Keep a reference to the real timeout functions so they can be used when overridden\nconst NATIVE_SET_TIMEOUT = globalThis.setTimeout;\nconst NATIVE_CLEAR_TIMEOUT = globalThis.clearTimeout;\nexport function installTimerFunctions(obj, opts) {\n if (opts.useNativeTimers) {\n obj.setTimeoutFn = NATIVE_SET_TIMEOUT.bind(globalThis);\n obj.clearTimeoutFn = NATIVE_CLEAR_TIMEOUT.bind(globalThis);\n }\n else {\n obj.setTimeoutFn = globalThis.setTimeout.bind(globalThis);\n obj.clearTimeoutFn = globalThis.clearTimeout.bind(globalThis);\n }\n}\n// base64 encoded buffers are about 33% bigger (https://en.wikipedia.org/wiki/Base64)\nconst BASE64_OVERHEAD = 1.33;\n// we could also have used `new Blob([obj]).size`, but it isn't supported in IE9\nexport function byteLength(obj) {\n if (typeof obj === \"string\") {\n return utf8Length(obj);\n }\n // arraybuffer or blob\n return Math.ceil((obj.byteLength || obj.size) * BASE64_OVERHEAD);\n}\nfunction utf8Length(str) {\n let c = 0, length = 0;\n for (let i = 0, l = str.length; i < l; i++) {\n c = str.charCodeAt(i);\n if (c < 0x80) {\n length += 1;\n }\n else if (c < 0x800) {\n length += 2;\n }\n else if (c < 0xd800 || c >= 0xe000) {\n length += 3;\n }\n else {\n i++;\n length += 4;\n }\n }\n return length;\n}\n","import { decodePacket } from \"engine.io-parser\";\nimport { Emitter } from \"@socket.io/component-emitter\";\nimport { installTimerFunctions } from \"./util.js\";\nclass TransportError extends Error {\n constructor(reason, description, context) {\n super(reason);\n this.description = description;\n this.context = context;\n this.type = \"TransportError\";\n }\n}\nexport class Transport extends Emitter {\n /**\n * Transport abstract constructor.\n *\n * @param {Object} opts - options\n * @protected\n */\n constructor(opts) {\n super();\n this.writable = false;\n installTimerFunctions(this, opts);\n this.opts = opts;\n this.query = opts.query;\n this.socket = opts.socket;\n }\n /**\n * Emits an error.\n *\n * @param {String} reason\n * @param description\n * @param context - the error context\n * @return {Transport} for chaining\n * @protected\n */\n onError(reason, description, context) {\n super.emitReserved(\"error\", new TransportError(reason, description, context));\n return this;\n }\n /**\n * Opens the transport.\n */\n open() {\n this.readyState = \"opening\";\n this.doOpen();\n return this;\n }\n /**\n * Closes the transport.\n */\n close() {\n if (this.readyState === \"opening\" || this.readyState === \"open\") {\n this.doClose();\n this.onClose();\n }\n return this;\n }\n /**\n * Sends multiple packets.\n *\n * @param {Array} packets\n */\n send(packets) {\n if (this.readyState === \"open\") {\n this.write(packets);\n }\n else {\n // this might happen if the transport was silently closed in the beforeunload event handler\n }\n }\n /**\n * Called upon open\n *\n * @protected\n */\n onOpen() {\n this.readyState = \"open\";\n this.writable = true;\n super.emitReserved(\"open\");\n }\n /**\n * Called with data.\n *\n * @param {String} data\n * @protected\n */\n onData(data) {\n const packet = decodePacket(data, this.socket.binaryType);\n this.onPacket(packet);\n }\n /**\n * Called with a decoded packet.\n *\n * @protected\n */\n onPacket(packet) {\n super.emitReserved(\"packet\", packet);\n }\n /**\n * Called upon close.\n *\n * @protected\n */\n onClose(details) {\n this.readyState = \"closed\";\n super.emitReserved(\"close\", details);\n }\n /**\n * Pauses the transport, in order not to lose packets during an upgrade.\n *\n * @param onPause\n */\n pause(onPause) { }\n}\n","// imported from https://github.com/unshiftio/yeast\n'use strict';\nconst alphabet = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-_'.split(''), length = 64, map = {};\nlet seed = 0, i = 0, prev;\n/**\n * Return a string representing the specified number.\n *\n * @param {Number} num The number to convert.\n * @returns {String} The string representation of the number.\n * @api public\n */\nexport function encode(num) {\n let encoded = '';\n do {\n encoded = alphabet[num % length] + encoded;\n num = Math.floor(num / length);\n } while (num > 0);\n return encoded;\n}\n/**\n * Return the integer value specified by the given string.\n *\n * @param {String} str The string to convert.\n * @returns {Number} The integer value represented by the string.\n * @api public\n */\nexport function decode(str) {\n let decoded = 0;\n for (i = 0; i < str.length; i++) {\n decoded = decoded * length + map[str.charAt(i)];\n }\n return decoded;\n}\n/**\n * Yeast: A tiny growing id generator.\n *\n * @returns {String} A unique id.\n * @api public\n */\nexport function yeast() {\n const now = encode(+new Date());\n if (now !== prev)\n return seed = 0, prev = now;\n return now + '.' + encode(seed++);\n}\n//\n// Map each character to its index.\n//\nfor (; i < length; i++)\n map[alphabet[i]] = i;\n","// imported from https://github.com/galkn/querystring\n/**\n * Compiles a querystring\n * Returns string representation of the object\n *\n * @param {Object}\n * @api private\n */\nexport function encode(obj) {\n let str = '';\n for (let i in obj) {\n if (obj.hasOwnProperty(i)) {\n if (str.length)\n str += '&';\n str += encodeURIComponent(i) + '=' + encodeURIComponent(obj[i]);\n }\n }\n return str;\n}\n/**\n * Parses a simple querystring into an object\n *\n * @param {String} qs\n * @api private\n */\nexport function decode(qs) {\n let qry = {};\n let pairs = qs.split('&');\n for (let i = 0, l = pairs.length; i < l; i++) {\n let pair = pairs[i].split('=');\n qry[decodeURIComponent(pair[0])] = decodeURIComponent(pair[1]);\n }\n return qry;\n}\n","// imported from https://github.com/component/has-cors\nlet value = false;\ntry {\n value = typeof XMLHttpRequest !== 'undefined' &&\n 'withCredentials' in new XMLHttpRequest();\n}\ncatch (err) {\n // if XMLHttp support is disabled in IE then it will throw\n // when trying to create\n}\nexport const hasCORS = value;\n","// browser shim for xmlhttprequest module\nimport { hasCORS } from \"../contrib/has-cors.js\";\nimport { globalThisShim as globalThis } from \"../globalThis.js\";\nexport function XHR(opts) {\n const xdomain = opts.xdomain;\n // XMLHttpRequest can be disabled on IE\n try {\n if (\"undefined\" !== typeof XMLHttpRequest && (!xdomain || hasCORS)) {\n return new XMLHttpRequest();\n }\n }\n catch (e) { }\n if (!xdomain) {\n try {\n return new globalThis[[\"Active\"].concat(\"Object\").join(\"X\")](\"Microsoft.XMLHTTP\");\n }\n catch (e) { }\n }\n}\n","import { Transport } from \"../transport.js\";\nimport { yeast } from \"../contrib/yeast.js\";\nimport { encode } from \"../contrib/parseqs.js\";\nimport { encodePayload, decodePayload } from \"engine.io-parser\";\nimport { XHR as XMLHttpRequest } from \"./xmlhttprequest.js\";\nimport { Emitter } from \"@socket.io/component-emitter\";\nimport { installTimerFunctions, pick } from \"../util.js\";\nimport { globalThisShim as globalThis } from \"../globalThis.js\";\nfunction empty() { }\nconst hasXHR2 = (function () {\n const xhr = new XMLHttpRequest({\n xdomain: false,\n });\n return null != xhr.responseType;\n})();\nexport class Polling extends Transport {\n /**\n * XHR Polling constructor.\n *\n * @param {Object} opts\n * @package\n */\n constructor(opts) {\n super(opts);\n this.polling = false;\n if (typeof location !== \"undefined\") {\n const isSSL = \"https:\" === location.protocol;\n let port = location.port;\n // some user agents have empty `location.port`\n if (!port) {\n port = isSSL ? \"443\" : \"80\";\n }\n this.xd =\n (typeof location !== \"undefined\" &&\n opts.hostname !== location.hostname) ||\n port !== opts.port;\n this.xs = opts.secure !== isSSL;\n }\n /**\n * XHR supports binary\n */\n const forceBase64 = opts && opts.forceBase64;\n this.supportsBinary = hasXHR2 && !forceBase64;\n }\n get name() {\n return \"polling\";\n }\n /**\n * Opens the socket (triggers polling). We write a PING message to determine\n * when the transport is open.\n *\n * @protected\n */\n doOpen() {\n this.poll();\n }\n /**\n * Pauses polling.\n *\n * @param {Function} onPause - callback upon buffers are flushed and transport is paused\n * @package\n */\n pause(onPause) {\n this.readyState = \"pausing\";\n const pause = () => {\n this.readyState = \"paused\";\n onPause();\n };\n if (this.polling || !this.writable) {\n let total = 0;\n if (this.polling) {\n total++;\n this.once(\"pollComplete\", function () {\n --total || pause();\n });\n }\n if (!this.writable) {\n total++;\n this.once(\"drain\", function () {\n --total || pause();\n });\n }\n }\n else {\n pause();\n }\n }\n /**\n * Starts polling cycle.\n *\n * @private\n */\n poll() {\n this.polling = true;\n this.doPoll();\n this.emitReserved(\"poll\");\n }\n /**\n * Overloads onData to detect payloads.\n *\n * @protected\n */\n onData(data) {\n const callback = (packet) => {\n // if its the first message we consider the transport open\n if (\"opening\" === this.readyState && packet.type === \"open\") {\n this.onOpen();\n }\n // if its a close packet, we close the ongoing requests\n if (\"close\" === packet.type) {\n this.onClose({ description: \"transport closed by the server\" });\n return false;\n }\n // otherwise bypass onData and handle the message\n this.onPacket(packet);\n };\n // decode payload\n decodePayload(data, this.socket.binaryType).forEach(callback);\n // if an event did not trigger closing\n if (\"closed\" !== this.readyState) {\n // if we got data we're not polling\n this.polling = false;\n this.emitReserved(\"pollComplete\");\n if (\"open\" === this.readyState) {\n this.poll();\n }\n else {\n }\n }\n }\n /**\n * For polling, send a close packet.\n *\n * @protected\n */\n doClose() {\n const close = () => {\n this.write([{ type: \"close\" }]);\n };\n if (\"open\" === this.readyState) {\n close();\n }\n else {\n // in case we're trying to close while\n // handshaking is in progress (GH-164)\n this.once(\"open\", close);\n }\n }\n /**\n * Writes a packets payload.\n *\n * @param {Array} packets - data packets\n * @protected\n */\n write(packets) {\n this.writable = false;\n encodePayload(packets, (data) => {\n this.doWrite(data, () => {\n this.writable = true;\n this.emitReserved(\"drain\");\n });\n });\n }\n /**\n * Generates uri for connection.\n *\n * @private\n */\n uri() {\n let query = this.query || {};\n const schema = this.opts.secure ? \"https\" : \"http\";\n let port = \"\";\n // cache busting is forced\n if (false !== this.opts.timestampRequests) {\n query[this.opts.timestampParam] = yeast();\n }\n if (!this.supportsBinary && !query.sid) {\n query.b64 = 1;\n }\n // avoid port if default for schema\n if (this.opts.port &&\n ((\"https\" === schema && Number(this.opts.port) !== 443) ||\n (\"http\" === schema && Number(this.opts.port) !== 80))) {\n port = \":\" + this.opts.port;\n }\n const encodedQuery = encode(query);\n const ipv6 = this.opts.hostname.indexOf(\":\") !== -1;\n return (schema +\n \"://\" +\n (ipv6 ? \"[\" + this.opts.hostname + \"]\" : this.opts.hostname) +\n port +\n this.opts.path +\n (encodedQuery.length ? \"?\" + encodedQuery : \"\"));\n }\n /**\n * Creates a request.\n *\n * @param {String} method\n * @private\n */\n request(opts = {}) {\n Object.assign(opts, { xd: this.xd, xs: this.xs }, this.opts);\n return new Request(this.uri(), opts);\n }\n /**\n * Sends data.\n *\n * @param {String} data to send.\n * @param {Function} called upon flush.\n * @private\n */\n doWrite(data, fn) {\n const req = this.request({\n method: \"POST\",\n data: data,\n });\n req.on(\"success\", fn);\n req.on(\"error\", (xhrStatus, context) => {\n this.onError(\"xhr post error\", xhrStatus, context);\n });\n }\n /**\n * Starts a poll cycle.\n *\n * @private\n */\n doPoll() {\n const req = this.request();\n req.on(\"data\", this.onData.bind(this));\n req.on(\"error\", (xhrStatus, context) => {\n this.onError(\"xhr poll error\", xhrStatus, context);\n });\n this.pollXhr = req;\n }\n}\nexport class Request extends Emitter {\n /**\n * Request constructor\n *\n * @param {Object} options\n * @package\n */\n constructor(uri, opts) {\n super();\n installTimerFunctions(this, opts);\n this.opts = opts;\n this.method = opts.method || \"GET\";\n this.uri = uri;\n this.async = false !== opts.async;\n this.data = undefined !== opts.data ? opts.data : null;\n this.create();\n }\n /**\n * Creates the XHR object and sends the request.\n *\n * @private\n */\n create() {\n const opts = pick(this.opts, \"agent\", \"pfx\", \"key\", \"passphrase\", \"cert\", \"ca\", \"ciphers\", \"rejectUnauthorized\", \"autoUnref\");\n opts.xdomain = !!this.opts.xd;\n opts.xscheme = !!this.opts.xs;\n const xhr = (this.xhr = new XMLHttpRequest(opts));\n try {\n xhr.open(this.method, this.uri, this.async);\n try {\n if (this.opts.extraHeaders) {\n xhr.setDisableHeaderCheck && xhr.setDisableHeaderCheck(true);\n for (let i in this.opts.extraHeaders) {\n if (this.opts.extraHeaders.hasOwnProperty(i)) {\n xhr.setRequestHeader(i, this.opts.extraHeaders[i]);\n }\n }\n }\n }\n catch (e) { }\n if (\"POST\" === this.method) {\n try {\n xhr.setRequestHeader(\"Content-type\", \"text/plain;charset=UTF-8\");\n }\n catch (e) { }\n }\n try {\n xhr.setRequestHeader(\"Accept\", \"*/*\");\n }\n catch (e) { }\n // ie6 check\n if (\"withCredentials\" in xhr) {\n xhr.withCredentials = this.opts.withCredentials;\n }\n if (this.opts.requestTimeout) {\n xhr.timeout = this.opts.requestTimeout;\n }\n xhr.onreadystatechange = () => {\n if (4 !== xhr.readyState)\n return;\n if (200 === xhr.status || 1223 === xhr.status) {\n this.onLoad();\n }\n else {\n // make sure the `error` event handler that's user-set\n // does not throw in the same tick and gets caught here\n this.setTimeoutFn(() => {\n this.onError(typeof xhr.status === \"number\" ? xhr.status : 0);\n }, 0);\n }\n };\n xhr.send(this.data);\n }\n catch (e) {\n // Need to defer since .create() is called directly from the constructor\n // and thus the 'error' event can only be only bound *after* this exception\n // occurs. Therefore, also, we cannot throw here at all.\n this.setTimeoutFn(() => {\n this.onError(e);\n }, 0);\n return;\n }\n if (typeof document !== \"undefined\") {\n this.index = Request.requestsCount++;\n Request.requests[this.index] = this;\n }\n }\n /**\n * Called upon error.\n *\n * @private\n */\n onError(err) {\n this.emitReserved(\"error\", err, this.xhr);\n this.cleanup(true);\n }\n /**\n * Cleans up house.\n *\n * @private\n */\n cleanup(fromError) {\n if (\"undefined\" === typeof this.xhr || null === this.xhr) {\n return;\n }\n this.xhr.onreadystatechange = empty;\n if (fromError) {\n try {\n this.xhr.abort();\n }\n catch (e) { }\n }\n if (typeof document !== \"undefined\") {\n delete Request.requests[this.index];\n }\n this.xhr = null;\n }\n /**\n * Called upon load.\n *\n * @private\n */\n onLoad() {\n const data = this.xhr.responseText;\n if (data !== null) {\n this.emitReserved(\"data\", data);\n this.emitReserved(\"success\");\n this.cleanup();\n }\n }\n /**\n * Aborts the request.\n *\n * @package\n */\n abort() {\n this.cleanup();\n }\n}\nRequest.requestsCount = 0;\nRequest.requests = {};\n/**\n * Aborts pending requests when unloading the window. This is needed to prevent\n * memory leaks (e.g. when using IE) and to ensure that no spurious error is\n * emitted.\n */\nif (typeof document !== \"undefined\") {\n // @ts-ignore\n if (typeof attachEvent === \"function\") {\n // @ts-ignore\n attachEvent(\"onunload\", unloadHandler);\n }\n else if (typeof addEventListener === \"function\") {\n const terminationEvent = \"onpagehide\" in globalThis ? \"pagehide\" : \"unload\";\n addEventListener(terminationEvent, unloadHandler, false);\n }\n}\nfunction unloadHandler() {\n for (let i in Request.requests) {\n if (Request.requests.hasOwnProperty(i)) {\n Request.requests[i].abort();\n }\n }\n}\n","import { globalThisShim as globalThis } from \"../globalThis.js\";\nexport const nextTick = (() => {\n const isPromiseAvailable = typeof Promise === \"function\" && typeof Promise.resolve === \"function\";\n if (isPromiseAvailable) {\n return (cb) => Promise.resolve().then(cb);\n }\n else {\n return (cb, setTimeoutFn) => setTimeoutFn(cb, 0);\n }\n})();\nexport const WebSocket = globalThis.WebSocket || globalThis.MozWebSocket;\nexport const usingBrowserWebSocket = true;\nexport const defaultBinaryType = \"arraybuffer\";\n","import { Transport } from \"../transport.js\";\nimport { encode } from \"../contrib/parseqs.js\";\nimport { yeast } from \"../contrib/yeast.js\";\nimport { pick } from \"../util.js\";\nimport { defaultBinaryType, nextTick, usingBrowserWebSocket, WebSocket, } from \"./websocket-constructor.js\";\nimport { encodePacket } from \"engine.io-parser\";\n// detect ReactNative environment\nconst isReactNative = typeof navigator !== \"undefined\" &&\n typeof navigator.product === \"string\" &&\n navigator.product.toLowerCase() === \"reactnative\";\nexport class WS extends Transport {\n /**\n * WebSocket transport constructor.\n *\n * @param {Object} opts - connection options\n * @protected\n */\n constructor(opts) {\n super(opts);\n this.supportsBinary = !opts.forceBase64;\n }\n get name() {\n return \"websocket\";\n }\n doOpen() {\n if (!this.check()) {\n // let probe timeout\n return;\n }\n const uri = this.uri();\n const protocols = this.opts.protocols;\n // React Native only supports the 'headers' option, and will print a warning if anything else is passed\n const opts = isReactNative\n ? {}\n : pick(this.opts, \"agent\", \"perMessageDeflate\", \"pfx\", \"key\", \"passphrase\", \"cert\", \"ca\", \"ciphers\", \"rejectUnauthorized\", \"localAddress\", \"protocolVersion\", \"origin\", \"maxPayload\", \"family\", \"checkServerIdentity\");\n if (this.opts.extraHeaders) {\n opts.headers = this.opts.extraHeaders;\n }\n try {\n this.ws =\n usingBrowserWebSocket && !isReactNative\n ? protocols\n ? new WebSocket(uri, protocols)\n : new WebSocket(uri)\n : new WebSocket(uri, protocols, opts);\n }\n catch (err) {\n return this.emitReserved(\"error\", err);\n }\n this.ws.binaryType = this.socket.binaryType || defaultBinaryType;\n this.addEventListeners();\n }\n /**\n * Adds event listeners to the socket\n *\n * @private\n */\n addEventListeners() {\n this.ws.onopen = () => {\n if (this.opts.autoUnref) {\n this.ws._socket.unref();\n }\n this.onOpen();\n };\n this.ws.onclose = (closeEvent) => this.onClose({\n description: \"websocket connection closed\",\n context: closeEvent,\n });\n this.ws.onmessage = (ev) => this.onData(ev.data);\n this.ws.onerror = (e) => this.onError(\"websocket error\", e);\n }\n write(packets) {\n this.writable = false;\n // encodePacket efficient as it uses WS framing\n // no need for encodePayload\n for (let i = 0; i < packets.length; i++) {\n const packet = packets[i];\n const lastPacket = i === packets.length - 1;\n encodePacket(packet, this.supportsBinary, (data) => {\n // always create a new object (GH-437)\n const opts = {};\n if (!usingBrowserWebSocket) {\n if (packet.options) {\n opts.compress = packet.options.compress;\n }\n if (this.opts.perMessageDeflate) {\n const len = \n // @ts-ignore\n \"string\" === typeof data ? Buffer.byteLength(data) : data.length;\n if (len < this.opts.perMessageDeflate.threshold) {\n opts.compress = false;\n }\n }\n }\n // Sometimes the websocket has already been closed but the browser didn't\n // have a chance of informing us about it yet, in that case send will\n // throw an error\n try {\n if (usingBrowserWebSocket) {\n // TypeError is thrown when passing the second argument on Safari\n this.ws.send(data);\n }\n else {\n this.ws.send(data, opts);\n }\n }\n catch (e) {\n }\n if (lastPacket) {\n // fake drain\n // defer to next tick to allow Socket to clear writeBuffer\n nextTick(() => {\n this.writable = true;\n this.emitReserved(\"drain\");\n }, this.setTimeoutFn);\n }\n });\n }\n }\n doClose() {\n if (typeof this.ws !== \"undefined\") {\n this.ws.close();\n this.ws = null;\n }\n }\n /**\n * Generates uri for connection.\n *\n * @private\n */\n uri() {\n let query = this.query || {};\n const schema = this.opts.secure ? \"wss\" : \"ws\";\n let port = \"\";\n // avoid port if default for schema\n if (this.opts.port &&\n ((\"wss\" === schema && Number(this.opts.port) !== 443) ||\n (\"ws\" === schema && Number(this.opts.port) !== 80))) {\n port = \":\" + this.opts.port;\n }\n // append timestamp to URI\n if (this.opts.timestampRequests) {\n query[this.opts.timestampParam] = yeast();\n }\n // communicate binary support capabilities\n if (!this.supportsBinary) {\n query.b64 = 1;\n }\n const encodedQuery = encode(query);\n const ipv6 = this.opts.hostname.indexOf(\":\") !== -1;\n return (schema +\n \"://\" +\n (ipv6 ? \"[\" + this.opts.hostname + \"]\" : this.opts.hostname) +\n port +\n this.opts.path +\n (encodedQuery.length ? \"?\" + encodedQuery : \"\"));\n }\n /**\n * Feature detection for WebSocket.\n *\n * @return {Boolean} whether this transport is available.\n * @private\n */\n check() {\n return !!WebSocket;\n }\n}\n","import { Polling } from \"./polling.js\";\nimport { WS } from \"./websocket.js\";\nexport const transports = {\n websocket: WS,\n polling: Polling,\n};\n","// imported from https://github.com/galkn/parseuri\n/**\n * Parses a URI\n *\n * Note: we could also have used the built-in URL object, but it isn't supported on all platforms.\n *\n * See:\n * - https://developer.mozilla.org/en-US/docs/Web/API/URL\n * - https://caniuse.com/url\n * - https://www.rfc-editor.org/rfc/rfc3986#appendix-B\n *\n * History of the parse() method:\n * - first commit: https://github.com/socketio/socket.io-client/commit/4ee1d5d94b3906a9c052b459f1a818b15f38f91c\n * - export into its own module: https://github.com/socketio/engine.io-client/commit/de2c561e4564efeb78f1bdb1ba39ef81b2822cb3\n * - reimport: https://github.com/socketio/engine.io-client/commit/df32277c3f6d622eec5ed09f493cae3f3391d242\n *\n * @author Steven Levithan (MIT license)\n * @api private\n */\nconst re = /^(?:(?![^:@\\/?#]+:[^:@\\/]*@)(http|https|ws|wss):\\/\\/)?((?:(([^:@\\/?#]*)(?::([^:@\\/?#]*))?)?@)?((?:[a-f0-9]{0,4}:){2,7}[a-f0-9]{0,4}|[^:\\/?#]*)(?::(\\d*))?)(((\\/(?:[^?#](?![^?#\\/]*\\.[^?#\\/.]+(?:[?#]|$)))*\\/?)?([^?#\\/]*))(?:\\?([^#]*))?(?:#(.*))?)/;\nconst parts = [\n 'source', 'protocol', 'authority', 'userInfo', 'user', 'password', 'host', 'port', 'relative', 'path', 'directory', 'file', 'query', 'anchor'\n];\nexport function parse(str) {\n const src = str, b = str.indexOf('['), e = str.indexOf(']');\n if (b != -1 && e != -1) {\n str = str.substring(0, b) + str.substring(b, e).replace(/:/g, ';') + str.substring(e, str.length);\n }\n let m = re.exec(str || ''), uri = {}, i = 14;\n while (i--) {\n uri[parts[i]] = m[i] || '';\n }\n if (b != -1 && e != -1) {\n uri.source = src;\n uri.host = uri.host.substring(1, uri.host.length - 1).replace(/;/g, ':');\n uri.authority = uri.authority.replace('[', '').replace(']', '').replace(/;/g, ':');\n uri.ipv6uri = true;\n }\n uri.pathNames = pathNames(uri, uri['path']);\n uri.queryKey = queryKey(uri, uri['query']);\n return uri;\n}\nfunction pathNames(obj, path) {\n const regx = /\\/{2,9}/g, names = path.replace(regx, \"/\").split(\"/\");\n if (path.slice(0, 1) == '/' || path.length === 0) {\n names.splice(0, 1);\n }\n if (path.slice(-1) == '/') {\n names.splice(names.length - 1, 1);\n }\n return names;\n}\nfunction queryKey(uri, query) {\n const data = {};\n query.replace(/(?:^|&)([^&=]*)=?([^&]*)/g, function ($0, $1, $2) {\n if ($1) {\n data[$1] = $2;\n }\n });\n return data;\n}\n","import { transports } from \"./transports/index.js\";\nimport { installTimerFunctions, byteLength } from \"./util.js\";\nimport { decode } from \"./contrib/parseqs.js\";\nimport { parse } from \"./contrib/parseuri.js\";\nimport { Emitter } from \"@socket.io/component-emitter\";\nimport { protocol } from \"engine.io-parser\";\nexport class Socket extends Emitter {\n /**\n * Socket constructor.\n *\n * @param {String|Object} uri - uri or options\n * @param {Object} opts - options\n */\n constructor(uri, opts = {}) {\n super();\n this.writeBuffer = [];\n if (uri && \"object\" === typeof uri) {\n opts = uri;\n uri = null;\n }\n if (uri) {\n uri = parse(uri);\n opts.hostname = uri.host;\n opts.secure = uri.protocol === \"https\" || uri.protocol === \"wss\";\n opts.port = uri.port;\n if (uri.query)\n opts.query = uri.query;\n }\n else if (opts.host) {\n opts.hostname = parse(opts.host).host;\n }\n installTimerFunctions(this, opts);\n this.secure =\n null != opts.secure\n ? opts.secure\n : typeof location !== \"undefined\" && \"https:\" === location.protocol;\n if (opts.hostname && !opts.port) {\n // if no port is specified manually, use the protocol default\n opts.port = this.secure ? \"443\" : \"80\";\n }\n this.hostname =\n opts.hostname ||\n (typeof location !== \"undefined\" ? location.hostname : \"localhost\");\n this.port =\n opts.port ||\n (typeof location !== \"undefined\" && location.port\n ? location.port\n : this.secure\n ? \"443\"\n : \"80\");\n this.transports = opts.transports || [\"polling\", \"websocket\"];\n this.writeBuffer = [];\n this.prevBufferLen = 0;\n this.opts = Object.assign({\n path: \"/engine.io\",\n agent: false,\n withCredentials: false,\n upgrade: true,\n timestampParam: \"t\",\n rememberUpgrade: false,\n addTrailingSlash: true,\n rejectUnauthorized: true,\n perMessageDeflate: {\n threshold: 1024,\n },\n transportOptions: {},\n closeOnBeforeunload: true,\n }, opts);\n this.opts.path =\n this.opts.path.replace(/\\/$/, \"\") +\n (this.opts.addTrailingSlash ? \"/\" : \"\");\n if (typeof this.opts.query === \"string\") {\n this.opts.query = decode(this.opts.query);\n }\n // set on handshake\n this.id = null;\n this.upgrades = null;\n this.pingInterval = null;\n this.pingTimeout = null;\n // set on heartbeat\n this.pingTimeoutTimer = null;\n if (typeof addEventListener === \"function\") {\n if (this.opts.closeOnBeforeunload) {\n // Firefox closes the connection when the \"beforeunload\" event is emitted but not Chrome. This event listener\n // ensures every browser behaves the same (no \"disconnect\" event at the Socket.IO level when the page is\n // closed/reloaded)\n this.beforeunloadEventListener = () => {\n if (this.transport) {\n // silently close the transport\n this.transport.removeAllListeners();\n this.transport.close();\n }\n };\n addEventListener(\"beforeunload\", this.beforeunloadEventListener, false);\n }\n if (this.hostname !== \"localhost\") {\n this.offlineEventListener = () => {\n this.onClose(\"transport close\", {\n description: \"network connection lost\",\n });\n };\n addEventListener(\"offline\", this.offlineEventListener, false);\n }\n }\n this.open();\n }\n /**\n * Creates transport of the given type.\n *\n * @param {String} name - transport name\n * @return {Transport}\n * @private\n */\n createTransport(name) {\n const query = Object.assign({}, this.opts.query);\n // append engine.io protocol identifier\n query.EIO = protocol;\n // transport name\n query.transport = name;\n // session id if we already have one\n if (this.id)\n query.sid = this.id;\n const opts = Object.assign({}, this.opts.transportOptions[name], this.opts, {\n query,\n socket: this,\n hostname: this.hostname,\n secure: this.secure,\n port: this.port,\n });\n return new transports[name](opts);\n }\n /**\n * Initializes transport to use and starts probe.\n *\n * @private\n */\n open() {\n let transport;\n if (this.opts.rememberUpgrade &&\n Socket.priorWebsocketSuccess &&\n this.transports.indexOf(\"websocket\") !== -1) {\n transport = \"websocket\";\n }\n else if (0 === this.transports.length) {\n // Emit error on next tick so it can be listened to\n this.setTimeoutFn(() => {\n this.emitReserved(\"error\", \"No transports available\");\n }, 0);\n return;\n }\n else {\n transport = this.transports[0];\n }\n this.readyState = \"opening\";\n // Retry with the next transport if the transport is disabled (jsonp: false)\n try {\n transport = this.createTransport(transport);\n }\n catch (e) {\n this.transports.shift();\n this.open();\n return;\n }\n transport.open();\n this.setTransport(transport);\n }\n /**\n * Sets the current transport. Disables the existing one (if any).\n *\n * @private\n */\n setTransport(transport) {\n if (this.transport) {\n this.transport.removeAllListeners();\n }\n // set up transport\n this.transport = transport;\n // set up transport listeners\n transport\n .on(\"drain\", this.onDrain.bind(this))\n .on(\"packet\", this.onPacket.bind(this))\n .on(\"error\", this.onError.bind(this))\n .on(\"close\", (reason) => this.onClose(\"transport close\", reason));\n }\n /**\n * Probes a transport.\n *\n * @param {String} name - transport name\n * @private\n */\n probe(name) {\n let transport = this.createTransport(name);\n let failed = false;\n Socket.priorWebsocketSuccess = false;\n const onTransportOpen = () => {\n if (failed)\n return;\n transport.send([{ type: \"ping\", data: \"probe\" }]);\n transport.once(\"packet\", (msg) => {\n if (failed)\n return;\n if (\"pong\" === msg.type && \"probe\" === msg.data) {\n this.upgrading = true;\n this.emitReserved(\"upgrading\", transport);\n if (!transport)\n return;\n Socket.priorWebsocketSuccess = \"websocket\" === transport.name;\n this.transport.pause(() => {\n if (failed)\n return;\n if (\"closed\" === this.readyState)\n return;\n cleanup();\n this.setTransport(transport);\n transport.send([{ type: \"upgrade\" }]);\n this.emitReserved(\"upgrade\", transport);\n transport = null;\n this.upgrading = false;\n this.flush();\n });\n }\n else {\n const err = new Error(\"probe error\");\n // @ts-ignore\n err.transport = transport.name;\n this.emitReserved(\"upgradeError\", err);\n }\n });\n };\n function freezeTransport() {\n if (failed)\n return;\n // Any callback called by transport should be ignored since now\n failed = true;\n cleanup();\n transport.close();\n transport = null;\n }\n // Handle any error that happens while probing\n const onerror = (err) => {\n const error = new Error(\"probe error: \" + err);\n // @ts-ignore\n error.transport = transport.name;\n freezeTransport();\n this.emitReserved(\"upgradeError\", error);\n };\n function onTransportClose() {\n onerror(\"transport closed\");\n }\n // When the socket is closed while we're probing\n function onclose() {\n onerror(\"socket closed\");\n }\n // When the socket is upgraded while we're probing\n function onupgrade(to) {\n if (transport && to.name !== transport.name) {\n freezeTransport();\n }\n }\n // Remove all listeners on the transport and on self\n const cleanup = () => {\n transport.removeListener(\"open\", onTransportOpen);\n transport.removeListener(\"error\", onerror);\n transport.removeListener(\"close\", onTransportClose);\n this.off(\"close\", onclose);\n this.off(\"upgrading\", onupgrade);\n };\n transport.once(\"open\", onTransportOpen);\n transport.once(\"error\", onerror);\n transport.once(\"close\", onTransportClose);\n this.once(\"close\", onclose);\n this.once(\"upgrading\", onupgrade);\n transport.open();\n }\n /**\n * Called when connection is deemed open.\n *\n * @private\n */\n onOpen() {\n this.readyState = \"open\";\n Socket.priorWebsocketSuccess = \"websocket\" === this.transport.name;\n this.emitReserved(\"open\");\n this.flush();\n // we check for `readyState` in case an `open`\n // listener already closed the socket\n if (\"open\" === this.readyState && this.opts.upgrade) {\n let i = 0;\n const l = this.upgrades.length;\n for (; i < l; i++) {\n this.probe(this.upgrades[i]);\n }\n }\n }\n /**\n * Handles a packet.\n *\n * @private\n */\n onPacket(packet) {\n if (\"opening\" === this.readyState ||\n \"open\" === this.readyState ||\n \"closing\" === this.readyState) {\n this.emitReserved(\"packet\", packet);\n // Socket is live - any packet counts\n this.emitReserved(\"heartbeat\");\n switch (packet.type) {\n case \"open\":\n this.onHandshake(JSON.parse(packet.data));\n break;\n case \"ping\":\n this.resetPingTimeout();\n this.sendPacket(\"pong\");\n this.emitReserved(\"ping\");\n this.emitReserved(\"pong\");\n break;\n case \"error\":\n const err = new Error(\"server error\");\n // @ts-ignore\n err.code = packet.data;\n this.onError(err);\n break;\n case \"message\":\n this.emitReserved(\"data\", packet.data);\n this.emitReserved(\"message\", packet.data);\n break;\n }\n }\n else {\n }\n }\n /**\n * Called upon handshake completion.\n *\n * @param {Object} data - handshake obj\n * @private\n */\n onHandshake(data) {\n this.emitReserved(\"handshake\", data);\n this.id = data.sid;\n this.transport.query.sid = data.sid;\n this.upgrades = this.filterUpgrades(data.upgrades);\n this.pingInterval = data.pingInterval;\n this.pingTimeout = data.pingTimeout;\n this.maxPayload = data.maxPayload;\n this.onOpen();\n // In case open handler closes socket\n if (\"closed\" === this.readyState)\n return;\n this.resetPingTimeout();\n }\n /**\n * Sets and resets ping timeout timer based on server pings.\n *\n * @private\n */\n resetPingTimeout() {\n this.clearTimeoutFn(this.pingTimeoutTimer);\n this.pingTimeoutTimer = this.setTimeoutFn(() => {\n this.onClose(\"ping timeout\");\n }, this.pingInterval + this.pingTimeout);\n if (this.opts.autoUnref) {\n this.pingTimeoutTimer.unref();\n }\n }\n /**\n * Called on `drain` event\n *\n * @private\n */\n onDrain() {\n this.writeBuffer.splice(0, this.prevBufferLen);\n // setting prevBufferLen = 0 is very important\n // for example, when upgrading, upgrade packet is sent over,\n // and a nonzero prevBufferLen could cause problems on `drain`\n this.prevBufferLen = 0;\n if (0 === this.writeBuffer.length) {\n this.emitReserved(\"drain\");\n }\n else {\n this.flush();\n }\n }\n /**\n * Flush write buffers.\n *\n * @private\n */\n flush() {\n if (\"closed\" !== this.readyState &&\n this.transport.writable &&\n !this.upgrading &&\n this.writeBuffer.length) {\n const packets = this.getWritablePackets();\n this.transport.send(packets);\n // keep track of current length of writeBuffer\n // splice writeBuffer and callbackBuffer on `drain`\n this.prevBufferLen = packets.length;\n this.emitReserved(\"flush\");\n }\n }\n /**\n * Ensure the encoded size of the writeBuffer is below the maxPayload value sent by the server (only for HTTP\n * long-polling)\n *\n * @private\n */\n getWritablePackets() {\n const shouldCheckPayloadSize = this.maxPayload &&\n this.transport.name === \"polling\" &&\n this.writeBuffer.length > 1;\n if (!shouldCheckPayloadSize) {\n return this.writeBuffer;\n }\n let payloadSize = 1; // first packet type\n for (let i = 0; i < this.writeBuffer.length; i++) {\n const data = this.writeBuffer[i].data;\n if (data) {\n payloadSize += byteLength(data);\n }\n if (i > 0 && payloadSize > this.maxPayload) {\n return this.writeBuffer.slice(0, i);\n }\n payloadSize += 2; // separator + packet type\n }\n return this.writeBuffer;\n }\n /**\n * Sends a message.\n *\n * @param {String} msg - message.\n * @param {Object} options.\n * @param {Function} callback function.\n * @return {Socket} for chaining.\n */\n write(msg, options, fn) {\n this.sendPacket(\"message\", msg, options, fn);\n return this;\n }\n send(msg, options, fn) {\n this.sendPacket(\"message\", msg, options, fn);\n return this;\n }\n /**\n * Sends a packet.\n *\n * @param {String} type: packet type.\n * @param {String} data.\n * @param {Object} options.\n * @param {Function} fn - callback function.\n * @private\n */\n sendPacket(type, data, options, fn) {\n if (\"function\" === typeof data) {\n fn = data;\n data = undefined;\n }\n if (\"function\" === typeof options) {\n fn = options;\n options = null;\n }\n if (\"closing\" === this.readyState || \"closed\" === this.readyState) {\n return;\n }\n options = options || {};\n options.compress = false !== options.compress;\n const packet = {\n type: type,\n data: data,\n options: options,\n };\n this.emitReserved(\"packetCreate\", packet);\n this.writeBuffer.push(packet);\n if (fn)\n this.once(\"flush\", fn);\n this.flush();\n }\n /**\n * Closes the connection.\n */\n close() {\n const close = () => {\n this.onClose(\"forced close\");\n this.transport.close();\n };\n const cleanupAndClose = () => {\n this.off(\"upgrade\", cleanupAndClose);\n this.off(\"upgradeError\", cleanupAndClose);\n close();\n };\n const waitForUpgrade = () => {\n // wait for upgrade to finish since we can't send packets while pausing a transport\n this.once(\"upgrade\", cleanupAndClose);\n this.once(\"upgradeError\", cleanupAndClose);\n };\n if (\"opening\" === this.readyState || \"open\" === this.readyState) {\n this.readyState = \"closing\";\n if (this.writeBuffer.length) {\n this.once(\"drain\", () => {\n if (this.upgrading) {\n waitForUpgrade();\n }\n else {\n close();\n }\n });\n }\n else if (this.upgrading) {\n waitForUpgrade();\n }\n else {\n close();\n }\n }\n return this;\n }\n /**\n * Called upon transport error\n *\n * @private\n */\n onError(err) {\n Socket.priorWebsocketSuccess = false;\n this.emitReserved(\"error\", err);\n this.onClose(\"transport error\", err);\n }\n /**\n * Called upon transport close.\n *\n * @private\n */\n onClose(reason, description) {\n if (\"opening\" === this.readyState ||\n \"open\" === this.readyState ||\n \"closing\" === this.readyState) {\n // clear timers\n this.clearTimeoutFn(this.pingTimeoutTimer);\n // stop event from firing again for transport\n this.transport.removeAllListeners(\"close\");\n // ensure transport won't stay open\n this.transport.close();\n // ignore further transport communication\n this.transport.removeAllListeners();\n if (typeof removeEventListener === \"function\") {\n removeEventListener(\"beforeunload\", this.beforeunloadEventListener, false);\n removeEventListener(\"offline\", this.offlineEventListener, false);\n }\n // set ready state\n this.readyState = \"closed\";\n // clear session id\n this.id = null;\n // emit close event\n this.emitReserved(\"close\", reason, description);\n // clean buffers after, so users can still\n // grab the buffers on `close` event\n this.writeBuffer = [];\n this.prevBufferLen = 0;\n }\n }\n /**\n * Filters upgrades, returning only those matching client transports.\n *\n * @param {Array} upgrades - server upgrades\n * @private\n */\n filterUpgrades(upgrades) {\n const filteredUpgrades = [];\n let i = 0;\n const j = upgrades.length;\n for (; i < j; i++) {\n if (~this.transports.indexOf(upgrades[i]))\n filteredUpgrades.push(upgrades[i]);\n }\n return filteredUpgrades;\n }\n}\nSocket.protocol = protocol;\n","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 // emit `error`\n const errorSub = on(socket, \"error\", (err) => {\n self.cleanup();\n self._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 self.maybeReconnectOnOpen();\n }\n });\n if (false !== this._timeout) {\n const timeout = this._timeout;\n if (timeout === 0) {\n openSubDestroy(); // prevents a race condition with the 'open' event\n }\n // set timer\n const timer = this.setTimeoutFn(() => {\n openSubDestroy();\n socket.close();\n // @ts-ignore\n socket.emit(\"error\", new Error(\"timeout\"));\n }, timeout);\n if (this.opts.autoUnref) {\n timer.unref();\n }\n this.subs.push(function subDestroy() {\n clearTimeout(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(function subDestroy() {\n clearTimeout(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","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"],"names":["PACKET_TYPES","Object","create","PACKET_TYPES_REVERSE","keys","forEach","key","ERROR_PACKET","type","data","withNativeBlob","Blob","prototype","toString","call","withNativeArrayBuffer","ArrayBuffer","encodePacket","supportsBinary","callback","encodeBlobAsBase64","obj","isView","buffer","fileReader","FileReader","onload","content","result","split","readAsDataURL","chars","lookup","Uint8Array","i","length","charCodeAt","decodePacket","encodedPacket","binaryType","mapBinary","charAt","decodeBase64Packet","substring","decoded","base64","encoded1","encoded2","encoded3","encoded4","bufferLength","len","p","arraybuffer","bytes","decode","SEPARATOR","String","fromCharCode","Emitter","mixin","on","addEventListener","event","fn","this","_callbacks","push","once","off","apply","arguments","removeListener","removeAllListeners","removeEventListener","cb","callbacks","splice","emit","args","Array","slice","emitReserved","listeners","hasListeners","globalThisShim","self","window","Function","pick","attr","reduce","acc","k","hasOwnProperty","NATIVE_SET_TIMEOUT","globalThis","setTimeout","NATIVE_CLEAR_TIMEOUT","clearTimeout","installTimerFunctions","opts","useNativeTimers","setTimeoutFn","bind","clearTimeoutFn","TransportError","Error","constructor","reason","description","context","super","Transport","writable","query","socket","onError","open","readyState","doOpen","close","doClose","onClose","send","packets","write","onOpen","onData","packet","onPacket","details","pause","onPause","alphabet","map","prev","seed","encode","num","encoded","Math","floor","yeast","now","Date","str","encodeURIComponent","value","XMLHttpRequest","err","hasCORS","XHR","xdomain","e","concat","join","empty","hasXHR2","responseType","Request","uri","method","async","undefined","xd","xscheme","xs","xhr","extraHeaders","setDisableHeaderCheck","setRequestHeader","withCredentials","requestTimeout","timeout","onreadystatechange","status","onLoad","document","index","requestsCount","requests","cleanup","fromError","abort","responseText","attachEvent","unloadHandler","nextTick","Promise","resolve","then","WebSocket","MozWebSocket","isReactNative","navigator","product","toLowerCase","transports","websocket","forceBase64","name","check","protocols","headers","ws","addEventListeners","onopen","autoUnref","_socket","unref","onclose","closeEvent","onmessage","ev","onerror","lastPacket","schema","secure","port","Number","timestampRequests","timestampParam","b64","encodedQuery","hostname","indexOf","path","polling","location","isSSL","protocol","poll","total","doPoll","encodedPayload","encodedPackets","decodedPacket","decodePayload","count","encodePayload","doWrite","sid","request","assign","req","xhrStatus","pollXhr","re","parts","parse","src","b","replace","m","exec","source","host","authority","ipv6uri","pathNames","regx","names","queryKey","$0","$1","$2","Socket","writeBuffer","prevBufferLen","agent","upgrade","rememberUpgrade","addTrailingSlash","rejectUnauthorized","perMessageDeflate","threshold","transportOptions","closeOnBeforeunload","qs","qry","pairs","l","pair","decodeURIComponent","id","upgrades","pingInterval","pingTimeout","pingTimeoutTimer","beforeunloadEventListener","transport","offlineEventListener","createTransport","EIO","priorWebsocketSuccess","shift","setTransport","onDrain","probe","failed","onTransportOpen","msg","upgrading","flush","freezeTransport","error","onTransportClose","onupgrade","to","onHandshake","JSON","resetPingTimeout","sendPacket","code","filterUpgrades","maxPayload","getWritablePackets","payloadSize","c","utf8Length","ceil","byteLength","size","options","compress","cleanupAndClose","waitForUpgrade","filteredUpgrades","j","withNativeFile","File","isBinary","hasBinary","toJSON","isArray","deconstructPacket","buffers","packetData","pack","_deconstructPacket","attachments","placeholder","_placeholder","newData","reconstructPacket","_reconstructPacket","RESERVED_EVENTS","PacketType","isObject","Decoder","reviver","add","reconstructor","decodeString","isBinaryEvent","BINARY_EVENT","BINARY_ACK","EVENT","ACK","BinaryReconstructor","takeBinaryData","start","buf","nsp","next","payload","tryParse","substr","isPayloadValid","static","CONNECT","DISCONNECT","CONNECT_ERROR","destroy","finishedReconstruction","reconPack","binData","replacer","encodeAsString","encodeAsBinary","stringify","deconstruction","unshift","freeze","connect","connect_error","disconnect","disconnecting","newListener","io","connected","recovered","receiveBuffer","sendBuffer","_queue","_queueSeq","ids","acks","flags","auth","_opts","_autoConnect","disconnected","subEvents","subs","onpacket","active","_readyState","retries","fromQueue","volatile","_addToQueue","ack","pop","_registerAckCallback","isTransportWritable","engine","notifyOutgoingListeners","_a","ackTimeout","timer","emitWithAck","withErr","reject","arg1","arg2","tryCount","pending","responseArgs","_drainQueue","force","_packet","_sendConnectPacket","_pid","pid","offset","_lastOffset","onconnect","onevent","onack","ondisconnect","message","emitEvent","_anyListeners","listener","sent","emitBuffered","subDestroy","onAny","prependAny","offAny","listenersAny","onAnyOutgoing","_anyOutgoingListeners","prependAnyOutgoing","offAnyOutgoing","listenersAnyOutgoing","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","Encoder","decoder","autoConnect","v","_reconnection","_reconnectionAttempts","_reconnectionDelay","_randomizationFactor","_reconnectionDelayMax","_timeout","maybeReconnectOnOpen","_reconnecting","reconnect","Engine","skipReconnect","openSubDestroy","errorSub","onping","ondata","ondecoded","_destroy","_close","delay","onreconnect","attempt","cache","parsed","loc","test","href","url","sameNamespace","forceNew","multiplex"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"socket.io.esm.min.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/transport.js","../node_modules/engine.io-client/build/esm/contrib/parseqs.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/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","../build/esm/url.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","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/galkn/querystring\n/**\n * Compiles a querystring\n * Returns string representation of the object\n *\n * @param {Object}\n * @api private\n */\nexport function encode(obj) {\n let str = '';\n for (let i in obj) {\n if (obj.hasOwnProperty(i)) {\n if (str.length)\n str += '&';\n str += encodeURIComponent(i) + '=' + encodeURIComponent(obj[i]);\n }\n }\n return str;\n}\n/**\n * Parses a simple querystring into an object\n *\n * @param {String} qs\n * @api private\n */\nexport function decode(qs) {\n let qry = {};\n let pairs = qs.split('&');\n for (let i = 0, l = pairs.length; i < l; i++) {\n let pair = pairs[i].split('=');\n qry[decodeURIComponent(pair[0])] = decodeURIComponent(pair[1]);\n }\n return qry;\n}\n","// imported from https://github.com/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 (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","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","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"],"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","decodePacket","encodedPacket","binaryType","mapBinary","charAt","decodeBase64Packet","substring","decoded","base64","encoded1","encoded2","encoded3","encoded4","bufferLength","len","p","arraybuffer","bytes","decode","SEPARATOR","String","fromCharCode","TEXT_DECODER","Emitter","mixin","on","addEventListener","event","fn","this","_callbacks","push","once","off","apply","arguments","removeListener","removeAllListeners","removeEventListener","cb","callbacks","splice","emit","args","Array","slice","emitReserved","listeners","hasListeners","globalThisShim","self","window","Function","pick","attr","reduce","acc","k","hasOwnProperty","NATIVE_SET_TIMEOUT","globalThis","setTimeout","NATIVE_CLEAR_TIMEOUT","clearTimeout","installTimerFunctions","opts","useNativeTimers","setTimeoutFn","bind","clearTimeoutFn","TransportError","Error","constructor","reason","description","context","super","Transport","writable","query","socket","onError","open","readyState","doOpen","close","doClose","onClose","send","packets","write","onOpen","onData","onPacket","details","pause","onPause","createUri","schema","_hostname","_port","path","_query","hostname","indexOf","port","secure","Number","encodedQuery","str","encodeURIComponent","alphabet","map","prev","seed","num","Math","floor","yeast","now","Date","value","XMLHttpRequest","err","hasCORS","XHR","xdomain","e","concat","join","empty","hasXHR2","responseType","Request","uri","method","undefined","_a","xd","xhr","extraHeaders","setDisableHeaderCheck","setRequestHeader","cookieJar","addCookies","withCredentials","requestTimeout","timeout","onreadystatechange","parseCookies","status","onLoad","document","index","requestsCount","requests","cleanup","fromError","abort","responseText","attachEvent","unloadHandler","nextTick","Promise","resolve","WebSocket","MozWebSocket","isReactNative","navigator","product","toLowerCase","shouldIncludeBinaryHeader","transports","websocket","forceBase64","name","check","protocols","headers","ws","addEventListeners","onopen","autoUnref","_socket","unref","onclose","closeEvent","onmessage","ev","onerror","lastPacket","timestampRequests","timestampParam","b64","webtransport","WebTransport","transport","transportOptions","closed","ready","createBidirectionalStream","stream","reader","readable","getReader","binaryFlag","writer","getWriter","read","done","isBinary","TextDecoder","isPlainBinary","decodePacketFromBinary","handshake","sid","of","polling","location","isSSL","protocol","createCookieJar","poll","total","doPoll","encodedPayload","encodedPackets","decodedPacket","decodePayload","count","encodePayload","doWrite","request","assign","req","xhrStatus","pollXhr","re","parts","parse","src","b","replace","m","exec","source","host","authority","ipv6uri","pathNames","regx","names","queryKey","$0","$1","$2","Socket","writeBuffer","prevBufferLen","agent","upgrade","rememberUpgrade","addTrailingSlash","rejectUnauthorized","perMessageDeflate","threshold","closeOnBeforeunload","qs","qry","pairs","l","pair","decodeURIComponent","id","upgrades","pingInterval","pingTimeout","pingTimeoutTimer","beforeunloadEventListener","offlineEventListener","createTransport","EIO","priorWebsocketSuccess","shift","setTransport","onDrain","probe","failed","onTransportOpen","msg","upgrading","flush","freezeTransport","error","onTransportClose","onupgrade","to","onHandshake","JSON","resetPingTimeout","sendPacket","code","filterUpgrades","maxPayload","getWritablePackets","payloadSize","c","utf8Length","ceil","size","options","compress","cleanupAndClose","waitForUpgrade","filteredUpgrades","j","withNativeFile","File","hasBinary","toJSON","isArray","deconstructPacket","buffers","packetData","pack","_deconstructPacket","attachments","placeholder","_placeholder","newData","reconstructPacket","_reconstructPacket","RESERVED_EVENTS","PacketType","isObject","Decoder","reviver","add","reconstructor","decodeString","isBinaryEvent","BINARY_EVENT","BINARY_ACK","EVENT","ACK","BinaryReconstructor","takeBinaryData","start","buf","nsp","next","payload","tryParse","substr","isPayloadValid","static","CONNECT","DISCONNECT","CONNECT_ERROR","destroy","finishedReconstruction","reconPack","binData","replacer","encodeAsString","encodeAsBinary","stringify","deconstruction","unshift","freeze","connect","connect_error","disconnect","disconnecting","newListener","io","connected","recovered","receiveBuffer","sendBuffer","_queue","_queueSeq","ids","acks","flags","auth","_opts","_autoConnect","disconnected","subEvents","subs","onpacket","active","_readyState","retries","fromQueue","volatile","_addToQueue","ack","pop","_registerAckCallback","isTransportWritable","engine","notifyOutgoingListeners","ackTimeout","timer","emitWithAck","withErr","reject","arg1","arg2","tryCount","pending","responseArgs","_drainQueue","force","_packet","_sendConnectPacket","_pid","pid","offset","_lastOffset","onconnect","onevent","onack","ondisconnect","message","emitEvent","_anyListeners","listener","sent","emitBuffered","subDestroy","onAny","prependAny","offAny","listenersAny","onAnyOutgoing","_anyOutgoingListeners","prependAnyOutgoing","offAnyOutgoing","listenersAnyOutgoing","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","Encoder","decoder","autoConnect","v","_reconnection","_reconnectionAttempts","_reconnectionDelay","_randomizationFactor","_reconnectionDelayMax","_timeout","maybeReconnectOnOpen","_reconnecting","reconnect","Engine","skipReconnect","openSubDestroy","errorSub","onping","ondata","ondecoded","_destroy","_close","delay","onreconnect","attempt","cache","parsed","loc","test","href","url","sameNamespace","forceNew","multiplex"],"mappings":"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"} \ No newline at end of file diff --git a/dist/socket.io.js b/dist/socket.io.js index 73d23f0e..a3b070f6 100644 --- a/dist/socket.io.js +++ b/dist/socket.io.js @@ -1,5 +1,5 @@ /*! - * Socket.IO v4.6.2 + * Socket.IO v4.7.0 * (c) 2014-2023 Guillermo Rauch * Released under the MIT License. */ @@ -355,12 +355,40 @@ fileReader.onload = function () { var content = fileReader.result.split(",")[1]; - callback("b" + content); + callback("b" + (content || "")); }; return fileReader.readAsDataURL(data); }; + function toArray(data) { + if (data instanceof Uint8Array) { + return data; + } else if (data instanceof ArrayBuffer) { + return new Uint8Array(data); + } else { + return new Uint8Array(data.buffer, data.byteOffset, data.byteLength); + } + } + + var TEXT_ENCODER; + function encodePacketToBinary(packet, callback) { + if (withNativeBlob$1 && packet.data instanceof Blob) { + return packet.data.arrayBuffer().then(toArray).then(callback); + } else if (withNativeArrayBuffer$2 && (packet.data instanceof ArrayBuffer || isView$1(packet.data))) { + return callback(toArray(packet.data)); + } + + encodePacket(packet, false, function (encoded) { + if (!TEXT_ENCODER) { + TEXT_ENCODER = new TextEncoder(); + } + + callback(TEXT_ENCODER.encode(encoded)); + }); + } + + // imported from https://github.com/socketio/base64-arraybuffer var chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'; // Use a lookup table to find the index. var lookup$1 = typeof Uint8Array === 'undefined' ? [] : new Uint8Array(256); @@ -403,7 +431,6 @@ }; var withNativeArrayBuffer$1 = typeof ArrayBuffer === "function"; - var decodePacket = function decodePacket(encodedPacket, binaryType) { if (typeof encodedPacket !== "string") { return { @@ -450,12 +477,24 @@ var mapBinary = function mapBinary(data, binaryType) { switch (binaryType) { case "blob": - return data instanceof ArrayBuffer ? new Blob([data]) : data; + if (data instanceof Blob) { + // from WebSocket + binaryType "blob" + return data; + } else { + // from HTTP long-polling or WebTransport + return new Blob([data]); + } case "arraybuffer": default: - return data; - // assuming the data is already an ArrayBuffer + if (data instanceof ArrayBuffer) { + // from HTTP long-polling (base64) or WebSocket + binaryType "arraybuffer" + return data; + } else { + // from WebTransport (Uint8Array) + return data.buffer; + } + } }; @@ -494,6 +533,18 @@ return packets; }; + var TEXT_DECODER; + function decodePacketFromBinary(data, isBinary, binaryType) { + if (!TEXT_DECODER) { + // lazily created for compatibility with old browser platforms + TEXT_DECODER = new TextDecoder(); + } // 48 === "0".charCodeAt(0) (OPEN packet type) + // 54 === "6".charCodeAt(0) (NOOP packet type) + + + var isPlainBinary = isBinary || data[0] < 48 || data[0] > 54; + return decodePacket(isPlainBinary ? data : TEXT_DECODER.decode(data), binaryType); + } var protocol$1 = 4; /** @@ -728,6 +779,46 @@ return length; } + // imported from https://github.com/galkn/querystring + + /** + * Compiles a querystring + * Returns string representation of the object + * + * @param {Object} + * @api private + */ + function encode$1(obj) { + var str = ''; + + for (var i in obj) { + if (obj.hasOwnProperty(i)) { + if (str.length) str += '&'; + str += encodeURIComponent(i) + '=' + encodeURIComponent(obj[i]); + } + } + + return str; + } + /** + * Parses a simple querystring into an object + * + * @param {String} qs + * @api private + */ + + function decode(qs) { + var qry = {}; + var pairs = qs.split('&'); + + for (var i = 0, l = pairs.length; i < l; i++) { + var pair = pairs[i].split('='); + qry[decodeURIComponent(pair[0])] = decodeURIComponent(pair[1]); + } + + return qry; + } + var TransportError = /*#__PURE__*/function (_Error) { _inherits(TransportError, _Error); @@ -888,6 +979,33 @@ }, { key: "pause", value: function pause(onPause) {} + }, { + key: "createUri", + value: function createUri(schema) { + var query = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + return schema + "://" + this._hostname() + this._port() + this.opts.path + this._query(query); + } + }, { + key: "_hostname", + value: function _hostname() { + var hostname = this.opts.hostname; + return hostname.indexOf(":") === -1 ? hostname : "[" + hostname + "]"; + } + }, { + key: "_port", + value: function _port() { + if (this.opts.port && (this.opts.secure && Number(this.opts.port !== 443) || !this.opts.secure && Number(this.opts.port) !== 80)) { + return ":" + this.opts.port; + } else { + return ""; + } + } + }, { + key: "_query", + value: function _query(query) { + var encodedQuery = encode$1(query); + return encodedQuery.length ? "?" + encodedQuery : ""; + } }]); return Transport; @@ -909,7 +1027,7 @@ * @api public */ - function encode$1(num) { + function encode(num) { var encoded = ''; do { @@ -927,9 +1045,9 @@ */ function yeast() { - var now = encode$1(+new Date()); + var now = encode(+new Date()); if (now !== prev) return seed = 0, prev = now; - return now + '.' + encode$1(seed++); + return now + '.' + encode(seed++); } // // Map each character to its index. // @@ -938,46 +1056,6 @@ map[alphabet[i]] = i; } - // imported from https://github.com/galkn/querystring - - /** - * Compiles a querystring - * Returns string representation of the object - * - * @param {Object} - * @api private - */ - function encode(obj) { - var str = ''; - - for (var i in obj) { - if (obj.hasOwnProperty(i)) { - if (str.length) str += '&'; - str += encodeURIComponent(i) + '=' + encodeURIComponent(obj[i]); - } - } - - return str; - } - /** - * Parses a simple querystring into an object - * - * @param {String} qs - * @api private - */ - - function decode(qs) { - var qry = {}; - var pairs = qs.split('&'); - - for (var i = 0, l = pairs.length; i < l; i++) { - var pair = pairs[i].split('='); - qry[decodeURIComponent(pair[0])] = decodeURIComponent(pair[1]); - } - - return qry; - } - // imported from https://github.com/component/has-cors var value = false; @@ -1005,6 +1083,7 @@ } catch (e) {} } } + function createCookieJar() {} function empty() {} @@ -1043,7 +1122,6 @@ } _this.xd = typeof location !== "undefined" && opts.hostname !== location.hostname || port !== opts.port; - _this.xs = opts.secure !== isSSL; } /** * XHR supports binary @@ -1052,6 +1130,11 @@ var forceBase64 = opts && opts.forceBase64; _this.supportsBinary = hasXHR2 && !forceBase64; + + if (_this.opts.withCredentials) { + _this.cookieJar = createCookieJar(); + } + return _this; } @@ -1222,9 +1305,8 @@ }, { key: "uri", value: function uri() { - var query = this.query || {}; var schema = this.opts.secure ? "https" : "http"; - var port = ""; // cache busting is forced + var query = this.query || {}; // cache busting is forced if (false !== this.opts.timestampRequests) { query[this.opts.timestampParam] = yeast(); @@ -1232,16 +1314,9 @@ if (!this.supportsBinary && !query.sid) { query.b64 = 1; - } // avoid port if default for schema - - - if (this.opts.port && ("https" === schema && Number(this.opts.port) !== 443 || "http" === schema && Number(this.opts.port) !== 80)) { - port = ":" + this.opts.port; } - var encodedQuery = encode(query); - var ipv6 = this.opts.hostname.indexOf(":") !== -1; - return schema + "://" + (ipv6 ? "[" + this.opts.hostname + "]" : this.opts.hostname) + port + this.opts.path + (encodedQuery.length ? "?" + encodedQuery : ""); + return this.createUri(schema, query); } /** * Creates a request. @@ -1257,7 +1332,7 @@ _extends(opts, { xd: this.xd, - xs: this.xs + cookieJar: this.cookieJar }, this.opts); return new Request(this.uri(), opts); @@ -1327,7 +1402,6 @@ _this8.opts = opts; _this8.method = opts.method || "GET"; _this8.uri = uri; - _this8.async = false !== opts.async; _this8.data = undefined !== opts.data ? opts.data : null; _this8.create(); @@ -1346,13 +1420,14 @@ value: function create() { var _this9 = this; + var _a; + var opts = pick(this.opts, "agent", "pfx", "key", "passphrase", "cert", "ca", "ciphers", "rejectUnauthorized", "autoUnref"); opts.xdomain = !!this.opts.xd; - opts.xscheme = !!this.opts.xs; var xhr = this.xhr = new XHR(opts); try { - xhr.open(this.method, this.uri, this.async); + xhr.open(this.method, this.uri, true); try { if (this.opts.extraHeaders) { @@ -1374,8 +1449,9 @@ try { xhr.setRequestHeader("Accept", "*/*"); - } catch (e) {} // ie6 check + } catch (e) {} + (_a = this.opts.cookieJar) === null || _a === void 0 ? void 0 : _a.addCookies(xhr); // ie6 check if ("withCredentials" in xhr) { xhr.withCredentials = this.opts.withCredentials; @@ -1386,6 +1462,12 @@ } xhr.onreadystatechange = function () { + var _a; + + if (xhr.readyState === 3) { + (_a = _this9.opts.cookieJar) === null || _a === void 0 ? void 0 : _a.parseCookies(xhr); + } + if (4 !== xhr.readyState) return; if (200 === xhr.status || 1223 === xhr.status) { @@ -1675,14 +1757,8 @@ }, { key: "uri", value: function uri() { - var query = this.query || {}; var schema = this.opts.secure ? "wss" : "ws"; - var port = ""; // avoid port if default for schema - - if (this.opts.port && ("wss" === schema && Number(this.opts.port) !== 443 || "ws" === schema && Number(this.opts.port) !== 80)) { - port = ":" + this.opts.port; - } // append timestamp to URI - + var query = this.query || {}; // append timestamp to URI if (this.opts.timestampRequests) { query[this.opts.timestampParam] = yeast(); @@ -1693,9 +1769,7 @@ query.b64 = 1; } - var encodedQuery = encode(query); - var ipv6 = this.opts.hostname.indexOf(":") !== -1; - return schema + "://" + (ipv6 ? "[" + this.opts.hostname + "]" : this.opts.hostname) + port + this.opts.path + (encodedQuery.length ? "?" + encodedQuery : ""); + return this.createUri(schema, query); } /** * Feature detection for WebSocket. @@ -1714,8 +1788,127 @@ return WS; }(Transport); + function shouldIncludeBinaryHeader(packet, encoded) { + // 48 === "0".charCodeAt(0) (OPEN packet type) + // 54 === "6".charCodeAt(0) (NOOP packet type) + return packet.type === "message" && typeof packet.data !== "string" && encoded[0] >= 48 && encoded[0] <= 54; + } + + var WT = /*#__PURE__*/function (_Transport) { + _inherits(WT, _Transport); + + var _super = _createSuper(WT); + + function WT() { + _classCallCheck(this, WT); + + return _super.apply(this, arguments); + } + + _createClass(WT, [{ + key: "name", + get: function get() { + return "webtransport"; + } + }, { + key: "doOpen", + value: function doOpen() { + var _this = this; + + // @ts-ignore + if (typeof WebTransport !== "function") { + return; + } // @ts-ignore + + + this.transport = new WebTransport(this.createUri("https"), this.opts.transportOptions[this.name]); + this.transport.closed.then(function () { + return _this.onClose(); + }); // note: we could have used async/await, but that would require some additional polyfills + + this.transport.ready.then(function () { + _this.transport.createBidirectionalStream().then(function (stream) { + var reader = stream.readable.getReader(); + _this.writer = stream.writable.getWriter(); + var binaryFlag; + + var read = function read() { + reader.read().then(function (_ref) { + var done = _ref.done, + value = _ref.value; + + if (done) { + return; + } + + if (!binaryFlag && value.byteLength === 1 && value[0] === 54) { + binaryFlag = true; + } else { + // TODO expose binarytype + _this.onPacket(decodePacketFromBinary(value, binaryFlag, "arraybuffer")); + + binaryFlag = false; + } + + read(); + }); + }; + + read(); + var handshake = _this.query.sid ? "0{\"sid\":\"".concat(_this.query.sid, "\"}") : "0"; + + _this.writer.write(new TextEncoder().encode(handshake)).then(function () { + return _this.onOpen(); + }); + }); + }); + } + }, { + key: "write", + value: function write(packets) { + var _this2 = this; + + this.writable = false; + + var _loop = function _loop(i) { + var packet = packets[i]; + var lastPacket = i === packets.length - 1; + encodePacketToBinary(packet, function (data) { + if (shouldIncludeBinaryHeader(packet, data)) { + _this2.writer.write(Uint8Array.of(54)); + } + + _this2.writer.write(data).then(function () { + if (lastPacket) { + nextTick(function () { + _this2.writable = true; + + _this2.emitReserved("drain"); + }, _this2.setTimeoutFn); + } + }); + }); + }; + + for (var i = 0; i < packets.length; i++) { + _loop(i); + } + } + }, { + key: "doClose", + value: function doClose() { + var _a; + + (_a = this.transport) === null || _a === void 0 ? void 0 : _a.close(); + } + }]); + + return WT; + }(Transport); + var transports = { websocket: WS, + webtransport: WT, polling: Polling }; @@ -1841,7 +2034,7 @@ _this.hostname = opts.hostname || (typeof location !== "undefined" ? location.hostname : "localhost"); _this.port = opts.port || (typeof location !== "undefined" && location.port ? location.port : _this.secure ? "443" : "80"); - _this.transports = opts.transports || ["polling", "websocket"]; + _this.transports = opts.transports || ["polling", "websocket", "webtransport"]; _this.writeBuffer = []; _this.prevBufferLen = 0; _this.opts = _extends({ @@ -2108,7 +2301,17 @@ transport.once("close", onTransportClose); this.once("close", onclose); this.once("upgrading", onupgrade); - transport.open(); + + if (this.upgrades.indexOf("webtransport") !== -1 && name !== "webtransport") { + // favor WebTransport + this.setTimeoutFn(function () { + if (!failed) { + transport.open(); + } + }, 200); + } else { + transport.open(); + } } /** * Called when connection is deemed open. @@ -4381,11 +4584,12 @@ var openSubDestroy = on(socket, "open", function () { self.onopen(); fn && fn(); - }); // emit `error` + }); + + var onError = function onError(err) { + _this2.cleanup(); - var errorSub = on(socket, "error", function (err) { - self.cleanup(); - self._readyState = "closed"; + _this2._readyState = "closed"; _this2.emitReserved("error", err); @@ -4393,31 +4597,28 @@ fn(err); } else { // Only do this if there is no fn to handle the error - self.maybeReconnectOnOpen(); + _this2.maybeReconnectOnOpen(); } - }); + }; // emit `error` - if (false !== this._timeout) { - var timeout = this._timeout; - if (timeout === 0) { - openSubDestroy(); // prevents a race condition with the 'open' event - } // set timer + var errorSub = on(socket, "error", onError); + if (false !== this._timeout) { + var timeout = this._timeout; // set timer var timer = this.setTimeoutFn(function () { openSubDestroy(); - socket.close(); // @ts-ignore - - socket.emit("error", new Error("timeout")); + onError(new Error("timeout")); + socket.close(); }, timeout); if (this.opts.autoUnref) { timer.unref(); } - this.subs.push(function subDestroy() { - clearTimeout(timer); + this.subs.push(function () { + _this2.clearTimeoutFn(timer); }); } @@ -4670,8 +4871,8 @@ timer.unref(); } - this.subs.push(function subDestroy() { - clearTimeout(timer); + this.subs.push(function () { + _this4.clearTimeoutFn(timer); }); } } diff --git a/dist/socket.io.js.map b/dist/socket.io.js.map index bd48e5f6..8434dbda 100644 --- a/dist/socket.io.js.map +++ b/dist/socket.io.js.map @@ -1 +1 @@ -{"version":3,"file":"socket.io.js","sources":["../node_modules/engine.io-parser/build/esm/commons.js","../node_modules/engine.io-parser/build/esm/encodePacket.browser.js","../node_modules/engine.io-parser/build/esm/contrib/base64-arraybuffer.js","../node_modules/engine.io-parser/build/esm/decodePacket.browser.js","../node_modules/engine.io-parser/build/esm/index.js","../node_modules/@socket.io/component-emitter/index.mjs","../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/transport.js","../node_modules/engine.io-client/build/esm/contrib/yeast.js","../node_modules/engine.io-client/build/esm/contrib/parseqs.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/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};\nexport default encodePacket;\n","const 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\";\nconst decodePacket = (encodedPacket, binaryType) => {\n if (typeof encodedPacket !== \"string\") {\n return {\n type: \"message\",\n data: mapBinary(encodedPacket, binaryType)\n };\n }\n const type = encodedPacket.charAt(0);\n if (type === \"b\") {\n return {\n type: \"message\",\n data: decodeBase64Packet(encodedPacket.substring(1), binaryType)\n };\n }\n const packetType = PACKET_TYPES_REVERSE[type];\n if (!packetType) {\n return ERROR_PACKET;\n }\n return encodedPacket.length > 1\n ? {\n type: PACKET_TYPES_REVERSE[type],\n data: encodedPacket.substring(1)\n }\n : {\n type: PACKET_TYPES_REVERSE[type]\n };\n};\nconst decodeBase64Packet = (data, binaryType) => {\n if (withNativeArrayBuffer) {\n const decoded = decode(data);\n return mapBinary(decoded, binaryType);\n }\n else {\n return { base64: true, data }; // fallback for old browsers\n }\n};\nconst mapBinary = (data, binaryType) => {\n switch (binaryType) {\n case \"blob\":\n return data instanceof ArrayBuffer ? new Blob([data]) : data;\n case \"arraybuffer\":\n default:\n return data; // assuming the data is already an ArrayBuffer\n }\n};\nexport default decodePacket;\n","import encodePacket from \"./encodePacket.js\";\nimport decodePacket from \"./decodePacket.js\";\nconst SEPARATOR = String.fromCharCode(30); // see https://en.wikipedia.org/wiki/Delimiter#ASCII_delimited_text\nconst encodePayload = (packets, callback) => {\n // some packets may be added to the array while encoding, so the initial length must be saved\n const length = packets.length;\n const encodedPackets = new Array(length);\n let count = 0;\n packets.forEach((packet, i) => {\n // force base64 encoding for binary packets\n encodePacket(packet, false, encodedPacket => {\n encodedPackets[i] = encodedPacket;\n if (++count === length) {\n callback(encodedPackets.join(SEPARATOR));\n }\n });\n });\n};\nconst decodePayload = (encodedPayload, binaryType) => {\n const encodedPackets = encodedPayload.split(SEPARATOR);\n const packets = [];\n for (let i = 0; i < encodedPackets.length; i++) {\n const decodedPacket = decodePacket(encodedPackets[i], binaryType);\n packets.push(decodedPacket);\n if (decodedPacket.type === \"error\") {\n break;\n }\n }\n return packets;\n};\nexport const protocol = 4;\nexport { encodePacket, encodePayload, decodePacket, decodePayload };\n","/**\n * Initialize a new `Emitter`.\n *\n * @api public\n */\n\nexport function Emitter(obj) {\n if (obj) return mixin(obj);\n}\n\n/**\n * Mixin the emitter properties.\n *\n * @param {Object} obj\n * @return {Object}\n * @api private\n */\n\nfunction mixin(obj) {\n for (var key in Emitter.prototype) {\n obj[key] = Emitter.prototype[key];\n }\n return obj;\n}\n\n/**\n * Listen on the given `event` with `fn`.\n *\n * @param {String} event\n * @param {Function} fn\n * @return {Emitter}\n * @api public\n */\n\nEmitter.prototype.on =\nEmitter.prototype.addEventListener = function(event, fn){\n this._callbacks = this._callbacks || {};\n (this._callbacks['$' + event] = this._callbacks['$' + event] || [])\n .push(fn);\n return this;\n};\n\n/**\n * Adds an `event` listener that will be invoked a single\n * time then automatically removed.\n *\n * @param {String} event\n * @param {Function} fn\n * @return {Emitter}\n * @api public\n */\n\nEmitter.prototype.once = function(event, fn){\n function on() {\n this.off(event, on);\n fn.apply(this, arguments);\n }\n\n on.fn = fn;\n this.on(event, on);\n return this;\n};\n\n/**\n * Remove the given callback for `event` or all\n * registered callbacks.\n *\n * @param {String} event\n * @param {Function} fn\n * @return {Emitter}\n * @api public\n */\n\nEmitter.prototype.off =\nEmitter.prototype.removeListener =\nEmitter.prototype.removeAllListeners =\nEmitter.prototype.removeEventListener = function(event, fn){\n this._callbacks = this._callbacks || {};\n\n // all\n if (0 == arguments.length) {\n this._callbacks = {};\n return this;\n }\n\n // specific event\n var callbacks = this._callbacks['$' + event];\n if (!callbacks) return this;\n\n // remove all handlers\n if (1 == arguments.length) {\n delete this._callbacks['$' + event];\n return this;\n }\n\n // remove specific handler\n var cb;\n for (var i = 0; i < callbacks.length; i++) {\n cb = callbacks[i];\n if (cb === fn || cb.fn === fn) {\n callbacks.splice(i, 1);\n break;\n }\n }\n\n // Remove event specific arrays for event types that no\n // one is subscribed for to avoid memory leak.\n if (callbacks.length === 0) {\n delete this._callbacks['$' + event];\n }\n\n return this;\n};\n\n/**\n * Emit `event` with the given args.\n *\n * @param {String} event\n * @param {Mixed} ...\n * @return {Emitter}\n */\n\nEmitter.prototype.emit = function(event){\n this._callbacks = this._callbacks || {};\n\n var args = new Array(arguments.length - 1)\n , callbacks = this._callbacks['$' + event];\n\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n\n if (callbacks) {\n callbacks = callbacks.slice(0);\n for (var i = 0, len = callbacks.length; i < len; ++i) {\n callbacks[i].apply(this, args);\n }\n }\n\n return this;\n};\n\n// alias used for reserved events (protected method)\nEmitter.prototype.emitReserved = Emitter.prototype.emit;\n\n/**\n * Return array of callbacks for `event`.\n *\n * @param {String} event\n * @return {Array}\n * @api public\n */\n\nEmitter.prototype.listeners = function(event){\n this._callbacks = this._callbacks || {};\n return this._callbacks['$' + event] || [];\n};\n\n/**\n * Check if this emitter has `event` handlers.\n *\n * @param {String} event\n * @return {Boolean}\n * @api public\n */\n\nEmitter.prototype.hasListeners = function(event){\n return !! this.listeners(event).length;\n};\n","export const globalThisShim = (() => {\n if (typeof self !== \"undefined\") {\n return self;\n }\n else if (typeof window !== \"undefined\") {\n return window;\n }\n else {\n return Function(\"return this\")();\n }\n})();\n","import { globalThisShim as globalThis } from \"./globalThis.js\";\nexport function pick(obj, ...attr) {\n return attr.reduce((acc, k) => {\n if (obj.hasOwnProperty(k)) {\n acc[k] = obj[k];\n }\n return acc;\n }, {});\n}\n// Keep a reference to the real timeout functions so they can be used when overridden\nconst NATIVE_SET_TIMEOUT = globalThis.setTimeout;\nconst NATIVE_CLEAR_TIMEOUT = globalThis.clearTimeout;\nexport function installTimerFunctions(obj, opts) {\n if (opts.useNativeTimers) {\n obj.setTimeoutFn = NATIVE_SET_TIMEOUT.bind(globalThis);\n obj.clearTimeoutFn = NATIVE_CLEAR_TIMEOUT.bind(globalThis);\n }\n else {\n obj.setTimeoutFn = globalThis.setTimeout.bind(globalThis);\n obj.clearTimeoutFn = globalThis.clearTimeout.bind(globalThis);\n }\n}\n// base64 encoded buffers are about 33% bigger (https://en.wikipedia.org/wiki/Base64)\nconst BASE64_OVERHEAD = 1.33;\n// we could also have used `new Blob([obj]).size`, but it isn't supported in IE9\nexport function byteLength(obj) {\n if (typeof obj === \"string\") {\n return utf8Length(obj);\n }\n // arraybuffer or blob\n return Math.ceil((obj.byteLength || obj.size) * BASE64_OVERHEAD);\n}\nfunction utf8Length(str) {\n let c = 0, length = 0;\n for (let i = 0, l = str.length; i < l; i++) {\n c = str.charCodeAt(i);\n if (c < 0x80) {\n length += 1;\n }\n else if (c < 0x800) {\n length += 2;\n }\n else if (c < 0xd800 || c >= 0xe000) {\n length += 3;\n }\n else {\n i++;\n length += 4;\n }\n }\n return length;\n}\n","import { decodePacket } from \"engine.io-parser\";\nimport { Emitter } from \"@socket.io/component-emitter\";\nimport { installTimerFunctions } from \"./util.js\";\nclass TransportError extends Error {\n constructor(reason, description, context) {\n super(reason);\n this.description = description;\n this.context = context;\n this.type = \"TransportError\";\n }\n}\nexport class Transport extends Emitter {\n /**\n * Transport abstract constructor.\n *\n * @param {Object} opts - options\n * @protected\n */\n constructor(opts) {\n super();\n this.writable = false;\n installTimerFunctions(this, opts);\n this.opts = opts;\n this.query = opts.query;\n this.socket = opts.socket;\n }\n /**\n * Emits an error.\n *\n * @param {String} reason\n * @param description\n * @param context - the error context\n * @return {Transport} for chaining\n * @protected\n */\n onError(reason, description, context) {\n super.emitReserved(\"error\", new TransportError(reason, description, context));\n return this;\n }\n /**\n * Opens the transport.\n */\n open() {\n this.readyState = \"opening\";\n this.doOpen();\n return this;\n }\n /**\n * Closes the transport.\n */\n close() {\n if (this.readyState === \"opening\" || this.readyState === \"open\") {\n this.doClose();\n this.onClose();\n }\n return this;\n }\n /**\n * Sends multiple packets.\n *\n * @param {Array} packets\n */\n send(packets) {\n if (this.readyState === \"open\") {\n this.write(packets);\n }\n else {\n // this might happen if the transport was silently closed in the beforeunload event handler\n }\n }\n /**\n * Called upon open\n *\n * @protected\n */\n onOpen() {\n this.readyState = \"open\";\n this.writable = true;\n super.emitReserved(\"open\");\n }\n /**\n * Called with data.\n *\n * @param {String} data\n * @protected\n */\n onData(data) {\n const packet = decodePacket(data, this.socket.binaryType);\n this.onPacket(packet);\n }\n /**\n * Called with a decoded packet.\n *\n * @protected\n */\n onPacket(packet) {\n super.emitReserved(\"packet\", packet);\n }\n /**\n * Called upon close.\n *\n * @protected\n */\n onClose(details) {\n this.readyState = \"closed\";\n super.emitReserved(\"close\", details);\n }\n /**\n * Pauses the transport, in order not to lose packets during an upgrade.\n *\n * @param onPause\n */\n pause(onPause) { }\n}\n","// imported from https://github.com/unshiftio/yeast\n'use strict';\nconst alphabet = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-_'.split(''), length = 64, map = {};\nlet seed = 0, i = 0, prev;\n/**\n * Return a string representing the specified number.\n *\n * @param {Number} num The number to convert.\n * @returns {String} The string representation of the number.\n * @api public\n */\nexport function encode(num) {\n let encoded = '';\n do {\n encoded = alphabet[num % length] + encoded;\n num = Math.floor(num / length);\n } while (num > 0);\n return encoded;\n}\n/**\n * Return the integer value specified by the given string.\n *\n * @param {String} str The string to convert.\n * @returns {Number} The integer value represented by the string.\n * @api public\n */\nexport function decode(str) {\n let decoded = 0;\n for (i = 0; i < str.length; i++) {\n decoded = decoded * length + map[str.charAt(i)];\n }\n return decoded;\n}\n/**\n * Yeast: A tiny growing id generator.\n *\n * @returns {String} A unique id.\n * @api public\n */\nexport function yeast() {\n const now = encode(+new Date());\n if (now !== prev)\n return seed = 0, prev = now;\n return now + '.' + encode(seed++);\n}\n//\n// Map each character to its index.\n//\nfor (; i < length; i++)\n map[alphabet[i]] = i;\n","// imported from https://github.com/galkn/querystring\n/**\n * Compiles a querystring\n * Returns string representation of the object\n *\n * @param {Object}\n * @api private\n */\nexport function encode(obj) {\n let str = '';\n for (let i in obj) {\n if (obj.hasOwnProperty(i)) {\n if (str.length)\n str += '&';\n str += encodeURIComponent(i) + '=' + encodeURIComponent(obj[i]);\n }\n }\n return str;\n}\n/**\n * Parses a simple querystring into an object\n *\n * @param {String} qs\n * @api private\n */\nexport function decode(qs) {\n let qry = {};\n let pairs = qs.split('&');\n for (let i = 0, l = pairs.length; i < l; i++) {\n let pair = pairs[i].split('=');\n qry[decodeURIComponent(pair[0])] = decodeURIComponent(pair[1]);\n }\n return qry;\n}\n","// imported from https://github.com/component/has-cors\nlet value = false;\ntry {\n value = typeof XMLHttpRequest !== 'undefined' &&\n 'withCredentials' in new XMLHttpRequest();\n}\ncatch (err) {\n // if XMLHttp support is disabled in IE then it will throw\n // when trying to create\n}\nexport const hasCORS = value;\n","// browser shim for xmlhttprequest module\nimport { hasCORS } from \"../contrib/has-cors.js\";\nimport { globalThisShim as globalThis } from \"../globalThis.js\";\nexport function XHR(opts) {\n const xdomain = opts.xdomain;\n // XMLHttpRequest can be disabled on IE\n try {\n if (\"undefined\" !== typeof XMLHttpRequest && (!xdomain || hasCORS)) {\n return new XMLHttpRequest();\n }\n }\n catch (e) { }\n if (!xdomain) {\n try {\n return new globalThis[[\"Active\"].concat(\"Object\").join(\"X\")](\"Microsoft.XMLHTTP\");\n }\n catch (e) { }\n }\n}\n","import { Transport } from \"../transport.js\";\nimport { yeast } from \"../contrib/yeast.js\";\nimport { encode } from \"../contrib/parseqs.js\";\nimport { encodePayload, decodePayload } from \"engine.io-parser\";\nimport { XHR as XMLHttpRequest } from \"./xmlhttprequest.js\";\nimport { Emitter } from \"@socket.io/component-emitter\";\nimport { installTimerFunctions, pick } from \"../util.js\";\nimport { globalThisShim as globalThis } from \"../globalThis.js\";\nfunction empty() { }\nconst hasXHR2 = (function () {\n const xhr = new XMLHttpRequest({\n xdomain: false,\n });\n return null != xhr.responseType;\n})();\nexport class Polling extends Transport {\n /**\n * XHR Polling constructor.\n *\n * @param {Object} opts\n * @package\n */\n constructor(opts) {\n super(opts);\n this.polling = false;\n if (typeof location !== \"undefined\") {\n const isSSL = \"https:\" === location.protocol;\n let port = location.port;\n // some user agents have empty `location.port`\n if (!port) {\n port = isSSL ? \"443\" : \"80\";\n }\n this.xd =\n (typeof location !== \"undefined\" &&\n opts.hostname !== location.hostname) ||\n port !== opts.port;\n this.xs = opts.secure !== isSSL;\n }\n /**\n * XHR supports binary\n */\n const forceBase64 = opts && opts.forceBase64;\n this.supportsBinary = hasXHR2 && !forceBase64;\n }\n get name() {\n return \"polling\";\n }\n /**\n * Opens the socket (triggers polling). We write a PING message to determine\n * when the transport is open.\n *\n * @protected\n */\n doOpen() {\n this.poll();\n }\n /**\n * Pauses polling.\n *\n * @param {Function} onPause - callback upon buffers are flushed and transport is paused\n * @package\n */\n pause(onPause) {\n this.readyState = \"pausing\";\n const pause = () => {\n this.readyState = \"paused\";\n onPause();\n };\n if (this.polling || !this.writable) {\n let total = 0;\n if (this.polling) {\n total++;\n this.once(\"pollComplete\", function () {\n --total || pause();\n });\n }\n if (!this.writable) {\n total++;\n this.once(\"drain\", function () {\n --total || pause();\n });\n }\n }\n else {\n pause();\n }\n }\n /**\n * Starts polling cycle.\n *\n * @private\n */\n poll() {\n this.polling = true;\n this.doPoll();\n this.emitReserved(\"poll\");\n }\n /**\n * Overloads onData to detect payloads.\n *\n * @protected\n */\n onData(data) {\n const callback = (packet) => {\n // if its the first message we consider the transport open\n if (\"opening\" === this.readyState && packet.type === \"open\") {\n this.onOpen();\n }\n // if its a close packet, we close the ongoing requests\n if (\"close\" === packet.type) {\n this.onClose({ description: \"transport closed by the server\" });\n return false;\n }\n // otherwise bypass onData and handle the message\n this.onPacket(packet);\n };\n // decode payload\n decodePayload(data, this.socket.binaryType).forEach(callback);\n // if an event did not trigger closing\n if (\"closed\" !== this.readyState) {\n // if we got data we're not polling\n this.polling = false;\n this.emitReserved(\"pollComplete\");\n if (\"open\" === this.readyState) {\n this.poll();\n }\n else {\n }\n }\n }\n /**\n * For polling, send a close packet.\n *\n * @protected\n */\n doClose() {\n const close = () => {\n this.write([{ type: \"close\" }]);\n };\n if (\"open\" === this.readyState) {\n close();\n }\n else {\n // in case we're trying to close while\n // handshaking is in progress (GH-164)\n this.once(\"open\", close);\n }\n }\n /**\n * Writes a packets payload.\n *\n * @param {Array} packets - data packets\n * @protected\n */\n write(packets) {\n this.writable = false;\n encodePayload(packets, (data) => {\n this.doWrite(data, () => {\n this.writable = true;\n this.emitReserved(\"drain\");\n });\n });\n }\n /**\n * Generates uri for connection.\n *\n * @private\n */\n uri() {\n let query = this.query || {};\n const schema = this.opts.secure ? \"https\" : \"http\";\n let port = \"\";\n // cache busting is forced\n if (false !== this.opts.timestampRequests) {\n query[this.opts.timestampParam] = yeast();\n }\n if (!this.supportsBinary && !query.sid) {\n query.b64 = 1;\n }\n // avoid port if default for schema\n if (this.opts.port &&\n ((\"https\" === schema && Number(this.opts.port) !== 443) ||\n (\"http\" === schema && Number(this.opts.port) !== 80))) {\n port = \":\" + this.opts.port;\n }\n const encodedQuery = encode(query);\n const ipv6 = this.opts.hostname.indexOf(\":\") !== -1;\n return (schema +\n \"://\" +\n (ipv6 ? \"[\" + this.opts.hostname + \"]\" : this.opts.hostname) +\n port +\n this.opts.path +\n (encodedQuery.length ? \"?\" + encodedQuery : \"\"));\n }\n /**\n * Creates a request.\n *\n * @param {String} method\n * @private\n */\n request(opts = {}) {\n Object.assign(opts, { xd: this.xd, xs: this.xs }, this.opts);\n return new Request(this.uri(), opts);\n }\n /**\n * Sends data.\n *\n * @param {String} data to send.\n * @param {Function} called upon flush.\n * @private\n */\n doWrite(data, fn) {\n const req = this.request({\n method: \"POST\",\n data: data,\n });\n req.on(\"success\", fn);\n req.on(\"error\", (xhrStatus, context) => {\n this.onError(\"xhr post error\", xhrStatus, context);\n });\n }\n /**\n * Starts a poll cycle.\n *\n * @private\n */\n doPoll() {\n const req = this.request();\n req.on(\"data\", this.onData.bind(this));\n req.on(\"error\", (xhrStatus, context) => {\n this.onError(\"xhr poll error\", xhrStatus, context);\n });\n this.pollXhr = req;\n }\n}\nexport class Request extends Emitter {\n /**\n * Request constructor\n *\n * @param {Object} options\n * @package\n */\n constructor(uri, opts) {\n super();\n installTimerFunctions(this, opts);\n this.opts = opts;\n this.method = opts.method || \"GET\";\n this.uri = uri;\n this.async = false !== opts.async;\n this.data = undefined !== opts.data ? opts.data : null;\n this.create();\n }\n /**\n * Creates the XHR object and sends the request.\n *\n * @private\n */\n create() {\n const opts = pick(this.opts, \"agent\", \"pfx\", \"key\", \"passphrase\", \"cert\", \"ca\", \"ciphers\", \"rejectUnauthorized\", \"autoUnref\");\n opts.xdomain = !!this.opts.xd;\n opts.xscheme = !!this.opts.xs;\n const xhr = (this.xhr = new XMLHttpRequest(opts));\n try {\n xhr.open(this.method, this.uri, this.async);\n try {\n if (this.opts.extraHeaders) {\n xhr.setDisableHeaderCheck && xhr.setDisableHeaderCheck(true);\n for (let i in this.opts.extraHeaders) {\n if (this.opts.extraHeaders.hasOwnProperty(i)) {\n xhr.setRequestHeader(i, this.opts.extraHeaders[i]);\n }\n }\n }\n }\n catch (e) { }\n if (\"POST\" === this.method) {\n try {\n xhr.setRequestHeader(\"Content-type\", \"text/plain;charset=UTF-8\");\n }\n catch (e) { }\n }\n try {\n xhr.setRequestHeader(\"Accept\", \"*/*\");\n }\n catch (e) { }\n // ie6 check\n if (\"withCredentials\" in xhr) {\n xhr.withCredentials = this.opts.withCredentials;\n }\n if (this.opts.requestTimeout) {\n xhr.timeout = this.opts.requestTimeout;\n }\n xhr.onreadystatechange = () => {\n if (4 !== xhr.readyState)\n return;\n if (200 === xhr.status || 1223 === xhr.status) {\n this.onLoad();\n }\n else {\n // make sure the `error` event handler that's user-set\n // does not throw in the same tick and gets caught here\n this.setTimeoutFn(() => {\n this.onError(typeof xhr.status === \"number\" ? xhr.status : 0);\n }, 0);\n }\n };\n xhr.send(this.data);\n }\n catch (e) {\n // Need to defer since .create() is called directly from the constructor\n // and thus the 'error' event can only be only bound *after* this exception\n // occurs. Therefore, also, we cannot throw here at all.\n this.setTimeoutFn(() => {\n this.onError(e);\n }, 0);\n return;\n }\n if (typeof document !== \"undefined\") {\n this.index = Request.requestsCount++;\n Request.requests[this.index] = this;\n }\n }\n /**\n * Called upon error.\n *\n * @private\n */\n onError(err) {\n this.emitReserved(\"error\", err, this.xhr);\n this.cleanup(true);\n }\n /**\n * Cleans up house.\n *\n * @private\n */\n cleanup(fromError) {\n if (\"undefined\" === typeof this.xhr || null === this.xhr) {\n return;\n }\n this.xhr.onreadystatechange = empty;\n if (fromError) {\n try {\n this.xhr.abort();\n }\n catch (e) { }\n }\n if (typeof document !== \"undefined\") {\n delete Request.requests[this.index];\n }\n this.xhr = null;\n }\n /**\n * Called upon load.\n *\n * @private\n */\n onLoad() {\n const data = this.xhr.responseText;\n if (data !== null) {\n this.emitReserved(\"data\", data);\n this.emitReserved(\"success\");\n this.cleanup();\n }\n }\n /**\n * Aborts the request.\n *\n * @package\n */\n abort() {\n this.cleanup();\n }\n}\nRequest.requestsCount = 0;\nRequest.requests = {};\n/**\n * Aborts pending requests when unloading the window. This is needed to prevent\n * memory leaks (e.g. when using IE) and to ensure that no spurious error is\n * emitted.\n */\nif (typeof document !== \"undefined\") {\n // @ts-ignore\n if (typeof attachEvent === \"function\") {\n // @ts-ignore\n attachEvent(\"onunload\", unloadHandler);\n }\n else if (typeof addEventListener === \"function\") {\n const terminationEvent = \"onpagehide\" in globalThis ? \"pagehide\" : \"unload\";\n addEventListener(terminationEvent, unloadHandler, false);\n }\n}\nfunction unloadHandler() {\n for (let i in Request.requests) {\n if (Request.requests.hasOwnProperty(i)) {\n Request.requests[i].abort();\n }\n }\n}\n","import { globalThisShim as globalThis } from \"../globalThis.js\";\nexport const nextTick = (() => {\n const isPromiseAvailable = typeof Promise === \"function\" && typeof Promise.resolve === \"function\";\n if (isPromiseAvailable) {\n return (cb) => Promise.resolve().then(cb);\n }\n else {\n return (cb, setTimeoutFn) => setTimeoutFn(cb, 0);\n }\n})();\nexport const WebSocket = globalThis.WebSocket || globalThis.MozWebSocket;\nexport const usingBrowserWebSocket = true;\nexport const defaultBinaryType = \"arraybuffer\";\n","import { Transport } from \"../transport.js\";\nimport { encode } from \"../contrib/parseqs.js\";\nimport { yeast } from \"../contrib/yeast.js\";\nimport { pick } from \"../util.js\";\nimport { defaultBinaryType, nextTick, usingBrowserWebSocket, WebSocket, } from \"./websocket-constructor.js\";\nimport { encodePacket } from \"engine.io-parser\";\n// detect ReactNative environment\nconst isReactNative = typeof navigator !== \"undefined\" &&\n typeof navigator.product === \"string\" &&\n navigator.product.toLowerCase() === \"reactnative\";\nexport class WS extends Transport {\n /**\n * WebSocket transport constructor.\n *\n * @param {Object} opts - connection options\n * @protected\n */\n constructor(opts) {\n super(opts);\n this.supportsBinary = !opts.forceBase64;\n }\n get name() {\n return \"websocket\";\n }\n doOpen() {\n if (!this.check()) {\n // let probe timeout\n return;\n }\n const uri = this.uri();\n const protocols = this.opts.protocols;\n // React Native only supports the 'headers' option, and will print a warning if anything else is passed\n const opts = isReactNative\n ? {}\n : pick(this.opts, \"agent\", \"perMessageDeflate\", \"pfx\", \"key\", \"passphrase\", \"cert\", \"ca\", \"ciphers\", \"rejectUnauthorized\", \"localAddress\", \"protocolVersion\", \"origin\", \"maxPayload\", \"family\", \"checkServerIdentity\");\n if (this.opts.extraHeaders) {\n opts.headers = this.opts.extraHeaders;\n }\n try {\n this.ws =\n usingBrowserWebSocket && !isReactNative\n ? protocols\n ? new WebSocket(uri, protocols)\n : new WebSocket(uri)\n : new WebSocket(uri, protocols, opts);\n }\n catch (err) {\n return this.emitReserved(\"error\", err);\n }\n this.ws.binaryType = this.socket.binaryType || defaultBinaryType;\n this.addEventListeners();\n }\n /**\n * Adds event listeners to the socket\n *\n * @private\n */\n addEventListeners() {\n this.ws.onopen = () => {\n if (this.opts.autoUnref) {\n this.ws._socket.unref();\n }\n this.onOpen();\n };\n this.ws.onclose = (closeEvent) => this.onClose({\n description: \"websocket connection closed\",\n context: closeEvent,\n });\n this.ws.onmessage = (ev) => this.onData(ev.data);\n this.ws.onerror = (e) => this.onError(\"websocket error\", e);\n }\n write(packets) {\n this.writable = false;\n // encodePacket efficient as it uses WS framing\n // no need for encodePayload\n for (let i = 0; i < packets.length; i++) {\n const packet = packets[i];\n const lastPacket = i === packets.length - 1;\n encodePacket(packet, this.supportsBinary, (data) => {\n // always create a new object (GH-437)\n const opts = {};\n if (!usingBrowserWebSocket) {\n if (packet.options) {\n opts.compress = packet.options.compress;\n }\n if (this.opts.perMessageDeflate) {\n const len = \n // @ts-ignore\n \"string\" === typeof data ? Buffer.byteLength(data) : data.length;\n if (len < this.opts.perMessageDeflate.threshold) {\n opts.compress = false;\n }\n }\n }\n // Sometimes the websocket has already been closed but the browser didn't\n // have a chance of informing us about it yet, in that case send will\n // throw an error\n try {\n if (usingBrowserWebSocket) {\n // TypeError is thrown when passing the second argument on Safari\n this.ws.send(data);\n }\n else {\n this.ws.send(data, opts);\n }\n }\n catch (e) {\n }\n if (lastPacket) {\n // fake drain\n // defer to next tick to allow Socket to clear writeBuffer\n nextTick(() => {\n this.writable = true;\n this.emitReserved(\"drain\");\n }, this.setTimeoutFn);\n }\n });\n }\n }\n doClose() {\n if (typeof this.ws !== \"undefined\") {\n this.ws.close();\n this.ws = null;\n }\n }\n /**\n * Generates uri for connection.\n *\n * @private\n */\n uri() {\n let query = this.query || {};\n const schema = this.opts.secure ? \"wss\" : \"ws\";\n let port = \"\";\n // avoid port if default for schema\n if (this.opts.port &&\n ((\"wss\" === schema && Number(this.opts.port) !== 443) ||\n (\"ws\" === schema && Number(this.opts.port) !== 80))) {\n port = \":\" + this.opts.port;\n }\n // append timestamp to URI\n if (this.opts.timestampRequests) {\n query[this.opts.timestampParam] = yeast();\n }\n // communicate binary support capabilities\n if (!this.supportsBinary) {\n query.b64 = 1;\n }\n const encodedQuery = encode(query);\n const ipv6 = this.opts.hostname.indexOf(\":\") !== -1;\n return (schema +\n \"://\" +\n (ipv6 ? \"[\" + this.opts.hostname + \"]\" : this.opts.hostname) +\n port +\n this.opts.path +\n (encodedQuery.length ? \"?\" + encodedQuery : \"\"));\n }\n /**\n * Feature detection for WebSocket.\n *\n * @return {Boolean} whether this transport is available.\n * @private\n */\n check() {\n return !!WebSocket;\n }\n}\n","import { Polling } from \"./polling.js\";\nimport { WS } from \"./websocket.js\";\nexport const transports = {\n websocket: WS,\n polling: Polling,\n};\n","// imported from https://github.com/galkn/parseuri\n/**\n * Parses a URI\n *\n * Note: we could also have used the built-in URL object, but it isn't supported on all platforms.\n *\n * See:\n * - https://developer.mozilla.org/en-US/docs/Web/API/URL\n * - https://caniuse.com/url\n * - https://www.rfc-editor.org/rfc/rfc3986#appendix-B\n *\n * History of the parse() method:\n * - first commit: https://github.com/socketio/socket.io-client/commit/4ee1d5d94b3906a9c052b459f1a818b15f38f91c\n * - export into its own module: https://github.com/socketio/engine.io-client/commit/de2c561e4564efeb78f1bdb1ba39ef81b2822cb3\n * - reimport: https://github.com/socketio/engine.io-client/commit/df32277c3f6d622eec5ed09f493cae3f3391d242\n *\n * @author Steven Levithan (MIT license)\n * @api private\n */\nconst re = /^(?:(?![^:@\\/?#]+:[^:@\\/]*@)(http|https|ws|wss):\\/\\/)?((?:(([^:@\\/?#]*)(?::([^:@\\/?#]*))?)?@)?((?:[a-f0-9]{0,4}:){2,7}[a-f0-9]{0,4}|[^:\\/?#]*)(?::(\\d*))?)(((\\/(?:[^?#](?![^?#\\/]*\\.[^?#\\/.]+(?:[?#]|$)))*\\/?)?([^?#\\/]*))(?:\\?([^#]*))?(?:#(.*))?)/;\nconst parts = [\n 'source', 'protocol', 'authority', 'userInfo', 'user', 'password', 'host', 'port', 'relative', 'path', 'directory', 'file', 'query', 'anchor'\n];\nexport function parse(str) {\n const src = str, b = str.indexOf('['), e = str.indexOf(']');\n if (b != -1 && e != -1) {\n str = str.substring(0, b) + str.substring(b, e).replace(/:/g, ';') + str.substring(e, str.length);\n }\n let m = re.exec(str || ''), uri = {}, i = 14;\n while (i--) {\n uri[parts[i]] = m[i] || '';\n }\n if (b != -1 && e != -1) {\n uri.source = src;\n uri.host = uri.host.substring(1, uri.host.length - 1).replace(/;/g, ':');\n uri.authority = uri.authority.replace('[', '').replace(']', '').replace(/;/g, ':');\n uri.ipv6uri = true;\n }\n uri.pathNames = pathNames(uri, uri['path']);\n uri.queryKey = queryKey(uri, uri['query']);\n return uri;\n}\nfunction pathNames(obj, path) {\n const regx = /\\/{2,9}/g, names = path.replace(regx, \"/\").split(\"/\");\n if (path.slice(0, 1) == '/' || path.length === 0) {\n names.splice(0, 1);\n }\n if (path.slice(-1) == '/') {\n names.splice(names.length - 1, 1);\n }\n return names;\n}\nfunction queryKey(uri, query) {\n const data = {};\n query.replace(/(?:^|&)([^&=]*)=?([^&]*)/g, function ($0, $1, $2) {\n if ($1) {\n data[$1] = $2;\n }\n });\n return data;\n}\n","import { transports } from \"./transports/index.js\";\nimport { installTimerFunctions, byteLength } from \"./util.js\";\nimport { decode } from \"./contrib/parseqs.js\";\nimport { parse } from \"./contrib/parseuri.js\";\nimport { Emitter } from \"@socket.io/component-emitter\";\nimport { protocol } from \"engine.io-parser\";\nexport class Socket extends Emitter {\n /**\n * Socket constructor.\n *\n * @param {String|Object} uri - uri or options\n * @param {Object} opts - options\n */\n constructor(uri, opts = {}) {\n super();\n this.writeBuffer = [];\n if (uri && \"object\" === typeof uri) {\n opts = uri;\n uri = null;\n }\n if (uri) {\n uri = parse(uri);\n opts.hostname = uri.host;\n opts.secure = uri.protocol === \"https\" || uri.protocol === \"wss\";\n opts.port = uri.port;\n if (uri.query)\n opts.query = uri.query;\n }\n else if (opts.host) {\n opts.hostname = parse(opts.host).host;\n }\n installTimerFunctions(this, opts);\n this.secure =\n null != opts.secure\n ? opts.secure\n : typeof location !== \"undefined\" && \"https:\" === location.protocol;\n if (opts.hostname && !opts.port) {\n // if no port is specified manually, use the protocol default\n opts.port = this.secure ? \"443\" : \"80\";\n }\n this.hostname =\n opts.hostname ||\n (typeof location !== \"undefined\" ? location.hostname : \"localhost\");\n this.port =\n opts.port ||\n (typeof location !== \"undefined\" && location.port\n ? location.port\n : this.secure\n ? \"443\"\n : \"80\");\n this.transports = opts.transports || [\"polling\", \"websocket\"];\n this.writeBuffer = [];\n this.prevBufferLen = 0;\n this.opts = Object.assign({\n path: \"/engine.io\",\n agent: false,\n withCredentials: false,\n upgrade: true,\n timestampParam: \"t\",\n rememberUpgrade: false,\n addTrailingSlash: true,\n rejectUnauthorized: true,\n perMessageDeflate: {\n threshold: 1024,\n },\n transportOptions: {},\n closeOnBeforeunload: true,\n }, opts);\n this.opts.path =\n this.opts.path.replace(/\\/$/, \"\") +\n (this.opts.addTrailingSlash ? \"/\" : \"\");\n if (typeof this.opts.query === \"string\") {\n this.opts.query = decode(this.opts.query);\n }\n // set on handshake\n this.id = null;\n this.upgrades = null;\n this.pingInterval = null;\n this.pingTimeout = null;\n // set on heartbeat\n this.pingTimeoutTimer = null;\n if (typeof addEventListener === \"function\") {\n if (this.opts.closeOnBeforeunload) {\n // Firefox closes the connection when the \"beforeunload\" event is emitted but not Chrome. This event listener\n // ensures every browser behaves the same (no \"disconnect\" event at the Socket.IO level when the page is\n // closed/reloaded)\n this.beforeunloadEventListener = () => {\n if (this.transport) {\n // silently close the transport\n this.transport.removeAllListeners();\n this.transport.close();\n }\n };\n addEventListener(\"beforeunload\", this.beforeunloadEventListener, false);\n }\n if (this.hostname !== \"localhost\") {\n this.offlineEventListener = () => {\n this.onClose(\"transport close\", {\n description: \"network connection lost\",\n });\n };\n addEventListener(\"offline\", this.offlineEventListener, false);\n }\n }\n this.open();\n }\n /**\n * Creates transport of the given type.\n *\n * @param {String} name - transport name\n * @return {Transport}\n * @private\n */\n createTransport(name) {\n const query = Object.assign({}, this.opts.query);\n // append engine.io protocol identifier\n query.EIO = protocol;\n // transport name\n query.transport = name;\n // session id if we already have one\n if (this.id)\n query.sid = this.id;\n const opts = Object.assign({}, this.opts.transportOptions[name], this.opts, {\n query,\n socket: this,\n hostname: this.hostname,\n secure: this.secure,\n port: this.port,\n });\n return new transports[name](opts);\n }\n /**\n * Initializes transport to use and starts probe.\n *\n * @private\n */\n open() {\n let transport;\n if (this.opts.rememberUpgrade &&\n Socket.priorWebsocketSuccess &&\n this.transports.indexOf(\"websocket\") !== -1) {\n transport = \"websocket\";\n }\n else if (0 === this.transports.length) {\n // Emit error on next tick so it can be listened to\n this.setTimeoutFn(() => {\n this.emitReserved(\"error\", \"No transports available\");\n }, 0);\n return;\n }\n else {\n transport = this.transports[0];\n }\n this.readyState = \"opening\";\n // Retry with the next transport if the transport is disabled (jsonp: false)\n try {\n transport = this.createTransport(transport);\n }\n catch (e) {\n this.transports.shift();\n this.open();\n return;\n }\n transport.open();\n this.setTransport(transport);\n }\n /**\n * Sets the current transport. Disables the existing one (if any).\n *\n * @private\n */\n setTransport(transport) {\n if (this.transport) {\n this.transport.removeAllListeners();\n }\n // set up transport\n this.transport = transport;\n // set up transport listeners\n transport\n .on(\"drain\", this.onDrain.bind(this))\n .on(\"packet\", this.onPacket.bind(this))\n .on(\"error\", this.onError.bind(this))\n .on(\"close\", (reason) => this.onClose(\"transport close\", reason));\n }\n /**\n * Probes a transport.\n *\n * @param {String} name - transport name\n * @private\n */\n probe(name) {\n let transport = this.createTransport(name);\n let failed = false;\n Socket.priorWebsocketSuccess = false;\n const onTransportOpen = () => {\n if (failed)\n return;\n transport.send([{ type: \"ping\", data: \"probe\" }]);\n transport.once(\"packet\", (msg) => {\n if (failed)\n return;\n if (\"pong\" === msg.type && \"probe\" === msg.data) {\n this.upgrading = true;\n this.emitReserved(\"upgrading\", transport);\n if (!transport)\n return;\n Socket.priorWebsocketSuccess = \"websocket\" === transport.name;\n this.transport.pause(() => {\n if (failed)\n return;\n if (\"closed\" === this.readyState)\n return;\n cleanup();\n this.setTransport(transport);\n transport.send([{ type: \"upgrade\" }]);\n this.emitReserved(\"upgrade\", transport);\n transport = null;\n this.upgrading = false;\n this.flush();\n });\n }\n else {\n const err = new Error(\"probe error\");\n // @ts-ignore\n err.transport = transport.name;\n this.emitReserved(\"upgradeError\", err);\n }\n });\n };\n function freezeTransport() {\n if (failed)\n return;\n // Any callback called by transport should be ignored since now\n failed = true;\n cleanup();\n transport.close();\n transport = null;\n }\n // Handle any error that happens while probing\n const onerror = (err) => {\n const error = new Error(\"probe error: \" + err);\n // @ts-ignore\n error.transport = transport.name;\n freezeTransport();\n this.emitReserved(\"upgradeError\", error);\n };\n function onTransportClose() {\n onerror(\"transport closed\");\n }\n // When the socket is closed while we're probing\n function onclose() {\n onerror(\"socket closed\");\n }\n // When the socket is upgraded while we're probing\n function onupgrade(to) {\n if (transport && to.name !== transport.name) {\n freezeTransport();\n }\n }\n // Remove all listeners on the transport and on self\n const cleanup = () => {\n transport.removeListener(\"open\", onTransportOpen);\n transport.removeListener(\"error\", onerror);\n transport.removeListener(\"close\", onTransportClose);\n this.off(\"close\", onclose);\n this.off(\"upgrading\", onupgrade);\n };\n transport.once(\"open\", onTransportOpen);\n transport.once(\"error\", onerror);\n transport.once(\"close\", onTransportClose);\n this.once(\"close\", onclose);\n this.once(\"upgrading\", onupgrade);\n transport.open();\n }\n /**\n * Called when connection is deemed open.\n *\n * @private\n */\n onOpen() {\n this.readyState = \"open\";\n Socket.priorWebsocketSuccess = \"websocket\" === this.transport.name;\n this.emitReserved(\"open\");\n this.flush();\n // we check for `readyState` in case an `open`\n // listener already closed the socket\n if (\"open\" === this.readyState && this.opts.upgrade) {\n let i = 0;\n const l = this.upgrades.length;\n for (; i < l; i++) {\n this.probe(this.upgrades[i]);\n }\n }\n }\n /**\n * Handles a packet.\n *\n * @private\n */\n onPacket(packet) {\n if (\"opening\" === this.readyState ||\n \"open\" === this.readyState ||\n \"closing\" === this.readyState) {\n this.emitReserved(\"packet\", packet);\n // Socket is live - any packet counts\n this.emitReserved(\"heartbeat\");\n switch (packet.type) {\n case \"open\":\n this.onHandshake(JSON.parse(packet.data));\n break;\n case \"ping\":\n this.resetPingTimeout();\n this.sendPacket(\"pong\");\n this.emitReserved(\"ping\");\n this.emitReserved(\"pong\");\n break;\n case \"error\":\n const err = new Error(\"server error\");\n // @ts-ignore\n err.code = packet.data;\n this.onError(err);\n break;\n case \"message\":\n this.emitReserved(\"data\", packet.data);\n this.emitReserved(\"message\", packet.data);\n break;\n }\n }\n else {\n }\n }\n /**\n * Called upon handshake completion.\n *\n * @param {Object} data - handshake obj\n * @private\n */\n onHandshake(data) {\n this.emitReserved(\"handshake\", data);\n this.id = data.sid;\n this.transport.query.sid = data.sid;\n this.upgrades = this.filterUpgrades(data.upgrades);\n this.pingInterval = data.pingInterval;\n this.pingTimeout = data.pingTimeout;\n this.maxPayload = data.maxPayload;\n this.onOpen();\n // In case open handler closes socket\n if (\"closed\" === this.readyState)\n return;\n this.resetPingTimeout();\n }\n /**\n * Sets and resets ping timeout timer based on server pings.\n *\n * @private\n */\n resetPingTimeout() {\n this.clearTimeoutFn(this.pingTimeoutTimer);\n this.pingTimeoutTimer = this.setTimeoutFn(() => {\n this.onClose(\"ping timeout\");\n }, this.pingInterval + this.pingTimeout);\n if (this.opts.autoUnref) {\n this.pingTimeoutTimer.unref();\n }\n }\n /**\n * Called on `drain` event\n *\n * @private\n */\n onDrain() {\n this.writeBuffer.splice(0, this.prevBufferLen);\n // setting prevBufferLen = 0 is very important\n // for example, when upgrading, upgrade packet is sent over,\n // and a nonzero prevBufferLen could cause problems on `drain`\n this.prevBufferLen = 0;\n if (0 === this.writeBuffer.length) {\n this.emitReserved(\"drain\");\n }\n else {\n this.flush();\n }\n }\n /**\n * Flush write buffers.\n *\n * @private\n */\n flush() {\n if (\"closed\" !== this.readyState &&\n this.transport.writable &&\n !this.upgrading &&\n this.writeBuffer.length) {\n const packets = this.getWritablePackets();\n this.transport.send(packets);\n // keep track of current length of writeBuffer\n // splice writeBuffer and callbackBuffer on `drain`\n this.prevBufferLen = packets.length;\n this.emitReserved(\"flush\");\n }\n }\n /**\n * Ensure the encoded size of the writeBuffer is below the maxPayload value sent by the server (only for HTTP\n * long-polling)\n *\n * @private\n */\n getWritablePackets() {\n const shouldCheckPayloadSize = this.maxPayload &&\n this.transport.name === \"polling\" &&\n this.writeBuffer.length > 1;\n if (!shouldCheckPayloadSize) {\n return this.writeBuffer;\n }\n let payloadSize = 1; // first packet type\n for (let i = 0; i < this.writeBuffer.length; i++) {\n const data = this.writeBuffer[i].data;\n if (data) {\n payloadSize += byteLength(data);\n }\n if (i > 0 && payloadSize > this.maxPayload) {\n return this.writeBuffer.slice(0, i);\n }\n payloadSize += 2; // separator + packet type\n }\n return this.writeBuffer;\n }\n /**\n * Sends a message.\n *\n * @param {String} msg - message.\n * @param {Object} options.\n * @param {Function} callback function.\n * @return {Socket} for chaining.\n */\n write(msg, options, fn) {\n this.sendPacket(\"message\", msg, options, fn);\n return this;\n }\n send(msg, options, fn) {\n this.sendPacket(\"message\", msg, options, fn);\n return this;\n }\n /**\n * Sends a packet.\n *\n * @param {String} type: packet type.\n * @param {String} data.\n * @param {Object} options.\n * @param {Function} fn - callback function.\n * @private\n */\n sendPacket(type, data, options, fn) {\n if (\"function\" === typeof data) {\n fn = data;\n data = undefined;\n }\n if (\"function\" === typeof options) {\n fn = options;\n options = null;\n }\n if (\"closing\" === this.readyState || \"closed\" === this.readyState) {\n return;\n }\n options = options || {};\n options.compress = false !== options.compress;\n const packet = {\n type: type,\n data: data,\n options: options,\n };\n this.emitReserved(\"packetCreate\", packet);\n this.writeBuffer.push(packet);\n if (fn)\n this.once(\"flush\", fn);\n this.flush();\n }\n /**\n * Closes the connection.\n */\n close() {\n const close = () => {\n this.onClose(\"forced close\");\n this.transport.close();\n };\n const cleanupAndClose = () => {\n this.off(\"upgrade\", cleanupAndClose);\n this.off(\"upgradeError\", cleanupAndClose);\n close();\n };\n const waitForUpgrade = () => {\n // wait for upgrade to finish since we can't send packets while pausing a transport\n this.once(\"upgrade\", cleanupAndClose);\n this.once(\"upgradeError\", cleanupAndClose);\n };\n if (\"opening\" === this.readyState || \"open\" === this.readyState) {\n this.readyState = \"closing\";\n if (this.writeBuffer.length) {\n this.once(\"drain\", () => {\n if (this.upgrading) {\n waitForUpgrade();\n }\n else {\n close();\n }\n });\n }\n else if (this.upgrading) {\n waitForUpgrade();\n }\n else {\n close();\n }\n }\n return this;\n }\n /**\n * Called upon transport error\n *\n * @private\n */\n onError(err) {\n Socket.priorWebsocketSuccess = false;\n this.emitReserved(\"error\", err);\n this.onClose(\"transport error\", err);\n }\n /**\n * Called upon transport close.\n *\n * @private\n */\n onClose(reason, description) {\n if (\"opening\" === this.readyState ||\n \"open\" === this.readyState ||\n \"closing\" === this.readyState) {\n // clear timers\n this.clearTimeoutFn(this.pingTimeoutTimer);\n // stop event from firing again for transport\n this.transport.removeAllListeners(\"close\");\n // ensure transport won't stay open\n this.transport.close();\n // ignore further transport communication\n this.transport.removeAllListeners();\n if (typeof removeEventListener === \"function\") {\n removeEventListener(\"beforeunload\", this.beforeunloadEventListener, false);\n removeEventListener(\"offline\", this.offlineEventListener, false);\n }\n // set ready state\n this.readyState = \"closed\";\n // clear session id\n this.id = null;\n // emit close event\n this.emitReserved(\"close\", reason, description);\n // clean buffers after, so users can still\n // grab the buffers on `close` event\n this.writeBuffer = [];\n this.prevBufferLen = 0;\n }\n }\n /**\n * Filters upgrades, returning only those matching client transports.\n *\n * @param {Array} upgrades - server upgrades\n * @private\n */\n filterUpgrades(upgrades) {\n const filteredUpgrades = [];\n let i = 0;\n const j = upgrades.length;\n for (; i < j; i++) {\n if (~this.transports.indexOf(upgrades[i]))\n filteredUpgrades.push(upgrades[i]);\n }\n return filteredUpgrades;\n }\n}\nSocket.protocol = protocol;\n","import { Socket } from \"./socket.js\";\nexport { Socket };\nexport const protocol = Socket.protocol;\nexport { Transport } from \"./transport.js\";\nexport { transports } from \"./transports/index.js\";\nexport { installTimerFunctions } from \"./util.js\";\nexport { parse } from \"./contrib/parseuri.js\";\nexport { nextTick } from \"./transports/websocket-constructor.js\";\n","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 // emit `error`\n const errorSub = on(socket, \"error\", (err) => {\n self.cleanup();\n self._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 self.maybeReconnectOnOpen();\n }\n });\n if (false !== this._timeout) {\n const timeout = this._timeout;\n if (timeout === 0) {\n openSubDestroy(); // prevents a race condition with the 'open' event\n }\n // set timer\n const timer = this.setTimeoutFn(() => {\n openSubDestroy();\n socket.close();\n // @ts-ignore\n socket.emit(\"error\", new Error(\"timeout\"));\n }, timeout);\n if (this.opts.autoUnref) {\n timer.unref();\n }\n this.subs.push(function subDestroy() {\n clearTimeout(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(function subDestroy() {\n clearTimeout(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","chars","lookup","Uint8Array","i","length","charCodeAt","decode","base64","bufferLength","len","p","encoded1","encoded2","encoded3","encoded4","arraybuffer","bytes","decodePacket","encodedPacket","binaryType","mapBinary","charAt","decodeBase64Packet","substring","packetType","decoded","SEPARATOR","String","fromCharCode","encodePayload","packets","encodedPackets","Array","count","packet","join","decodePayload","encodedPayload","decodedPacket","push","protocol","Emitter","mixin","on","addEventListener","event","fn","_callbacks","once","off","apply","arguments","removeListener","removeAllListeners","removeEventListener","callbacks","cb","splice","emit","args","slice","emitReserved","listeners","hasListeners","globalThisShim","self","window","Function","pick","attr","reduce","acc","k","hasOwnProperty","NATIVE_SET_TIMEOUT","globalThis","setTimeout","NATIVE_CLEAR_TIMEOUT","clearTimeout","installTimerFunctions","opts","useNativeTimers","setTimeoutFn","bind","clearTimeoutFn","BASE64_OVERHEAD","byteLength","utf8Length","Math","ceil","size","str","c","l","TransportError","reason","description","context","Error","Transport","writable","query","socket","readyState","doOpen","doClose","onClose","write","onPacket","details","onPause","alphabet","map","seed","prev","encode","num","encoded","floor","yeast","now","Date","encodeURIComponent","qs","qry","pairs","pair","decodeURIComponent","value","XMLHttpRequest","err","hasCORS","XHR","xdomain","e","concat","empty","hasXHR2","xhr","responseType","Polling","polling","location","isSSL","port","xd","hostname","xs","secure","forceBase64","poll","pause","total","doPoll","onOpen","close","doWrite","schema","timestampRequests","timestampParam","sid","b64","Number","encodedQuery","ipv6","indexOf","path","Request","uri","req","request","method","xhrStatus","onError","onData","pollXhr","async","undefined","xscheme","open","extraHeaders","setDisableHeaderCheck","setRequestHeader","withCredentials","requestTimeout","timeout","onreadystatechange","status","onLoad","send","document","index","requestsCount","requests","cleanup","fromError","abort","responseText","attachEvent","unloadHandler","terminationEvent","nextTick","isPromiseAvailable","Promise","resolve","then","WebSocket","MozWebSocket","usingBrowserWebSocket","defaultBinaryType","isReactNative","navigator","product","toLowerCase","WS","check","protocols","headers","ws","addEventListeners","onopen","autoUnref","_socket","unref","onclose","closeEvent","onmessage","ev","onerror","lastPacket","transports","websocket","re","parts","parse","src","b","replace","m","exec","source","host","authority","ipv6uri","pathNames","queryKey","regx","names","$0","$1","$2","Socket","writeBuffer","prevBufferLen","agent","upgrade","rememberUpgrade","addTrailingSlash","rejectUnauthorized","perMessageDeflate","threshold","transportOptions","closeOnBeforeunload","id","upgrades","pingInterval","pingTimeout","pingTimeoutTimer","beforeunloadEventListener","transport","offlineEventListener","name","EIO","priorWebsocketSuccess","createTransport","shift","setTransport","onDrain","failed","onTransportOpen","msg","upgrading","flush","freezeTransport","error","onTransportClose","onupgrade","to","probe","onHandshake","JSON","resetPingTimeout","sendPacket","code","filterUpgrades","maxPayload","getWritablePackets","shouldCheckPayloadSize","payloadSize","options","compress","cleanupAndClose","waitForUpgrade","filteredUpgrades","j","url","loc","test","href","withNativeFile","File","isBinary","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","_a","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","errorSub","maybeReconnectOnOpen","onping","ondata","ondecoded","add","active","_close","delay","onreconnect","attempt","cache","parsed","newConnection","forceNew","multiplex"],"mappings":"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"} \ No newline at end of file +{"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 (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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"} \ No newline at end of file diff --git a/dist/socket.io.min.js b/dist/socket.io.min.js index c700ce7f..4bd0ea7a 100644 --- a/dist/socket.io.min.js +++ b/dist/socket.io.min.js @@ -1,7 +1,7 @@ /*! - * Socket.IO v4.6.2 + * Socket.IO v4.7.0 * (c) 2014-2023 Guillermo Rauch * Released under the MIT License. */ -!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t="undefined"!=typeof globalThis?globalThis:t||self).io=e()}(this,(function(){"use strict";function t(e){return t="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},t(e)}function e(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function n(t,e){for(var n=0;nt.length)&&(e=t.length);for(var n=0,r=new Array(e);n=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,s=!0,a=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return s=t.done,t},e:function(t){a=!0,o=t},f:function(){try{s||null==n.return||n.return()}finally{if(a)throw o}}}}var m=Object.create(null);m.open="0",m.close="1",m.ping="2",m.pong="3",m.message="4",m.upgrade="5",m.noop="6";var k=Object.create(null);Object.keys(m).forEach((function(t){k[m[t]]=t}));for(var b={type:"error",data:"parser error"},w="function"==typeof Blob||"undefined"!=typeof Blob&&"[object BlobConstructor]"===Object.prototype.toString.call(Blob),_="function"==typeof ArrayBuffer,O=function(t,e,n){var r,i=t.type,o=t.data;return w&&o instanceof Blob?e?n(o):E(o,n):_&&(o instanceof ArrayBuffer||(r=o,"function"==typeof ArrayBuffer.isView?ArrayBuffer.isView(r):r&&r.buffer instanceof ArrayBuffer))?e?n(o):E(new Blob([o]),n):n(m[i]+(o||""))},E=function(t,e){var n=new FileReader;return n.onload=function(){var t=n.result.split(",")[1];e("b"+t)},n.readAsDataURL(t)},A="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",R="undefined"==typeof Uint8Array?[]:new Uint8Array(256),T=0;T1?{type:k[n],data:t.substring(1)}:{type:k[n]}:b},S=function(t,e){if(C){var n=function(t){var e,n,r,i,o,s=.75*t.length,a=t.length,c=0;"="===t[t.length-1]&&(s--,"="===t[t.length-2]&&s--);var u=new ArrayBuffer(s),h=new Uint8Array(u);for(e=0;e>4,h[c++]=(15&r)<<4|i>>2,h[c++]=(3&i)<<6|63&o;return u}(t);return N(n,e)}return{base64:!0,data:t}},N=function(t,e){return"blob"===e&&t instanceof ArrayBuffer?new Blob([t]):t},x=String.fromCharCode(30);function L(t){if(t)return function(t){for(var e in L.prototype)t[e]=L.prototype[e];return t}(t)}L.prototype.on=L.prototype.addEventListener=function(t,e){return this._callbacks=this._callbacks||{},(this._callbacks["$"+t]=this._callbacks["$"+t]||[]).push(e),this},L.prototype.once=function(t,e){function n(){this.off(t,n),e.apply(this,arguments)}return n.fn=e,this.on(t,n),this},L.prototype.off=L.prototype.removeListener=L.prototype.removeAllListeners=L.prototype.removeEventListener=function(t,e){if(this._callbacks=this._callbacks||{},0==arguments.length)return this._callbacks={},this;var n,r=this._callbacks["$"+t];if(!r)return this;if(1==arguments.length)return delete this._callbacks["$"+t],this;for(var i=0;i1?e-1:0),r=1;r0);return e}function W(){var t=z(+new Date);return t!==F?(K=0,F=t):t+"."+z(K++)}for(;Y<64;Y++)H[V[Y]]=Y;function $(t){var e="";for(var n in t)t.hasOwnProperty(n)&&(e.length&&(e+="&"),e+=encodeURIComponent(n)+"="+encodeURIComponent(t[n]));return e}function J(t){for(var e={},n=t.split("&"),r=0,i=n.length;r0&&void 0!==arguments[0]?arguments[0]:{};return i(t,{xd:this.xd,xs:this.xs},this.opts),new nt(this.uri(),t)}},{key:"doWrite",value:function(t,e){var n=this,r=this.request({method:"POST",data:t});r.on("success",e),r.on("error",(function(t,e){n.onError("xhr post error",t,e)}))}},{key:"doPoll",value:function(){var t=this,e=this.request();e.on("data",this.onData.bind(this)),e.on("error",(function(e,n){t.onError("xhr poll error",e,n)})),this.pollXhr=e}}]),s}(U),nt=function(t){o(i,t);var n=p(i);function i(t,r){var o;return e(this,i),D(f(o=n.call(this)),r),o.opts=r,o.method=r.method||"GET",o.uri=t,o.async=!1!==r.async,o.data=void 0!==r.data?r.data:null,o.create(),o}return r(i,[{key:"create",value:function(){var t=this,e=j(this.opts,"agent","pfx","key","passphrase","cert","ca","ciphers","rejectUnauthorized","autoUnref");e.xdomain=!!this.opts.xd,e.xscheme=!!this.opts.xs;var n=this.xhr=new G(e);try{n.open(this.method,this.uri,this.async);try{if(this.opts.extraHeaders)for(var r in n.setDisableHeaderCheck&&n.setDisableHeaderCheck(!0),this.opts.extraHeaders)this.opts.extraHeaders.hasOwnProperty(r)&&n.setRequestHeader(r,this.opts.extraHeaders[r])}catch(t){}if("POST"===this.method)try{n.setRequestHeader("Content-type","text/plain;charset=UTF-8")}catch(t){}try{n.setRequestHeader("Accept","*/*")}catch(t){}"withCredentials"in n&&(n.withCredentials=this.opts.withCredentials),this.opts.requestTimeout&&(n.timeout=this.opts.requestTimeout),n.onreadystatechange=function(){4===n.readyState&&(200===n.status||1223===n.status?t.onLoad():t.setTimeoutFn((function(){t.onError("number"==typeof n.status?n.status:0)}),0))},n.send(this.data)}catch(e){return void this.setTimeoutFn((function(){t.onError(e)}),0)}"undefined"!=typeof document&&(this.index=i.requestsCount++,i.requests[this.index]=this)}},{key:"onError",value:function(t){this.emitReserved("error",t,this.xhr),this.cleanup(!0)}},{key:"cleanup",value:function(t){if(void 0!==this.xhr&&null!==this.xhr){if(this.xhr.onreadystatechange=Z,t)try{this.xhr.abort()}catch(t){}"undefined"!=typeof document&&delete i.requests[this.index],this.xhr=null}}},{key:"onLoad",value:function(){var t=this.xhr.responseText;null!==t&&(this.emitReserved("data",t),this.emitReserved("success"),this.cleanup())}},{key:"abort",value:function(){this.cleanup()}}]),i}(L);if(nt.requestsCount=0,nt.requests={},"undefined"!=typeof document)if("function"==typeof attachEvent)attachEvent("onunload",rt);else if("function"==typeof addEventListener){addEventListener("onpagehide"in P?"pagehide":"unload",rt,!1)}function rt(){for(var t in nt.requests)nt.requests.hasOwnProperty(t)&&nt.requests[t].abort()}var it="function"==typeof Promise&&"function"==typeof Promise.resolve?function(t){return Promise.resolve().then(t)}:function(t,e){return e(t,0)},ot=P.WebSocket||P.MozWebSocket,st="undefined"!=typeof navigator&&"string"==typeof navigator.product&&"reactnative"===navigator.product.toLowerCase(),at=function(t){o(i,t);var n=p(i);function i(t){var r;return e(this,i),(r=n.call(this,t)).supportsBinary=!t.forceBase64,r}return r(i,[{key:"name",get:function(){return"websocket"}},{key:"doOpen",value:function(){if(this.check()){var t=this.uri(),e=this.opts.protocols,n=st?{}:j(this.opts,"agent","perMessageDeflate","pfx","key","passphrase","cert","ca","ciphers","rejectUnauthorized","localAddress","protocolVersion","origin","maxPayload","family","checkServerIdentity");this.opts.extraHeaders&&(n.headers=this.opts.extraHeaders);try{this.ws=st?new ot(t,e,n):e?new ot(t,e):new ot(t)}catch(t){return this.emitReserved("error",t)}this.ws.binaryType=this.socket.binaryType||"arraybuffer",this.addEventListeners()}}},{key:"addEventListeners",value:function(){var t=this;this.ws.onopen=function(){t.opts.autoUnref&&t.ws._socket.unref(),t.onOpen()},this.ws.onclose=function(e){return t.onClose({description:"websocket connection closed",context:e})},this.ws.onmessage=function(e){return t.onData(e.data)},this.ws.onerror=function(e){return t.onError("websocket error",e)}}},{key:"write",value:function(t){var e=this;this.writable=!1;for(var n=function(n){var r=t[n],i=n===t.length-1;O(r,e.supportsBinary,(function(t){try{e.ws.send(t)}catch(t){}i&&it((function(){e.writable=!0,e.emitReserved("drain")}),e.setTimeoutFn)}))},r=0;r1&&void 0!==arguments[1]?arguments[1]:{};return e(this,a),(r=s.call(this)).writeBuffer=[],n&&"object"===t(n)&&(o=n,n=null),n?(n=ft(n),o.hostname=n.host,o.secure="https"===n.protocol||"wss"===n.protocol,o.port=n.port,n.query&&(o.query=n.query)):o.host&&(o.hostname=ft(o.host).host),D(f(r),o),r.secure=null!=o.secure?o.secure:"undefined"!=typeof location&&"https:"===location.protocol,o.hostname&&!o.port&&(o.port=r.secure?"443":"80"),r.hostname=o.hostname||("undefined"!=typeof location?location.hostname:"localhost"),r.port=o.port||("undefined"!=typeof location&&location.port?location.port:r.secure?"443":"80"),r.transports=o.transports||["polling","websocket"],r.writeBuffer=[],r.prevBufferLen=0,r.opts=i({path:"/engine.io",agent:!1,withCredentials:!1,upgrade:!0,timestampParam:"t",rememberUpgrade:!1,addTrailingSlash:!0,rejectUnauthorized:!0,perMessageDeflate:{threshold:1024},transportOptions:{},closeOnBeforeunload:!0},o),r.opts.path=r.opts.path.replace(/\/$/,"")+(r.opts.addTrailingSlash?"/":""),"string"==typeof r.opts.query&&(r.opts.query=J(r.opts.query)),r.id=null,r.upgrades=null,r.pingInterval=null,r.pingTimeout=null,r.pingTimeoutTimer=null,"function"==typeof addEventListener&&(r.opts.closeOnBeforeunload&&(r.beforeunloadEventListener=function(){r.transport&&(r.transport.removeAllListeners(),r.transport.close())},addEventListener("beforeunload",r.beforeunloadEventListener,!1)),"localhost"!==r.hostname&&(r.offlineEventListener=function(){r.onClose("transport close",{description:"network connection lost"})},addEventListener("offline",r.offlineEventListener,!1))),r.open(),r}return r(a,[{key:"createTransport",value:function(t){var e=i({},this.opts.query);e.EIO=4,e.transport=t,this.id&&(e.sid=this.id);var n=i({},this.opts.transportOptions[t],this.opts,{query:e,socket:this,hostname:this.hostname,secure:this.secure,port:this.port});return new ct[t](n)}},{key:"open",value:function(){var t,e=this;if(this.opts.rememberUpgrade&&a.priorWebsocketSuccess&&-1!==this.transports.indexOf("websocket"))t="websocket";else{if(0===this.transports.length)return void this.setTimeoutFn((function(){e.emitReserved("error","No transports available")}),0);t=this.transports[0]}this.readyState="opening";try{t=this.createTransport(t)}catch(t){return this.transports.shift(),void this.open()}t.open(),this.setTransport(t)}},{key:"setTransport",value:function(t){var e=this;this.transport&&this.transport.removeAllListeners(),this.transport=t,t.on("drain",this.onDrain.bind(this)).on("packet",this.onPacket.bind(this)).on("error",this.onError.bind(this)).on("close",(function(t){return e.onClose("transport close",t)}))}},{key:"probe",value:function(t){var e=this,n=this.createTransport(t),r=!1;a.priorWebsocketSuccess=!1;var i=function(){r||(n.send([{type:"ping",data:"probe"}]),n.once("packet",(function(t){if(!r)if("pong"===t.type&&"probe"===t.data){if(e.upgrading=!0,e.emitReserved("upgrading",n),!n)return;a.priorWebsocketSuccess="websocket"===n.name,e.transport.pause((function(){r||"closed"!==e.readyState&&(f(),e.setTransport(n),n.send([{type:"upgrade"}]),e.emitReserved("upgrade",n),n=null,e.upgrading=!1,e.flush())}))}else{var i=new Error("probe error");i.transport=n.name,e.emitReserved("upgradeError",i)}})))};function o(){r||(r=!0,f(),n.close(),n=null)}var s=function(t){var r=new Error("probe error: "+t);r.transport=n.name,o(),e.emitReserved("upgradeError",r)};function c(){s("transport closed")}function u(){s("socket closed")}function h(t){n&&t.name!==n.name&&o()}var f=function(){n.removeListener("open",i),n.removeListener("error",s),n.removeListener("close",c),e.off("close",u),e.off("upgrading",h)};n.once("open",i),n.once("error",s),n.once("close",c),this.once("close",u),this.once("upgrading",h),n.open()}},{key:"onOpen",value:function(){if(this.readyState="open",a.priorWebsocketSuccess="websocket"===this.transport.name,this.emitReserved("open"),this.flush(),"open"===this.readyState&&this.opts.upgrade)for(var t=0,e=this.upgrades.length;t1))return this.writeBuffer;for(var t,e=1,n=0;n=57344?n+=3:(r++,n+=4);return n}(t):Math.ceil(1.33*(t.byteLength||t.size))),n>0&&e>this.maxPayload)return this.writeBuffer.slice(0,n);e+=2}return this.writeBuffer}},{key:"write",value:function(t,e,n){return this.sendPacket("message",t,e,n),this}},{key:"send",value:function(t,e,n){return this.sendPacket("message",t,e,n),this}},{key:"sendPacket",value:function(t,e,n,r){if("function"==typeof e&&(r=e,e=void 0),"function"==typeof n&&(r=n,n=null),"closing"!==this.readyState&&"closed"!==this.readyState){(n=n||{}).compress=!1!==n.compress;var i={type:t,data:e,options:n};this.emitReserved("packetCreate",i),this.writeBuffer.push(i),r&&this.once("flush",r),this.flush()}}},{key:"close",value:function(){var t=this,e=function(){t.onClose("forced close"),t.transport.close()},n=function n(){t.off("upgrade",n),t.off("upgradeError",n),e()},r=function(){t.once("upgrade",n),t.once("upgradeError",n)};return"opening"!==this.readyState&&"open"!==this.readyState||(this.readyState="closing",this.writeBuffer.length?this.once("drain",(function(){t.upgrading?r():e()})):this.upgrading?r():e()),this}},{key:"onError",value:function(t){a.priorWebsocketSuccess=!1,this.emitReserved("error",t),this.onClose("transport error",t)}},{key:"onClose",value:function(t,e){"opening"!==this.readyState&&"open"!==this.readyState&&"closing"!==this.readyState||(this.clearTimeoutFn(this.pingTimeoutTimer),this.transport.removeAllListeners("close"),this.transport.close(),this.transport.removeAllListeners(),"function"==typeof removeEventListener&&(removeEventListener("beforeunload",this.beforeunloadEventListener,!1),removeEventListener("offline",this.offlineEventListener,!1)),this.readyState="closed",this.id=null,this.emitReserved("close",t,e),this.writeBuffer=[],this.prevBufferLen=0)}},{key:"filterUpgrades",value:function(t){for(var e=[],n=0,r=t.length;n=0&&e.num1?e-1:0),r=1;r1?n-1:0),i=1;in._opts.retries&&(n._queue.shift(),e&&e(t));else if(n._queue.shift(),e){for(var o=arguments.length,s=new Array(o>1?o-1:0),a=1;a0&&void 0!==arguments[0]&&arguments[0];if(this.connected&&0!==this._queue.length){var e=this._queue[0];e.pending&&!t||(e.pending=!0,e.tryCount++,this.flags=e.flags,this.emit.apply(this,e.args))}}},{key:"packet",value:function(t){t.nsp=this.nsp,this.io._packet(t)}},{key:"onopen",value:function(){var t=this;"function"==typeof this.auth?this.auth((function(e){t._sendConnectPacket(e)})):this._sendConnectPacket(this.auth)}},{key:"_sendConnectPacket",value:function(t){this.packet({type:Ot.CONNECT,data:this._pid?i({pid:this._pid,offset:this._lastOffset},t):t})}},{key:"onerror",value:function(t){this.connected||this.emitReserved("connect_error",t)}},{key:"onclose",value:function(t,e){this.connected=!1,delete this.id,this.emitReserved("disconnect",t,e)}},{key:"onpacket",value:function(t){if(t.nsp===this.nsp)switch(t.type){case Ot.CONNECT:t.data&&t.data.sid?this.onconnect(t.data.sid,t.data.pid):this.emitReserved("connect_error",new Error("It seems you are trying to reach a Socket.IO server in v2.x with a v3.x client, but they are not compatible (more information here: https://socket.io/docs/v3/migrating-from-2-x-to-3-0/)"));break;case Ot.EVENT:case Ot.BINARY_EVENT:this.onevent(t);break;case Ot.ACK:case Ot.BINARY_ACK:this.onack(t);break;case Ot.DISCONNECT:this.ondisconnect();break;case Ot.CONNECT_ERROR:this.destroy();var e=new Error(t.data.message);e.data=t.data.data,this.emitReserved("connect_error",e)}}},{key:"onevent",value:function(t){var e=t.data||[];null!=t.id&&e.push(this.ack(t.id)),this.connected?this.emitEvent(e):this.receiveBuffer.push(Object.freeze(e))}},{key:"emitEvent",value:function(t){if(this._anyListeners&&this._anyListeners.length){var e,n=g(this._anyListeners.slice());try{for(n.s();!(e=n.n()).done;){e.value.apply(this,t)}}catch(t){n.e(t)}finally{n.f()}}y(s(a.prototype),"emit",this).apply(this,t),this._pid&&t.length&&"string"==typeof t[t.length-1]&&(this._lastOffset=t[t.length-1])}},{key:"ack",value:function(t){var e=this,n=!1;return function(){if(!n){n=!0;for(var r=arguments.length,i=new Array(r),o=0;o0&&t.jitter<=1?t.jitter:0,this.attempts=0}Lt.prototype.duration=function(){var t=this.ms*Math.pow(this.factor,this.attempts++);if(this.jitter){var e=Math.random(),n=Math.floor(e*this.jitter*t);t=0==(1&Math.floor(10*e))?t-n:t+n}return 0|Math.min(t,this.max)},Lt.prototype.reset=function(){this.attempts=0},Lt.prototype.setMin=function(t){this.ms=t},Lt.prototype.setMax=function(t){this.max=t},Lt.prototype.setJitter=function(t){this.jitter=t};var Pt=function(n){o(s,n);var i=p(s);function s(n,r){var o,a;e(this,s),(o=i.call(this)).nsps={},o.subs=[],n&&"object"===t(n)&&(r=n,n=void 0),(r=r||{}).path=r.path||"/socket.io",o.opts=r,D(f(o),r),o.reconnection(!1!==r.reconnection),o.reconnectionAttempts(r.reconnectionAttempts||1/0),o.reconnectionDelay(r.reconnectionDelay||1e3),o.reconnectionDelayMax(r.reconnectionDelayMax||5e3),o.randomizationFactor(null!==(a=r.randomizationFactor)&&void 0!==a?a:.5),o.backoff=new Lt({min:o.reconnectionDelay(),max:o.reconnectionDelayMax(),jitter:o.randomizationFactor()}),o.timeout(null==r.timeout?2e4:r.timeout),o._readyState="closed",o.uri=n;var c=r.parser||Bt;return o.encoder=new c.Encoder,o.decoder=new c.Decoder,o._autoConnect=!1!==r.autoConnect,o._autoConnect&&o.open(),o}return r(s,[{key:"reconnection",value:function(t){return arguments.length?(this._reconnection=!!t,this):this._reconnection}},{key:"reconnectionAttempts",value:function(t){return void 0===t?this._reconnectionAttempts:(this._reconnectionAttempts=t,this)}},{key:"reconnectionDelay",value:function(t){var e;return void 0===t?this._reconnectionDelay:(this._reconnectionDelay=t,null===(e=this.backoff)||void 0===e||e.setMin(t),this)}},{key:"randomizationFactor",value:function(t){var e;return void 0===t?this._randomizationFactor:(this._randomizationFactor=t,null===(e=this.backoff)||void 0===e||e.setJitter(t),this)}},{key:"reconnectionDelayMax",value:function(t){var e;return void 0===t?this._reconnectionDelayMax:(this._reconnectionDelayMax=t,null===(e=this.backoff)||void 0===e||e.setMax(t),this)}},{key:"timeout",value:function(t){return arguments.length?(this._timeout=t,this):this._timeout}},{key:"maybeReconnectOnOpen",value:function(){!this._reconnecting&&this._reconnection&&0===this.backoff.attempts&&this.reconnect()}},{key:"open",value:function(t){var e=this;if(~this._readyState.indexOf("open"))return this;this.engine=new lt(this.uri,this.opts);var n=this.engine,r=this;this._readyState="opening",this.skipReconnect=!1;var i=St(n,"open",(function(){r.onopen(),t&&t()})),o=St(n,"error",(function(n){r.cleanup(),r._readyState="closed",e.emitReserved("error",n),t?t(n):r.maybeReconnectOnOpen()}));if(!1!==this._timeout){var s=this._timeout;0===s&&i();var a=this.setTimeoutFn((function(){i(),n.close(),n.emit("error",new Error("timeout"))}),s);this.opts.autoUnref&&a.unref(),this.subs.push((function(){clearTimeout(a)}))}return this.subs.push(i),this.subs.push(o),this}},{key:"connect",value:function(t){return this.open(t)}},{key:"onopen",value:function(){this.cleanup(),this._readyState="open",this.emitReserved("open");var t=this.engine;this.subs.push(St(t,"ping",this.onping.bind(this)),St(t,"data",this.ondata.bind(this)),St(t,"error",this.onerror.bind(this)),St(t,"close",this.onclose.bind(this)),St(this.decoder,"decoded",this.ondecoded.bind(this)))}},{key:"onping",value:function(){this.emitReserved("ping")}},{key:"ondata",value:function(t){try{this.decoder.add(t)}catch(t){this.onclose("parse error",t)}}},{key:"ondecoded",value:function(t){var e=this;it((function(){e.emitReserved("packet",t)}),this.setTimeoutFn)}},{key:"onerror",value:function(t){this.emitReserved("error",t)}},{key:"socket",value:function(t,e){var n=this.nsps[t];return n?this._autoConnect&&!n.active&&n.connect():(n=new xt(this,t,e),this.nsps[t]=n),n}},{key:"_destroy",value:function(t){for(var e=0,n=Object.keys(this.nsps);e=this._reconnectionAttempts)this.backoff.reset(),this.emitReserved("reconnect_failed"),this._reconnecting=!1;else{var n=this.backoff.duration();this._reconnecting=!0;var r=this.setTimeoutFn((function(){e.skipReconnect||(t.emitReserved("reconnect_attempt",e.backoff.attempts),e.skipReconnect||e.open((function(n){n?(e._reconnecting=!1,e.reconnect(),t.emitReserved("reconnect_error",n)):e.onreconnect()})))}),n);this.opts.autoUnref&&r.unref(),this.subs.push((function(){clearTimeout(r)}))}}},{key:"onreconnect",value:function(){var t=this.backoff.attempts;this._reconnecting=!1,this.backoff.reset(),this.emitReserved("reconnect",t)}}]),s}(L),jt={};function qt(e,n){"object"===t(e)&&(n=e,e=void 0);var r,i=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",n=arguments.length>2?arguments[2]:void 0,r=t;n=n||"undefined"!=typeof location&&location,null==t&&(t=n.protocol+"//"+n.host),"string"==typeof t&&("/"===t.charAt(0)&&(t="/"===t.charAt(1)?n.protocol+t:n.host+t),/^(https?|wss?):\/\//.test(t)||(t=void 0!==n?n.protocol+"//"+t:"https://"+t),r=ft(t)),r.port||(/^(http|ws)$/.test(r.protocol)?r.port="80":/^(http|ws)s$/.test(r.protocol)&&(r.port="443")),r.path=r.path||"/";var i=-1!==r.host.indexOf(":")?"["+r.host+"]":r.host;return r.id=r.protocol+"://"+i+":"+r.port+e,r.href=r.protocol+"://"+i+(n&&n.port===r.port?"":":"+r.port),r}(e,(n=n||{}).path||"/socket.io"),o=i.source,s=i.id,a=i.path,c=jt[s]&&a in jt[s].nsps;return n.forceNew||n["force new connection"]||!1===n.multiplex||c?r=new Pt(o,n):(jt[s]||(jt[s]=new Pt(o,n)),r=jt[s]),i.query&&!n.query&&(n.query=i.queryKey),r.socket(i.path,n)}return i(qt,{Manager:Pt,Socket:xt,io:qt,connect:qt}),qt})); +!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t="undefined"!=typeof globalThis?globalThis:t||self).io=e()}(this,(function(){"use strict";function t(e){return t="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},t(e)}function e(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function n(t,e){for(var n=0;nt.length)&&(e=t.length);for(var n=0,r=new Array(e);n=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,s=!0,a=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return s=t.done,t},e:function(t){a=!0,o=t},f:function(){try{s||null==n.return||n.return()}finally{if(a)throw o}}}}var m=Object.create(null);m.open="0",m.close="1",m.ping="2",m.pong="3",m.message="4",m.upgrade="5",m.noop="6";var k=Object.create(null);Object.keys(m).forEach((function(t){k[m[t]]=t}));var b,w={type:"error",data:"parser error"},_="function"==typeof Blob||"undefined"!=typeof Blob&&"[object BlobConstructor]"===Object.prototype.toString.call(Blob),O="function"==typeof ArrayBuffer,A=function(t){return"function"==typeof ArrayBuffer.isView?ArrayBuffer.isView(t):t&&t.buffer instanceof ArrayBuffer},E=function(t,e,n){var r=t.type,i=t.data;return _&&i instanceof Blob?e?n(i):R(i,n):O&&(i instanceof ArrayBuffer||A(i))?e?n(i):R(new Blob([i]),n):n(m[r]+(i||""))},R=function(t,e){var n=new FileReader;return n.onload=function(){var t=n.result.split(",")[1];e("b"+(t||""))},n.readAsDataURL(t)};function T(t){return t instanceof Uint8Array?t:t instanceof ArrayBuffer?new Uint8Array(t):new Uint8Array(t.buffer,t.byteOffset,t.byteLength)}for(var C="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",B="undefined"==typeof Uint8Array?[]:new Uint8Array(256),S=0;S1?{type:k[n],data:t.substring(1)}:{type:k[n]}:w},P=function(t,e){if(N){var n=function(t){var e,n,r,i,o,s=.75*t.length,a=t.length,c=0;"="===t[t.length-1]&&(s--,"="===t[t.length-2]&&s--);var u=new ArrayBuffer(s),h=new Uint8Array(u);for(e=0;e>4,h[c++]=(15&r)<<4|i>>2,h[c++]=(3&i)<<6|63&o;return u}(t);return j(n,e)}return{base64:!0,data:t}},j=function(t,e){return"blob"===e?t instanceof Blob?t:new Blob([t]):t instanceof ArrayBuffer?t:t.buffer},q=String.fromCharCode(30);function I(t){if(t)return function(t){for(var e in I.prototype)t[e]=I.prototype[e];return t}(t)}I.prototype.on=I.prototype.addEventListener=function(t,e){return this._callbacks=this._callbacks||{},(this._callbacks["$"+t]=this._callbacks["$"+t]||[]).push(e),this},I.prototype.once=function(t,e){function n(){this.off(t,n),e.apply(this,arguments)}return n.fn=e,this.on(t,n),this},I.prototype.off=I.prototype.removeListener=I.prototype.removeAllListeners=I.prototype.removeEventListener=function(t,e){if(this._callbacks=this._callbacks||{},0==arguments.length)return this._callbacks={},this;var n,r=this._callbacks["$"+t];if(!r)return this;if(1==arguments.length)return delete this._callbacks["$"+t],this;for(var i=0;i1?e-1:0),r=1;r1&&void 0!==arguments[1]?arguments[1]:{};return t+"://"+this._hostname()+this._port()+this.opts.path+this._query(e)}},{key:"_hostname",value:function(){var t=this.opts.hostname;return-1===t.indexOf(":")?t:"["+t+"]"}},{key:"_port",value:function(){return this.opts.port&&(this.opts.secure&&Number(443!==this.opts.port)||!this.opts.secure&&80!==Number(this.opts.port))?":"+this.opts.port:""}},{key:"_query",value:function(t){var e=function(t){var e="";for(var n in t)t.hasOwnProperty(n)&&(e.length&&(e+="&"),e+=encodeURIComponent(n)+"="+encodeURIComponent(t[n]));return e}(t);return e.length?"?"+e:""}}]),i}(I),z="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-_".split(""),J={},$=0,Q=0;function X(t){var e="";do{e=z[t%64]+e,t=Math.floor(t/64)}while(t>0);return e}function G(){var t=X(+new Date);return t!==K?($=0,K=t):t+"."+X($++)}for(;Q<64;Q++)J[z[Q]]=Q;var Z=!1;try{Z="undefined"!=typeof XMLHttpRequest&&"withCredentials"in new XMLHttpRequest}catch(t){}var tt=Z;function et(t){var e=t.xdomain;try{if("undefined"!=typeof XMLHttpRequest&&(!e||tt))return new XMLHttpRequest}catch(t){}if(!e)try{return new(D[["Active"].concat("Object").join("X")])("Microsoft.XMLHTTP")}catch(t){}}function nt(){}var rt=null!=new et({xdomain:!1}).responseType,it=function(t){o(s,t);var n=p(s);function s(t){var r;if(e(this,s),(r=n.call(this,t)).polling=!1,"undefined"!=typeof location){var i="https:"===location.protocol,o=location.port;o||(o=i?"443":"80"),r.xd="undefined"!=typeof location&&t.hostname!==location.hostname||o!==t.port}var a=t&&t.forceBase64;return r.supportsBinary=rt&&!a,r.opts.withCredentials&&(r.cookieJar=void 0),r}return r(s,[{key:"name",get:function(){return"polling"}},{key:"doOpen",value:function(){this.poll()}},{key:"pause",value:function(t){var e=this;this.readyState="pausing";var n=function(){e.readyState="paused",t()};if(this.polling||!this.writable){var r=0;this.polling&&(r++,this.once("pollComplete",(function(){--r||n()}))),this.writable||(r++,this.once("drain",(function(){--r||n()})))}else n()}},{key:"poll",value:function(){this.polling=!0,this.doPoll(),this.emitReserved("poll")}},{key:"onData",value:function(t){var e=this;(function(t,e){for(var n=t.split(q),r=[],i=0;i0&&void 0!==arguments[0]?arguments[0]:{};return i(t,{xd:this.xd,cookieJar:this.cookieJar},this.opts),new ot(this.uri(),t)}},{key:"doWrite",value:function(t,e){var n=this,r=this.request({method:"POST",data:t});r.on("success",e),r.on("error",(function(t,e){n.onError("xhr post error",t,e)}))}},{key:"doPoll",value:function(){var t=this,e=this.request();e.on("data",this.onData.bind(this)),e.on("error",(function(e,n){t.onError("xhr poll error",e,n)})),this.pollXhr=e}}]),s}(W),ot=function(t){o(i,t);var n=p(i);function i(t,r){var o;return e(this,i),V(f(o=n.call(this)),r),o.opts=r,o.method=r.method||"GET",o.uri=t,o.data=void 0!==r.data?r.data:null,o.create(),o}return r(i,[{key:"create",value:function(){var t,e=this,n=F(this.opts,"agent","pfx","key","passphrase","cert","ca","ciphers","rejectUnauthorized","autoUnref");n.xdomain=!!this.opts.xd;var r=this.xhr=new et(n);try{r.open(this.method,this.uri,!0);try{if(this.opts.extraHeaders)for(var o in r.setDisableHeaderCheck&&r.setDisableHeaderCheck(!0),this.opts.extraHeaders)this.opts.extraHeaders.hasOwnProperty(o)&&r.setRequestHeader(o,this.opts.extraHeaders[o])}catch(t){}if("POST"===this.method)try{r.setRequestHeader("Content-type","text/plain;charset=UTF-8")}catch(t){}try{r.setRequestHeader("Accept","*/*")}catch(t){}null===(t=this.opts.cookieJar)||void 0===t||t.addCookies(r),"withCredentials"in r&&(r.withCredentials=this.opts.withCredentials),this.opts.requestTimeout&&(r.timeout=this.opts.requestTimeout),r.onreadystatechange=function(){var t;3===r.readyState&&(null===(t=e.opts.cookieJar)||void 0===t||t.parseCookies(r)),4===r.readyState&&(200===r.status||1223===r.status?e.onLoad():e.setTimeoutFn((function(){e.onError("number"==typeof r.status?r.status:0)}),0))},r.send(this.data)}catch(t){return void this.setTimeoutFn((function(){e.onError(t)}),0)}"undefined"!=typeof document&&(this.index=i.requestsCount++,i.requests[this.index]=this)}},{key:"onError",value:function(t){this.emitReserved("error",t,this.xhr),this.cleanup(!0)}},{key:"cleanup",value:function(t){if(void 0!==this.xhr&&null!==this.xhr){if(this.xhr.onreadystatechange=nt,t)try{this.xhr.abort()}catch(t){}"undefined"!=typeof document&&delete i.requests[this.index],this.xhr=null}}},{key:"onLoad",value:function(){var t=this.xhr.responseText;null!==t&&(this.emitReserved("data",t),this.emitReserved("success"),this.cleanup())}},{key:"abort",value:function(){this.cleanup()}}]),i}(I);if(ot.requestsCount=0,ot.requests={},"undefined"!=typeof document)if("function"==typeof attachEvent)attachEvent("onunload",st);else if("function"==typeof addEventListener){addEventListener("onpagehide"in D?"pagehide":"unload",st,!1)}function st(){for(var t in ot.requests)ot.requests.hasOwnProperty(t)&&ot.requests[t].abort()}var at="function"==typeof Promise&&"function"==typeof Promise.resolve?function(t){return Promise.resolve().then(t)}:function(t,e){return e(t,0)},ct=D.WebSocket||D.MozWebSocket,ut="undefined"!=typeof navigator&&"string"==typeof navigator.product&&"reactnative"===navigator.product.toLowerCase(),ht=function(t){o(i,t);var n=p(i);function i(t){var r;return e(this,i),(r=n.call(this,t)).supportsBinary=!t.forceBase64,r}return r(i,[{key:"name",get:function(){return"websocket"}},{key:"doOpen",value:function(){if(this.check()){var t=this.uri(),e=this.opts.protocols,n=ut?{}:F(this.opts,"agent","perMessageDeflate","pfx","key","passphrase","cert","ca","ciphers","rejectUnauthorized","localAddress","protocolVersion","origin","maxPayload","family","checkServerIdentity");this.opts.extraHeaders&&(n.headers=this.opts.extraHeaders);try{this.ws=ut?new ct(t,e,n):e?new ct(t,e):new ct(t)}catch(t){return this.emitReserved("error",t)}this.ws.binaryType=this.socket.binaryType||"arraybuffer",this.addEventListeners()}}},{key:"addEventListeners",value:function(){var t=this;this.ws.onopen=function(){t.opts.autoUnref&&t.ws._socket.unref(),t.onOpen()},this.ws.onclose=function(e){return t.onClose({description:"websocket connection closed",context:e})},this.ws.onmessage=function(e){return t.onData(e.data)},this.ws.onerror=function(e){return t.onError("websocket error",e)}}},{key:"write",value:function(t){var e=this;this.writable=!1;for(var n=function(n){var r=t[n],i=n===t.length-1;E(r,e.supportsBinary,(function(t){try{e.ws.send(t)}catch(t){}i&&at((function(){e.writable=!0,e.emitReserved("drain")}),e.setTimeoutFn)}))},r=0;r54;return x(r?t:L.decode(t),n)}(o,n,"arraybuffer")),n=!1):n=!0,e())}))}();var i=t.query.sid?'0{"sid":"'.concat(t.query.sid,'"}'):"0";t.writer.write((new TextEncoder).encode(i)).then((function(){return t.onOpen()}))}))})))}},{key:"write",value:function(t){var e=this;this.writable=!1;for(var n=function(n){var r=t[n],i=n===t.length-1;!function(t,e){_&&t.data instanceof Blob?t.data.arrayBuffer().then(T).then(e):O&&(t.data instanceof ArrayBuffer||A(t.data))?e(T(t.data)):E(t,!1,(function(t){b||(b=new TextEncoder),e(b.encode(t))}))}(r,(function(t){(function(t,e){return"message"===t.type&&"string"!=typeof t.data&&e[0]>=48&&e[0]<=54})(r,t)&&e.writer.write(Uint8Array.of(54)),e.writer.write(t).then((function(){i&&at((function(){e.writable=!0,e.emitReserved("drain")}),e.setTimeoutFn)}))}))},r=0;r1&&void 0!==arguments[1]?arguments[1]:{};return e(this,a),(r=s.call(this)).writeBuffer=[],n&&"object"===t(n)&&(o=n,n=null),n?(n=yt(n),o.hostname=n.host,o.secure="https"===n.protocol||"wss"===n.protocol,o.port=n.port,n.query&&(o.query=n.query)):o.host&&(o.hostname=yt(o.host).host),V(f(r),o),r.secure=null!=o.secure?o.secure:"undefined"!=typeof location&&"https:"===location.protocol,o.hostname&&!o.port&&(o.port=r.secure?"443":"80"),r.hostname=o.hostname||("undefined"!=typeof location?location.hostname:"localhost"),r.port=o.port||("undefined"!=typeof location&&location.port?location.port:r.secure?"443":"80"),r.transports=o.transports||["polling","websocket","webtransport"],r.writeBuffer=[],r.prevBufferLen=0,r.opts=i({path:"/engine.io",agent:!1,withCredentials:!1,upgrade:!0,timestampParam:"t",rememberUpgrade:!1,addTrailingSlash:!0,rejectUnauthorized:!0,perMessageDeflate:{threshold:1024},transportOptions:{},closeOnBeforeunload:!0},o),r.opts.path=r.opts.path.replace(/\/$/,"")+(r.opts.addTrailingSlash?"/":""),"string"==typeof r.opts.query&&(r.opts.query=H(r.opts.query)),r.id=null,r.upgrades=null,r.pingInterval=null,r.pingTimeout=null,r.pingTimeoutTimer=null,"function"==typeof addEventListener&&(r.opts.closeOnBeforeunload&&(r.beforeunloadEventListener=function(){r.transport&&(r.transport.removeAllListeners(),r.transport.close())},addEventListener("beforeunload",r.beforeunloadEventListener,!1)),"localhost"!==r.hostname&&(r.offlineEventListener=function(){r.onClose("transport close",{description:"network connection lost"})},addEventListener("offline",r.offlineEventListener,!1))),r.open(),r}return r(a,[{key:"createTransport",value:function(t){var e=i({},this.opts.query);e.EIO=4,e.transport=t,this.id&&(e.sid=this.id);var n=i({},this.opts.transportOptions[t],this.opts,{query:e,socket:this,hostname:this.hostname,secure:this.secure,port:this.port});return new lt[t](n)}},{key:"open",value:function(){var t,e=this;if(this.opts.rememberUpgrade&&a.priorWebsocketSuccess&&-1!==this.transports.indexOf("websocket"))t="websocket";else{if(0===this.transports.length)return void this.setTimeoutFn((function(){e.emitReserved("error","No transports available")}),0);t=this.transports[0]}this.readyState="opening";try{t=this.createTransport(t)}catch(t){return this.transports.shift(),void this.open()}t.open(),this.setTransport(t)}},{key:"setTransport",value:function(t){var e=this;this.transport&&this.transport.removeAllListeners(),this.transport=t,t.on("drain",this.onDrain.bind(this)).on("packet",this.onPacket.bind(this)).on("error",this.onError.bind(this)).on("close",(function(t){return e.onClose("transport close",t)}))}},{key:"probe",value:function(t){var e=this,n=this.createTransport(t),r=!1;a.priorWebsocketSuccess=!1;var i=function(){r||(n.send([{type:"ping",data:"probe"}]),n.once("packet",(function(t){if(!r)if("pong"===t.type&&"probe"===t.data){if(e.upgrading=!0,e.emitReserved("upgrading",n),!n)return;a.priorWebsocketSuccess="websocket"===n.name,e.transport.pause((function(){r||"closed"!==e.readyState&&(f(),e.setTransport(n),n.send([{type:"upgrade"}]),e.emitReserved("upgrade",n),n=null,e.upgrading=!1,e.flush())}))}else{var i=new Error("probe error");i.transport=n.name,e.emitReserved("upgradeError",i)}})))};function o(){r||(r=!0,f(),n.close(),n=null)}var s=function(t){var r=new Error("probe error: "+t);r.transport=n.name,o(),e.emitReserved("upgradeError",r)};function c(){s("transport closed")}function u(){s("socket closed")}function h(t){n&&t.name!==n.name&&o()}var f=function(){n.removeListener("open",i),n.removeListener("error",s),n.removeListener("close",c),e.off("close",u),e.off("upgrading",h)};n.once("open",i),n.once("error",s),n.once("close",c),this.once("close",u),this.once("upgrading",h),-1!==this.upgrades.indexOf("webtransport")&&"webtransport"!==t?this.setTimeoutFn((function(){r||n.open()}),200):n.open()}},{key:"onOpen",value:function(){if(this.readyState="open",a.priorWebsocketSuccess="websocket"===this.transport.name,this.emitReserved("open"),this.flush(),"open"===this.readyState&&this.opts.upgrade)for(var t=0,e=this.upgrades.length;t1))return this.writeBuffer;for(var t,e=1,n=0;n=57344?n+=3:(r++,n+=4);return n}(t):Math.ceil(1.33*(t.byteLength||t.size))),n>0&&e>this.maxPayload)return this.writeBuffer.slice(0,n);e+=2}return this.writeBuffer}},{key:"write",value:function(t,e,n){return this.sendPacket("message",t,e,n),this}},{key:"send",value:function(t,e,n){return this.sendPacket("message",t,e,n),this}},{key:"sendPacket",value:function(t,e,n,r){if("function"==typeof e&&(r=e,e=void 0),"function"==typeof n&&(r=n,n=null),"closing"!==this.readyState&&"closed"!==this.readyState){(n=n||{}).compress=!1!==n.compress;var i={type:t,data:e,options:n};this.emitReserved("packetCreate",i),this.writeBuffer.push(i),r&&this.once("flush",r),this.flush()}}},{key:"close",value:function(){var t=this,e=function(){t.onClose("forced close"),t.transport.close()},n=function n(){t.off("upgrade",n),t.off("upgradeError",n),e()},r=function(){t.once("upgrade",n),t.once("upgradeError",n)};return"opening"!==this.readyState&&"open"!==this.readyState||(this.readyState="closing",this.writeBuffer.length?this.once("drain",(function(){t.upgrading?r():e()})):this.upgrading?r():e()),this}},{key:"onError",value:function(t){a.priorWebsocketSuccess=!1,this.emitReserved("error",t),this.onClose("transport error",t)}},{key:"onClose",value:function(t,e){"opening"!==this.readyState&&"open"!==this.readyState&&"closing"!==this.readyState||(this.clearTimeoutFn(this.pingTimeoutTimer),this.transport.removeAllListeners("close"),this.transport.close(),this.transport.removeAllListeners(),"function"==typeof removeEventListener&&(removeEventListener("beforeunload",this.beforeunloadEventListener,!1),removeEventListener("offline",this.offlineEventListener,!1)),this.readyState="closed",this.id=null,this.emitReserved("close",t,e),this.writeBuffer=[],this.prevBufferLen=0)}},{key:"filterUpgrades",value:function(t){for(var e=[],n=0,r=t.length;n=0&&e.num1?e-1:0),r=1;r1?n-1:0),i=1;in._opts.retries&&(n._queue.shift(),e&&e(t));else if(n._queue.shift(),e){for(var o=arguments.length,s=new Array(o>1?o-1:0),a=1;a0&&void 0!==arguments[0]&&arguments[0];if(this.connected&&0!==this._queue.length){var e=this._queue[0];e.pending&&!t||(e.pending=!0,e.tryCount++,this.flags=e.flags,this.emit.apply(this,e.args))}}},{key:"packet",value:function(t){t.nsp=this.nsp,this.io._packet(t)}},{key:"onopen",value:function(){var t=this;"function"==typeof this.auth?this.auth((function(e){t._sendConnectPacket(e)})):this._sendConnectPacket(this.auth)}},{key:"_sendConnectPacket",value:function(t){this.packet({type:Tt.CONNECT,data:this._pid?i({pid:this._pid,offset:this._lastOffset},t):t})}},{key:"onerror",value:function(t){this.connected||this.emitReserved("connect_error",t)}},{key:"onclose",value:function(t,e){this.connected=!1,delete this.id,this.emitReserved("disconnect",t,e)}},{key:"onpacket",value:function(t){if(t.nsp===this.nsp)switch(t.type){case Tt.CONNECT:t.data&&t.data.sid?this.onconnect(t.data.sid,t.data.pid):this.emitReserved("connect_error",new Error("It seems you are trying to reach a Socket.IO server in v2.x with a v3.x client, but they are not compatible (more information here: https://socket.io/docs/v3/migrating-from-2-x-to-3-0/)"));break;case Tt.EVENT:case Tt.BINARY_EVENT:this.onevent(t);break;case Tt.ACK:case Tt.BINARY_ACK:this.onack(t);break;case Tt.DISCONNECT:this.ondisconnect();break;case Tt.CONNECT_ERROR:this.destroy();var e=new Error(t.data.message);e.data=t.data.data,this.emitReserved("connect_error",e)}}},{key:"onevent",value:function(t){var e=t.data||[];null!=t.id&&e.push(this.ack(t.id)),this.connected?this.emitEvent(e):this.receiveBuffer.push(Object.freeze(e))}},{key:"emitEvent",value:function(t){if(this._anyListeners&&this._anyListeners.length){var e,n=g(this._anyListeners.slice());try{for(n.s();!(e=n.n()).done;){e.value.apply(this,t)}}catch(t){n.e(t)}finally{n.f()}}y(s(a.prototype),"emit",this).apply(this,t),this._pid&&t.length&&"string"==typeof t[t.length-1]&&(this._lastOffset=t[t.length-1])}},{key:"ack",value:function(t){var e=this,n=!1;return function(){if(!n){n=!0;for(var r=arguments.length,i=new Array(r),o=0;o0&&t.jitter<=1?t.jitter:0,this.attempts=0}It.prototype.duration=function(){var t=this.ms*Math.pow(this.factor,this.attempts++);if(this.jitter){var e=Math.random(),n=Math.floor(e*this.jitter*t);t=0==(1&Math.floor(10*e))?t-n:t+n}return 0|Math.min(t,this.max)},It.prototype.reset=function(){this.attempts=0},It.prototype.setMin=function(t){this.ms=t},It.prototype.setMax=function(t){this.max=t},It.prototype.setJitter=function(t){this.jitter=t};var Dt=function(n){o(s,n);var i=p(s);function s(n,r){var o,a;e(this,s),(o=i.call(this)).nsps={},o.subs=[],n&&"object"===t(n)&&(r=n,n=void 0),(r=r||{}).path=r.path||"/socket.io",o.opts=r,V(f(o),r),o.reconnection(!1!==r.reconnection),o.reconnectionAttempts(r.reconnectionAttempts||1/0),o.reconnectionDelay(r.reconnectionDelay||1e3),o.reconnectionDelayMax(r.reconnectionDelayMax||5e3),o.randomizationFactor(null!==(a=r.randomizationFactor)&&void 0!==a?a:.5),o.backoff=new It({min:o.reconnectionDelay(),max:o.reconnectionDelayMax(),jitter:o.randomizationFactor()}),o.timeout(null==r.timeout?2e4:r.timeout),o._readyState="closed",o.uri=n;var c=r.parser||xt;return o.encoder=new c.Encoder,o.decoder=new c.Decoder,o._autoConnect=!1!==r.autoConnect,o._autoConnect&&o.open(),o}return r(s,[{key:"reconnection",value:function(t){return arguments.length?(this._reconnection=!!t,this):this._reconnection}},{key:"reconnectionAttempts",value:function(t){return void 0===t?this._reconnectionAttempts:(this._reconnectionAttempts=t,this)}},{key:"reconnectionDelay",value:function(t){var e;return void 0===t?this._reconnectionDelay:(this._reconnectionDelay=t,null===(e=this.backoff)||void 0===e||e.setMin(t),this)}},{key:"randomizationFactor",value:function(t){var e;return void 0===t?this._randomizationFactor:(this._randomizationFactor=t,null===(e=this.backoff)||void 0===e||e.setJitter(t),this)}},{key:"reconnectionDelayMax",value:function(t){var e;return void 0===t?this._reconnectionDelayMax:(this._reconnectionDelayMax=t,null===(e=this.backoff)||void 0===e||e.setMax(t),this)}},{key:"timeout",value:function(t){return arguments.length?(this._timeout=t,this):this._timeout}},{key:"maybeReconnectOnOpen",value:function(){!this._reconnecting&&this._reconnection&&0===this.backoff.attempts&&this.reconnect()}},{key:"open",value:function(t){var e=this;if(~this._readyState.indexOf("open"))return this;this.engine=new vt(this.uri,this.opts);var n=this.engine,r=this;this._readyState="opening",this.skipReconnect=!1;var i=Pt(n,"open",(function(){r.onopen(),t&&t()})),o=function(n){e.cleanup(),e._readyState="closed",e.emitReserved("error",n),t?t(n):e.maybeReconnectOnOpen()},s=Pt(n,"error",o);if(!1!==this._timeout){var a=this._timeout,c=this.setTimeoutFn((function(){i(),o(new Error("timeout")),n.close()}),a);this.opts.autoUnref&&c.unref(),this.subs.push((function(){e.clearTimeoutFn(c)}))}return this.subs.push(i),this.subs.push(s),this}},{key:"connect",value:function(t){return this.open(t)}},{key:"onopen",value:function(){this.cleanup(),this._readyState="open",this.emitReserved("open");var t=this.engine;this.subs.push(Pt(t,"ping",this.onping.bind(this)),Pt(t,"data",this.ondata.bind(this)),Pt(t,"error",this.onerror.bind(this)),Pt(t,"close",this.onclose.bind(this)),Pt(this.decoder,"decoded",this.ondecoded.bind(this)))}},{key:"onping",value:function(){this.emitReserved("ping")}},{key:"ondata",value:function(t){try{this.decoder.add(t)}catch(t){this.onclose("parse error",t)}}},{key:"ondecoded",value:function(t){var e=this;at((function(){e.emitReserved("packet",t)}),this.setTimeoutFn)}},{key:"onerror",value:function(t){this.emitReserved("error",t)}},{key:"socket",value:function(t,e){var n=this.nsps[t];return n?this._autoConnect&&!n.active&&n.connect():(n=new qt(this,t,e),this.nsps[t]=n),n}},{key:"_destroy",value:function(t){for(var e=0,n=Object.keys(this.nsps);e=this._reconnectionAttempts)this.backoff.reset(),this.emitReserved("reconnect_failed"),this._reconnecting=!1;else{var n=this.backoff.duration();this._reconnecting=!0;var r=this.setTimeoutFn((function(){e.skipReconnect||(t.emitReserved("reconnect_attempt",e.backoff.attempts),e.skipReconnect||e.open((function(n){n?(e._reconnecting=!1,e.reconnect(),t.emitReserved("reconnect_error",n)):e.onreconnect()})))}),n);this.opts.autoUnref&&r.unref(),this.subs.push((function(){t.clearTimeoutFn(r)}))}}},{key:"onreconnect",value:function(){var t=this.backoff.attempts;this._reconnecting=!1,this.backoff.reset(),this.emitReserved("reconnect",t)}}]),s}(I),Ft={};function Ut(e,n){"object"===t(e)&&(n=e,e=void 0);var r,i=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",n=arguments.length>2?arguments[2]:void 0,r=t;n=n||"undefined"!=typeof location&&location,null==t&&(t=n.protocol+"//"+n.host),"string"==typeof t&&("/"===t.charAt(0)&&(t="/"===t.charAt(1)?n.protocol+t:n.host+t),/^(https?|wss?):\/\//.test(t)||(t=void 0!==n?n.protocol+"//"+t:"https://"+t),r=yt(t)),r.port||(/^(http|ws)$/.test(r.protocol)?r.port="80":/^(http|ws)s$/.test(r.protocol)&&(r.port="443")),r.path=r.path||"/";var i=-1!==r.host.indexOf(":")?"["+r.host+"]":r.host;return r.id=r.protocol+"://"+i+":"+r.port+e,r.href=r.protocol+"://"+i+(n&&n.port===r.port?"":":"+r.port),r}(e,(n=n||{}).path||"/socket.io"),o=i.source,s=i.id,a=i.path,c=Ft[s]&&a in Ft[s].nsps;return n.forceNew||n["force new connection"]||!1===n.multiplex||c?r=new Dt(o,n):(Ft[s]||(Ft[s]=new Dt(o,n)),r=Ft[s]),i.query&&!n.query&&(n.query=i.queryKey),r.socket(i.path,n)}return i(Ut,{Manager:Dt,Socket:qt,io:Ut,connect:Ut}),Ut})); //# sourceMappingURL=socket.io.min.js.map diff --git a/dist/socket.io.min.js.map b/dist/socket.io.min.js.map index 6867eae1..f9b6f96e 100644 --- a/dist/socket.io.min.js.map +++ b/dist/socket.io.min.js.map @@ -1 +1 @@ -{"version":3,"file":"socket.io.min.js","sources":["../node_modules/engine.io-parser/build/esm/commons.js","../node_modules/engine.io-parser/build/esm/contrib/base64-arraybuffer.js","../node_modules/engine.io-parser/build/esm/encodePacket.browser.js","../node_modules/engine.io-parser/build/esm/decodePacket.browser.js","../node_modules/engine.io-parser/build/esm/index.js","../node_modules/@socket.io/component-emitter/index.mjs","../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/yeast.js","../node_modules/engine.io-client/build/esm/transport.js","../node_modules/engine.io-client/build/esm/contrib/parseqs.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/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","../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","../build/esm/url.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","const 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 { PACKET_TYPES } from \"./commons.js\";\nconst withNativeBlob = typeof Blob === \"function\" ||\n (typeof Blob !== \"undefined\" &&\n Object.prototype.toString.call(Blob) === \"[object BlobConstructor]\");\nconst withNativeArrayBuffer = typeof ArrayBuffer === \"function\";\n// ArrayBuffer.isView method is not defined in IE10\nconst isView = obj => {\n return typeof ArrayBuffer.isView === \"function\"\n ? ArrayBuffer.isView(obj)\n : obj && obj.buffer instanceof ArrayBuffer;\n};\nconst encodePacket = ({ type, data }, supportsBinary, callback) => {\n if (withNativeBlob && data instanceof Blob) {\n if (supportsBinary) {\n return callback(data);\n }\n else {\n return encodeBlobAsBase64(data, callback);\n }\n }\n else if (withNativeArrayBuffer &&\n (data instanceof ArrayBuffer || isView(data))) {\n if (supportsBinary) {\n return callback(data);\n }\n else {\n return encodeBlobAsBase64(new Blob([data]), callback);\n }\n }\n // plain string\n return callback(PACKET_TYPES[type] + (data || \"\"));\n};\nconst encodeBlobAsBase64 = (data, callback) => {\n const fileReader = new FileReader();\n fileReader.onload = function () {\n const content = fileReader.result.split(\",\")[1];\n callback(\"b\" + content);\n };\n return fileReader.readAsDataURL(data);\n};\nexport default encodePacket;\n","import { ERROR_PACKET, PACKET_TYPES_REVERSE } from \"./commons.js\";\nimport { decode } from \"./contrib/base64-arraybuffer.js\";\nconst withNativeArrayBuffer = typeof ArrayBuffer === \"function\";\nconst decodePacket = (encodedPacket, binaryType) => {\n if (typeof encodedPacket !== \"string\") {\n return {\n type: \"message\",\n data: mapBinary(encodedPacket, binaryType)\n };\n }\n const type = encodedPacket.charAt(0);\n if (type === \"b\") {\n return {\n type: \"message\",\n data: decodeBase64Packet(encodedPacket.substring(1), binaryType)\n };\n }\n const packetType = PACKET_TYPES_REVERSE[type];\n if (!packetType) {\n return ERROR_PACKET;\n }\n return encodedPacket.length > 1\n ? {\n type: PACKET_TYPES_REVERSE[type],\n data: encodedPacket.substring(1)\n }\n : {\n type: PACKET_TYPES_REVERSE[type]\n };\n};\nconst decodeBase64Packet = (data, binaryType) => {\n if (withNativeArrayBuffer) {\n const decoded = decode(data);\n return mapBinary(decoded, binaryType);\n }\n else {\n return { base64: true, data }; // fallback for old browsers\n }\n};\nconst mapBinary = (data, binaryType) => {\n switch (binaryType) {\n case \"blob\":\n return data instanceof ArrayBuffer ? new Blob([data]) : data;\n case \"arraybuffer\":\n default:\n return data; // assuming the data is already an ArrayBuffer\n }\n};\nexport default decodePacket;\n","import encodePacket from \"./encodePacket.js\";\nimport decodePacket from \"./decodePacket.js\";\nconst SEPARATOR = String.fromCharCode(30); // see https://en.wikipedia.org/wiki/Delimiter#ASCII_delimited_text\nconst encodePayload = (packets, callback) => {\n // some packets may be added to the array while encoding, so the initial length must be saved\n const length = packets.length;\n const encodedPackets = new Array(length);\n let count = 0;\n packets.forEach((packet, i) => {\n // force base64 encoding for binary packets\n encodePacket(packet, false, encodedPacket => {\n encodedPackets[i] = encodedPacket;\n if (++count === length) {\n callback(encodedPackets.join(SEPARATOR));\n }\n });\n });\n};\nconst decodePayload = (encodedPayload, binaryType) => {\n const encodedPackets = encodedPayload.split(SEPARATOR);\n const packets = [];\n for (let i = 0; i < encodedPackets.length; i++) {\n const decodedPacket = decodePacket(encodedPackets[i], binaryType);\n packets.push(decodedPacket);\n if (decodedPacket.type === \"error\") {\n break;\n }\n }\n return packets;\n};\nexport const protocol = 4;\nexport { encodePacket, encodePayload, decodePacket, decodePayload };\n","/**\n * Initialize a new `Emitter`.\n *\n * @api public\n */\n\nexport function Emitter(obj) {\n if (obj) return mixin(obj);\n}\n\n/**\n * Mixin the emitter properties.\n *\n * @param {Object} obj\n * @return {Object}\n * @api private\n */\n\nfunction mixin(obj) {\n for (var key in Emitter.prototype) {\n obj[key] = Emitter.prototype[key];\n }\n return obj;\n}\n\n/**\n * Listen on the given `event` with `fn`.\n *\n * @param {String} event\n * @param {Function} fn\n * @return {Emitter}\n * @api public\n */\n\nEmitter.prototype.on =\nEmitter.prototype.addEventListener = function(event, fn){\n this._callbacks = this._callbacks || {};\n (this._callbacks['$' + event] = this._callbacks['$' + event] || [])\n .push(fn);\n return this;\n};\n\n/**\n * Adds an `event` listener that will be invoked a single\n * time then automatically removed.\n *\n * @param {String} event\n * @param {Function} fn\n * @return {Emitter}\n * @api public\n */\n\nEmitter.prototype.once = function(event, fn){\n function on() {\n this.off(event, on);\n fn.apply(this, arguments);\n }\n\n on.fn = fn;\n this.on(event, on);\n return this;\n};\n\n/**\n * Remove the given callback for `event` or all\n * registered callbacks.\n *\n * @param {String} event\n * @param {Function} fn\n * @return {Emitter}\n * @api public\n */\n\nEmitter.prototype.off =\nEmitter.prototype.removeListener =\nEmitter.prototype.removeAllListeners =\nEmitter.prototype.removeEventListener = function(event, fn){\n this._callbacks = this._callbacks || {};\n\n // all\n if (0 == arguments.length) {\n this._callbacks = {};\n return this;\n }\n\n // specific event\n var callbacks = this._callbacks['$' + event];\n if (!callbacks) return this;\n\n // remove all handlers\n if (1 == arguments.length) {\n delete this._callbacks['$' + event];\n return this;\n }\n\n // remove specific handler\n var cb;\n for (var i = 0; i < callbacks.length; i++) {\n cb = callbacks[i];\n if (cb === fn || cb.fn === fn) {\n callbacks.splice(i, 1);\n break;\n }\n }\n\n // Remove event specific arrays for event types that no\n // one is subscribed for to avoid memory leak.\n if (callbacks.length === 0) {\n delete this._callbacks['$' + event];\n }\n\n return this;\n};\n\n/**\n * Emit `event` with the given args.\n *\n * @param {String} event\n * @param {Mixed} ...\n * @return {Emitter}\n */\n\nEmitter.prototype.emit = function(event){\n this._callbacks = this._callbacks || {};\n\n var args = new Array(arguments.length - 1)\n , callbacks = this._callbacks['$' + event];\n\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n\n if (callbacks) {\n callbacks = callbacks.slice(0);\n for (var i = 0, len = callbacks.length; i < len; ++i) {\n callbacks[i].apply(this, args);\n }\n }\n\n return this;\n};\n\n// alias used for reserved events (protected method)\nEmitter.prototype.emitReserved = Emitter.prototype.emit;\n\n/**\n * Return array of callbacks for `event`.\n *\n * @param {String} event\n * @return {Array}\n * @api public\n */\n\nEmitter.prototype.listeners = function(event){\n this._callbacks = this._callbacks || {};\n return this._callbacks['$' + event] || [];\n};\n\n/**\n * Check if this emitter has `event` handlers.\n *\n * @param {String} event\n * @return {Boolean}\n * @api public\n */\n\nEmitter.prototype.hasListeners = function(event){\n return !! this.listeners(event).length;\n};\n","export const globalThisShim = (() => {\n if (typeof self !== \"undefined\") {\n return self;\n }\n else if (typeof window !== \"undefined\") {\n return window;\n }\n else {\n return Function(\"return this\")();\n }\n})();\n","import { globalThisShim as globalThis } from \"./globalThis.js\";\nexport function pick(obj, ...attr) {\n return attr.reduce((acc, k) => {\n if (obj.hasOwnProperty(k)) {\n acc[k] = obj[k];\n }\n return acc;\n }, {});\n}\n// Keep a reference to the real timeout functions so they can be used when overridden\nconst NATIVE_SET_TIMEOUT = globalThis.setTimeout;\nconst NATIVE_CLEAR_TIMEOUT = globalThis.clearTimeout;\nexport function installTimerFunctions(obj, opts) {\n if (opts.useNativeTimers) {\n obj.setTimeoutFn = NATIVE_SET_TIMEOUT.bind(globalThis);\n obj.clearTimeoutFn = NATIVE_CLEAR_TIMEOUT.bind(globalThis);\n }\n else {\n obj.setTimeoutFn = globalThis.setTimeout.bind(globalThis);\n obj.clearTimeoutFn = globalThis.clearTimeout.bind(globalThis);\n }\n}\n// base64 encoded buffers are about 33% bigger (https://en.wikipedia.org/wiki/Base64)\nconst BASE64_OVERHEAD = 1.33;\n// we could also have used `new Blob([obj]).size`, but it isn't supported in IE9\nexport function byteLength(obj) {\n if (typeof obj === \"string\") {\n return utf8Length(obj);\n }\n // arraybuffer or blob\n return Math.ceil((obj.byteLength || obj.size) * BASE64_OVERHEAD);\n}\nfunction utf8Length(str) {\n let c = 0, length = 0;\n for (let i = 0, l = str.length; i < l; i++) {\n c = str.charCodeAt(i);\n if (c < 0x80) {\n length += 1;\n }\n else if (c < 0x800) {\n length += 2;\n }\n else if (c < 0xd800 || c >= 0xe000) {\n length += 3;\n }\n else {\n i++;\n length += 4;\n }\n }\n return length;\n}\n","// imported from https://github.com/unshiftio/yeast\n'use strict';\nconst alphabet = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-_'.split(''), length = 64, map = {};\nlet seed = 0, i = 0, prev;\n/**\n * Return a string representing the specified number.\n *\n * @param {Number} num The number to convert.\n * @returns {String} The string representation of the number.\n * @api public\n */\nexport function encode(num) {\n let encoded = '';\n do {\n encoded = alphabet[num % length] + encoded;\n num = Math.floor(num / length);\n } while (num > 0);\n return encoded;\n}\n/**\n * Return the integer value specified by the given string.\n *\n * @param {String} str The string to convert.\n * @returns {Number} The integer value represented by the string.\n * @api public\n */\nexport function decode(str) {\n let decoded = 0;\n for (i = 0; i < str.length; i++) {\n decoded = decoded * length + map[str.charAt(i)];\n }\n return decoded;\n}\n/**\n * Yeast: A tiny growing id generator.\n *\n * @returns {String} A unique id.\n * @api public\n */\nexport function yeast() {\n const now = encode(+new Date());\n if (now !== prev)\n return seed = 0, prev = now;\n return now + '.' + encode(seed++);\n}\n//\n// Map each character to its index.\n//\nfor (; i < length; i++)\n map[alphabet[i]] = i;\n","import { decodePacket } from \"engine.io-parser\";\nimport { Emitter } from \"@socket.io/component-emitter\";\nimport { installTimerFunctions } from \"./util.js\";\nclass TransportError extends Error {\n constructor(reason, description, context) {\n super(reason);\n this.description = description;\n this.context = context;\n this.type = \"TransportError\";\n }\n}\nexport class Transport extends Emitter {\n /**\n * Transport abstract constructor.\n *\n * @param {Object} opts - options\n * @protected\n */\n constructor(opts) {\n super();\n this.writable = false;\n installTimerFunctions(this, opts);\n this.opts = opts;\n this.query = opts.query;\n this.socket = opts.socket;\n }\n /**\n * Emits an error.\n *\n * @param {String} reason\n * @param description\n * @param context - the error context\n * @return {Transport} for chaining\n * @protected\n */\n onError(reason, description, context) {\n super.emitReserved(\"error\", new TransportError(reason, description, context));\n return this;\n }\n /**\n * Opens the transport.\n */\n open() {\n this.readyState = \"opening\";\n this.doOpen();\n return this;\n }\n /**\n * Closes the transport.\n */\n close() {\n if (this.readyState === \"opening\" || this.readyState === \"open\") {\n this.doClose();\n this.onClose();\n }\n return this;\n }\n /**\n * Sends multiple packets.\n *\n * @param {Array} packets\n */\n send(packets) {\n if (this.readyState === \"open\") {\n this.write(packets);\n }\n else {\n // this might happen if the transport was silently closed in the beforeunload event handler\n }\n }\n /**\n * Called upon open\n *\n * @protected\n */\n onOpen() {\n this.readyState = \"open\";\n this.writable = true;\n super.emitReserved(\"open\");\n }\n /**\n * Called with data.\n *\n * @param {String} data\n * @protected\n */\n onData(data) {\n const packet = decodePacket(data, this.socket.binaryType);\n this.onPacket(packet);\n }\n /**\n * Called with a decoded packet.\n *\n * @protected\n */\n onPacket(packet) {\n super.emitReserved(\"packet\", packet);\n }\n /**\n * Called upon close.\n *\n * @protected\n */\n onClose(details) {\n this.readyState = \"closed\";\n super.emitReserved(\"close\", details);\n }\n /**\n * Pauses the transport, in order not to lose packets during an upgrade.\n *\n * @param onPause\n */\n pause(onPause) { }\n}\n","// imported from https://github.com/galkn/querystring\n/**\n * Compiles a querystring\n * Returns string representation of the object\n *\n * @param {Object}\n * @api private\n */\nexport function encode(obj) {\n let str = '';\n for (let i in obj) {\n if (obj.hasOwnProperty(i)) {\n if (str.length)\n str += '&';\n str += encodeURIComponent(i) + '=' + encodeURIComponent(obj[i]);\n }\n }\n return str;\n}\n/**\n * Parses a simple querystring into an object\n *\n * @param {String} qs\n * @api private\n */\nexport function decode(qs) {\n let qry = {};\n let pairs = qs.split('&');\n for (let i = 0, l = pairs.length; i < l; i++) {\n let pair = pairs[i].split('=');\n qry[decodeURIComponent(pair[0])] = decodeURIComponent(pair[1]);\n }\n return qry;\n}\n","// imported from https://github.com/component/has-cors\nlet value = false;\ntry {\n value = typeof XMLHttpRequest !== 'undefined' &&\n 'withCredentials' in new XMLHttpRequest();\n}\ncatch (err) {\n // if XMLHttp support is disabled in IE then it will throw\n // when trying to create\n}\nexport const hasCORS = value;\n","// browser shim for xmlhttprequest module\nimport { hasCORS } from \"../contrib/has-cors.js\";\nimport { globalThisShim as globalThis } from \"../globalThis.js\";\nexport function XHR(opts) {\n const xdomain = opts.xdomain;\n // XMLHttpRequest can be disabled on IE\n try {\n if (\"undefined\" !== typeof XMLHttpRequest && (!xdomain || hasCORS)) {\n return new XMLHttpRequest();\n }\n }\n catch (e) { }\n if (!xdomain) {\n try {\n return new globalThis[[\"Active\"].concat(\"Object\").join(\"X\")](\"Microsoft.XMLHTTP\");\n }\n catch (e) { }\n }\n}\n","import { Transport } from \"../transport.js\";\nimport { yeast } from \"../contrib/yeast.js\";\nimport { encode } from \"../contrib/parseqs.js\";\nimport { encodePayload, decodePayload } from \"engine.io-parser\";\nimport { XHR as XMLHttpRequest } from \"./xmlhttprequest.js\";\nimport { Emitter } from \"@socket.io/component-emitter\";\nimport { installTimerFunctions, pick } from \"../util.js\";\nimport { globalThisShim as globalThis } from \"../globalThis.js\";\nfunction empty() { }\nconst hasXHR2 = (function () {\n const xhr = new XMLHttpRequest({\n xdomain: false,\n });\n return null != xhr.responseType;\n})();\nexport class Polling extends Transport {\n /**\n * XHR Polling constructor.\n *\n * @param {Object} opts\n * @package\n */\n constructor(opts) {\n super(opts);\n this.polling = false;\n if (typeof location !== \"undefined\") {\n const isSSL = \"https:\" === location.protocol;\n let port = location.port;\n // some user agents have empty `location.port`\n if (!port) {\n port = isSSL ? \"443\" : \"80\";\n }\n this.xd =\n (typeof location !== \"undefined\" &&\n opts.hostname !== location.hostname) ||\n port !== opts.port;\n this.xs = opts.secure !== isSSL;\n }\n /**\n * XHR supports binary\n */\n const forceBase64 = opts && opts.forceBase64;\n this.supportsBinary = hasXHR2 && !forceBase64;\n }\n get name() {\n return \"polling\";\n }\n /**\n * Opens the socket (triggers polling). We write a PING message to determine\n * when the transport is open.\n *\n * @protected\n */\n doOpen() {\n this.poll();\n }\n /**\n * Pauses polling.\n *\n * @param {Function} onPause - callback upon buffers are flushed and transport is paused\n * @package\n */\n pause(onPause) {\n this.readyState = \"pausing\";\n const pause = () => {\n this.readyState = \"paused\";\n onPause();\n };\n if (this.polling || !this.writable) {\n let total = 0;\n if (this.polling) {\n total++;\n this.once(\"pollComplete\", function () {\n --total || pause();\n });\n }\n if (!this.writable) {\n total++;\n this.once(\"drain\", function () {\n --total || pause();\n });\n }\n }\n else {\n pause();\n }\n }\n /**\n * Starts polling cycle.\n *\n * @private\n */\n poll() {\n this.polling = true;\n this.doPoll();\n this.emitReserved(\"poll\");\n }\n /**\n * Overloads onData to detect payloads.\n *\n * @protected\n */\n onData(data) {\n const callback = (packet) => {\n // if its the first message we consider the transport open\n if (\"opening\" === this.readyState && packet.type === \"open\") {\n this.onOpen();\n }\n // if its a close packet, we close the ongoing requests\n if (\"close\" === packet.type) {\n this.onClose({ description: \"transport closed by the server\" });\n return false;\n }\n // otherwise bypass onData and handle the message\n this.onPacket(packet);\n };\n // decode payload\n decodePayload(data, this.socket.binaryType).forEach(callback);\n // if an event did not trigger closing\n if (\"closed\" !== this.readyState) {\n // if we got data we're not polling\n this.polling = false;\n this.emitReserved(\"pollComplete\");\n if (\"open\" === this.readyState) {\n this.poll();\n }\n else {\n }\n }\n }\n /**\n * For polling, send a close packet.\n *\n * @protected\n */\n doClose() {\n const close = () => {\n this.write([{ type: \"close\" }]);\n };\n if (\"open\" === this.readyState) {\n close();\n }\n else {\n // in case we're trying to close while\n // handshaking is in progress (GH-164)\n this.once(\"open\", close);\n }\n }\n /**\n * Writes a packets payload.\n *\n * @param {Array} packets - data packets\n * @protected\n */\n write(packets) {\n this.writable = false;\n encodePayload(packets, (data) => {\n this.doWrite(data, () => {\n this.writable = true;\n this.emitReserved(\"drain\");\n });\n });\n }\n /**\n * Generates uri for connection.\n *\n * @private\n */\n uri() {\n let query = this.query || {};\n const schema = this.opts.secure ? \"https\" : \"http\";\n let port = \"\";\n // cache busting is forced\n if (false !== this.opts.timestampRequests) {\n query[this.opts.timestampParam] = yeast();\n }\n if (!this.supportsBinary && !query.sid) {\n query.b64 = 1;\n }\n // avoid port if default for schema\n if (this.opts.port &&\n ((\"https\" === schema && Number(this.opts.port) !== 443) ||\n (\"http\" === schema && Number(this.opts.port) !== 80))) {\n port = \":\" + this.opts.port;\n }\n const encodedQuery = encode(query);\n const ipv6 = this.opts.hostname.indexOf(\":\") !== -1;\n return (schema +\n \"://\" +\n (ipv6 ? \"[\" + this.opts.hostname + \"]\" : this.opts.hostname) +\n port +\n this.opts.path +\n (encodedQuery.length ? \"?\" + encodedQuery : \"\"));\n }\n /**\n * Creates a request.\n *\n * @param {String} method\n * @private\n */\n request(opts = {}) {\n Object.assign(opts, { xd: this.xd, xs: this.xs }, this.opts);\n return new Request(this.uri(), opts);\n }\n /**\n * Sends data.\n *\n * @param {String} data to send.\n * @param {Function} called upon flush.\n * @private\n */\n doWrite(data, fn) {\n const req = this.request({\n method: \"POST\",\n data: data,\n });\n req.on(\"success\", fn);\n req.on(\"error\", (xhrStatus, context) => {\n this.onError(\"xhr post error\", xhrStatus, context);\n });\n }\n /**\n * Starts a poll cycle.\n *\n * @private\n */\n doPoll() {\n const req = this.request();\n req.on(\"data\", this.onData.bind(this));\n req.on(\"error\", (xhrStatus, context) => {\n this.onError(\"xhr poll error\", xhrStatus, context);\n });\n this.pollXhr = req;\n }\n}\nexport class Request extends Emitter {\n /**\n * Request constructor\n *\n * @param {Object} options\n * @package\n */\n constructor(uri, opts) {\n super();\n installTimerFunctions(this, opts);\n this.opts = opts;\n this.method = opts.method || \"GET\";\n this.uri = uri;\n this.async = false !== opts.async;\n this.data = undefined !== opts.data ? opts.data : null;\n this.create();\n }\n /**\n * Creates the XHR object and sends the request.\n *\n * @private\n */\n create() {\n const opts = pick(this.opts, \"agent\", \"pfx\", \"key\", \"passphrase\", \"cert\", \"ca\", \"ciphers\", \"rejectUnauthorized\", \"autoUnref\");\n opts.xdomain = !!this.opts.xd;\n opts.xscheme = !!this.opts.xs;\n const xhr = (this.xhr = new XMLHttpRequest(opts));\n try {\n xhr.open(this.method, this.uri, this.async);\n try {\n if (this.opts.extraHeaders) {\n xhr.setDisableHeaderCheck && xhr.setDisableHeaderCheck(true);\n for (let i in this.opts.extraHeaders) {\n if (this.opts.extraHeaders.hasOwnProperty(i)) {\n xhr.setRequestHeader(i, this.opts.extraHeaders[i]);\n }\n }\n }\n }\n catch (e) { }\n if (\"POST\" === this.method) {\n try {\n xhr.setRequestHeader(\"Content-type\", \"text/plain;charset=UTF-8\");\n }\n catch (e) { }\n }\n try {\n xhr.setRequestHeader(\"Accept\", \"*/*\");\n }\n catch (e) { }\n // ie6 check\n if (\"withCredentials\" in xhr) {\n xhr.withCredentials = this.opts.withCredentials;\n }\n if (this.opts.requestTimeout) {\n xhr.timeout = this.opts.requestTimeout;\n }\n xhr.onreadystatechange = () => {\n if (4 !== xhr.readyState)\n return;\n if (200 === xhr.status || 1223 === xhr.status) {\n this.onLoad();\n }\n else {\n // make sure the `error` event handler that's user-set\n // does not throw in the same tick and gets caught here\n this.setTimeoutFn(() => {\n this.onError(typeof xhr.status === \"number\" ? xhr.status : 0);\n }, 0);\n }\n };\n xhr.send(this.data);\n }\n catch (e) {\n // Need to defer since .create() is called directly from the constructor\n // and thus the 'error' event can only be only bound *after* this exception\n // occurs. Therefore, also, we cannot throw here at all.\n this.setTimeoutFn(() => {\n this.onError(e);\n }, 0);\n return;\n }\n if (typeof document !== \"undefined\") {\n this.index = Request.requestsCount++;\n Request.requests[this.index] = this;\n }\n }\n /**\n * Called upon error.\n *\n * @private\n */\n onError(err) {\n this.emitReserved(\"error\", err, this.xhr);\n this.cleanup(true);\n }\n /**\n * Cleans up house.\n *\n * @private\n */\n cleanup(fromError) {\n if (\"undefined\" === typeof this.xhr || null === this.xhr) {\n return;\n }\n this.xhr.onreadystatechange = empty;\n if (fromError) {\n try {\n this.xhr.abort();\n }\n catch (e) { }\n }\n if (typeof document !== \"undefined\") {\n delete Request.requests[this.index];\n }\n this.xhr = null;\n }\n /**\n * Called upon load.\n *\n * @private\n */\n onLoad() {\n const data = this.xhr.responseText;\n if (data !== null) {\n this.emitReserved(\"data\", data);\n this.emitReserved(\"success\");\n this.cleanup();\n }\n }\n /**\n * Aborts the request.\n *\n * @package\n */\n abort() {\n this.cleanup();\n }\n}\nRequest.requestsCount = 0;\nRequest.requests = {};\n/**\n * Aborts pending requests when unloading the window. This is needed to prevent\n * memory leaks (e.g. when using IE) and to ensure that no spurious error is\n * emitted.\n */\nif (typeof document !== \"undefined\") {\n // @ts-ignore\n if (typeof attachEvent === \"function\") {\n // @ts-ignore\n attachEvent(\"onunload\", unloadHandler);\n }\n else if (typeof addEventListener === \"function\") {\n const terminationEvent = \"onpagehide\" in globalThis ? \"pagehide\" : \"unload\";\n addEventListener(terminationEvent, unloadHandler, false);\n }\n}\nfunction unloadHandler() {\n for (let i in Request.requests) {\n if (Request.requests.hasOwnProperty(i)) {\n Request.requests[i].abort();\n }\n }\n}\n","import { globalThisShim as globalThis } from \"../globalThis.js\";\nexport const nextTick = (() => {\n const isPromiseAvailable = typeof Promise === \"function\" && typeof Promise.resolve === \"function\";\n if (isPromiseAvailable) {\n return (cb) => Promise.resolve().then(cb);\n }\n else {\n return (cb, setTimeoutFn) => setTimeoutFn(cb, 0);\n }\n})();\nexport const WebSocket = globalThis.WebSocket || globalThis.MozWebSocket;\nexport const usingBrowserWebSocket = true;\nexport const defaultBinaryType = \"arraybuffer\";\n","import { Transport } from \"../transport.js\";\nimport { encode } from \"../contrib/parseqs.js\";\nimport { yeast } from \"../contrib/yeast.js\";\nimport { pick } from \"../util.js\";\nimport { defaultBinaryType, nextTick, usingBrowserWebSocket, WebSocket, } from \"./websocket-constructor.js\";\nimport { encodePacket } from \"engine.io-parser\";\n// detect ReactNative environment\nconst isReactNative = typeof navigator !== \"undefined\" &&\n typeof navigator.product === \"string\" &&\n navigator.product.toLowerCase() === \"reactnative\";\nexport class WS extends Transport {\n /**\n * WebSocket transport constructor.\n *\n * @param {Object} opts - connection options\n * @protected\n */\n constructor(opts) {\n super(opts);\n this.supportsBinary = !opts.forceBase64;\n }\n get name() {\n return \"websocket\";\n }\n doOpen() {\n if (!this.check()) {\n // let probe timeout\n return;\n }\n const uri = this.uri();\n const protocols = this.opts.protocols;\n // React Native only supports the 'headers' option, and will print a warning if anything else is passed\n const opts = isReactNative\n ? {}\n : pick(this.opts, \"agent\", \"perMessageDeflate\", \"pfx\", \"key\", \"passphrase\", \"cert\", \"ca\", \"ciphers\", \"rejectUnauthorized\", \"localAddress\", \"protocolVersion\", \"origin\", \"maxPayload\", \"family\", \"checkServerIdentity\");\n if (this.opts.extraHeaders) {\n opts.headers = this.opts.extraHeaders;\n }\n try {\n this.ws =\n usingBrowserWebSocket && !isReactNative\n ? protocols\n ? new WebSocket(uri, protocols)\n : new WebSocket(uri)\n : new WebSocket(uri, protocols, opts);\n }\n catch (err) {\n return this.emitReserved(\"error\", err);\n }\n this.ws.binaryType = this.socket.binaryType || defaultBinaryType;\n this.addEventListeners();\n }\n /**\n * Adds event listeners to the socket\n *\n * @private\n */\n addEventListeners() {\n this.ws.onopen = () => {\n if (this.opts.autoUnref) {\n this.ws._socket.unref();\n }\n this.onOpen();\n };\n this.ws.onclose = (closeEvent) => this.onClose({\n description: \"websocket connection closed\",\n context: closeEvent,\n });\n this.ws.onmessage = (ev) => this.onData(ev.data);\n this.ws.onerror = (e) => this.onError(\"websocket error\", e);\n }\n write(packets) {\n this.writable = false;\n // encodePacket efficient as it uses WS framing\n // no need for encodePayload\n for (let i = 0; i < packets.length; i++) {\n const packet = packets[i];\n const lastPacket = i === packets.length - 1;\n encodePacket(packet, this.supportsBinary, (data) => {\n // always create a new object (GH-437)\n const opts = {};\n if (!usingBrowserWebSocket) {\n if (packet.options) {\n opts.compress = packet.options.compress;\n }\n if (this.opts.perMessageDeflate) {\n const len = \n // @ts-ignore\n \"string\" === typeof data ? Buffer.byteLength(data) : data.length;\n if (len < this.opts.perMessageDeflate.threshold) {\n opts.compress = false;\n }\n }\n }\n // Sometimes the websocket has already been closed but the browser didn't\n // have a chance of informing us about it yet, in that case send will\n // throw an error\n try {\n if (usingBrowserWebSocket) {\n // TypeError is thrown when passing the second argument on Safari\n this.ws.send(data);\n }\n else {\n this.ws.send(data, opts);\n }\n }\n catch (e) {\n }\n if (lastPacket) {\n // fake drain\n // defer to next tick to allow Socket to clear writeBuffer\n nextTick(() => {\n this.writable = true;\n this.emitReserved(\"drain\");\n }, this.setTimeoutFn);\n }\n });\n }\n }\n doClose() {\n if (typeof this.ws !== \"undefined\") {\n this.ws.close();\n this.ws = null;\n }\n }\n /**\n * Generates uri for connection.\n *\n * @private\n */\n uri() {\n let query = this.query || {};\n const schema = this.opts.secure ? \"wss\" : \"ws\";\n let port = \"\";\n // avoid port if default for schema\n if (this.opts.port &&\n ((\"wss\" === schema && Number(this.opts.port) !== 443) ||\n (\"ws\" === schema && Number(this.opts.port) !== 80))) {\n port = \":\" + this.opts.port;\n }\n // append timestamp to URI\n if (this.opts.timestampRequests) {\n query[this.opts.timestampParam] = yeast();\n }\n // communicate binary support capabilities\n if (!this.supportsBinary) {\n query.b64 = 1;\n }\n const encodedQuery = encode(query);\n const ipv6 = this.opts.hostname.indexOf(\":\") !== -1;\n return (schema +\n \"://\" +\n (ipv6 ? \"[\" + this.opts.hostname + \"]\" : this.opts.hostname) +\n port +\n this.opts.path +\n (encodedQuery.length ? \"?\" + encodedQuery : \"\"));\n }\n /**\n * Feature detection for WebSocket.\n *\n * @return {Boolean} whether this transport is available.\n * @private\n */\n check() {\n return !!WebSocket;\n }\n}\n","import { Polling } from \"./polling.js\";\nimport { WS } from \"./websocket.js\";\nexport const transports = {\n websocket: WS,\n polling: Polling,\n};\n","// imported from https://github.com/galkn/parseuri\n/**\n * Parses a URI\n *\n * Note: we could also have used the built-in URL object, but it isn't supported on all platforms.\n *\n * See:\n * - https://developer.mozilla.org/en-US/docs/Web/API/URL\n * - https://caniuse.com/url\n * - https://www.rfc-editor.org/rfc/rfc3986#appendix-B\n *\n * History of the parse() method:\n * - first commit: https://github.com/socketio/socket.io-client/commit/4ee1d5d94b3906a9c052b459f1a818b15f38f91c\n * - export into its own module: https://github.com/socketio/engine.io-client/commit/de2c561e4564efeb78f1bdb1ba39ef81b2822cb3\n * - reimport: https://github.com/socketio/engine.io-client/commit/df32277c3f6d622eec5ed09f493cae3f3391d242\n *\n * @author Steven Levithan (MIT license)\n * @api private\n */\nconst re = /^(?:(?![^:@\\/?#]+:[^:@\\/]*@)(http|https|ws|wss):\\/\\/)?((?:(([^:@\\/?#]*)(?::([^:@\\/?#]*))?)?@)?((?:[a-f0-9]{0,4}:){2,7}[a-f0-9]{0,4}|[^:\\/?#]*)(?::(\\d*))?)(((\\/(?:[^?#](?![^?#\\/]*\\.[^?#\\/.]+(?:[?#]|$)))*\\/?)?([^?#\\/]*))(?:\\?([^#]*))?(?:#(.*))?)/;\nconst parts = [\n 'source', 'protocol', 'authority', 'userInfo', 'user', 'password', 'host', 'port', 'relative', 'path', 'directory', 'file', 'query', 'anchor'\n];\nexport function parse(str) {\n const src = str, b = str.indexOf('['), e = str.indexOf(']');\n if (b != -1 && e != -1) {\n str = str.substring(0, b) + str.substring(b, e).replace(/:/g, ';') + str.substring(e, str.length);\n }\n let m = re.exec(str || ''), uri = {}, i = 14;\n while (i--) {\n uri[parts[i]] = m[i] || '';\n }\n if (b != -1 && e != -1) {\n uri.source = src;\n uri.host = uri.host.substring(1, uri.host.length - 1).replace(/;/g, ':');\n uri.authority = uri.authority.replace('[', '').replace(']', '').replace(/;/g, ':');\n uri.ipv6uri = true;\n }\n uri.pathNames = pathNames(uri, uri['path']);\n uri.queryKey = queryKey(uri, uri['query']);\n return uri;\n}\nfunction pathNames(obj, path) {\n const regx = /\\/{2,9}/g, names = path.replace(regx, \"/\").split(\"/\");\n if (path.slice(0, 1) == '/' || path.length === 0) {\n names.splice(0, 1);\n }\n if (path.slice(-1) == '/') {\n names.splice(names.length - 1, 1);\n }\n return names;\n}\nfunction queryKey(uri, query) {\n const data = {};\n query.replace(/(?:^|&)([^&=]*)=?([^&]*)/g, function ($0, $1, $2) {\n if ($1) {\n data[$1] = $2;\n }\n });\n return data;\n}\n","import { transports } from \"./transports/index.js\";\nimport { installTimerFunctions, byteLength } from \"./util.js\";\nimport { decode } from \"./contrib/parseqs.js\";\nimport { parse } from \"./contrib/parseuri.js\";\nimport { Emitter } from \"@socket.io/component-emitter\";\nimport { protocol } from \"engine.io-parser\";\nexport class Socket extends Emitter {\n /**\n * Socket constructor.\n *\n * @param {String|Object} uri - uri or options\n * @param {Object} opts - options\n */\n constructor(uri, opts = {}) {\n super();\n this.writeBuffer = [];\n if (uri && \"object\" === typeof uri) {\n opts = uri;\n uri = null;\n }\n if (uri) {\n uri = parse(uri);\n opts.hostname = uri.host;\n opts.secure = uri.protocol === \"https\" || uri.protocol === \"wss\";\n opts.port = uri.port;\n if (uri.query)\n opts.query = uri.query;\n }\n else if (opts.host) {\n opts.hostname = parse(opts.host).host;\n }\n installTimerFunctions(this, opts);\n this.secure =\n null != opts.secure\n ? opts.secure\n : typeof location !== \"undefined\" && \"https:\" === location.protocol;\n if (opts.hostname && !opts.port) {\n // if no port is specified manually, use the protocol default\n opts.port = this.secure ? \"443\" : \"80\";\n }\n this.hostname =\n opts.hostname ||\n (typeof location !== \"undefined\" ? location.hostname : \"localhost\");\n this.port =\n opts.port ||\n (typeof location !== \"undefined\" && location.port\n ? location.port\n : this.secure\n ? \"443\"\n : \"80\");\n this.transports = opts.transports || [\"polling\", \"websocket\"];\n this.writeBuffer = [];\n this.prevBufferLen = 0;\n this.opts = Object.assign({\n path: \"/engine.io\",\n agent: false,\n withCredentials: false,\n upgrade: true,\n timestampParam: \"t\",\n rememberUpgrade: false,\n addTrailingSlash: true,\n rejectUnauthorized: true,\n perMessageDeflate: {\n threshold: 1024,\n },\n transportOptions: {},\n closeOnBeforeunload: true,\n }, opts);\n this.opts.path =\n this.opts.path.replace(/\\/$/, \"\") +\n (this.opts.addTrailingSlash ? \"/\" : \"\");\n if (typeof this.opts.query === \"string\") {\n this.opts.query = decode(this.opts.query);\n }\n // set on handshake\n this.id = null;\n this.upgrades = null;\n this.pingInterval = null;\n this.pingTimeout = null;\n // set on heartbeat\n this.pingTimeoutTimer = null;\n if (typeof addEventListener === \"function\") {\n if (this.opts.closeOnBeforeunload) {\n // Firefox closes the connection when the \"beforeunload\" event is emitted but not Chrome. This event listener\n // ensures every browser behaves the same (no \"disconnect\" event at the Socket.IO level when the page is\n // closed/reloaded)\n this.beforeunloadEventListener = () => {\n if (this.transport) {\n // silently close the transport\n this.transport.removeAllListeners();\n this.transport.close();\n }\n };\n addEventListener(\"beforeunload\", this.beforeunloadEventListener, false);\n }\n if (this.hostname !== \"localhost\") {\n this.offlineEventListener = () => {\n this.onClose(\"transport close\", {\n description: \"network connection lost\",\n });\n };\n addEventListener(\"offline\", this.offlineEventListener, false);\n }\n }\n this.open();\n }\n /**\n * Creates transport of the given type.\n *\n * @param {String} name - transport name\n * @return {Transport}\n * @private\n */\n createTransport(name) {\n const query = Object.assign({}, this.opts.query);\n // append engine.io protocol identifier\n query.EIO = protocol;\n // transport name\n query.transport = name;\n // session id if we already have one\n if (this.id)\n query.sid = this.id;\n const opts = Object.assign({}, this.opts.transportOptions[name], this.opts, {\n query,\n socket: this,\n hostname: this.hostname,\n secure: this.secure,\n port: this.port,\n });\n return new transports[name](opts);\n }\n /**\n * Initializes transport to use and starts probe.\n *\n * @private\n */\n open() {\n let transport;\n if (this.opts.rememberUpgrade &&\n Socket.priorWebsocketSuccess &&\n this.transports.indexOf(\"websocket\") !== -1) {\n transport = \"websocket\";\n }\n else if (0 === this.transports.length) {\n // Emit error on next tick so it can be listened to\n this.setTimeoutFn(() => {\n this.emitReserved(\"error\", \"No transports available\");\n }, 0);\n return;\n }\n else {\n transport = this.transports[0];\n }\n this.readyState = \"opening\";\n // Retry with the next transport if the transport is disabled (jsonp: false)\n try {\n transport = this.createTransport(transport);\n }\n catch (e) {\n this.transports.shift();\n this.open();\n return;\n }\n transport.open();\n this.setTransport(transport);\n }\n /**\n * Sets the current transport. Disables the existing one (if any).\n *\n * @private\n */\n setTransport(transport) {\n if (this.transport) {\n this.transport.removeAllListeners();\n }\n // set up transport\n this.transport = transport;\n // set up transport listeners\n transport\n .on(\"drain\", this.onDrain.bind(this))\n .on(\"packet\", this.onPacket.bind(this))\n .on(\"error\", this.onError.bind(this))\n .on(\"close\", (reason) => this.onClose(\"transport close\", reason));\n }\n /**\n * Probes a transport.\n *\n * @param {String} name - transport name\n * @private\n */\n probe(name) {\n let transport = this.createTransport(name);\n let failed = false;\n Socket.priorWebsocketSuccess = false;\n const onTransportOpen = () => {\n if (failed)\n return;\n transport.send([{ type: \"ping\", data: \"probe\" }]);\n transport.once(\"packet\", (msg) => {\n if (failed)\n return;\n if (\"pong\" === msg.type && \"probe\" === msg.data) {\n this.upgrading = true;\n this.emitReserved(\"upgrading\", transport);\n if (!transport)\n return;\n Socket.priorWebsocketSuccess = \"websocket\" === transport.name;\n this.transport.pause(() => {\n if (failed)\n return;\n if (\"closed\" === this.readyState)\n return;\n cleanup();\n this.setTransport(transport);\n transport.send([{ type: \"upgrade\" }]);\n this.emitReserved(\"upgrade\", transport);\n transport = null;\n this.upgrading = false;\n this.flush();\n });\n }\n else {\n const err = new Error(\"probe error\");\n // @ts-ignore\n err.transport = transport.name;\n this.emitReserved(\"upgradeError\", err);\n }\n });\n };\n function freezeTransport() {\n if (failed)\n return;\n // Any callback called by transport should be ignored since now\n failed = true;\n cleanup();\n transport.close();\n transport = null;\n }\n // Handle any error that happens while probing\n const onerror = (err) => {\n const error = new Error(\"probe error: \" + err);\n // @ts-ignore\n error.transport = transport.name;\n freezeTransport();\n this.emitReserved(\"upgradeError\", error);\n };\n function onTransportClose() {\n onerror(\"transport closed\");\n }\n // When the socket is closed while we're probing\n function onclose() {\n onerror(\"socket closed\");\n }\n // When the socket is upgraded while we're probing\n function onupgrade(to) {\n if (transport && to.name !== transport.name) {\n freezeTransport();\n }\n }\n // Remove all listeners on the transport and on self\n const cleanup = () => {\n transport.removeListener(\"open\", onTransportOpen);\n transport.removeListener(\"error\", onerror);\n transport.removeListener(\"close\", onTransportClose);\n this.off(\"close\", onclose);\n this.off(\"upgrading\", onupgrade);\n };\n transport.once(\"open\", onTransportOpen);\n transport.once(\"error\", onerror);\n transport.once(\"close\", onTransportClose);\n this.once(\"close\", onclose);\n this.once(\"upgrading\", onupgrade);\n transport.open();\n }\n /**\n * Called when connection is deemed open.\n *\n * @private\n */\n onOpen() {\n this.readyState = \"open\";\n Socket.priorWebsocketSuccess = \"websocket\" === this.transport.name;\n this.emitReserved(\"open\");\n this.flush();\n // we check for `readyState` in case an `open`\n // listener already closed the socket\n if (\"open\" === this.readyState && this.opts.upgrade) {\n let i = 0;\n const l = this.upgrades.length;\n for (; i < l; i++) {\n this.probe(this.upgrades[i]);\n }\n }\n }\n /**\n * Handles a packet.\n *\n * @private\n */\n onPacket(packet) {\n if (\"opening\" === this.readyState ||\n \"open\" === this.readyState ||\n \"closing\" === this.readyState) {\n this.emitReserved(\"packet\", packet);\n // Socket is live - any packet counts\n this.emitReserved(\"heartbeat\");\n switch (packet.type) {\n case \"open\":\n this.onHandshake(JSON.parse(packet.data));\n break;\n case \"ping\":\n this.resetPingTimeout();\n this.sendPacket(\"pong\");\n this.emitReserved(\"ping\");\n this.emitReserved(\"pong\");\n break;\n case \"error\":\n const err = new Error(\"server error\");\n // @ts-ignore\n err.code = packet.data;\n this.onError(err);\n break;\n case \"message\":\n this.emitReserved(\"data\", packet.data);\n this.emitReserved(\"message\", packet.data);\n break;\n }\n }\n else {\n }\n }\n /**\n * Called upon handshake completion.\n *\n * @param {Object} data - handshake obj\n * @private\n */\n onHandshake(data) {\n this.emitReserved(\"handshake\", data);\n this.id = data.sid;\n this.transport.query.sid = data.sid;\n this.upgrades = this.filterUpgrades(data.upgrades);\n this.pingInterval = data.pingInterval;\n this.pingTimeout = data.pingTimeout;\n this.maxPayload = data.maxPayload;\n this.onOpen();\n // In case open handler closes socket\n if (\"closed\" === this.readyState)\n return;\n this.resetPingTimeout();\n }\n /**\n * Sets and resets ping timeout timer based on server pings.\n *\n * @private\n */\n resetPingTimeout() {\n this.clearTimeoutFn(this.pingTimeoutTimer);\n this.pingTimeoutTimer = this.setTimeoutFn(() => {\n this.onClose(\"ping timeout\");\n }, this.pingInterval + this.pingTimeout);\n if (this.opts.autoUnref) {\n this.pingTimeoutTimer.unref();\n }\n }\n /**\n * Called on `drain` event\n *\n * @private\n */\n onDrain() {\n this.writeBuffer.splice(0, this.prevBufferLen);\n // setting prevBufferLen = 0 is very important\n // for example, when upgrading, upgrade packet is sent over,\n // and a nonzero prevBufferLen could cause problems on `drain`\n this.prevBufferLen = 0;\n if (0 === this.writeBuffer.length) {\n this.emitReserved(\"drain\");\n }\n else {\n this.flush();\n }\n }\n /**\n * Flush write buffers.\n *\n * @private\n */\n flush() {\n if (\"closed\" !== this.readyState &&\n this.transport.writable &&\n !this.upgrading &&\n this.writeBuffer.length) {\n const packets = this.getWritablePackets();\n this.transport.send(packets);\n // keep track of current length of writeBuffer\n // splice writeBuffer and callbackBuffer on `drain`\n this.prevBufferLen = packets.length;\n this.emitReserved(\"flush\");\n }\n }\n /**\n * Ensure the encoded size of the writeBuffer is below the maxPayload value sent by the server (only for HTTP\n * long-polling)\n *\n * @private\n */\n getWritablePackets() {\n const shouldCheckPayloadSize = this.maxPayload &&\n this.transport.name === \"polling\" &&\n this.writeBuffer.length > 1;\n if (!shouldCheckPayloadSize) {\n return this.writeBuffer;\n }\n let payloadSize = 1; // first packet type\n for (let i = 0; i < this.writeBuffer.length; i++) {\n const data = this.writeBuffer[i].data;\n if (data) {\n payloadSize += byteLength(data);\n }\n if (i > 0 && payloadSize > this.maxPayload) {\n return this.writeBuffer.slice(0, i);\n }\n payloadSize += 2; // separator + packet type\n }\n return this.writeBuffer;\n }\n /**\n * Sends a message.\n *\n * @param {String} msg - message.\n * @param {Object} options.\n * @param {Function} callback function.\n * @return {Socket} for chaining.\n */\n write(msg, options, fn) {\n this.sendPacket(\"message\", msg, options, fn);\n return this;\n }\n send(msg, options, fn) {\n this.sendPacket(\"message\", msg, options, fn);\n return this;\n }\n /**\n * Sends a packet.\n *\n * @param {String} type: packet type.\n * @param {String} data.\n * @param {Object} options.\n * @param {Function} fn - callback function.\n * @private\n */\n sendPacket(type, data, options, fn) {\n if (\"function\" === typeof data) {\n fn = data;\n data = undefined;\n }\n if (\"function\" === typeof options) {\n fn = options;\n options = null;\n }\n if (\"closing\" === this.readyState || \"closed\" === this.readyState) {\n return;\n }\n options = options || {};\n options.compress = false !== options.compress;\n const packet = {\n type: type,\n data: data,\n options: options,\n };\n this.emitReserved(\"packetCreate\", packet);\n this.writeBuffer.push(packet);\n if (fn)\n this.once(\"flush\", fn);\n this.flush();\n }\n /**\n * Closes the connection.\n */\n close() {\n const close = () => {\n this.onClose(\"forced close\");\n this.transport.close();\n };\n const cleanupAndClose = () => {\n this.off(\"upgrade\", cleanupAndClose);\n this.off(\"upgradeError\", cleanupAndClose);\n close();\n };\n const waitForUpgrade = () => {\n // wait for upgrade to finish since we can't send packets while pausing a transport\n this.once(\"upgrade\", cleanupAndClose);\n this.once(\"upgradeError\", cleanupAndClose);\n };\n if (\"opening\" === this.readyState || \"open\" === this.readyState) {\n this.readyState = \"closing\";\n if (this.writeBuffer.length) {\n this.once(\"drain\", () => {\n if (this.upgrading) {\n waitForUpgrade();\n }\n else {\n close();\n }\n });\n }\n else if (this.upgrading) {\n waitForUpgrade();\n }\n else {\n close();\n }\n }\n return this;\n }\n /**\n * Called upon transport error\n *\n * @private\n */\n onError(err) {\n Socket.priorWebsocketSuccess = false;\n this.emitReserved(\"error\", err);\n this.onClose(\"transport error\", err);\n }\n /**\n * Called upon transport close.\n *\n * @private\n */\n onClose(reason, description) {\n if (\"opening\" === this.readyState ||\n \"open\" === this.readyState ||\n \"closing\" === this.readyState) {\n // clear timers\n this.clearTimeoutFn(this.pingTimeoutTimer);\n // stop event from firing again for transport\n this.transport.removeAllListeners(\"close\");\n // ensure transport won't stay open\n this.transport.close();\n // ignore further transport communication\n this.transport.removeAllListeners();\n if (typeof removeEventListener === \"function\") {\n removeEventListener(\"beforeunload\", this.beforeunloadEventListener, false);\n removeEventListener(\"offline\", this.offlineEventListener, false);\n }\n // set ready state\n this.readyState = \"closed\";\n // clear session id\n this.id = null;\n // emit close event\n this.emitReserved(\"close\", reason, description);\n // clean buffers after, so users can still\n // grab the buffers on `close` event\n this.writeBuffer = [];\n this.prevBufferLen = 0;\n }\n }\n /**\n * Filters upgrades, returning only those matching client transports.\n *\n * @param {Array} upgrades - server upgrades\n * @private\n */\n filterUpgrades(upgrades) {\n const filteredUpgrades = [];\n let i = 0;\n const j = upgrades.length;\n for (; i < j; i++) {\n if (~this.transports.indexOf(upgrades[i]))\n filteredUpgrades.push(upgrades[i]);\n }\n return filteredUpgrades;\n }\n}\nSocket.protocol = protocol;\n","import { Socket } from \"./socket.js\";\nexport { 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","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 // emit `error`\n const errorSub = on(socket, \"error\", (err) => {\n self.cleanup();\n self._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 self.maybeReconnectOnOpen();\n }\n });\n if (false !== this._timeout) {\n const timeout = this._timeout;\n if (timeout === 0) {\n openSubDestroy(); // prevents a race condition with the 'open' event\n }\n // set timer\n const timer = this.setTimeoutFn(() => {\n openSubDestroy();\n socket.close();\n // @ts-ignore\n socket.emit(\"error\", new Error(\"timeout\"));\n }, timeout);\n if (this.opts.autoUnref) {\n timer.unref();\n }\n this.subs.push(function subDestroy() {\n clearTimeout(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(function subDestroy() {\n clearTimeout(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","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"],"names":["PACKET_TYPES","Object","create","PACKET_TYPES_REVERSE","keys","forEach","key","ERROR_PACKET","type","data","withNativeBlob","Blob","prototype","toString","call","withNativeArrayBuffer","ArrayBuffer","encodePacket","supportsBinary","callback","obj","encodeBlobAsBase64","isView","buffer","fileReader","FileReader","onload","content","result","split","readAsDataURL","chars","lookup","Uint8Array","i","length","charCodeAt","decodePacket","encodedPacket","binaryType","mapBinary","charAt","decodeBase64Packet","substring","decoded","base64","encoded1","encoded2","encoded3","encoded4","bufferLength","len","p","arraybuffer","bytes","decode","SEPARATOR","String","fromCharCode","Emitter","mixin","on","addEventListener","event","fn","this","_callbacks","push","once","off","apply","arguments","removeListener","removeAllListeners","removeEventListener","cb","callbacks","splice","emit","args","Array","slice","emitReserved","listeners","hasListeners","globalThisShim","self","window","Function","pick","_len","attr","_key","reduce","acc","k","hasOwnProperty","NATIVE_SET_TIMEOUT","globalThis","setTimeout","NATIVE_CLEAR_TIMEOUT","clearTimeout","installTimerFunctions","opts","useNativeTimers","setTimeoutFn","bind","clearTimeoutFn","prev","TransportError","reason","description","context","_this","_classCallCheck","_super","Error","Transport","_Emitter","_inherits","_super2","_createSuper","_this2","writable","_assertThisInitialized","query","socket","_createClass","value","_get","_getPrototypeOf","readyState","doOpen","doClose","onClose","packets","write","packet","onPacket","details","onPause","alphabet","map","seed","encode","num","encoded","Math","floor","yeast","now","Date","str","encodeURIComponent","qs","qry","pairs","l","pair","decodeURIComponent","XMLHttpRequest","err","hasCORS","XHR","xdomain","e","concat","join","empty","hasXHR2","responseType","Polling","_Transport","polling","location","isSSL","protocol","port","xd","hostname","xs","secure","forceBase64","get","poll","pause","total","doPoll","_this3","encodedPayload","encodedPackets","decodedPacket","decodePayload","onOpen","_this4","close","_this5","count","encodePayload","doWrite","schema","timestampRequests","timestampParam","sid","b64","Number","encodedQuery","indexOf","path","_extends","Request","uri","_this6","req","request","method","xhrStatus","onError","_this7","onData","pollXhr","_this8","async","undefined","_this9","xscheme","xhr","open","extraHeaders","setDisableHeaderCheck","setRequestHeader","withCredentials","requestTimeout","timeout","onreadystatechange","status","onLoad","send","document","index","requestsCount","requests","cleanup","fromError","abort","responseText","attachEvent","unloadHandler","nextTick","Promise","resolve","then","WebSocket","MozWebSocket","isReactNative","navigator","product","toLowerCase","WS","check","protocols","headers","ws","addEventListeners","onopen","autoUnref","_socket","unref","onclose","closeEvent","onmessage","ev","onerror","_loop","lastPacket","transports","websocket","re","parts","parse","src","b","replace","m","exec","source","host","authority","ipv6uri","pathNames","regx","names","queryKey","$0","$1","$2","Socket","writeBuffer","prevBufferLen","agent","upgrade","rememberUpgrade","addTrailingSlash","rejectUnauthorized","perMessageDeflate","threshold","transportOptions","closeOnBeforeunload","id","upgrades","pingInterval","pingTimeout","pingTimeoutTimer","beforeunloadEventListener","transport","offlineEventListener","name","EIO","priorWebsocketSuccess","createTransport","shift","setTransport","onDrain","failed","onTransportOpen","msg","upgrading","flush","freezeTransport","error","onTransportClose","onupgrade","to","probe","onHandshake","JSON","resetPingTimeout","sendPacket","code","filterUpgrades","maxPayload","getWritablePackets","payloadSize","c","utf8Length","ceil","byteLength","size","options","compress","cleanupAndClose","waitForUpgrade","filteredUpgrades","j","Socket$1","withNativeFile","File","isBinary","hasBinary","toJSON","_typeof","isArray","deconstructPacket","buffers","packetData","pack","_deconstructPacket","attachments","placeholder","_placeholder","newData","reconstructPacket","_reconstructPacket","PacketType","RESERVED_EVENTS","Encoder","replacer","EVENT","ACK","encodeAsString","encodeAsBinary","BINARY_EVENT","BINARY_ACK","nsp","stringify","deconstruction","unshift","isObject","Decoder","reviver","reconstructor","isBinaryEvent","decodeString","BinaryReconstructor","takeBinaryData","start","buf","next","payload","tryParse","substr","isPayloadValid","finishedReconstruction","CONNECT","DISCONNECT","CONNECT_ERROR","reconPack","binData","freeze","connect","connect_error","disconnect","disconnecting","newListener","io","connected","recovered","receiveBuffer","sendBuffer","_queue","_queueSeq","ids","acks","flags","auth","_opts","_autoConnect","subs","onpacket","subEvents","_readyState","_len2","_key2","retries","fromQueue","_addToQueue","ack","pop","_registerAckCallback","isTransportWritable","engine","discardPacket","notifyOutgoingListeners","_a","ackTimeout","timer","_len3","_key3","_len4","_key4","withErr","reject","arg1","arg2","tryCount","pending","hasError","_len5","responseArgs","_key5","_drainQueue","force","_packet","_sendConnectPacket","_pid","pid","offset","_lastOffset","onconnect","onevent","onack","ondisconnect","destroy","message","emitEvent","_anyListeners","_step","_iterator","_createForOfIteratorHelper","s","n","done","f","sent","_len6","_key6","emitBuffered","subDestroy","listener","_anyOutgoingListeners","_step2","_iterator2","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","errorSub","maybeReconnectOnOpen","onping","ondata","ondecoded","add","active","_i","_nsps","_close","delay","onreconnect","attempt","cache","parsed","loc","test","href","url","sameNamespace","forceNew","multiplex"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"socket.io.min.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/index.js","../node_modules/engine.io-client/node_modules/engine.io-parser/build/esm/decodePacket.browser.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/contrib/yeast.js","../node_modules/engine.io-client/build/esm/transport.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","../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","../build/esm/url.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 { 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","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","/**\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","// imported from https://github.com/unshiftio/yeast\n'use strict';\nconst alphabet = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-_'.split(''), length = 64, map = {};\nlet seed = 0, i = 0, prev;\n/**\n * Return a string representing the specified number.\n *\n * @param {Number} num The number to convert.\n * @returns {String} The string representation of the number.\n * @api public\n */\nexport function encode(num) {\n let encoded = '';\n do {\n encoded = alphabet[num % length] + encoded;\n num = Math.floor(num / length);\n } while (num > 0);\n return encoded;\n}\n/**\n * Return the integer value specified by the given string.\n *\n * @param {String} str The string to convert.\n * @returns {Number} The integer value represented by the string.\n * @api public\n */\nexport function decode(str) {\n let decoded = 0;\n for (i = 0; i < str.length; i++) {\n decoded = decoded * length + map[str.charAt(i)];\n }\n return decoded;\n}\n/**\n * Yeast: A tiny growing id generator.\n *\n * @returns {String} A unique id.\n * @api public\n */\nexport function yeast() {\n const now = encode(+new Date());\n if (now !== prev)\n return seed = 0, prev = now;\n return now + '.' + encode(seed++);\n}\n//\n// Map each character to its index.\n//\nfor (; i < length; i++)\n map[alphabet[i]] = i;\n","import { decodePacket } from \"engine.io-parser\";\nimport { Emitter } from \"@socket.io/component-emitter\";\nimport { installTimerFunctions } from \"./util.js\";\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/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 (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","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","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"],"names":["PACKET_TYPES","Object","create","PACKET_TYPES_REVERSE","keys","forEach","key","TEXT_ENCODER","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","chars","lookup","i","length","charCodeAt","TEXT_DECODER","decodePacket","encodedPacket","binaryType","mapBinary","charAt","decodeBase64Packet","substring","decoded","base64","encoded1","encoded2","encoded3","encoded4","bufferLength","len","p","arraybuffer","bytes","decode","SEPARATOR","String","fromCharCode","Emitter","mixin","on","addEventListener","event","fn","this","_callbacks","push","once","off","apply","arguments","removeListener","removeAllListeners","removeEventListener","cb","callbacks","splice","emit","args","Array","slice","emitReserved","listeners","hasListeners","globalThisShim","self","window","Function","pick","_len","attr","_key","reduce","acc","k","hasOwnProperty","NATIVE_SET_TIMEOUT","globalThis","setTimeout","NATIVE_CLEAR_TIMEOUT","clearTimeout","installTimerFunctions","opts","useNativeTimers","setTimeoutFn","bind","clearTimeoutFn","qs","qry","pairs","l","pair","decodeURIComponent","prev","TransportError","reason","description","context","_this","_classCallCheck","_super","Error","Transport","_Emitter","_inherits","_super2","_createSuper","_this2","writable","_assertThisInitialized","query","socket","_createClass","value","_get","_getPrototypeOf","readyState","doOpen","doClose","onClose","packets","write","packet","onPacket","details","onPause","schema","_hostname","_port","path","_query","hostname","indexOf","port","secure","Number","encodedQuery","str","encodeURIComponent","encode","alphabet","map","seed","num","encoded","Math","floor","yeast","now","Date","XMLHttpRequest","err","hasCORS","XHR","xdomain","e","concat","join","empty","hasXHR2","responseType","Polling","_Transport","polling","location","isSSL","protocol","xd","forceBase64","withCredentials","cookieJar","createCookieJar","get","poll","pause","total","doPoll","_this3","encodedPayload","encodedPackets","decodedPacket","decodePayload","onOpen","_this4","close","_this5","count","encodePayload","doWrite","timestampRequests","timestampParam","sid","b64","createUri","_extends","Request","uri","_this6","req","request","method","xhrStatus","onError","_this7","onData","pollXhr","_this8","undefined","_a","_this9","xhr","open","extraHeaders","setDisableHeaderCheck","setRequestHeader","addCookies","requestTimeout","timeout","onreadystatechange","parseCookies","status","onLoad","send","document","index","requestsCount","requests","cleanup","fromError","abort","responseText","attachEvent","unloadHandler","nextTick","Promise","resolve","then","WebSocket","MozWebSocket","isReactNative","navigator","product","toLowerCase","WS","check","protocols","headers","ws","addEventListeners","onopen","autoUnref","_socket","unref","onclose","closeEvent","onmessage","ev","onerror","_loop","lastPacket","WT","WebTransport","transport","transportOptions","name","closed","ready","createBidirectionalStream","stream","binaryFlag","reader","readable","getReader","writer","getWriter","read","_ref","done","isBinary","TextDecoder","isPlainBinary","decodePacketFromBinary","handshake","TextEncoder","arrayBuffer","encodePacketToBinary","shouldIncludeBinaryHeader","of","transports","websocket","webtransport","re","parts","parse","src","b","replace","m","exec","source","host","authority","ipv6uri","pathNames","regx","names","queryKey","$0","$1","$2","Socket","writeBuffer","prevBufferLen","agent","upgrade","rememberUpgrade","addTrailingSlash","rejectUnauthorized","perMessageDeflate","threshold","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","payloadSize","c","utf8Length","ceil","size","options","compress","cleanupAndClose","waitForUpgrade","filteredUpgrades","j","Socket$1","withNativeFile","File","hasBinary","toJSON","_typeof","isArray","deconstructPacket","buffers","packetData","pack","_deconstructPacket","attachments","placeholder","_placeholder","newData","reconstructPacket","_reconstructPacket","PacketType","RESERVED_EVENTS","Encoder","replacer","EVENT","ACK","encodeAsString","encodeAsBinary","BINARY_EVENT","BINARY_ACK","nsp","stringify","deconstruction","unshift","isObject","Decoder","reviver","reconstructor","isBinaryEvent","decodeString","BinaryReconstructor","takeBinaryData","start","buf","next","payload","tryParse","substr","isPayloadValid","finishedReconstruction","CONNECT","DISCONNECT","CONNECT_ERROR","reconPack","binData","freeze","connect","connect_error","disconnect","disconnecting","newListener","io","connected","recovered","receiveBuffer","sendBuffer","_queue","_queueSeq","ids","acks","flags","auth","_opts","_autoConnect","subs","onpacket","subEvents","_readyState","_len2","_key2","retries","fromQueue","_addToQueue","ack","pop","_registerAckCallback","isTransportWritable","engine","discardPacket","notifyOutgoingListeners","ackTimeout","timer","_len3","_key3","_len4","_key4","withErr","reject","arg1","arg2","tryCount","pending","hasError","_len5","responseArgs","_key5","_drainQueue","force","_packet","_sendConnectPacket","_pid","pid","offset","_lastOffset","onconnect","onevent","onack","ondisconnect","destroy","message","emitEvent","_anyListeners","_step","_iterator","_createForOfIteratorHelper","s","n","f","sent","_len6","_key6","emitBuffered","subDestroy","listener","_anyOutgoingListeners","_step2","_iterator2","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","_i","_nsps","_close","delay","onreconnect","attempt","cache","parsed","loc","test","href","url","sameNamespace","forceNew","multiplex"],"mappings":"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"} \ No newline at end of file diff --git a/dist/socket.io.msgpack.min.js b/dist/socket.io.msgpack.min.js index aeaa36ab..a95ba4e1 100644 --- a/dist/socket.io.msgpack.min.js +++ b/dist/socket.io.msgpack.min.js @@ -1,7 +1,7 @@ /*! - * Socket.IO v4.6.2 + * Socket.IO v4.7.0 * (c) 2014-2023 Guillermo Rauch * Released under the MIT License. */ -!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t="undefined"!=typeof globalThis?globalThis:t||self).io=e()}(this,(function(){"use strict";function t(t,e){return e.forEach((function(e){e&&"string"!=typeof e&&!Array.isArray(e)&&Object.keys(e).forEach((function(n){if("default"!==n&&!(n in t)){var i=Object.getOwnPropertyDescriptor(e,n);Object.defineProperty(t,n,i.get?i:{enumerable:!0,get:function(){return e[n]}})}}))})),Object.freeze(t)}function e(t){return e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},e(t)}function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function i(t,e){for(var n=0;nt.length)&&(e=t.length);for(var n=0,i=new Array(e);n=t.length?{done:!0}:{done:!1,value:t[i++]}},e:function(t){throw t},f:r}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var s,o=!0,a=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return o=t.done,t},e:function(t){a=!0,s=t},f:function(){try{o||null==n.return||n.return()}finally{if(a)throw s}}}}var m=Object.create(null);m.open="0",m.close="1",m.ping="2",m.pong="3",m.message="4",m.upgrade="5",m.noop="6";var b=Object.create(null);Object.keys(m).forEach((function(t){b[m[t]]=t}));for(var k={type:"error",data:"parser error"},w="function"==typeof Blob||"undefined"!=typeof Blob&&"[object BlobConstructor]"===Object.prototype.toString.call(Blob),O="function"==typeof ArrayBuffer,E=function(t,e,n){var i,r=t.type,s=t.data;return w&&s instanceof Blob?e?n(s):C(s,n):O&&(s instanceof ArrayBuffer||(i=s,"function"==typeof ArrayBuffer.isView?ArrayBuffer.isView(i):i&&i.buffer instanceof ArrayBuffer))?e?n(s):C(new Blob([s]),n):n(m[r]+(s||""))},C=function(t,e){var n=new FileReader;return n.onload=function(){var t=n.result.split(",")[1];e("b"+t)},n.readAsDataURL(t)},T="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",R="undefined"==typeof Uint8Array?[]:new Uint8Array(256),A=0;A1?{type:b[n],data:t.substring(1)}:{type:b[n]}:k},x=function(t,e){if(S){var n=function(t){var e,n,i,r,s,o=.75*t.length,a=t.length,u=0;"="===t[t.length-1]&&(o--,"="===t[t.length-2]&&o--);var c=new ArrayBuffer(o),h=new Uint8Array(c);for(e=0;e>4,h[u++]=(15&i)<<4|r>>2,h[u++]=(3&r)<<6|63&s;return c}(t);return B(n,e)}return{base64:!0,data:t}},B=function(t,e){return"blob"===e&&t instanceof ArrayBuffer?new Blob([t]):t},U=String.fromCharCode(30);function P(t){if(t)return function(t){for(var e in P.prototype)t[e]=P.prototype[e];return t}(t)}P.prototype.on=P.prototype.addEventListener=function(t,e){return this._callbacks=this._callbacks||{},(this._callbacks["$"+t]=this._callbacks["$"+t]||[]).push(e),this},P.prototype.once=function(t,e){function n(){this.off(t,n),e.apply(this,arguments)}return n.fn=e,this.on(t,n),this},P.prototype.off=P.prototype.removeListener=P.prototype.removeAllListeners=P.prototype.removeEventListener=function(t,e){if(this._callbacks=this._callbacks||{},0==arguments.length)return this._callbacks={},this;var n,i=this._callbacks["$"+t];if(!i)return this;if(1==arguments.length)return delete this._callbacks["$"+t],this;for(var r=0;r1?e-1:0),i=1;i0);return e}function X(){var t=Q(+new Date);return t!==I?(W=0,I=t):t+"."+Q(W++)}for(;V<64;V++)z[$[V]]=V;function K(t){var e="";for(var n in t)t.hasOwnProperty(n)&&(e.length&&(e+="&"),e+=encodeURIComponent(n)+"="+encodeURIComponent(t[n]));return e}function J(t){for(var e={},n=t.split("&"),i=0,r=n.length;i0&&void 0!==arguments[0]?arguments[0]:{};return s(t,{xd:this.xd,xs:this.xs},this.opts),new it(this.uri(),t)}},{key:"doWrite",value:function(t,e){var n=this,i=this.request({method:"POST",data:t});i.on("success",e),i.on("error",(function(t,e){n.onError("xhr post error",t,e)}))}},{key:"doPoll",value:function(){var t=this,e=this.request();e.on("data",this.onData.bind(this)),e.on("error",(function(e,n){t.onError("xhr poll error",e,n)})),this.pollXhr=e}}]),i}(H),it=function(t){o(i,t);var e=d(i);function i(t,r){var s;return n(this,i),D(l(s=e.call(this)),r),s.opts=r,s.method=r.method||"GET",s.uri=t,s.async=!1!==r.async,s.data=void 0!==r.data?r.data:null,s.create(),s}return r(i,[{key:"create",value:function(){var t=this,e=q(this.opts,"agent","pfx","key","passphrase","cert","ca","ciphers","rejectUnauthorized","autoUnref");e.xdomain=!!this.opts.xd,e.xscheme=!!this.opts.xs;var n=this.xhr=new Z(e);try{n.open(this.method,this.uri,this.async);try{if(this.opts.extraHeaders)for(var r in n.setDisableHeaderCheck&&n.setDisableHeaderCheck(!0),this.opts.extraHeaders)this.opts.extraHeaders.hasOwnProperty(r)&&n.setRequestHeader(r,this.opts.extraHeaders[r])}catch(t){}if("POST"===this.method)try{n.setRequestHeader("Content-type","text/plain;charset=UTF-8")}catch(t){}try{n.setRequestHeader("Accept","*/*")}catch(t){}"withCredentials"in n&&(n.withCredentials=this.opts.withCredentials),this.opts.requestTimeout&&(n.timeout=this.opts.requestTimeout),n.onreadystatechange=function(){4===n.readyState&&(200===n.status||1223===n.status?t.onLoad():t.setTimeoutFn((function(){t.onError("number"==typeof n.status?n.status:0)}),0))},n.send(this.data)}catch(e){return void this.setTimeoutFn((function(){t.onError(e)}),0)}"undefined"!=typeof document&&(this.index=i.requestsCount++,i.requests[this.index]=this)}},{key:"onError",value:function(t){this.emitReserved("error",t,this.xhr),this.cleanup(!0)}},{key:"cleanup",value:function(t){if(void 0!==this.xhr&&null!==this.xhr){if(this.xhr.onreadystatechange=tt,t)try{this.xhr.abort()}catch(t){}"undefined"!=typeof document&&delete i.requests[this.index],this.xhr=null}}},{key:"onLoad",value:function(){var t=this.xhr.responseText;null!==t&&(this.emitReserved("data",t),this.emitReserved("success"),this.cleanup())}},{key:"abort",value:function(){this.cleanup()}}]),i}(P);if(it.requestsCount=0,it.requests={},"undefined"!=typeof document)if("function"==typeof attachEvent)attachEvent("onunload",rt);else if("function"==typeof addEventListener){addEventListener("onpagehide"in j?"pagehide":"unload",rt,!1)}function rt(){for(var t in it.requests)it.requests.hasOwnProperty(t)&&it.requests[t].abort()}var st="function"==typeof Promise&&"function"==typeof Promise.resolve?function(t){return Promise.resolve().then(t)}:function(t,e){return e(t,0)},ot=j.WebSocket||j.MozWebSocket,at="undefined"!=typeof navigator&&"string"==typeof navigator.product&&"reactnative"===navigator.product.toLowerCase(),ut=function(t){o(i,t);var e=d(i);function i(t){var r;return n(this,i),(r=e.call(this,t)).supportsBinary=!t.forceBase64,r}return r(i,[{key:"name",get:function(){return"websocket"}},{key:"doOpen",value:function(){if(this.check()){var t=this.uri(),e=this.opts.protocols,n=at?{}:q(this.opts,"agent","perMessageDeflate","pfx","key","passphrase","cert","ca","ciphers","rejectUnauthorized","localAddress","protocolVersion","origin","maxPayload","family","checkServerIdentity");this.opts.extraHeaders&&(n.headers=this.opts.extraHeaders);try{this.ws=at?new ot(t,e,n):e?new ot(t,e):new ot(t)}catch(t){return this.emitReserved("error",t)}this.ws.binaryType=this.socket.binaryType||"arraybuffer",this.addEventListeners()}}},{key:"addEventListeners",value:function(){var t=this;this.ws.onopen=function(){t.opts.autoUnref&&t.ws._socket.unref(),t.onOpen()},this.ws.onclose=function(e){return t.onClose({description:"websocket connection closed",context:e})},this.ws.onmessage=function(e){return t.onData(e.data)},this.ws.onerror=function(e){return t.onError("websocket error",e)}}},{key:"write",value:function(t){var e=this;this.writable=!1;for(var n=function(n){var i=t[n],r=n===t.length-1;E(i,e.supportsBinary,(function(t){try{e.ws.send(t)}catch(t){}r&&st((function(){e.writable=!0,e.emitReserved("drain")}),e.setTimeoutFn)}))},i=0;i1&&void 0!==arguments[1]?arguments[1]:{};return n(this,a),(r=i.call(this)).writeBuffer=[],t&&"object"===e(t)&&(o=t,t=null),t?(t=lt(t),o.hostname=t.host,o.secure="https"===t.protocol||"wss"===t.protocol,o.port=t.port,t.query&&(o.query=t.query)):o.host&&(o.hostname=lt(o.host).host),D(l(r),o),r.secure=null!=o.secure?o.secure:"undefined"!=typeof location&&"https:"===location.protocol,o.hostname&&!o.port&&(o.port=r.secure?"443":"80"),r.hostname=o.hostname||("undefined"!=typeof location?location.hostname:"localhost"),r.port=o.port||("undefined"!=typeof location&&location.port?location.port:r.secure?"443":"80"),r.transports=o.transports||["polling","websocket"],r.writeBuffer=[],r.prevBufferLen=0,r.opts=s({path:"/engine.io",agent:!1,withCredentials:!1,upgrade:!0,timestampParam:"t",rememberUpgrade:!1,addTrailingSlash:!0,rejectUnauthorized:!0,perMessageDeflate:{threshold:1024},transportOptions:{},closeOnBeforeunload:!0},o),r.opts.path=r.opts.path.replace(/\/$/,"")+(r.opts.addTrailingSlash?"/":""),"string"==typeof r.opts.query&&(r.opts.query=J(r.opts.query)),r.id=null,r.upgrades=null,r.pingInterval=null,r.pingTimeout=null,r.pingTimeoutTimer=null,"function"==typeof addEventListener&&(r.opts.closeOnBeforeunload&&(r.beforeunloadEventListener=function(){r.transport&&(r.transport.removeAllListeners(),r.transport.close())},addEventListener("beforeunload",r.beforeunloadEventListener,!1)),"localhost"!==r.hostname&&(r.offlineEventListener=function(){r.onClose("transport close",{description:"network connection lost"})},addEventListener("offline",r.offlineEventListener,!1))),r.open(),r}return r(a,[{key:"createTransport",value:function(t){var e=s({},this.opts.query);e.EIO=4,e.transport=t,this.id&&(e.sid=this.id);var n=s({},this.opts.transportOptions[t],this.opts,{query:e,socket:this,hostname:this.hostname,secure:this.secure,port:this.port});return new ct[t](n)}},{key:"open",value:function(){var t,e=this;if(this.opts.rememberUpgrade&&a.priorWebsocketSuccess&&-1!==this.transports.indexOf("websocket"))t="websocket";else{if(0===this.transports.length)return void this.setTimeoutFn((function(){e.emitReserved("error","No transports available")}),0);t=this.transports[0]}this.readyState="opening";try{t=this.createTransport(t)}catch(t){return this.transports.shift(),void this.open()}t.open(),this.setTransport(t)}},{key:"setTransport",value:function(t){var e=this;this.transport&&this.transport.removeAllListeners(),this.transport=t,t.on("drain",this.onDrain.bind(this)).on("packet",this.onPacket.bind(this)).on("error",this.onError.bind(this)).on("close",(function(t){return e.onClose("transport close",t)}))}},{key:"probe",value:function(t){var e=this,n=this.createTransport(t),i=!1;a.priorWebsocketSuccess=!1;var r=function(){i||(n.send([{type:"ping",data:"probe"}]),n.once("packet",(function(t){if(!i)if("pong"===t.type&&"probe"===t.data){if(e.upgrading=!0,e.emitReserved("upgrading",n),!n)return;a.priorWebsocketSuccess="websocket"===n.name,e.transport.pause((function(){i||"closed"!==e.readyState&&(f(),e.setTransport(n),n.send([{type:"upgrade"}]),e.emitReserved("upgrade",n),n=null,e.upgrading=!1,e.flush())}))}else{var r=new Error("probe error");r.transport=n.name,e.emitReserved("upgradeError",r)}})))};function s(){i||(i=!0,f(),n.close(),n=null)}var o=function(t){var i=new Error("probe error: "+t);i.transport=n.name,s(),e.emitReserved("upgradeError",i)};function u(){o("transport closed")}function c(){o("socket closed")}function h(t){n&&t.name!==n.name&&s()}var f=function(){n.removeListener("open",r),n.removeListener("error",o),n.removeListener("close",u),e.off("close",c),e.off("upgrading",h)};n.once("open",r),n.once("error",o),n.once("close",u),this.once("close",c),this.once("upgrading",h),n.open()}},{key:"onOpen",value:function(){if(this.readyState="open",a.priorWebsocketSuccess="websocket"===this.transport.name,this.emitReserved("open"),this.flush(),"open"===this.readyState&&this.opts.upgrade)for(var t=0,e=this.upgrades.length;t1))return this.writeBuffer;for(var t,e=1,n=0;n=57344?n+=3:(i++,n+=4);return n}(t):Math.ceil(1.33*(t.byteLength||t.size))),n>0&&e>this.maxPayload)return this.writeBuffer.slice(0,n);e+=2}return this.writeBuffer}},{key:"write",value:function(t,e,n){return this.sendPacket("message",t,e,n),this}},{key:"send",value:function(t,e,n){return this.sendPacket("message",t,e,n),this}},{key:"sendPacket",value:function(t,e,n,i){if("function"==typeof e&&(i=e,e=void 0),"function"==typeof n&&(i=n,n=null),"closing"!==this.readyState&&"closed"!==this.readyState){(n=n||{}).compress=!1!==n.compress;var r={type:t,data:e,options:n};this.emitReserved("packetCreate",r),this.writeBuffer.push(r),i&&this.once("flush",i),this.flush()}}},{key:"close",value:function(){var t=this,e=function(){t.onClose("forced close"),t.transport.close()},n=function n(){t.off("upgrade",n),t.off("upgradeError",n),e()},i=function(){t.once("upgrade",n),t.once("upgradeError",n)};return"opening"!==this.readyState&&"open"!==this.readyState||(this.readyState="closing",this.writeBuffer.length?this.once("drain",(function(){t.upgrading?i():e()})):this.upgrading?i():e()),this}},{key:"onError",value:function(t){a.priorWebsocketSuccess=!1,this.emitReserved("error",t),this.onClose("transport error",t)}},{key:"onClose",value:function(t,e){"opening"!==this.readyState&&"open"!==this.readyState&&"closing"!==this.readyState||(this.clearTimeoutFn(this.pingTimeoutTimer),this.transport.removeAllListeners("close"),this.transport.close(),this.transport.removeAllListeners(),"function"==typeof removeEventListener&&(removeEventListener("beforeunload",this.beforeunloadEventListener,!1),removeEventListener("offline",this.offlineEventListener,!1)),this.readyState="closed",this.id=null,this.emitReserved("close",t,e),this.writeBuffer=[],this.prevBufferLen=0)}},{key:"filterUpgrades",value:function(t){for(var e=[],n=0,i=t.length;n>6),t.setUint8(e++,128|63&i)):i<55296||i>=57344?(t.setUint8(e++,224|i>>12),t.setUint8(e++,128|i>>6&63),t.setUint8(e++,128|63&i)):(r++,i=65536+((1023&i)<<10|1023&n.charCodeAt(r)),t.setUint8(e++,240|i>>18),t.setUint8(e++,128|i>>12&63),t.setUint8(e++,128|i>>6&63),t.setUint8(e++,128|63&i))}function gt(t,n,i){var r=e(i),s=0,o=0,a=0,u=0,c=0,h=0;if("string"===r){if(c=function(t){for(var e=0,n=0,i=0,r=t.length;i=57344?n+=3:(i++,n+=4);return n}(i),c<32)t.push(160|c),h=1;else if(c<256)t.push(217,c),h=2;else if(c<65536)t.push(218,c>>8,c),h=3;else{if(!(c<4294967296))throw new Error("String too long");t.push(219,c>>24,c>>16,c>>8,c),h=5}return n.push({_str:i,_length:c,_offset:t.length}),h+c}if("number"===r)return Math.floor(i)===i&&isFinite(i)?i>=0?i<128?(t.push(i),1):i<256?(t.push(204,i),2):i<65536?(t.push(205,i>>8,i),3):i<4294967296?(t.push(206,i>>24,i>>16,i>>8,i),5):(a=i/Math.pow(2,32)>>0,u=i>>>0,t.push(207,a>>24,a>>16,a>>8,a,u>>24,u>>16,u>>8,u),9):i>=-32?(t.push(i),1):i>=-128?(t.push(208,i),2):i>=-32768?(t.push(209,i>>8,i),3):i>=-2147483648?(t.push(210,i>>24,i>>16,i>>8,i),5):(a=Math.floor(i/Math.pow(2,32)),u=i>>>0,t.push(211,a>>24,a>>16,a>>8,a,u>>24,u>>16,u>>8,u),9):(t.push(203),n.push({_float:i,_length:8,_offset:t.length}),9);if("object"===r){if(null===i)return t.push(192),1;if(Array.isArray(i)){if((c=i.length)<16)t.push(144|c),h=1;else if(c<65536)t.push(220,c>>8,c),h=3;else{if(!(c<4294967296))throw new Error("Array too large");t.push(221,c>>24,c>>16,c>>8,c),h=5}for(s=0;s>>0,t.push(215,0,a>>24,a>>16,a>>8,a,u>>24,u>>16,u>>8,u),10}if(i instanceof ArrayBuffer){if((c=i.byteLength)<256)t.push(196,c),h=2;else if(c<65536)t.push(197,c>>8,c),h=3;else{if(!(c<4294967296))throw new Error("Buffer too large");t.push(198,c>>24,c>>16,c>>8,c),h=5}return n.push({_bin:i,_length:c,_offset:t.length}),h+c}if("function"==typeof i.toJSON)return gt(t,n,i.toJSON());var l=[],p="",d=Object.keys(i);for(s=0,o=d.length;s>8,c),h=3;else{if(!(c<4294967296))throw new Error("Object too large");t.push(223,c>>24,c>>16,c>>8,c),h=5}for(s=0;s0&&(u=n[0]._offset);for(var c,h=0,f=0,l=0,p=e.length;l=65536?(r-=65536,i+=String.fromCharCode(55296+(r>>>10),56320+(1023&r))):i+=String.fromCharCode(r)}else i+=String.fromCharCode((15&a)<<12|(63&t.getUint8(++s))<<6|(63&t.getUint8(++s))<<0);else i+=String.fromCharCode((31&a)<<6|63&t.getUint8(++s));else i+=String.fromCharCode(a)}return i}(this._view,this._offset,t);return this._offset+=t,e},mt.prototype._bin=function(t){var e=this._buffer.slice(this._offset,this._offset+t);return this._offset+=t,e},mt.prototype._parse=function(){var t,e=this._view.getUint8(this._offset++),n=0,i=0,r=0,s=0;if(e<192)return e<128?e:e<144?this._map(15&e):e<160?this._array(15&e):this._str(31&e);if(e>223)return-1*(255-e+1);switch(e){case 192:return null;case 194:return!1;case 195:return!0;case 196:return n=this._view.getUint8(this._offset),this._offset+=1,this._bin(n);case 197:return n=this._view.getUint16(this._offset),this._offset+=2,this._bin(n);case 198:return n=this._view.getUint32(this._offset),this._offset+=4,this._bin(n);case 199:return n=this._view.getUint8(this._offset),i=this._view.getInt8(this._offset+1),this._offset+=2,[i,this._bin(n)];case 200:return n=this._view.getUint16(this._offset),i=this._view.getInt8(this._offset+2),this._offset+=3,[i,this._bin(n)];case 201:return n=this._view.getUint32(this._offset),i=this._view.getInt8(this._offset+4),this._offset+=5,[i,this._bin(n)];case 202:return t=this._view.getFloat32(this._offset),this._offset+=4,t;case 203:return t=this._view.getFloat64(this._offset),this._offset+=8,t;case 204:return t=this._view.getUint8(this._offset),this._offset+=1,t;case 205:return t=this._view.getUint16(this._offset),this._offset+=2,t;case 206:return t=this._view.getUint32(this._offset),this._offset+=4,t;case 207:return r=this._view.getUint32(this._offset)*Math.pow(2,32),s=this._view.getUint32(this._offset+4),this._offset+=8,r+s;case 208:return t=this._view.getInt8(this._offset),this._offset+=1,t;case 209:return t=this._view.getInt16(this._offset),this._offset+=2,t;case 210:return t=this._view.getInt32(this._offset),this._offset+=4,t;case 211:return r=this._view.getInt32(this._offset)*Math.pow(2,32),s=this._view.getUint32(this._offset+4),this._offset+=8,r+s;case 212:return i=this._view.getInt8(this._offset),this._offset+=1,0===i?void(this._offset+=1):[i,this._bin(1)];case 213:return i=this._view.getInt8(this._offset),this._offset+=1,[i,this._bin(2)];case 214:return i=this._view.getInt8(this._offset),this._offset+=1,[i,this._bin(4)];case 215:return i=this._view.getInt8(this._offset),this._offset+=1,0===i?(r=this._view.getInt32(this._offset)*Math.pow(2,32),s=this._view.getUint32(this._offset+4),this._offset+=8,new Date(r+s)):[i,this._bin(8)];case 216:return i=this._view.getInt8(this._offset),this._offset+=1,[i,this._bin(16)];case 217:return n=this._view.getUint8(this._offset),this._offset+=1,this._str(n);case 218:return n=this._view.getUint16(this._offset),this._offset+=2,this._str(n);case 219:return n=this._view.getUint32(this._offset),this._offset+=4,this._str(n);case 220:return n=this._view.getUint16(this._offset),this._offset+=2,this._array(n);case 221:return n=this._view.getUint32(this._offset),this._offset+=4,this._array(n);case 222:return n=this._view.getUint16(this._offset),this._offset+=2,this._map(n);case 223:return n=this._view.getUint32(this._offset),this._offset+=4,this._map(n)}throw new Error("Could not parse")};var bt=function(t){var e=new mt(t),n=e._parse();if(e._offset!==t.byteLength)throw new Error(t.byteLength-e._offset+" trailing bytes");return n};yt.encode=_t,yt.decode=bt;var kt,wt={exports:{}};!function(t){function e(t){if(t)return function(t){for(var n in e.prototype)t[n]=e.prototype[n];return t}(t)}t.exports=e,e.prototype.on=e.prototype.addEventListener=function(t,e){return this._callbacks=this._callbacks||{},(this._callbacks["$"+t]=this._callbacks["$"+t]||[]).push(e),this},e.prototype.once=function(t,e){function n(){this.off(t,n),e.apply(this,arguments)}return n.fn=e,this.on(t,n),this},e.prototype.off=e.prototype.removeListener=e.prototype.removeAllListeners=e.prototype.removeEventListener=function(t,e){if(this._callbacks=this._callbacks||{},0==arguments.length)return this._callbacks={},this;var n,i=this._callbacks["$"+t];if(!i)return this;if(1==arguments.length)return delete this._callbacks["$"+t],this;for(var r=0;r=Tt.CONNECT&&t.type<=Tt.CONNECT_ERROR))throw new Error("invalid packet type");if(!At(t.nsp))throw new Error("invalid namespace");if(!function(t){switch(t.type){case Tt.CONNECT:return void 0===t.data||St(t.data);case Tt.DISCONNECT:return void 0===t.data;case Tt.CONNECT_ERROR:return At(t.data)||St(t.data);default:return Array.isArray(t.data)}}(t))throw new Error("invalid payload");if(!(void 0===t.id||Rt(t.id)))throw new Error("invalid packet id")},xt.prototype.destroy=function(){};var Bt=dt.Encoder=Lt,Ut=dt.Decoder=xt,Pt=t({__proto__:null,default:dt,protocol:Ct,get PacketType(){return kt},Encoder:Bt,Decoder:Ut},[dt]);function jt(t,e,n){return t.on(e,n),function(){t.off(e,n)}}var qt=Object.freeze({connect:1,connect_error:1,disconnect:1,disconnecting:1,newListener:1,removeListener:1}),Nt=function(t){o(i,t);var e=d(i);function i(t,r,o){var a;return n(this,i),(a=e.call(this)).connected=!1,a.recovered=!1,a.receiveBuffer=[],a.sendBuffer=[],a._queue=[],a._queueSeq=0,a.ids=0,a.acks={},a.flags={},a.io=t,a.nsp=r,o&&o.auth&&(a.auth=o.auth),a._opts=s({},o),a.io._autoConnect&&a.open(),a}return r(i,[{key:"disconnected",get:function(){return!this.connected}},{key:"subEvents",value:function(){if(!this.subs){var t=this.io;this.subs=[jt(t,"open",this.onopen.bind(this)),jt(t,"packet",this.onpacket.bind(this)),jt(t,"error",this.onerror.bind(this)),jt(t,"close",this.onclose.bind(this))]}}},{key:"active",get:function(){return!!this.subs}},{key:"connect",value:function(){return this.connected||(this.subEvents(),this.io._reconnecting||this.io.open(),"open"===this.io._readyState&&this.onopen()),this}},{key:"open",value:function(){return this.connect()}},{key:"send",value:function(){for(var t=arguments.length,e=new Array(t),n=0;n1?e-1:0),i=1;i1?n-1:0),r=1;rn._opts.retries&&(n._queue.shift(),e&&e(t));else if(n._queue.shift(),e){for(var s=arguments.length,o=new Array(s>1?s-1:0),a=1;a0&&void 0!==arguments[0]&&arguments[0];if(this.connected&&0!==this._queue.length){var e=this._queue[0];e.pending&&!t||(e.pending=!0,e.tryCount++,this.flags=e.flags,this.emit.apply(this,e.args))}}},{key:"packet",value:function(t){t.nsp=this.nsp,this.io._packet(t)}},{key:"onopen",value:function(){var t=this;"function"==typeof this.auth?this.auth((function(e){t._sendConnectPacket(e)})):this._sendConnectPacket(this.auth)}},{key:"_sendConnectPacket",value:function(t){this.packet({type:kt.CONNECT,data:this._pid?s({pid:this._pid,offset:this._lastOffset},t):t})}},{key:"onerror",value:function(t){this.connected||this.emitReserved("connect_error",t)}},{key:"onclose",value:function(t,e){this.connected=!1,delete this.id,this.emitReserved("disconnect",t,e)}},{key:"onpacket",value:function(t){if(t.nsp===this.nsp)switch(t.type){case kt.CONNECT:t.data&&t.data.sid?this.onconnect(t.data.sid,t.data.pid):this.emitReserved("connect_error",new Error("It seems you are trying to reach a Socket.IO server in v2.x with a v3.x client, but they are not compatible (more information here: https://socket.io/docs/v3/migrating-from-2-x-to-3-0/)"));break;case kt.EVENT:case kt.BINARY_EVENT:this.onevent(t);break;case kt.ACK:case kt.BINARY_ACK:this.onack(t);break;case kt.DISCONNECT:this.ondisconnect();break;case kt.CONNECT_ERROR:this.destroy();var e=new Error(t.data.message);e.data=t.data.data,this.emitReserved("connect_error",e)}}},{key:"onevent",value:function(t){var e=t.data||[];null!=t.id&&e.push(this.ack(t.id)),this.connected?this.emitEvent(e):this.receiveBuffer.push(Object.freeze(e))}},{key:"emitEvent",value:function(t){if(this._anyListeners&&this._anyListeners.length){var e,n=_(this._anyListeners.slice());try{for(n.s();!(e=n.n()).done;){e.value.apply(this,t)}}catch(t){n.e(t)}finally{n.f()}}v(a(i.prototype),"emit",this).apply(this,t),this._pid&&t.length&&"string"==typeof t[t.length-1]&&(this._lastOffset=t[t.length-1])}},{key:"ack",value:function(t){var e=this,n=!1;return function(){if(!n){n=!0;for(var i=arguments.length,r=new Array(i),s=0;s0&&t.jitter<=1?t.jitter:0,this.attempts=0}Mt.prototype.duration=function(){var t=this.ms*Math.pow(this.factor,this.attempts++);if(this.jitter){var e=Math.random(),n=Math.floor(e*this.jitter*t);t=0==(1&Math.floor(10*e))?t-n:t+n}return 0|Math.min(t,this.max)},Mt.prototype.reset=function(){this.attempts=0},Mt.prototype.setMin=function(t){this.ms=t},Mt.prototype.setMax=function(t){this.max=t},Mt.prototype.setJitter=function(t){this.jitter=t};var Dt=function(t){o(s,t);var i=d(s);function s(t,r){var o,a;n(this,s),(o=i.call(this)).nsps={},o.subs=[],t&&"object"===e(t)&&(r=t,t=void 0),(r=r||{}).path=r.path||"/socket.io",o.opts=r,D(l(o),r),o.reconnection(!1!==r.reconnection),o.reconnectionAttempts(r.reconnectionAttempts||1/0),o.reconnectionDelay(r.reconnectionDelay||1e3),o.reconnectionDelayMax(r.reconnectionDelayMax||5e3),o.randomizationFactor(null!==(a=r.randomizationFactor)&&void 0!==a?a:.5),o.backoff=new Mt({min:o.reconnectionDelay(),max:o.reconnectionDelayMax(),jitter:o.randomizationFactor()}),o.timeout(null==r.timeout?2e4:r.timeout),o._readyState="closed",o.uri=t;var u=r.parser||Pt;return o.encoder=new u.Encoder,o.decoder=new u.Decoder,o._autoConnect=!1!==r.autoConnect,o._autoConnect&&o.open(),o}return r(s,[{key:"reconnection",value:function(t){return arguments.length?(this._reconnection=!!t,this):this._reconnection}},{key:"reconnectionAttempts",value:function(t){return void 0===t?this._reconnectionAttempts:(this._reconnectionAttempts=t,this)}},{key:"reconnectionDelay",value:function(t){var e;return void 0===t?this._reconnectionDelay:(this._reconnectionDelay=t,null===(e=this.backoff)||void 0===e||e.setMin(t),this)}},{key:"randomizationFactor",value:function(t){var e;return void 0===t?this._randomizationFactor:(this._randomizationFactor=t,null===(e=this.backoff)||void 0===e||e.setJitter(t),this)}},{key:"reconnectionDelayMax",value:function(t){var e;return void 0===t?this._reconnectionDelayMax:(this._reconnectionDelayMax=t,null===(e=this.backoff)||void 0===e||e.setMax(t),this)}},{key:"timeout",value:function(t){return arguments.length?(this._timeout=t,this):this._timeout}},{key:"maybeReconnectOnOpen",value:function(){!this._reconnecting&&this._reconnection&&0===this.backoff.attempts&&this.reconnect()}},{key:"open",value:function(t){var e=this;if(~this._readyState.indexOf("open"))return this;this.engine=new pt(this.uri,this.opts);var n=this.engine,i=this;this._readyState="opening",this.skipReconnect=!1;var r=jt(n,"open",(function(){i.onopen(),t&&t()})),s=jt(n,"error",(function(n){i.cleanup(),i._readyState="closed",e.emitReserved("error",n),t?t(n):i.maybeReconnectOnOpen()}));if(!1!==this._timeout){var o=this._timeout;0===o&&r();var a=this.setTimeoutFn((function(){r(),n.close(),n.emit("error",new Error("timeout"))}),o);this.opts.autoUnref&&a.unref(),this.subs.push((function(){clearTimeout(a)}))}return this.subs.push(r),this.subs.push(s),this}},{key:"connect",value:function(t){return this.open(t)}},{key:"onopen",value:function(){this.cleanup(),this._readyState="open",this.emitReserved("open");var t=this.engine;this.subs.push(jt(t,"ping",this.onping.bind(this)),jt(t,"data",this.ondata.bind(this)),jt(t,"error",this.onerror.bind(this)),jt(t,"close",this.onclose.bind(this)),jt(this.decoder,"decoded",this.ondecoded.bind(this)))}},{key:"onping",value:function(){this.emitReserved("ping")}},{key:"ondata",value:function(t){try{this.decoder.add(t)}catch(t){this.onclose("parse error",t)}}},{key:"ondecoded",value:function(t){var e=this;st((function(){e.emitReserved("packet",t)}),this.setTimeoutFn)}},{key:"onerror",value:function(t){this.emitReserved("error",t)}},{key:"socket",value:function(t,e){var n=this.nsps[t];return n?this._autoConnect&&!n.active&&n.connect():(n=new Nt(this,t,e),this.nsps[t]=n),n}},{key:"_destroy",value:function(t){for(var e=0,n=Object.keys(this.nsps);e=this._reconnectionAttempts)this.backoff.reset(),this.emitReserved("reconnect_failed"),this._reconnecting=!1;else{var n=this.backoff.duration();this._reconnecting=!0;var i=this.setTimeoutFn((function(){e.skipReconnect||(t.emitReserved("reconnect_attempt",e.backoff.attempts),e.skipReconnect||e.open((function(n){n?(e._reconnecting=!1,e.reconnect(),t.emitReserved("reconnect_error",n)):e.onreconnect()})))}),n);this.opts.autoUnref&&i.unref(),this.subs.push((function(){clearTimeout(i)}))}}},{key:"onreconnect",value:function(){var t=this.backoff.attempts;this._reconnecting=!1,this.backoff.reset(),this.emitReserved("reconnect",t)}}]),s}(P),It={};function Ft(t,n){"object"===e(t)&&(n=t,t=void 0);var i,r=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",n=arguments.length>2?arguments[2]:void 0,i=t;n=n||"undefined"!=typeof location&&location,null==t&&(t=n.protocol+"//"+n.host),"string"==typeof t&&("/"===t.charAt(0)&&(t="/"===t.charAt(1)?n.protocol+t:n.host+t),/^(https?|wss?):\/\//.test(t)||(t=void 0!==n?n.protocol+"//"+t:"https://"+t),i=lt(t)),i.port||(/^(http|ws)$/.test(i.protocol)?i.port="80":/^(http|ws)s$/.test(i.protocol)&&(i.port="443")),i.path=i.path||"/";var r=-1!==i.host.indexOf(":")?"["+i.host+"]":i.host;return i.id=i.protocol+"://"+r+":"+i.port+e,i.href=i.protocol+"://"+r+(n&&n.port===i.port?"":":"+i.port),i}(t,(n=n||{}).path||"/socket.io"),s=r.source,o=r.id,a=r.path,u=It[o]&&a in It[o].nsps;return n.forceNew||n["force new connection"]||!1===n.multiplex||u?i=new Dt(s,n):(It[o]||(It[o]=new Dt(s,n)),i=It[o]),r.query&&!n.query&&(n.query=r.queryKey),i.socket(r.path,n)}return s(Ft,{Manager:Dt,Socket:Nt,io:Ft,connect:Ft}),Ft})); +!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t="undefined"!=typeof globalThis?globalThis:t||self).io=e()}(this,(function(){"use strict";function t(t,e){return e.forEach((function(e){e&&"string"!=typeof e&&!Array.isArray(e)&&Object.keys(e).forEach((function(n){if("default"!==n&&!(n in t)){var r=Object.getOwnPropertyDescriptor(e,n);Object.defineProperty(t,n,r.get?r:{enumerable:!0,get:function(){return e[n]}})}}))})),Object.freeze(t)}function e(t){return e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},e(t)}function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function r(t,e){for(var n=0;nt.length)&&(e=t.length);for(var n=0,r=new Array(e);n=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,s=!0,a=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return s=t.done,t},e:function(t){a=!0,o=t},f:function(){try{s||null==n.return||n.return()}finally{if(a)throw o}}}}var m=Object.create(null);m.open="0",m.close="1",m.ping="2",m.pong="3",m.message="4",m.upgrade="5",m.noop="6";var b=Object.create(null);Object.keys(m).forEach((function(t){b[m[t]]=t}));var k,w={type:"error",data:"parser error"},O="function"==typeof Blob||"undefined"!=typeof Blob&&"[object BlobConstructor]"===Object.prototype.toString.call(Blob),E="function"==typeof ArrayBuffer,C=function(t){return"function"==typeof ArrayBuffer.isView?ArrayBuffer.isView(t):t&&t.buffer instanceof ArrayBuffer},T=function(t,e,n){var r=t.type,i=t.data;return O&&i instanceof Blob?e?n(i):R(i,n):E&&(i instanceof ArrayBuffer||C(i))?e?n(i):R(new Blob([i]),n):n(m[r]+(i||""))},R=function(t,e){var n=new FileReader;return n.onload=function(){var t=n.result.split(",")[1];e("b"+(t||""))},n.readAsDataURL(t)};function A(t){return t instanceof Uint8Array?t:t instanceof ArrayBuffer?new Uint8Array(t):new Uint8Array(t.buffer,t.byteOffset,t.byteLength)}for(var S="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",L="undefined"==typeof Uint8Array?[]:new Uint8Array(256),x=0;x1?{type:b[n],data:t.substring(1)}:{type:b[n]}:w},q=function(t,e){if(U){var n=function(t){var e,n,r,i,o,s=.75*t.length,a=t.length,u=0;"="===t[t.length-1]&&(s--,"="===t[t.length-2]&&s--);var c=new ArrayBuffer(s),h=new Uint8Array(c);for(e=0;e>4,h[u++]=(15&r)<<4|i>>2,h[u++]=(3&i)<<6|63&o;return c}(t);return j(n,e)}return{base64:!0,data:t}},j=function(t,e){return"blob"===e?t instanceof Blob?t:new Blob([t]):t instanceof ArrayBuffer?t:t.buffer},N=String.fromCharCode(30);function D(t){if(t)return function(t){for(var e in D.prototype)t[e]=D.prototype[e];return t}(t)}D.prototype.on=D.prototype.addEventListener=function(t,e){return this._callbacks=this._callbacks||{},(this._callbacks["$"+t]=this._callbacks["$"+t]||[]).push(e),this},D.prototype.once=function(t,e){function n(){this.off(t,n),e.apply(this,arguments)}return n.fn=e,this.on(t,n),this},D.prototype.off=D.prototype.removeListener=D.prototype.removeAllListeners=D.prototype.removeEventListener=function(t,e){if(this._callbacks=this._callbacks||{},0==arguments.length)return this._callbacks={},this;var n,r=this._callbacks["$"+t];if(!r)return this;if(1==arguments.length)return delete this._callbacks["$"+t],this;for(var i=0;i1?e-1:0),r=1;r1&&void 0!==arguments[1]?arguments[1]:{};return t+"://"+this._hostname()+this._port()+this.opts.path+this._query(e)}},{key:"_hostname",value:function(){var t=this.opts.hostname;return-1===t.indexOf(":")?t:"["+t+"]"}},{key:"_port",value:function(){return this.opts.port&&(this.opts.secure&&Number(443!==this.opts.port)||!this.opts.secure&&80!==Number(this.opts.port))?":"+this.opts.port:""}},{key:"_query",value:function(t){var e=function(t){var e="";for(var n in t)t.hasOwnProperty(n)&&(e.length&&(e+="&"),e+=encodeURIComponent(n)+"="+encodeURIComponent(t[n]));return e}(t);return e.length?"?"+e:""}}]),r}(D),Q="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-_".split(""),X={},K=0,Y=0;function G(t){var e="";do{e=Q[t%64]+e,t=Math.floor(t/64)}while(t>0);return e}function Z(){var t=G(+new Date);return t!==z?(K=0,z=t):t+"."+G(K++)}for(;Y<64;Y++)X[Q[Y]]=Y;var tt=!1;try{tt="undefined"!=typeof XMLHttpRequest&&"withCredentials"in new XMLHttpRequest}catch(t){}var et=tt;function nt(t){var e=t.xdomain;try{if("undefined"!=typeof XMLHttpRequest&&(!e||et))return new XMLHttpRequest}catch(t){}if(!e)try{return new(M[["Active"].concat("Object").join("X")])("Microsoft.XMLHTTP")}catch(t){}}function rt(){}var it=null!=new nt({xdomain:!1}).responseType,ot=function(t){s(r,t);var e=d(r);function r(t){var i;if(n(this,r),(i=e.call(this,t)).polling=!1,"undefined"!=typeof location){var o="https:"===location.protocol,s=location.port;s||(s=o?"443":"80"),i.xd="undefined"!=typeof location&&t.hostname!==location.hostname||s!==t.port}var a=t&&t.forceBase64;return i.supportsBinary=it&&!a,i.opts.withCredentials&&(i.cookieJar=void 0),i}return i(r,[{key:"name",get:function(){return"polling"}},{key:"doOpen",value:function(){this.poll()}},{key:"pause",value:function(t){var e=this;this.readyState="pausing";var n=function(){e.readyState="paused",t()};if(this.polling||!this.writable){var r=0;this.polling&&(r++,this.once("pollComplete",(function(){--r||n()}))),this.writable||(r++,this.once("drain",(function(){--r||n()})))}else n()}},{key:"poll",value:function(){this.polling=!0,this.doPoll(),this.emitReserved("poll")}},{key:"onData",value:function(t){var e=this;(function(t,e){for(var n=t.split(N),r=[],i=0;i0&&void 0!==arguments[0]?arguments[0]:{};return o(t,{xd:this.xd,cookieJar:this.cookieJar},this.opts),new st(this.uri(),t)}},{key:"doWrite",value:function(t,e){var n=this,r=this.request({method:"POST",data:t});r.on("success",e),r.on("error",(function(t,e){n.onError("xhr post error",t,e)}))}},{key:"doPoll",value:function(){var t=this,e=this.request();e.on("data",this.onData.bind(this)),e.on("error",(function(e,n){t.onError("xhr poll error",e,n)})),this.pollXhr=e}}]),r}(J),st=function(t){s(r,t);var e=d(r);function r(t,i){var o;return n(this,r),$(l(o=e.call(this)),i),o.opts=i,o.method=i.method||"GET",o.uri=t,o.data=void 0!==i.data?i.data:null,o.create(),o}return i(r,[{key:"create",value:function(){var t,e=this,n=I(this.opts,"agent","pfx","key","passphrase","cert","ca","ciphers","rejectUnauthorized","autoUnref");n.xdomain=!!this.opts.xd;var i=this.xhr=new nt(n);try{i.open(this.method,this.uri,!0);try{if(this.opts.extraHeaders)for(var o in i.setDisableHeaderCheck&&i.setDisableHeaderCheck(!0),this.opts.extraHeaders)this.opts.extraHeaders.hasOwnProperty(o)&&i.setRequestHeader(o,this.opts.extraHeaders[o])}catch(t){}if("POST"===this.method)try{i.setRequestHeader("Content-type","text/plain;charset=UTF-8")}catch(t){}try{i.setRequestHeader("Accept","*/*")}catch(t){}null===(t=this.opts.cookieJar)||void 0===t||t.addCookies(i),"withCredentials"in i&&(i.withCredentials=this.opts.withCredentials),this.opts.requestTimeout&&(i.timeout=this.opts.requestTimeout),i.onreadystatechange=function(){var t;3===i.readyState&&(null===(t=e.opts.cookieJar)||void 0===t||t.parseCookies(i)),4===i.readyState&&(200===i.status||1223===i.status?e.onLoad():e.setTimeoutFn((function(){e.onError("number"==typeof i.status?i.status:0)}),0))},i.send(this.data)}catch(t){return void this.setTimeoutFn((function(){e.onError(t)}),0)}"undefined"!=typeof document&&(this.index=r.requestsCount++,r.requests[this.index]=this)}},{key:"onError",value:function(t){this.emitReserved("error",t,this.xhr),this.cleanup(!0)}},{key:"cleanup",value:function(t){if(void 0!==this.xhr&&null!==this.xhr){if(this.xhr.onreadystatechange=rt,t)try{this.xhr.abort()}catch(t){}"undefined"!=typeof document&&delete r.requests[this.index],this.xhr=null}}},{key:"onLoad",value:function(){var t=this.xhr.responseText;null!==t&&(this.emitReserved("data",t),this.emitReserved("success"),this.cleanup())}},{key:"abort",value:function(){this.cleanup()}}]),r}(D);if(st.requestsCount=0,st.requests={},"undefined"!=typeof document)if("function"==typeof attachEvent)attachEvent("onunload",at);else if("function"==typeof addEventListener){addEventListener("onpagehide"in M?"pagehide":"unload",at,!1)}function at(){for(var t in st.requests)st.requests.hasOwnProperty(t)&&st.requests[t].abort()}var ut="function"==typeof Promise&&"function"==typeof Promise.resolve?function(t){return Promise.resolve().then(t)}:function(t,e){return e(t,0)},ct=M.WebSocket||M.MozWebSocket,ht="undefined"!=typeof navigator&&"string"==typeof navigator.product&&"reactnative"===navigator.product.toLowerCase(),ft=function(t){s(r,t);var e=d(r);function r(t){var i;return n(this,r),(i=e.call(this,t)).supportsBinary=!t.forceBase64,i}return i(r,[{key:"name",get:function(){return"websocket"}},{key:"doOpen",value:function(){if(this.check()){var t=this.uri(),e=this.opts.protocols,n=ht?{}:I(this.opts,"agent","perMessageDeflate","pfx","key","passphrase","cert","ca","ciphers","rejectUnauthorized","localAddress","protocolVersion","origin","maxPayload","family","checkServerIdentity");this.opts.extraHeaders&&(n.headers=this.opts.extraHeaders);try{this.ws=ht?new ct(t,e,n):e?new ct(t,e):new ct(t)}catch(t){return this.emitReserved("error",t)}this.ws.binaryType=this.socket.binaryType||"arraybuffer",this.addEventListeners()}}},{key:"addEventListeners",value:function(){var t=this;this.ws.onopen=function(){t.opts.autoUnref&&t.ws._socket.unref(),t.onOpen()},this.ws.onclose=function(e){return t.onClose({description:"websocket connection closed",context:e})},this.ws.onmessage=function(e){return t.onData(e.data)},this.ws.onerror=function(e){return t.onError("websocket error",e)}}},{key:"write",value:function(t){var e=this;this.writable=!1;for(var n=function(n){var r=t[n],i=n===t.length-1;T(r,e.supportsBinary,(function(t){try{e.ws.send(t)}catch(t){}i&&ut((function(){e.writable=!0,e.emitReserved("drain")}),e.setTimeoutFn)}))},r=0;r54;return P(r?t:B.decode(t),n)}(o,n,"arraybuffer")),n=!1):n=!0,e())}))}();var i=t.query.sid?'0{"sid":"'.concat(t.query.sid,'"}'):"0";t.writer.write((new TextEncoder).encode(i)).then((function(){return t.onOpen()}))}))})))}},{key:"write",value:function(t){var e=this;this.writable=!1;for(var n=function(n){var r=t[n],i=n===t.length-1;!function(t,e){O&&t.data instanceof Blob?t.data.arrayBuffer().then(A).then(e):E&&(t.data instanceof ArrayBuffer||C(t.data))?e(A(t.data)):T(t,!1,(function(t){k||(k=new TextEncoder),e(k.encode(t))}))}(r,(function(t){(function(t,e){return"message"===t.type&&"string"!=typeof t.data&&e[0]>=48&&e[0]<=54})(r,t)&&e.writer.write(Uint8Array.of(54)),e.writer.write(t).then((function(){i&&ut((function(){e.writable=!0,e.emitReserved("drain")}),e.setTimeoutFn)}))}))},r=0;r1&&void 0!==arguments[1]?arguments[1]:{};return n(this,a),(i=r.call(this)).writeBuffer=[],t&&"object"===e(t)&&(s=t,t=null),t?(t=vt(t),s.hostname=t.host,s.secure="https"===t.protocol||"wss"===t.protocol,s.port=t.port,t.query&&(s.query=t.query)):s.host&&(s.hostname=vt(s.host).host),$(l(i),s),i.secure=null!=s.secure?s.secure:"undefined"!=typeof location&&"https:"===location.protocol,s.hostname&&!s.port&&(s.port=i.secure?"443":"80"),i.hostname=s.hostname||("undefined"!=typeof location?location.hostname:"localhost"),i.port=s.port||("undefined"!=typeof location&&location.port?location.port:i.secure?"443":"80"),i.transports=s.transports||["polling","websocket","webtransport"],i.writeBuffer=[],i.prevBufferLen=0,i.opts=o({path:"/engine.io",agent:!1,withCredentials:!1,upgrade:!0,timestampParam:"t",rememberUpgrade:!1,addTrailingSlash:!0,rejectUnauthorized:!0,perMessageDeflate:{threshold:1024},transportOptions:{},closeOnBeforeunload:!0},s),i.opts.path=i.opts.path.replace(/\/$/,"")+(i.opts.addTrailingSlash?"/":""),"string"==typeof i.opts.query&&(i.opts.query=W(i.opts.query)),i.id=null,i.upgrades=null,i.pingInterval=null,i.pingTimeout=null,i.pingTimeoutTimer=null,"function"==typeof addEventListener&&(i.opts.closeOnBeforeunload&&(i.beforeunloadEventListener=function(){i.transport&&(i.transport.removeAllListeners(),i.transport.close())},addEventListener("beforeunload",i.beforeunloadEventListener,!1)),"localhost"!==i.hostname&&(i.offlineEventListener=function(){i.onClose("transport close",{description:"network connection lost"})},addEventListener("offline",i.offlineEventListener,!1))),i.open(),i}return i(a,[{key:"createTransport",value:function(t){var e=o({},this.opts.query);e.EIO=4,e.transport=t,this.id&&(e.sid=this.id);var n=o({},this.opts.transportOptions[t],this.opts,{query:e,socket:this,hostname:this.hostname,secure:this.secure,port:this.port});return new pt[t](n)}},{key:"open",value:function(){var t,e=this;if(this.opts.rememberUpgrade&&a.priorWebsocketSuccess&&-1!==this.transports.indexOf("websocket"))t="websocket";else{if(0===this.transports.length)return void this.setTimeoutFn((function(){e.emitReserved("error","No transports available")}),0);t=this.transports[0]}this.readyState="opening";try{t=this.createTransport(t)}catch(t){return this.transports.shift(),void this.open()}t.open(),this.setTransport(t)}},{key:"setTransport",value:function(t){var e=this;this.transport&&this.transport.removeAllListeners(),this.transport=t,t.on("drain",this.onDrain.bind(this)).on("packet",this.onPacket.bind(this)).on("error",this.onError.bind(this)).on("close",(function(t){return e.onClose("transport close",t)}))}},{key:"probe",value:function(t){var e=this,n=this.createTransport(t),r=!1;a.priorWebsocketSuccess=!1;var i=function(){r||(n.send([{type:"ping",data:"probe"}]),n.once("packet",(function(t){if(!r)if("pong"===t.type&&"probe"===t.data){if(e.upgrading=!0,e.emitReserved("upgrading",n),!n)return;a.priorWebsocketSuccess="websocket"===n.name,e.transport.pause((function(){r||"closed"!==e.readyState&&(f(),e.setTransport(n),n.send([{type:"upgrade"}]),e.emitReserved("upgrade",n),n=null,e.upgrading=!1,e.flush())}))}else{var i=new Error("probe error");i.transport=n.name,e.emitReserved("upgradeError",i)}})))};function o(){r||(r=!0,f(),n.close(),n=null)}var s=function(t){var r=new Error("probe error: "+t);r.transport=n.name,o(),e.emitReserved("upgradeError",r)};function u(){s("transport closed")}function c(){s("socket closed")}function h(t){n&&t.name!==n.name&&o()}var f=function(){n.removeListener("open",i),n.removeListener("error",s),n.removeListener("close",u),e.off("close",c),e.off("upgrading",h)};n.once("open",i),n.once("error",s),n.once("close",u),this.once("close",c),this.once("upgrading",h),-1!==this.upgrades.indexOf("webtransport")&&"webtransport"!==t?this.setTimeoutFn((function(){r||n.open()}),200):n.open()}},{key:"onOpen",value:function(){if(this.readyState="open",a.priorWebsocketSuccess="websocket"===this.transport.name,this.emitReserved("open"),this.flush(),"open"===this.readyState&&this.opts.upgrade)for(var t=0,e=this.upgrades.length;t1))return this.writeBuffer;for(var t,e=1,n=0;n=57344?n+=3:(r++,n+=4);return n}(t):Math.ceil(1.33*(t.byteLength||t.size))),n>0&&e>this.maxPayload)return this.writeBuffer.slice(0,n);e+=2}return this.writeBuffer}},{key:"write",value:function(t,e,n){return this.sendPacket("message",t,e,n),this}},{key:"send",value:function(t,e,n){return this.sendPacket("message",t,e,n),this}},{key:"sendPacket",value:function(t,e,n,r){if("function"==typeof e&&(r=e,e=void 0),"function"==typeof n&&(r=n,n=null),"closing"!==this.readyState&&"closed"!==this.readyState){(n=n||{}).compress=!1!==n.compress;var i={type:t,data:e,options:n};this.emitReserved("packetCreate",i),this.writeBuffer.push(i),r&&this.once("flush",r),this.flush()}}},{key:"close",value:function(){var t=this,e=function(){t.onClose("forced close"),t.transport.close()},n=function n(){t.off("upgrade",n),t.off("upgradeError",n),e()},r=function(){t.once("upgrade",n),t.once("upgradeError",n)};return"opening"!==this.readyState&&"open"!==this.readyState||(this.readyState="closing",this.writeBuffer.length?this.once("drain",(function(){t.upgrading?r():e()})):this.upgrading?r():e()),this}},{key:"onError",value:function(t){a.priorWebsocketSuccess=!1,this.emitReserved("error",t),this.onClose("transport error",t)}},{key:"onClose",value:function(t,e){"opening"!==this.readyState&&"open"!==this.readyState&&"closing"!==this.readyState||(this.clearTimeoutFn(this.pingTimeoutTimer),this.transport.removeAllListeners("close"),this.transport.close(),this.transport.removeAllListeners(),"function"==typeof removeEventListener&&(removeEventListener("beforeunload",this.beforeunloadEventListener,!1),removeEventListener("offline",this.offlineEventListener,!1)),this.readyState="closed",this.id=null,this.emitReserved("close",t,e),this.writeBuffer=[],this.prevBufferLen=0)}},{key:"filterUpgrades",value:function(t){for(var e=[],n=0,r=t.length;n>6),t.setUint8(e++,128|63&r)):r<55296||r>=57344?(t.setUint8(e++,224|r>>12),t.setUint8(e++,128|r>>6&63),t.setUint8(e++,128|63&r)):(i++,r=65536+((1023&r)<<10|1023&n.charCodeAt(i)),t.setUint8(e++,240|r>>18),t.setUint8(e++,128|r>>12&63),t.setUint8(e++,128|r>>6&63),t.setUint8(e++,128|63&r))}function kt(t,n,r){var i=e(r),o=0,s=0,a=0,u=0,c=0,h=0;if("string"===i){if(c=function(t){for(var e=0,n=0,r=0,i=t.length;r=57344?n+=3:(r++,n+=4);return n}(r),c<32)t.push(160|c),h=1;else if(c<256)t.push(217,c),h=2;else if(c<65536)t.push(218,c>>8,c),h=3;else{if(!(c<4294967296))throw new Error("String too long");t.push(219,c>>24,c>>16,c>>8,c),h=5}return n.push({_str:r,_length:c,_offset:t.length}),h+c}if("number"===i)return Math.floor(r)===r&&isFinite(r)?r>=0?r<128?(t.push(r),1):r<256?(t.push(204,r),2):r<65536?(t.push(205,r>>8,r),3):r<4294967296?(t.push(206,r>>24,r>>16,r>>8,r),5):(a=r/Math.pow(2,32)>>0,u=r>>>0,t.push(207,a>>24,a>>16,a>>8,a,u>>24,u>>16,u>>8,u),9):r>=-32?(t.push(r),1):r>=-128?(t.push(208,r),2):r>=-32768?(t.push(209,r>>8,r),3):r>=-2147483648?(t.push(210,r>>24,r>>16,r>>8,r),5):(a=Math.floor(r/Math.pow(2,32)),u=r>>>0,t.push(211,a>>24,a>>16,a>>8,a,u>>24,u>>16,u>>8,u),9):(t.push(203),n.push({_float:r,_length:8,_offset:t.length}),9);if("object"===i){if(null===r)return t.push(192),1;if(Array.isArray(r)){if((c=r.length)<16)t.push(144|c),h=1;else if(c<65536)t.push(220,c>>8,c),h=3;else{if(!(c<4294967296))throw new Error("Array too large");t.push(221,c>>24,c>>16,c>>8,c),h=5}for(o=0;o>>0,t.push(215,0,a>>24,a>>16,a>>8,a,u>>24,u>>16,u>>8,u),10}if(r instanceof ArrayBuffer){if((c=r.byteLength)<256)t.push(196,c),h=2;else if(c<65536)t.push(197,c>>8,c),h=3;else{if(!(c<4294967296))throw new Error("Buffer too large");t.push(198,c>>24,c>>16,c>>8,c),h=5}return n.push({_bin:r,_length:c,_offset:t.length}),h+c}if("function"==typeof r.toJSON)return kt(t,n,r.toJSON());var l=[],p="",d=Object.keys(r);for(o=0,s=d.length;o>8,c),h=3;else{if(!(c<4294967296))throw new Error("Object too large");t.push(223,c>>24,c>>16,c>>8,c),h=5}for(o=0;o0&&(u=n[0]._offset);for(var c,h=0,f=0,l=0,p=e.length;l=65536?(i-=65536,r+=String.fromCharCode(55296+(i>>>10),56320+(1023&i))):r+=String.fromCharCode(i)}else r+=String.fromCharCode((15&a)<<12|(63&t.getUint8(++o))<<6|(63&t.getUint8(++o))<<0);else r+=String.fromCharCode((31&a)<<6|63&t.getUint8(++o));else r+=String.fromCharCode(a)}return r}(this._view,this._offset,t);return this._offset+=t,e},Ot.prototype._bin=function(t){var e=this._buffer.slice(this._offset,this._offset+t);return this._offset+=t,e},Ot.prototype._parse=function(){var t,e=this._view.getUint8(this._offset++),n=0,r=0,i=0,o=0;if(e<192)return e<128?e:e<144?this._map(15&e):e<160?this._array(15&e):this._str(31&e);if(e>223)return-1*(255-e+1);switch(e){case 192:return null;case 194:return!1;case 195:return!0;case 196:return n=this._view.getUint8(this._offset),this._offset+=1,this._bin(n);case 197:return n=this._view.getUint16(this._offset),this._offset+=2,this._bin(n);case 198:return n=this._view.getUint32(this._offset),this._offset+=4,this._bin(n);case 199:return n=this._view.getUint8(this._offset),r=this._view.getInt8(this._offset+1),this._offset+=2,[r,this._bin(n)];case 200:return n=this._view.getUint16(this._offset),r=this._view.getInt8(this._offset+2),this._offset+=3,[r,this._bin(n)];case 201:return n=this._view.getUint32(this._offset),r=this._view.getInt8(this._offset+4),this._offset+=5,[r,this._bin(n)];case 202:return t=this._view.getFloat32(this._offset),this._offset+=4,t;case 203:return t=this._view.getFloat64(this._offset),this._offset+=8,t;case 204:return t=this._view.getUint8(this._offset),this._offset+=1,t;case 205:return t=this._view.getUint16(this._offset),this._offset+=2,t;case 206:return t=this._view.getUint32(this._offset),this._offset+=4,t;case 207:return i=this._view.getUint32(this._offset)*Math.pow(2,32),o=this._view.getUint32(this._offset+4),this._offset+=8,i+o;case 208:return t=this._view.getInt8(this._offset),this._offset+=1,t;case 209:return t=this._view.getInt16(this._offset),this._offset+=2,t;case 210:return t=this._view.getInt32(this._offset),this._offset+=4,t;case 211:return i=this._view.getInt32(this._offset)*Math.pow(2,32),o=this._view.getUint32(this._offset+4),this._offset+=8,i+o;case 212:return r=this._view.getInt8(this._offset),this._offset+=1,0===r?void(this._offset+=1):[r,this._bin(1)];case 213:return r=this._view.getInt8(this._offset),this._offset+=1,[r,this._bin(2)];case 214:return r=this._view.getInt8(this._offset),this._offset+=1,[r,this._bin(4)];case 215:return r=this._view.getInt8(this._offset),this._offset+=1,0===r?(i=this._view.getInt32(this._offset)*Math.pow(2,32),o=this._view.getUint32(this._offset+4),this._offset+=8,new Date(i+o)):[r,this._bin(8)];case 216:return r=this._view.getInt8(this._offset),this._offset+=1,[r,this._bin(16)];case 217:return n=this._view.getUint8(this._offset),this._offset+=1,this._str(n);case 218:return n=this._view.getUint16(this._offset),this._offset+=2,this._str(n);case 219:return n=this._view.getUint32(this._offset),this._offset+=4,this._str(n);case 220:return n=this._view.getUint16(this._offset),this._offset+=2,this._array(n);case 221:return n=this._view.getUint32(this._offset),this._offset+=4,this._array(n);case 222:return n=this._view.getUint16(this._offset),this._offset+=2,this._map(n);case 223:return n=this._view.getUint32(this._offset),this._offset+=4,this._map(n)}throw new Error("Could not parse")};var Et=function(t){var e=new Ot(t),n=e._parse();if(e._offset!==t.byteLength)throw new Error(t.byteLength-e._offset+" trailing bytes");return n};mt.encode=wt,mt.decode=Et;var Ct,Tt={exports:{}};!function(t){function e(t){if(t)return function(t){for(var n in e.prototype)t[n]=e.prototype[n];return t}(t)}t.exports=e,e.prototype.on=e.prototype.addEventListener=function(t,e){return this._callbacks=this._callbacks||{},(this._callbacks["$"+t]=this._callbacks["$"+t]||[]).push(e),this},e.prototype.once=function(t,e){function n(){this.off(t,n),e.apply(this,arguments)}return n.fn=e,this.on(t,n),this},e.prototype.off=e.prototype.removeListener=e.prototype.removeAllListeners=e.prototype.removeEventListener=function(t,e){if(this._callbacks=this._callbacks||{},0==arguments.length)return this._callbacks={},this;var n,r=this._callbacks["$"+t];if(!r)return this;if(1==arguments.length)return delete this._callbacks["$"+t],this;for(var i=0;i=Lt.CONNECT&&t.type<=Lt.CONNECT_ERROR))throw new Error("invalid packet type");if(!Bt(t.nsp))throw new Error("invalid namespace");if(!function(t){switch(t.type){case Lt.CONNECT:return void 0===t.data||Ut(t.data);case Lt.DISCONNECT:return void 0===t.data;case Lt.CONNECT_ERROR:return Bt(t.data)||Ut(t.data);default:return Array.isArray(t.data)}}(t))throw new Error("invalid payload");if(!(void 0===t.id||xt(t.id)))throw new Error("invalid packet id")},qt.prototype.destroy=function(){};var jt=_t.Encoder=Pt,Nt=_t.Decoder=qt,Dt=t({__proto__:null,default:_t,protocol:St,get PacketType(){return Ct},Encoder:jt,Decoder:Nt},[_t]);function Mt(t,e,n){return t.on(e,n),function(){t.off(e,n)}}var It=Object.freeze({connect:1,connect_error:1,disconnect:1,disconnecting:1,newListener:1,removeListener:1}),Ft=function(t){s(r,t);var e=d(r);function r(t,i,s){var a;return n(this,r),(a=e.call(this)).connected=!1,a.recovered=!1,a.receiveBuffer=[],a.sendBuffer=[],a._queue=[],a._queueSeq=0,a.ids=0,a.acks={},a.flags={},a.io=t,a.nsp=i,s&&s.auth&&(a.auth=s.auth),a._opts=o({},s),a.io._autoConnect&&a.open(),a}return i(r,[{key:"disconnected",get:function(){return!this.connected}},{key:"subEvents",value:function(){if(!this.subs){var t=this.io;this.subs=[Mt(t,"open",this.onopen.bind(this)),Mt(t,"packet",this.onpacket.bind(this)),Mt(t,"error",this.onerror.bind(this)),Mt(t,"close",this.onclose.bind(this))]}}},{key:"active",get:function(){return!!this.subs}},{key:"connect",value:function(){return this.connected||(this.subEvents(),this.io._reconnecting||this.io.open(),"open"===this.io._readyState&&this.onopen()),this}},{key:"open",value:function(){return this.connect()}},{key:"send",value:function(){for(var t=arguments.length,e=new Array(t),n=0;n1?e-1:0),r=1;r1?n-1:0),i=1;in._opts.retries&&(n._queue.shift(),e&&e(t));else if(n._queue.shift(),e){for(var o=arguments.length,s=new Array(o>1?o-1:0),a=1;a0&&void 0!==arguments[0]&&arguments[0];if(this.connected&&0!==this._queue.length){var e=this._queue[0];e.pending&&!t||(e.pending=!0,e.tryCount++,this.flags=e.flags,this.emit.apply(this,e.args))}}},{key:"packet",value:function(t){t.nsp=this.nsp,this.io._packet(t)}},{key:"onopen",value:function(){var t=this;"function"==typeof this.auth?this.auth((function(e){t._sendConnectPacket(e)})):this._sendConnectPacket(this.auth)}},{key:"_sendConnectPacket",value:function(t){this.packet({type:Ct.CONNECT,data:this._pid?o({pid:this._pid,offset:this._lastOffset},t):t})}},{key:"onerror",value:function(t){this.connected||this.emitReserved("connect_error",t)}},{key:"onclose",value:function(t,e){this.connected=!1,delete this.id,this.emitReserved("disconnect",t,e)}},{key:"onpacket",value:function(t){if(t.nsp===this.nsp)switch(t.type){case Ct.CONNECT:t.data&&t.data.sid?this.onconnect(t.data.sid,t.data.pid):this.emitReserved("connect_error",new Error("It seems you are trying to reach a Socket.IO server in v2.x with a v3.x client, but they are not compatible (more information here: https://socket.io/docs/v3/migrating-from-2-x-to-3-0/)"));break;case Ct.EVENT:case Ct.BINARY_EVENT:this.onevent(t);break;case Ct.ACK:case Ct.BINARY_ACK:this.onack(t);break;case Ct.DISCONNECT:this.ondisconnect();break;case Ct.CONNECT_ERROR:this.destroy();var e=new Error(t.data.message);e.data=t.data.data,this.emitReserved("connect_error",e)}}},{key:"onevent",value:function(t){var e=t.data||[];null!=t.id&&e.push(this.ack(t.id)),this.connected?this.emitEvent(e):this.receiveBuffer.push(Object.freeze(e))}},{key:"emitEvent",value:function(t){if(this._anyListeners&&this._anyListeners.length){var e,n=_(this._anyListeners.slice());try{for(n.s();!(e=n.n()).done;){e.value.apply(this,t)}}catch(t){n.e(t)}finally{n.f()}}v(a(r.prototype),"emit",this).apply(this,t),this._pid&&t.length&&"string"==typeof t[t.length-1]&&(this._lastOffset=t[t.length-1])}},{key:"ack",value:function(t){var e=this,n=!1;return function(){if(!n){n=!0;for(var r=arguments.length,i=new Array(r),o=0;o0&&t.jitter<=1?t.jitter:0,this.attempts=0}Ht.prototype.duration=function(){var t=this.ms*Math.pow(this.factor,this.attempts++);if(this.jitter){var e=Math.random(),n=Math.floor(e*this.jitter*t);t=0==(1&Math.floor(10*e))?t-n:t+n}return 0|Math.min(t,this.max)},Ht.prototype.reset=function(){this.attempts=0},Ht.prototype.setMin=function(t){this.ms=t},Ht.prototype.setMax=function(t){this.max=t},Ht.prototype.setJitter=function(t){this.jitter=t};var $t=function(t){s(o,t);var r=d(o);function o(t,i){var s,a;n(this,o),(s=r.call(this)).nsps={},s.subs=[],t&&"object"===e(t)&&(i=t,t=void 0),(i=i||{}).path=i.path||"/socket.io",s.opts=i,$(l(s),i),s.reconnection(!1!==i.reconnection),s.reconnectionAttempts(i.reconnectionAttempts||1/0),s.reconnectionDelay(i.reconnectionDelay||1e3),s.reconnectionDelayMax(i.reconnectionDelayMax||5e3),s.randomizationFactor(null!==(a=i.randomizationFactor)&&void 0!==a?a:.5),s.backoff=new Ht({min:s.reconnectionDelay(),max:s.reconnectionDelayMax(),jitter:s.randomizationFactor()}),s.timeout(null==i.timeout?2e4:i.timeout),s._readyState="closed",s.uri=t;var u=i.parser||Dt;return s.encoder=new u.Encoder,s.decoder=new u.Decoder,s._autoConnect=!1!==i.autoConnect,s._autoConnect&&s.open(),s}return i(o,[{key:"reconnection",value:function(t){return arguments.length?(this._reconnection=!!t,this):this._reconnection}},{key:"reconnectionAttempts",value:function(t){return void 0===t?this._reconnectionAttempts:(this._reconnectionAttempts=t,this)}},{key:"reconnectionDelay",value:function(t){var e;return void 0===t?this._reconnectionDelay:(this._reconnectionDelay=t,null===(e=this.backoff)||void 0===e||e.setMin(t),this)}},{key:"randomizationFactor",value:function(t){var e;return void 0===t?this._randomizationFactor:(this._randomizationFactor=t,null===(e=this.backoff)||void 0===e||e.setJitter(t),this)}},{key:"reconnectionDelayMax",value:function(t){var e;return void 0===t?this._reconnectionDelayMax:(this._reconnectionDelayMax=t,null===(e=this.backoff)||void 0===e||e.setMax(t),this)}},{key:"timeout",value:function(t){return arguments.length?(this._timeout=t,this):this._timeout}},{key:"maybeReconnectOnOpen",value:function(){!this._reconnecting&&this._reconnection&&0===this.backoff.attempts&&this.reconnect()}},{key:"open",value:function(t){var e=this;if(~this._readyState.indexOf("open"))return this;this.engine=new gt(this.uri,this.opts);var n=this.engine,r=this;this._readyState="opening",this.skipReconnect=!1;var i=Mt(n,"open",(function(){r.onopen(),t&&t()})),o=function(n){e.cleanup(),e._readyState="closed",e.emitReserved("error",n),t?t(n):e.maybeReconnectOnOpen()},s=Mt(n,"error",o);if(!1!==this._timeout){var a=this._timeout,u=this.setTimeoutFn((function(){i(),o(new Error("timeout")),n.close()}),a);this.opts.autoUnref&&u.unref(),this.subs.push((function(){e.clearTimeoutFn(u)}))}return this.subs.push(i),this.subs.push(s),this}},{key:"connect",value:function(t){return this.open(t)}},{key:"onopen",value:function(){this.cleanup(),this._readyState="open",this.emitReserved("open");var t=this.engine;this.subs.push(Mt(t,"ping",this.onping.bind(this)),Mt(t,"data",this.ondata.bind(this)),Mt(t,"error",this.onerror.bind(this)),Mt(t,"close",this.onclose.bind(this)),Mt(this.decoder,"decoded",this.ondecoded.bind(this)))}},{key:"onping",value:function(){this.emitReserved("ping")}},{key:"ondata",value:function(t){try{this.decoder.add(t)}catch(t){this.onclose("parse error",t)}}},{key:"ondecoded",value:function(t){var e=this;ut((function(){e.emitReserved("packet",t)}),this.setTimeoutFn)}},{key:"onerror",value:function(t){this.emitReserved("error",t)}},{key:"socket",value:function(t,e){var n=this.nsps[t];return n?this._autoConnect&&!n.active&&n.connect():(n=new Ft(this,t,e),this.nsps[t]=n),n}},{key:"_destroy",value:function(t){for(var e=0,n=Object.keys(this.nsps);e=this._reconnectionAttempts)this.backoff.reset(),this.emitReserved("reconnect_failed"),this._reconnecting=!1;else{var n=this.backoff.duration();this._reconnecting=!0;var r=this.setTimeoutFn((function(){e.skipReconnect||(t.emitReserved("reconnect_attempt",e.backoff.attempts),e.skipReconnect||e.open((function(n){n?(e._reconnecting=!1,e.reconnect(),t.emitReserved("reconnect_error",n)):e.onreconnect()})))}),n);this.opts.autoUnref&&r.unref(),this.subs.push((function(){t.clearTimeoutFn(r)}))}}},{key:"onreconnect",value:function(){var t=this.backoff.attempts;this._reconnecting=!1,this.backoff.reset(),this.emitReserved("reconnect",t)}}]),o}(D),Wt={};function zt(t,n){"object"===e(t)&&(n=t,t=void 0);var r,i=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",n=arguments.length>2?arguments[2]:void 0,r=t;n=n||"undefined"!=typeof location&&location,null==t&&(t=n.protocol+"//"+n.host),"string"==typeof t&&("/"===t.charAt(0)&&(t="/"===t.charAt(1)?n.protocol+t:n.host+t),/^(https?|wss?):\/\//.test(t)||(t=void 0!==n?n.protocol+"//"+t:"https://"+t),r=vt(t)),r.port||(/^(http|ws)$/.test(r.protocol)?r.port="80":/^(http|ws)s$/.test(r.protocol)&&(r.port="443")),r.path=r.path||"/";var i=-1!==r.host.indexOf(":")?"["+r.host+"]":r.host;return r.id=r.protocol+"://"+i+":"+r.port+e,r.href=r.protocol+"://"+i+(n&&n.port===r.port?"":":"+r.port),r}(t,(n=n||{}).path||"/socket.io"),o=i.source,s=i.id,a=i.path,u=Wt[s]&&a in Wt[s].nsps;return n.forceNew||n["force new connection"]||!1===n.multiplex||u?r=new $t(o,n):(Wt[s]||(Wt[s]=new $t(o,n)),r=Wt[s]),i.query&&!n.query&&(n.query=i.queryKey),r.socket(i.path,n)}return o(zt,{Manager:$t,Socket:Ft,io:zt,connect:zt}),zt})); //# sourceMappingURL=socket.io.msgpack.min.js.map diff --git a/dist/socket.io.msgpack.min.js.map b/dist/socket.io.msgpack.min.js.map index be7af1eb..76c77833 100644 --- a/dist/socket.io.msgpack.min.js.map +++ b/dist/socket.io.msgpack.min.js.map @@ -1 +1 @@ -{"version":3,"file":"socket.io.msgpack.min.js","sources":["../node_modules/engine.io-parser/build/esm/commons.js","../node_modules/engine.io-parser/build/esm/contrib/base64-arraybuffer.js","../node_modules/engine.io-parser/build/esm/encodePacket.browser.js","../node_modules/engine.io-parser/build/esm/decodePacket.browser.js","../node_modules/engine.io-parser/build/esm/index.js","../node_modules/@socket.io/component-emitter/index.mjs","../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/yeast.js","../node_modules/engine.io-client/build/esm/transport.js","../node_modules/engine.io-client/build/esm/contrib/parseqs.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/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","../node_modules/notepack.io/browser/encode.js","../node_modules/notepack.io/browser/decode.js","../node_modules/notepack.io/lib/index.js","../node_modules/component-emitter/index.js","../node_modules/socket.io-msgpack-parser/index.js","../build/esm/on.js","../build/esm/socket.js","../build/esm/contrib/backo2.js","../build/esm/manager.js","../build/esm/index.js","../build/esm/url.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","const 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 { PACKET_TYPES } from \"./commons.js\";\nconst withNativeBlob = typeof Blob === \"function\" ||\n (typeof Blob !== \"undefined\" &&\n Object.prototype.toString.call(Blob) === \"[object BlobConstructor]\");\nconst withNativeArrayBuffer = typeof ArrayBuffer === \"function\";\n// ArrayBuffer.isView method is not defined in IE10\nconst isView = obj => {\n return typeof ArrayBuffer.isView === \"function\"\n ? ArrayBuffer.isView(obj)\n : obj && obj.buffer instanceof ArrayBuffer;\n};\nconst encodePacket = ({ type, data }, supportsBinary, callback) => {\n if (withNativeBlob && data instanceof Blob) {\n if (supportsBinary) {\n return callback(data);\n }\n else {\n return encodeBlobAsBase64(data, callback);\n }\n }\n else if (withNativeArrayBuffer &&\n (data instanceof ArrayBuffer || isView(data))) {\n if (supportsBinary) {\n return callback(data);\n }\n else {\n return encodeBlobAsBase64(new Blob([data]), callback);\n }\n }\n // plain string\n return callback(PACKET_TYPES[type] + (data || \"\"));\n};\nconst encodeBlobAsBase64 = (data, callback) => {\n const fileReader = new FileReader();\n fileReader.onload = function () {\n const content = fileReader.result.split(\",\")[1];\n callback(\"b\" + content);\n };\n return fileReader.readAsDataURL(data);\n};\nexport default encodePacket;\n","import { ERROR_PACKET, PACKET_TYPES_REVERSE } from \"./commons.js\";\nimport { decode } from \"./contrib/base64-arraybuffer.js\";\nconst withNativeArrayBuffer = typeof ArrayBuffer === \"function\";\nconst decodePacket = (encodedPacket, binaryType) => {\n if (typeof encodedPacket !== \"string\") {\n return {\n type: \"message\",\n data: mapBinary(encodedPacket, binaryType)\n };\n }\n const type = encodedPacket.charAt(0);\n if (type === \"b\") {\n return {\n type: \"message\",\n data: decodeBase64Packet(encodedPacket.substring(1), binaryType)\n };\n }\n const packetType = PACKET_TYPES_REVERSE[type];\n if (!packetType) {\n return ERROR_PACKET;\n }\n return encodedPacket.length > 1\n ? {\n type: PACKET_TYPES_REVERSE[type],\n data: encodedPacket.substring(1)\n }\n : {\n type: PACKET_TYPES_REVERSE[type]\n };\n};\nconst decodeBase64Packet = (data, binaryType) => {\n if (withNativeArrayBuffer) {\n const decoded = decode(data);\n return mapBinary(decoded, binaryType);\n }\n else {\n return { base64: true, data }; // fallback for old browsers\n }\n};\nconst mapBinary = (data, binaryType) => {\n switch (binaryType) {\n case \"blob\":\n return data instanceof ArrayBuffer ? new Blob([data]) : data;\n case \"arraybuffer\":\n default:\n return data; // assuming the data is already an ArrayBuffer\n }\n};\nexport default decodePacket;\n","import encodePacket from \"./encodePacket.js\";\nimport decodePacket from \"./decodePacket.js\";\nconst SEPARATOR = String.fromCharCode(30); // see https://en.wikipedia.org/wiki/Delimiter#ASCII_delimited_text\nconst encodePayload = (packets, callback) => {\n // some packets may be added to the array while encoding, so the initial length must be saved\n const length = packets.length;\n const encodedPackets = new Array(length);\n let count = 0;\n packets.forEach((packet, i) => {\n // force base64 encoding for binary packets\n encodePacket(packet, false, encodedPacket => {\n encodedPackets[i] = encodedPacket;\n if (++count === length) {\n callback(encodedPackets.join(SEPARATOR));\n }\n });\n });\n};\nconst decodePayload = (encodedPayload, binaryType) => {\n const encodedPackets = encodedPayload.split(SEPARATOR);\n const packets = [];\n for (let i = 0; i < encodedPackets.length; i++) {\n const decodedPacket = decodePacket(encodedPackets[i], binaryType);\n packets.push(decodedPacket);\n if (decodedPacket.type === \"error\") {\n break;\n }\n }\n return packets;\n};\nexport const protocol = 4;\nexport { encodePacket, encodePayload, decodePacket, decodePayload };\n","/**\n * Initialize a new `Emitter`.\n *\n * @api public\n */\n\nexport function Emitter(obj) {\n if (obj) return mixin(obj);\n}\n\n/**\n * Mixin the emitter properties.\n *\n * @param {Object} obj\n * @return {Object}\n * @api private\n */\n\nfunction mixin(obj) {\n for (var key in Emitter.prototype) {\n obj[key] = Emitter.prototype[key];\n }\n return obj;\n}\n\n/**\n * Listen on the given `event` with `fn`.\n *\n * @param {String} event\n * @param {Function} fn\n * @return {Emitter}\n * @api public\n */\n\nEmitter.prototype.on =\nEmitter.prototype.addEventListener = function(event, fn){\n this._callbacks = this._callbacks || {};\n (this._callbacks['$' + event] = this._callbacks['$' + event] || [])\n .push(fn);\n return this;\n};\n\n/**\n * Adds an `event` listener that will be invoked a single\n * time then automatically removed.\n *\n * @param {String} event\n * @param {Function} fn\n * @return {Emitter}\n * @api public\n */\n\nEmitter.prototype.once = function(event, fn){\n function on() {\n this.off(event, on);\n fn.apply(this, arguments);\n }\n\n on.fn = fn;\n this.on(event, on);\n return this;\n};\n\n/**\n * Remove the given callback for `event` or all\n * registered callbacks.\n *\n * @param {String} event\n * @param {Function} fn\n * @return {Emitter}\n * @api public\n */\n\nEmitter.prototype.off =\nEmitter.prototype.removeListener =\nEmitter.prototype.removeAllListeners =\nEmitter.prototype.removeEventListener = function(event, fn){\n this._callbacks = this._callbacks || {};\n\n // all\n if (0 == arguments.length) {\n this._callbacks = {};\n return this;\n }\n\n // specific event\n var callbacks = this._callbacks['$' + event];\n if (!callbacks) return this;\n\n // remove all handlers\n if (1 == arguments.length) {\n delete this._callbacks['$' + event];\n return this;\n }\n\n // remove specific handler\n var cb;\n for (var i = 0; i < callbacks.length; i++) {\n cb = callbacks[i];\n if (cb === fn || cb.fn === fn) {\n callbacks.splice(i, 1);\n break;\n }\n }\n\n // Remove event specific arrays for event types that no\n // one is subscribed for to avoid memory leak.\n if (callbacks.length === 0) {\n delete this._callbacks['$' + event];\n }\n\n return this;\n};\n\n/**\n * Emit `event` with the given args.\n *\n * @param {String} event\n * @param {Mixed} ...\n * @return {Emitter}\n */\n\nEmitter.prototype.emit = function(event){\n this._callbacks = this._callbacks || {};\n\n var args = new Array(arguments.length - 1)\n , callbacks = this._callbacks['$' + event];\n\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n\n if (callbacks) {\n callbacks = callbacks.slice(0);\n for (var i = 0, len = callbacks.length; i < len; ++i) {\n callbacks[i].apply(this, args);\n }\n }\n\n return this;\n};\n\n// alias used for reserved events (protected method)\nEmitter.prototype.emitReserved = Emitter.prototype.emit;\n\n/**\n * Return array of callbacks for `event`.\n *\n * @param {String} event\n * @return {Array}\n * @api public\n */\n\nEmitter.prototype.listeners = function(event){\n this._callbacks = this._callbacks || {};\n return this._callbacks['$' + event] || [];\n};\n\n/**\n * Check if this emitter has `event` handlers.\n *\n * @param {String} event\n * @return {Boolean}\n * @api public\n */\n\nEmitter.prototype.hasListeners = function(event){\n return !! this.listeners(event).length;\n};\n","export const globalThisShim = (() => {\n if (typeof self !== \"undefined\") {\n return self;\n }\n else if (typeof window !== \"undefined\") {\n return window;\n }\n else {\n return Function(\"return this\")();\n }\n})();\n","import { globalThisShim as globalThis } from \"./globalThis.js\";\nexport function pick(obj, ...attr) {\n return attr.reduce((acc, k) => {\n if (obj.hasOwnProperty(k)) {\n acc[k] = obj[k];\n }\n return acc;\n }, {});\n}\n// Keep a reference to the real timeout functions so they can be used when overridden\nconst NATIVE_SET_TIMEOUT = globalThis.setTimeout;\nconst NATIVE_CLEAR_TIMEOUT = globalThis.clearTimeout;\nexport function installTimerFunctions(obj, opts) {\n if (opts.useNativeTimers) {\n obj.setTimeoutFn = NATIVE_SET_TIMEOUT.bind(globalThis);\n obj.clearTimeoutFn = NATIVE_CLEAR_TIMEOUT.bind(globalThis);\n }\n else {\n obj.setTimeoutFn = globalThis.setTimeout.bind(globalThis);\n obj.clearTimeoutFn = globalThis.clearTimeout.bind(globalThis);\n }\n}\n// base64 encoded buffers are about 33% bigger (https://en.wikipedia.org/wiki/Base64)\nconst BASE64_OVERHEAD = 1.33;\n// we could also have used `new Blob([obj]).size`, but it isn't supported in IE9\nexport function byteLength(obj) {\n if (typeof obj === \"string\") {\n return utf8Length(obj);\n }\n // arraybuffer or blob\n return Math.ceil((obj.byteLength || obj.size) * BASE64_OVERHEAD);\n}\nfunction utf8Length(str) {\n let c = 0, length = 0;\n for (let i = 0, l = str.length; i < l; i++) {\n c = str.charCodeAt(i);\n if (c < 0x80) {\n length += 1;\n }\n else if (c < 0x800) {\n length += 2;\n }\n else if (c < 0xd800 || c >= 0xe000) {\n length += 3;\n }\n else {\n i++;\n length += 4;\n }\n }\n return length;\n}\n","// imported from https://github.com/unshiftio/yeast\n'use strict';\nconst alphabet = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-_'.split(''), length = 64, map = {};\nlet seed = 0, i = 0, prev;\n/**\n * Return a string representing the specified number.\n *\n * @param {Number} num The number to convert.\n * @returns {String} The string representation of the number.\n * @api public\n */\nexport function encode(num) {\n let encoded = '';\n do {\n encoded = alphabet[num % length] + encoded;\n num = Math.floor(num / length);\n } while (num > 0);\n return encoded;\n}\n/**\n * Return the integer value specified by the given string.\n *\n * @param {String} str The string to convert.\n * @returns {Number} The integer value represented by the string.\n * @api public\n */\nexport function decode(str) {\n let decoded = 0;\n for (i = 0; i < str.length; i++) {\n decoded = decoded * length + map[str.charAt(i)];\n }\n return decoded;\n}\n/**\n * Yeast: A tiny growing id generator.\n *\n * @returns {String} A unique id.\n * @api public\n */\nexport function yeast() {\n const now = encode(+new Date());\n if (now !== prev)\n return seed = 0, prev = now;\n return now + '.' + encode(seed++);\n}\n//\n// Map each character to its index.\n//\nfor (; i < length; i++)\n map[alphabet[i]] = i;\n","import { decodePacket } from \"engine.io-parser\";\nimport { Emitter } from \"@socket.io/component-emitter\";\nimport { installTimerFunctions } from \"./util.js\";\nclass TransportError extends Error {\n constructor(reason, description, context) {\n super(reason);\n this.description = description;\n this.context = context;\n this.type = \"TransportError\";\n }\n}\nexport class Transport extends Emitter {\n /**\n * Transport abstract constructor.\n *\n * @param {Object} opts - options\n * @protected\n */\n constructor(opts) {\n super();\n this.writable = false;\n installTimerFunctions(this, opts);\n this.opts = opts;\n this.query = opts.query;\n this.socket = opts.socket;\n }\n /**\n * Emits an error.\n *\n * @param {String} reason\n * @param description\n * @param context - the error context\n * @return {Transport} for chaining\n * @protected\n */\n onError(reason, description, context) {\n super.emitReserved(\"error\", new TransportError(reason, description, context));\n return this;\n }\n /**\n * Opens the transport.\n */\n open() {\n this.readyState = \"opening\";\n this.doOpen();\n return this;\n }\n /**\n * Closes the transport.\n */\n close() {\n if (this.readyState === \"opening\" || this.readyState === \"open\") {\n this.doClose();\n this.onClose();\n }\n return this;\n }\n /**\n * Sends multiple packets.\n *\n * @param {Array} packets\n */\n send(packets) {\n if (this.readyState === \"open\") {\n this.write(packets);\n }\n else {\n // this might happen if the transport was silently closed in the beforeunload event handler\n }\n }\n /**\n * Called upon open\n *\n * @protected\n */\n onOpen() {\n this.readyState = \"open\";\n this.writable = true;\n super.emitReserved(\"open\");\n }\n /**\n * Called with data.\n *\n * @param {String} data\n * @protected\n */\n onData(data) {\n const packet = decodePacket(data, this.socket.binaryType);\n this.onPacket(packet);\n }\n /**\n * Called with a decoded packet.\n *\n * @protected\n */\n onPacket(packet) {\n super.emitReserved(\"packet\", packet);\n }\n /**\n * Called upon close.\n *\n * @protected\n */\n onClose(details) {\n this.readyState = \"closed\";\n super.emitReserved(\"close\", details);\n }\n /**\n * Pauses the transport, in order not to lose packets during an upgrade.\n *\n * @param onPause\n */\n pause(onPause) { }\n}\n","// imported from https://github.com/galkn/querystring\n/**\n * Compiles a querystring\n * Returns string representation of the object\n *\n * @param {Object}\n * @api private\n */\nexport function encode(obj) {\n let str = '';\n for (let i in obj) {\n if (obj.hasOwnProperty(i)) {\n if (str.length)\n str += '&';\n str += encodeURIComponent(i) + '=' + encodeURIComponent(obj[i]);\n }\n }\n return str;\n}\n/**\n * Parses a simple querystring into an object\n *\n * @param {String} qs\n * @api private\n */\nexport function decode(qs) {\n let qry = {};\n let pairs = qs.split('&');\n for (let i = 0, l = pairs.length; i < l; i++) {\n let pair = pairs[i].split('=');\n qry[decodeURIComponent(pair[0])] = decodeURIComponent(pair[1]);\n }\n return qry;\n}\n","// imported from https://github.com/component/has-cors\nlet value = false;\ntry {\n value = typeof XMLHttpRequest !== 'undefined' &&\n 'withCredentials' in new XMLHttpRequest();\n}\ncatch (err) {\n // if XMLHttp support is disabled in IE then it will throw\n // when trying to create\n}\nexport const hasCORS = value;\n","// browser shim for xmlhttprequest module\nimport { hasCORS } from \"../contrib/has-cors.js\";\nimport { globalThisShim as globalThis } from \"../globalThis.js\";\nexport function XHR(opts) {\n const xdomain = opts.xdomain;\n // XMLHttpRequest can be disabled on IE\n try {\n if (\"undefined\" !== typeof XMLHttpRequest && (!xdomain || hasCORS)) {\n return new XMLHttpRequest();\n }\n }\n catch (e) { }\n if (!xdomain) {\n try {\n return new globalThis[[\"Active\"].concat(\"Object\").join(\"X\")](\"Microsoft.XMLHTTP\");\n }\n catch (e) { }\n }\n}\n","import { Transport } from \"../transport.js\";\nimport { yeast } from \"../contrib/yeast.js\";\nimport { encode } from \"../contrib/parseqs.js\";\nimport { encodePayload, decodePayload } from \"engine.io-parser\";\nimport { XHR as XMLHttpRequest } from \"./xmlhttprequest.js\";\nimport { Emitter } from \"@socket.io/component-emitter\";\nimport { installTimerFunctions, pick } from \"../util.js\";\nimport { globalThisShim as globalThis } from \"../globalThis.js\";\nfunction empty() { }\nconst hasXHR2 = (function () {\n const xhr = new XMLHttpRequest({\n xdomain: false,\n });\n return null != xhr.responseType;\n})();\nexport class Polling extends Transport {\n /**\n * XHR Polling constructor.\n *\n * @param {Object} opts\n * @package\n */\n constructor(opts) {\n super(opts);\n this.polling = false;\n if (typeof location !== \"undefined\") {\n const isSSL = \"https:\" === location.protocol;\n let port = location.port;\n // some user agents have empty `location.port`\n if (!port) {\n port = isSSL ? \"443\" : \"80\";\n }\n this.xd =\n (typeof location !== \"undefined\" &&\n opts.hostname !== location.hostname) ||\n port !== opts.port;\n this.xs = opts.secure !== isSSL;\n }\n /**\n * XHR supports binary\n */\n const forceBase64 = opts && opts.forceBase64;\n this.supportsBinary = hasXHR2 && !forceBase64;\n }\n get name() {\n return \"polling\";\n }\n /**\n * Opens the socket (triggers polling). We write a PING message to determine\n * when the transport is open.\n *\n * @protected\n */\n doOpen() {\n this.poll();\n }\n /**\n * Pauses polling.\n *\n * @param {Function} onPause - callback upon buffers are flushed and transport is paused\n * @package\n */\n pause(onPause) {\n this.readyState = \"pausing\";\n const pause = () => {\n this.readyState = \"paused\";\n onPause();\n };\n if (this.polling || !this.writable) {\n let total = 0;\n if (this.polling) {\n total++;\n this.once(\"pollComplete\", function () {\n --total || pause();\n });\n }\n if (!this.writable) {\n total++;\n this.once(\"drain\", function () {\n --total || pause();\n });\n }\n }\n else {\n pause();\n }\n }\n /**\n * Starts polling cycle.\n *\n * @private\n */\n poll() {\n this.polling = true;\n this.doPoll();\n this.emitReserved(\"poll\");\n }\n /**\n * Overloads onData to detect payloads.\n *\n * @protected\n */\n onData(data) {\n const callback = (packet) => {\n // if its the first message we consider the transport open\n if (\"opening\" === this.readyState && packet.type === \"open\") {\n this.onOpen();\n }\n // if its a close packet, we close the ongoing requests\n if (\"close\" === packet.type) {\n this.onClose({ description: \"transport closed by the server\" });\n return false;\n }\n // otherwise bypass onData and handle the message\n this.onPacket(packet);\n };\n // decode payload\n decodePayload(data, this.socket.binaryType).forEach(callback);\n // if an event did not trigger closing\n if (\"closed\" !== this.readyState) {\n // if we got data we're not polling\n this.polling = false;\n this.emitReserved(\"pollComplete\");\n if (\"open\" === this.readyState) {\n this.poll();\n }\n else {\n }\n }\n }\n /**\n * For polling, send a close packet.\n *\n * @protected\n */\n doClose() {\n const close = () => {\n this.write([{ type: \"close\" }]);\n };\n if (\"open\" === this.readyState) {\n close();\n }\n else {\n // in case we're trying to close while\n // handshaking is in progress (GH-164)\n this.once(\"open\", close);\n }\n }\n /**\n * Writes a packets payload.\n *\n * @param {Array} packets - data packets\n * @protected\n */\n write(packets) {\n this.writable = false;\n encodePayload(packets, (data) => {\n this.doWrite(data, () => {\n this.writable = true;\n this.emitReserved(\"drain\");\n });\n });\n }\n /**\n * Generates uri for connection.\n *\n * @private\n */\n uri() {\n let query = this.query || {};\n const schema = this.opts.secure ? \"https\" : \"http\";\n let port = \"\";\n // cache busting is forced\n if (false !== this.opts.timestampRequests) {\n query[this.opts.timestampParam] = yeast();\n }\n if (!this.supportsBinary && !query.sid) {\n query.b64 = 1;\n }\n // avoid port if default for schema\n if (this.opts.port &&\n ((\"https\" === schema && Number(this.opts.port) !== 443) ||\n (\"http\" === schema && Number(this.opts.port) !== 80))) {\n port = \":\" + this.opts.port;\n }\n const encodedQuery = encode(query);\n const ipv6 = this.opts.hostname.indexOf(\":\") !== -1;\n return (schema +\n \"://\" +\n (ipv6 ? \"[\" + this.opts.hostname + \"]\" : this.opts.hostname) +\n port +\n this.opts.path +\n (encodedQuery.length ? \"?\" + encodedQuery : \"\"));\n }\n /**\n * Creates a request.\n *\n * @param {String} method\n * @private\n */\n request(opts = {}) {\n Object.assign(opts, { xd: this.xd, xs: this.xs }, this.opts);\n return new Request(this.uri(), opts);\n }\n /**\n * Sends data.\n *\n * @param {String} data to send.\n * @param {Function} called upon flush.\n * @private\n */\n doWrite(data, fn) {\n const req = this.request({\n method: \"POST\",\n data: data,\n });\n req.on(\"success\", fn);\n req.on(\"error\", (xhrStatus, context) => {\n this.onError(\"xhr post error\", xhrStatus, context);\n });\n }\n /**\n * Starts a poll cycle.\n *\n * @private\n */\n doPoll() {\n const req = this.request();\n req.on(\"data\", this.onData.bind(this));\n req.on(\"error\", (xhrStatus, context) => {\n this.onError(\"xhr poll error\", xhrStatus, context);\n });\n this.pollXhr = req;\n }\n}\nexport class Request extends Emitter {\n /**\n * Request constructor\n *\n * @param {Object} options\n * @package\n */\n constructor(uri, opts) {\n super();\n installTimerFunctions(this, opts);\n this.opts = opts;\n this.method = opts.method || \"GET\";\n this.uri = uri;\n this.async = false !== opts.async;\n this.data = undefined !== opts.data ? opts.data : null;\n this.create();\n }\n /**\n * Creates the XHR object and sends the request.\n *\n * @private\n */\n create() {\n const opts = pick(this.opts, \"agent\", \"pfx\", \"key\", \"passphrase\", \"cert\", \"ca\", \"ciphers\", \"rejectUnauthorized\", \"autoUnref\");\n opts.xdomain = !!this.opts.xd;\n opts.xscheme = !!this.opts.xs;\n const xhr = (this.xhr = new XMLHttpRequest(opts));\n try {\n xhr.open(this.method, this.uri, this.async);\n try {\n if (this.opts.extraHeaders) {\n xhr.setDisableHeaderCheck && xhr.setDisableHeaderCheck(true);\n for (let i in this.opts.extraHeaders) {\n if (this.opts.extraHeaders.hasOwnProperty(i)) {\n xhr.setRequestHeader(i, this.opts.extraHeaders[i]);\n }\n }\n }\n }\n catch (e) { }\n if (\"POST\" === this.method) {\n try {\n xhr.setRequestHeader(\"Content-type\", \"text/plain;charset=UTF-8\");\n }\n catch (e) { }\n }\n try {\n xhr.setRequestHeader(\"Accept\", \"*/*\");\n }\n catch (e) { }\n // ie6 check\n if (\"withCredentials\" in xhr) {\n xhr.withCredentials = this.opts.withCredentials;\n }\n if (this.opts.requestTimeout) {\n xhr.timeout = this.opts.requestTimeout;\n }\n xhr.onreadystatechange = () => {\n if (4 !== xhr.readyState)\n return;\n if (200 === xhr.status || 1223 === xhr.status) {\n this.onLoad();\n }\n else {\n // make sure the `error` event handler that's user-set\n // does not throw in the same tick and gets caught here\n this.setTimeoutFn(() => {\n this.onError(typeof xhr.status === \"number\" ? xhr.status : 0);\n }, 0);\n }\n };\n xhr.send(this.data);\n }\n catch (e) {\n // Need to defer since .create() is called directly from the constructor\n // and thus the 'error' event can only be only bound *after* this exception\n // occurs. Therefore, also, we cannot throw here at all.\n this.setTimeoutFn(() => {\n this.onError(e);\n }, 0);\n return;\n }\n if (typeof document !== \"undefined\") {\n this.index = Request.requestsCount++;\n Request.requests[this.index] = this;\n }\n }\n /**\n * Called upon error.\n *\n * @private\n */\n onError(err) {\n this.emitReserved(\"error\", err, this.xhr);\n this.cleanup(true);\n }\n /**\n * Cleans up house.\n *\n * @private\n */\n cleanup(fromError) {\n if (\"undefined\" === typeof this.xhr || null === this.xhr) {\n return;\n }\n this.xhr.onreadystatechange = empty;\n if (fromError) {\n try {\n this.xhr.abort();\n }\n catch (e) { }\n }\n if (typeof document !== \"undefined\") {\n delete Request.requests[this.index];\n }\n this.xhr = null;\n }\n /**\n * Called upon load.\n *\n * @private\n */\n onLoad() {\n const data = this.xhr.responseText;\n if (data !== null) {\n this.emitReserved(\"data\", data);\n this.emitReserved(\"success\");\n this.cleanup();\n }\n }\n /**\n * Aborts the request.\n *\n * @package\n */\n abort() {\n this.cleanup();\n }\n}\nRequest.requestsCount = 0;\nRequest.requests = {};\n/**\n * Aborts pending requests when unloading the window. This is needed to prevent\n * memory leaks (e.g. when using IE) and to ensure that no spurious error is\n * emitted.\n */\nif (typeof document !== \"undefined\") {\n // @ts-ignore\n if (typeof attachEvent === \"function\") {\n // @ts-ignore\n attachEvent(\"onunload\", unloadHandler);\n }\n else if (typeof addEventListener === \"function\") {\n const terminationEvent = \"onpagehide\" in globalThis ? \"pagehide\" : \"unload\";\n addEventListener(terminationEvent, unloadHandler, false);\n }\n}\nfunction unloadHandler() {\n for (let i in Request.requests) {\n if (Request.requests.hasOwnProperty(i)) {\n Request.requests[i].abort();\n }\n }\n}\n","import { globalThisShim as globalThis } from \"../globalThis.js\";\nexport const nextTick = (() => {\n const isPromiseAvailable = typeof Promise === \"function\" && typeof Promise.resolve === \"function\";\n if (isPromiseAvailable) {\n return (cb) => Promise.resolve().then(cb);\n }\n else {\n return (cb, setTimeoutFn) => setTimeoutFn(cb, 0);\n }\n})();\nexport const WebSocket = globalThis.WebSocket || globalThis.MozWebSocket;\nexport const usingBrowserWebSocket = true;\nexport const defaultBinaryType = \"arraybuffer\";\n","import { Transport } from \"../transport.js\";\nimport { encode } from \"../contrib/parseqs.js\";\nimport { yeast } from \"../contrib/yeast.js\";\nimport { pick } from \"../util.js\";\nimport { defaultBinaryType, nextTick, usingBrowserWebSocket, WebSocket, } from \"./websocket-constructor.js\";\nimport { encodePacket } from \"engine.io-parser\";\n// detect ReactNative environment\nconst isReactNative = typeof navigator !== \"undefined\" &&\n typeof navigator.product === \"string\" &&\n navigator.product.toLowerCase() === \"reactnative\";\nexport class WS extends Transport {\n /**\n * WebSocket transport constructor.\n *\n * @param {Object} opts - connection options\n * @protected\n */\n constructor(opts) {\n super(opts);\n this.supportsBinary = !opts.forceBase64;\n }\n get name() {\n return \"websocket\";\n }\n doOpen() {\n if (!this.check()) {\n // let probe timeout\n return;\n }\n const uri = this.uri();\n const protocols = this.opts.protocols;\n // React Native only supports the 'headers' option, and will print a warning if anything else is passed\n const opts = isReactNative\n ? {}\n : pick(this.opts, \"agent\", \"perMessageDeflate\", \"pfx\", \"key\", \"passphrase\", \"cert\", \"ca\", \"ciphers\", \"rejectUnauthorized\", \"localAddress\", \"protocolVersion\", \"origin\", \"maxPayload\", \"family\", \"checkServerIdentity\");\n if (this.opts.extraHeaders) {\n opts.headers = this.opts.extraHeaders;\n }\n try {\n this.ws =\n usingBrowserWebSocket && !isReactNative\n ? protocols\n ? new WebSocket(uri, protocols)\n : new WebSocket(uri)\n : new WebSocket(uri, protocols, opts);\n }\n catch (err) {\n return this.emitReserved(\"error\", err);\n }\n this.ws.binaryType = this.socket.binaryType || defaultBinaryType;\n this.addEventListeners();\n }\n /**\n * Adds event listeners to the socket\n *\n * @private\n */\n addEventListeners() {\n this.ws.onopen = () => {\n if (this.opts.autoUnref) {\n this.ws._socket.unref();\n }\n this.onOpen();\n };\n this.ws.onclose = (closeEvent) => this.onClose({\n description: \"websocket connection closed\",\n context: closeEvent,\n });\n this.ws.onmessage = (ev) => this.onData(ev.data);\n this.ws.onerror = (e) => this.onError(\"websocket error\", e);\n }\n write(packets) {\n this.writable = false;\n // encodePacket efficient as it uses WS framing\n // no need for encodePayload\n for (let i = 0; i < packets.length; i++) {\n const packet = packets[i];\n const lastPacket = i === packets.length - 1;\n encodePacket(packet, this.supportsBinary, (data) => {\n // always create a new object (GH-437)\n const opts = {};\n if (!usingBrowserWebSocket) {\n if (packet.options) {\n opts.compress = packet.options.compress;\n }\n if (this.opts.perMessageDeflate) {\n const len = \n // @ts-ignore\n \"string\" === typeof data ? Buffer.byteLength(data) : data.length;\n if (len < this.opts.perMessageDeflate.threshold) {\n opts.compress = false;\n }\n }\n }\n // Sometimes the websocket has already been closed but the browser didn't\n // have a chance of informing us about it yet, in that case send will\n // throw an error\n try {\n if (usingBrowserWebSocket) {\n // TypeError is thrown when passing the second argument on Safari\n this.ws.send(data);\n }\n else {\n this.ws.send(data, opts);\n }\n }\n catch (e) {\n }\n if (lastPacket) {\n // fake drain\n // defer to next tick to allow Socket to clear writeBuffer\n nextTick(() => {\n this.writable = true;\n this.emitReserved(\"drain\");\n }, this.setTimeoutFn);\n }\n });\n }\n }\n doClose() {\n if (typeof this.ws !== \"undefined\") {\n this.ws.close();\n this.ws = null;\n }\n }\n /**\n * Generates uri for connection.\n *\n * @private\n */\n uri() {\n let query = this.query || {};\n const schema = this.opts.secure ? \"wss\" : \"ws\";\n let port = \"\";\n // avoid port if default for schema\n if (this.opts.port &&\n ((\"wss\" === schema && Number(this.opts.port) !== 443) ||\n (\"ws\" === schema && Number(this.opts.port) !== 80))) {\n port = \":\" + this.opts.port;\n }\n // append timestamp to URI\n if (this.opts.timestampRequests) {\n query[this.opts.timestampParam] = yeast();\n }\n // communicate binary support capabilities\n if (!this.supportsBinary) {\n query.b64 = 1;\n }\n const encodedQuery = encode(query);\n const ipv6 = this.opts.hostname.indexOf(\":\") !== -1;\n return (schema +\n \"://\" +\n (ipv6 ? \"[\" + this.opts.hostname + \"]\" : this.opts.hostname) +\n port +\n this.opts.path +\n (encodedQuery.length ? \"?\" + encodedQuery : \"\"));\n }\n /**\n * Feature detection for WebSocket.\n *\n * @return {Boolean} whether this transport is available.\n * @private\n */\n check() {\n return !!WebSocket;\n }\n}\n","import { Polling } from \"./polling.js\";\nimport { WS } from \"./websocket.js\";\nexport const transports = {\n websocket: WS,\n polling: Polling,\n};\n","// imported from https://github.com/galkn/parseuri\n/**\n * Parses a URI\n *\n * Note: we could also have used the built-in URL object, but it isn't supported on all platforms.\n *\n * See:\n * - https://developer.mozilla.org/en-US/docs/Web/API/URL\n * - https://caniuse.com/url\n * - https://www.rfc-editor.org/rfc/rfc3986#appendix-B\n *\n * History of the parse() method:\n * - first commit: https://github.com/socketio/socket.io-client/commit/4ee1d5d94b3906a9c052b459f1a818b15f38f91c\n * - export into its own module: https://github.com/socketio/engine.io-client/commit/de2c561e4564efeb78f1bdb1ba39ef81b2822cb3\n * - reimport: https://github.com/socketio/engine.io-client/commit/df32277c3f6d622eec5ed09f493cae3f3391d242\n *\n * @author Steven Levithan (MIT license)\n * @api private\n */\nconst re = /^(?:(?![^:@\\/?#]+:[^:@\\/]*@)(http|https|ws|wss):\\/\\/)?((?:(([^:@\\/?#]*)(?::([^:@\\/?#]*))?)?@)?((?:[a-f0-9]{0,4}:){2,7}[a-f0-9]{0,4}|[^:\\/?#]*)(?::(\\d*))?)(((\\/(?:[^?#](?![^?#\\/]*\\.[^?#\\/.]+(?:[?#]|$)))*\\/?)?([^?#\\/]*))(?:\\?([^#]*))?(?:#(.*))?)/;\nconst parts = [\n 'source', 'protocol', 'authority', 'userInfo', 'user', 'password', 'host', 'port', 'relative', 'path', 'directory', 'file', 'query', 'anchor'\n];\nexport function parse(str) {\n const src = str, b = str.indexOf('['), e = str.indexOf(']');\n if (b != -1 && e != -1) {\n str = str.substring(0, b) + str.substring(b, e).replace(/:/g, ';') + str.substring(e, str.length);\n }\n let m = re.exec(str || ''), uri = {}, i = 14;\n while (i--) {\n uri[parts[i]] = m[i] || '';\n }\n if (b != -1 && e != -1) {\n uri.source = src;\n uri.host = uri.host.substring(1, uri.host.length - 1).replace(/;/g, ':');\n uri.authority = uri.authority.replace('[', '').replace(']', '').replace(/;/g, ':');\n uri.ipv6uri = true;\n }\n uri.pathNames = pathNames(uri, uri['path']);\n uri.queryKey = queryKey(uri, uri['query']);\n return uri;\n}\nfunction pathNames(obj, path) {\n const regx = /\\/{2,9}/g, names = path.replace(regx, \"/\").split(\"/\");\n if (path.slice(0, 1) == '/' || path.length === 0) {\n names.splice(0, 1);\n }\n if (path.slice(-1) == '/') {\n names.splice(names.length - 1, 1);\n }\n return names;\n}\nfunction queryKey(uri, query) {\n const data = {};\n query.replace(/(?:^|&)([^&=]*)=?([^&]*)/g, function ($0, $1, $2) {\n if ($1) {\n data[$1] = $2;\n }\n });\n return data;\n}\n","import { transports } from \"./transports/index.js\";\nimport { installTimerFunctions, byteLength } from \"./util.js\";\nimport { decode } from \"./contrib/parseqs.js\";\nimport { parse } from \"./contrib/parseuri.js\";\nimport { Emitter } from \"@socket.io/component-emitter\";\nimport { protocol } from \"engine.io-parser\";\nexport class Socket extends Emitter {\n /**\n * Socket constructor.\n *\n * @param {String|Object} uri - uri or options\n * @param {Object} opts - options\n */\n constructor(uri, opts = {}) {\n super();\n this.writeBuffer = [];\n if (uri && \"object\" === typeof uri) {\n opts = uri;\n uri = null;\n }\n if (uri) {\n uri = parse(uri);\n opts.hostname = uri.host;\n opts.secure = uri.protocol === \"https\" || uri.protocol === \"wss\";\n opts.port = uri.port;\n if (uri.query)\n opts.query = uri.query;\n }\n else if (opts.host) {\n opts.hostname = parse(opts.host).host;\n }\n installTimerFunctions(this, opts);\n this.secure =\n null != opts.secure\n ? opts.secure\n : typeof location !== \"undefined\" && \"https:\" === location.protocol;\n if (opts.hostname && !opts.port) {\n // if no port is specified manually, use the protocol default\n opts.port = this.secure ? \"443\" : \"80\";\n }\n this.hostname =\n opts.hostname ||\n (typeof location !== \"undefined\" ? location.hostname : \"localhost\");\n this.port =\n opts.port ||\n (typeof location !== \"undefined\" && location.port\n ? location.port\n : this.secure\n ? \"443\"\n : \"80\");\n this.transports = opts.transports || [\"polling\", \"websocket\"];\n this.writeBuffer = [];\n this.prevBufferLen = 0;\n this.opts = Object.assign({\n path: \"/engine.io\",\n agent: false,\n withCredentials: false,\n upgrade: true,\n timestampParam: \"t\",\n rememberUpgrade: false,\n addTrailingSlash: true,\n rejectUnauthorized: true,\n perMessageDeflate: {\n threshold: 1024,\n },\n transportOptions: {},\n closeOnBeforeunload: true,\n }, opts);\n this.opts.path =\n this.opts.path.replace(/\\/$/, \"\") +\n (this.opts.addTrailingSlash ? \"/\" : \"\");\n if (typeof this.opts.query === \"string\") {\n this.opts.query = decode(this.opts.query);\n }\n // set on handshake\n this.id = null;\n this.upgrades = null;\n this.pingInterval = null;\n this.pingTimeout = null;\n // set on heartbeat\n this.pingTimeoutTimer = null;\n if (typeof addEventListener === \"function\") {\n if (this.opts.closeOnBeforeunload) {\n // Firefox closes the connection when the \"beforeunload\" event is emitted but not Chrome. This event listener\n // ensures every browser behaves the same (no \"disconnect\" event at the Socket.IO level when the page is\n // closed/reloaded)\n this.beforeunloadEventListener = () => {\n if (this.transport) {\n // silently close the transport\n this.transport.removeAllListeners();\n this.transport.close();\n }\n };\n addEventListener(\"beforeunload\", this.beforeunloadEventListener, false);\n }\n if (this.hostname !== \"localhost\") {\n this.offlineEventListener = () => {\n this.onClose(\"transport close\", {\n description: \"network connection lost\",\n });\n };\n addEventListener(\"offline\", this.offlineEventListener, false);\n }\n }\n this.open();\n }\n /**\n * Creates transport of the given type.\n *\n * @param {String} name - transport name\n * @return {Transport}\n * @private\n */\n createTransport(name) {\n const query = Object.assign({}, this.opts.query);\n // append engine.io protocol identifier\n query.EIO = protocol;\n // transport name\n query.transport = name;\n // session id if we already have one\n if (this.id)\n query.sid = this.id;\n const opts = Object.assign({}, this.opts.transportOptions[name], this.opts, {\n query,\n socket: this,\n hostname: this.hostname,\n secure: this.secure,\n port: this.port,\n });\n return new transports[name](opts);\n }\n /**\n * Initializes transport to use and starts probe.\n *\n * @private\n */\n open() {\n let transport;\n if (this.opts.rememberUpgrade &&\n Socket.priorWebsocketSuccess &&\n this.transports.indexOf(\"websocket\") !== -1) {\n transport = \"websocket\";\n }\n else if (0 === this.transports.length) {\n // Emit error on next tick so it can be listened to\n this.setTimeoutFn(() => {\n this.emitReserved(\"error\", \"No transports available\");\n }, 0);\n return;\n }\n else {\n transport = this.transports[0];\n }\n this.readyState = \"opening\";\n // Retry with the next transport if the transport is disabled (jsonp: false)\n try {\n transport = this.createTransport(transport);\n }\n catch (e) {\n this.transports.shift();\n this.open();\n return;\n }\n transport.open();\n this.setTransport(transport);\n }\n /**\n * Sets the current transport. Disables the existing one (if any).\n *\n * @private\n */\n setTransport(transport) {\n if (this.transport) {\n this.transport.removeAllListeners();\n }\n // set up transport\n this.transport = transport;\n // set up transport listeners\n transport\n .on(\"drain\", this.onDrain.bind(this))\n .on(\"packet\", this.onPacket.bind(this))\n .on(\"error\", this.onError.bind(this))\n .on(\"close\", (reason) => this.onClose(\"transport close\", reason));\n }\n /**\n * Probes a transport.\n *\n * @param {String} name - transport name\n * @private\n */\n probe(name) {\n let transport = this.createTransport(name);\n let failed = false;\n Socket.priorWebsocketSuccess = false;\n const onTransportOpen = () => {\n if (failed)\n return;\n transport.send([{ type: \"ping\", data: \"probe\" }]);\n transport.once(\"packet\", (msg) => {\n if (failed)\n return;\n if (\"pong\" === msg.type && \"probe\" === msg.data) {\n this.upgrading = true;\n this.emitReserved(\"upgrading\", transport);\n if (!transport)\n return;\n Socket.priorWebsocketSuccess = \"websocket\" === transport.name;\n this.transport.pause(() => {\n if (failed)\n return;\n if (\"closed\" === this.readyState)\n return;\n cleanup();\n this.setTransport(transport);\n transport.send([{ type: \"upgrade\" }]);\n this.emitReserved(\"upgrade\", transport);\n transport = null;\n this.upgrading = false;\n this.flush();\n });\n }\n else {\n const err = new Error(\"probe error\");\n // @ts-ignore\n err.transport = transport.name;\n this.emitReserved(\"upgradeError\", err);\n }\n });\n };\n function freezeTransport() {\n if (failed)\n return;\n // Any callback called by transport should be ignored since now\n failed = true;\n cleanup();\n transport.close();\n transport = null;\n }\n // Handle any error that happens while probing\n const onerror = (err) => {\n const error = new Error(\"probe error: \" + err);\n // @ts-ignore\n error.transport = transport.name;\n freezeTransport();\n this.emitReserved(\"upgradeError\", error);\n };\n function onTransportClose() {\n onerror(\"transport closed\");\n }\n // When the socket is closed while we're probing\n function onclose() {\n onerror(\"socket closed\");\n }\n // When the socket is upgraded while we're probing\n function onupgrade(to) {\n if (transport && to.name !== transport.name) {\n freezeTransport();\n }\n }\n // Remove all listeners on the transport and on self\n const cleanup = () => {\n transport.removeListener(\"open\", onTransportOpen);\n transport.removeListener(\"error\", onerror);\n transport.removeListener(\"close\", onTransportClose);\n this.off(\"close\", onclose);\n this.off(\"upgrading\", onupgrade);\n };\n transport.once(\"open\", onTransportOpen);\n transport.once(\"error\", onerror);\n transport.once(\"close\", onTransportClose);\n this.once(\"close\", onclose);\n this.once(\"upgrading\", onupgrade);\n transport.open();\n }\n /**\n * Called when connection is deemed open.\n *\n * @private\n */\n onOpen() {\n this.readyState = \"open\";\n Socket.priorWebsocketSuccess = \"websocket\" === this.transport.name;\n this.emitReserved(\"open\");\n this.flush();\n // we check for `readyState` in case an `open`\n // listener already closed the socket\n if (\"open\" === this.readyState && this.opts.upgrade) {\n let i = 0;\n const l = this.upgrades.length;\n for (; i < l; i++) {\n this.probe(this.upgrades[i]);\n }\n }\n }\n /**\n * Handles a packet.\n *\n * @private\n */\n onPacket(packet) {\n if (\"opening\" === this.readyState ||\n \"open\" === this.readyState ||\n \"closing\" === this.readyState) {\n this.emitReserved(\"packet\", packet);\n // Socket is live - any packet counts\n this.emitReserved(\"heartbeat\");\n switch (packet.type) {\n case \"open\":\n this.onHandshake(JSON.parse(packet.data));\n break;\n case \"ping\":\n this.resetPingTimeout();\n this.sendPacket(\"pong\");\n this.emitReserved(\"ping\");\n this.emitReserved(\"pong\");\n break;\n case \"error\":\n const err = new Error(\"server error\");\n // @ts-ignore\n err.code = packet.data;\n this.onError(err);\n break;\n case \"message\":\n this.emitReserved(\"data\", packet.data);\n this.emitReserved(\"message\", packet.data);\n break;\n }\n }\n else {\n }\n }\n /**\n * Called upon handshake completion.\n *\n * @param {Object} data - handshake obj\n * @private\n */\n onHandshake(data) {\n this.emitReserved(\"handshake\", data);\n this.id = data.sid;\n this.transport.query.sid = data.sid;\n this.upgrades = this.filterUpgrades(data.upgrades);\n this.pingInterval = data.pingInterval;\n this.pingTimeout = data.pingTimeout;\n this.maxPayload = data.maxPayload;\n this.onOpen();\n // In case open handler closes socket\n if (\"closed\" === this.readyState)\n return;\n this.resetPingTimeout();\n }\n /**\n * Sets and resets ping timeout timer based on server pings.\n *\n * @private\n */\n resetPingTimeout() {\n this.clearTimeoutFn(this.pingTimeoutTimer);\n this.pingTimeoutTimer = this.setTimeoutFn(() => {\n this.onClose(\"ping timeout\");\n }, this.pingInterval + this.pingTimeout);\n if (this.opts.autoUnref) {\n this.pingTimeoutTimer.unref();\n }\n }\n /**\n * Called on `drain` event\n *\n * @private\n */\n onDrain() {\n this.writeBuffer.splice(0, this.prevBufferLen);\n // setting prevBufferLen = 0 is very important\n // for example, when upgrading, upgrade packet is sent over,\n // and a nonzero prevBufferLen could cause problems on `drain`\n this.prevBufferLen = 0;\n if (0 === this.writeBuffer.length) {\n this.emitReserved(\"drain\");\n }\n else {\n this.flush();\n }\n }\n /**\n * Flush write buffers.\n *\n * @private\n */\n flush() {\n if (\"closed\" !== this.readyState &&\n this.transport.writable &&\n !this.upgrading &&\n this.writeBuffer.length) {\n const packets = this.getWritablePackets();\n this.transport.send(packets);\n // keep track of current length of writeBuffer\n // splice writeBuffer and callbackBuffer on `drain`\n this.prevBufferLen = packets.length;\n this.emitReserved(\"flush\");\n }\n }\n /**\n * Ensure the encoded size of the writeBuffer is below the maxPayload value sent by the server (only for HTTP\n * long-polling)\n *\n * @private\n */\n getWritablePackets() {\n const shouldCheckPayloadSize = this.maxPayload &&\n this.transport.name === \"polling\" &&\n this.writeBuffer.length > 1;\n if (!shouldCheckPayloadSize) {\n return this.writeBuffer;\n }\n let payloadSize = 1; // first packet type\n for (let i = 0; i < this.writeBuffer.length; i++) {\n const data = this.writeBuffer[i].data;\n if (data) {\n payloadSize += byteLength(data);\n }\n if (i > 0 && payloadSize > this.maxPayload) {\n return this.writeBuffer.slice(0, i);\n }\n payloadSize += 2; // separator + packet type\n }\n return this.writeBuffer;\n }\n /**\n * Sends a message.\n *\n * @param {String} msg - message.\n * @param {Object} options.\n * @param {Function} callback function.\n * @return {Socket} for chaining.\n */\n write(msg, options, fn) {\n this.sendPacket(\"message\", msg, options, fn);\n return this;\n }\n send(msg, options, fn) {\n this.sendPacket(\"message\", msg, options, fn);\n return this;\n }\n /**\n * Sends a packet.\n *\n * @param {String} type: packet type.\n * @param {String} data.\n * @param {Object} options.\n * @param {Function} fn - callback function.\n * @private\n */\n sendPacket(type, data, options, fn) {\n if (\"function\" === typeof data) {\n fn = data;\n data = undefined;\n }\n if (\"function\" === typeof options) {\n fn = options;\n options = null;\n }\n if (\"closing\" === this.readyState || \"closed\" === this.readyState) {\n return;\n }\n options = options || {};\n options.compress = false !== options.compress;\n const packet = {\n type: type,\n data: data,\n options: options,\n };\n this.emitReserved(\"packetCreate\", packet);\n this.writeBuffer.push(packet);\n if (fn)\n this.once(\"flush\", fn);\n this.flush();\n }\n /**\n * Closes the connection.\n */\n close() {\n const close = () => {\n this.onClose(\"forced close\");\n this.transport.close();\n };\n const cleanupAndClose = () => {\n this.off(\"upgrade\", cleanupAndClose);\n this.off(\"upgradeError\", cleanupAndClose);\n close();\n };\n const waitForUpgrade = () => {\n // wait for upgrade to finish since we can't send packets while pausing a transport\n this.once(\"upgrade\", cleanupAndClose);\n this.once(\"upgradeError\", cleanupAndClose);\n };\n if (\"opening\" === this.readyState || \"open\" === this.readyState) {\n this.readyState = \"closing\";\n if (this.writeBuffer.length) {\n this.once(\"drain\", () => {\n if (this.upgrading) {\n waitForUpgrade();\n }\n else {\n close();\n }\n });\n }\n else if (this.upgrading) {\n waitForUpgrade();\n }\n else {\n close();\n }\n }\n return this;\n }\n /**\n * Called upon transport error\n *\n * @private\n */\n onError(err) {\n Socket.priorWebsocketSuccess = false;\n this.emitReserved(\"error\", err);\n this.onClose(\"transport error\", err);\n }\n /**\n * Called upon transport close.\n *\n * @private\n */\n onClose(reason, description) {\n if (\"opening\" === this.readyState ||\n \"open\" === this.readyState ||\n \"closing\" === this.readyState) {\n // clear timers\n this.clearTimeoutFn(this.pingTimeoutTimer);\n // stop event from firing again for transport\n this.transport.removeAllListeners(\"close\");\n // ensure transport won't stay open\n this.transport.close();\n // ignore further transport communication\n this.transport.removeAllListeners();\n if (typeof removeEventListener === \"function\") {\n removeEventListener(\"beforeunload\", this.beforeunloadEventListener, false);\n removeEventListener(\"offline\", this.offlineEventListener, false);\n }\n // set ready state\n this.readyState = \"closed\";\n // clear session id\n this.id = null;\n // emit close event\n this.emitReserved(\"close\", reason, description);\n // clean buffers after, so users can still\n // grab the buffers on `close` event\n this.writeBuffer = [];\n this.prevBufferLen = 0;\n }\n }\n /**\n * Filters upgrades, returning only those matching client transports.\n *\n * @param {Array} upgrades - server upgrades\n * @private\n */\n filterUpgrades(upgrades) {\n const filteredUpgrades = [];\n let i = 0;\n const j = upgrades.length;\n for (; i < j; i++) {\n if (~this.transports.indexOf(upgrades[i]))\n filteredUpgrades.push(upgrades[i]);\n }\n return filteredUpgrades;\n }\n}\nSocket.protocol = protocol;\n","import { Socket } from \"./socket.js\";\nexport { 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","'use strict';\n\nfunction utf8Write(view, offset, str) {\n var c = 0;\n for (var i = 0, l = str.length; i < l; i++) {\n c = str.charCodeAt(i);\n if (c < 0x80) {\n view.setUint8(offset++, c);\n }\n else if (c < 0x800) {\n view.setUint8(offset++, 0xc0 | (c >> 6));\n view.setUint8(offset++, 0x80 | (c & 0x3f));\n }\n else if (c < 0xd800 || c >= 0xe000) {\n view.setUint8(offset++, 0xe0 | (c >> 12));\n view.setUint8(offset++, 0x80 | (c >> 6) & 0x3f);\n view.setUint8(offset++, 0x80 | (c & 0x3f));\n }\n else {\n i++;\n c = 0x10000 + (((c & 0x3ff) << 10) | (str.charCodeAt(i) & 0x3ff));\n view.setUint8(offset++, 0xf0 | (c >> 18));\n view.setUint8(offset++, 0x80 | (c >> 12) & 0x3f);\n view.setUint8(offset++, 0x80 | (c >> 6) & 0x3f);\n view.setUint8(offset++, 0x80 | (c & 0x3f));\n }\n }\n}\n\nfunction utf8Length(str) {\n var c = 0, length = 0;\n for (var 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\nfunction _encode(bytes, defers, value) {\n var type = typeof value, i = 0, l = 0, hi = 0, lo = 0, length = 0, size = 0;\n\n if (type === 'string') {\n length = utf8Length(value);\n\n // fixstr\n if (length < 0x20) {\n bytes.push(length | 0xa0);\n size = 1;\n }\n // str 8\n else if (length < 0x100) {\n bytes.push(0xd9, length);\n size = 2;\n }\n // str 16\n else if (length < 0x10000) {\n bytes.push(0xda, length >> 8, length);\n size = 3;\n }\n // str 32\n else if (length < 0x100000000) {\n bytes.push(0xdb, length >> 24, length >> 16, length >> 8, length);\n size = 5;\n } else {\n throw new Error('String too long');\n }\n defers.push({ _str: value, _length: length, _offset: bytes.length });\n return size + length;\n }\n if (type === 'number') {\n // TODO: encode to float 32?\n\n // float 64\n if (Math.floor(value) !== value || !isFinite(value)) {\n bytes.push(0xcb);\n defers.push({ _float: value, _length: 8, _offset: bytes.length });\n return 9;\n }\n\n if (value >= 0) {\n // positive fixnum\n if (value < 0x80) {\n bytes.push(value);\n return 1;\n }\n // uint 8\n if (value < 0x100) {\n bytes.push(0xcc, value);\n return 2;\n }\n // uint 16\n if (value < 0x10000) {\n bytes.push(0xcd, value >> 8, value);\n return 3;\n }\n // uint 32\n if (value < 0x100000000) {\n bytes.push(0xce, value >> 24, value >> 16, value >> 8, value);\n return 5;\n }\n // uint 64\n hi = (value / Math.pow(2, 32)) >> 0;\n lo = value >>> 0;\n bytes.push(0xcf, hi >> 24, hi >> 16, hi >> 8, hi, lo >> 24, lo >> 16, lo >> 8, lo);\n return 9;\n } else {\n // negative fixnum\n if (value >= -0x20) {\n bytes.push(value);\n return 1;\n }\n // int 8\n if (value >= -0x80) {\n bytes.push(0xd0, value);\n return 2;\n }\n // int 16\n if (value >= -0x8000) {\n bytes.push(0xd1, value >> 8, value);\n return 3;\n }\n // int 32\n if (value >= -0x80000000) {\n bytes.push(0xd2, value >> 24, value >> 16, value >> 8, value);\n return 5;\n }\n // int 64\n hi = Math.floor(value / Math.pow(2, 32));\n lo = value >>> 0;\n bytes.push(0xd3, hi >> 24, hi >> 16, hi >> 8, hi, lo >> 24, lo >> 16, lo >> 8, lo);\n return 9;\n }\n }\n if (type === 'object') {\n // nil\n if (value === null) {\n bytes.push(0xc0);\n return 1;\n }\n\n if (Array.isArray(value)) {\n length = value.length;\n\n // fixarray\n if (length < 0x10) {\n bytes.push(length | 0x90);\n size = 1;\n }\n // array 16\n else if (length < 0x10000) {\n bytes.push(0xdc, length >> 8, length);\n size = 3;\n }\n // array 32\n else if (length < 0x100000000) {\n bytes.push(0xdd, length >> 24, length >> 16, length >> 8, length);\n size = 5;\n } else {\n throw new Error('Array too large');\n }\n for (i = 0; i < length; i++) {\n size += _encode(bytes, defers, value[i]);\n }\n return size;\n }\n\n // fixext 8 / Date\n if (value instanceof Date) {\n var time = value.getTime();\n hi = Math.floor(time / Math.pow(2, 32));\n lo = time >>> 0;\n bytes.push(0xd7, 0, hi >> 24, hi >> 16, hi >> 8, hi, lo >> 24, lo >> 16, lo >> 8, lo);\n return 10;\n }\n\n if (value instanceof ArrayBuffer) {\n length = value.byteLength;\n\n // bin 8\n if (length < 0x100) {\n bytes.push(0xc4, length);\n size = 2;\n } else\n // bin 16\n if (length < 0x10000) {\n bytes.push(0xc5, length >> 8, length);\n size = 3;\n } else\n // bin 32\n if (length < 0x100000000) {\n bytes.push(0xc6, length >> 24, length >> 16, length >> 8, length);\n size = 5;\n } else {\n throw new Error('Buffer too large');\n }\n defers.push({ _bin: value, _length: length, _offset: bytes.length });\n return size + length;\n }\n\n if (typeof value.toJSON === 'function') {\n return _encode(bytes, defers, value.toJSON());\n }\n\n var keys = [], key = '';\n\n var allKeys = Object.keys(value);\n for (i = 0, l = allKeys.length; i < l; i++) {\n key = allKeys[i];\n if (typeof value[key] !== 'function') {\n keys.push(key);\n }\n }\n length = keys.length;\n\n // fixmap\n if (length < 0x10) {\n bytes.push(length | 0x80);\n size = 1;\n }\n // map 16\n else if (length < 0x10000) {\n bytes.push(0xde, length >> 8, length);\n size = 3;\n }\n // map 32\n else if (length < 0x100000000) {\n bytes.push(0xdf, length >> 24, length >> 16, length >> 8, length);\n size = 5;\n } else {\n throw new Error('Object too large');\n }\n\n for (i = 0; i < length; i++) {\n key = keys[i];\n size += _encode(bytes, defers, key);\n size += _encode(bytes, defers, value[key]);\n }\n return size;\n }\n // false/true\n if (type === 'boolean') {\n bytes.push(value ? 0xc3 : 0xc2);\n return 1;\n }\n // fixext 1 / undefined\n if (type === 'undefined') {\n bytes.push(0xd4, 0, 0);\n return 3;\n }\n throw new Error('Could not encode');\n}\n\nfunction encode(value) {\n var bytes = [];\n var defers = [];\n var size = _encode(bytes, defers, value);\n var buf = new ArrayBuffer(size);\n var view = new DataView(buf);\n\n var deferIndex = 0;\n var deferWritten = 0;\n var nextOffset = -1;\n if (defers.length > 0) {\n nextOffset = defers[0]._offset;\n }\n\n var defer, deferLength = 0, offset = 0;\n for (var i = 0, l = bytes.length; i < l; i++) {\n view.setUint8(deferWritten + i, bytes[i]);\n if (i + 1 !== nextOffset) { continue; }\n defer = defers[deferIndex];\n deferLength = defer._length;\n offset = deferWritten + nextOffset;\n if (defer._bin) {\n var bin = new Uint8Array(defer._bin);\n for (var j = 0; j < deferLength; j++) {\n view.setUint8(offset + j, bin[j]);\n }\n } else if (defer._str) {\n utf8Write(view, offset, defer._str);\n } else if (defer._float !== undefined) {\n view.setFloat64(offset, defer._float);\n }\n deferIndex++;\n deferWritten += deferLength;\n if (defers[deferIndex]) {\n nextOffset = defers[deferIndex]._offset;\n }\n }\n return buf;\n}\n\nmodule.exports = encode;\n","'use strict';\n\nfunction Decoder(buffer) {\n this._offset = 0;\n if (buffer instanceof ArrayBuffer) {\n this._buffer = buffer;\n this._view = new DataView(this._buffer);\n } else if (ArrayBuffer.isView(buffer)) {\n this._buffer = buffer.buffer;\n this._view = new DataView(this._buffer, buffer.byteOffset, buffer.byteLength);\n } else {\n throw new Error('Invalid argument');\n }\n}\n\nfunction utf8Read(view, offset, length) {\n var string = '', chr = 0;\n for (var i = offset, end = offset + length; i < end; i++) {\n var byte = view.getUint8(i);\n if ((byte & 0x80) === 0x00) {\n string += String.fromCharCode(byte);\n continue;\n }\n if ((byte & 0xe0) === 0xc0) {\n string += String.fromCharCode(\n ((byte & 0x1f) << 6) |\n (view.getUint8(++i) & 0x3f)\n );\n continue;\n }\n if ((byte & 0xf0) === 0xe0) {\n string += String.fromCharCode(\n ((byte & 0x0f) << 12) |\n ((view.getUint8(++i) & 0x3f) << 6) |\n ((view.getUint8(++i) & 0x3f) << 0)\n );\n continue;\n }\n if ((byte & 0xf8) === 0xf0) {\n chr = ((byte & 0x07) << 18) |\n ((view.getUint8(++i) & 0x3f) << 12) |\n ((view.getUint8(++i) & 0x3f) << 6) |\n ((view.getUint8(++i) & 0x3f) << 0);\n if (chr >= 0x010000) { // surrogate pair\n chr -= 0x010000;\n string += String.fromCharCode((chr >>> 10) + 0xD800, (chr & 0x3FF) + 0xDC00);\n } else {\n string += String.fromCharCode(chr);\n }\n continue;\n }\n throw new Error('Invalid byte ' + byte.toString(16));\n }\n return string;\n}\n\nDecoder.prototype._array = function (length) {\n var value = new Array(length);\n for (var i = 0; i < length; i++) {\n value[i] = this._parse();\n }\n return value;\n};\n\nDecoder.prototype._map = function (length) {\n var key = '', value = {};\n for (var i = 0; i < length; i++) {\n key = this._parse();\n value[key] = this._parse();\n }\n return value;\n};\n\nDecoder.prototype._str = function (length) {\n var value = utf8Read(this._view, this._offset, length);\n this._offset += length;\n return value;\n};\n\nDecoder.prototype._bin = function (length) {\n var value = this._buffer.slice(this._offset, this._offset + length);\n this._offset += length;\n return value;\n};\n\nDecoder.prototype._parse = function () {\n var prefix = this._view.getUint8(this._offset++);\n var value, length = 0, type = 0, hi = 0, lo = 0;\n\n if (prefix < 0xc0) {\n // positive fixint\n if (prefix < 0x80) {\n return prefix;\n }\n // fixmap\n if (prefix < 0x90) {\n return this._map(prefix & 0x0f);\n }\n // fixarray\n if (prefix < 0xa0) {\n return this._array(prefix & 0x0f);\n }\n // fixstr\n return this._str(prefix & 0x1f);\n }\n\n // negative fixint\n if (prefix > 0xdf) {\n return (0xff - prefix + 1) * -1;\n }\n\n switch (prefix) {\n // nil\n case 0xc0:\n return null;\n // false\n case 0xc2:\n return false;\n // true\n case 0xc3:\n return true;\n\n // bin\n case 0xc4:\n length = this._view.getUint8(this._offset);\n this._offset += 1;\n return this._bin(length);\n case 0xc5:\n length = this._view.getUint16(this._offset);\n this._offset += 2;\n return this._bin(length);\n case 0xc6:\n length = this._view.getUint32(this._offset);\n this._offset += 4;\n return this._bin(length);\n\n // ext\n case 0xc7:\n length = this._view.getUint8(this._offset);\n type = this._view.getInt8(this._offset + 1);\n this._offset += 2;\n return [type, this._bin(length)];\n case 0xc8:\n length = this._view.getUint16(this._offset);\n type = this._view.getInt8(this._offset + 2);\n this._offset += 3;\n return [type, this._bin(length)];\n case 0xc9:\n length = this._view.getUint32(this._offset);\n type = this._view.getInt8(this._offset + 4);\n this._offset += 5;\n return [type, this._bin(length)];\n\n // float\n case 0xca:\n value = this._view.getFloat32(this._offset);\n this._offset += 4;\n return value;\n case 0xcb:\n value = this._view.getFloat64(this._offset);\n this._offset += 8;\n return value;\n\n // uint\n case 0xcc:\n value = this._view.getUint8(this._offset);\n this._offset += 1;\n return value;\n case 0xcd:\n value = this._view.getUint16(this._offset);\n this._offset += 2;\n return value;\n case 0xce:\n value = this._view.getUint32(this._offset);\n this._offset += 4;\n return value;\n case 0xcf:\n hi = this._view.getUint32(this._offset) * Math.pow(2, 32);\n lo = this._view.getUint32(this._offset + 4);\n this._offset += 8;\n return hi + lo;\n\n // int\n case 0xd0:\n value = this._view.getInt8(this._offset);\n this._offset += 1;\n return value;\n case 0xd1:\n value = this._view.getInt16(this._offset);\n this._offset += 2;\n return value;\n case 0xd2:\n value = this._view.getInt32(this._offset);\n this._offset += 4;\n return value;\n case 0xd3:\n hi = this._view.getInt32(this._offset) * Math.pow(2, 32);\n lo = this._view.getUint32(this._offset + 4);\n this._offset += 8;\n return hi + lo;\n\n // fixext\n case 0xd4:\n type = this._view.getInt8(this._offset);\n this._offset += 1;\n if (type === 0x00) {\n this._offset += 1;\n return void 0;\n }\n return [type, this._bin(1)];\n case 0xd5:\n type = this._view.getInt8(this._offset);\n this._offset += 1;\n return [type, this._bin(2)];\n case 0xd6:\n type = this._view.getInt8(this._offset);\n this._offset += 1;\n return [type, this._bin(4)];\n case 0xd7:\n type = this._view.getInt8(this._offset);\n this._offset += 1;\n if (type === 0x00) {\n hi = this._view.getInt32(this._offset) * Math.pow(2, 32);\n lo = this._view.getUint32(this._offset + 4);\n this._offset += 8;\n return new Date(hi + lo);\n }\n return [type, this._bin(8)];\n case 0xd8:\n type = this._view.getInt8(this._offset);\n this._offset += 1;\n return [type, this._bin(16)];\n\n // str\n case 0xd9:\n length = this._view.getUint8(this._offset);\n this._offset += 1;\n return this._str(length);\n case 0xda:\n length = this._view.getUint16(this._offset);\n this._offset += 2;\n return this._str(length);\n case 0xdb:\n length = this._view.getUint32(this._offset);\n this._offset += 4;\n return this._str(length);\n\n // array\n case 0xdc:\n length = this._view.getUint16(this._offset);\n this._offset += 2;\n return this._array(length);\n case 0xdd:\n length = this._view.getUint32(this._offset);\n this._offset += 4;\n return this._array(length);\n\n // map\n case 0xde:\n length = this._view.getUint16(this._offset);\n this._offset += 2;\n return this._map(length);\n case 0xdf:\n length = this._view.getUint32(this._offset);\n this._offset += 4;\n return this._map(length);\n }\n\n throw new Error('Could not parse');\n};\n\nfunction decode(buffer) {\n var decoder = new Decoder(buffer);\n var value = decoder._parse();\n if (decoder._offset !== buffer.byteLength) {\n throw new Error((buffer.byteLength - decoder._offset) + ' trailing bytes');\n }\n return value;\n}\n\nmodule.exports = decode;\n","exports.encode = require('./encode');\nexports.decode = require('./decode');\n","\r\n/**\r\n * Expose `Emitter`.\r\n */\r\n\r\nif (typeof module !== 'undefined') {\r\n module.exports = Emitter;\r\n}\r\n\r\n/**\r\n * Initialize a new `Emitter`.\r\n *\r\n * @api public\r\n */\r\n\r\nfunction Emitter(obj) {\r\n if (obj) return mixin(obj);\r\n};\r\n\r\n/**\r\n * Mixin the emitter properties.\r\n *\r\n * @param {Object} obj\r\n * @return {Object}\r\n * @api private\r\n */\r\n\r\nfunction mixin(obj) {\r\n for (var key in Emitter.prototype) {\r\n obj[key] = Emitter.prototype[key];\r\n }\r\n return obj;\r\n}\r\n\r\n/**\r\n * Listen on the given `event` with `fn`.\r\n *\r\n * @param {String} event\r\n * @param {Function} fn\r\n * @return {Emitter}\r\n * @api public\r\n */\r\n\r\nEmitter.prototype.on =\r\nEmitter.prototype.addEventListener = function(event, fn){\r\n this._callbacks = this._callbacks || {};\r\n (this._callbacks['$' + event] = this._callbacks['$' + event] || [])\r\n .push(fn);\r\n return this;\r\n};\r\n\r\n/**\r\n * Adds an `event` listener that will be invoked a single\r\n * time then automatically removed.\r\n *\r\n * @param {String} event\r\n * @param {Function} fn\r\n * @return {Emitter}\r\n * @api public\r\n */\r\n\r\nEmitter.prototype.once = function(event, fn){\r\n function on() {\r\n this.off(event, on);\r\n fn.apply(this, arguments);\r\n }\r\n\r\n on.fn = fn;\r\n this.on(event, on);\r\n return this;\r\n};\r\n\r\n/**\r\n * Remove the given callback for `event` or all\r\n * registered callbacks.\r\n *\r\n * @param {String} event\r\n * @param {Function} fn\r\n * @return {Emitter}\r\n * @api public\r\n */\r\n\r\nEmitter.prototype.off =\r\nEmitter.prototype.removeListener =\r\nEmitter.prototype.removeAllListeners =\r\nEmitter.prototype.removeEventListener = function(event, fn){\r\n this._callbacks = this._callbacks || {};\r\n\r\n // all\r\n if (0 == arguments.length) {\r\n this._callbacks = {};\r\n return this;\r\n }\r\n\r\n // specific event\r\n var callbacks = this._callbacks['$' + event];\r\n if (!callbacks) return this;\r\n\r\n // remove all handlers\r\n if (1 == arguments.length) {\r\n delete this._callbacks['$' + event];\r\n return this;\r\n }\r\n\r\n // remove specific handler\r\n var cb;\r\n for (var i = 0; i < callbacks.length; i++) {\r\n cb = callbacks[i];\r\n if (cb === fn || cb.fn === fn) {\r\n callbacks.splice(i, 1);\r\n break;\r\n }\r\n }\r\n\r\n // Remove event specific arrays for event types that no\r\n // one is subscribed for to avoid memory leak.\r\n if (callbacks.length === 0) {\r\n delete this._callbacks['$' + event];\r\n }\r\n\r\n return this;\r\n};\r\n\r\n/**\r\n * Emit `event` with the given args.\r\n *\r\n * @param {String} event\r\n * @param {Mixed} ...\r\n * @return {Emitter}\r\n */\r\n\r\nEmitter.prototype.emit = function(event){\r\n this._callbacks = this._callbacks || {};\r\n\r\n var args = new Array(arguments.length - 1)\r\n , callbacks = this._callbacks['$' + event];\r\n\r\n for (var i = 1; i < arguments.length; i++) {\r\n args[i - 1] = arguments[i];\r\n }\r\n\r\n if (callbacks) {\r\n callbacks = callbacks.slice(0);\r\n for (var i = 0, len = callbacks.length; i < len; ++i) {\r\n callbacks[i].apply(this, args);\r\n }\r\n }\r\n\r\n return this;\r\n};\r\n\r\n/**\r\n * Return array of callbacks for `event`.\r\n *\r\n * @param {String} event\r\n * @return {Array}\r\n * @api public\r\n */\r\n\r\nEmitter.prototype.listeners = function(event){\r\n this._callbacks = this._callbacks || {};\r\n return this._callbacks['$' + event] || [];\r\n};\r\n\r\n/**\r\n * Check if this emitter has `event` handlers.\r\n *\r\n * @param {String} event\r\n * @return {Boolean}\r\n * @api public\r\n */\r\n\r\nEmitter.prototype.hasListeners = function(event){\r\n return !! this.listeners(event).length;\r\n};\r\n","var msgpack = require(\"notepack.io\");\nvar Emitter = require(\"component-emitter\");\n\nexports.protocol = 5;\n\n/**\n * Packet types (see https://github.com/socketio/socket.io-protocol)\n */\n\nvar PacketType = (exports.PacketType = {\n CONNECT: 0,\n DISCONNECT: 1,\n EVENT: 2,\n ACK: 3,\n CONNECT_ERROR: 4,\n});\n\nvar isInteger =\n Number.isInteger ||\n function (value) {\n return (\n typeof value === \"number\" &&\n isFinite(value) &&\n Math.floor(value) === value\n );\n };\n\nvar isString = function (value) {\n return typeof value === \"string\";\n};\n\nvar isObject = function (value) {\n return Object.prototype.toString.call(value) === \"[object Object]\";\n};\n\nfunction Encoder() {}\n\nEncoder.prototype.encode = function (packet) {\n return [msgpack.encode(packet)];\n};\n\nfunction Decoder() {}\n\nEmitter(Decoder.prototype);\n\nDecoder.prototype.add = function (obj) {\n var decoded = msgpack.decode(obj);\n this.checkPacket(decoded);\n this.emit(\"decoded\", decoded);\n};\n\nfunction isDataValid(decoded) {\n switch (decoded.type) {\n case PacketType.CONNECT:\n return decoded.data === undefined || isObject(decoded.data);\n case PacketType.DISCONNECT:\n return decoded.data === undefined;\n case PacketType.CONNECT_ERROR:\n return isString(decoded.data) || isObject(decoded.data);\n default:\n return Array.isArray(decoded.data);\n }\n}\n\nDecoder.prototype.checkPacket = function (decoded) {\n var isTypeValid =\n isInteger(decoded.type) &&\n decoded.type >= PacketType.CONNECT &&\n decoded.type <= PacketType.CONNECT_ERROR;\n if (!isTypeValid) {\n throw new Error(\"invalid packet type\");\n }\n\n if (!isString(decoded.nsp)) {\n throw new Error(\"invalid namespace\");\n }\n\n if (!isDataValid(decoded)) {\n throw new Error(\"invalid payload\");\n }\n\n var isAckValid = decoded.id === undefined || isInteger(decoded.id);\n if (!isAckValid) {\n throw new Error(\"invalid packet id\");\n }\n};\n\nDecoder.prototype.destroy = function () {};\n\nexports.Encoder = Encoder;\nexports.Decoder = Decoder;\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 // emit `error`\n const errorSub = on(socket, \"error\", (err) => {\n self.cleanup();\n self._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 self.maybeReconnectOnOpen();\n }\n });\n if (false !== this._timeout) {\n const timeout = this._timeout;\n if (timeout === 0) {\n openSubDestroy(); // prevents a race condition with the 'open' event\n }\n // set timer\n const timer = this.setTimeoutFn(() => {\n openSubDestroy();\n socket.close();\n // @ts-ignore\n socket.emit(\"error\", new Error(\"timeout\"));\n }, timeout);\n if (this.opts.autoUnref) {\n timer.unref();\n }\n this.subs.push(function subDestroy() {\n clearTimeout(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(function subDestroy() {\n clearTimeout(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","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"],"names":["PACKET_TYPES","Object","create","PACKET_TYPES_REVERSE","keys","forEach","key","ERROR_PACKET","type","data","withNativeBlob","Blob","prototype","toString","call","withNativeArrayBuffer","ArrayBuffer","encodePacket","supportsBinary","callback","obj","encodeBlobAsBase64","isView","buffer","fileReader","FileReader","onload","content","result","split","readAsDataURL","chars","lookup","Uint8Array","i","length","charCodeAt","decodePacket","encodedPacket","binaryType","mapBinary","charAt","decodeBase64Packet","substring","decoded","base64","encoded1","encoded2","encoded3","encoded4","bufferLength","len","p","arraybuffer","bytes","decode","SEPARATOR","String","fromCharCode","Emitter","mixin","on","addEventListener","event","fn","this","_callbacks","push","Emitter$1","once","off","apply","arguments","removeListener","removeAllListeners","removeEventListener","cb","callbacks","splice","emit","args","Array","slice","emitReserved","listeners","hasListeners","globalThisShim","self","window","Function","pick","_len","attr","_key","reduce","acc","k","hasOwnProperty","NATIVE_SET_TIMEOUT","globalThis","setTimeout","NATIVE_CLEAR_TIMEOUT","clearTimeout","installTimerFunctions","opts","useNativeTimers","setTimeoutFn","bind","clearTimeoutFn","prev","TransportError","reason","description","context","_this","_classCallCheck","_super","Error","Transport","_Emitter","_inherits","_super2","_createSuper","_this2","writable","_assertThisInitialized","query","socket","_createClass","value","_get","_getPrototypeOf","readyState","doOpen","doClose","onClose","packets","write","packet","onPacket","details","onPause","alphabet","map","seed","encode","num","encoded","Math","floor","yeast","now","Date","str","encodeURIComponent","qs","qry","pairs","l","pair","decodeURIComponent","XMLHttpRequest","err","hasCORS","XHR","xdomain","e","concat","join","empty","hasXHR2","responseType","Polling","_Transport","polling","location","isSSL","protocol","port","xd","hostname","xs","secure","forceBase64","get","poll","pause","total","doPoll","_this3","encodedPayload","encodedPackets","decodedPacket","decodePayload","onOpen","_this4","close","_this5","count","encodePayload","doWrite","schema","timestampRequests","timestampParam","sid","b64","Number","encodedQuery","indexOf","path","_extends","Request","uri","_this6","req","request","method","xhrStatus","onError","_this7","onData","pollXhr","_this8","async","undefined","_this9","xscheme","xhr","open","extraHeaders","setDisableHeaderCheck","setRequestHeader","withCredentials","requestTimeout","timeout","onreadystatechange","status","onLoad","send","document","index","requestsCount","requests","cleanup","fromError","abort","responseText","attachEvent","unloadHandler","nextTick","Promise","resolve","then","WebSocket","MozWebSocket","isReactNative","navigator","product","toLowerCase","WS","check","protocols","headers","ws","addEventListeners","onopen","autoUnref","_socket","unref","onclose","closeEvent","onmessage","ev","onerror","_loop","lastPacket","transports","websocket","re","parts","parse","src","b","replace","m","exec","source","host","authority","ipv6uri","pathNames","regx","names","queryKey","$0","$1","$2","Socket","writeBuffer","prevBufferLen","agent","upgrade","rememberUpgrade","addTrailingSlash","rejectUnauthorized","perMessageDeflate","threshold","transportOptions","closeOnBeforeunload","id","upgrades","pingInterval","pingTimeout","pingTimeoutTimer","beforeunloadEventListener","transport","offlineEventListener","name","EIO","priorWebsocketSuccess","createTransport","shift","setTransport","onDrain","failed","onTransportOpen","msg","upgrading","flush","freezeTransport","error","onTransportClose","onupgrade","to","probe","onHandshake","JSON","resetPingTimeout","sendPacket","code","filterUpgrades","maxPayload","getWritablePackets","payloadSize","c","utf8Length","ceil","byteLength","size","options","compress","cleanupAndClose","waitForUpgrade","filteredUpgrades","j","Socket$1","utf8Write","view","offset","setUint8","_encode","defers","hi","lo","_str","_length","_offset","isFinite","pow","_float","isArray","time","getTime","_bin","toJSON","allKeys","encode_1","buf","DataView","deferIndex","deferWritten","nextOffset","defer","deferLength","bin","setFloat64","Decoder","_buffer","_view","byteOffset","_array","_parse","_map","string","chr","end","byte","getUint8","utf8Read","prefix","getUint16","getUint32","getInt8","getFloat32","getFloat64","getInt16","getInt32","decode_1","decoder","lib","require$$0","require$$1","module","exports","msgpack","socket_ioMsgpackParser","PacketType","PacketType_1","CONNECT","DISCONNECT","EVENT","ACK","CONNECT_ERROR","isInteger","isString","isObject","Encoder","add","checkPacket","nsp","isDataValid","destroy","Encoder_1","Decoder_1","RESERVED_EVENTS","freeze","connect","connect_error","disconnect","disconnecting","newListener","io","connected","recovered","receiveBuffer","sendBuffer","_queue","_queueSeq","ids","acks","flags","auth","_opts","_autoConnect","subs","onpacket","subEvents","_readyState","unshift","_len2","_key2","retries","fromQueue","_addToQueue","ack","pop","_registerAckCallback","isTransportWritable","engine","discardPacket","notifyOutgoingListeners","_a","ackTimeout","timer","_len3","_key3","_len4","_key4","withErr","reject","arg1","arg2","tryCount","pending","hasError","_len5","responseArgs","_key5","_drainQueue","force","_packet","_sendConnectPacket","_pid","pid","_lastOffset","onconnect","BINARY_EVENT","onevent","BINARY_ACK","onack","ondisconnect","message","emitEvent","_anyListeners","_step","_iterator","_createForOfIteratorHelper","s","n","done","f","sent","_len6","_key6","emitBuffered","subDestroy","listener","_anyOutgoingListeners","_step2","_iterator2","Backoff","ms","min","max","factor","jitter","attempts","duration","rand","random","deviation","reset","setMin","setMax","setJitter","Manager","nsps","reconnection","reconnectionAttempts","Infinity","reconnectionDelay","reconnectionDelayMax","randomizationFactor","backoff","_parser","parser","encoder","autoConnect","v","_reconnection","_reconnectionAttempts","_reconnectionDelay","_randomizationFactor","_reconnectionDelayMax","_timeout","_reconnecting","reconnect","Engine","skipReconnect","openSubDestroy","errorSub","maybeReconnectOnOpen","onping","ondata","ondecoded","active","_i","_nsps","_close","delay","onreconnect","attempt","cache","_typeof","parsed","loc","test","href","url","sameNamespace","forceNew","multiplex"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"socket.io.msgpack.min.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/index.js","../node_modules/engine.io-client/node_modules/engine.io-parser/build/esm/decodePacket.browser.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/contrib/yeast.js","../node_modules/engine.io-client/build/esm/transport.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","../node_modules/notepack.io/browser/encode.js","../node_modules/notepack.io/browser/decode.js","../node_modules/notepack.io/lib/index.js","../node_modules/component-emitter/index.js","../node_modules/socket.io-msgpack-parser/index.js","../build/esm/on.js","../build/esm/socket.js","../build/esm/contrib/backo2.js","../build/esm/manager.js","../build/esm/index.js","../build/esm/url.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 { 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","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","/**\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","// imported from https://github.com/unshiftio/yeast\n'use strict';\nconst alphabet = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-_'.split(''), length = 64, map = {};\nlet seed = 0, i = 0, prev;\n/**\n * Return a string representing the specified number.\n *\n * @param {Number} num The number to convert.\n * @returns {String} The string representation of the number.\n * @api public\n */\nexport function encode(num) {\n let encoded = '';\n do {\n encoded = alphabet[num % length] + encoded;\n num = Math.floor(num / length);\n } while (num > 0);\n return encoded;\n}\n/**\n * Return the integer value specified by the given string.\n *\n * @param {String} str The string to convert.\n * @returns {Number} The integer value represented by the string.\n * @api public\n */\nexport function decode(str) {\n let decoded = 0;\n for (i = 0; i < str.length; i++) {\n decoded = decoded * length + map[str.charAt(i)];\n }\n return decoded;\n}\n/**\n * Yeast: A tiny growing id generator.\n *\n * @returns {String} A unique id.\n * @api public\n */\nexport function yeast() {\n const now = encode(+new Date());\n if (now !== prev)\n return seed = 0, prev = now;\n return now + '.' + encode(seed++);\n}\n//\n// Map each character to its index.\n//\nfor (; i < length; i++)\n map[alphabet[i]] = i;\n","import { decodePacket } from \"engine.io-parser\";\nimport { Emitter } from \"@socket.io/component-emitter\";\nimport { installTimerFunctions } from \"./util.js\";\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/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 (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","'use strict';\n\nfunction utf8Write(view, offset, str) {\n var c = 0;\n for (var i = 0, l = str.length; i < l; i++) {\n c = str.charCodeAt(i);\n if (c < 0x80) {\n view.setUint8(offset++, c);\n }\n else if (c < 0x800) {\n view.setUint8(offset++, 0xc0 | (c >> 6));\n view.setUint8(offset++, 0x80 | (c & 0x3f));\n }\n else if (c < 0xd800 || c >= 0xe000) {\n view.setUint8(offset++, 0xe0 | (c >> 12));\n view.setUint8(offset++, 0x80 | (c >> 6) & 0x3f);\n view.setUint8(offset++, 0x80 | (c & 0x3f));\n }\n else {\n i++;\n c = 0x10000 + (((c & 0x3ff) << 10) | (str.charCodeAt(i) & 0x3ff));\n view.setUint8(offset++, 0xf0 | (c >> 18));\n view.setUint8(offset++, 0x80 | (c >> 12) & 0x3f);\n view.setUint8(offset++, 0x80 | (c >> 6) & 0x3f);\n view.setUint8(offset++, 0x80 | (c & 0x3f));\n }\n }\n}\n\nfunction utf8Length(str) {\n var c = 0, length = 0;\n for (var 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\nfunction _encode(bytes, defers, value) {\n var type = typeof value, i = 0, l = 0, hi = 0, lo = 0, length = 0, size = 0;\n\n if (type === 'string') {\n length = utf8Length(value);\n\n // fixstr\n if (length < 0x20) {\n bytes.push(length | 0xa0);\n size = 1;\n }\n // str 8\n else if (length < 0x100) {\n bytes.push(0xd9, length);\n size = 2;\n }\n // str 16\n else if (length < 0x10000) {\n bytes.push(0xda, length >> 8, length);\n size = 3;\n }\n // str 32\n else if (length < 0x100000000) {\n bytes.push(0xdb, length >> 24, length >> 16, length >> 8, length);\n size = 5;\n } else {\n throw new Error('String too long');\n }\n defers.push({ _str: value, _length: length, _offset: bytes.length });\n return size + length;\n }\n if (type === 'number') {\n // TODO: encode to float 32?\n\n // float 64\n if (Math.floor(value) !== value || !isFinite(value)) {\n bytes.push(0xcb);\n defers.push({ _float: value, _length: 8, _offset: bytes.length });\n return 9;\n }\n\n if (value >= 0) {\n // positive fixnum\n if (value < 0x80) {\n bytes.push(value);\n return 1;\n }\n // uint 8\n if (value < 0x100) {\n bytes.push(0xcc, value);\n return 2;\n }\n // uint 16\n if (value < 0x10000) {\n bytes.push(0xcd, value >> 8, value);\n return 3;\n }\n // uint 32\n if (value < 0x100000000) {\n bytes.push(0xce, value >> 24, value >> 16, value >> 8, value);\n return 5;\n }\n // uint 64\n hi = (value / Math.pow(2, 32)) >> 0;\n lo = value >>> 0;\n bytes.push(0xcf, hi >> 24, hi >> 16, hi >> 8, hi, lo >> 24, lo >> 16, lo >> 8, lo);\n return 9;\n } else {\n // negative fixnum\n if (value >= -0x20) {\n bytes.push(value);\n return 1;\n }\n // int 8\n if (value >= -0x80) {\n bytes.push(0xd0, value);\n return 2;\n }\n // int 16\n if (value >= -0x8000) {\n bytes.push(0xd1, value >> 8, value);\n return 3;\n }\n // int 32\n if (value >= -0x80000000) {\n bytes.push(0xd2, value >> 24, value >> 16, value >> 8, value);\n return 5;\n }\n // int 64\n hi = Math.floor(value / Math.pow(2, 32));\n lo = value >>> 0;\n bytes.push(0xd3, hi >> 24, hi >> 16, hi >> 8, hi, lo >> 24, lo >> 16, lo >> 8, lo);\n return 9;\n }\n }\n if (type === 'object') {\n // nil\n if (value === null) {\n bytes.push(0xc0);\n return 1;\n }\n\n if (Array.isArray(value)) {\n length = value.length;\n\n // fixarray\n if (length < 0x10) {\n bytes.push(length | 0x90);\n size = 1;\n }\n // array 16\n else if (length < 0x10000) {\n bytes.push(0xdc, length >> 8, length);\n size = 3;\n }\n // array 32\n else if (length < 0x100000000) {\n bytes.push(0xdd, length >> 24, length >> 16, length >> 8, length);\n size = 5;\n } else {\n throw new Error('Array too large');\n }\n for (i = 0; i < length; i++) {\n size += _encode(bytes, defers, value[i]);\n }\n return size;\n }\n\n // fixext 8 / Date\n if (value instanceof Date) {\n var time = value.getTime();\n hi = Math.floor(time / Math.pow(2, 32));\n lo = time >>> 0;\n bytes.push(0xd7, 0, hi >> 24, hi >> 16, hi >> 8, hi, lo >> 24, lo >> 16, lo >> 8, lo);\n return 10;\n }\n\n if (value instanceof ArrayBuffer) {\n length = value.byteLength;\n\n // bin 8\n if (length < 0x100) {\n bytes.push(0xc4, length);\n size = 2;\n } else\n // bin 16\n if (length < 0x10000) {\n bytes.push(0xc5, length >> 8, length);\n size = 3;\n } else\n // bin 32\n if (length < 0x100000000) {\n bytes.push(0xc6, length >> 24, length >> 16, length >> 8, length);\n size = 5;\n } else {\n throw new Error('Buffer too large');\n }\n defers.push({ _bin: value, _length: length, _offset: bytes.length });\n return size + length;\n }\n\n if (typeof value.toJSON === 'function') {\n return _encode(bytes, defers, value.toJSON());\n }\n\n var keys = [], key = '';\n\n var allKeys = Object.keys(value);\n for (i = 0, l = allKeys.length; i < l; i++) {\n key = allKeys[i];\n if (typeof value[key] !== 'function') {\n keys.push(key);\n }\n }\n length = keys.length;\n\n // fixmap\n if (length < 0x10) {\n bytes.push(length | 0x80);\n size = 1;\n }\n // map 16\n else if (length < 0x10000) {\n bytes.push(0xde, length >> 8, length);\n size = 3;\n }\n // map 32\n else if (length < 0x100000000) {\n bytes.push(0xdf, length >> 24, length >> 16, length >> 8, length);\n size = 5;\n } else {\n throw new Error('Object too large');\n }\n\n for (i = 0; i < length; i++) {\n key = keys[i];\n size += _encode(bytes, defers, key);\n size += _encode(bytes, defers, value[key]);\n }\n return size;\n }\n // false/true\n if (type === 'boolean') {\n bytes.push(value ? 0xc3 : 0xc2);\n return 1;\n }\n // fixext 1 / undefined\n if (type === 'undefined') {\n bytes.push(0xd4, 0, 0);\n return 3;\n }\n throw new Error('Could not encode');\n}\n\nfunction encode(value) {\n var bytes = [];\n var defers = [];\n var size = _encode(bytes, defers, value);\n var buf = new ArrayBuffer(size);\n var view = new DataView(buf);\n\n var deferIndex = 0;\n var deferWritten = 0;\n var nextOffset = -1;\n if (defers.length > 0) {\n nextOffset = defers[0]._offset;\n }\n\n var defer, deferLength = 0, offset = 0;\n for (var i = 0, l = bytes.length; i < l; i++) {\n view.setUint8(deferWritten + i, bytes[i]);\n if (i + 1 !== nextOffset) { continue; }\n defer = defers[deferIndex];\n deferLength = defer._length;\n offset = deferWritten + nextOffset;\n if (defer._bin) {\n var bin = new Uint8Array(defer._bin);\n for (var j = 0; j < deferLength; j++) {\n view.setUint8(offset + j, bin[j]);\n }\n } else if (defer._str) {\n utf8Write(view, offset, defer._str);\n } else if (defer._float !== undefined) {\n view.setFloat64(offset, defer._float);\n }\n deferIndex++;\n deferWritten += deferLength;\n if (defers[deferIndex]) {\n nextOffset = defers[deferIndex]._offset;\n }\n }\n return buf;\n}\n\nmodule.exports = encode;\n","'use strict';\n\nfunction Decoder(buffer) {\n this._offset = 0;\n if (buffer instanceof ArrayBuffer) {\n this._buffer = buffer;\n this._view = new DataView(this._buffer);\n } else if (ArrayBuffer.isView(buffer)) {\n this._buffer = buffer.buffer;\n this._view = new DataView(this._buffer, buffer.byteOffset, buffer.byteLength);\n } else {\n throw new Error('Invalid argument');\n }\n}\n\nfunction utf8Read(view, offset, length) {\n var string = '', chr = 0;\n for (var i = offset, end = offset + length; i < end; i++) {\n var byte = view.getUint8(i);\n if ((byte & 0x80) === 0x00) {\n string += String.fromCharCode(byte);\n continue;\n }\n if ((byte & 0xe0) === 0xc0) {\n string += String.fromCharCode(\n ((byte & 0x1f) << 6) |\n (view.getUint8(++i) & 0x3f)\n );\n continue;\n }\n if ((byte & 0xf0) === 0xe0) {\n string += String.fromCharCode(\n ((byte & 0x0f) << 12) |\n ((view.getUint8(++i) & 0x3f) << 6) |\n ((view.getUint8(++i) & 0x3f) << 0)\n );\n continue;\n }\n if ((byte & 0xf8) === 0xf0) {\n chr = ((byte & 0x07) << 18) |\n ((view.getUint8(++i) & 0x3f) << 12) |\n ((view.getUint8(++i) & 0x3f) << 6) |\n ((view.getUint8(++i) & 0x3f) << 0);\n if (chr >= 0x010000) { // surrogate pair\n chr -= 0x010000;\n string += String.fromCharCode((chr >>> 10) + 0xD800, (chr & 0x3FF) + 0xDC00);\n } else {\n string += String.fromCharCode(chr);\n }\n continue;\n }\n throw new Error('Invalid byte ' + byte.toString(16));\n }\n return string;\n}\n\nDecoder.prototype._array = function (length) {\n var value = new Array(length);\n for (var i = 0; i < length; i++) {\n value[i] = this._parse();\n }\n return value;\n};\n\nDecoder.prototype._map = function (length) {\n var key = '', value = {};\n for (var i = 0; i < length; i++) {\n key = this._parse();\n value[key] = this._parse();\n }\n return value;\n};\n\nDecoder.prototype._str = function (length) {\n var value = utf8Read(this._view, this._offset, length);\n this._offset += length;\n return value;\n};\n\nDecoder.prototype._bin = function (length) {\n var value = this._buffer.slice(this._offset, this._offset + length);\n this._offset += length;\n return value;\n};\n\nDecoder.prototype._parse = function () {\n var prefix = this._view.getUint8(this._offset++);\n var value, length = 0, type = 0, hi = 0, lo = 0;\n\n if (prefix < 0xc0) {\n // positive fixint\n if (prefix < 0x80) {\n return prefix;\n }\n // fixmap\n if (prefix < 0x90) {\n return this._map(prefix & 0x0f);\n }\n // fixarray\n if (prefix < 0xa0) {\n return this._array(prefix & 0x0f);\n }\n // fixstr\n return this._str(prefix & 0x1f);\n }\n\n // negative fixint\n if (prefix > 0xdf) {\n return (0xff - prefix + 1) * -1;\n }\n\n switch (prefix) {\n // nil\n case 0xc0:\n return null;\n // false\n case 0xc2:\n return false;\n // true\n case 0xc3:\n return true;\n\n // bin\n case 0xc4:\n length = this._view.getUint8(this._offset);\n this._offset += 1;\n return this._bin(length);\n case 0xc5:\n length = this._view.getUint16(this._offset);\n this._offset += 2;\n return this._bin(length);\n case 0xc6:\n length = this._view.getUint32(this._offset);\n this._offset += 4;\n return this._bin(length);\n\n // ext\n case 0xc7:\n length = this._view.getUint8(this._offset);\n type = this._view.getInt8(this._offset + 1);\n this._offset += 2;\n return [type, this._bin(length)];\n case 0xc8:\n length = this._view.getUint16(this._offset);\n type = this._view.getInt8(this._offset + 2);\n this._offset += 3;\n return [type, this._bin(length)];\n case 0xc9:\n length = this._view.getUint32(this._offset);\n type = this._view.getInt8(this._offset + 4);\n this._offset += 5;\n return [type, this._bin(length)];\n\n // float\n case 0xca:\n value = this._view.getFloat32(this._offset);\n this._offset += 4;\n return value;\n case 0xcb:\n value = this._view.getFloat64(this._offset);\n this._offset += 8;\n return value;\n\n // uint\n case 0xcc:\n value = this._view.getUint8(this._offset);\n this._offset += 1;\n return value;\n case 0xcd:\n value = this._view.getUint16(this._offset);\n this._offset += 2;\n return value;\n case 0xce:\n value = this._view.getUint32(this._offset);\n this._offset += 4;\n return value;\n case 0xcf:\n hi = this._view.getUint32(this._offset) * Math.pow(2, 32);\n lo = this._view.getUint32(this._offset + 4);\n this._offset += 8;\n return hi + lo;\n\n // int\n case 0xd0:\n value = this._view.getInt8(this._offset);\n this._offset += 1;\n return value;\n case 0xd1:\n value = this._view.getInt16(this._offset);\n this._offset += 2;\n return value;\n case 0xd2:\n value = this._view.getInt32(this._offset);\n this._offset += 4;\n return value;\n case 0xd3:\n hi = this._view.getInt32(this._offset) * Math.pow(2, 32);\n lo = this._view.getUint32(this._offset + 4);\n this._offset += 8;\n return hi + lo;\n\n // fixext\n case 0xd4:\n type = this._view.getInt8(this._offset);\n this._offset += 1;\n if (type === 0x00) {\n this._offset += 1;\n return void 0;\n }\n return [type, this._bin(1)];\n case 0xd5:\n type = this._view.getInt8(this._offset);\n this._offset += 1;\n return [type, this._bin(2)];\n case 0xd6:\n type = this._view.getInt8(this._offset);\n this._offset += 1;\n return [type, this._bin(4)];\n case 0xd7:\n type = this._view.getInt8(this._offset);\n this._offset += 1;\n if (type === 0x00) {\n hi = this._view.getInt32(this._offset) * Math.pow(2, 32);\n lo = this._view.getUint32(this._offset + 4);\n this._offset += 8;\n return new Date(hi + lo);\n }\n return [type, this._bin(8)];\n case 0xd8:\n type = this._view.getInt8(this._offset);\n this._offset += 1;\n return [type, this._bin(16)];\n\n // str\n case 0xd9:\n length = this._view.getUint8(this._offset);\n this._offset += 1;\n return this._str(length);\n case 0xda:\n length = this._view.getUint16(this._offset);\n this._offset += 2;\n return this._str(length);\n case 0xdb:\n length = this._view.getUint32(this._offset);\n this._offset += 4;\n return this._str(length);\n\n // array\n case 0xdc:\n length = this._view.getUint16(this._offset);\n this._offset += 2;\n return this._array(length);\n case 0xdd:\n length = this._view.getUint32(this._offset);\n this._offset += 4;\n return this._array(length);\n\n // map\n case 0xde:\n length = this._view.getUint16(this._offset);\n this._offset += 2;\n return this._map(length);\n case 0xdf:\n length = this._view.getUint32(this._offset);\n this._offset += 4;\n return this._map(length);\n }\n\n throw new Error('Could not parse');\n};\n\nfunction decode(buffer) {\n var decoder = new Decoder(buffer);\n var value = decoder._parse();\n if (decoder._offset !== buffer.byteLength) {\n throw new Error((buffer.byteLength - decoder._offset) + ' trailing bytes');\n }\n return value;\n}\n\nmodule.exports = decode;\n","exports.encode = require('./encode');\nexports.decode = require('./decode');\n","\r\n/**\r\n * Expose `Emitter`.\r\n */\r\n\r\nif (typeof module !== 'undefined') {\r\n module.exports = Emitter;\r\n}\r\n\r\n/**\r\n * Initialize a new `Emitter`.\r\n *\r\n * @api public\r\n */\r\n\r\nfunction Emitter(obj) {\r\n if (obj) return mixin(obj);\r\n};\r\n\r\n/**\r\n * Mixin the emitter properties.\r\n *\r\n * @param {Object} obj\r\n * @return {Object}\r\n * @api private\r\n */\r\n\r\nfunction mixin(obj) {\r\n for (var key in Emitter.prototype) {\r\n obj[key] = Emitter.prototype[key];\r\n }\r\n return obj;\r\n}\r\n\r\n/**\r\n * Listen on the given `event` with `fn`.\r\n *\r\n * @param {String} event\r\n * @param {Function} fn\r\n * @return {Emitter}\r\n * @api public\r\n */\r\n\r\nEmitter.prototype.on =\r\nEmitter.prototype.addEventListener = function(event, fn){\r\n this._callbacks = this._callbacks || {};\r\n (this._callbacks['$' + event] = this._callbacks['$' + event] || [])\r\n .push(fn);\r\n return this;\r\n};\r\n\r\n/**\r\n * Adds an `event` listener that will be invoked a single\r\n * time then automatically removed.\r\n *\r\n * @param {String} event\r\n * @param {Function} fn\r\n * @return {Emitter}\r\n * @api public\r\n */\r\n\r\nEmitter.prototype.once = function(event, fn){\r\n function on() {\r\n this.off(event, on);\r\n fn.apply(this, arguments);\r\n }\r\n\r\n on.fn = fn;\r\n this.on(event, on);\r\n return this;\r\n};\r\n\r\n/**\r\n * Remove the given callback for `event` or all\r\n * registered callbacks.\r\n *\r\n * @param {String} event\r\n * @param {Function} fn\r\n * @return {Emitter}\r\n * @api public\r\n */\r\n\r\nEmitter.prototype.off =\r\nEmitter.prototype.removeListener =\r\nEmitter.prototype.removeAllListeners =\r\nEmitter.prototype.removeEventListener = function(event, fn){\r\n this._callbacks = this._callbacks || {};\r\n\r\n // all\r\n if (0 == arguments.length) {\r\n this._callbacks = {};\r\n return this;\r\n }\r\n\r\n // specific event\r\n var callbacks = this._callbacks['$' + event];\r\n if (!callbacks) return this;\r\n\r\n // remove all handlers\r\n if (1 == arguments.length) {\r\n delete this._callbacks['$' + event];\r\n return this;\r\n }\r\n\r\n // remove specific handler\r\n var cb;\r\n for (var i = 0; i < callbacks.length; i++) {\r\n cb = callbacks[i];\r\n if (cb === fn || cb.fn === fn) {\r\n callbacks.splice(i, 1);\r\n break;\r\n }\r\n }\r\n\r\n // Remove event specific arrays for event types that no\r\n // one is subscribed for to avoid memory leak.\r\n if (callbacks.length === 0) {\r\n delete this._callbacks['$' + event];\r\n }\r\n\r\n return this;\r\n};\r\n\r\n/**\r\n * Emit `event` with the given args.\r\n *\r\n * @param {String} event\r\n * @param {Mixed} ...\r\n * @return {Emitter}\r\n */\r\n\r\nEmitter.prototype.emit = function(event){\r\n this._callbacks = this._callbacks || {};\r\n\r\n var args = new Array(arguments.length - 1)\r\n , callbacks = this._callbacks['$' + event];\r\n\r\n for (var i = 1; i < arguments.length; i++) {\r\n args[i - 1] = arguments[i];\r\n }\r\n\r\n if (callbacks) {\r\n callbacks = callbacks.slice(0);\r\n for (var i = 0, len = callbacks.length; i < len; ++i) {\r\n callbacks[i].apply(this, args);\r\n }\r\n }\r\n\r\n return this;\r\n};\r\n\r\n/**\r\n * Return array of callbacks for `event`.\r\n *\r\n * @param {String} event\r\n * @return {Array}\r\n * @api public\r\n */\r\n\r\nEmitter.prototype.listeners = function(event){\r\n this._callbacks = this._callbacks || {};\r\n return this._callbacks['$' + event] || [];\r\n};\r\n\r\n/**\r\n * Check if this emitter has `event` handlers.\r\n *\r\n * @param {String} event\r\n * @return {Boolean}\r\n * @api public\r\n */\r\n\r\nEmitter.prototype.hasListeners = function(event){\r\n return !! this.listeners(event).length;\r\n};\r\n","var msgpack = require(\"notepack.io\");\nvar Emitter = require(\"component-emitter\");\n\nexports.protocol = 5;\n\n/**\n * Packet types (see https://github.com/socketio/socket.io-protocol)\n */\n\nvar PacketType = (exports.PacketType = {\n CONNECT: 0,\n DISCONNECT: 1,\n EVENT: 2,\n ACK: 3,\n CONNECT_ERROR: 4,\n});\n\nvar isInteger =\n Number.isInteger ||\n function (value) {\n return (\n typeof value === \"number\" &&\n isFinite(value) &&\n Math.floor(value) === value\n );\n };\n\nvar isString = function (value) {\n return typeof value === \"string\";\n};\n\nvar isObject = function (value) {\n return Object.prototype.toString.call(value) === \"[object Object]\";\n};\n\nfunction Encoder() {}\n\nEncoder.prototype.encode = function (packet) {\n return [msgpack.encode(packet)];\n};\n\nfunction Decoder() {}\n\nEmitter(Decoder.prototype);\n\nDecoder.prototype.add = function (obj) {\n var decoded = msgpack.decode(obj);\n this.checkPacket(decoded);\n this.emit(\"decoded\", decoded);\n};\n\nfunction isDataValid(decoded) {\n switch (decoded.type) {\n case PacketType.CONNECT:\n return decoded.data === undefined || isObject(decoded.data);\n case PacketType.DISCONNECT:\n return decoded.data === undefined;\n case PacketType.CONNECT_ERROR:\n return isString(decoded.data) || isObject(decoded.data);\n default:\n return Array.isArray(decoded.data);\n }\n}\n\nDecoder.prototype.checkPacket = function (decoded) {\n var isTypeValid =\n isInteger(decoded.type) &&\n decoded.type >= PacketType.CONNECT &&\n decoded.type <= PacketType.CONNECT_ERROR;\n if (!isTypeValid) {\n throw new Error(\"invalid packet type\");\n }\n\n if (!isString(decoded.nsp)) {\n throw new Error(\"invalid namespace\");\n }\n\n if (!isDataValid(decoded)) {\n throw new Error(\"invalid payload\");\n }\n\n var isAckValid = decoded.id === undefined || isInteger(decoded.id);\n if (!isAckValid) {\n throw new Error(\"invalid packet id\");\n }\n};\n\nDecoder.prototype.destroy = function () {};\n\nexports.Encoder = Encoder;\nexports.Decoder = Decoder;\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","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"],"names":["PACKET_TYPES","Object","create","PACKET_TYPES_REVERSE","keys","forEach","key","TEXT_ENCODER","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","chars","lookup","i","length","charCodeAt","TEXT_DECODER","decodePacket","encodedPacket","binaryType","mapBinary","charAt","decodeBase64Packet","substring","decoded","base64","encoded1","encoded2","encoded3","encoded4","bufferLength","len","p","arraybuffer","bytes","decode","SEPARATOR","String","fromCharCode","Emitter","mixin","on","addEventListener","event","fn","this","_callbacks","push","Emitter$1","once","off","apply","arguments","removeListener","removeAllListeners","removeEventListener","cb","callbacks","splice","emit","args","Array","slice","emitReserved","listeners","hasListeners","globalThisShim","self","window","Function","pick","_len","attr","_key","reduce","acc","k","hasOwnProperty","NATIVE_SET_TIMEOUT","globalThis","setTimeout","NATIVE_CLEAR_TIMEOUT","clearTimeout","installTimerFunctions","opts","useNativeTimers","setTimeoutFn","bind","clearTimeoutFn","qs","qry","pairs","l","pair","decodeURIComponent","prev","TransportError","reason","description","context","_this","_classCallCheck","_super","Error","Transport","_Emitter","_inherits","_super2","_createSuper","_this2","writable","_assertThisInitialized","query","socket","_createClass","value","_get","_getPrototypeOf","readyState","doOpen","doClose","onClose","packets","write","packet","onPacket","details","onPause","schema","_hostname","_port","path","_query","hostname","indexOf","port","secure","Number","encodedQuery","str","encodeURIComponent","encode","alphabet","map","seed","num","encoded","Math","floor","yeast","now","Date","XMLHttpRequest","err","hasCORS","XHR","xdomain","e","concat","join","empty","hasXHR2","responseType","Polling","_Transport","polling","location","isSSL","protocol","xd","forceBase64","withCredentials","cookieJar","createCookieJar","get","poll","pause","total","doPoll","_this3","encodedPayload","encodedPackets","decodedPacket","decodePayload","onOpen","_this4","close","_this5","count","encodePayload","doWrite","timestampRequests","timestampParam","sid","b64","createUri","_extends","Request","uri","_this6","req","request","method","xhrStatus","onError","_this7","onData","pollXhr","_this8","undefined","_a","_this9","xhr","open","extraHeaders","setDisableHeaderCheck","setRequestHeader","addCookies","requestTimeout","timeout","onreadystatechange","parseCookies","status","onLoad","send","document","index","requestsCount","requests","cleanup","fromError","abort","responseText","attachEvent","unloadHandler","nextTick","Promise","resolve","then","WebSocket","MozWebSocket","isReactNative","navigator","product","toLowerCase","WS","check","protocols","headers","ws","addEventListeners","onopen","autoUnref","_socket","unref","onclose","closeEvent","onmessage","ev","onerror","_loop","lastPacket","WT","WebTransport","transport","transportOptions","name","closed","ready","createBidirectionalStream","stream","binaryFlag","reader","readable","getReader","writer","getWriter","read","_ref","done","isBinary","TextDecoder","isPlainBinary","decodePacketFromBinary","handshake","TextEncoder","arrayBuffer","encodePacketToBinary","shouldIncludeBinaryHeader","of","transports","websocket","webtransport","re","parts","parse","src","b","replace","m","exec","source","host","authority","ipv6uri","pathNames","regx","names","queryKey","$0","$1","$2","Socket","writeBuffer","prevBufferLen","agent","upgrade","rememberUpgrade","addTrailingSlash","rejectUnauthorized","perMessageDeflate","threshold","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","payloadSize","c","utf8Length","ceil","size","options","compress","cleanupAndClose","waitForUpgrade","filteredUpgrades","j","Socket$1","utf8Write","view","offset","setUint8","_encode","defers","hi","lo","_str","_length","_offset","isFinite","pow","_float","isArray","time","getTime","_bin","toJSON","allKeys","encode_1","buf","DataView","deferIndex","deferWritten","nextOffset","defer","deferLength","bin","setFloat64","Decoder","_buffer","_view","_array","_parse","_map","string","chr","end","byte","getUint8","utf8Read","prefix","getUint16","getUint32","getInt8","getFloat32","getFloat64","getInt16","getInt32","decode_1","decoder","lib","require$$0","require$$1","module","exports","msgpack","socket_ioMsgpackParser","PacketType","PacketType_1","CONNECT","DISCONNECT","EVENT","ACK","CONNECT_ERROR","isInteger","isString","isObject","Encoder","add","checkPacket","nsp","isDataValid","destroy","Encoder_1","Decoder_1","RESERVED_EVENTS","freeze","connect","connect_error","disconnect","disconnecting","newListener","io","connected","recovered","receiveBuffer","sendBuffer","_queue","_queueSeq","ids","acks","flags","auth","_opts","_autoConnect","subs","onpacket","subEvents","_readyState","unshift","_len2","_key2","retries","fromQueue","_addToQueue","ack","pop","_registerAckCallback","isTransportWritable","engine","discardPacket","notifyOutgoingListeners","ackTimeout","timer","_len3","_key3","_len4","_key4","withErr","reject","arg1","arg2","tryCount","pending","hasError","_len5","responseArgs","_key5","_drainQueue","force","_packet","_sendConnectPacket","_pid","pid","_lastOffset","onconnect","BINARY_EVENT","onevent","BINARY_ACK","onack","ondisconnect","message","emitEvent","_anyListeners","_step","_iterator","_createForOfIteratorHelper","s","n","f","sent","_len6","_key6","emitBuffered","subDestroy","listener","_anyOutgoingListeners","_step2","_iterator2","Backoff","ms","min","max","factor","jitter","attempts","duration","rand","random","deviation","reset","setMin","setMax","setJitter","Manager","nsps","reconnection","reconnectionAttempts","Infinity","reconnectionDelay","reconnectionDelayMax","randomizationFactor","backoff","_parser","parser","encoder","autoConnect","v","_reconnection","_reconnectionAttempts","_reconnectionDelay","_randomizationFactor","_reconnectionDelayMax","_timeout","_reconnecting","reconnect","Engine","skipReconnect","openSubDestroy","maybeReconnectOnOpen","errorSub","onping","ondata","ondecoded","active","_i","_nsps","_close","delay","onreconnect","attempt","cache","_typeof","parsed","loc","test","href","url","sameNamespace","forceNew","multiplex"],"mappings":"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"} \ No newline at end of file diff --git a/package.json b/package.json index 5ec7369f..5cacdd14 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "socket.io-client", - "version": "4.6.2", + "version": "4.7.0", "description": "Realtime application framework client", "keywords": [ "realtime",