From 0536fccfc29b58ccc7bbf7e6103877134ac6ec5b Mon Sep 17 00:00:00 2001 From: Damien Arrachequesne Date: Wed, 28 Jun 2023 09:18:27 +0200 Subject: [PATCH] chore(release): 4.7.1 Diff: https://github.com/socketio/socket.io-client/compare/4.7.0...4.7.1 --- CHANGELOG.md | 16 + dist/socket.io.esm.min.js | 4 +- dist/socket.io.esm.min.js.map | 2 +- dist/socket.io.js | 1141 ++++++----------------------- 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, 266 insertions(+), 913 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9f38645a..ce6951ef 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,7 @@ ## 2023 +- [4.7.1](#471-2023-06-28) (Jun 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) @@ -60,6 +61,21 @@ # Release notes +## [4.7.1](https://github.com/socketio/socket.io-client/compare/4.7.0...4.7.1) (2023-06-28) + +Some bug fixes are included from the `engine.io-client` package: + +* make closeOnBeforeunload default to false ([a63066b](https://github.com/socketio/engine.io-client/commit/a63066bdc8ae9e6746c3113d06c2ead78f4a4851)) +* **webtransport:** properly handle abruptly closed connections ([cf6aa1f](https://github.com/socketio/engine.io-client/commit/cf6aa1f43c27a56c076bf26fddfce74bfeb65040)) + + +### Dependencies + +- [`engine.io-client@~6.5.1`](https://github.com/socketio/engine.io-client/releases/tag/6.5.1) ([diff](https://github.com/socketio/engine.io-client/compare/6.5.0...6.5.1)) +- [`ws@~8.11.0`](https://github.com/websockets/ws/releases/tag/8.11.0) (no change) + + + ## [4.7.0](https://github.com/socketio/socket.io-client/compare/4.6.2...4.7.0) (2023-06-22) diff --git a/dist/socket.io.esm.min.js b/dist/socket.io.esm.min.js index 005dd538..8acf76e5 100644 --- a/dist/socket.io.esm.min.js +++ b/dist/socket.io.esm.min.js @@ -1,7 +1,7 @@ /*! - * Socket.IO v4.7.0 + * Socket.IO v4.7.1 * (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=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}; +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<64;t++)l[p.charCodeAt(t)]=t;const d="function"==typeof ArrayBuffer,f=(t,n)=>{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=64,B={};let x,L=0,N=0;function S(t){let e="";do{e=T[t%C]+e,t=Math.floor(t/C)}while(t>0);return e}function q(){const t=S(+new Date);return t!==x?(L=0,x=t):t+"."+S(L++)}for(;N{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=U.requestsCount++,U.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=I,t)try{this.xhr.abort()}catch(t){}"undefined"!=typeof document&&delete U.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(U.requestsCount=0,U.requests={},"undefined"!=typeof document)if("function"==typeof attachEvent)attachEvent("onunload",M);else if("function"==typeof addEventListener){addEventListener("onpagehide"in w?"pagehide":"unload",M,!1)}function M(){for(let t in U.requests)U.requests.hasOwnProperty(t)&&U.requests[t].abort()}const V="function"==typeof Promise&&"function"==typeof Promise.resolve?t=>Promise.resolve().then(t):(t,e)=>e(t,0),H=w.WebSocket||w.MozWebSocket,K="undefined"!=typeof navigator&&"string"==typeof navigator.product&&"reactnative"===navigator.product.toLowerCase();function Y(t,e){return"message"===t.type&&"string"!=typeof t.data&&e[0]>=48&&e[0]<=54}const W={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=K?{}: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=K?new H(t,e,s):e?new H(t,e):new H(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&&V((()=>{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]=q()),this.supportsBinary||(e.b64=1),this.createUri(t,e)}check(){return!!H}},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()})).catch((t=>{this.onError("webtransport error",t)})),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())})).catch((t=>{}))};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{Y(s,t)&&this.writer.write(Uint8Array.of(54)),this.writer.write(t).then((()=>{n&&V((()=>{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=F&&!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]=q()),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 U(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}}},z=/^(?:(?![^:@\/?#]+:[^:@\/]*@)(http|https|ws|wss):\/\/)?((?:(([^:@\/?#]*)(?::([^:@\/?#]*))?)?@)?((?:[a-f0-9]{0,4}:){2,7}[a-f0-9]{0,4}|[^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/,J=["source","protocol","authority","userInfo","user","password","host","port","relative","path","directory","file","query","anchor"];function $(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=z.exec(t||""),r={},o=14;for(;o--;)r[J[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 Q extends v{constructor(t,e={}){super(),this.writeBuffer=[],t&&"object"==typeof t&&(e=t,t=null),t?(t=$(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=$(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:!1},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,{query:e,socket:this,hostname:this.hostname,secure:this.secure,port:this.port},this.opts.transportOptions[t]);return new W[t](s)}open(){let t;if(this.opts.rememberUpgrade&&Q.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;Q.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;Q.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",Q.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){Q.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,Z=Object.prototype.toString,tt="function"==typeof Blob||"undefined"!=typeof Blob&&"[object BlobConstructor]"===Z.call(Blob),et="function"==typeof File||"undefined"!=typeof File&&"[object FileConstructor]"===Z.call(File);function st(t){return X&&(t instanceof ArrayBuffer||G(t))||tt&&t instanceof Blob||et&&t instanceof File}function nt(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:ut.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 ut.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 ut.EVENT:case ut.BINARY_EVENT:this.onevent(t);break;case ut.ACK:case ut.BINARY_ACK:this.onack(t);break;case ut.DISCONNECT:this.ondisconnect();break;case ut.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:ut.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:ut.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}bt.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)},bt.prototype.reset=function(){this.attempts=0},bt.prototype.setMin=function(t){this.ms=t},bt.prototype.setMax=function(t){this.max=t},bt.prototype.setJitter=function(t){this.jitter=t};class vt 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 bt({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||ft;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 Q(this.uri,this.opts);const e=this.engine,s=this;this._readyState="opening",this.skipReconnect=!1;const n=yt(e,"open",(function(){s.onopen(),t&&t()})),i=e=>{this.cleanup(),this._readyState="closed",this.emitReserved("error",e),t?t(e):this.maybeReconnectOnOpen()},r=yt(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(yt(t,"ping",this.onping.bind(this)),yt(t,"data",this.ondata.bind(this)),yt(t,"error",this.onerror.bind(this)),yt(t,"close",this.onclose.bind(this)),yt(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){V((()=>{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 mt(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 wt={};function kt(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=$(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=wt[i]&&r in wt[i].nsps;let a;return e.forceNew||e["force new connection"]||!1===e.multiplex||o?a=new vt(n,e):(wt[i]||(wt[i]=new vt(n,e)),a=wt[i]),s.query&&!e.query&&(e.query=s.queryKey),a.socket(s.path,e)}Object.assign(kt,{Manager:vt,Socket:mt,io:kt,connect:kt});export{vt as Manager,mt as Socket,kt as connect,kt as default,kt as io,ct 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 c16ce8b3..c93193a7 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-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 +{"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/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\n .then(() => {\n this.onClose();\n })\n .catch((err) => {\n this.onError(\"webtransport error\", err);\n });\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\n .read()\n .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 .catch((err) => {\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: false,\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, {\n query,\n socket: this,\n hostname: this.hostname,\n secure: this.secure,\n port: this.port,\n }, this.opts.transportOptions[name]);\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","charCodeAt","decodePacket","encodedPacket","binaryType","mapBinary","charAt","decodeBase64Packet","substring","length","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","catch","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 a3b070f6..dc9bd747 100644 --- a/dist/socket.io.js +++ b/dist/socket.io.js @@ -1,5 +1,5 @@ /*! - * Socket.IO v4.7.0 + * Socket.IO v4.7.1 * (c) 2014-2023 Guillermo Rauch * Released under the MIT License. */ @@ -18,23 +18,20 @@ return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } - function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; - Object.defineProperty(target, descriptor.key, descriptor); + Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } } - function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); @@ -43,29 +40,24 @@ }); return Constructor; } - function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; - for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } - return target; }; return _extends.apply(this, arguments); } - function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } - subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, @@ -78,14 +70,12 @@ }); if (superClass) _setPrototypeOf(subClass, superClass); } - function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } - function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; @@ -93,12 +83,10 @@ }; return _setPrototypeOf(o, p); } - function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; - try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; @@ -106,7 +94,6 @@ return false; } } - function _construct(Parent, args, Class) { if (_isNativeReflectConstruct()) { _construct = Reflect.construct.bind(); @@ -120,34 +107,25 @@ return instance; }; } - return _construct.apply(null, arguments); } - function _isNativeFunction(fn) { return Function.toString.call(fn).indexOf("[native code]") !== -1; } - function _wrapNativeSuper(Class) { var _cache = typeof Map === "function" ? new Map() : undefined; - _wrapNativeSuper = function _wrapNativeSuper(Class) { if (Class === null || !_isNativeFunction(Class)) return Class; - if (typeof Class !== "function") { throw new TypeError("Super expression must either be null or a function"); } - if (typeof _cache !== "undefined") { if (_cache.has(Class)) return _cache.get(Class); - _cache.set(Class, Wrapper); } - function Wrapper() { return _construct(Class, arguments, _getPrototypeOf(this).constructor); } - Wrapper.prototype = Object.create(Class.prototype, { constructor: { value: Wrapper, @@ -158,77 +136,59 @@ }); return _setPrototypeOf(Wrapper, Class); }; - return _wrapNativeSuper(Class); } - function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } - return self; } - function _possibleConstructorReturn(self, call) { if (call && (typeof call === "object" || typeof call === "function")) { return call; } else if (call !== void 0) { throw new TypeError("Derived constructors may only return object or undefined"); } - return _assertThisInitialized(self); } - function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); - return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), - result; - + result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; - result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } - return _possibleConstructorReturn(this, result); }; } - function _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } - return object; } - function _get() { if (typeof Reflect !== "undefined" && Reflect.get) { _get = Reflect.get.bind(); } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); - if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); - if (desc.get) { return desc.get.call(arguments.length < 3 ? target : receiver); } - return desc.value; }; } - return _get.apply(this, arguments); } - function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); @@ -237,25 +197,18 @@ if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } - function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; - for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; - return arr2; } - function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; - if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; - var F = function () {}; - return { s: F, n: function () { @@ -273,13 +226,11 @@ f: F }; } - 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 normalCompletion = true, - didErr = false, - err; + didErr = false, + err; return { s: function () { it = it.call(o); @@ -302,9 +253,22 @@ } }; } + function _toPrimitive(input, hint) { + if (typeof input !== "object" || input === null) return input; + var prim = input[Symbol.toPrimitive]; + if (prim !== undefined) { + var res = prim.call(input, hint || "default"); + if (typeof res !== "object") return res; + throw new TypeError("@@toPrimitive must return a primitive value."); + } + return (hint === "string" ? String : Number)(input); + } + function _toPropertyKey(arg) { + var key = _toPrimitive(arg, "string"); + return typeof key === "symbol" ? key : String(key); + } var PACKET_TYPES = Object.create(null); // no Map = no polyfill - PACKET_TYPES["open"] = "0"; PACKET_TYPES["close"] = "1"; PACKET_TYPES["ping"] = "2"; @@ -322,16 +286,14 @@ }; var withNativeBlob$1 = typeof Blob === "function" || typeof Blob !== "undefined" && Object.prototype.toString.call(Blob) === "[object BlobConstructor]"; - var withNativeArrayBuffer$2 = typeof ArrayBuffer === "function"; // ArrayBuffer.isView method is not defined in IE10 - + var withNativeArrayBuffer$2 = typeof ArrayBuffer === "function"; + // ArrayBuffer.isView method is not defined in IE10 var isView$1 = function isView(obj) { return typeof ArrayBuffer.isView === "function" ? ArrayBuffer.isView(obj) : obj && obj.buffer instanceof ArrayBuffer; }; - var encodePacket = function encodePacket(_ref, supportsBinary, callback) { var type = _ref.type, - data = _ref.data; - + data = _ref.data; if (withNativeBlob$1 && data instanceof Blob) { if (supportsBinary) { return callback(data); @@ -344,23 +306,18 @@ } else { return encodeBlobAsBase64(new Blob([data]), callback); } - } // plain string - - + } + // plain string return callback(PACKET_TYPES[type] + (data || "")); }; - var encodeBlobAsBase64 = function encodeBlobAsBase64(data, callback) { var fileReader = new FileReader(); - fileReader.onload = function () { var content = fileReader.result.split(",")[1]; callback("b" + (content || "")); }; - return fileReader.readAsDataURL(data); }; - function toArray(data) { if (data instanceof Uint8Array) { return data; @@ -370,7 +327,6 @@ return new Uint8Array(data.buffer, data.byteOffset, data.byteLength); } } - var TEXT_ENCODER; function encodePacketToBinary(packet, callback) { if (withNativeBlob$1 && packet.data instanceof Blob) { @@ -378,45 +334,38 @@ } 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 chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'; + // Use a lookup table to find the index. var lookup$1 = typeof Uint8Array === 'undefined' ? [] : new Uint8Array(256); - for (var i$1 = 0; i$1 < chars.length; i$1++) { lookup$1[chars.charCodeAt(i$1)] = i$1; } var decode$1 = function decode(base64) { var bufferLength = base64.length * 0.75, - len = base64.length, - i, - p = 0, - encoded1, - encoded2, - encoded3, - encoded4; - + len = base64.length, + i, + p = 0, + encoded1, + encoded2, + encoded3, + encoded4; if (base64[base64.length - 1] === '=') { bufferLength--; - if (base64[base64.length - 2] === '=') { bufferLength--; } } - var arraybuffer = new ArrayBuffer(bufferLength), - bytes = new Uint8Array(arraybuffer); - + bytes = new Uint8Array(arraybuffer); for (i = 0; i < len; i += 4) { encoded1 = lookup$1[base64.charCodeAt(i)]; encoded2 = lookup$1[base64.charCodeAt(i + 1)]; @@ -426,7 +375,6 @@ bytes[p++] = (encoded2 & 15) << 4 | encoded3 >> 2; bytes[p++] = (encoded3 & 3) << 6 | encoded4 & 63; } - return arraybuffer; }; @@ -438,22 +386,17 @@ data: mapBinary(encodedPacket, binaryType) }; } - var type = encodedPacket.charAt(0); - if (type === "b") { return { type: "message", data: decodeBase64Packet(encodedPacket.substring(1), binaryType) }; } - var packetType = PACKET_TYPES_REVERSE[type]; - if (!packetType) { return ERROR_PACKET; } - return encodedPacket.length > 1 ? { type: PACKET_TYPES_REVERSE[type], data: encodedPacket.substring(1) @@ -461,7 +404,6 @@ type: PACKET_TYPES_REVERSE[type] }; }; - var decodeBase64Packet = function decodeBase64Packet(data, binaryType) { if (withNativeArrayBuffer$1) { var decoded = decode$1(data); @@ -484,7 +426,6 @@ // from HTTP long-polling or WebTransport return new Blob([data]); } - case "arraybuffer": default: if (data instanceof ArrayBuffer) { @@ -494,12 +435,10 @@ // from WebTransport (Uint8Array) return data.buffer; } - } }; var SEPARATOR = String.fromCharCode(30); // see https://en.wikipedia.org/wiki/Delimiter#ASCII_delimited_text - var encodePayload = function encodePayload(packets, callback) { // some packets may be added to the array while encoding, so the initial length must be saved var length = packets.length; @@ -509,39 +448,32 @@ // force base64 encoding for binary packets encodePacket(packet, false, function (encodedPacket) { encodedPackets[i] = encodedPacket; - if (++count === length) { callback(encodedPackets.join(SEPARATOR)); } }); }); }; - var decodePayload = function decodePayload(encodedPayload, binaryType) { var encodedPackets = encodedPayload.split(SEPARATOR); var packets = []; - for (var i = 0; i < encodedPackets.length; i++) { var decodedPacket = decodePacket(encodedPackets[i], binaryType); packets.push(decodedPacket); - if (decodedPacket.type === "error") { break; } } - return packets; }; - var 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) + } + // 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); } @@ -552,9 +484,11 @@ * * @api public */ + function Emitter(obj) { if (obj) return mixin(obj); } + /** * Mixin the emitter properties. * @@ -567,9 +501,9 @@ for (var key in Emitter.prototype) { obj[key] = Emitter.prototype[key]; } - return obj; } + /** * Listen on the given `event` with `fn`. * @@ -579,12 +513,12 @@ * @api public */ - Emitter.prototype.on = Emitter.prototype.addEventListener = function (event, fn) { this._callbacks = this._callbacks || {}; (this._callbacks['$' + event] = this._callbacks['$' + event] || []).push(fn); return this; }; + /** * Adds an `event` listener that will be invoked a single * time then automatically removed. @@ -595,17 +529,16 @@ * @api public */ - Emitter.prototype.once = function (event, fn) { function on() { this.off(event, on); fn.apply(this, arguments); } - on.fn = fn; this.on(event, on); return this; }; + /** * Remove the given callback for `event` or all * registered callbacks. @@ -616,44 +549,43 @@ * @api public */ - Emitter.prototype.off = Emitter.prototype.removeListener = Emitter.prototype.removeAllListeners = Emitter.prototype.removeEventListener = function (event, fn) { - this._callbacks = this._callbacks || {}; // all + this._callbacks = this._callbacks || {}; + // all if (0 == arguments.length) { this._callbacks = {}; return this; - } // specific event - + } + // specific event var callbacks = this._callbacks['$' + event]; - if (!callbacks) return this; // remove all handlers + if (!callbacks) return this; + // remove all handlers if (1 == arguments.length) { delete this._callbacks['$' + event]; return this; - } // remove specific handler - + } + // remove specific handler var cb; - for (var i = 0; i < callbacks.length; i++) { cb = callbacks[i]; - if (cb === fn || cb.fn === fn) { callbacks.splice(i, 1); break; } - } // Remove event specific arrays for event types that no - // one is subscribed for to avoid memory leak. - + } + // Remove event specific arrays for event types that no + // one is subscribed for to avoid memory leak. if (callbacks.length === 0) { delete this._callbacks['$' + event]; } - return this; }; + /** * Emit `event` with the given args. * @@ -662,29 +594,25 @@ * @return {Emitter} */ - Emitter.prototype.emit = function (event) { this._callbacks = this._callbacks || {}; var args = new Array(arguments.length - 1), - callbacks = this._callbacks['$' + event]; - + callbacks = this._callbacks['$' + event]; for (var i = 1; i < arguments.length; i++) { args[i - 1] = arguments[i]; } - if (callbacks) { callbacks = callbacks.slice(0); - for (var i = 0, len = callbacks.length; i < len; ++i) { callbacks[i].apply(this, args); } } - return this; - }; // alias used for reserved events (protected method) - + }; + // alias used for reserved events (protected method) Emitter.prototype.emitReserved = Emitter.prototype.emit; + /** * Return array of callbacks for `event`. * @@ -697,6 +625,7 @@ this._callbacks = this._callbacks || {}; return this._callbacks['$' + event] || []; }; + /** * Check if this emitter has `event` handlers. * @@ -705,7 +634,6 @@ * @api public */ - Emitter.prototype.hasListeners = function (event) { return !!this.listeners(event).length; }; @@ -724,16 +652,14 @@ for (var _len = arguments.length, attr = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { attr[_key - 1] = arguments[_key]; } - return attr.reduce(function (acc, k) { if (obj.hasOwnProperty(k)) { acc[k] = obj[k]; } - return acc; }, {}); - } // Keep a reference to the real timeout functions so they can be used when overridden - + } + // Keep a reference to the real timeout functions so they can be used when overridden var NATIVE_SET_TIMEOUT = globalThisShim.setTimeout; var NATIVE_CLEAR_TIMEOUT = globalThisShim.clearTimeout; function installTimerFunctions(obj, opts) { @@ -744,26 +670,22 @@ obj.setTimeoutFn = globalThisShim.setTimeout.bind(globalThisShim); obj.clearTimeoutFn = globalThisShim.clearTimeout.bind(globalThisShim); } - } // base64 encoded buffers are about 33% bigger (https://en.wikipedia.org/wiki/Base64) - - var BASE64_OVERHEAD = 1.33; // we could also have used `new Blob([obj]).size`, but it isn't supported in IE9 - + } + // base64 encoded buffers are about 33% bigger (https://en.wikipedia.org/wiki/Base64) + var BASE64_OVERHEAD = 1.33; + // we could also have used `new Blob([obj]).size`, but it isn't supported in IE9 function byteLength(obj) { if (typeof obj === "string") { return utf8Length(obj); - } // arraybuffer or blob - - + } + // arraybuffer or blob return Math.ceil((obj.byteLength || obj.size) * BASE64_OVERHEAD); } - function utf8Length(str) { var c = 0, - length = 0; - + length = 0; for (var i = 0, l = str.length; i < l; i++) { c = str.charCodeAt(i); - if (c < 0x80) { length += 1; } else if (c < 0x800) { @@ -775,12 +697,10 @@ length += 4; } } - return length; } // imported from https://github.com/galkn/querystring - /** * Compiles a querystring * Returns string representation of the object @@ -790,14 +710,12 @@ */ 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; } /** @@ -806,44 +724,33 @@ * @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); - var _super = _createSuper(TransportError); - function TransportError(reason, description, context) { var _this; - _classCallCheck(this, TransportError); - _this = _super.call(this, reason); _this.description = description; _this.context = context; _this.type = "TransportError"; return _this; } - return _createClass(TransportError); }( /*#__PURE__*/_wrapNativeSuper(Error)); - var Transport = /*#__PURE__*/function (_Emitter) { _inherits(Transport, _Emitter); - var _super2 = _createSuper(Transport); - /** * Transport abstract constructor. * @@ -852,9 +759,7 @@ */ function Transport(opts) { var _this2; - _classCallCheck(this, Transport); - _this2 = _super2.call(this); _this2.writable = false; installTimerFunctions(_assertThisInitialized(_this2), opts); @@ -872,19 +777,15 @@ * @return {Transport} for chaining * @protected */ - - _createClass(Transport, [{ key: "onError", value: function onError(reason, description, context) { _get(_getPrototypeOf(Transport.prototype), "emitReserved", this).call(this, "error", new TransportError(reason, description, context)); - return this; } /** * Opens the transport. */ - }, { key: "open", value: function open() { @@ -895,7 +796,6 @@ /** * Closes the transport. */ - }, { key: "close", value: function close() { @@ -903,7 +803,6 @@ this.doClose(); this.onClose(); } - return this; } /** @@ -911,7 +810,6 @@ * * @param {Array} packets */ - }, { key: "send", value: function send(packets) { @@ -924,13 +822,11 @@ * * @protected */ - }, { key: "onOpen", value: function onOpen() { this.readyState = "open"; this.writable = true; - _get(_getPrototypeOf(Transport.prototype), "emitReserved", this).call(this, "open"); } /** @@ -939,7 +835,6 @@ * @param {String} data * @protected */ - }, { key: "onData", value: function onData(data) { @@ -951,7 +846,6 @@ * * @protected */ - }, { key: "onPacket", value: function onPacket(packet) { @@ -962,12 +856,10 @@ * * @protected */ - }, { key: "onClose", value: function onClose(details) { this.readyState = "closed"; - _get(_getPrototypeOf(Transport.prototype), "emitReserved", this).call(this, "close", details); } /** @@ -975,7 +867,6 @@ * * @param onPause */ - }, { key: "pause", value: function pause(onPause) {} @@ -1007,18 +898,17 @@ return encodedQuery.length ? "?" + encodedQuery : ""; } }]); - return Transport; }(Emitter); // imported from https://github.com/unshiftio/yeast var alphabet = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-_'.split(''), - length = 64, - map = {}; + length = 64, + map = {}; var seed = 0, - i = 0, - prev; + i = 0, + prev; /** * Return a string representing the specified number. * @@ -1026,15 +916,12 @@ * @returns {String} The string representation of the number. * @api public */ - function encode(num) { var encoded = ''; - do { encoded = alphabet[num % length] + encoded; num = Math.floor(num / length); } while (num > 0); - return encoded; } /** @@ -1043,40 +930,35 @@ * @returns {String} A unique id. * @api public */ - function yeast() { var now = encode(+new Date()); if (now !== prev) return seed = 0, prev = now; return now + '.' + encode(seed++); - } // + } + // // Map each character to its index. // - - for (; i < length; i++) { - map[alphabet[i]] = i; - } + for (; i < length; i++) map[alphabet[i]] = i; // imported from https://github.com/component/has-cors var value = false; - try { value = typeof XMLHttpRequest !== 'undefined' && 'withCredentials' in new XMLHttpRequest(); - } catch (err) {// if XMLHttp support is disabled in IE then it will throw + } catch (err) { + // if XMLHttp support is disabled in IE then it will throw // when trying to create } - var hasCORS = value; // browser shim for xmlhttprequest module function XHR(opts) { - var xdomain = opts.xdomain; // XMLHttpRequest can be disabled on IE - + var xdomain = opts.xdomain; + // XMLHttpRequest can be disabled on IE try { if ("undefined" !== typeof XMLHttpRequest && (!xdomain || hasCORS)) { return new XMLHttpRequest(); } } catch (e) {} - if (!xdomain) { try { return new globalThisShim[["Active"].concat("Object").join("X")]("Microsoft.XMLHTTP"); @@ -1086,19 +968,15 @@ function createCookieJar() {} function empty() {} - var hasXHR2 = function () { var xhr = new XHR({ xdomain: false }); return null != xhr.responseType; }(); - var Polling = /*#__PURE__*/function (_Transport) { _inherits(Polling, _Transport); - var _super = _createSuper(Polling); - /** * XHR Polling constructor. * @@ -1107,37 +985,28 @@ */ function Polling(opts) { var _this; - _classCallCheck(this, Polling); - _this = _super.call(this, opts); _this.polling = false; - if (typeof location !== "undefined") { var isSSL = "https:" === location.protocol; - var port = location.port; // some user agents have empty `location.port` - + var port = location.port; + // some user agents have empty `location.port` if (!port) { port = isSSL ? "443" : "80"; } - _this.xd = typeof location !== "undefined" && opts.hostname !== location.hostname || port !== opts.port; } /** * XHR supports binary */ - - var forceBase64 = opts && opts.forceBase64; _this.supportsBinary = hasXHR2 && !forceBase64; - if (_this.opts.withCredentials) { _this.cookieJar = createCookieJar(); } - return _this; } - _createClass(Polling, [{ key: "name", get: function get() { @@ -1149,7 +1018,6 @@ * * @protected */ - }, { key: "doOpen", value: function doOpen() { @@ -1161,29 +1029,23 @@ * @param {Function} onPause - callback upon buffers are flushed and transport is paused * @package */ - }, { key: "pause", value: function pause(onPause) { var _this2 = this; - this.readyState = "pausing"; - var pause = function pause() { _this2.readyState = "paused"; onPause(); }; - if (this.polling || !this.writable) { var total = 0; - if (this.polling) { total++; this.once("pollComplete", function () { --total || pause(); }); } - if (!this.writable) { total++; this.once("drain", function () { @@ -1199,7 +1061,6 @@ * * @private */ - }, { key: "poll", value: function poll() { @@ -1212,39 +1073,32 @@ * * @protected */ - }, { key: "onData", value: function onData(data) { var _this3 = this; - var callback = function callback(packet) { // if its the first message we consider the transport open if ("opening" === _this3.readyState && packet.type === "open") { _this3.onOpen(); - } // if its a close packet, we close the ongoing requests - - + } + // if its a close packet, we close the ongoing requests if ("close" === packet.type) { _this3.onClose({ description: "transport closed by the server" }); - return false; - } // otherwise bypass onData and handle the message - - + } + // otherwise bypass onData and handle the message _this3.onPacket(packet); - }; // decode payload - - - decodePayload(data, this.socket.binaryType).forEach(callback); // if an event did not trigger closing - + }; + // decode payload + decodePayload(data, this.socket.binaryType).forEach(callback); + // if an event did not trigger closing if ("closed" !== this.readyState) { // if we got data we're not polling this.polling = false; this.emitReserved("pollComplete"); - if ("open" === this.readyState) { this.poll(); } @@ -1255,18 +1109,15 @@ * * @protected */ - }, { key: "doClose", value: function doClose() { var _this4 = this; - var close = function close() { _this4.write([{ type: "close" }]); }; - if ("open" === this.readyState) { close(); } else { @@ -1281,17 +1132,14 @@ * @param {Array} packets - data packets * @protected */ - }, { key: "write", value: function write(packets) { var _this5 = this; - this.writable = false; encodePayload(packets, function (data) { _this5.doWrite(data, function () { _this5.writable = true; - _this5.emitReserved("drain"); }); }); @@ -1301,21 +1149,18 @@ * * @private */ - }, { key: "uri", value: function uri() { var schema = this.opts.secure ? "https" : "http"; - var query = this.query || {}; // cache busting is forced - + var query = this.query || {}; + // cache busting is forced if (false !== this.opts.timestampRequests) { query[this.opts.timestampParam] = yeast(); } - if (!this.supportsBinary && !query.sid) { query.b64 = 1; } - return this.createUri(schema, query); } /** @@ -1324,17 +1169,14 @@ * @param {String} method * @private */ - }, { key: "request", value: function request() { var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; - _extends(opts, { xd: this.xd, cookieJar: this.cookieJar }, this.opts); - return new Request(this.uri(), opts); } /** @@ -1344,12 +1186,10 @@ * @param {Function} called upon flush. * @private */ - }, { key: "doWrite", value: function doWrite(data, fn) { var _this6 = this; - var req = this.request({ method: "POST", data: data @@ -1364,12 +1204,10 @@ * * @private */ - }, { key: "doPoll", value: function doPoll() { var _this7 = this; - var req = this.request(); req.on("data", this.onData.bind(this)); req.on("error", function (xhrStatus, context) { @@ -1378,14 +1216,11 @@ this.pollXhr = req; } }]); - return Polling; }(Transport); var Request = /*#__PURE__*/function (_Emitter) { _inherits(Request, _Emitter); - var _super2 = _createSuper(Request); - /** * Request constructor * @@ -1394,18 +1229,14 @@ */ function Request(uri, opts) { var _this8; - _classCallCheck(this, Request); - _this8 = _super2.call(this); installTimerFunctions(_assertThisInitialized(_this8), opts); _this8.opts = opts; _this8.method = opts.method || "GET"; _this8.uri = uri; _this8.data = undefined !== opts.data ? opts.data : null; - _this8.create(); - return _this8; } /** @@ -1413,26 +1244,19 @@ * * @private */ - - _createClass(Request, [{ key: "create", 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; var xhr = this.xhr = new XHR(opts); - try { xhr.open(this.method, this.uri, true); - try { if (this.opts.extraHeaders) { xhr.setDisableHeaderCheck && xhr.setDisableHeaderCheck(true); - for (var i in this.opts.extraHeaders) { if (this.opts.extraHeaders.hasOwnProperty(i)) { xhr.setRequestHeader(i, this.opts.extraHeaders[i]); @@ -1440,36 +1264,28 @@ } } } catch (e) {} - if ("POST" === this.method) { try { xhr.setRequestHeader("Content-type", "text/plain;charset=UTF-8"); } catch (e) {} } - try { xhr.setRequestHeader("Accept", "*/*"); } catch (e) {} - - (_a = this.opts.cookieJar) === null || _a === void 0 ? void 0 : _a.addCookies(xhr); // ie6 check - + (_a = this.opts.cookieJar) === null || _a === void 0 ? void 0 : _a.addCookies(xhr); + // ie6 check if ("withCredentials" in xhr) { xhr.withCredentials = this.opts.withCredentials; } - if (this.opts.requestTimeout) { xhr.timeout = this.opts.requestTimeout; } - 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) { _this9.onLoad(); } else { @@ -1480,7 +1296,6 @@ }, 0); } }; - xhr.send(this.data); } catch (e) { // Need to defer since .create() is called directly from the constructor @@ -1491,7 +1306,6 @@ }, 0); return; } - if (typeof document !== "undefined") { this.index = Request.requestsCount++; Request.requests[this.index] = this; @@ -1502,7 +1316,6 @@ * * @private */ - }, { key: "onError", value: function onError(err) { @@ -1514,26 +1327,21 @@ * * @private */ - }, { key: "cleanup", value: function cleanup(fromError) { if ("undefined" === typeof this.xhr || null === this.xhr) { return; } - this.xhr.onreadystatechange = empty; - if (fromError) { try { this.xhr.abort(); } catch (e) {} } - if (typeof document !== "undefined") { delete Request.requests[this.index]; } - this.xhr = null; } /** @@ -1541,12 +1349,10 @@ * * @private */ - }, { key: "onLoad", value: function onLoad() { var data = this.xhr.responseText; - if (data !== null) { this.emitReserved("data", data); this.emitReserved("success"); @@ -1558,14 +1364,12 @@ * * @package */ - }, { key: "abort", value: function abort() { this.cleanup(); } }]); - return Request; }(Emitter); Request.requestsCount = 0; @@ -1575,7 +1379,6 @@ * memory leaks (e.g. when using IE) and to ensure that no spurious error is * emitted. */ - if (typeof document !== "undefined") { // @ts-ignore if (typeof attachEvent === "function") { @@ -1586,7 +1389,6 @@ addEventListener(terminationEvent, unloadHandler, false); } } - function unloadHandler() { for (var i in Request.requests) { if (Request.requests.hasOwnProperty(i)) { @@ -1597,7 +1399,6 @@ var nextTick = function () { var isPromiseAvailable = typeof Promise === "function" && typeof Promise.resolve === "function"; - if (isPromiseAvailable) { return function (cb) { return Promise.resolve().then(cb); @@ -1612,12 +1413,11 @@ var usingBrowserWebSocket = true; var defaultBinaryType = "arraybuffer"; + // detect ReactNative environment var isReactNative = typeof navigator !== "undefined" && typeof navigator.product === "string" && navigator.product.toLowerCase() === "reactnative"; var WS = /*#__PURE__*/function (_Transport) { _inherits(WS, _Transport); - var _super = _createSuper(WS); - /** * WebSocket transport constructor. * @@ -1626,14 +1426,11 @@ */ function WS(opts) { var _this; - _classCallCheck(this, WS); - _this = _super.call(this, opts); _this.supportsBinary = !opts.forceBase64; return _this; } - _createClass(WS, [{ key: "name", get: function get() { @@ -1646,22 +1443,18 @@ // let probe timeout return; } - var uri = this.uri(); - var protocols = this.opts.protocols; // React Native only supports the 'headers' option, and will print a warning if anything else is passed - + var protocols = this.opts.protocols; + // React Native only supports the 'headers' option, and will print a warning if anything else is passed var opts = isReactNative ? {} : pick(this.opts, "agent", "perMessageDeflate", "pfx", "key", "passphrase", "cert", "ca", "ciphers", "rejectUnauthorized", "localAddress", "protocolVersion", "origin", "maxPayload", "family", "checkServerIdentity"); - if (this.opts.extraHeaders) { opts.headers = this.opts.extraHeaders; } - try { this.ws = usingBrowserWebSocket && !isReactNative ? protocols ? new WebSocket(uri, protocols) : new WebSocket(uri) : new WebSocket(uri, protocols, opts); } catch (err) { return this.emitReserved("error", err); } - this.ws.binaryType = this.socket.binaryType || defaultBinaryType; this.addEventListeners(); } @@ -1670,31 +1463,25 @@ * * @private */ - }, { key: "addEventListeners", value: function addEventListeners() { var _this2 = this; - this.ws.onopen = function () { if (_this2.opts.autoUnref) { _this2.ws._socket.unref(); } - _this2.onOpen(); }; - this.ws.onclose = function (closeEvent) { return _this2.onClose({ description: "websocket connection closed", context: closeEvent }); }; - this.ws.onmessage = function (ev) { return _this2.onData(ev.data); }; - this.ws.onerror = function (e) { return _this2.onError("websocket error", e); }; @@ -1703,41 +1490,36 @@ key: "write", value: function write(packets) { var _this3 = this; - - this.writable = false; // encodePacket efficient as it uses WS framing + this.writable = false; + // encodePacket efficient as it uses WS framing // no need for encodePayload - - var _loop = function _loop(i) { + var _loop = function _loop() { var packet = packets[i]; var lastPacket = i === packets.length - 1; encodePacket(packet, _this3.supportsBinary, function (data) { // always create a new object (GH-437) var opts = {}; + // Sometimes the websocket has already been closed but the browser didn't // have a chance of informing us about it yet, in that case send will // throw an error - - try { if (usingBrowserWebSocket) { // TypeError is thrown when passing the second argument on Safari _this3.ws.send(data); } } catch (e) {} - if (lastPacket) { // fake drain // defer to next tick to allow Socket to clear writeBuffer nextTick(function () { _this3.writable = true; - _this3.emitReserved("drain"); }, _this3.setTimeoutFn); } }); }; - for (var i = 0; i < packets.length; i++) { - _loop(i); + _loop(); } } }, { @@ -1753,22 +1535,19 @@ * * @private */ - }, { key: "uri", value: function uri() { var schema = this.opts.secure ? "wss" : "ws"; - var query = this.query || {}; // append timestamp to URI - + var query = this.query || {}; + // append timestamp to URI if (this.opts.timestampRequests) { query[this.opts.timestampParam] = yeast(); - } // communicate binary support capabilities - - + } + // communicate binary support capabilities if (!this.supportsBinary) { query.b64 = 1; } - return this.createUri(schema, query); } /** @@ -1777,14 +1556,12 @@ * @return {Boolean} whether this transport is available. * @private */ - }, { key: "check", value: function check() { return !!WebSocket; } }]); - return WS; }(Transport); @@ -1793,18 +1570,13 @@ // 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() { @@ -1814,49 +1586,42 @@ key: "doOpen", value: function doOpen() { var _this = this; - // @ts-ignore if (typeof WebTransport !== "function") { return; - } // @ts-ignore - - + } + // @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.onClose(); + })["catch"](function (err) { + _this.onError("webtransport error", err); + }); + // 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; - + 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(); - }); + })["catch"](function (err) {}); }; - 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(); }); @@ -1867,42 +1632,35 @@ key: "write", value: function write(packets) { var _this2 = this; - this.writable = false; - - var _loop = function _loop(i) { + var _loop = function _loop() { 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); + _loop(); } } }, { key: "doClose", value: function doClose() { var _a; - (_a = this.transport) === null || _a === void 0 ? void 0 : _a.close(); } }]); - return WT; }(Transport); @@ -1913,7 +1671,6 @@ }; // imported from https://github.com/galkn/parseuri - /** * Parses a URI * @@ -1936,48 +1693,38 @@ var parts = ['source', 'protocol', 'authority', 'userInfo', 'user', 'password', 'host', 'port', 'relative', 'path', 'directory', 'file', 'query', 'anchor']; function parse(str) { var src = str, - b = str.indexOf('['), - e = str.indexOf(']'); - + b = str.indexOf('['), + e = str.indexOf(']'); if (b != -1 && e != -1) { str = str.substring(0, b) + str.substring(b, e).replace(/:/g, ';') + str.substring(e, str.length); } - var m = re.exec(str || ''), - uri = {}, - i = 14; - + uri = {}, + i = 14; while (i--) { uri[parts[i]] = m[i] || ''; } - if (b != -1 && e != -1) { uri.source = src; uri.host = uri.host.substring(1, uri.host.length - 1).replace(/;/g, ':'); uri.authority = uri.authority.replace('[', '').replace(']', '').replace(/;/g, ':'); uri.ipv6uri = true; } - uri.pathNames = pathNames(uri, uri['path']); uri.queryKey = queryKey(uri, uri['query']); return uri; } - function pathNames(obj, path) { var regx = /\/{2,9}/g, - names = path.replace(regx, "/").split("/"); - + names = path.replace(regx, "/").split("/"); if (path.slice(0, 1) == '/' || path.length === 0) { names.splice(0, 1); } - if (path.slice(-1) == '/') { names.splice(names.length - 1, 1); } - return names; } - function queryKey(uri, query) { var data = {}; query.replace(/(?:^|&)([^&=]*)=?([^&]*)/g, function ($0, $1, $2) { @@ -1990,9 +1737,7 @@ var Socket$1 = /*#__PURE__*/function (_Emitter) { _inherits(Socket, _Emitter); - var _super = _createSuper(Socket); - /** * Socket constructor. * @@ -2001,19 +1746,14 @@ */ function Socket(uri) { var _this; - var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; - _classCallCheck(this, Socket); - _this = _super.call(this); _this.writeBuffer = []; - if (uri && "object" === _typeof(uri)) { opts = uri; uri = null; } - if (uri) { uri = parse(uri); opts.hostname = uri.host; @@ -2023,15 +1763,12 @@ } else if (opts.host) { opts.hostname = parse(opts.host).host; } - installTimerFunctions(_assertThisInitialized(_this), opts); _this.secure = null != opts.secure ? opts.secure : typeof location !== "undefined" && "https:" === location.protocol; - if (opts.hostname && !opts.port) { // if no port is specified manually, use the protocol default opts.port = _this.secure ? "443" : "80"; } - _this.hostname = opts.hostname || (typeof location !== "undefined" ? location.hostname : "localhost"); _this.port = opts.port || (typeof location !== "undefined" && location.port ? location.port : _this.secure ? "443" : "80"); _this.transports = opts.transports || ["polling", "websocket", "webtransport"]; @@ -2050,22 +1787,19 @@ threshold: 1024 }, transportOptions: {}, - closeOnBeforeunload: true + closeOnBeforeunload: false }, opts); _this.opts.path = _this.opts.path.replace(/\/$/, "") + (_this.opts.addTrailingSlash ? "/" : ""); - if (typeof _this.opts.query === "string") { _this.opts.query = decode(_this.opts.query); - } // set on handshake - - + } + // set on handshake _this.id = null; _this.upgrades = null; _this.pingInterval = null; - _this.pingTimeout = null; // set on heartbeat - + _this.pingTimeout = null; + // set on heartbeat _this.pingTimeoutTimer = null; - if (typeof addEventListener === "function") { if (_this.opts.closeOnBeforeunload) { // Firefox closes the connection when the "beforeunload" event is emitted but not Chrome. This event listener @@ -2075,27 +1809,21 @@ if (_this.transport) { // silently close the transport _this.transport.removeAllListeners(); - _this.transport.close(); } }; - addEventListener("beforeunload", _this.beforeunloadEventListener, false); } - if (_this.hostname !== "localhost") { _this.offlineEventListener = function () { _this.onClose("transport close", { description: "network connection lost" }); }; - addEventListener("offline", _this.offlineEventListener, false); } } - _this.open(); - return _this; } /** @@ -2105,28 +1833,23 @@ * @return {Transport} * @private */ - - _createClass(Socket, [{ key: "createTransport", value: function createTransport(name) { - var query = _extends({}, this.opts.query); // append engine.io protocol identifier - - - query.EIO = protocol$1; // transport name - - query.transport = name; // session id if we already have one - + var query = _extends({}, this.opts.query); + // append engine.io protocol identifier + query.EIO = protocol$1; + // transport name + query.transport = name; + // session id if we already have one if (this.id) query.sid = this.id; - - var opts = _extends({}, this.opts.transportOptions[name], this.opts, { + var opts = _extends({}, this.opts, { query: query, socket: this, hostname: this.hostname, secure: this.secure, port: this.port - }); - + }, this.opts.transportOptions[name]); return new transports[name](opts); } /** @@ -2134,14 +1857,11 @@ * * @private */ - }, { key: "open", value: function open() { var _this2 = this; - var transport; - if (this.opts.rememberUpgrade && Socket.priorWebsocketSuccess && this.transports.indexOf("websocket") !== -1) { transport = "websocket"; } else if (0 === this.transports.length) { @@ -2153,9 +1873,8 @@ } else { transport = this.transports[0]; } - - this.readyState = "opening"; // Retry with the next transport if the transport is disabled (jsonp: false) - + this.readyState = "opening"; + // Retry with the next transport if the transport is disabled (jsonp: false) try { transport = this.createTransport(transport); } catch (e) { @@ -2163,7 +1882,6 @@ this.open(); return; } - transport.open(); this.setTransport(transport); } @@ -2172,19 +1890,16 @@ * * @private */ - }, { key: "setTransport", value: function setTransport(transport) { var _this3 = this; - if (this.transport) { this.transport.removeAllListeners(); - } // set up transport - - - this.transport = transport; // set up transport listeners - + } + // set up transport + this.transport = transport; + // set up transport listeners transport.on("drain", this.onDrain.bind(this)).on("packet", this.onPacket.bind(this)).on("error", this.onError.bind(this)).on("close", function (reason) { return _this3.onClose("transport close", reason); }); @@ -2195,16 +1910,13 @@ * @param {String} name - transport name * @private */ - }, { key: "probe", value: function probe(name) { var _this4 = this; - var transport = this.createTransport(name); var failed = false; Socket.priorWebsocketSuccess = false; - var onTransportOpen = function onTransportOpen() { if (failed) return; transport.send([{ @@ -2213,95 +1925,74 @@ }]); transport.once("packet", function (msg) { if (failed) return; - if ("pong" === msg.type && "probe" === msg.data) { _this4.upgrading = true; - _this4.emitReserved("upgrading", transport); - if (!transport) return; Socket.priorWebsocketSuccess = "websocket" === transport.name; - _this4.transport.pause(function () { if (failed) return; if ("closed" === _this4.readyState) return; cleanup(); - _this4.setTransport(transport); - transport.send([{ type: "upgrade" }]); - _this4.emitReserved("upgrade", transport); - transport = null; _this4.upgrading = false; - _this4.flush(); }); } else { - var err = new Error("probe error"); // @ts-ignore - + var err = new Error("probe error"); + // @ts-ignore err.transport = transport.name; - _this4.emitReserved("upgradeError", err); } }); }; - function freezeTransport() { - if (failed) return; // Any callback called by transport should be ignored since now - + if (failed) return; + // Any callback called by transport should be ignored since now failed = true; cleanup(); transport.close(); transport = null; - } // Handle any error that happens while probing - - + } + // Handle any error that happens while probing var onerror = function onerror(err) { - var error = new Error("probe error: " + err); // @ts-ignore - + var error = new Error("probe error: " + err); + // @ts-ignore error.transport = transport.name; freezeTransport(); - _this4.emitReserved("upgradeError", error); }; - function onTransportClose() { onerror("transport closed"); - } // When the socket is closed while we're probing - - + } + // When the socket is closed while we're probing function onclose() { onerror("socket closed"); - } // When the socket is upgraded while we're probing - - + } + // When the socket is upgraded while we're probing function onupgrade(to) { if (transport && to.name !== transport.name) { freezeTransport(); } - } // Remove all listeners on the transport and on self - - + } + // Remove all listeners on the transport and on self var cleanup = function cleanup() { transport.removeListener("open", onTransportOpen); transport.removeListener("error", onerror); transport.removeListener("close", onTransportClose); - _this4.off("close", onclose); - _this4.off("upgrading", onupgrade); }; - transport.once("open", onTransportOpen); transport.once("error", onerror); transport.once("close", onTransportClose); this.once("close", onclose); this.once("upgrading", onupgrade); - if (this.upgrades.indexOf("webtransport") !== -1 && name !== "webtransport") { // favor WebTransport this.setTimeoutFn(function () { @@ -2318,20 +2009,18 @@ * * @private */ - }, { key: "onOpen", value: function onOpen() { this.readyState = "open"; Socket.priorWebsocketSuccess = "websocket" === this.transport.name; this.emitReserved("open"); - this.flush(); // we check for `readyState` in case an `open` + this.flush(); + // we check for `readyState` in case an `open` // listener already closed the socket - if ("open" === this.readyState && this.opts.upgrade) { var i = 0; var l = this.upgrades.length; - for (; i < l; i++) { this.probe(this.upgrades[i]); } @@ -2342,34 +2031,29 @@ * * @private */ - }, { key: "onPacket", value: function onPacket(packet) { if ("opening" === this.readyState || "open" === this.readyState || "closing" === this.readyState) { - this.emitReserved("packet", packet); // Socket is live - any packet counts - + this.emitReserved("packet", packet); + // Socket is live - any packet counts this.emitReserved("heartbeat"); - switch (packet.type) { case "open": this.onHandshake(JSON.parse(packet.data)); break; - case "ping": this.resetPingTimeout(); this.sendPacket("pong"); this.emitReserved("ping"); this.emitReserved("pong"); break; - case "error": - var err = new Error("server error"); // @ts-ignore - + var err = new Error("server error"); + // @ts-ignore err.code = packet.data; this.onError(err); break; - case "message": this.emitReserved("data", packet.data); this.emitReserved("message", packet.data); @@ -2383,7 +2067,6 @@ * @param {Object} data - handshake obj * @private */ - }, { key: "onHandshake", value: function onHandshake(data) { @@ -2394,8 +2077,8 @@ this.pingInterval = data.pingInterval; this.pingTimeout = data.pingTimeout; this.maxPayload = data.maxPayload; - this.onOpen(); // In case open handler closes socket - + this.onOpen(); + // In case open handler closes socket if ("closed" === this.readyState) return; this.resetPingTimeout(); } @@ -2404,17 +2087,14 @@ * * @private */ - }, { key: "resetPingTimeout", value: function resetPingTimeout() { var _this5 = this; - this.clearTimeoutFn(this.pingTimeoutTimer); this.pingTimeoutTimer = this.setTimeoutFn(function () { _this5.onClose("ping timeout"); }, this.pingInterval + this.pingTimeout); - if (this.opts.autoUnref) { this.pingTimeoutTimer.unref(); } @@ -2424,16 +2104,14 @@ * * @private */ - }, { key: "onDrain", value: function onDrain() { - this.writeBuffer.splice(0, this.prevBufferLen); // setting prevBufferLen = 0 is very important + this.writeBuffer.splice(0, this.prevBufferLen); + // setting prevBufferLen = 0 is very important // for example, when upgrading, upgrade packet is sent over, // and a nonzero prevBufferLen could cause problems on `drain` - this.prevBufferLen = 0; - if (0 === this.writeBuffer.length) { this.emitReserved("drain"); } else { @@ -2445,15 +2123,14 @@ * * @private */ - }, { key: "flush", value: function flush() { if ("closed" !== this.readyState && this.transport.writable && !this.upgrading && this.writeBuffer.length) { var packets = this.getWritablePackets(); - this.transport.send(packets); // keep track of current length of writeBuffer + this.transport.send(packets); + // keep track of current length of writeBuffer // splice writeBuffer and callbackBuffer on `drain` - this.prevBufferLen = packets.length; this.emitReserved("flush"); } @@ -2464,29 +2141,22 @@ * * @private */ - }, { key: "getWritablePackets", value: function getWritablePackets() { var shouldCheckPayloadSize = this.maxPayload && this.transport.name === "polling" && this.writeBuffer.length > 1; - if (!shouldCheckPayloadSize) { return this.writeBuffer; } - var payloadSize = 1; // first packet type - for (var i = 0; i < this.writeBuffer.length; i++) { var data = this.writeBuffer[i].data; - if (data) { payloadSize += byteLength(data); } - if (i > 0 && payloadSize > this.maxPayload) { return this.writeBuffer.slice(0, i); } - payloadSize += 2; // separator + packet type } @@ -2500,7 +2170,6 @@ * @param {Function} callback function. * @return {Socket} for chaining. */ - }, { key: "write", value: function write(msg, options, fn) { @@ -2522,7 +2191,6 @@ * @param {Function} fn - callback function. * @private */ - }, { key: "sendPacket", value: function sendPacket(type, data, options, fn) { @@ -2530,16 +2198,13 @@ fn = data; data = undefined; } - if ("function" === typeof options) { fn = options; options = null; } - if ("closing" === this.readyState || "closed" === this.readyState) { return; } - options = options || {}; options.compress = false !== options.compress; var packet = { @@ -2555,36 +2220,26 @@ /** * Closes the connection. */ - }, { key: "close", value: function close() { var _this6 = this; - var close = function close() { _this6.onClose("forced close"); - _this6.transport.close(); }; - var cleanupAndClose = function cleanupAndClose() { _this6.off("upgrade", cleanupAndClose); - _this6.off("upgradeError", cleanupAndClose); - close(); }; - var waitForUpgrade = function waitForUpgrade() { // wait for upgrade to finish since we can't send packets while pausing a transport _this6.once("upgrade", cleanupAndClose); - _this6.once("upgradeError", cleanupAndClose); }; - if ("opening" === this.readyState || "open" === this.readyState) { this.readyState = "closing"; - if (this.writeBuffer.length) { this.once("drain", function () { if (_this6.upgrading) { @@ -2599,7 +2254,6 @@ close(); } } - return this; } /** @@ -2607,7 +2261,6 @@ * * @private */ - }, { key: "onError", value: function onError(err) { @@ -2620,33 +2273,30 @@ * * @private */ - }, { key: "onClose", value: function onClose(reason, description) { if ("opening" === this.readyState || "open" === this.readyState || "closing" === this.readyState) { // clear timers - this.clearTimeoutFn(this.pingTimeoutTimer); // stop event from firing again for transport - - this.transport.removeAllListeners("close"); // ensure transport won't stay open - - this.transport.close(); // ignore further transport communication - + this.clearTimeoutFn(this.pingTimeoutTimer); + // stop event from firing again for transport + this.transport.removeAllListeners("close"); + // ensure transport won't stay open + this.transport.close(); + // ignore further transport communication this.transport.removeAllListeners(); - if (typeof removeEventListener === "function") { removeEventListener("beforeunload", this.beforeunloadEventListener, false); removeEventListener("offline", this.offlineEventListener, false); - } // set ready state - - - this.readyState = "closed"; // clear session id - - this.id = null; // emit close event - - this.emitReserved("close", reason, description); // clean buffers after, so users can still + } + // set ready state + this.readyState = "closed"; + // clear session id + this.id = null; + // emit close event + this.emitReserved("close", reason, description); + // clean buffers after, so users can still // grab the buffers on `close` event - this.writeBuffer = []; this.prevBufferLen = 0; } @@ -2657,22 +2307,18 @@ * @param {Array} upgrades - server upgrades * @private */ - }, { key: "filterUpgrades", value: function filterUpgrades(upgrades) { var filteredUpgrades = []; var i = 0; var j = upgrades.length; - for (; i < j; i++) { if (~this.transports.indexOf(upgrades[i])) filteredUpgrades.push(upgrades[i]); } - return filteredUpgrades; } }]); - return Socket; }(Emitter); Socket$1.protocol = protocol$1; @@ -2688,15 +2334,14 @@ * Defaults to window.location. * @public */ - function url(uri) { var path = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : ""; var loc = arguments.length > 2 ? arguments[2] : undefined; - var obj = uri; // default to window.location - + var obj = uri; + // default to window.location loc = loc || typeof location !== "undefined" && location; - if (null == uri) uri = loc.protocol + "//" + loc.host; // relative path support - + if (null == uri) uri = loc.protocol + "//" + loc.host; + // relative path support if (typeof uri === "string") { if ("/" === uri.charAt(0)) { if ("/" === uri.charAt(1)) { @@ -2705,20 +2350,17 @@ uri = loc.host + uri; } } - if (!/^(https?|wss?):\/\//.test(uri)) { if ("undefined" !== typeof loc) { uri = loc.protocol + "//" + uri; } else { uri = "https://" + uri; } - } // parse - - + } + // parse obj = parse(uri); - } // make sure we treat `localhost:80` and `localhost` equally - - + } + // make sure we treat `localhost:80` and `localhost` equally if (!obj.port) { if (/^(http|ws)$/.test(obj.protocol)) { obj.port = "80"; @@ -2726,23 +2368,20 @@ obj.port = "443"; } } - obj.path = obj.path || "/"; var ipv6 = obj.host.indexOf(":") !== -1; - var host = ipv6 ? "[" + obj.host + "]" : obj.host; // define unique id - - obj.id = obj.protocol + "://" + host + ":" + obj.port + path; // define href - + var host = ipv6 ? "[" + obj.host + "]" : obj.host; + // define unique id + obj.id = obj.protocol + "://" + host + ":" + obj.port + path; + // define href obj.href = obj.protocol + "://" + host + (loc && loc.port === obj.port ? "" : ":" + obj.port); return obj; } var withNativeArrayBuffer = typeof ArrayBuffer === "function"; - var isView = function isView(obj) { return typeof ArrayBuffer.isView === "function" ? ArrayBuffer.isView(obj) : obj.buffer instanceof ArrayBuffer; }; - var toString = Object.prototype.toString; var withNativeBlob = typeof Blob === "function" || typeof Blob !== "undefined" && toString.call(Blob) === "[object BlobConstructor]"; var withNativeFile = typeof File === "function" || typeof File !== "undefined" && toString.call(File) === "[object FileConstructor]"; @@ -2751,7 +2390,6 @@ * * @private */ - function isBinary(obj) { return withNativeArrayBuffer && (obj instanceof ArrayBuffer || isView(obj)) || withNativeBlob && obj instanceof Blob || withNativeFile && obj instanceof File; } @@ -2759,31 +2397,25 @@ if (!obj || _typeof(obj) !== "object") { return false; } - if (Array.isArray(obj)) { for (var i = 0, l = obj.length; i < l; i++) { if (hasBinary(obj[i])) { return true; } } - return false; } - if (isBinary(obj)) { return true; } - if (obj.toJSON && typeof obj.toJSON === "function" && arguments.length === 1) { return hasBinary(obj.toJSON(), true); } - for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key) && hasBinary(obj[key])) { return true; } } - return false; } @@ -2794,23 +2426,19 @@ * @return {Object} with deconstructed packet and list of buffers * @public */ - function deconstructPacket(packet) { var buffers = []; var packetData = packet.data; var pack = packet; pack.data = _deconstructPacket(packetData, buffers); pack.attachments = buffers.length; // number of binary 'attachments' - return { packet: pack, buffers: buffers }; } - function _deconstructPacket(data, buffers) { if (!data) return data; - if (isBinary(data)) { var placeholder = { _placeholder: true, @@ -2820,24 +2448,19 @@ return placeholder; } else if (Array.isArray(data)) { var newData = new Array(data.length); - for (var i = 0; i < data.length; i++) { newData[i] = _deconstructPacket(data[i], buffers); } - return newData; } else if (_typeof(data) === "object" && !(data instanceof Date)) { var _newData = {}; - for (var key in data) { if (Object.prototype.hasOwnProperty.call(data, key)) { _newData[key] = _deconstructPacket(data[key], buffers); } } - return _newData; } - return data; } /** @@ -2848,21 +2471,15 @@ * @return {Object} reconstructed packet * @public */ - - function reconstructPacket(packet, buffers) { packet.data = _reconstructPacket(packet.data, buffers); delete packet.attachments; // no longer useful - return packet; } - function _reconstructPacket(data, buffers) { if (!data) return data; - if (data && data._placeholder === true) { var isIndexValid = typeof data.num === "number" && data.num >= 0 && data.num < buffers.length; - if (isIndexValid) { return buffers[data.num]; // appropriate buffer (should be natural order anyway) } else { @@ -2879,14 +2496,12 @@ } } } - return data; } /** * These strings must not be used as event names, as they have a special meaning. */ - var RESERVED_EVENTS$1 = ["connect", "connect_error", "disconnect", "disconnecting", "newListener", "removeListener" // used by the Node.js EventEmitter ]; /** @@ -2894,10 +2509,8 @@ * * @public */ - var protocol = 5; var PacketType; - (function (PacketType) { PacketType[PacketType["CONNECT"] = 0] = "CONNECT"; PacketType[PacketType["DISCONNECT"] = 1] = "DISCONNECT"; @@ -2910,8 +2523,6 @@ /** * A socket.io Encoder instance */ - - var Encoder = /*#__PURE__*/function () { /** * Encoder constructor @@ -2920,7 +2531,6 @@ */ function Encoder(replacer) { _classCallCheck(this, Encoder); - this.replacer = replacer; } /** @@ -2929,8 +2539,6 @@ * * @param {Object} obj - packet object */ - - _createClass(Encoder, [{ key: "encode", value: function encode(obj) { @@ -2944,39 +2552,33 @@ }); } } - return [this.encodeAsString(obj)]; } /** * Encode packet as string. */ - }, { key: "encodeAsString", value: function encodeAsString(obj) { // first is type - var str = "" + obj.type; // attachments if we have them - + var str = "" + obj.type; + // attachments if we have them if (obj.type === PacketType.BINARY_EVENT || obj.type === PacketType.BINARY_ACK) { str += obj.attachments + "-"; - } // if we have a namespace other than `/` + } + // if we have a namespace other than `/` // we append it followed by a comma `,` - - if (obj.nsp && "/" !== obj.nsp) { str += obj.nsp + ","; - } // immediately followed by the id - - + } + // immediately followed by the id if (null != obj.id) { str += obj.id; - } // json data - - + } + // json data if (null != obj.data) { str += JSON.stringify(obj.data, this.replacer); } - return str; } /** @@ -2984,7 +2586,6 @@ * deconstructing packet into object with placeholders and * a list of buffers. */ - }, { key: "encodeAsBinary", value: function encodeAsBinary(obj) { @@ -2992,14 +2593,12 @@ var pack = this.encodeAsString(deconstruction.packet); var buffers = deconstruction.buffers; buffers.unshift(pack); // add packet info to beginning of data list - return buffers; // write all the buffers } }]); - return Encoder; - }(); // see https://stackoverflow.com/questions/8511281/check-if-a-value-is-an-object-in-javascript - + }(); + // see https://stackoverflow.com/questions/8511281/check-if-a-value-is-an-object-in-javascript function isObject(value) { return Object.prototype.toString.call(value) === "[object Object]"; } @@ -3008,13 +2607,9 @@ * * @return {Object} decoder */ - - var Decoder = /*#__PURE__*/function (_Emitter) { _inherits(Decoder, _Emitter); - var _super = _createSuper(Decoder); - /** * Decoder constructor * @@ -3022,9 +2617,7 @@ */ function Decoder(reviver) { var _this; - _classCallCheck(this, Decoder); - _this = _super.call(this); _this.reviver = reviver; return _this; @@ -3034,26 +2627,21 @@ * * @param {String} obj - encoded packet */ - - _createClass(Decoder, [{ key: "add", value: function add(obj) { var packet; - if (typeof obj === "string") { if (this.reconstructor) { throw new Error("got plaintext data when reconstructing a packet"); } - packet = this.decodeString(obj); var isBinaryEvent = packet.type === PacketType.BINARY_EVENT; - if (isBinaryEvent || packet.type === PacketType.BINARY_ACK) { - packet.type = isBinaryEvent ? PacketType.EVENT : PacketType.ACK; // binary packet's json - - this.reconstructor = new BinaryReconstructor(packet); // no attachments, labeled binary but no binary data to follow - + packet.type = isBinaryEvent ? PacketType.EVENT : PacketType.ACK; + // binary packet's json + this.reconstructor = new BinaryReconstructor(packet); + // no attachments, labeled binary but no binary data to follow if (packet.attachments === 0) { _get(_getPrototypeOf(Decoder.prototype), "emitReserved", this).call(this, "decoded", packet); } @@ -3067,11 +2655,9 @@ throw new Error("got binary data when not reconstructing a packet"); } else { packet = this.reconstructor.takeBinaryData(obj); - if (packet) { // received final buffer this.reconstructor = null; - _get(_getPrototypeOf(Decoder.prototype), "emitReserved", this).call(this, "decoded", packet); } } @@ -3085,81 +2671,62 @@ * @param {String} str * @return {Object} packet */ - }, { key: "decodeString", value: function decodeString(str) { - var i = 0; // look up type - + var i = 0; + // look up type var p = { type: Number(str.charAt(0)) }; - if (PacketType[p.type] === undefined) { throw new Error("unknown packet type " + p.type); - } // look up attachments if type binary - - + } + // look up attachments if type binary if (p.type === PacketType.BINARY_EVENT || p.type === PacketType.BINARY_ACK) { var start = i + 1; - while (str.charAt(++i) !== "-" && i != str.length) {} - var buf = str.substring(start, i); - if (buf != Number(buf) || str.charAt(i) !== "-") { throw new Error("Illegal attachments"); } - p.attachments = Number(buf); - } // look up namespace (if any) - - + } + // look up namespace (if any) if ("/" === str.charAt(i + 1)) { var _start = i + 1; - while (++i) { var c = str.charAt(i); if ("," === c) break; if (i === str.length) break; } - p.nsp = str.substring(_start, i); } else { p.nsp = "/"; - } // look up id - - + } + // look up id var next = str.charAt(i + 1); - if ("" !== next && Number(next) == next) { var _start2 = i + 1; - while (++i) { var _c = str.charAt(i); - if (null == _c || Number(_c) != _c) { --i; break; } - if (i === str.length) break; } - p.id = Number(str.substring(_start2, i + 1)); - } // look up json data - - + } + // look up json data if (str.charAt(++i)) { var payload = this.tryParse(str.substr(i)); - if (Decoder.isPayloadValid(p.type, payload)) { p.data = payload; } else { throw new Error("invalid payload"); } } - return p; } }, { @@ -3189,24 +2756,19 @@ switch (type) { case PacketType.CONNECT: return isObject(payload); - case PacketType.DISCONNECT: return payload === undefined; - case PacketType.CONNECT_ERROR: return typeof payload === "string" || isObject(payload); - case PacketType.EVENT: case PacketType.BINARY_EVENT: return Array.isArray(payload) && (typeof payload[0] === "number" || typeof payload[0] === "string" && RESERVED_EVENTS$1.indexOf(payload[0]) === -1); - case PacketType.ACK: case PacketType.BINARY_ACK: return Array.isArray(payload); } } }]); - return Decoder; }(Emitter); /** @@ -3217,11 +2779,9 @@ * @param {Object} packet * @return {BinaryReconstructor} initialized reconstructor */ - var BinaryReconstructor = /*#__PURE__*/function () { function BinaryReconstructor(packet) { _classCallCheck(this, BinaryReconstructor); - this.packet = packet; this.buffers = []; this.reconPack = packet; @@ -3234,26 +2794,21 @@ * @return {null | Object} returns null if more binary data is expected or * a reconstructed packet object if all buffers have been received. */ - - _createClass(BinaryReconstructor, [{ key: "takeBinaryData", value: function takeBinaryData(binData) { this.buffers.push(binData); - if (this.buffers.length === this.reconPack.attachments) { // done with buffer list var packet = reconstructPacket(this.reconPack, this.buffers); this.finishedReconstruction(); return packet; } - return null; } /** * Cleans up binary packet reconstruction variables. */ - }, { key: "finishedReconstruction", value: function finishedReconstruction() { @@ -3261,7 +2816,6 @@ this.buffers = []; } }]); - return BinaryReconstructor; }(); @@ -3284,7 +2838,6 @@ * Internal events. * These events can't be emitted by the user. */ - var RESERVED_EVENTS = Object.freeze({ connect: 1, connect_error: 1, @@ -3318,20 +2871,15 @@ * console.log(`disconnected due to ${reason}`); * }); */ - var Socket = /*#__PURE__*/function (_Emitter) { _inherits(Socket, _Emitter); - var _super = _createSuper(Socket); - /** * `Socket` constructor. */ function Socket(io, nsp, opts) { var _this; - _classCallCheck(this, Socket); - _this = _super.call(this); /** * Whether the socket is currently connected to the server. @@ -3347,23 +2895,19 @@ * console.log(socket.connected); // false * }); */ - _this.connected = false; /** * Whether the connection state was recovered after a temporary disconnection. In that case, any missed packets will * be transmitted by the server. */ - _this.recovered = false; /** * Buffer for packets received before the CONNECT packet */ - _this.receiveBuffer = []; /** * Buffer for packets that will be sent once the socket is connected */ - _this.sendBuffer = []; /** * The queue of packets to be sent with retry in case of failure. @@ -3371,24 +2915,20 @@ * Packets are sent one by one, each waiting for the server acknowledgement, in order to guarantee the delivery order. * @private */ - _this._queue = []; /** * A sequence to generate the ID of the {@link QueuedPacket}. * @private */ - _this._queueSeq = 0; _this.ids = 0; _this.acks = {}; _this.flags = {}; _this.io = io; _this.nsp = nsp; - if (opts && opts.auth) { _this.auth = opts.auth; } - _this._opts = _extends({}, opts); if (_this.io._autoConnect) _this.open(); return _this; @@ -3407,8 +2947,6 @@ * console.log(socket.disconnected); // true * }); */ - - _createClass(Socket, [{ key: "disconnected", get: function get() { @@ -3419,7 +2957,6 @@ * * @private */ - }, { key: "subEvents", value: function subEvents() { @@ -3444,7 +2981,6 @@ * console.log(socket.active); // true * }); */ - }, { key: "active", get: function get() { @@ -3460,21 +2996,18 @@ * * socket.connect(); */ - }, { key: "connect", value: function connect() { if (this.connected) return this; this.subEvents(); if (!this.io["_reconnecting"]) this.io.open(); // ensure open - if ("open" === this.io._readyState) this.onopen(); return this; } /** * Alias for {@link connect()}. */ - }, { key: "open", value: function open() { @@ -3495,14 +3028,12 @@ * * @return self */ - }, { key: "send", value: function send() { for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { args[_key] = arguments[_key]; } - args.unshift("message"); this.emit.apply(this, args); return this; @@ -3524,94 +3055,73 @@ * * @return self */ - }, { key: "emit", value: function emit(ev) { if (RESERVED_EVENTS.hasOwnProperty(ev)) { throw new Error('"' + ev.toString() + '" is a reserved event name'); } - for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) { args[_key2 - 1] = arguments[_key2]; } - args.unshift(ev); - if (this._opts.retries && !this.flags.fromQueue && !this.flags["volatile"]) { this._addToQueue(args); - return this; } - var packet = { type: PacketType.EVENT, data: args }; packet.options = {}; - packet.options.compress = this.flags.compress !== false; // event ack callback - + packet.options.compress = this.flags.compress !== false; + // event ack callback if ("function" === typeof args[args.length - 1]) { var id = this.ids++; var ack = args.pop(); - this._registerAckCallback(id, ack); - packet.id = id; } - var isTransportWritable = this.io.engine && this.io.engine.transport && this.io.engine.transport.writable; var discardPacket = this.flags["volatile"] && (!isTransportWritable || !this.connected); - if (discardPacket) ; else if (this.connected) { this.notifyOutgoingListeners(packet); this.packet(packet); } else { this.sendBuffer.push(packet); } - this.flags = {}; return this; } /** * @private */ - }, { key: "_registerAckCallback", value: function _registerAckCallback(id, ack) { var _this2 = this; - var _a; - var timeout = (_a = this.flags.timeout) !== null && _a !== void 0 ? _a : this._opts.ackTimeout; - if (timeout === undefined) { this.acks[id] = ack; return; - } // @ts-ignore - - + } + // @ts-ignore var timer = this.io.setTimeoutFn(function () { delete _this2.acks[id]; - for (var i = 0; i < _this2.sendBuffer.length; i++) { if (_this2.sendBuffer[i].id === id) { _this2.sendBuffer.splice(i, 1); } } - ack.call(_this2, new Error("operation has timed out")); }, timeout); - this.acks[id] = function () { // @ts-ignore _this2.io.clearTimeoutFn(timer); - for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) { args[_key3] = arguments[_key3]; } - ack.apply(_this2, [null].concat(args)); }; } @@ -3631,16 +3141,13 @@ * * @return a Promise that will be fulfilled when the server acknowledges the event */ - }, { key: "emitWithAck", value: function emitWithAck(ev) { var _this3 = this; - for (var _len4 = arguments.length, args = new Array(_len4 > 1 ? _len4 - 1 : 0), _key4 = 1; _key4 < _len4; _key4++) { args[_key4 - 1] = arguments[_key4]; } - // the timeout flag is optional var withErr = this.flags.timeout !== undefined || this._opts.ackTimeout !== undefined; return new Promise(function (resolve, reject) { @@ -3651,7 +3158,6 @@ return resolve(arg1); } }); - _this3.emit.apply(_this3, [ev].concat(args)); }); } @@ -3660,18 +3166,14 @@ * @param args * @private */ - }, { key: "_addToQueue", value: function _addToQueue(args) { var _this4 = this; - var ack; - if (typeof args[args.length - 1] === "function") { ack = args.pop(); } - var packet = { id: this._queueSeq++, tryCount: 0, @@ -3686,35 +3188,27 @@ // the packet has already been acknowledged return; } - var hasError = err !== null; - if (hasError) { if (packet.tryCount > _this4._opts.retries) { _this4._queue.shift(); - if (ack) { ack(err); } } } else { _this4._queue.shift(); - if (ack) { for (var _len5 = arguments.length, responseArgs = new Array(_len5 > 1 ? _len5 - 1 : 0), _key5 = 1; _key5 < _len5; _key5++) { responseArgs[_key5 - 1] = arguments[_key5]; } - ack.apply(void 0, [null].concat(responseArgs)); } } - packet.pending = false; return _this4._drainQueue(); }); - this._queue.push(packet); - this._drainQueue(); } /** @@ -3723,22 +3217,17 @@ * * @private */ - }, { key: "_drainQueue", value: function _drainQueue() { var force = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; - if (!this.connected || this._queue.length === 0) { return; } - var packet = this._queue[0]; - if (packet.pending && !force) { return; } - packet.pending = true; packet.tryCount++; this.flags = packet.flags; @@ -3750,12 +3239,10 @@ * @param packet * @private */ - }, { key: "packet", value: function packet(_packet) { _packet.nsp = this.nsp; - this.io._packet(_packet); } /** @@ -3763,12 +3250,10 @@ * * @private */ - }, { key: "onopen", value: function onopen() { var _this5 = this; - if (typeof this.auth == "function") { this.auth(function (data) { _this5._sendConnectPacket(data); @@ -3783,7 +3268,6 @@ * @param data * @private */ - }, { key: "_sendConnectPacket", value: function _sendConnectPacket(data) { @@ -3801,7 +3285,6 @@ * @param err * @private */ - }, { key: "onerror", value: function onerror(err) { @@ -3816,7 +3299,6 @@ * @param description * @private */ - }, { key: "onclose", value: function onclose(reason, description) { @@ -3830,13 +3312,11 @@ * @param packet * @private */ - }, { key: "onpacket", value: function onpacket(packet) { var sameNamespace = packet.nsp === this.nsp; if (!sameNamespace) return; - switch (packet.type) { case PacketType.CONNECT: if (packet.data && packet.data.sid) { @@ -3844,27 +3324,22 @@ } else { this.emitReserved("connect_error", new Error("It seems you are trying to reach a Socket.IO server in v2.x with a v3.x client, but they are not compatible (more information here: https://socket.io/docs/v3/migrating-from-2-x-to-3-0/)")); } - break; - case PacketType.EVENT: case PacketType.BINARY_EVENT: this.onevent(packet); break; - case PacketType.ACK: case PacketType.BINARY_ACK: this.onack(packet); break; - case PacketType.DISCONNECT: this.ondisconnect(); break; - case PacketType.CONNECT_ERROR: this.destroy(); - var err = new Error(packet.data.message); // @ts-ignore - + var err = new Error(packet.data.message); + // @ts-ignore err.data = packet.data.data; this.emitReserved("connect_error", err); break; @@ -3876,16 +3351,13 @@ * @param packet * @private */ - }, { key: "onevent", value: function onevent(packet) { var args = packet.data || []; - if (null != packet.id) { args.push(this.ack(packet.id)); } - if (this.connected) { this.emitEvent(args); } else { @@ -3897,10 +3369,8 @@ value: function emitEvent(args) { if (this._anyListeners && this._anyListeners.length) { var listeners = this._anyListeners.slice(); - var _iterator = _createForOfIteratorHelper(listeners), - _step; - + _step; try { for (_iterator.s(); !(_step = _iterator.n()).done;) { var listener = _step.value; @@ -3912,9 +3382,7 @@ _iterator.f(); } } - _get(_getPrototypeOf(Socket.prototype), "emit", this).apply(this, args); - if (this._pid && args.length && typeof args[args.length - 1] === "string") { this._lastOffset = args[args.length - 1]; } @@ -3924,7 +3392,6 @@ * * @private */ - }, { key: "ack", value: function ack(id) { @@ -3934,11 +3401,9 @@ // prevent double callbacks if (sent) return; sent = true; - for (var _len6 = arguments.length, args = new Array(_len6), _key6 = 0; _key6 < _len6; _key6++) { args[_key6] = arguments[_key6]; } - self.packet({ type: PacketType.ACK, id: id, @@ -3952,12 +3417,10 @@ * @param packet * @private */ - }, { key: "onack", value: function onack(packet) { var ack = this.acks[packet.id]; - if ("function" === typeof ack) { ack.apply(this, packet.data); delete this.acks[packet.id]; @@ -3968,18 +3431,15 @@ * * @private */ - }, { key: "onconnect", value: function onconnect(id, pid) { this.id = id; this.recovered = pid && this._pid === pid; this._pid = pid; // defined only if connection state recovery is enabled - this.connected = true; this.emitBuffered(); this.emitReserved("connect"); - this._drainQueue(true); } /** @@ -3987,19 +3447,16 @@ * * @private */ - }, { key: "emitBuffered", value: function emitBuffered() { var _this6 = this; - this.receiveBuffer.forEach(function (args) { return _this6.emitEvent(args); }); this.receiveBuffer = []; this.sendBuffer.forEach(function (packet) { _this6.notifyOutgoingListeners(packet); - _this6.packet(packet); }); this.sendBuffer = []; @@ -4009,7 +3466,6 @@ * * @private */ - }, { key: "ondisconnect", value: function ondisconnect() { @@ -4023,7 +3479,6 @@ * * @private */ - }, { key: "destroy", value: function destroy() { @@ -4034,7 +3489,6 @@ }); this.subs = undefined; } - this.io["_destroy"](this); } /** @@ -4053,7 +3507,6 @@ * * @return self */ - }, { key: "disconnect", value: function disconnect() { @@ -4061,16 +3514,13 @@ this.packet({ type: PacketType.DISCONNECT }); - } // remove socket from pool - - + } + // remove socket from pool this.destroy(); - if (this.connected) { // fire events this.onclose("io client disconnect"); } - return this; } /** @@ -4078,7 +3528,6 @@ * * @return self */ - }, { key: "close", value: function close() { @@ -4093,7 +3542,6 @@ * @param compress - if `true`, compresses the sending data * @return self */ - }, { key: "compress", value: function compress(_compress) { @@ -4109,7 +3557,6 @@ * * @returns self */ - }, { key: "volatile", get: function get() { @@ -4129,7 +3576,6 @@ * * @returns self */ - }, { key: "timeout", value: function timeout(_timeout) { @@ -4147,14 +3593,11 @@ * * @param listener */ - }, { key: "onAny", value: function onAny(listener) { this._anyListeners = this._anyListeners || []; - this._anyListeners.push(listener); - return this; } /** @@ -4168,14 +3611,11 @@ * * @param listener */ - }, { key: "prependAny", value: function prependAny(listener) { this._anyListeners = this._anyListeners || []; - this._anyListeners.unshift(listener); - return this; } /** @@ -4196,17 +3636,14 @@ * * @param listener */ - }, { key: "offAny", value: function offAny(listener) { if (!this._anyListeners) { return this; } - if (listener) { var listeners = this._anyListeners; - for (var i = 0; i < listeners.length; i++) { if (listener === listeners[i]) { listeners.splice(i, 1); @@ -4216,14 +3653,12 @@ } else { this._anyListeners = []; } - return this; } /** * Returns an array of listeners that are listening for any event that is specified. This array can be manipulated, * e.g. to remove listeners. */ - }, { key: "listenersAny", value: function listenersAny() { @@ -4242,14 +3677,11 @@ * * @param listener */ - }, { key: "onAnyOutgoing", value: function onAnyOutgoing(listener) { this._anyOutgoingListeners = this._anyOutgoingListeners || []; - this._anyOutgoingListeners.push(listener); - return this; } /** @@ -4265,14 +3697,11 @@ * * @param listener */ - }, { key: "prependAnyOutgoing", value: function prependAnyOutgoing(listener) { this._anyOutgoingListeners = this._anyOutgoingListeners || []; - this._anyOutgoingListeners.unshift(listener); - return this; } /** @@ -4293,17 +3722,14 @@ * * @param [listener] - the catch-all listener (optional) */ - }, { key: "offAnyOutgoing", value: function offAnyOutgoing(listener) { if (!this._anyOutgoingListeners) { return this; } - if (listener) { var listeners = this._anyOutgoingListeners; - for (var i = 0; i < listeners.length; i++) { if (listener === listeners[i]) { listeners.splice(i, 1); @@ -4313,14 +3739,12 @@ } else { this._anyOutgoingListeners = []; } - return this; } /** * Returns an array of listeners that are listening for any event that is specified. This array can be manipulated, * e.g. to remove listeners. */ - }, { key: "listenersAnyOutgoing", value: function listenersAnyOutgoing() { @@ -4333,16 +3757,13 @@ * * @private */ - }, { key: "notifyOutgoingListeners", value: function notifyOutgoingListeners(packet) { if (this._anyOutgoingListeners && this._anyOutgoingListeners.length) { var listeners = this._anyOutgoingListeners.slice(); - var _iterator2 = _createForOfIteratorHelper(listeners), - _step2; - + _step2; try { for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) { var listener = _step2.value; @@ -4356,7 +3777,6 @@ } } }]); - return Socket; }(Emitter); @@ -4385,16 +3805,13 @@ * @return {Number} * @api public */ - Backoff.prototype.duration = function () { var ms = this.ms * Math.pow(this.factor, this.attempts++); - if (this.jitter) { var rand = Math.random(); var deviation = Math.floor(rand * this.jitter * ms); ms = (Math.floor(rand * 10) & 1) == 0 ? ms - deviation : ms + deviation; } - return Math.min(ms, this.max) | 0; }; /** @@ -4402,8 +3819,6 @@ * * @api public */ - - Backoff.prototype.reset = function () { this.attempts = 0; }; @@ -4412,8 +3827,6 @@ * * @api public */ - - Backoff.prototype.setMin = function (min) { this.ms = min; }; @@ -4422,8 +3835,6 @@ * * @api public */ - - Backoff.prototype.setMax = function (max) { this.max = max; }; @@ -4432,68 +3843,48 @@ * * @api public */ - - Backoff.prototype.setJitter = function (jitter) { this.jitter = jitter; }; var Manager = /*#__PURE__*/function (_Emitter) { _inherits(Manager, _Emitter); - var _super = _createSuper(Manager); - function Manager(uri, opts) { var _this; - _classCallCheck(this, Manager); - var _a; - _this = _super.call(this); _this.nsps = {}; _this.subs = []; - if (uri && "object" === _typeof(uri)) { opts = uri; uri = undefined; } - opts = opts || {}; opts.path = opts.path || "/socket.io"; _this.opts = opts; installTimerFunctions(_assertThisInitialized(_this), opts); - _this.reconnection(opts.reconnection !== false); - _this.reconnectionAttempts(opts.reconnectionAttempts || Infinity); - _this.reconnectionDelay(opts.reconnectionDelay || 1000); - _this.reconnectionDelayMax(opts.reconnectionDelayMax || 5000); - _this.randomizationFactor((_a = opts.randomizationFactor) !== null && _a !== void 0 ? _a : 0.5); - _this.backoff = new Backoff({ min: _this.reconnectionDelay(), max: _this.reconnectionDelayMax(), jitter: _this.randomizationFactor() }); - _this.timeout(null == opts.timeout ? 20000 : opts.timeout); - _this._readyState = "closed"; _this.uri = uri; - var _parser = opts.parser || parser; - _this.encoder = new _parser.Encoder(); _this.decoder = new _parser.Decoder(); _this._autoConnect = opts.autoConnect !== false; if (_this._autoConnect) _this.open(); return _this; } - _createClass(Manager, [{ key: "reconnection", value: function reconnection(v) { @@ -4512,7 +3903,6 @@ key: "reconnectionDelay", value: function reconnectionDelay(v) { var _a; - if (v === undefined) return this._reconnectionDelay; this._reconnectionDelay = v; (_a = this.backoff) === null || _a === void 0 ? void 0 : _a.setMin(v); @@ -4522,7 +3912,6 @@ key: "randomizationFactor", value: function randomizationFactor(v) { var _a; - if (v === undefined) return this._randomizationFactor; this._randomizationFactor = v; (_a = this.backoff) === null || _a === void 0 ? void 0 : _a.setJitter(v); @@ -4532,7 +3921,6 @@ key: "reconnectionDelayMax", value: function reconnectionDelayMax(v) { var _a; - if (v === undefined) return this._reconnectionDelayMax; this._reconnectionDelayMax = v; (_a = this.backoff) === null || _a === void 0 ? void 0 : _a.setMax(v); @@ -4551,7 +3939,6 @@ * * @private */ - }, { key: "maybeReconnectOnOpen", value: function maybeReconnectOnOpen() { @@ -4568,60 +3955,49 @@ * @return self * @public */ - }, { key: "open", value: function open(fn) { var _this2 = this; - if (~this._readyState.indexOf("open")) return this; this.engine = new Socket$1(this.uri, this.opts); var socket = this.engine; var self = this; this._readyState = "opening"; - this.skipReconnect = false; // emit `open` - + this.skipReconnect = false; + // emit `open` var openSubDestroy = on(socket, "open", function () { self.onopen(); fn && fn(); }); - var onError = function onError(err) { _this2.cleanup(); - _this2._readyState = "closed"; - _this2.emitReserved("error", err); - if (fn) { fn(err); } else { // Only do this if there is no fn to handle the error _this2.maybeReconnectOnOpen(); } - }; // emit `error` - - + }; + // emit `error` var errorSub = on(socket, "error", onError); - if (false !== this._timeout) { - var timeout = this._timeout; // set timer - + var timeout = this._timeout; + // set timer var timer = this.setTimeoutFn(function () { openSubDestroy(); onError(new Error("timeout")); socket.close(); }, timeout); - if (this.opts.autoUnref) { timer.unref(); } - this.subs.push(function () { _this2.clearTimeoutFn(timer); }); } - this.subs.push(openSubDestroy); this.subs.push(errorSub); return this; @@ -4632,7 +4008,6 @@ * @return self * @public */ - }, { key: "connect", value: function connect(fn) { @@ -4643,16 +4018,15 @@ * * @private */ - }, { key: "onopen", value: function onopen() { // clear old subs - this.cleanup(); // mark as open - + this.cleanup(); + // mark as open this._readyState = "open"; - this.emitReserved("open"); // add new subs - + this.emitReserved("open"); + // add new subs var socket = this.engine; 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))); } @@ -4661,7 +4035,6 @@ * * @private */ - }, { key: "onping", value: function onping() { @@ -4672,7 +4045,6 @@ * * @private */ - }, { key: "ondata", value: function ondata(data) { @@ -4687,12 +4059,10 @@ * * @private */ - }, { key: "ondecoded", value: function ondecoded(packet) { var _this3 = this; - // the nextTick call prevents an exception in a user-provided event listener from triggering a disconnection due to a "parse error" nextTick(function () { _this3.emitReserved("packet", packet); @@ -4703,7 +4073,6 @@ * * @private */ - }, { key: "onerror", value: function onerror(err) { @@ -4715,19 +4084,16 @@ * @return {Socket} * @public */ - }, { key: "socket", value: function socket(nsp, opts) { var socket = this.nsps[nsp]; - if (!socket) { socket = new Socket(this, nsp, opts); this.nsps[nsp] = socket; } else if (this._autoConnect && !socket.active) { socket.connect(); } - return socket; } /** @@ -4736,21 +4102,17 @@ * @param socket * @private */ - }, { key: "_destroy", value: function _destroy(socket) { var nsps = Object.keys(this.nsps); - for (var _i = 0, _nsps = nsps; _i < _nsps.length; _i++) { var nsp = _nsps[_i]; var _socket = this.nsps[nsp]; - if (_socket.active) { return; } } - this._close(); } /** @@ -4759,12 +4121,10 @@ * @param packet * @private */ - }, { key: "_packet", value: function _packet(packet) { var encodedPackets = this.encoder.encode(packet); - for (var i = 0; i < encodedPackets.length; i++) { this.engine.write(encodedPackets[i], packet.options); } @@ -4774,7 +4134,6 @@ * * @private */ - }, { key: "cleanup", value: function cleanup() { @@ -4789,7 +4148,6 @@ * * @private */ - }, { key: "_close", value: function _close() { @@ -4803,7 +4161,6 @@ * * @private */ - }, { key: "disconnect", value: function disconnect() { @@ -4814,7 +4171,6 @@ * * @private */ - }, { key: "onclose", value: function onclose(reason, description) { @@ -4822,7 +4178,6 @@ this.backoff.reset(); this._readyState = "closed"; this.emitReserved("close", reason, description); - if (this._reconnection && !this.skipReconnect) { this.reconnect(); } @@ -4832,15 +4187,12 @@ * * @private */ - }, { key: "reconnect", value: function reconnect() { var _this4 = this; - if (this._reconnecting || this.skipReconnect) return this; var self = this; - if (this.backoff.attempts >= this._reconnectionAttempts) { this.backoff.reset(); this.emitReserved("reconnect_failed"); @@ -4850,27 +4202,22 @@ this._reconnecting = true; var timer = this.setTimeoutFn(function () { if (self.skipReconnect) return; - - _this4.emitReserved("reconnect_attempt", self.backoff.attempts); // check again for the case socket closed in above events - - + _this4.emitReserved("reconnect_attempt", self.backoff.attempts); + // check again for the case socket closed in above events if (self.skipReconnect) return; self.open(function (err) { if (err) { self._reconnecting = false; self.reconnect(); - _this4.emitReserved("reconnect_error", err); } else { self.onreconnect(); } }); }, delay); - if (this.opts.autoUnref) { timer.unref(); } - this.subs.push(function () { _this4.clearTimeoutFn(timer); }); @@ -4881,7 +4228,6 @@ * * @private */ - }, { key: "onreconnect", value: function onreconnect() { @@ -4891,22 +4237,18 @@ this.emitReserved("reconnect", attempt); } }]); - return Manager; }(Emitter); /** * Managers cache. */ - var cache = {}; - function lookup(uri, opts) { if (_typeof(uri) === "object") { opts = uri; uri = undefined; } - opts = opts || {}; var parsed = url(uri, opts.path || "/socket.io"); var source = parsed.source; @@ -4915,26 +4257,21 @@ var sameNamespace = cache[id] && path in cache[id]["nsps"]; var newConnection = opts.forceNew || opts["force new connection"] || false === opts.multiplex || sameNamespace; var io; - if (newConnection) { io = new Manager(source, opts); } else { if (!cache[id]) { cache[id] = new Manager(source, opts); } - io = cache[id]; } - if (parsed.query && !opts.query) { opts.query = parsed.queryKey; } - return io.socket(parsed.path, opts); - } // so that "lookup" can be used both as a function (e.g. `io(...)`) and as a + } + // so that "lookup" can be used both as a function (e.g. `io(...)`) and as a // namespace (e.g. `io.connect(...)`), for backward compatibility - - _extends(lookup, { Manager: Manager, Socket: Socket, diff --git a/dist/socket.io.js.map b/dist/socket.io.js.map index 8434dbda..37bfeaba 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-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 +{"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/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\n .then(() => {\n this.onClose();\n })\n .catch((err) => {\n this.onError(\"webtransport error\", err);\n });\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\n .read()\n .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 .catch((err) => {\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: false,\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, {\n query,\n socket: this,\n hostname: this.hostname,\n secure: this.secure,\n port: this.port,\n }, this.opts.transportOptions[name]);\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","_ref","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","_len","attr","_key","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","_Error","_inherits","_super","_createSuper","reason","description","context","_this","_classCallCheck","_createClass","_wrapNativeSuper","Error","Transport","_Emitter","_super2","_this2","writable","_assertThisInitialized","query","socket","value","onError","_get","_getPrototypeOf","open","readyState","doOpen","close","doClose","onClose","send","write","onOpen","onData","onPacket","details","pause","onPause","createUri","schema","undefined","_hostname","_port","path","_query","hostname","indexOf","port","secure","Number","encodedQuery","alphabet","map","seed","prev","num","floor","yeast","now","Date","XMLHttpRequest","err","hasCORS","XHR","xdomain","e","concat","createCookieJar","empty","hasXHR2","xhr","responseType","Polling","_Transport","polling","location","isSSL","xd","forceBase64","withCredentials","cookieJar","get","poll","total","doPoll","_this3","_this4","_this5","doWrite","uri","timestampRequests","timestampParam","sid","b64","request","_extends","Request","_this6","req","method","xhrStatus","_this7","pollXhr","_this8","_this9","_a","extraHeaders","setDisableHeaderCheck","setRequestHeader","addCookies","requestTimeout","timeout","onreadystatechange","parseCookies","status","onLoad","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","_loop","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","_typeof","prevBufferLen","agent","upgrade","rememberUpgrade","addTrailingSlash","rejectUnauthorized","perMessageDeflate","threshold","closeOnBeforeunload","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","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","add","reconstructor","decodeString","isBinaryEvent","BinaryReconstructor","takeBinaryData","start","buf","next","payload","tryParse","substr","isPayloadValid","destroy","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","subEvents","subs","onpacket","_readyState","_len2","_key2","retries","fromQueue","_addToQueue","ack","pop","_registerAckCallback","isTransportWritable","engine","discardPacket","notifyOutgoingListeners","ackTimeout","timer","_len3","_key3","emitWithAck","_len4","_key4","withErr","reject","arg1","arg2","tryCount","pending","hasError","_len5","responseArgs","_key5","_drainQueue","force","_packet","_sendConnectPacket","_pid","pid","offset","_lastOffset","sameNamespace","onconnect","onevent","onack","ondisconnect","message","emitEvent","_anyListeners","_iterator","_createForOfIteratorHelper","_step","s","n","listener","f","sent","_len6","_key6","emitBuffered","onAny","prependAny","offAny","listenersAny","onAnyOutgoing","_anyOutgoingListeners","prependAnyOutgoing","offAnyOutgoing","listenersAnyOutgoing","_iterator2","_step2","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","maybeReconnectOnOpen","_reconnecting","reconnect","Engine","skipReconnect","openSubDestroy","errorSub","onping","ondata","ondecoded","active","_destroy","_i","_nsps","_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 4bd0ea7a..21f0cfa0 100644 --- a/dist/socket.io.min.js +++ b/dist/socket.io.min.js @@ -1,7 +1,7 @@ /*! - * Socket.IO v4.7.0 + * Socket.IO v4.7.1 * (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}));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})); +!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 v=Object.create(null);v.open="0",v.close="1",v.ping="2",v.pong="3",v.message="4",v.upgrade="5",v.noop="6";var g=Object.create(null);Object.keys(v).forEach((function(t){g[v[t]]=t}));var m,b={type:"error",data:"parser error"},k="function"==typeof Blob||"undefined"!=typeof Blob&&"[object BlobConstructor]"===Object.prototype.toString.call(Blob),w="function"==typeof ArrayBuffer,_=function(t){return"function"==typeof ArrayBuffer.isView?ArrayBuffer.isView(t):t&&t.buffer instanceof ArrayBuffer},O=function(t,e,n){var r=t.type,i=t.data;return k&&i instanceof Blob?e?n(i):A(i,n):w&&(i instanceof ArrayBuffer||_(i))?e?n(i):A(new Blob([i]),n):n(v[r]+(i||""))},A=function(t,e){var n=new FileReader;return n.onload=function(){var t=n.result.split(",")[1];e("b"+(t||""))},n.readAsDataURL(t)};function E(t){return t instanceof Uint8Array?t:t instanceof ArrayBuffer?new Uint8Array(t):new Uint8Array(t.buffer,t.byteOffset,t.byteLength)}for(var R="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",T="undefined"==typeof Uint8Array?[]:new Uint8Array(256),C=0;C<64;C++)T[R.charCodeAt(C)]=C;var B,S="function"==typeof ArrayBuffer,N=function(t,e){if("string"!=typeof t)return{type:"message",data:x(t,e)};var n=t.charAt(0);return"b"===n?{type:"message",data:L(t.substring(1),e)}:g[n]?t.length>1?{type:g[n],data:t.substring(1)}:{type:g[n]}:b},L=function(t,e){if(S){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 x(n,e)}return{base64:!0,data:t}},x=function(t,e){return"blob"===e?t instanceof Blob?t:new Blob([t]):t instanceof ArrayBuffer?t:t.buffer},P=String.fromCharCode(30);function j(t){if(t)return function(t){for(var e in j.prototype)t[e]=j.prototype[e];return t}(t)}j.prototype.on=j.prototype.addEventListener=function(t,e){return this._callbacks=this._callbacks||{},(this._callbacks["$"+t]=this._callbacks["$"+t]||[]).push(e),this},j.prototype.once=function(t,e){function n(){this.off(t,n),e.apply(this,arguments)}return n.fn=e,this.on(t,n),this},j.prototype.off=j.prototype.removeListener=j.prototype.removeAllListeners=j.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}(j),K="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-_".split(""),Y=64,W={},z=0,J=0;function $(t){var e="";do{e=K[t%Y]+e,t=Math.floor(t/Y)}while(t>0);return e}function Q(){var t=$(+new Date);return t!==M?(z=0,M=t):t+"."+$(z++)}for(;J0&&void 0!==arguments[0]?arguments[0]:{};return i(t,{xd:this.xd,cookieJar:this.cookieJar},this.opts),new rt(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}(H),rt=function(t){o(i,t);var n=l(i);function i(t,r){var o;return e(this,i),U(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=I(this.opts,"agent","pfx","key","passphrase","cert","ca","ciphers","rejectUnauthorized","autoUnref");n.xdomain=!!this.opts.xd;var r=this.xhr=new Z(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=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}(j);if(rt.requestsCount=0,rt.requests={},"undefined"!=typeof document)if("function"==typeof attachEvent)attachEvent("onunload",it);else if("function"==typeof addEventListener){addEventListener("onpagehide"in q?"pagehide":"unload",it,!1)}function it(){for(var t in rt.requests)rt.requests.hasOwnProperty(t)&&rt.requests[t].abort()}var ot="function"==typeof Promise&&"function"==typeof Promise.resolve?function(t){return Promise.resolve().then(t)}:function(t,e){return e(t,0)},st=q.WebSocket||q.MozWebSocket,at="undefined"!=typeof navigator&&"string"==typeof navigator.product&&"reactnative"===navigator.product.toLowerCase(),ct=function(t){o(i,t);var n=l(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=at?{}: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=at?new st(t,e,n):e?new st(t,e):new st(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(){var n=t[r],i=r===t.length-1;O(n,e.supportsBinary,(function(t){try{e.ws.send(t)}catch(t){}i&&ot((function(){e.writable=!0,e.emitReserved("drain")}),e.setTimeoutFn)}))},r=0;r54;return N(r?t:B.decode(t),n)}(o,n,"arraybuffer")),n=!1):n=!0,e())})).catch((function(t){}))}();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(){var n=t[r],i=r===t.length-1;!function(t,e){k&&t.data instanceof Blob?t.data.arrayBuffer().then(E).then(e):w&&(t.data instanceof ArrayBuffer||_(t.data))?e(E(t.data)):O(t,!1,(function(t){m||(m=new TextEncoder),e(m.encode(t))}))}(n,(function(t){(function(t,e){return"message"===t.type&&"string"!=typeof t.data&&e[0]>=48&&e[0]<=54})(n,t)&&e.writer.write(Uint8Array.of(54)),e.writer.write(t).then((function(){i&&ot((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=pt(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=pt(o.host).host),U(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:!1},o),r.opts.path=r.opts.path.replace(/\/$/,"")+(r.opts.addTrailingSlash?"/":""),"string"==typeof r.opts.query&&(r.opts.query=function(t){for(var e={},n=t.split("&"),r=0,i=n.length;r1))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 i=arguments.length,o=new Array(i>1?i-1:0),s=1;s0&&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:Rt.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 Rt.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 Rt.EVENT:case Rt.BINARY_EVENT:this.onevent(t);break;case Rt.ACK:case Rt.BINARY_ACK:this.onack(t);break;case Rt.DISCONNECT:this.ondisconnect();break;case Rt.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=y(this._anyListeners.slice());try{for(n.s();!(e=n.n()).done;){e.value.apply(this,t)}}catch(t){n.e(t)}finally{n.f()}}p(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}qt.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)},qt.prototype.reset=function(){this.attempts=0},qt.prototype.setMin=function(t){this.ms=t},qt.prototype.setMax=function(t){this.max=t},qt.prototype.setJitter=function(t){this.jitter=t};var It=function(n){o(s,n);var i=l(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,U(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 qt({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||Lt;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 dt(this.uri,this.opts);var n=this.engine,r=this;this._readyState="opening",this.skipReconnect=!1;var i=xt(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=xt(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(xt(t,"ping",this.onping.bind(this)),xt(t,"data",this.ondata.bind(this)),xt(t,"error",this.onerror.bind(this)),xt(t,"close",this.onclose.bind(this)),xt(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;ot((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 jt(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}(j),Dt={};function Ft(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=pt(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=Dt[s]&&a in Dt[s].nsps;return n.forceNew||n["force new connection"]||!1===n.multiplex||c?r=new It(o,n):(Dt[s]||(Dt[s]=new It(o,n)),r=Dt[s]),i.query&&!n.query&&(n.query=i.queryKey),r.socket(i.path,n)}return i(Ft,{Manager:It,Socket:jt,io:Ft,connect:Ft}),Ft})); //# sourceMappingURL=socket.io.min.js.map diff --git a/dist/socket.io.min.js.map b/dist/socket.io.min.js.map index f9b6f96e..0c5f84c9 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-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 +{"version":3,"file":"socket.io.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/index.js","../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/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/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","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/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}\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\n .then(() => {\n this.onClose();\n })\n .catch((err) => {\n this.onError(\"webtransport error\", err);\n });\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\n .read()\n .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 .catch((err) => {\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: false,\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, {\n query,\n socket: this,\n hostname: this.hostname,\n secure: this.secure,\n port: this.port,\n }, this.opts.transportOptions[name]);\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","_ref","supportsBinary","callback","encodeBlobAsBase64","fileReader","FileReader","onload","content","result","split","readAsDataURL","toArray","Uint8Array","byteOffset","byteLength","chars","lookup","i","charCodeAt","TEXT_DECODER","decodePacket","encodedPacket","binaryType","mapBinary","charAt","decodeBase64Packet","substring","length","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","_Error","_inherits","_super","_createSuper","reason","description","context","_this","_classCallCheck","_createClass","_wrapNativeSuper","Error","Transport","_Emitter","_super2","_this2","writable","_assertThisInitialized","query","socket","value","_get","_getPrototypeOf","readyState","doOpen","doClose","onClose","packets","write","packet","onPacket","details","onPause","schema","undefined","_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","_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","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","_typeof","prevBufferLen","agent","upgrade","rememberUpgrade","addTrailingSlash","rejectUnauthorized","perMessageDeflate","threshold","closeOnBeforeunload","qs","qry","pairs","l","pair","decodeURIComponent","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","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","notifyOutgoingListeners","ackTimeout","timer","_len3","_key3","_len4","_key4","withErr","reject","arg1","arg2","tryCount","pending","_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":";;;;;6lJAAA,IAAMA,EAAeC,OAAOC,OAAO,MACnCF,EAAmB,KAAI,IACvBA,EAAoB,MAAI,IACxBA,EAAmB,KAAI,IACvBA,EAAmB,KAAI,IACvBA,EAAsB,QAAI,IAC1BA,EAAsB,QAAI,IAC1BA,EAAmB,KAAI,IACvB,IAAMG,EAAuBF,OAAOC,OAAO,MAC3CD,OAAOG,KAAKJ,GAAcK,SAAQ,SAAAC,GAC9BH,EAAqBH,EAAaM,IAAQA,CAC9C,IACA,ICuCIC,EDvCEC,EAAe,CAAEC,KAAM,QAASC,KAAM,gBCXtCC,EAAiC,mBAATC,MACT,oBAATA,MACqC,6BAAzCX,OAAOY,UAAUC,SAASC,KAAKH,MACjCI,EAA+C,mBAAhBC,YAE/BC,EAAS,SAAAC,GACX,MAAqC,mBAAvBF,YAAYC,OACpBD,YAAYC,OAAOC,GACnBA,GAAOA,EAAIC,kBAAkBH,WACvC,EACMI,EAAe,SAAHC,EAAoBC,EAAgBC,GAAa,IAA3Cf,EAAIa,EAAJb,KAAMC,EAAIY,EAAJZ,KAC1B,OAAIC,GAAkBD,aAAgBE,KAC9BW,EACOC,EAASd,GAGTe,EAAmBf,EAAMc,GAG/BR,IACJN,aAAgBO,aAAeC,EAAOR,IACnCa,EACOC,EAASd,GAGTe,EAAmB,IAAIb,KAAK,CAACF,IAAQc,GAI7CA,EAASxB,EAAaS,IAASC,GAAQ,IAClD,EACMe,EAAqB,SAACf,EAAMc,GAC9B,IAAME,EAAa,IAAIC,WAKvB,OAJAD,EAAWE,OAAS,WAChB,IAAMC,EAAUH,EAAWI,OAAOC,MAAM,KAAK,GAC7CP,EAAS,KAAOK,GAAW,MAExBH,EAAWM,cAActB,EACpC,EACA,SAASuB,EAAQvB,GACb,OAAIA,aAAgBwB,WACTxB,EAEFA,aAAgBO,YACd,IAAIiB,WAAWxB,GAGf,IAAIwB,WAAWxB,EAAKU,OAAQV,EAAKyB,WAAYzB,EAAK0B,WAEjE,CC9CA,IAHA,IAAMC,EAAQ,mEAERC,EAA+B,oBAAfJ,WAA6B,GAAK,IAAIA,WAAW,KAC9DK,EAAI,EAAGA,EAAIF,GAAcE,IAC9BD,EAAOD,EAAMG,WAAWD,IAAMA,EAkB3B,ICOHE,EC5BEzB,EAA+C,mBAAhBC,YACxByB,EAAe,SAACC,EAAeC,GACxC,GAA6B,iBAAlBD,EACP,MAAO,CACHlC,KAAM,UACNC,KAAMmC,EAAUF,EAAeC,IAGvC,IAAMnC,EAAOkC,EAAcG,OAAO,GAClC,MAAa,MAATrC,EACO,CACHA,KAAM,UACNC,KAAMqC,EAAmBJ,EAAcK,UAAU,GAAIJ,IAG1CzC,EAAqBM,GAIjCkC,EAAcM,OAAS,EACxB,CACExC,KAAMN,EAAqBM,GAC3BC,KAAMiC,EAAcK,UAAU,IAEhC,CACEvC,KAAMN,EAAqBM,IARxBD,CAUf,EACMuC,EAAqB,SAACrC,EAAMkC,GAC9B,GAAI5B,EAAuB,CACvB,IAAMkC,EFTQ,SAACC,GACnB,IAA8DZ,EAAUa,EAAUC,EAAUC,EAAUC,EAAlGC,EAA+B,IAAhBL,EAAOF,OAAeQ,EAAMN,EAAOF,OAAWS,EAAI,EACnC,MAA9BP,EAAOA,EAAOF,OAAS,KACvBO,IACkC,MAA9BL,EAAOA,EAAOF,OAAS,IACvBO,KAGR,IAAMG,EAAc,IAAI1C,YAAYuC,GAAeI,EAAQ,IAAI1B,WAAWyB,GAC1E,IAAKpB,EAAI,EAAGA,EAAIkB,EAAKlB,GAAK,EACtBa,EAAWd,EAAOa,EAAOX,WAAWD,IACpCc,EAAWf,EAAOa,EAAOX,WAAWD,EAAI,IACxCe,EAAWhB,EAAOa,EAAOX,WAAWD,EAAI,IACxCgB,EAAWjB,EAAOa,EAAOX,WAAWD,EAAI,IACxCqB,EAAMF,KAAQN,GAAY,EAAMC,GAAY,EAC5CO,EAAMF,MAAoB,GAAXL,IAAkB,EAAMC,GAAY,EACnDM,EAAMF,MAAoB,EAAXJ,IAAiB,EAAiB,GAAXC,EAE1C,OAAOI,CACX,CEVwBE,CAAOnD,GACvB,OAAOmC,EAAUK,EAASN,EAC9B,CAEI,MAAO,CAAEO,QAAQ,EAAMzC,KAAAA,EAE/B,EACMmC,EAAY,SAACnC,EAAMkC,GACrB,MACS,SADDA,EAEIlC,aAAgBE,KAETF,EAIA,IAAIE,KAAK,CAACF,IAIjBA,aAAgBO,YAETP,EAIAA,EAAKU,MAG5B,ED3DM0C,EAAYC,OAAOC,aAAa,IEI/B,SAASC,EAAQ9C,GACtB,GAAIA,EAAK,OAWX,SAAeA,GACb,IAAK,IAAIb,KAAO2D,EAAQpD,UACtBM,EAAIb,GAAO2D,EAAQpD,UAAUP,GAE/B,OAAOa,CACT,CAhBkB+C,CAAM/C,EACxB,CA0BA8C,EAAQpD,UAAUsD,GAClBF,EAAQpD,UAAUuD,iBAAmB,SAASC,EAAOC,GAInD,OAHAC,KAAKC,WAAaD,KAAKC,YAAc,CAAA,GACpCD,KAAKC,WAAW,IAAMH,GAASE,KAAKC,WAAW,IAAMH,IAAU,IAC7DI,KAAKH,GACDC,IACT,EAYAN,EAAQpD,UAAU6D,KAAO,SAASL,EAAOC,GACvC,SAASH,IACPI,KAAKI,IAAIN,EAAOF,GAChBG,EAAGM,MAAML,KAAMM,UACjB,CAIA,OAFAV,EAAGG,GAAKA,EACRC,KAAKJ,GAAGE,EAAOF,GACRI,IACT,EAYAN,EAAQpD,UAAU8D,IAClBV,EAAQpD,UAAUiE,eAClBb,EAAQpD,UAAUkE,mBAClBd,EAAQpD,UAAUmE,oBAAsB,SAASX,EAAOC,GAItD,GAHAC,KAAKC,WAAaD,KAAKC,YAAc,CAAA,EAGjC,GAAKK,UAAU5B,OAEjB,OADAsB,KAAKC,WAAa,GACXD,KAIT,IAUIU,EAVAC,EAAYX,KAAKC,WAAW,IAAMH,GACtC,IAAKa,EAAW,OAAOX,KAGvB,GAAI,GAAKM,UAAU5B,OAEjB,cADOsB,KAAKC,WAAW,IAAMH,GACtBE,KAKT,IAAK,IAAIhC,EAAI,EAAGA,EAAI2C,EAAUjC,OAAQV,IAEpC,IADA0C,EAAKC,EAAU3C,MACJ+B,GAAMW,EAAGX,KAAOA,EAAI,CAC7BY,EAAUC,OAAO5C,EAAG,GACpB,KACF,CASF,OAJyB,IAArB2C,EAAUjC,eACLsB,KAAKC,WAAW,IAAMH,GAGxBE,IACT,EAUAN,EAAQpD,UAAUuE,KAAO,SAASf,GAChCE,KAAKC,WAAaD,KAAKC,YAAc,CAAA,EAKrC,IAHA,IAAIa,EAAO,IAAIC,MAAMT,UAAU5B,OAAS,GACpCiC,EAAYX,KAAKC,WAAW,IAAMH,GAE7B9B,EAAI,EAAGA,EAAIsC,UAAU5B,OAAQV,IACpC8C,EAAK9C,EAAI,GAAKsC,UAAUtC,GAG1B,GAAI2C,EAEG,CAAI3C,EAAI,EAAb,IAAK,IAAWkB,GADhByB,EAAYA,EAAUK,MAAM,IACItC,OAAQV,EAAIkB,IAAOlB,EACjD2C,EAAU3C,GAAGqC,MAAML,KAAMc,EADKpC,CAKlC,OAAOsB,IACT,EAGAN,EAAQpD,UAAU2E,aAAevB,EAAQpD,UAAUuE,KAUnDnB,EAAQpD,UAAU4E,UAAY,SAASpB,GAErC,OADAE,KAAKC,WAAaD,KAAKC,YAAc,CAAA,EAC9BD,KAAKC,WAAW,IAAMH,IAAU,EACzC,EAUAJ,EAAQpD,UAAU6E,aAAe,SAASrB,GACxC,QAAUE,KAAKkB,UAAUpB,GAAOpB,MAClC,ECxKO,IAAM0C,EACW,oBAATC,KACAA,KAEgB,oBAAXC,OACLA,OAGAC,SAAS,cAATA,GCPR,SAASC,EAAK5E,GAAc,IAAA6E,IAAAA,EAAAnB,UAAA5B,OAANgD,MAAIX,MAAAU,EAAAA,EAAAA,OAAAE,EAAA,EAAAA,EAAAF,EAAAE,IAAJD,EAAIC,EAAArB,GAAAA,UAAAqB,GAC7B,OAAOD,EAAKE,QAAO,SAACC,EAAKC,GAIrB,OAHIlF,EAAImF,eAAeD,KACnBD,EAAIC,GAAKlF,EAAIkF,IAEVD,CACV,GAAE,CAAE,EACT,CAEA,IAAMG,EAAqBC,EAAWC,WAChCC,EAAuBF,EAAWG,aACjC,SAASC,EAAsBzF,EAAK0F,GACnCA,EAAKC,iBACL3F,EAAI4F,aAAeR,EAAmBS,KAAKR,GAC3CrF,EAAI8F,eAAiBP,EAAqBM,KAAKR,KAG/CrF,EAAI4F,aAAeP,EAAWC,WAAWO,KAAKR,GAC9CrF,EAAI8F,eAAiBT,EAAWG,aAAaK,KAAKR,GAE1D,CClB8C,ICAzBU,EDCfC,WAAcC,GAAAC,EAAAF,EAAAC,GAAA,IAAAE,EAAAC,EAAAJ,GAChB,SAAAA,EAAYK,EAAQC,EAAaC,GAAS,IAAAC,EAIT,OAJSC,OAAAT,IACtCQ,EAAAL,EAAAvG,UAAMyG,IACDC,YAAcA,EACnBE,EAAKD,QAAUA,EACfC,EAAKlH,KAAO,iBAAiBkH,CACjC,CAAC,OAAAE,EAAAV,EAAA,EAAAW,EANwBC,QAQhBC,WAASC,GAAAZ,EAAAW,EAAAC,GAAA,IAAAC,EAAAX,EAAAS,GAOlB,SAAAA,EAAYnB,GAAM,IAAAsB,EAMY,OANZP,OAAAI,IACdG,EAAAD,EAAAnH,KAAAwD,OACK6D,UAAW,EAChBxB,EAAqByB,EAAAF,GAAOtB,GAC5BsB,EAAKtB,KAAOA,EACZsB,EAAKG,MAAQzB,EAAKyB,MAClBH,EAAKI,OAAS1B,EAAK0B,OAAOJ,CAC9B,CAiHC,OAhHDN,EAAAG,EAAA,CAAA,CAAA1H,IAAA,UAAAkI,MASA,SAAQhB,EAAQC,EAAaC,GAEzB,OADAe,EAAAC,EAAAV,EAAAnH,gCAAAE,KAAAwD,KAAmB,QAAS,IAAI4C,EAAeK,EAAQC,EAAaC,IAC7DnD,IACX,GACA,CAAAjE,IAAA,OAAAkI,MAGA,WAGI,OAFAjE,KAAKoE,WAAa,UAClBpE,KAAKqE,SACErE,IACX,GACA,CAAAjE,IAAA,QAAAkI,MAGA,WAKI,MAJwB,YAApBjE,KAAKoE,YAAgD,SAApBpE,KAAKoE,aACtCpE,KAAKsE,UACLtE,KAAKuE,WAEFvE,IACX,GACA,CAAAjE,IAAA,OAAAkI,MAKA,SAAKO,GACuB,SAApBxE,KAAKoE,YACLpE,KAAKyE,MAAMD,EAKnB,GACA,CAAAzI,IAAA,SAAAkI,MAKA,WACIjE,KAAKoE,WAAa,OAClBpE,KAAK6D,UAAW,EAChBK,EAAAC,EAAAV,EAAAnH,WAAA,eAAA0D,MAAAxD,KAAAwD,KAAmB,OACvB,GACA,CAAAjE,IAAA,SAAAkI,MAMA,SAAO9H,GACH,IAAMuI,EAASvG,EAAahC,EAAM6D,KAAKgE,OAAO3F,YAC9C2B,KAAK2E,SAASD,EAClB,GACA,CAAA3I,IAAA,WAAAkI,MAKA,SAASS,GACLR,EAAAC,EAAAV,EAAAnH,WAAA,eAAA0D,MAAAxD,KAAAwD,KAAmB,SAAU0E,EACjC,GACA,CAAA3I,IAAA,UAAAkI,MAKA,SAAQW,GACJ5E,KAAKoE,WAAa,SAClBF,EAAAC,EAAAV,EAAAnH,WAAA,eAAA0D,MAAAxD,KAAAwD,KAAmB,QAAS4E,EAChC,GACA,CAAA7I,IAAA,QAAAkI,MAKA,SAAMY,GAAW,GAAC,CAAA9I,IAAA,YAAAkI,MAClB,SAAUa,GAAoB,IAAZf,EAAKzD,UAAA5B,OAAA,QAAAqG,IAAAzE,UAAA,GAAAA,UAAA,GAAG,CAAA,EACtB,OAAQwE,EACJ,MACA9E,KAAKgF,YACLhF,KAAKiF,QACLjF,KAAKsC,KAAK4C,KACVlF,KAAKmF,OAAOpB,EACpB,GAAC,CAAAhI,IAAA,YAAAkI,MACD,WACI,IAAMmB,EAAWpF,KAAKsC,KAAK8C,SAC3B,OAAkC,IAA3BA,EAASC,QAAQ,KAAcD,EAAW,IAAMA,EAAW,GACtE,GAAC,CAAArJ,IAAA,QAAAkI,MACD,WACI,OAAIjE,KAAKsC,KAAKgD,OACRtF,KAAKsC,KAAKiD,QAAUC,OAA0B,MAAnBxF,KAAKsC,KAAKgD,QACjCtF,KAAKsC,KAAKiD,QAAqC,KAA3BC,OAAOxF,KAAKsC,KAAKgD,OACpC,IAAMtF,KAAKsC,KAAKgD,KAGhB,EAEf,GAAC,CAAAvJ,IAAA,SAAAkI,MACD,SAAOF,GACH,IAAM0B,EEjIP,SAAgB7I,GACnB,IAAI8I,EAAM,GACV,IAAK,IAAI1H,KAAKpB,EACNA,EAAImF,eAAe/D,KACf0H,EAAIhH,SACJgH,GAAO,KACXA,GAAOC,mBAAmB3H,GAAK,IAAM2H,mBAAmB/I,EAAIoB,KAGpE,OAAO0H,CACX,CFuH6BE,CAAO7B,GAC5B,OAAO0B,EAAa/G,OAAS,IAAM+G,EAAe,EACtD,KAAChC,CAAA,EA/H0B/D,GCVzBmG,EAAW,mEAAmErI,MAAM,IAAKkB,EAAS,GAAIoH,EAAM,CAAA,EAC9GC,EAAO,EAAG/H,EAAI,EAQX,SAAS4H,EAAOI,GACnB,IAAIC,EAAU,GACd,GACIA,EAAUJ,EAASG,EAAMtH,GAAUuH,EACnCD,EAAME,KAAKC,MAAMH,EAAMtH,SAClBsH,EAAM,GACf,OAAOC,CACX,CAqBO,SAASG,IACZ,IAAMC,EAAMT,GAAQ,IAAIU,MACxB,OAAID,IAAQ1D,GACDoD,EAAO,EAAGpD,EAAO0D,GACrBA,EAAM,IAAMT,EAAOG,IAC9B,CAIA,KAAO/H,EAAIU,EAAQV,IACf8H,EAAID,EAAS7H,IAAMA,EEhDvB,IAAIiG,GAAQ,EACZ,IACIA,EAAkC,oBAAnBsC,gBACX,oBAAqB,IAAIA,cACjC,CACA,MAAOC,GAEH,CAEG,IAAMC,EAAUxC,ECPhB,SAASyC,EAAIpE,GAChB,IAAMqE,EAAUrE,EAAKqE,QAErB,IACI,GAAI,oBAAuBJ,kBAAoBI,GAAWF,GACtD,OAAO,IAAIF,cAEnB,CACA,MAAOK,GAAK,CACZ,IAAKD,EACD,IACI,OAAO,IAAI1E,EAAW,CAAC,UAAU4E,OAAO,UAAUC,KAAK,OAAM,oBACjE,CACA,MAAOF,GAAK,CAEpB,CCXA,SAASG,KAAU,CACnB,IAAMC,GAIK,MAHK,IAAIT,EAAe,CAC3BI,SAAS,IAEMM,aAEVC,YAAOC,GAAArE,EAAAoE,EAAAC,GAAA,IAAApE,EAAAC,EAAAkE,GAOhB,SAAAA,EAAY5E,GAAM,IAAAc,EAGd,GAHcC,OAAA6D,IACd9D,EAAAL,EAAAvG,UAAM8F,IACD8E,SAAU,EACS,oBAAbC,SAA0B,CACjC,IAAMC,EAAQ,WAAaD,SAASE,SAChCjC,EAAO+B,SAAS/B,KAEfA,IACDA,EAAOgC,EAAQ,MAAQ,MAE3BlE,EAAKoE,GACoB,oBAAbH,UACJ/E,EAAK8C,WAAaiC,SAASjC,UAC3BE,IAAShD,EAAKgD,IAC1B,CAIA,IAAMmC,EAAcnF,GAAQA,EAAKmF,YAIhC,OAHDrE,EAAKpG,eAAiBgK,KAAYS,EAC9BrE,EAAKd,KAAKoF,kBACVtE,EAAKuE,eAAYC,GACpBxE,CACL,CAgLC,OAhLAE,EAAA4D,EAAA,CAAA,CAAAnL,IAAA,OAAA8L,IACD,WACI,MAAO,SACX,GACA,CAAA9L,IAAA,SAAAkI,MAMA,WACIjE,KAAK8H,MACT,GACA,CAAA/L,IAAA,QAAAkI,MAMA,SAAMY,GAAS,IAAAjB,EAAA5D,KACXA,KAAKoE,WAAa,UAClB,IAAM2D,EAAQ,WACVnE,EAAKQ,WAAa,SAClBS,KAEJ,GAAI7E,KAAKoH,UAAYpH,KAAK6D,SAAU,CAChC,IAAImE,EAAQ,EACRhI,KAAKoH,UACLY,IACAhI,KAAKG,KAAK,gBAAgB,aACpB6H,GAASD,GACf,KAEC/H,KAAK6D,WACNmE,IACAhI,KAAKG,KAAK,SAAS,aACb6H,GAASD,GACf,IAER,MAEIA,GAER,GACA,CAAAhM,IAAA,OAAAkI,MAKA,WACIjE,KAAKoH,SAAU,EACfpH,KAAKiI,SACLjI,KAAKiB,aAAa,OACtB,GACA,CAAAlF,IAAA,SAAAkI,MAKA,SAAO9H,GAAM,IAAA+L,EAAAlI,MVrFK,SAACmI,EAAgB9J,GAGnC,IAFA,IAAM+J,EAAiBD,EAAe3K,MAAM+B,GACtCiF,EAAU,GACPxG,EAAI,EAAGA,EAAIoK,EAAe1J,OAAQV,IAAK,CAC5C,IAAMqK,EAAgBlK,EAAaiK,EAAepK,GAAIK,GAEtD,GADAmG,EAAQtE,KAAKmI,GACc,UAAvBA,EAAcnM,KACd,KAER,CACA,OAAOsI,CACX,EUyFQ8D,CAAcnM,EAAM6D,KAAKgE,OAAO3F,YAAYvC,SAd3B,SAAC4I,GAMd,GAJI,YAAcwD,EAAK9D,YAA8B,SAAhBM,EAAOxI,MACxCgM,EAAKK,SAGL,UAAY7D,EAAOxI,KAEnB,OADAgM,EAAK3D,QAAQ,CAAErB,YAAa,oCACrB,EAGXgF,EAAKvD,SAASD,MAKd,WAAa1E,KAAKoE,aAElBpE,KAAKoH,SAAU,EACfpH,KAAKiB,aAAa,gBACd,SAAWjB,KAAKoE,YAChBpE,KAAK8H,OAKjB,GACA,CAAA/L,IAAA,UAAAkI,MAKA,WAAU,IAAAuE,EAAAxI,KACAyI,EAAQ,WACVD,EAAK/D,MAAM,CAAC,CAAEvI,KAAM,YAEpB,SAAW8D,KAAKoE,WAChBqE,IAKAzI,KAAKG,KAAK,OAAQsI,EAE1B,GACA,CAAA1M,IAAA,QAAAkI,MAMA,SAAMO,GAAS,IAAAkE,EAAA1I,KACXA,KAAK6D,UAAW,EVzJF,SAACW,EAASvH,GAE5B,IAAMyB,EAAS8F,EAAQ9F,OACjB0J,EAAiB,IAAIrH,MAAMrC,GAC7BiK,EAAQ,EACZnE,EAAQ1I,SAAQ,SAAC4I,EAAQ1G,GAErBlB,EAAa4H,GAAQ,GAAO,SAAAtG,GACxBgK,EAAepK,GAAKI,IACduK,IAAUjK,GACZzB,EAASmL,EAAetB,KAAKvH,GAErC,GACJ,GACJ,CU4IQqJ,CAAcpE,GAAS,SAACrI,GACpBuM,EAAKG,QAAQ1M,GAAM,WACfuM,EAAK7E,UAAW,EAChB6E,EAAKzH,aAAa,QACtB,GACJ,GACJ,GACA,CAAAlF,IAAA,MAAAkI,MAKA,WACI,IAAMa,EAAS9E,KAAKsC,KAAKiD,OAAS,QAAU,OACtCxB,EAAQ/D,KAAK+D,OAAS,GAQ5B,OANI,IAAU/D,KAAKsC,KAAKwG,oBACpB/E,EAAM/D,KAAKsC,KAAKyG,gBAAkB3C,KAEjCpG,KAAKhD,gBAAmB+G,EAAMiF,MAC/BjF,EAAMkF,IAAM,GAETjJ,KAAKkJ,UAAUpE,EAAQf,EAClC,GACA,CAAAhI,IAAA,UAAAkI,MAMA,WAAmB,IAAX3B,EAAIhC,UAAA5B,OAAA,QAAAqG,IAAAzE,UAAA,GAAAA,UAAA,GAAG,CAAA,EAEX,OADA6I,EAAc7G,EAAM,CAAEkF,GAAIxH,KAAKwH,GAAIG,UAAW3H,KAAK2H,WAAa3H,KAAKsC,MAC9D,IAAI8G,GAAQpJ,KAAKqJ,MAAO/G,EACnC,GACA,CAAAvG,IAAA,UAAAkI,MAOA,SAAQ9H,EAAM4D,GAAI,IAAAuJ,EAAAtJ,KACRuJ,EAAMvJ,KAAKwJ,QAAQ,CACrBC,OAAQ,OACRtN,KAAMA,IAEVoN,EAAI3J,GAAG,UAAWG,GAClBwJ,EAAI3J,GAAG,SAAS,SAAC8J,EAAWvG,GACxBmG,EAAKK,QAAQ,iBAAkBD,EAAWvG,EAC9C,GACJ,GACA,CAAApH,IAAA,SAAAkI,MAKA,WAAS,IAAA2F,EAAA5J,KACCuJ,EAAMvJ,KAAKwJ,UACjBD,EAAI3J,GAAG,OAAQI,KAAK6J,OAAOpH,KAAKzC,OAChCuJ,EAAI3J,GAAG,SAAS,SAAC8J,EAAWvG,GACxByG,EAAKD,QAAQ,iBAAkBD,EAAWvG,EAC9C,IACAnD,KAAK8J,QAAUP,CACnB,KAACrC,CAAA,EA9MwBzD,GAgNhB2F,YAAO1F,GAAAZ,EAAAsG,EAAA1F,GAAA,IAAAC,EAAAX,EAAAoG,GAOhB,SAAAA,EAAYC,EAAK/G,GAAM,IAAAyH,EAOL,OAPK1G,OAAA+F,GAEnB/G,EAAqByB,EADrBiG,EAAApG,EAAAnH,KAAAwD,OAC4BsC,GAC5ByH,EAAKzH,KAAOA,EACZyH,EAAKN,OAASnH,EAAKmH,QAAU,MAC7BM,EAAKV,IAAMA,EACXU,EAAK5N,UAAO4I,IAAczC,EAAKnG,KAAOmG,EAAKnG,KAAO,KAClD4N,EAAKpO,SAASoO,CAClB,CA8HC,OA7HDzG,EAAA8F,EAAA,CAAA,CAAArN,IAAA,SAAAkI,MAKA,WAAS,IACD+F,EADCC,EAAAjK,KAECsC,EAAOd,EAAKxB,KAAKsC,KAAM,QAAS,MAAO,MAAO,aAAc,OAAQ,KAAM,UAAW,qBAAsB,aACjHA,EAAKqE,UAAY3G,KAAKsC,KAAKkF,GAC3B,IAAM0C,EAAOlK,KAAKkK,IAAM,IAAI3D,EAAejE,GAC3C,IACI4H,EAAIC,KAAKnK,KAAKyJ,OAAQzJ,KAAKqJ,KAAK,GAChC,IACI,GAAIrJ,KAAKsC,KAAK8H,aAEV,IAAK,IAAIpM,KADTkM,EAAIG,uBAAyBH,EAAIG,uBAAsB,GACzCrK,KAAKsC,KAAK8H,aAChBpK,KAAKsC,KAAK8H,aAAarI,eAAe/D,IACtCkM,EAAII,iBAAiBtM,EAAGgC,KAAKsC,KAAK8H,aAAapM,GAI/D,CACA,MAAO4I,GAAK,CACZ,GAAI,SAAW5G,KAAKyJ,OAChB,IACIS,EAAII,iBAAiB,eAAgB,2BACzC,CACA,MAAO1D,GAAK,CAEhB,IACIsD,EAAII,iBAAiB,SAAU,MACnC,CACA,MAAO1D,GAAK,CACmB,QAA9BoD,EAAKhK,KAAKsC,KAAKqF,iBAA8B,IAAPqC,GAAyBA,EAAGO,WAAWL,GAE1E,oBAAqBA,IACrBA,EAAIxC,gBAAkB1H,KAAKsC,KAAKoF,iBAEhC1H,KAAKsC,KAAKkI,iBACVN,EAAIO,QAAUzK,KAAKsC,KAAKkI,gBAE5BN,EAAIQ,mBAAqB,WACrB,IAAIV,EACmB,IAAnBE,EAAI9F,aAC2B,QAA9B4F,EAAKC,EAAK3H,KAAKqF,iBAA8B,IAAPqC,GAAyBA,EAAGW,aAAaT,IAEhF,IAAMA,EAAI9F,aAEV,MAAQ8F,EAAIU,QAAU,OAASV,EAAIU,OACnCX,EAAKY,SAKLZ,EAAKzH,cAAa,WACdyH,EAAKN,QAA8B,iBAAfO,EAAIU,OAAsBV,EAAIU,OAAS,EAC9D,GAAE,KAGXV,EAAIY,KAAK9K,KAAK7D,KACjB,CACD,MAAOyK,GAOH,YAHA5G,KAAKwC,cAAa,WACdyH,EAAKN,QAAQ/C,EAChB,GAAE,EAEP,CACwB,oBAAbmE,WACP/K,KAAKgL,MAAQ5B,EAAQ6B,gBACrB7B,EAAQ8B,SAASlL,KAAKgL,OAAShL,KAEvC,GACA,CAAAjE,IAAA,UAAAkI,MAKA,SAAQuC,GACJxG,KAAKiB,aAAa,QAASuF,EAAKxG,KAAKkK,KACrClK,KAAKmL,SAAQ,EACjB,GACA,CAAApP,IAAA,UAAAkI,MAKA,SAAQmH,GACJ,QAAI,IAAuBpL,KAAKkK,KAAO,OAASlK,KAAKkK,IAArD,CAIA,GADAlK,KAAKkK,IAAIQ,mBAAqB3D,GAC1BqE,EACA,IACIpL,KAAKkK,IAAImB,OACb,CACA,MAAOzE,GAAK,CAEQ,oBAAbmE,iBACA3B,EAAQ8B,SAASlL,KAAKgL,OAEjChL,KAAKkK,IAAM,IAXX,CAYJ,GACA,CAAAnO,IAAA,SAAAkI,MAKA,WACI,IAAM9H,EAAO6D,KAAKkK,IAAIoB,aACT,OAATnP,IACA6D,KAAKiB,aAAa,OAAQ9E,GAC1B6D,KAAKiB,aAAa,WAClBjB,KAAKmL,UAEb,GACA,CAAApP,IAAA,QAAAkI,MAKA,WACIjE,KAAKmL,SACT,KAAC/B,CAAA,EA7IwB1J,GAsJ7B,GAPA0J,GAAQ6B,cAAgB,EACxB7B,GAAQ8B,SAAW,CAAA,EAMK,oBAAbH,SAEP,GAA2B,mBAAhBQ,YAEPA,YAAY,WAAYC,SAEvB,GAAgC,mBAArB3L,iBAAiC,CAE7CA,iBADyB,eAAgBoC,EAAa,WAAa,SAChCuJ,IAAe,EACtD,CAEJ,SAASA,KACL,IAAK,IAAIxN,KAAKoL,GAAQ8B,SACd9B,GAAQ8B,SAASnJ,eAAe/D,IAChCoL,GAAQ8B,SAASlN,GAAGqN,OAGhC,CCpYO,IAAMI,GACqC,mBAAZC,SAAqD,mBAApBA,QAAQC,QAEhE,SAACjL,GAAE,OAAKgL,QAAQC,UAAUC,KAAKlL,EAAG,EAGlC,SAACA,EAAI8B,GAAY,OAAKA,EAAa9B,EAAI,EAAE,EAG3CmL,GAAY5J,EAAW4J,WAAa5J,EAAW6J,aCJtDC,GAAqC,oBAAdC,WACI,iBAAtBA,UAAUC,SACmB,gBAApCD,UAAUC,QAAQC,cACTC,YAAEhF,GAAArE,EAAAqJ,EAAAhF,GAAA,IAAApE,EAAAC,EAAAmJ,GAOX,SAAAA,EAAY7J,GAAM,IAAAc,EAE0B,OAF1BC,OAAA8I,IACd/I,EAAAL,EAAAvG,UAAM8F,IACDtF,gBAAkBsF,EAAKmF,YAAYrE,CAC5C,CAmIC,OAnIAE,EAAA6I,EAAA,CAAA,CAAApQ,IAAA,OAAA8L,IACD,WACI,MAAO,WACX,GAAC,CAAA9L,IAAA,SAAAkI,MACD,WACI,GAAKjE,KAAKoM,QAAV,CAIA,IAAM/C,EAAMrJ,KAAKqJ,MACXgD,EAAYrM,KAAKsC,KAAK+J,UAEtB/J,EAAOyJ,GACP,CAAA,EACAvK,EAAKxB,KAAKsC,KAAM,QAAS,oBAAqB,MAAO,MAAO,aAAc,OAAQ,KAAM,UAAW,qBAAsB,eAAgB,kBAAmB,SAAU,aAAc,SAAU,uBAChMtC,KAAKsC,KAAK8H,eACV9H,EAAKgK,QAAUtM,KAAKsC,KAAK8H,cAE7B,IACIpK,KAAKuM,GACyBR,GAIpB,IAAIF,GAAUxC,EAAKgD,EAAW/J,GAH9B+J,EACI,IAAIR,GAAUxC,EAAKgD,GACnB,IAAIR,GAAUxC,EAE/B,CACD,MAAO7C,GACH,OAAOxG,KAAKiB,aAAa,QAASuF,EACtC,CACAxG,KAAKuM,GAAGlO,WAAa2B,KAAKgE,OAAO3F,YDpCR,cCqCzB2B,KAAKwM,mBAtBL,CAuBJ,GACA,CAAAzQ,IAAA,oBAAAkI,MAKA,WAAoB,IAAAL,EAAA5D,KAChBA,KAAKuM,GAAGE,OAAS,WACT7I,EAAKtB,KAAKoK,WACV9I,EAAK2I,GAAGI,QAAQC,QAEpBhJ,EAAK2E,UAETvI,KAAKuM,GAAGM,QAAU,SAACC,GAAU,OAAKlJ,EAAKW,QAAQ,CAC3CrB,YAAa,8BACbC,QAAS2J,GACX,EACF9M,KAAKuM,GAAGQ,UAAY,SAACC,GAAE,OAAKpJ,EAAKiG,OAAOmD,EAAG7Q,KAAK,EAChD6D,KAAKuM,GAAGU,QAAU,SAACrG,GAAC,OAAKhD,EAAK+F,QAAQ,kBAAmB/C,EAAE,CAC/D,GAAC,CAAA7K,IAAA,QAAAkI,MACD,SAAMO,GAAS,IAAA0D,EAAAlI,KACXA,KAAK6D,UAAW,EAGhB,IADA,IAAAqJ,EAAAA,WAEI,IAAMxI,EAASF,EAAQxG,GACjBmP,EAAanP,IAAMwG,EAAQ9F,OAAS,EAC1C5B,EAAa4H,EAAQwD,EAAKlL,gBAAgB,SAACb,GAmBvC,IAGQ+L,EAAKqE,GAAGzB,KAAK3O,EAKrB,CACA,MAAOyK,GACP,CACIuG,GAGA1B,IAAS,WACLvD,EAAKrE,UAAW,EAChBqE,EAAKjH,aAAa,QACtB,GAAGiH,EAAK1F,aAEhB,KAzCKxE,EAAI,EAAGA,EAAIwG,EAAQ9F,OAAQV,IAAGkP,GA2C3C,GAAC,CAAAnR,IAAA,UAAAkI,MACD,gBAC2B,IAAZjE,KAAKuM,KACZvM,KAAKuM,GAAG9D,QACRzI,KAAKuM,GAAK,KAElB,GACA,CAAAxQ,IAAA,MAAAkI,MAKA,WACI,IAAMa,EAAS9E,KAAKsC,KAAKiD,OAAS,MAAQ,KACpCxB,EAAQ/D,KAAK+D,OAAS,GAS5B,OAPI/D,KAAKsC,KAAKwG,oBACV/E,EAAM/D,KAAKsC,KAAKyG,gBAAkB3C,KAGjCpG,KAAKhD,iBACN+G,EAAMkF,IAAM,GAETjJ,KAAKkJ,UAAUpE,EAAQf,EAClC,GACA,CAAAhI,IAAA,QAAAkI,MAMA,WACI,QAAS4H,EACb,KAACM,CAAA,EA7ImB1I,GCEX2J,IAAAA,YAAEjG,GAAArE,EAAAsK,EAAAjG,GAAA,IAAApE,EAAAC,EAAAoK,GAAA,SAAAA,IAAA,OAAA/J,OAAA+J,GAAArK,EAAA1C,MAAAL,KAAAM,UAAA,CA2EV,OA3EUgD,EAAA8J,EAAA,CAAA,CAAArR,IAAA,OAAA8L,IACX,WACI,MAAO,cACX,GAAC,CAAA9L,IAAA,SAAAkI,MACD,WAAS,IAAAb,EAAApD,KAEuB,mBAAjBqN,eAIXrN,KAAKsN,UAAY,IAAID,aAAarN,KAAKkJ,UAAU,SAAUlJ,KAAKsC,KAAKiL,iBAAiBvN,KAAKwN,OAC3FxN,KAAKsN,UAAUG,OACV7B,MAAK,WACNxI,EAAKmB,SACT,IAAE,OACS,SAACiC,GACRpD,EAAKuG,QAAQ,qBAAsBnD,EACvC,IAEAxG,KAAKsN,UAAUI,MAAM9B,MAAK,WACtBxI,EAAKkK,UAAUK,4BAA4B/B,MAAK,SAACgC,GAC7C,IAEIC,EAFEC,EAASF,EAAOG,SAASC,YAC/B5K,EAAK6K,OAASL,EAAO/J,SAASqK,aAEjB,SAAPC,IACFL,EACKK,OACAvC,MAAK,SAAA7O,GAAqB,IAAlBqR,EAAIrR,EAAJqR,KAAMnK,EAAKlH,EAALkH,MACXmK,IAGCP,GAAmC,IAArB5J,EAAMpG,YAAiC,KAAboG,EAAM,IAK/Cb,EAAKuB,SbhB1B,SAAgCxI,EAAMkS,EAAUhQ,GAC9CH,IAEDA,EAAe,IAAIoQ,aAIvB,IAAMC,EAAgBF,GAAYlS,EAAK,GAAK,IAAMA,EAAK,GAAK,GAC5D,OAAOgC,EAAaoQ,EAAgBpS,EAAO+B,EAAaoB,OAAOnD,GAAOkC,EAC1E,CaO0CmQ,CAAuBvK,EAAO4J,EAAY,gBACxDA,GAAa,GALbA,GAAa,EAOjBM,IACH,WACU,SAAC3H,GACX,IAEL2H,GACA,IAAMM,EAAYrL,EAAKW,MAAMiF,IAAG,YAAAnC,OAAezD,EAAKW,MAAMiF,UAAU,IACpE5F,EAAK6K,OACAxJ,OAAM,IAAIiK,aAAc9I,OAAO6I,IAC/B7C,MAAK,WAAA,OAAMxI,EAAKmF,WACzB,GACJ,IACJ,GAAC,CAAAxM,IAAA,QAAAkI,MACD,SAAMO,GAAS,IAAAZ,EAAA5D,KACXA,KAAK6D,UAAW,EAChB,IADsB,IAAAqJ,EAAAA,WAElB,IAAMxI,EAASF,EAAQxG,GACjBmP,EAAanP,IAAMwG,EAAQ9F,OAAS,Gff/C,SAA8BgG,EAAQzH,GACrCb,GAAkBsI,EAAOvI,gBAAgBE,KAClCqI,EAAOvI,KACTwS,cACA/C,KAAKlO,GACLkO,KAAK3O,GAELR,IACJiI,EAAOvI,gBAAgBO,aAAeC,EAAO+H,EAAOvI,OAC9Cc,EAASS,EAAQgH,EAAOvI,OAEnCW,EAAa4H,GAAQ,GAAO,SAAAuB,GACnBjK,IACDA,EAAe,IAAI0S,aAEvBzR,EAASjB,EAAa4J,OAAOK,GACjC,GACJ,CeDY2I,CAAqBlK,GAAQ,SAACvI,IAjE1C,SAAmCuI,EAAQuB,GAGvC,MAAwB,YAAhBvB,EAAOxI,MACY,iBAAhBwI,EAAOvI,MACd8J,EAAQ,IAAM,IACdA,EAAQ,IAAM,EACtB,EA2DoB4I,CAA0BnK,EAAQvI,IAClCyH,EAAKqK,OAAOxJ,MAAM9G,WAAWmR,GAAG,KAEpClL,EAAKqK,OAAOxJ,MAAMtI,GAAMyP,MAAK,WACrBuB,GACA1B,IAAS,WACL7H,EAAKC,UAAW,EAChBD,EAAK3C,aAAa,QACtB,GAAG2C,EAAKpB,aAEhB,GACJ,KAfKxE,EAAI,EAAGA,EAAIwG,EAAQ9F,OAAQV,IAAGkP,GAiB3C,GAAC,CAAAnR,IAAA,UAAAkI,MACD,WACI,IAAI+F,EACsB,QAAzBA,EAAKhK,KAAKsN,iBAA8B,IAAPtD,GAAyBA,EAAGvB,OAClE,KAAC2E,CAAA,EA3EmB3J,GCRXsL,GAAa,CACtBC,UAAW7C,GACX8C,aAAc7B,GACdhG,QAASF,ICaPgI,GAAK,sPACLC,GAAQ,CACV,SAAU,WAAY,YAAa,WAAY,OAAQ,WAAY,OAAQ,OAAQ,WAAY,OAAQ,YAAa,OAAQ,QAAS,UAElI,SAASC,GAAM1J,GAClB,IAAM2J,EAAM3J,EAAK4J,EAAI5J,EAAIL,QAAQ,KAAMuB,EAAIlB,EAAIL,QAAQ,MAC7C,GAANiK,IAAiB,GAAN1I,IACXlB,EAAMA,EAAIjH,UAAU,EAAG6Q,GAAK5J,EAAIjH,UAAU6Q,EAAG1I,GAAG2I,QAAQ,KAAM,KAAO7J,EAAIjH,UAAUmI,EAAGlB,EAAIhH,SAG9F,IADA,IAwBmBqF,EACb5H,EAzBFqT,EAAIN,GAAGO,KAAK/J,GAAO,IAAK2D,EAAM,CAAE,EAAErL,EAAI,GACnCA,KACHqL,EAAI8F,GAAMnR,IAAMwR,EAAExR,IAAM,GAU5B,OARU,GAANsR,IAAiB,GAAN1I,IACXyC,EAAIqG,OAASL,EACbhG,EAAIsG,KAAOtG,EAAIsG,KAAKlR,UAAU,EAAG4K,EAAIsG,KAAKjR,OAAS,GAAG6Q,QAAQ,KAAM,KACpElG,EAAIuG,UAAYvG,EAAIuG,UAAUL,QAAQ,IAAK,IAAIA,QAAQ,IAAK,IAAIA,QAAQ,KAAM,KAC9ElG,EAAIwG,SAAU,GAElBxG,EAAIyG,UAIR,SAAmBlT,EAAKsI,GACpB,IAAM6K,EAAO,WAAYC,EAAQ9K,EAAKqK,QAAQQ,EAAM,KAAKvS,MAAM,KACvC,KAApB0H,EAAKlE,MAAM,EAAG,IAA6B,IAAhBkE,EAAKxG,QAChCsR,EAAMpP,OAAO,EAAG,GAEE,KAAlBsE,EAAKlE,OAAO,IACZgP,EAAMpP,OAAOoP,EAAMtR,OAAS,EAAG,GAEnC,OAAOsR,CACX,CAboBF,CAAUzG,EAAKA,EAAU,MACzCA,EAAI4G,UAaelM,EAbUsF,EAAW,MAclClN,EAAO,CAAA,EACb4H,EAAMwL,QAAQ,6BAA6B,SAAUW,EAAIC,EAAIC,GACrDD,IACAhU,EAAKgU,GAAMC,EAEnB,IACOjU,GAnBAkN,CACX,CCnCagH,IAAAA,YAAM3M,GAAAZ,EAAAuN,EAAA3M,GAAA,IAAAX,EAAAC,EAAAqN,GAOf,SAAAA,EAAYhH,GAAgB,IAAAjG,EAAXd,EAAIhC,UAAA5B,OAAA,QAAAqG,IAAAzE,UAAA,GAAAA,UAAA,GAAG,CAAA,EA+FR,OA/FU+C,OAAAgN,IACtBjN,EAAAL,EAAAvG,KAAAwD,OACKsQ,YAAc,GACfjH,GAAO,WAAQkH,EAAYlH,KAC3B/G,EAAO+G,EACPA,EAAM,MAENA,GACAA,EAAM+F,GAAM/F,GACZ/G,EAAK8C,SAAWiE,EAAIsG,KACpBrN,EAAKiD,OAA0B,UAAjB8D,EAAI9B,UAAyC,QAAjB8B,EAAI9B,SAC9CjF,EAAKgD,KAAO+D,EAAI/D,KACZ+D,EAAItF,QACJzB,EAAKyB,MAAQsF,EAAItF,QAEhBzB,EAAKqN,OACVrN,EAAK8C,SAAWgK,GAAM9M,EAAKqN,MAAMA,MAErCtN,EAAqByB,EAAAV,GAAOd,GAC5Bc,EAAKmC,OACD,MAAQjD,EAAKiD,OACPjD,EAAKiD,OACe,oBAAb8B,UAA4B,WAAaA,SAASE,SAC/DjF,EAAK8C,WAAa9C,EAAKgD,OAEvBhD,EAAKgD,KAAOlC,EAAKmC,OAAS,MAAQ,MAEtCnC,EAAKgC,SACD9C,EAAK8C,WACoB,oBAAbiC,SAA2BA,SAASjC,SAAW,aAC/DhC,EAAKkC,KACDhD,EAAKgD,OACoB,oBAAb+B,UAA4BA,SAAS/B,KACvC+B,SAAS/B,KACTlC,EAAKmC,OACD,MACA,MAClBnC,EAAK2L,WAAazM,EAAKyM,YAAc,CACjC,UACA,YACA,gBAEJ3L,EAAKkN,YAAc,GACnBlN,EAAKoN,cAAgB,EACrBpN,EAAKd,KAAO6G,EAAc,CACtBjE,KAAM,aACNuL,OAAO,EACP/I,iBAAiB,EACjBgJ,SAAS,EACT3H,eAAgB,IAChB4H,iBAAiB,EACjBC,kBAAkB,EAClBC,oBAAoB,EACpBC,kBAAmB,CACfC,UAAW,MAEfxD,iBAAkB,CAAE,EACpByD,qBAAqB,GACtB1O,GACHc,EAAKd,KAAK4C,KACN9B,EAAKd,KAAK4C,KAAKqK,QAAQ,MAAO,KACzBnM,EAAKd,KAAKsO,iBAAmB,IAAM,IACb,iBAApBxN,EAAKd,KAAKyB,QACjBX,EAAKd,KAAKyB,MTnDf,SAAgBkN,GAGnB,IAFA,IAAIC,EAAM,CAAA,EACNC,EAAQF,EAAGzT,MAAM,KACZQ,EAAI,EAAGoT,EAAID,EAAMzS,OAAQV,EAAIoT,EAAGpT,IAAK,CAC1C,IAAIqT,EAAOF,EAAMnT,GAAGR,MAAM,KAC1B0T,EAAII,mBAAmBD,EAAK,KAAOC,mBAAmBD,EAAK,GAC/D,CACA,OAAOH,CACX,CS2C8B5R,CAAO8D,EAAKd,KAAKyB,QAGvCX,EAAKmO,GAAK,KACVnO,EAAKoO,SAAW,KAChBpO,EAAKqO,aAAe,KACpBrO,EAAKsO,YAAc,KAEnBtO,EAAKuO,iBAAmB,KACQ,mBAArB9R,mBACHuD,EAAKd,KAAK0O,sBAIV5N,EAAKwO,0BAA4B,WACzBxO,EAAKkK,YAELlK,EAAKkK,UAAU9M,qBACf4C,EAAKkK,UAAU7E,UAGvB5I,iBAAiB,eAAgBuD,EAAKwO,2BAA2B,IAE/C,cAAlBxO,EAAKgC,WACLhC,EAAKyO,qBAAuB,WACxBzO,EAAKmB,QAAQ,kBAAmB,CAC5BrB,YAAa,6BAGrBrD,iBAAiB,UAAWuD,EAAKyO,sBAAsB,KAG/DzO,EAAK+G,OAAO/G,CAChB,CAgeC,OA/dDE,EAAA+M,EAAA,CAAA,CAAAtU,IAAA,kBAAAkI,MAOA,SAAgBuJ,GACZ,IAAMzJ,EAAQoF,EAAc,CAAA,EAAInJ,KAAKsC,KAAKyB,OAE1CA,EAAM+N,IhB/EU,EgBiFhB/N,EAAMuJ,UAAYE,EAEdxN,KAAKuR,KACLxN,EAAMiF,IAAMhJ,KAAKuR,IACrB,IAAMjP,EAAO6G,EAAc,GAAInJ,KAAKsC,KAAM,CACtCyB,MAAAA,EACAC,OAAQhE,KACRoF,SAAUpF,KAAKoF,SACfG,OAAQvF,KAAKuF,OACbD,KAAMtF,KAAKsF,MACZtF,KAAKsC,KAAKiL,iBAAiBC,IAC9B,OAAO,IAAIuB,GAAWvB,GAAMlL,EAChC,GACA,CAAAvG,IAAA,OAAAkI,MAKA,WAAO,IACCqJ,EADD1J,EAAA5D,KAEH,GAAIA,KAAKsC,KAAKqO,iBACVN,EAAO0B,wBACmC,IAA1C/R,KAAK+O,WAAW1J,QAAQ,aACxBiI,EAAY,gBAEX,IAAI,IAAMtN,KAAK+O,WAAWrQ,OAK3B,YAHAsB,KAAKwC,cAAa,WACdoB,EAAK3C,aAAa,QAAS,0BAC9B,GAAE,GAIHqM,EAAYtN,KAAK+O,WAAW,EAChC,CACA/O,KAAKoE,WAAa,UAElB,IACIkJ,EAAYtN,KAAKgS,gBAAgB1E,EACpC,CACD,MAAO1G,GAGH,OAFA5G,KAAK+O,WAAWkD,aAChBjS,KAAKmK,MAET,CACAmD,EAAUnD,OACVnK,KAAKkS,aAAa5E,EACtB,GACA,CAAAvR,IAAA,eAAAkI,MAKA,SAAaqJ,GAAW,IAAApF,EAAAlI,KAChBA,KAAKsN,WACLtN,KAAKsN,UAAU9M,qBAGnBR,KAAKsN,UAAYA,EAEjBA,EACK1N,GAAG,QAASI,KAAKmS,QAAQ1P,KAAKzC,OAC9BJ,GAAG,SAAUI,KAAK2E,SAASlC,KAAKzC,OAChCJ,GAAG,QAASI,KAAK2J,QAAQlH,KAAKzC,OAC9BJ,GAAG,SAAS,SAACqD,GAAM,OAAKiF,EAAK3D,QAAQ,kBAAmBtB,KACjE,GACA,CAAAlH,IAAA,QAAAkI,MAMA,SAAMuJ,GAAM,IAAAhF,EAAAxI,KACJsN,EAAYtN,KAAKgS,gBAAgBxE,GACjC4E,GAAS,EACb/B,EAAO0B,uBAAwB,EAC/B,IAAMM,EAAkB,WAChBD,IAEJ9E,EAAUxC,KAAK,CAAC,CAAE5O,KAAM,OAAQC,KAAM,WACtCmR,EAAUnN,KAAK,UAAU,SAACmS,GACtB,IAAIF,EAEJ,GAAI,SAAWE,EAAIpW,MAAQ,UAAYoW,EAAInW,KAAM,CAG7C,GAFAqM,EAAK+J,WAAY,EACjB/J,EAAKvH,aAAa,YAAaqM,IAC1BA,EACD,OACJ+C,EAAO0B,sBAAwB,cAAgBzE,EAAUE,KACzDhF,EAAK8E,UAAUvF,OAAM,WACbqK,GAEA,WAAa5J,EAAKpE,aAEtB+G,IACA3C,EAAK0J,aAAa5E,GAClBA,EAAUxC,KAAK,CAAC,CAAE5O,KAAM,aACxBsM,EAAKvH,aAAa,UAAWqM,GAC7BA,EAAY,KACZ9E,EAAK+J,WAAY,EACjB/J,EAAKgK,QACT,GACJ,KACK,CACD,IAAMhM,EAAM,IAAIhD,MAAM,eAEtBgD,EAAI8G,UAAYA,EAAUE,KAC1BhF,EAAKvH,aAAa,eAAgBuF,EACtC,CACJ,MAEJ,SAASiM,IACDL,IAGJA,GAAS,EACTjH,IACAmC,EAAU7E,QACV6E,EAAY,KAChB,CAEA,IAAML,EAAU,SAACzG,GACb,IAAMkM,EAAQ,IAAIlP,MAAM,gBAAkBgD,GAE1CkM,EAAMpF,UAAYA,EAAUE,KAC5BiF,IACAjK,EAAKvH,aAAa,eAAgByR,IAEtC,SAASC,IACL1F,EAAQ,mBACZ,CAEA,SAASJ,IACLI,EAAQ,gBACZ,CAEA,SAAS2F,EAAUC,GACXvF,GAAauF,EAAGrF,OAASF,EAAUE,MACnCiF,GAER,CAEA,IAAMtH,EAAU,WACZmC,EAAU/M,eAAe,OAAQ8R,GACjC/E,EAAU/M,eAAe,QAAS0M,GAClCK,EAAU/M,eAAe,QAASoS,GAClCnK,EAAKpI,IAAI,QAASyM,GAClBrE,EAAKpI,IAAI,YAAawS,IAE1BtF,EAAUnN,KAAK,OAAQkS,GACvB/E,EAAUnN,KAAK,QAAS8M,GACxBK,EAAUnN,KAAK,QAASwS,GACxB3S,KAAKG,KAAK,QAAS0M,GACnB7M,KAAKG,KAAK,YAAayS,IACwB,IAA3C5S,KAAKwR,SAASnM,QAAQ,iBACb,iBAATmI,EAEAxN,KAAKwC,cAAa,WACT4P,GACD9E,EAAUnD,MAEjB,GAAE,KAGHmD,EAAUnD,MAElB,GACA,CAAApO,IAAA,SAAAkI,MAKA,WAOI,GANAjE,KAAKoE,WAAa,OAClBiM,EAAO0B,sBAAwB,cAAgB/R,KAAKsN,UAAUE,KAC9DxN,KAAKiB,aAAa,QAClBjB,KAAKwS,QAGD,SAAWxS,KAAKoE,YAAcpE,KAAKsC,KAAKoO,QAGxC,IAFA,IAAI1S,EAAI,EACFoT,EAAIpR,KAAKwR,SAAS9S,OACjBV,EAAIoT,EAAGpT,IACVgC,KAAK8S,MAAM9S,KAAKwR,SAASxT,GAGrC,GACA,CAAAjC,IAAA,WAAAkI,MAKA,SAASS,GACL,GAAI,YAAc1E,KAAKoE,YACnB,SAAWpE,KAAKoE,YAChB,YAAcpE,KAAKoE,WAInB,OAHApE,KAAKiB,aAAa,SAAUyD,GAE5B1E,KAAKiB,aAAa,aACVyD,EAAOxI,MACX,IAAK,OACD8D,KAAK+S,YAAYC,KAAK5D,MAAM1K,EAAOvI,OACnC,MACJ,IAAK,OACD6D,KAAKiT,mBACLjT,KAAKkT,WAAW,QAChBlT,KAAKiB,aAAa,QAClBjB,KAAKiB,aAAa,QAClB,MACJ,IAAK,QACD,IAAMuF,EAAM,IAAIhD,MAAM,gBAEtBgD,EAAI2M,KAAOzO,EAAOvI,KAClB6D,KAAK2J,QAAQnD,GACb,MACJ,IAAK,UACDxG,KAAKiB,aAAa,OAAQyD,EAAOvI,MACjC6D,KAAKiB,aAAa,UAAWyD,EAAOvI,MAMpD,GACA,CAAAJ,IAAA,cAAAkI,MAMA,SAAY9H,GACR6D,KAAKiB,aAAa,YAAa9E,GAC/B6D,KAAKuR,GAAKpV,EAAK6M,IACfhJ,KAAKsN,UAAUvJ,MAAMiF,IAAM7M,EAAK6M,IAChChJ,KAAKwR,SAAWxR,KAAKoT,eAAejX,EAAKqV,UACzCxR,KAAKyR,aAAetV,EAAKsV,aACzBzR,KAAK0R,YAAcvV,EAAKuV,YACxB1R,KAAKqT,WAAalX,EAAKkX,WACvBrT,KAAKuI,SAED,WAAavI,KAAKoE,YAEtBpE,KAAKiT,kBACT,GACA,CAAAlX,IAAA,mBAAAkI,MAKA,WAAmB,IAAAyE,EAAA1I,KACfA,KAAK0C,eAAe1C,KAAK2R,kBACzB3R,KAAK2R,iBAAmB3R,KAAKwC,cAAa,WACtCkG,EAAKnE,QAAQ,eAChB,GAAEvE,KAAKyR,aAAezR,KAAK0R,aACxB1R,KAAKsC,KAAKoK,WACV1M,KAAK2R,iBAAiB/E,OAE9B,GACA,CAAA7Q,IAAA,UAAAkI,MAKA,WACIjE,KAAKsQ,YAAY1P,OAAO,EAAGZ,KAAKwQ,eAIhCxQ,KAAKwQ,cAAgB,EACjB,IAAMxQ,KAAKsQ,YAAY5R,OACvBsB,KAAKiB,aAAa,SAGlBjB,KAAKwS,OAEb,GACA,CAAAzW,IAAA,QAAAkI,MAKA,WACI,GAAI,WAAajE,KAAKoE,YAClBpE,KAAKsN,UAAUzJ,WACd7D,KAAKuS,WACNvS,KAAKsQ,YAAY5R,OAAQ,CACzB,IAAM8F,EAAUxE,KAAKsT,qBACrBtT,KAAKsN,UAAUxC,KAAKtG,GAGpBxE,KAAKwQ,cAAgBhM,EAAQ9F,OAC7BsB,KAAKiB,aAAa,QACtB,CACJ,GACA,CAAAlF,IAAA,qBAAAkI,MAMA,WAII,KAH+BjE,KAAKqT,YACR,YAAxBrT,KAAKsN,UAAUE,MACfxN,KAAKsQ,YAAY5R,OAAS,GAE1B,OAAOsB,KAAKsQ,YAGhB,IADA,IZpZmB1T,EYoZf2W,EAAc,EACTvV,EAAI,EAAGA,EAAIgC,KAAKsQ,YAAY5R,OAAQV,IAAK,CAC9C,IAAM7B,EAAO6D,KAAKsQ,YAAYtS,GAAG7B,KAIjC,GAHIA,IACAoX,GZvZO,iBADI3W,EYwZeT,GZjZ1C,SAAoBuJ,GAEhB,IADA,IAAI8N,EAAI,EAAG9U,EAAS,EACXV,EAAI,EAAGoT,EAAI1L,EAAIhH,OAAQV,EAAIoT,EAAGpT,KACnCwV,EAAI9N,EAAIzH,WAAWD,IACX,IACJU,GAAU,EAEL8U,EAAI,KACT9U,GAAU,EAEL8U,EAAI,OAAUA,GAAK,MACxB9U,GAAU,GAGVV,IACAU,GAAU,GAGlB,OAAOA,CACX,CAxBe+U,CAAW7W,GAGfsJ,KAAKwN,KAPQ,MAOF9W,EAAIiB,YAAcjB,EAAI+W,QYqZ5B3V,EAAI,GAAKuV,EAAcvT,KAAKqT,WAC5B,OAAOrT,KAAKsQ,YAAYtP,MAAM,EAAGhD,GAErCuV,GAAe,CACnB,CACA,OAAOvT,KAAKsQ,WAChB,GACA,CAAAvU,IAAA,QAAAkI,MAQA,SAAMqO,EAAKsB,EAAS7T,GAEhB,OADAC,KAAKkT,WAAW,UAAWZ,EAAKsB,EAAS7T,GAClCC,IACX,GAAC,CAAAjE,IAAA,OAAAkI,MACD,SAAKqO,EAAKsB,EAAS7T,GAEf,OADAC,KAAKkT,WAAW,UAAWZ,EAAKsB,EAAS7T,GAClCC,IACX,GACA,CAAAjE,IAAA,aAAAkI,MASA,SAAW/H,EAAMC,EAAMyX,EAAS7T,GAS5B,GARI,mBAAsB5D,IACtB4D,EAAK5D,EACLA,OAAO4I,GAEP,mBAAsB6O,IACtB7T,EAAK6T,EACLA,EAAU,MAEV,YAAc5T,KAAKoE,YAAc,WAAapE,KAAKoE,WAAvD,EAGAwP,EAAUA,GAAW,IACbC,UAAW,IAAUD,EAAQC,SACrC,IAAMnP,EAAS,CACXxI,KAAMA,EACNC,KAAMA,EACNyX,QAASA,GAEb5T,KAAKiB,aAAa,eAAgByD,GAClC1E,KAAKsQ,YAAYpQ,KAAKwE,GAClB3E,GACAC,KAAKG,KAAK,QAASJ,GACvBC,KAAKwS,OAZL,CAaJ,GACA,CAAAzW,IAAA,QAAAkI,MAGA,WAAQ,IAAAqF,EAAAtJ,KACEyI,EAAQ,WACVa,EAAK/E,QAAQ,gBACb+E,EAAKgE,UAAU7E,SAEbqL,EAAkB,SAAlBA,IACFxK,EAAKlJ,IAAI,UAAW0T,GACpBxK,EAAKlJ,IAAI,eAAgB0T,GACzBrL,KAEEsL,EAAiB,WAEnBzK,EAAKnJ,KAAK,UAAW2T,GACrBxK,EAAKnJ,KAAK,eAAgB2T,IAqB9B,MAnBI,YAAc9T,KAAKoE,YAAc,SAAWpE,KAAKoE,aACjDpE,KAAKoE,WAAa,UACdpE,KAAKsQ,YAAY5R,OACjBsB,KAAKG,KAAK,SAAS,WACXmJ,EAAKiJ,UACLwB,IAGAtL,GAER,IAEKzI,KAAKuS,UACVwB,IAGAtL,KAGDzI,IACX,GACA,CAAAjE,IAAA,UAAAkI,MAKA,SAAQuC,GACJ6J,EAAO0B,uBAAwB,EAC/B/R,KAAKiB,aAAa,QAASuF,GAC3BxG,KAAKuE,QAAQ,kBAAmBiC,EACpC,GACA,CAAAzK,IAAA,UAAAkI,MAKA,SAAQhB,EAAQC,GACR,YAAclD,KAAKoE,YACnB,SAAWpE,KAAKoE,YAChB,YAAcpE,KAAKoE,aAEnBpE,KAAK0C,eAAe1C,KAAK2R,kBAEzB3R,KAAKsN,UAAU9M,mBAAmB,SAElCR,KAAKsN,UAAU7E,QAEfzI,KAAKsN,UAAU9M,qBACoB,mBAAxBC,sBACPA,oBAAoB,eAAgBT,KAAK4R,2BAA2B,GACpEnR,oBAAoB,UAAWT,KAAK6R,sBAAsB,IAG9D7R,KAAKoE,WAAa,SAElBpE,KAAKuR,GAAK,KAEVvR,KAAKiB,aAAa,QAASgC,EAAQC,GAGnClD,KAAKsQ,YAAc,GACnBtQ,KAAKwQ,cAAgB,EAE7B,GACA,CAAAzU,IAAA,iBAAAkI,MAMA,SAAeuN,GAIX,IAHA,IAAMwC,EAAmB,GACrBhW,EAAI,EACFiW,EAAIzC,EAAS9S,OACZV,EAAIiW,EAAGjW,KACLgC,KAAK+O,WAAW1J,QAAQmM,EAASxT,KAClCgW,EAAiB9T,KAAKsR,EAASxT,IAEvC,OAAOgW,CACX,KAAC3D,CAAA,EAvkBuB3Q,GAykBtBwU,GAAC3M,ShBtiBiB,EiBvCA8I,GAAO9I,SCF/B,IAAM9K,GAA+C,mBAAhBC,YAC/BC,GAAS,SAACC,GACZ,MAAqC,mBAAvBF,YAAYC,OACpBD,YAAYC,OAAOC,GACnBA,EAAIC,kBAAkBH,WAChC,EACMH,GAAWb,OAAOY,UAAUC,SAC5BH,GAAiC,mBAATC,MACT,oBAATA,MACoB,6BAAxBE,GAASC,KAAKH,MAChB8X,GAAiC,mBAATC,MACT,oBAATA,MACoB,6BAAxB7X,GAASC,KAAK4X,MAMf,SAAS/F,GAASzR,GACrB,OAASH,KAA0BG,aAAeF,aAAeC,GAAOC,KACnER,IAAkBQ,aAAeP,MACjC8X,IAAkBvX,aAAewX,IAC1C,CACO,SAASC,GAAUzX,EAAK0X,GAC3B,IAAK1X,GAAsB,WAAf2T,EAAO3T,GACf,OAAO,EAEX,GAAImE,MAAMwT,QAAQ3X,GAAM,CACpB,IAAK,IAAIoB,EAAI,EAAGoT,EAAIxU,EAAI8B,OAAQV,EAAIoT,EAAGpT,IACnC,GAAIqW,GAAUzX,EAAIoB,IACd,OAAO,EAGf,OAAO,CACX,CACA,GAAIqQ,GAASzR,GACT,OAAO,EAEX,GAAIA,EAAI0X,QACkB,mBAAf1X,EAAI0X,QACU,IAArBhU,UAAU5B,OACV,OAAO2V,GAAUzX,EAAI0X,UAAU,GAEnC,IAAK,IAAMvY,KAAOa,EACd,GAAIlB,OAAOY,UAAUyF,eAAevF,KAAKI,EAAKb,IAAQsY,GAAUzX,EAAIb,IAChE,OAAO,EAGf,OAAO,CACX,CCzCO,SAASyY,GAAkB9P,GAC9B,IAAM+P,EAAU,GACVC,EAAahQ,EAAOvI,KACpBwY,EAAOjQ,EAGb,OAFAiQ,EAAKxY,KAAOyY,GAAmBF,EAAYD,GAC3CE,EAAKE,YAAcJ,EAAQ/V,OACpB,CAAEgG,OAAQiQ,EAAMF,QAASA,EACpC,CACA,SAASG,GAAmBzY,EAAMsY,GAC9B,IAAKtY,EACD,OAAOA,EACX,GAAIkS,GAASlS,GAAO,CAChB,IAAM2Y,EAAc,CAAEC,cAAc,EAAM/O,IAAKyO,EAAQ/V,QAEvD,OADA+V,EAAQvU,KAAK/D,GACN2Y,CACV,CACI,GAAI/T,MAAMwT,QAAQpY,GAAO,CAE1B,IADA,IAAM6Y,EAAU,IAAIjU,MAAM5E,EAAKuC,QACtBV,EAAI,EAAGA,EAAI7B,EAAKuC,OAAQV,IAC7BgX,EAAQhX,GAAK4W,GAAmBzY,EAAK6B,GAAIyW,GAE7C,OAAOO,CACX,CACK,GAAoB,WAAhBzE,EAAOpU,MAAuBA,aAAgBmK,MAAO,CAC1D,IAAM0O,EAAU,CAAA,EAChB,IAAK,IAAMjZ,KAAOI,EACVT,OAAOY,UAAUyF,eAAevF,KAAKL,EAAMJ,KAC3CiZ,EAAQjZ,GAAO6Y,GAAmBzY,EAAKJ,GAAM0Y,IAGrD,OAAOO,CACX,CACA,OAAO7Y,CACX,CASO,SAAS8Y,GAAkBvQ,EAAQ+P,GAGtC,OAFA/P,EAAOvI,KAAO+Y,GAAmBxQ,EAAOvI,KAAMsY,UACvC/P,EAAOmQ,YACPnQ,CACX,CACA,SAASwQ,GAAmB/Y,EAAMsY,GAC9B,IAAKtY,EACD,OAAOA,EACX,GAAIA,IAA8B,IAAtBA,EAAK4Y,aAAuB,CAIpC,GAHyC,iBAAb5Y,EAAK6J,KAC7B7J,EAAK6J,KAAO,GACZ7J,EAAK6J,IAAMyO,EAAQ/V,OAEnB,OAAO+V,EAAQtY,EAAK6J,KAGpB,MAAM,IAAIxC,MAAM,sBAEvB,CACI,GAAIzC,MAAMwT,QAAQpY,GACnB,IAAK,IAAI6B,EAAI,EAAGA,EAAI7B,EAAKuC,OAAQV,IAC7B7B,EAAK6B,GAAKkX,GAAmB/Y,EAAK6B,GAAIyW,QAGzC,GAAoB,WAAhBlE,EAAOpU,GACZ,IAAK,IAAMJ,KAAOI,EACVT,OAAOY,UAAUyF,eAAevF,KAAKL,EAAMJ,KAC3CI,EAAKJ,GAAOmZ,GAAmB/Y,EAAKJ,GAAM0Y,IAItD,OAAOtY,CACX,CC5EA,IAcWgZ,GAdLC,GAAkB,CACpB,UACA,gBACA,aACA,gBACA,cACA,mBASJ,SAAWD,GACPA,EAAWA,EAAoB,QAAI,GAAK,UACxCA,EAAWA,EAAuB,WAAI,GAAK,aAC3CA,EAAWA,EAAkB,MAAI,GAAK,QACtCA,EAAWA,EAAgB,IAAI,GAAK,MACpCA,EAAWA,EAA0B,cAAI,GAAK,gBAC9CA,EAAWA,EAAyB,aAAI,GAAK,eAC7CA,EAAWA,EAAuB,WAAI,GAAK,YAC9C,CARD,CAQGA,KAAeA,GAAa,CAAE,IAIjC,IAAaE,GAAO,WAMhB,SAAAA,EAAYC,GAAUjS,OAAAgS,GAClBrV,KAAKsV,SAAWA,CACpB,CA2DC,OA1DDhS,EAAA+R,EAAA,CAAA,CAAAtZ,IAAA,SAAAkI,MAMA,SAAOrH,GACH,OAAIA,EAAIV,OAASiZ,GAAWI,OAAS3Y,EAAIV,OAASiZ,GAAWK,MACrDnB,GAAUzX,GAWX,CAACoD,KAAKyV,eAAe7Y,IAVboD,KAAK0V,eAAe,CACvBxZ,KAAMU,EAAIV,OAASiZ,GAAWI,MACxBJ,GAAWQ,aACXR,GAAWS,WACjBC,IAAKjZ,EAAIiZ,IACT1Z,KAAMS,EAAIT,KACVoV,GAAI3U,EAAI2U,IAKxB,GACA,CAAAxV,IAAA,iBAAAkI,MAGA,SAAerH,GAEX,IAAI8I,EAAM,GAAK9I,EAAIV,KAmBnB,OAjBIU,EAAIV,OAASiZ,GAAWQ,cACxB/Y,EAAIV,OAASiZ,GAAWS,aACxBlQ,GAAO9I,EAAIiY,YAAc,KAIzBjY,EAAIiZ,KAAO,MAAQjZ,EAAIiZ,MACvBnQ,GAAO9I,EAAIiZ,IAAM,KAGjB,MAAQjZ,EAAI2U,KACZ7L,GAAO9I,EAAI2U,IAGX,MAAQ3U,EAAIT,OACZuJ,GAAOsN,KAAK8C,UAAUlZ,EAAIT,KAAM6D,KAAKsV,WAElC5P,CACX,GACA,CAAA3J,IAAA,iBAAAkI,MAKA,SAAerH,GACX,IAAMmZ,EAAiBvB,GAAkB5X,GACnC+X,EAAO3U,KAAKyV,eAAeM,EAAerR,QAC1C+P,EAAUsB,EAAetB,QAE/B,OADAA,EAAQuB,QAAQrB,GACTF,CACX,KAACY,CAAA,CAnEe,GAsEpB,SAASY,GAAShS,GACd,MAAiD,oBAA1CvI,OAAOY,UAAUC,SAASC,KAAKyH,EAC1C,CAMaiS,IAAAA,YAAOxS,GAAAZ,EAAAoT,EAAAxS,GAAA,IAAAX,EAAAC,EAAAkT,GAMhB,SAAAA,EAAYC,GAAS,IAAA/S,EAEM,OAFNC,OAAA6S,IACjB9S,EAAAL,EAAAvG,KAAAwD,OACKmW,QAAUA,EAAQ/S,CAC3B,CA4IC,OA3IDE,EAAA4S,EAAA,CAAA,CAAAna,IAAA,MAAAkI,MAKA,SAAIrH,GACA,IAAI8H,EACJ,GAAmB,iBAAR9H,EAAkB,CACzB,GAAIoD,KAAKoW,cACL,MAAM,IAAI5S,MAAM,mDAGpB,IAAM6S,GADN3R,EAAS1E,KAAKsW,aAAa1Z,IACEV,OAASiZ,GAAWQ,aAC7CU,GAAiB3R,EAAOxI,OAASiZ,GAAWS,YAC5ClR,EAAOxI,KAAOma,EAAgBlB,GAAWI,MAAQJ,GAAWK,IAE5DxV,KAAKoW,cAAgB,IAAIG,GAAoB7R,GAElB,IAAvBA,EAAOmQ,aACP3Q,EAAAC,EAAA+R,EAAA5Z,WAAA,eAAA0D,MAAAxD,KAAAwD,KAAmB,UAAW0E,IAKlCR,EAAAC,EAAA+R,EAAA5Z,WAAA,eAAA0D,MAAAxD,KAAAwD,KAAmB,UAAW0E,EAErC,KACI,KAAI2J,GAASzR,KAAQA,EAAIgC,OAe1B,MAAM,IAAI4E,MAAM,iBAAmB5G,GAbnC,IAAKoD,KAAKoW,cACN,MAAM,IAAI5S,MAAM,qDAGhBkB,EAAS1E,KAAKoW,cAAcI,eAAe5Z,MAGvCoD,KAAKoW,cAAgB,KACrBlS,EAAAC,EAAA+R,EAAA5Z,WAAA,eAAA0D,MAAAxD,KAAAwD,KAAmB,UAAW0E,GAM1C,CACJ,GACA,CAAA3I,IAAA,eAAAkI,MAMA,SAAayB,GACT,IAAI1H,EAAI,EAEFmB,EAAI,CACNjD,KAAMsJ,OAAOE,EAAInH,OAAO,KAE5B,QAA2BwG,IAAvBoQ,GAAWhW,EAAEjD,MACb,MAAM,IAAIsH,MAAM,uBAAyBrE,EAAEjD,MAG/C,GAAIiD,EAAEjD,OAASiZ,GAAWQ,cACtBxW,EAAEjD,OAASiZ,GAAWS,WAAY,CAElC,IADA,IAAMa,EAAQzY,EAAI,EACS,MAApB0H,EAAInH,SAASP,IAAcA,GAAK0H,EAAIhH,SAC3C,IAAMgY,EAAMhR,EAAIjH,UAAUgY,EAAOzY,GACjC,GAAI0Y,GAAOlR,OAAOkR,IAA0B,MAAlBhR,EAAInH,OAAOP,GACjC,MAAM,IAAIwF,MAAM,uBAEpBrE,EAAE0V,YAAcrP,OAAOkR,EAC3B,CAEA,GAAI,MAAQhR,EAAInH,OAAOP,EAAI,GAAI,CAE3B,IADA,IAAMyY,EAAQzY,EAAI,IACTA,GAAG,CAER,GAAI,MADM0H,EAAInH,OAAOP,GAEjB,MACJ,GAAIA,IAAM0H,EAAIhH,OACV,KACR,CACAS,EAAE0W,IAAMnQ,EAAIjH,UAAUgY,EAAOzY,EACjC,MAEImB,EAAE0W,IAAM,IAGZ,IAAMc,EAAOjR,EAAInH,OAAOP,EAAI,GAC5B,GAAI,KAAO2Y,GAAQnR,OAAOmR,IAASA,EAAM,CAErC,IADA,IAAMF,EAAQzY,EAAI,IACTA,GAAG,CACR,IAAMwV,EAAI9N,EAAInH,OAAOP,GACrB,GAAI,MAAQwV,GAAKhO,OAAOgO,IAAMA,EAAG,GAC3BxV,EACF,KACJ,CACA,GAAIA,IAAM0H,EAAIhH,OACV,KACR,CACAS,EAAEoS,GAAK/L,OAAOE,EAAIjH,UAAUgY,EAAOzY,EAAI,GAC3C,CAEA,GAAI0H,EAAInH,SAASP,GAAI,CACjB,IAAM4Y,EAAU5W,KAAK6W,SAASnR,EAAIoR,OAAO9Y,IACzC,IAAIkY,EAAQa,eAAe5X,EAAEjD,KAAM0a,GAI/B,MAAM,IAAIpT,MAAM,mBAHhBrE,EAAEhD,KAAOya,CAKjB,CACA,OAAOzX,CACX,GAAC,CAAApD,IAAA,WAAAkI,MACD,SAASyB,GACL,IACI,OAAOsN,KAAK5D,MAAM1J,EAAK1F,KAAKmW,QAC/B,CACD,MAAOvP,GACH,OAAO,CACX,CACJ,GAAC,CAAA7K,IAAA,UAAAkI,MAuBD,WACQjE,KAAKoW,gBACLpW,KAAKoW,cAAcY,yBACnBhX,KAAKoW,cAAgB,KAE7B,IAAC,CAAA,CAAAra,IAAA,iBAAAkI,MA3BD,SAAsB/H,EAAM0a,GACxB,OAAQ1a,GACJ,KAAKiZ,GAAW8B,QACZ,OAAOhB,GAASW,GACpB,KAAKzB,GAAW+B,WACZ,YAAmBnS,IAAZ6R,EACX,KAAKzB,GAAWgC,cACZ,MAA0B,iBAAZP,GAAwBX,GAASW,GACnD,KAAKzB,GAAWI,MAChB,KAAKJ,GAAWQ,aACZ,OAAQ5U,MAAMwT,QAAQqC,KACK,iBAAfA,EAAQ,IACW,iBAAfA,EAAQ,KAC6B,IAAzCxB,GAAgB/P,QAAQuR,EAAQ,KAChD,KAAKzB,GAAWK,IAChB,KAAKL,GAAWS,WACZ,OAAO7U,MAAMwT,QAAQqC,GAEjC,KAACV,CAAA,EArJwBxW,GAwKvB6W,GAAmB,WACrB,SAAAA,EAAY7R,GAAQrB,OAAAkT,GAChBvW,KAAK0E,OAASA,EACd1E,KAAKyU,QAAU,GACfzU,KAAKoX,UAAY1S,CACrB,CAyBC,OAxBDpB,EAAAiT,EAAA,CAAA,CAAAxa,IAAA,iBAAAkI,MAQA,SAAeoT,GAEX,GADArX,KAAKyU,QAAQvU,KAAKmX,GACdrX,KAAKyU,QAAQ/V,SAAWsB,KAAKoX,UAAUvC,YAAa,CAEpD,IAAMnQ,EAASuQ,GAAkBjV,KAAKoX,UAAWpX,KAAKyU,SAEtD,OADAzU,KAAKgX,yBACEtS,CACX,CACA,OAAO,IACX,GACA,CAAA3I,IAAA,yBAAAkI,MAGA,WACIjE,KAAKoX,UAAY,KACjBpX,KAAKyU,QAAU,EACnB,KAAC8B,CAAA,CA9BoB,6CApQD,sDCnBjB,SAAS3W,GAAGhD,EAAKoQ,EAAIjN,GAExB,OADAnD,EAAIgD,GAAGoN,EAAIjN,GACJ,WACHnD,EAAIwD,IAAI4M,EAAIjN,GAEpB,CCEA,IAAMqV,GAAkB1Z,OAAO4b,OAAO,CAClCC,QAAS,EACTC,cAAe,EACfC,WAAY,EACZC,cAAe,EAEfC,YAAa,EACbpX,eAAgB,IA0BP8P,YAAM3M,GAAAZ,EAAAuN,EAAA3M,GAAA,IAAAX,EAAAC,EAAAqN,GAIf,SAAAA,EAAYuH,EAAI/B,EAAKvT,GAAM,IAAAc,EAoDP,OApDOC,OAAAgN,IACvBjN,EAAAL,EAAAvG,KAAAwD,OAeK6X,WAAY,EAKjBzU,EAAK0U,WAAY,EAIjB1U,EAAK2U,cAAgB,GAIrB3U,EAAK4U,WAAa,GAOlB5U,EAAK6U,OAAS,GAKd7U,EAAK8U,UAAY,EACjB9U,EAAK+U,IAAM,EACX/U,EAAKgV,KAAO,GACZhV,EAAKiV,MAAQ,GACbjV,EAAKwU,GAAKA,EACVxU,EAAKyS,IAAMA,EACPvT,GAAQA,EAAKgW,OACblV,EAAKkV,KAAOhW,EAAKgW,MAErBlV,EAAKmV,MAAQpP,EAAc,CAAE,EAAE7G,GAC3Bc,EAAKwU,GAAGY,cACRpV,EAAK+G,OAAO/G,CACpB,CAmuBC,OAluBDE,EAAA+M,EAAA,CAAA,CAAAtU,IAAA,eAAA8L,IAcA,WACI,OAAQ7H,KAAK6X,SACjB,GACA,CAAA9b,IAAA,YAAAkI,MAKA,WACI,IAAIjE,KAAKyY,KAAT,CAEA,IAAMb,EAAK5X,KAAK4X,GAChB5X,KAAKyY,KAAO,CACR7Y,GAAGgY,EAAI,OAAQ5X,KAAKyM,OAAOhK,KAAKzC,OAChCJ,GAAGgY,EAAI,SAAU5X,KAAK0Y,SAASjW,KAAKzC,OACpCJ,GAAGgY,EAAI,QAAS5X,KAAKiN,QAAQxK,KAAKzC,OAClCJ,GAAGgY,EAAI,QAAS5X,KAAK6M,QAAQpK,KAAKzC,OANlC,CAQR,GACA,CAAAjE,IAAA,SAAA8L,IAiBA,WACI,QAAS7H,KAAKyY,IAClB,GACA,CAAA1c,IAAA,UAAAkI,MAUA,WACI,OAAIjE,KAAK6X,YAET7X,KAAK2Y,YACA3Y,KAAK4X,GAAkB,eACxB5X,KAAK4X,GAAGzN,OACR,SAAWnK,KAAK4X,GAAGgB,aACnB5Y,KAAKyM,UALEzM,IAOf,GACA,CAAAjE,IAAA,OAAAkI,MAGA,WACI,OAAOjE,KAAKuX,SAChB,GACA,CAAAxb,IAAA,OAAAkI,MAeA,WAAc,IAAA,IAAAxC,EAAAnB,UAAA5B,OAANoC,EAAIC,IAAAA,MAAAU,GAAAE,EAAA,EAAAA,EAAAF,EAAAE,IAAJb,EAAIa,GAAArB,UAAAqB,GAGR,OAFAb,EAAKkV,QAAQ,WACbhW,KAAKa,KAAKR,MAAML,KAAMc,GACfd,IACX,GACA,CAAAjE,IAAA,OAAAkI,MAiBA,SAAK+I,GACD,GAAIoI,GAAgBrT,eAAeiL,GAC/B,MAAM,IAAIxJ,MAAM,IAAMwJ,EAAGzQ,WAAa,8BACzC,IAAAsc,IAAAA,EAAAvY,UAAA5B,OAHOoC,MAAIC,MAAA8X,EAAAA,EAAAA,OAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAJhY,EAAIgY,EAAAxY,GAAAA,UAAAwY,GAKZ,GADAhY,EAAKkV,QAAQhJ,GACThN,KAAKuY,MAAMQ,UAAY/Y,KAAKqY,MAAMW,YAAchZ,KAAKqY,eAErD,OADArY,KAAKiZ,YAAYnY,GACVd,KAEX,IAAM0E,EAAS,CACXxI,KAAMiZ,GAAWI,MACjBpZ,KAAM2E,EAEV4D,QAAiB,IAGjB,GAFAA,EAAOkP,QAAQC,UAAmC,IAAxB7T,KAAKqY,MAAMxE,SAEjC,mBAAsB/S,EAAKA,EAAKpC,OAAS,GAAI,CAC7C,IAAM6S,EAAKvR,KAAKmY,MACVe,EAAMpY,EAAKqY,MACjBnZ,KAAKoZ,qBAAqB7H,EAAI2H,GAC9BxU,EAAO6M,GAAKA,CAChB,CACA,IAAM8H,EAAsBrZ,KAAK4X,GAAG0B,QAChCtZ,KAAK4X,GAAG0B,OAAOhM,WACftN,KAAK4X,GAAG0B,OAAOhM,UAAUzJ,SAY7B,OAXsB7D,KAAKqY,MAAc,YAAMgB,IAAwBrZ,KAAK6X,aAGnE7X,KAAK6X,WACV7X,KAAKuZ,wBAAwB7U,GAC7B1E,KAAK0E,OAAOA,IAGZ1E,KAAKgY,WAAW9X,KAAKwE,IAEzB1E,KAAKqY,MAAQ,GACNrY,IACX,GACA,CAAAjE,IAAA,uBAAAkI,MAGA,SAAqBsN,EAAI2H,GAAK,IACtBlP,EADsBpG,EAAA5D,KAEpByK,EAAwC,QAA7BT,EAAKhK,KAAKqY,MAAM5N,eAA4B,IAAPT,EAAgBA,EAAKhK,KAAKuY,MAAMiB,WACtF,QAAgBzU,IAAZ0F,EAAJ,CAKA,IAAMgP,EAAQzZ,KAAK4X,GAAGpV,cAAa,kBACxBoB,EAAKwU,KAAK7G,GACjB,IAAK,IAAIvT,EAAI,EAAGA,EAAI4F,EAAKoU,WAAWtZ,OAAQV,IACpC4F,EAAKoU,WAAWha,GAAGuT,KAAOA,GAC1B3N,EAAKoU,WAAWpX,OAAO5C,EAAG,GAGlCkb,EAAI1c,KAAKoH,EAAM,IAAIJ,MAAM,2BAC5B,GAAEiH,GACHzK,KAAKoY,KAAK7G,GAAM,WAEZ3N,EAAKgU,GAAGlV,eAAe+W,GAAO,IAAA,IAAAC,EAAApZ,UAAA5B,OAFdoC,EAAIC,IAAAA,MAAA2Y,GAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAJ7Y,EAAI6Y,GAAArZ,UAAAqZ,GAGpBT,EAAI7Y,MAAMuD,EAAI,CAAG,MAAIiD,OAAK/F,IAd9B,MAFId,KAAKoY,KAAK7G,GAAM2H,CAkBxB,GACA,CAAAnd,IAAA,cAAAkI,MAgBA,SAAY+I,GAAa,IAAA,IAAA9E,EAAAlI,KAAA4Z,EAAAtZ,UAAA5B,OAANoC,MAAIC,MAAA6Y,EAAAA,EAAAA,OAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAJ/Y,EAAI+Y,EAAAvZ,GAAAA,UAAAuZ,GAEnB,IAAMC,OAAiC/U,IAAvB/E,KAAKqY,MAAM5N,cAAmD1F,IAA1B/E,KAAKuY,MAAMiB,WAC/D,OAAO,IAAI9N,SAAQ,SAACC,EAASoO,GACzBjZ,EAAKZ,MAAK,SAAC8Z,EAAMC,GACb,OAAIH,EACOE,EAAOD,EAAOC,GAAQrO,EAAQsO,GAG9BtO,EAAQqO,EAEvB,IACA9R,EAAKrH,KAAIR,MAAT6H,EAAU8E,CAAAA,GAAEnG,OAAK/F,GACrB,GACJ,GACA,CAAA/E,IAAA,cAAAkI,MAKA,SAAYnD,GAAM,IACVoY,EADU1Q,EAAAxI,KAEuB,mBAA1Bc,EAAKA,EAAKpC,OAAS,KAC1Bwa,EAAMpY,EAAKqY,OAEf,IAAMzU,EAAS,CACX6M,GAAIvR,KAAKkY,YACTgC,SAAU,EACVC,SAAS,EACTrZ,KAAAA,EACAuX,MAAOlP,EAAc,CAAE6P,WAAW,GAAQhZ,KAAKqY,QAEnDvX,EAAKZ,MAAK,SAACsG,GACP,GAAI9B,IAAW8D,EAAKyP,OAAO,GAA3B,CAKA,GADyB,OAARzR,EAET9B,EAAOwV,SAAW1R,EAAK+P,MAAMQ,UAC7BvQ,EAAKyP,OAAOhG,QACRiH,GACAA,EAAI1S,SAMZ,GADAgC,EAAKyP,OAAOhG,QACRiH,EAAK,CAAA,IAAAkB,IAAAA,EAAA9Z,UAAA5B,OAhBE2b,MAAYtZ,MAAAqZ,EAAAA,EAAAA,OAAAE,EAAA,EAAAA,EAAAF,EAAAE,IAAZD,EAAYC,EAAAha,GAAAA,UAAAga,GAiBnBpB,EAAG7Y,WAAC,EAAA,CAAA,MAAIwG,OAAKwT,GACjB,CAGJ,OADA3V,EAAOyV,SAAU,EACV3R,EAAK+R,aAjBZ,CAkBJ,IACAva,KAAKiY,OAAO/X,KAAKwE,GACjB1E,KAAKua,aACT,GACA,CAAAxe,IAAA,cAAAkI,MAMA,WAA2B,IAAfuW,EAAKla,UAAA5B,OAAA,QAAAqG,IAAAzE,UAAA,IAAAA,UAAA,GACb,GAAKN,KAAK6X,WAAoC,IAAvB7X,KAAKiY,OAAOvZ,OAAnC,CAGA,IAAMgG,EAAS1E,KAAKiY,OAAO,GACvBvT,EAAOyV,UAAYK,IAGvB9V,EAAOyV,SAAU,EACjBzV,EAAOwV,WACPla,KAAKqY,MAAQ3T,EAAO2T,MACpBrY,KAAKa,KAAKR,MAAML,KAAM0E,EAAO5D,MAR7B,CASJ,GACA,CAAA/E,IAAA,SAAAkI,MAMA,SAAOS,GACHA,EAAOmR,IAAM7V,KAAK6V,IAClB7V,KAAK4X,GAAG6C,QAAQ/V,EACpB,GACA,CAAA3I,IAAA,SAAAkI,MAKA,WAAS,IAAAyE,EAAA1I,KACmB,mBAAbA,KAAKsY,KACZtY,KAAKsY,MAAK,SAACnc,GACPuM,EAAKgS,mBAAmBve,EAC5B,IAGA6D,KAAK0a,mBAAmB1a,KAAKsY,KAErC,GACA,CAAAvc,IAAA,qBAAAkI,MAMA,SAAmB9H,GACf6D,KAAK0E,OAAO,CACRxI,KAAMiZ,GAAW8B,QACjB9a,KAAM6D,KAAK2a,KACLxR,EAAc,CAAEyR,IAAK5a,KAAK2a,KAAME,OAAQ7a,KAAK8a,aAAe3e,GAC5DA,GAEd,GACA,CAAAJ,IAAA,UAAAkI,MAMA,SAAQuC,GACCxG,KAAK6X,WACN7X,KAAKiB,aAAa,gBAAiBuF,EAE3C,GACA,CAAAzK,IAAA,UAAAkI,MAOA,SAAQhB,EAAQC,GACZlD,KAAK6X,WAAY,SACV7X,KAAKuR,GACZvR,KAAKiB,aAAa,aAAcgC,EAAQC,EAC5C,GACA,CAAAnH,IAAA,WAAAkI,MAMA,SAASS,GAEL,GADsBA,EAAOmR,MAAQ7V,KAAK6V,IAG1C,OAAQnR,EAAOxI,MACX,KAAKiZ,GAAW8B,QACRvS,EAAOvI,MAAQuI,EAAOvI,KAAK6M,IAC3BhJ,KAAK+a,UAAUrW,EAAOvI,KAAK6M,IAAKtE,EAAOvI,KAAKye,KAG5C5a,KAAKiB,aAAa,gBAAiB,IAAIuC,MAAM,8LAEjD,MACJ,KAAK2R,GAAWI,MAChB,KAAKJ,GAAWQ,aACZ3V,KAAKgb,QAAQtW,GACb,MACJ,KAAKyQ,GAAWK,IAChB,KAAKL,GAAWS,WACZ5V,KAAKib,MAAMvW,GACX,MACJ,KAAKyQ,GAAW+B,WACZlX,KAAKkb,eACL,MACJ,KAAK/F,GAAWgC,cACZnX,KAAKmb,UACL,IAAM3U,EAAM,IAAIhD,MAAMkB,EAAOvI,KAAKif,SAElC5U,EAAIrK,KAAOuI,EAAOvI,KAAKA,KACvB6D,KAAKiB,aAAa,gBAAiBuF,GAG/C,GACA,CAAAzK,IAAA,UAAAkI,MAMA,SAAQS,GACJ,IAAM5D,EAAO4D,EAAOvI,MAAQ,GACxB,MAAQuI,EAAO6M,IACfzQ,EAAKZ,KAAKF,KAAKkZ,IAAIxU,EAAO6M,KAE1BvR,KAAK6X,UACL7X,KAAKqb,UAAUva,GAGfd,KAAK+X,cAAc7X,KAAKxE,OAAO4b,OAAOxW,GAE9C,GAAC,CAAA/E,IAAA,YAAAkI,MACD,SAAUnD,GACN,GAAId,KAAKsb,eAAiBtb,KAAKsb,cAAc5c,OAAQ,CACjD,IACgC6c,EADaC,EAAAC,EAA3Bzb,KAAKsb,cAActa,SACL,IAAhC,IAAAwa,EAAAE,MAAAH,EAAAC,EAAAG,KAAAvN,MAAkC,CAAfmN,EAAAtX,MACN5D,MAAML,KAAMc,EACzB,CAAC,CAAA,MAAA0F,GAAAgV,EAAA5U,EAAAJ,EAAA,CAAA,QAAAgV,EAAAI,GAAA,CACL,CACA1X,EAAAC,EAAAkM,EAAA/T,WAAW+D,OAAAA,MAAAA,MAAML,KAAMc,GACnBd,KAAK2a,MAAQ7Z,EAAKpC,QAA2C,iBAA1BoC,EAAKA,EAAKpC,OAAS,KACtDsB,KAAK8a,YAAcha,EAAKA,EAAKpC,OAAS,GAE9C,GACA,CAAA3C,IAAA,MAAAkI,MAKA,SAAIsN,GACA,IAAMlQ,EAAOrB,KACT6b,GAAO,EACX,OAAO,WAEH,IAAIA,EAAJ,CAEAA,GAAO,EAAK,IAAA,IAAAC,EAAAxb,UAAA5B,OAJIoC,EAAIC,IAAAA,MAAA+a,GAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAJjb,EAAIib,GAAAzb,UAAAyb,GAKpB1a,EAAKqD,OAAO,CACRxI,KAAMiZ,GAAWK,IACjBjE,GAAIA,EACJpV,KAAM2E,GALN,EAQZ,GACA,CAAA/E,IAAA,QAAAkI,MAMA,SAAMS,GACF,IAAMwU,EAAMlZ,KAAKoY,KAAK1T,EAAO6M,IACzB,mBAAsB2H,IACtBA,EAAI7Y,MAAML,KAAM0E,EAAOvI,aAChB6D,KAAKoY,KAAK1T,EAAO6M,IAIhC,GACA,CAAAxV,IAAA,YAAAkI,MAKA,SAAUsN,EAAIqJ,GACV5a,KAAKuR,GAAKA,EACVvR,KAAK8X,UAAY8C,GAAO5a,KAAK2a,OAASC,EACtC5a,KAAK2a,KAAOC,EACZ5a,KAAK6X,WAAY,EACjB7X,KAAKgc,eACLhc,KAAKiB,aAAa,WAClBjB,KAAKua,aAAY,EACrB,GACA,CAAAxe,IAAA,eAAAkI,MAKA,WAAe,IAAAqF,EAAAtJ,KACXA,KAAK+X,cAAcjc,SAAQ,SAACgF,GAAI,OAAKwI,EAAK+R,UAAUva,MACpDd,KAAK+X,cAAgB,GACrB/X,KAAKgY,WAAWlc,SAAQ,SAAC4I,GACrB4E,EAAKiQ,wBAAwB7U,GAC7B4E,EAAK5E,OAAOA,EAChB,IACA1E,KAAKgY,WAAa,EACtB,GACA,CAAAjc,IAAA,eAAAkI,MAKA,WACIjE,KAAKmb,UACLnb,KAAK6M,QAAQ,uBACjB,GACA,CAAA9Q,IAAA,UAAAkI,MAOA,WACQjE,KAAKyY,OAELzY,KAAKyY,KAAK3c,SAAQ,SAACmgB,GAAU,OAAKA,OAClCjc,KAAKyY,UAAO1T,GAEhB/E,KAAK4X,GAAa,SAAE5X,KACxB,GACA,CAAAjE,IAAA,aAAAkI,MAgBA,WAUI,OATIjE,KAAK6X,WACL7X,KAAK0E,OAAO,CAAExI,KAAMiZ,GAAW+B,aAGnClX,KAAKmb,UACDnb,KAAK6X,WAEL7X,KAAK6M,QAAQ,wBAEV7M,IACX,GACA,CAAAjE,IAAA,QAAAkI,MAKA,WACI,OAAOjE,KAAKyX,YAChB,GACA,CAAA1b,IAAA,WAAAkI,MASA,SAAS4P,GAEL,OADA7T,KAAKqY,MAAMxE,SAAWA,EACf7T,IACX,GACA,CAAAjE,IAAA,WAAA8L,IASA,WAEI,OADA7H,KAAKqY,MAAc,UAAG,EACfrY,IACX,GACA,CAAAjE,IAAA,UAAAkI,MAaA,SAAQwG,GAEJ,OADAzK,KAAKqY,MAAM5N,QAAUA,EACdzK,IACX,GACA,CAAAjE,IAAA,QAAAkI,MAWA,SAAMiY,GAGF,OAFAlc,KAAKsb,cAAgBtb,KAAKsb,eAAiB,GAC3Ctb,KAAKsb,cAAcpb,KAAKgc,GACjBlc,IACX,GACA,CAAAjE,IAAA,aAAAkI,MAWA,SAAWiY,GAGP,OAFAlc,KAAKsb,cAAgBtb,KAAKsb,eAAiB,GAC3Ctb,KAAKsb,cAActF,QAAQkG,GACpBlc,IACX,GACA,CAAAjE,IAAA,SAAAkI,MAkBA,SAAOiY,GACH,IAAKlc,KAAKsb,cACN,OAAOtb,KAEX,GAAIkc,GAEA,IADA,IAAMhb,EAAYlB,KAAKsb,cACdtd,EAAI,EAAGA,EAAIkD,EAAUxC,OAAQV,IAClC,GAAIke,IAAahb,EAAUlD,GAEvB,OADAkD,EAAUN,OAAO5C,EAAG,GACbgC,UAKfA,KAAKsb,cAAgB,GAEzB,OAAOtb,IACX,GACA,CAAAjE,IAAA,eAAAkI,MAIA,WACI,OAAOjE,KAAKsb,eAAiB,EACjC,GACA,CAAAvf,IAAA,gBAAAkI,MAaA,SAAciY,GAGV,OAFAlc,KAAKmc,sBAAwBnc,KAAKmc,uBAAyB,GAC3Dnc,KAAKmc,sBAAsBjc,KAAKgc,GACzBlc,IACX,GACA,CAAAjE,IAAA,qBAAAkI,MAaA,SAAmBiY,GAGf,OAFAlc,KAAKmc,sBAAwBnc,KAAKmc,uBAAyB,GAC3Dnc,KAAKmc,sBAAsBnG,QAAQkG,GAC5Blc,IACX,GACA,CAAAjE,IAAA,iBAAAkI,MAkBA,SAAeiY,GACX,IAAKlc,KAAKmc,sBACN,OAAOnc,KAEX,GAAIkc,GAEA,IADA,IAAMhb,EAAYlB,KAAKmc,sBACdne,EAAI,EAAGA,EAAIkD,EAAUxC,OAAQV,IAClC,GAAIke,IAAahb,EAAUlD,GAEvB,OADAkD,EAAUN,OAAO5C,EAAG,GACbgC,UAKfA,KAAKmc,sBAAwB,GAEjC,OAAOnc,IACX,GACA,CAAAjE,IAAA,uBAAAkI,MAIA,WACI,OAAOjE,KAAKmc,uBAAyB,EACzC,GACA,CAAApgB,IAAA,0BAAAkI,MAOA,SAAwBS,GACpB,GAAI1E,KAAKmc,uBAAyBnc,KAAKmc,sBAAsBzd,OAAQ,CACjE,IACgC0d,EADqBC,EAAAZ,EAAnCzb,KAAKmc,sBAAsBnb,SACb,IAAhC,IAAAqb,EAAAX,MAAAU,EAAAC,EAAAV,KAAAvN,MAAkC,CAAfgO,EAAAnY,MACN5D,MAAML,KAAM0E,EAAOvI,KAChC,CAAC,CAAA,MAAAqK,GAAA6V,EAAAzV,EAAAJ,EAAA,CAAA,QAAA6V,EAAAT,GAAA,CACL,CACJ,KAACvL,CAAA,EA5xBuB3Q,GC7BrB,SAAS4c,GAAQha,GACpBA,EAAOA,GAAQ,GACftC,KAAKuc,GAAKja,EAAKka,KAAO,IACtBxc,KAAKyc,IAAMna,EAAKma,KAAO,IACvBzc,KAAK0c,OAASpa,EAAKoa,QAAU,EAC7B1c,KAAK2c,OAASra,EAAKqa,OAAS,GAAKra,EAAKqa,QAAU,EAAIra,EAAKqa,OAAS,EAClE3c,KAAK4c,SAAW,CACpB,CAOAN,GAAQhgB,UAAUugB,SAAW,WACzB,IAAIN,EAAKvc,KAAKuc,GAAKrW,KAAK4W,IAAI9c,KAAK0c,OAAQ1c,KAAK4c,YAC9C,GAAI5c,KAAK2c,OAAQ,CACb,IAAII,EAAO7W,KAAK8W,SACZC,EAAY/W,KAAKC,MAAM4W,EAAO/c,KAAK2c,OAASJ,GAChDA,EAAoC,IAAN,EAAxBrW,KAAKC,MAAa,GAAP4W,IAAuBR,EAAKU,EAAYV,EAAKU,CAClE,CACA,OAAgC,EAAzB/W,KAAKsW,IAAID,EAAIvc,KAAKyc,IAC7B,EAMAH,GAAQhgB,UAAU4gB,MAAQ,WACtBld,KAAK4c,SAAW,CACpB,EAMAN,GAAQhgB,UAAU6gB,OAAS,SAAUX,GACjCxc,KAAKuc,GAAKC,CACd,EAMAF,GAAQhgB,UAAU8gB,OAAS,SAAUX,GACjCzc,KAAKyc,IAAMA,CACf,EAMAH,GAAQhgB,UAAU+gB,UAAY,SAAUV,GACpC3c,KAAK2c,OAASA,CAClB,EC3DaW,IAAAA,YAAO5Z,GAAAZ,EAAAwa,EAAA5Z,GAAA,IAAAX,EAAAC,EAAAsa,GAChB,SAAAA,EAAYjU,EAAK/G,GAAM,IAAAc,EACf4G,EADe3G,OAAAia,IAEnBla,EAAAL,EAAAvG,KAAAwD,OACKud,KAAO,GACZna,EAAKqV,KAAO,GACRpP,GAAO,WAAQkH,EAAYlH,KAC3B/G,EAAO+G,EACPA,OAAMtE,IAEVzC,EAAOA,GAAQ,IACV4C,KAAO5C,EAAK4C,MAAQ,aACzB9B,EAAKd,KAAOA,EACZD,EAAqByB,EAAAV,GAAOd,GAC5Bc,EAAKoa,cAAmC,IAAtBlb,EAAKkb,cACvBpa,EAAKqa,qBAAqBnb,EAAKmb,sBAAwBC,KACvDta,EAAKua,kBAAkBrb,EAAKqb,mBAAqB,KACjDva,EAAKwa,qBAAqBtb,EAAKsb,sBAAwB,KACvDxa,EAAKya,oBAAwD,QAAnC7T,EAAK1H,EAAKub,2BAAwC,IAAP7T,EAAgBA,EAAK,IAC1F5G,EAAK0a,QAAU,IAAIxB,GAAQ,CACvBE,IAAKpZ,EAAKua,oBACVlB,IAAKrZ,EAAKwa,uBACVjB,OAAQvZ,EAAKya,wBAEjBza,EAAKqH,QAAQ,MAAQnI,EAAKmI,QAAU,IAAQnI,EAAKmI,SACjDrH,EAAKwV,YAAc,SACnBxV,EAAKiG,IAAMA,EACX,IAAM0U,EAAUzb,EAAK0b,QAAUA,GAKf,OAJhB5a,EAAK6a,QAAU,IAAIF,EAAQ1I,QAC3BjS,EAAK8a,QAAU,IAAIH,EAAQ7H,QAC3B9S,EAAKoV,cAAoC,IAArBlW,EAAK6b,YACrB/a,EAAKoV,cACLpV,EAAK+G,OAAO/G,CACpB,CA6TC,OA7TAE,EAAAga,EAAA,CAAA,CAAAvhB,IAAA,eAAAkI,MACD,SAAama,GACT,OAAK9d,UAAU5B,QAEfsB,KAAKqe,gBAAkBD,EAChBpe,MAFIA,KAAKqe,aAGpB,GAAC,CAAAtiB,IAAA,uBAAAkI,MACD,SAAqBma,GACjB,YAAUrZ,IAANqZ,EACOpe,KAAKse,uBAChBte,KAAKse,sBAAwBF,EACtBpe,KACX,GAAC,CAAAjE,IAAA,oBAAAkI,MACD,SAAkBma,GACd,IAAIpU,EACJ,YAAUjF,IAANqZ,EACOpe,KAAKue,oBAChBve,KAAKue,mBAAqBH,EACF,QAAvBpU,EAAKhK,KAAK8d,eAA4B,IAAP9T,GAAyBA,EAAGmT,OAAOiB,GAC5Dpe,KACX,GAAC,CAAAjE,IAAA,sBAAAkI,MACD,SAAoBma,GAChB,IAAIpU,EACJ,YAAUjF,IAANqZ,EACOpe,KAAKwe,sBAChBxe,KAAKwe,qBAAuBJ,EACJ,QAAvBpU,EAAKhK,KAAK8d,eAA4B,IAAP9T,GAAyBA,EAAGqT,UAAUe,GAC/Dpe,KACX,GAAC,CAAAjE,IAAA,uBAAAkI,MACD,SAAqBma,GACjB,IAAIpU,EACJ,YAAUjF,IAANqZ,EACOpe,KAAKye,uBAChBze,KAAKye,sBAAwBL,EACL,QAAvBpU,EAAKhK,KAAK8d,eAA4B,IAAP9T,GAAyBA,EAAGoT,OAAOgB,GAC5Dpe,KACX,GAAC,CAAAjE,IAAA,UAAAkI,MACD,SAAQma,GACJ,OAAK9d,UAAU5B,QAEfsB,KAAK0e,SAAWN,EACTpe,MAFIA,KAAK0e,QAGpB,GACA,CAAA3iB,IAAA,uBAAAkI,MAMA,YAESjE,KAAK2e,eACN3e,KAAKqe,eACqB,IAA1Bre,KAAK8d,QAAQlB,UAEb5c,KAAK4e,WAEb,GACA,CAAA7iB,IAAA,OAAAkI,MAOA,SAAKlE,GAAI,IAAA6D,EAAA5D,KACL,IAAKA,KAAK4Y,YAAYvT,QAAQ,QAC1B,OAAOrF,KACXA,KAAKsZ,OAAS,IAAIuF,GAAO7e,KAAKqJ,IAAKrJ,KAAKsC,MACxC,IAAM0B,EAAShE,KAAKsZ,OACdjY,EAAOrB,KACbA,KAAK4Y,YAAc,UACnB5Y,KAAK8e,eAAgB,EAErB,IAAMC,EAAiBnf,GAAGoE,EAAQ,QAAQ,WACtC3C,EAAKoL,SACL1M,GAAMA,GACV,IACM4J,EAAU,SAACnD,GACb5C,EAAKuH,UACLvH,EAAKgV,YAAc,SACnBhV,EAAK3C,aAAa,QAASuF,GACvBzG,EACAA,EAAGyG,GAIH5C,EAAKob,wBAIPC,EAAWrf,GAAGoE,EAAQ,QAAS2F,GACrC,IAAI,IAAU3J,KAAK0e,SAAU,CACzB,IAAMjU,EAAUzK,KAAK0e,SAEfjF,EAAQzZ,KAAKwC,cAAa,WAC5Buc,IACApV,EAAQ,IAAInG,MAAM,YAClBQ,EAAOyE,OACV,GAAEgC,GACCzK,KAAKsC,KAAKoK,WACV+M,EAAM7M,QAEV5M,KAAKyY,KAAKvY,MAAK,WACX0D,EAAKlB,eAAe+W,EACxB,GACJ,CAGA,OAFAzZ,KAAKyY,KAAKvY,KAAK6e,GACf/e,KAAKyY,KAAKvY,KAAK+e,GACRjf,IACX,GACA,CAAAjE,IAAA,UAAAkI,MAMA,SAAQlE,GACJ,OAAOC,KAAKmK,KAAKpK,EACrB,GACA,CAAAhE,IAAA,SAAAkI,MAKA,WAEIjE,KAAKmL,UAELnL,KAAK4Y,YAAc,OACnB5Y,KAAKiB,aAAa,QAElB,IAAM+C,EAAShE,KAAKsZ,OACpBtZ,KAAKyY,KAAKvY,KAAKN,GAAGoE,EAAQ,OAAQhE,KAAKkf,OAAOzc,KAAKzC,OAAQJ,GAAGoE,EAAQ,OAAQhE,KAAKmf,OAAO1c,KAAKzC,OAAQJ,GAAGoE,EAAQ,QAAShE,KAAKiN,QAAQxK,KAAKzC,OAAQJ,GAAGoE,EAAQ,QAAShE,KAAK6M,QAAQpK,KAAKzC,OAAQJ,GAAGI,KAAKke,QAAS,UAAWle,KAAKof,UAAU3c,KAAKzC,OACvP,GACA,CAAAjE,IAAA,SAAAkI,MAKA,WACIjE,KAAKiB,aAAa,OACtB,GACA,CAAAlF,IAAA,SAAAkI,MAKA,SAAO9H,GACH,IACI6D,KAAKke,QAAQmB,IAAIljB,EACpB,CACD,MAAOyK,GACH5G,KAAK6M,QAAQ,cAAejG,EAChC,CACJ,GACA,CAAA7K,IAAA,YAAAkI,MAKA,SAAUS,GAAQ,IAAAwD,EAAAlI,KAEdyL,IAAS,WACLvD,EAAKjH,aAAa,SAAUyD,EAChC,GAAG1E,KAAKwC,aACZ,GACA,CAAAzG,IAAA,UAAAkI,MAKA,SAAQuC,GACJxG,KAAKiB,aAAa,QAASuF,EAC/B,GACA,CAAAzK,IAAA,SAAAkI,MAMA,SAAO4R,EAAKvT,GACR,IAAI0B,EAAShE,KAAKud,KAAK1H,GAQvB,OAPK7R,EAIIhE,KAAKwY,eAAiBxU,EAAOsb,QAClCtb,EAAOuT,WAJPvT,EAAS,IAAIqM,GAAOrQ,KAAM6V,EAAKvT,GAC/BtC,KAAKud,KAAK1H,GAAO7R,GAKdA,CACX,GACA,CAAAjI,IAAA,WAAAkI,MAMA,SAASD,GAEL,IADA,IACAub,EAAA,EAAAC,EADa9jB,OAAOG,KAAKmE,KAAKud,MACRgC,EAAAC,EAAA9gB,OAAA6gB,IAAE,CAAnB,IAAM1J,EAAG2J,EAAAD,GAEV,GADevf,KAAKud,KAAK1H,GACdyJ,OACP,MAER,CACAtf,KAAKyf,QACT,GACA,CAAA1jB,IAAA,UAAAkI,MAMA,SAAQS,GAEJ,IADA,IAAM0D,EAAiBpI,KAAKie,QAAQrY,OAAOlB,GAClC1G,EAAI,EAAGA,EAAIoK,EAAe1J,OAAQV,IACvCgC,KAAKsZ,OAAO7U,MAAM2D,EAAepK,GAAI0G,EAAOkP,QAEpD,GACA,CAAA7X,IAAA,UAAAkI,MAKA,WACIjE,KAAKyY,KAAK3c,SAAQ,SAACmgB,GAAU,OAAKA,OAClCjc,KAAKyY,KAAK/Z,OAAS,EACnBsB,KAAKke,QAAQ/C,SACjB,GACA,CAAApf,IAAA,SAAAkI,MAKA,WACIjE,KAAK8e,eAAgB,EACrB9e,KAAK2e,eAAgB,EACrB3e,KAAK6M,QAAQ,gBACT7M,KAAKsZ,QACLtZ,KAAKsZ,OAAO7Q,OACpB,GACA,CAAA1M,IAAA,aAAAkI,MAKA,WACI,OAAOjE,KAAKyf,QAChB,GACA,CAAA1jB,IAAA,UAAAkI,MAKA,SAAQhB,EAAQC,GACZlD,KAAKmL,UACLnL,KAAK8d,QAAQZ,QACbld,KAAK4Y,YAAc,SACnB5Y,KAAKiB,aAAa,QAASgC,EAAQC,GAC/BlD,KAAKqe,gBAAkBre,KAAK8e,eAC5B9e,KAAK4e,WAEb,GACA,CAAA7iB,IAAA,YAAAkI,MAKA,WAAY,IAAAuE,EAAAxI,KACR,GAAIA,KAAK2e,eAAiB3e,KAAK8e,cAC3B,OAAO9e,KACX,IAAMqB,EAAOrB,KACb,GAAIA,KAAK8d,QAAQlB,UAAY5c,KAAKse,sBAC9Bte,KAAK8d,QAAQZ,QACbld,KAAKiB,aAAa,oBAClBjB,KAAK2e,eAAgB,MAEpB,CACD,IAAMe,EAAQ1f,KAAK8d,QAAQjB,WAC3B7c,KAAK2e,eAAgB,EACrB,IAAMlF,EAAQzZ,KAAKwC,cAAa,WACxBnB,EAAKyd,gBAETtW,EAAKvH,aAAa,oBAAqBI,EAAKyc,QAAQlB,UAEhDvb,EAAKyd,eAETzd,EAAK8I,MAAK,SAAC3D,GACHA,GACAnF,EAAKsd,eAAgB,EACrBtd,EAAKud,YACLpW,EAAKvH,aAAa,kBAAmBuF,IAGrCnF,EAAKse,aAEb,IACH,GAAED,GACC1f,KAAKsC,KAAKoK,WACV+M,EAAM7M,QAEV5M,KAAKyY,KAAKvY,MAAK,WACXsI,EAAK9F,eAAe+W,EACxB,GACJ,CACJ,GACA,CAAA1d,IAAA,cAAAkI,MAKA,WACI,IAAM2b,EAAU5f,KAAK8d,QAAQlB,SAC7B5c,KAAK2e,eAAgB,EACrB3e,KAAK8d,QAAQZ,QACbld,KAAKiB,aAAa,YAAa2e,EACnC,KAACtC,CAAA,EA9VwB5d,GCAvBmgB,GAAQ,CAAA,EACd,SAAS9hB,GAAOsL,EAAK/G,GACE,WAAfiO,EAAOlH,KACP/G,EAAO+G,EACPA,OAAMtE,GAGV,IASI6S,EATEkI,ECHH,SAAazW,GAAqB,IAAhBnE,EAAI5E,UAAA5B,OAAA,QAAAqG,IAAAzE,UAAA,GAAAA,UAAA,GAAG,GAAIyf,EAAGzf,UAAA5B,OAAA4B,EAAAA,kBAAAyE,EAC/BnI,EAAMyM,EAEV0W,EAAMA,GAA4B,oBAAb1Y,UAA4BA,SAC7C,MAAQgC,IACRA,EAAM0W,EAAIxY,SAAW,KAAOwY,EAAIpQ,MAEjB,iBAARtG,IACH,MAAQA,EAAI9K,OAAO,KAEf8K,EADA,MAAQA,EAAI9K,OAAO,GACbwhB,EAAIxY,SAAW8B,EAGf0W,EAAIpQ,KAAOtG,GAGpB,sBAAsB2W,KAAK3W,KAExBA,OADA,IAAuB0W,EACjBA,EAAIxY,SAAW,KAAO8B,EAGtB,WAAaA,GAI3BzM,EAAMwS,GAAM/F,IAGXzM,EAAI0I,OACD,cAAc0a,KAAKpjB,EAAI2K,UACvB3K,EAAI0I,KAAO,KAEN,eAAe0a,KAAKpjB,EAAI2K,YAC7B3K,EAAI0I,KAAO,QAGnB1I,EAAIsI,KAAOtI,EAAIsI,MAAQ,IACvB,IACMyK,GADkC,IAA3B/S,EAAI+S,KAAKtK,QAAQ,KACV,IAAMzI,EAAI+S,KAAO,IAAM/S,EAAI+S,KAS/C,OAPA/S,EAAI2U,GAAK3U,EAAI2K,SAAW,MAAQoI,EAAO,IAAM/S,EAAI0I,KAAOJ,EAExDtI,EAAIqjB,KACArjB,EAAI2K,SACA,MACAoI,GACCoQ,GAAOA,EAAIza,OAAS1I,EAAI0I,KAAO,GAAK,IAAM1I,EAAI0I,MAChD1I,CACX,CD7CmBsjB,CAAI7W,GADnB/G,EAAOA,GAAQ,IACc4C,MAAQ,cAC/BwK,EAASoQ,EAAOpQ,OAChB6B,EAAKuO,EAAOvO,GACZrM,EAAO4a,EAAO5a,KACdib,EAAgBN,GAAMtO,IAAOrM,KAAQ2a,GAAMtO,GAAU,KAkB3D,OAjBsBjP,EAAK8d,UACvB9d,EAAK,0BACL,IAAUA,EAAK+d,WACfF,EAGAvI,EAAK,IAAI0F,GAAQ5N,EAAQpN,IAGpBud,GAAMtO,KACPsO,GAAMtO,GAAM,IAAI+L,GAAQ5N,EAAQpN,IAEpCsV,EAAKiI,GAAMtO,IAEXuO,EAAO/b,QAAUzB,EAAKyB,QACtBzB,EAAKyB,MAAQ+b,EAAO7P,UAEjB2H,EAAG5T,OAAO8b,EAAO5a,KAAM5C,EAClC,QAGA6G,EAAcpL,GAAQ,CAClBuf,QAAAA,GACAjN,OAAAA,GACAuH,GAAI7Z,GACJwZ,QAASxZ"} \ No newline at end of file diff --git a/dist/socket.io.msgpack.min.js b/dist/socket.io.msgpack.min.js index a95ba4e1..f7eacddd 100644 --- a/dist/socket.io.msgpack.min.js +++ b/dist/socket.io.msgpack.min.js @@ -1,7 +1,7 @@ /*! - * Socket.IO v4.7.0 + * Socket.IO v4.7.1 * (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 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})); +!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 g=Object.create(null);g.open="0",g.close="1",g.ping="2",g.pong="3",g.message="4",g.upgrade="5",g.noop="6";var _=Object.create(null);Object.keys(g).forEach((function(t){_[g[t]]=t}));var m,b={type:"error",data:"parser error"},k="function"==typeof Blob||"undefined"!=typeof Blob&&"[object BlobConstructor]"===Object.prototype.toString.call(Blob),w="function"==typeof ArrayBuffer,O=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 k&&i instanceof Blob?e?n(i):C(i,n):w&&(i instanceof ArrayBuffer||O(i))?e?n(i):C(new Blob([i]),n):n(g[r]+(i||""))},C=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 R="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",A="undefined"==typeof Uint8Array?[]:new Uint8Array(256),S=0;S<64;S++)A[R.charCodeAt(S)]=S;var L,x="function"==typeof ArrayBuffer,B=function(t,e){if("string"!=typeof t)return{type:"message",data:P(t,e)};var n=t.charAt(0);return"b"===n?{type:"message",data:U(t.substring(1),e)}:_[n]?t.length>1?{type:_[n],data:t.substring(1)}:{type:_[n]}:b},U=function(t,e){if(x){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 P(n,e)}return{base64:!0,data:t}},P=function(t,e){return"blob"===e?t instanceof Blob?t:new Blob([t]):t instanceof ArrayBuffer?t:t.buffer},j=String.fromCharCode(30);function q(t){if(t)return function(t){for(var e in q.prototype)t[e]=q.prototype[e];return t}(t)}q.prototype.on=q.prototype.addEventListener=function(t,e){return this._callbacks=this._callbacks||{},(this._callbacks["$"+t]=this._callbacks["$"+t]||[]).push(e),this},q.prototype.once=function(t,e){function n(){this.off(t,n),e.apply(this,arguments)}return n.fn=e,this.on(t,n),this},q.prototype.off=q.prototype.removeListener=q.prototype.removeAllListeners=q.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}(q),z="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-_".split(""),V=64,J={},Q=0,X=0;function K(t){var e="";do{e=z[t%V]+e,t=Math.floor(t/V)}while(t>0);return e}function Y(){var t=K(+new Date);return t!==H?(Q=0,H=t):t+"."+K(Q++)}for(;X0&&void 0!==arguments[0]?arguments[0]:{};return o(t,{xd:this.xd,cookieJar:this.cookieJar},this.opts),new it(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}(W),it=function(t){s(r,t);var e=p(r);function r(t,i){var o;return n(this,r),F(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=D(this.opts,"agent","pfx","key","passphrase","cert","ca","ciphers","rejectUnauthorized","autoUnref");n.xdomain=!!this.opts.xd;var i=this.xhr=new tt(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=et,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}(q);if(it.requestsCount=0,it.requests={},"undefined"!=typeof document)if("function"==typeof attachEvent)attachEvent("onunload",ot);else if("function"==typeof addEventListener){addEventListener("onpagehide"in N?"pagehide":"unload",ot,!1)}function ot(){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)},at=N.WebSocket||N.MozWebSocket,ut="undefined"!=typeof navigator&&"string"==typeof navigator.product&&"reactnative"===navigator.product.toLowerCase(),ct=function(t){s(r,t);var e=p(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=ut?{}:D(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 at(t,e,n):e?new at(t,e):new at(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(){var n=t[r],i=r===t.length-1;E(n,e.supportsBinary,(function(t){try{e.ws.send(t)}catch(t){}i&&st((function(){e.writable=!0,e.emitReserved("drain")}),e.setTimeoutFn)}))},r=0;r54;return B(r?t:L.decode(t),n)}(o,n,"arraybuffer")),n=!1):n=!0,e())})).catch((function(t){}))}();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(){var n=t[r],i=r===t.length-1;!function(t,e){k&&t.data instanceof Blob?t.data.arrayBuffer().then(T).then(e):w&&(t.data instanceof ArrayBuffer||O(t.data))?e(T(t.data)):E(t,!1,(function(t){m||(m=new TextEncoder),e(m.encode(t))}))}(n,(function(t){(function(t,e){return"message"===t.type&&"string"!=typeof t.data&&e[0]>=48&&e[0]<=54})(n,t)&&e.writer.write(Uint8Array.of(54)),e.writer.write(t).then((function(){i&&st((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=dt(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=dt(s.host).host),F(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:!1},s),i.opts.path=i.opts.path.replace(/\/$/,"")+(i.opts.addTrailingSlash?"/":""),"string"==typeof i.opts.query&&(i.opts.query=function(t){for(var e={},n=t.split("&"),r=0,i=n.length;r1))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 mt(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 mt(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},kt.prototype._bin=function(t){var e=this._buffer.slice(this._offset,this._offset+t);return this._offset+=t,e},kt.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 wt=function(t){var e=new kt(t),n=e._parse();if(e._offset!==t.byteLength)throw new Error(t.byteLength-e._offset+" trailing bytes");return n};gt.encode=bt,gt.decode=wt;var Ot,Et={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=At.CONNECT&&t.type<=At.CONNECT_ERROR))throw new Error("invalid packet type");if(!Lt(t.nsp))throw new Error("invalid namespace");if(!function(t){switch(t.type){case At.CONNECT:return void 0===t.data||xt(t.data);case At.DISCONNECT:return void 0===t.data;case At.CONNECT_ERROR:return Lt(t.data)||xt(t.data);default:return Array.isArray(t.data)}}(t))throw new Error("invalid payload");if(!(void 0===t.id||St(t.id)))throw new Error("invalid packet id")},Ut.prototype.destroy=function(){};var Pt=vt.Encoder=Bt,jt=vt.Decoder=Ut,qt=t({__proto__:null,default:vt,protocol:Rt,get PacketType(){return Ot},Encoder:Pt,Decoder:jt},[vt]);function Nt(t,e,n){return t.on(e,n),function(){t.off(e,n)}}var Dt=Object.freeze({connect:1,connect_error:1,disconnect:1,disconnecting:1,newListener:1,removeListener:1}),Mt=function(t){s(r,t);var e=p(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=[Nt(t,"open",this.onopen.bind(this)),Nt(t,"packet",this.onpacket.bind(this)),Nt(t,"error",this.onerror.bind(this)),Nt(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 i=arguments.length,o=new Array(i>1?i-1:0),s=1;s0&&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?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 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=v(this._anyListeners.slice());try{for(n.s();!(e=n.n()).done;){e.value.apply(this,t)}}catch(t){n.e(t)}finally{n.f()}}d(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}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 Ft=function(t){s(o,t);var r=p(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,F(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 It({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||qt;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 yt(this.uri,this.opts);var n=this.engine,r=this;this._readyState="opening",this.skipReconnect=!1;var i=Nt(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=Nt(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(Nt(t,"ping",this.onping.bind(this)),Nt(t,"data",this.ondata.bind(this)),Nt(t,"error",this.onerror.bind(this)),Nt(t,"close",this.onclose.bind(this)),Nt(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 Mt(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}(q),Ht={};function $t(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=dt(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=Ht[s]&&a in Ht[s].nsps;return n.forceNew||n["force new connection"]||!1===n.multiplex||u?r=new Ft(o,n):(Ht[s]||(Ht[s]=new Ft(o,n)),r=Ht[s]),i.query&&!n.query&&(n.query=i.queryKey),r.socket(i.path,n)}return o($t,{Manager:Ft,Socket:Mt,io:$t,connect:$t}),$t})); //# 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 76c77833..521d0cfa 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-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 +{"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/encodePacket.browser.js","../node_modules/engine.io-parser/build/esm/contrib/base64-arraybuffer.js","../node_modules/engine.io-parser/build/esm/index.js","../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/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/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","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/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}\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\n .then(() => {\n this.onClose();\n })\n .catch((err) => {\n this.onError(\"webtransport error\", err);\n });\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\n .read()\n .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 .catch((err) => {\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: false,\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, {\n query,\n socket: this,\n hostname: this.hostname,\n secure: this.secure,\n port: this.port,\n }, this.opts.transportOptions[name]);\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","_ref","supportsBinary","callback","encodeBlobAsBase64","fileReader","FileReader","onload","content","result","split","readAsDataURL","toArray","Uint8Array","byteOffset","byteLength","chars","lookup","i","charCodeAt","TEXT_DECODER","decodePacket","encodedPacket","binaryType","mapBinary","charAt","decodeBase64Packet","substring","length","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","_Error","_inherits","_super","_createSuper","reason","description","context","_this","_classCallCheck","_createClass","_wrapNativeSuper","Error","Transport","_Emitter","_super2","_this2","writable","_assertThisInitialized","query","socket","value","_get","_getPrototypeOf","readyState","doOpen","doClose","onClose","packets","write","packet","onPacket","details","onPause","schema","undefined","_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","_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","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","_typeof","prevBufferLen","agent","upgrade","rememberUpgrade","addTrailingSlash","rejectUnauthorized","perMessageDeflate","threshold","closeOnBeforeunload","qs","qry","pairs","l","pair","decodeURIComponent","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","notifyOutgoingListeners","ackTimeout","timer","_len3","_key3","_len4","_key4","withErr","reject","arg1","arg2","tryCount","pending","_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","parsed","loc","test","href","url","sameNamespace","forceNew","multiplex"],"mappings":";;;;;w4JAAA,IAAMA,EAAeC,OAAOC,OAAO,MACnCF,EAAmB,KAAI,IACvBA,EAAoB,MAAI,IACxBA,EAAmB,KAAI,IACvBA,EAAmB,KAAI,IACvBA,EAAsB,QAAI,IAC1BA,EAAsB,QAAI,IAC1BA,EAAmB,KAAI,IACvB,IAAMG,EAAuBF,OAAOC,OAAO,MAC3CD,OAAOG,KAAKJ,GAAcK,SAAQ,SAAAC,GAC9BH,EAAqBH,EAAaM,IAAQA,CAC9C,IACA,ICuCIC,EDvCEC,EAAe,CAAEC,KAAM,QAASC,KAAM,gBCXtCC,EAAiC,mBAATC,MACT,oBAATA,MACqC,6BAAzCX,OAAOY,UAAUC,SAASC,KAAKH,MACjCI,EAA+C,mBAAhBC,YAE/BC,EAAS,SAAAC,GACX,MAAqC,mBAAvBF,YAAYC,OACpBD,YAAYC,OAAOC,GACnBA,GAAOA,EAAIC,kBAAkBH,WACvC,EACMI,EAAe,SAAHC,EAAoBC,EAAgBC,GAAa,IAA3Cf,EAAIa,EAAJb,KAAMC,EAAIY,EAAJZ,KAC1B,OAAIC,GAAkBD,aAAgBE,KAC9BW,EACOC,EAASd,GAGTe,EAAmBf,EAAMc,GAG/BR,IACJN,aAAgBO,aAAeC,EAAOR,IACnCa,EACOC,EAASd,GAGTe,EAAmB,IAAIb,KAAK,CAACF,IAAQc,GAI7CA,EAASxB,EAAaS,IAASC,GAAQ,IAClD,EACMe,EAAqB,SAACf,EAAMc,GAC9B,IAAME,EAAa,IAAIC,WAKvB,OAJAD,EAAWE,OAAS,WAChB,IAAMC,EAAUH,EAAWI,OAAOC,MAAM,KAAK,GAC7CP,EAAS,KAAOK,GAAW,MAExBH,EAAWM,cAActB,EACpC,EACA,SAASuB,EAAQvB,GACb,OAAIA,aAAgBwB,WACTxB,EAEFA,aAAgBO,YACd,IAAIiB,WAAWxB,GAGf,IAAIwB,WAAWxB,EAAKU,OAAQV,EAAKyB,WAAYzB,EAAK0B,WAEjE,CC9CA,IAHA,IAAMC,EAAQ,mEAERC,EAA+B,oBAAfJ,WAA6B,GAAK,IAAIA,WAAW,KAC9DK,EAAI,EAAGA,EAAIF,GAAcE,IAC9BD,EAAOD,EAAMG,WAAWD,IAAMA,EAkB3B,ICOHE,EC5BEzB,EAA+C,mBAAhBC,YACxByB,EAAe,SAACC,EAAeC,GACxC,GAA6B,iBAAlBD,EACP,MAAO,CACHlC,KAAM,UACNC,KAAMmC,EAAUF,EAAeC,IAGvC,IAAMnC,EAAOkC,EAAcG,OAAO,GAClC,MAAa,MAATrC,EACO,CACHA,KAAM,UACNC,KAAMqC,EAAmBJ,EAAcK,UAAU,GAAIJ,IAG1CzC,EAAqBM,GAIjCkC,EAAcM,OAAS,EACxB,CACExC,KAAMN,EAAqBM,GAC3BC,KAAMiC,EAAcK,UAAU,IAEhC,CACEvC,KAAMN,EAAqBM,IARxBD,CAUf,EACMuC,EAAqB,SAACrC,EAAMkC,GAC9B,GAAI5B,EAAuB,CACvB,IAAMkC,EFTQ,SAACC,GACnB,IAA8DZ,EAAUa,EAAUC,EAAUC,EAAUC,EAAlGC,EAA+B,IAAhBL,EAAOF,OAAeQ,EAAMN,EAAOF,OAAWS,EAAI,EACnC,MAA9BP,EAAOA,EAAOF,OAAS,KACvBO,IACkC,MAA9BL,EAAOA,EAAOF,OAAS,IACvBO,KAGR,IAAMG,EAAc,IAAI1C,YAAYuC,GAAeI,EAAQ,IAAI1B,WAAWyB,GAC1E,IAAKpB,EAAI,EAAGA,EAAIkB,EAAKlB,GAAK,EACtBa,EAAWd,EAAOa,EAAOX,WAAWD,IACpCc,EAAWf,EAAOa,EAAOX,WAAWD,EAAI,IACxCe,EAAWhB,EAAOa,EAAOX,WAAWD,EAAI,IACxCgB,EAAWjB,EAAOa,EAAOX,WAAWD,EAAI,IACxCqB,EAAMF,KAAQN,GAAY,EAAMC,GAAY,EAC5CO,EAAMF,MAAoB,GAAXL,IAAkB,EAAMC,GAAY,EACnDM,EAAMF,MAAoB,EAAXJ,IAAiB,EAAiB,GAAXC,EAE1C,OAAOI,CACX,CEVwBE,CAAOnD,GACvB,OAAOmC,EAAUK,EAASN,EAC9B,CAEI,MAAO,CAAEO,QAAQ,EAAMzC,KAAAA,EAE/B,EACMmC,EAAY,SAACnC,EAAMkC,GACrB,MACS,SADDA,EAEIlC,aAAgBE,KAETF,EAIA,IAAIE,KAAK,CAACF,IAIjBA,aAAgBO,YAETP,EAIAA,EAAKU,MAG5B,ED3DM0C,EAAYC,OAAOC,aAAa,IEI/B,SAASC,EAAQ9C,GACtB,GAAIA,EAAK,OAWX,SAAeA,GACb,IAAK,IAAIb,KAAO2D,EAAQpD,UACtBM,EAAIb,GAAO2D,EAAQpD,UAAUP,GAE/B,OAAOa,CACT,CAhBkB+C,CAAM/C,EACxB,CA0BA8C,EAAQpD,UAAUsD,GAClBF,EAAQpD,UAAUuD,iBAAmB,SAASC,EAAOC,GAInD,OAHAC,KAAKC,WAAaD,KAAKC,YAAc,CAAA,GACpCD,KAAKC,WAAW,IAAMH,GAASE,KAAKC,WAAW,IAAMH,IAAU,IAC7DI,KAAKH,GACDC,IACT,EAYOG,EAAC7D,UAAU8D,KAAO,SAASN,EAAOC,GACvC,SAASH,IACPI,KAAKK,IAAIP,EAAOF,GAChBG,EAAGO,MAAMN,KAAMO,UACjB,CAIA,OAFAX,EAAGG,GAAKA,EACRC,KAAKJ,GAAGE,EAAOF,GACRI,IACT,EAYOG,EAAC7D,UAAU+D,IAClBX,EAAQpD,UAAUkE,eAClBd,EAAQpD,UAAUmE,mBAClBf,EAAQpD,UAAUoE,oBAAsB,SAASZ,EAAOC,GAItD,GAHAC,KAAKC,WAAaD,KAAKC,YAAc,CAAA,EAGjC,GAAKM,UAAU7B,OAEjB,OADAsB,KAAKC,WAAa,GACXD,KAIT,IAUIW,EAVAC,EAAYZ,KAAKC,WAAW,IAAMH,GACtC,IAAKc,EAAW,OAAOZ,KAGvB,GAAI,GAAKO,UAAU7B,OAEjB,cADOsB,KAAKC,WAAW,IAAMH,GACtBE,KAKT,IAAK,IAAIhC,EAAI,EAAGA,EAAI4C,EAAUlC,OAAQV,IAEpC,IADA2C,EAAKC,EAAU5C,MACJ+B,GAAMY,EAAGZ,KAAOA,EAAI,CAC7Ba,EAAUC,OAAO7C,EAAG,GACpB,KACF,CASF,OAJyB,IAArB4C,EAAUlC,eACLsB,KAAKC,WAAW,IAAMH,GAGxBE,IACT,EAUAN,EAAQpD,UAAUwE,KAAO,SAAShB,GAChCE,KAAKC,WAAaD,KAAKC,YAAc,CAAA,EAKrC,IAHA,IAAIc,EAAO,IAAIC,MAAMT,UAAU7B,OAAS,GACpCkC,EAAYZ,KAAKC,WAAW,IAAMH,GAE7B9B,EAAI,EAAGA,EAAIuC,UAAU7B,OAAQV,IACpC+C,EAAK/C,EAAI,GAAKuC,UAAUvC,GAG1B,GAAI4C,EAEG,CAAI5C,EAAI,EAAb,IAAK,IAAWkB,GADhB0B,EAAYA,EAAUK,MAAM,IACIvC,OAAQV,EAAIkB,IAAOlB,EACjD4C,EAAU5C,GAAGsC,MAAMN,KAAMe,EADKrC,CAKlC,OAAOsB,IACT,EAGOG,EAAC7D,UAAU4E,aAAexB,EAAQpD,UAAUwE,KAUnDpB,EAAQpD,UAAU6E,UAAY,SAASrB,GAErC,OADAE,KAAKC,WAAaD,KAAKC,YAAc,CAAA,EAC9BD,KAAKC,WAAW,IAAMH,IAAU,EACzC,EAUAJ,EAAQpD,UAAU8E,aAAe,SAAStB,GACxC,QAAUE,KAAKmB,UAAUrB,GAAOpB,MAClC,ECxKO,IAAM2C,EACW,oBAATC,KACAA,KAEgB,oBAAXC,OACLA,OAGAC,SAAS,cAATA,GCPR,SAASC,EAAK7E,GAAc,IAAA8E,IAAAA,EAAAnB,UAAA7B,OAANiD,MAAIX,MAAAU,EAAAA,EAAAA,OAAAE,EAAA,EAAAA,EAAAF,EAAAE,IAAJD,EAAIC,EAAArB,GAAAA,UAAAqB,GAC7B,OAAOD,EAAKE,QAAO,SAACC,EAAKC,GAIrB,OAHInF,EAAIoF,eAAeD,KACnBD,EAAIC,GAAKnF,EAAImF,IAEVD,CACV,GAAE,CAAE,EACT,CAEA,IAAMG,EAAqBC,EAAWC,WAChCC,EAAuBF,EAAWG,aACjC,SAASC,EAAsB1F,EAAK2F,GACnCA,EAAKC,iBACL5F,EAAI6F,aAAeR,EAAmBS,KAAKR,GAC3CtF,EAAI+F,eAAiBP,EAAqBM,KAAKR,KAG/CtF,EAAI6F,aAAeP,EAAWC,WAAWO,KAAKR,GAC9CtF,EAAI+F,eAAiBT,EAAWG,aAAaK,KAAKR,GAE1D,CClB8C,ICAzBU,EDCfC,WAAcC,GAAAC,EAAAF,EAAAC,GAAA,IAAAE,EAAAC,EAAAJ,GAChB,SAAAA,EAAYK,EAAQC,EAAaC,GAAS,IAAAC,EAIT,OAJSC,OAAAT,IACtCQ,EAAAL,EAAAxG,UAAM0G,IACDC,YAAcA,EACnBE,EAAKD,QAAUA,EACfC,EAAKnH,KAAO,iBAAiBmH,CACjC,CAAC,OAAAE,EAAAV,EAAA,EAAAW,EANwBC,QAQhBC,WAASC,GAAAZ,EAAAW,EAAAC,GAAA,IAAAC,EAAAX,EAAAS,GAOlB,SAAAA,EAAYnB,GAAM,IAAAsB,EAMY,OANZP,OAAAI,IACdG,EAAAD,EAAApH,KAAAwD,OACK8D,UAAW,EAChBxB,EAAqByB,EAAAF,GAAOtB,GAC5BsB,EAAKtB,KAAOA,EACZsB,EAAKG,MAAQzB,EAAKyB,MAClBH,EAAKI,OAAS1B,EAAK0B,OAAOJ,CAC9B,CAiHC,OAhHDN,EAAAG,EAAA,CAAA,CAAA3H,IAAA,UAAAmI,MASA,SAAQhB,EAAQC,EAAaC,GAEzB,OADAe,EAAAC,EAAAV,EAAApH,gCAAAE,KAAAwD,KAAmB,QAAS,IAAI6C,EAAeK,EAAQC,EAAaC,IAC7DpD,IACX,GACA,CAAAjE,IAAA,OAAAmI,MAGA,WAGI,OAFAlE,KAAKqE,WAAa,UAClBrE,KAAKsE,SACEtE,IACX,GACA,CAAAjE,IAAA,QAAAmI,MAGA,WAKI,MAJwB,YAApBlE,KAAKqE,YAAgD,SAApBrE,KAAKqE,aACtCrE,KAAKuE,UACLvE,KAAKwE,WAEFxE,IACX,GACA,CAAAjE,IAAA,OAAAmI,MAKA,SAAKO,GACuB,SAApBzE,KAAKqE,YACLrE,KAAK0E,MAAMD,EAKnB,GACA,CAAA1I,IAAA,SAAAmI,MAKA,WACIlE,KAAKqE,WAAa,OAClBrE,KAAK8D,UAAW,EAChBK,EAAAC,EAAAV,EAAApH,WAAA,eAAA0D,MAAAxD,KAAAwD,KAAmB,OACvB,GACA,CAAAjE,IAAA,SAAAmI,MAMA,SAAO/H,GACH,IAAMwI,EAASxG,EAAahC,EAAM6D,KAAKiE,OAAO5F,YAC9C2B,KAAK4E,SAASD,EAClB,GACA,CAAA5I,IAAA,WAAAmI,MAKA,SAASS,GACLR,EAAAC,EAAAV,EAAApH,WAAA,eAAA0D,MAAAxD,KAAAwD,KAAmB,SAAU2E,EACjC,GACA,CAAA5I,IAAA,UAAAmI,MAKA,SAAQW,GACJ7E,KAAKqE,WAAa,SAClBF,EAAAC,EAAAV,EAAApH,WAAA,eAAA0D,MAAAxD,KAAAwD,KAAmB,QAAS6E,EAChC,GACA,CAAA9I,IAAA,QAAAmI,MAKA,SAAMY,GAAW,GAAC,CAAA/I,IAAA,YAAAmI,MAClB,SAAUa,GAAoB,IAAZf,EAAKzD,UAAA7B,OAAA,QAAAsG,IAAAzE,UAAA,GAAAA,UAAA,GAAG,CAAA,EACtB,OAAQwE,EACJ,MACA/E,KAAKiF,YACLjF,KAAKkF,QACLlF,KAAKuC,KAAK4C,KACVnF,KAAKoF,OAAOpB,EACpB,GAAC,CAAAjI,IAAA,YAAAmI,MACD,WACI,IAAMmB,EAAWrF,KAAKuC,KAAK8C,SAC3B,OAAkC,IAA3BA,EAASC,QAAQ,KAAcD,EAAW,IAAMA,EAAW,GACtE,GAAC,CAAAtJ,IAAA,QAAAmI,MACD,WACI,OAAIlE,KAAKuC,KAAKgD,OACRvF,KAAKuC,KAAKiD,QAAUC,OAA0B,MAAnBzF,KAAKuC,KAAKgD,QACjCvF,KAAKuC,KAAKiD,QAAqC,KAA3BC,OAAOzF,KAAKuC,KAAKgD,OACpC,IAAMvF,KAAKuC,KAAKgD,KAGhB,EAEf,GAAC,CAAAxJ,IAAA,SAAAmI,MACD,SAAOF,GACH,IAAM0B,EEjIP,SAAgB9I,GACnB,IAAI+I,EAAM,GACV,IAAK,IAAI3H,KAAKpB,EACNA,EAAIoF,eAAehE,KACf2H,EAAIjH,SACJiH,GAAO,KACXA,GAAOC,mBAAmB5H,GAAK,IAAM4H,mBAAmBhJ,EAAIoB,KAGpE,OAAO2H,CACX,CFuH6BE,CAAO7B,GAC5B,OAAO0B,EAAahH,OAAS,IAAMgH,EAAe,EACtD,KAAChC,CAAA,EA/H0BhE,GCVzBoG,EAAW,mEAAmEtI,MAAM,IAAKkB,EAAS,GAAIqH,EAAM,CAAA,EAC9GC,EAAO,EAAGhI,EAAI,EAQX,SAAS6H,EAAOI,GACnB,IAAIC,EAAU,GACd,GACIA,EAAUJ,EAASG,EAAMvH,GAAUwH,EACnCD,EAAME,KAAKC,MAAMH,EAAMvH,SAClBuH,EAAM,GACf,OAAOC,CACX,CAqBO,SAASG,IACZ,IAAMC,EAAMT,GAAQ,IAAIU,MACxB,OAAID,IAAQ1D,GACDoD,EAAO,EAAGpD,EAAO0D,GACrBA,EAAM,IAAMT,EAAOG,IAC9B,CAIA,KAAOhI,EAAIU,EAAQV,IACf+H,EAAID,EAAS9H,IAAMA,EEhDvB,IAAIkG,GAAQ,EACZ,IACIA,EAAkC,oBAAnBsC,gBACX,oBAAqB,IAAIA,cACjC,CACA,MAAOC,GAEH,CAEG,IAAMC,EAAUxC,ECPhB,SAASyC,GAAIpE,GAChB,IAAMqE,EAAUrE,EAAKqE,QAErB,IACI,GAAI,oBAAuBJ,kBAAoBI,GAAWF,GACtD,OAAO,IAAIF,cAEnB,CACA,MAAOK,GAAK,CACZ,IAAKD,EACD,IACI,OAAO,IAAI1E,EAAW,CAAC,UAAU4E,OAAO,UAAUC,KAAK,OAAM,oBACjE,CACA,MAAOF,GAAK,CAEpB,CCXA,SAASG,KAAU,CACnB,IAAMC,GAIK,MAHK,IAAIT,GAAe,CAC3BI,SAAS,IAEMM,aAEVC,YAAOC,GAAArE,EAAAoE,EAAAC,GAAA,IAAApE,EAAAC,EAAAkE,GAOhB,SAAAA,EAAY5E,GAAM,IAAAc,EAGd,GAHcC,OAAA6D,IACd9D,EAAAL,EAAAxG,UAAM+F,IACD8E,SAAU,EACS,oBAAbC,SAA0B,CACjC,IAAMC,EAAQ,WAAaD,SAASE,SAChCjC,EAAO+B,SAAS/B,KAEfA,IACDA,EAAOgC,EAAQ,MAAQ,MAE3BlE,EAAKoE,GACoB,oBAAbH,UACJ/E,EAAK8C,WAAaiC,SAASjC,UAC3BE,IAAShD,EAAKgD,IAC1B,CAIA,IAAMmC,EAAcnF,GAAQA,EAAKmF,YAIhC,OAHDrE,EAAKrG,eAAiBiK,KAAYS,EAC9BrE,EAAKd,KAAKoF,kBACVtE,EAAKuE,eAAYC,GACpBxE,CACL,CAgLC,OAhLAE,EAAA4D,EAAA,CAAA,CAAApL,IAAA,OAAA+L,IACD,WACI,MAAO,SACX,GACA,CAAA/L,IAAA,SAAAmI,MAMA,WACIlE,KAAK+H,MACT,GACA,CAAAhM,IAAA,QAAAmI,MAMA,SAAMY,GAAS,IAAAjB,EAAA7D,KACXA,KAAKqE,WAAa,UAClB,IAAM2D,EAAQ,WACVnE,EAAKQ,WAAa,SAClBS,KAEJ,GAAI9E,KAAKqH,UAAYrH,KAAK8D,SAAU,CAChC,IAAImE,EAAQ,EACRjI,KAAKqH,UACLY,IACAjI,KAAKI,KAAK,gBAAgB,aACpB6H,GAASD,GACf,KAEChI,KAAK8D,WACNmE,IACAjI,KAAKI,KAAK,SAAS,aACb6H,GAASD,GACf,IAER,MAEIA,GAER,GACA,CAAAjM,IAAA,OAAAmI,MAKA,WACIlE,KAAKqH,SAAU,EACfrH,KAAKkI,SACLlI,KAAKkB,aAAa,OACtB,GACA,CAAAnF,IAAA,SAAAmI,MAKA,SAAO/H,GAAM,IAAAgM,EAAAnI,MVrFK,SAACoI,EAAgB/J,GAGnC,IAFA,IAAMgK,EAAiBD,EAAe5K,MAAM+B,GACtCkF,EAAU,GACPzG,EAAI,EAAGA,EAAIqK,EAAe3J,OAAQV,IAAK,CAC5C,IAAMsK,EAAgBnK,EAAakK,EAAerK,GAAIK,GAEtD,GADAoG,EAAQvE,KAAKoI,GACc,UAAvBA,EAAcpM,KACd,KAER,CACA,OAAOuI,CACX,EUyFQ8D,CAAcpM,EAAM6D,KAAKiE,OAAO5F,YAAYvC,SAd3B,SAAC6I,GAMd,GAJI,YAAcwD,EAAK9D,YAA8B,SAAhBM,EAAOzI,MACxCiM,EAAKK,SAGL,UAAY7D,EAAOzI,KAEnB,OADAiM,EAAK3D,QAAQ,CAAErB,YAAa,oCACrB,EAGXgF,EAAKvD,SAASD,MAKd,WAAa3E,KAAKqE,aAElBrE,KAAKqH,SAAU,EACfrH,KAAKkB,aAAa,gBACd,SAAWlB,KAAKqE,YAChBrE,KAAK+H,OAKjB,GACA,CAAAhM,IAAA,UAAAmI,MAKA,WAAU,IAAAuE,EAAAzI,KACA0I,EAAQ,WACVD,EAAK/D,MAAM,CAAC,CAAExI,KAAM,YAEpB,SAAW8D,KAAKqE,WAChBqE,IAKA1I,KAAKI,KAAK,OAAQsI,EAE1B,GACA,CAAA3M,IAAA,QAAAmI,MAMA,SAAMO,GAAS,IAAAkE,EAAA3I,KACXA,KAAK8D,UAAW,EVzJF,SAACW,EAASxH,GAE5B,IAAMyB,EAAS+F,EAAQ/F,OACjB2J,EAAiB,IAAIrH,MAAMtC,GAC7BkK,EAAQ,EACZnE,EAAQ3I,SAAQ,SAAC6I,EAAQ3G,GAErBlB,EAAa6H,GAAQ,GAAO,SAAAvG,GACxBiK,EAAerK,GAAKI,IACdwK,IAAUlK,GACZzB,EAASoL,EAAetB,KAAKxH,GAErC,GACJ,GACJ,CU4IQsJ,CAAcpE,GAAS,SAACtI,GACpBwM,EAAKG,QAAQ3M,GAAM,WACfwM,EAAK7E,UAAW,EAChB6E,EAAKzH,aAAa,QACtB,GACJ,GACJ,GACA,CAAAnF,IAAA,MAAAmI,MAKA,WACI,IAAMa,EAAS/E,KAAKuC,KAAKiD,OAAS,QAAU,OACtCxB,EAAQhE,KAAKgE,OAAS,GAQ5B,OANI,IAAUhE,KAAKuC,KAAKwG,oBACpB/E,EAAMhE,KAAKuC,KAAKyG,gBAAkB3C,KAEjCrG,KAAKhD,gBAAmBgH,EAAMiF,MAC/BjF,EAAMkF,IAAM,GAETlJ,KAAKmJ,UAAUpE,EAAQf,EAClC,GACA,CAAAjI,IAAA,UAAAmI,MAMA,WAAmB,IAAX3B,EAAIhC,UAAA7B,OAAA,QAAAsG,IAAAzE,UAAA,GAAAA,UAAA,GAAG,CAAA,EAEX,OADA6I,EAAc7G,EAAM,CAAEkF,GAAIzH,KAAKyH,GAAIG,UAAW5H,KAAK4H,WAAa5H,KAAKuC,MAC9D,IAAI8G,GAAQrJ,KAAKsJ,MAAO/G,EACnC,GACA,CAAAxG,IAAA,UAAAmI,MAOA,SAAQ/H,EAAM4D,GAAI,IAAAwJ,EAAAvJ,KACRwJ,EAAMxJ,KAAKyJ,QAAQ,CACrBC,OAAQ,OACRvN,KAAMA,IAEVqN,EAAI5J,GAAG,UAAWG,GAClByJ,EAAI5J,GAAG,SAAS,SAAC+J,EAAWvG,GACxBmG,EAAKK,QAAQ,iBAAkBD,EAAWvG,EAC9C,GACJ,GACA,CAAArH,IAAA,SAAAmI,MAKA,WAAS,IAAA2F,EAAA7J,KACCwJ,EAAMxJ,KAAKyJ,UACjBD,EAAI5J,GAAG,OAAQI,KAAK8J,OAAOpH,KAAK1C,OAChCwJ,EAAI5J,GAAG,SAAS,SAAC+J,EAAWvG,GACxByG,EAAKD,QAAQ,iBAAkBD,EAAWvG,EAC9C,IACApD,KAAK+J,QAAUP,CACnB,KAACrC,CAAA,EA9MwBzD,GAgNhB2F,YAAO1F,GAAAZ,EAAAsG,EAAA1F,GAAA,IAAAC,EAAAX,EAAAoG,GAOhB,SAAAA,EAAYC,EAAK/G,GAAM,IAAAyH,EAOL,OAPK1G,OAAA+F,GAEnB/G,EAAqByB,EADrBiG,EAAApG,EAAApH,KAAAwD,OAC4BuC,GAC5ByH,EAAKzH,KAAOA,EACZyH,EAAKN,OAASnH,EAAKmH,QAAU,MAC7BM,EAAKV,IAAMA,EACXU,EAAK7N,UAAO6I,IAAczC,EAAKpG,KAAOoG,EAAKpG,KAAO,KAClD6N,EAAKrO,SAASqO,CAClB,CA8HC,OA7HDzG,EAAA8F,EAAA,CAAA,CAAAtN,IAAA,SAAAmI,MAKA,WAAS,IACD+F,EADCC,EAAAlK,KAECuC,EAAOd,EAAKzB,KAAKuC,KAAM,QAAS,MAAO,MAAO,aAAc,OAAQ,KAAM,UAAW,qBAAsB,aACjHA,EAAKqE,UAAY5G,KAAKuC,KAAKkF,GAC3B,IAAM0C,EAAOnK,KAAKmK,IAAM,IAAI3D,GAAejE,GAC3C,IACI4H,EAAIC,KAAKpK,KAAK0J,OAAQ1J,KAAKsJ,KAAK,GAChC,IACI,GAAItJ,KAAKuC,KAAK8H,aAEV,IAAK,IAAIrM,KADTmM,EAAIG,uBAAyBH,EAAIG,uBAAsB,GACzCtK,KAAKuC,KAAK8H,aAChBrK,KAAKuC,KAAK8H,aAAarI,eAAehE,IACtCmM,EAAII,iBAAiBvM,EAAGgC,KAAKuC,KAAK8H,aAAarM,GAI/D,CACA,MAAO6I,GAAK,CACZ,GAAI,SAAW7G,KAAK0J,OAChB,IACIS,EAAII,iBAAiB,eAAgB,2BACzC,CACA,MAAO1D,GAAK,CAEhB,IACIsD,EAAII,iBAAiB,SAAU,MACnC,CACA,MAAO1D,GAAK,CACmB,QAA9BoD,EAAKjK,KAAKuC,KAAKqF,iBAA8B,IAAPqC,GAAyBA,EAAGO,WAAWL,GAE1E,oBAAqBA,IACrBA,EAAIxC,gBAAkB3H,KAAKuC,KAAKoF,iBAEhC3H,KAAKuC,KAAKkI,iBACVN,EAAIO,QAAU1K,KAAKuC,KAAKkI,gBAE5BN,EAAIQ,mBAAqB,WACrB,IAAIV,EACmB,IAAnBE,EAAI9F,aAC2B,QAA9B4F,EAAKC,EAAK3H,KAAKqF,iBAA8B,IAAPqC,GAAyBA,EAAGW,aAAaT,IAEhF,IAAMA,EAAI9F,aAEV,MAAQ8F,EAAIU,QAAU,OAASV,EAAIU,OACnCX,EAAKY,SAKLZ,EAAKzH,cAAa,WACdyH,EAAKN,QAA8B,iBAAfO,EAAIU,OAAsBV,EAAIU,OAAS,EAC9D,GAAE,KAGXV,EAAIY,KAAK/K,KAAK7D,KACjB,CACD,MAAO0K,GAOH,YAHA7G,KAAKyC,cAAa,WACdyH,EAAKN,QAAQ/C,EAChB,GAAE,EAEP,CACwB,oBAAbmE,WACPhL,KAAKiL,MAAQ5B,EAAQ6B,gBACrB7B,EAAQ8B,SAASnL,KAAKiL,OAASjL,KAEvC,GACA,CAAAjE,IAAA,UAAAmI,MAKA,SAAQuC,GACJzG,KAAKkB,aAAa,QAASuF,EAAKzG,KAAKmK,KACrCnK,KAAKoL,SAAQ,EACjB,GACA,CAAArP,IAAA,UAAAmI,MAKA,SAAQmH,GACJ,QAAI,IAAuBrL,KAAKmK,KAAO,OAASnK,KAAKmK,IAArD,CAIA,GADAnK,KAAKmK,IAAIQ,mBAAqB3D,GAC1BqE,EACA,IACIrL,KAAKmK,IAAImB,OACb,CACA,MAAOzE,GAAK,CAEQ,oBAAbmE,iBACA3B,EAAQ8B,SAASnL,KAAKiL,OAEjCjL,KAAKmK,IAAM,IAXX,CAYJ,GACA,CAAApO,IAAA,SAAAmI,MAKA,WACI,IAAM/H,EAAO6D,KAAKmK,IAAIoB,aACT,OAATpP,IACA6D,KAAKkB,aAAa,OAAQ/E,GAC1B6D,KAAKkB,aAAa,WAClBlB,KAAKoL,UAEb,GACA,CAAArP,IAAA,QAAAmI,MAKA,WACIlE,KAAKoL,SACT,KAAC/B,CAAA,EA7IwB3J,GAsJ7B,GAPA2J,GAAQ6B,cAAgB,EACxB7B,GAAQ8B,SAAW,CAAA,EAMK,oBAAbH,SAEP,GAA2B,mBAAhBQ,YAEPA,YAAY,WAAYC,SAEvB,GAAgC,mBAArB5L,iBAAiC,CAE7CA,iBADyB,eAAgBqC,EAAa,WAAa,SAChCuJ,IAAe,EACtD,CAEJ,SAASA,KACL,IAAK,IAAIzN,KAAKqL,GAAQ8B,SACd9B,GAAQ8B,SAASnJ,eAAehE,IAChCqL,GAAQ8B,SAASnN,GAAGsN,OAGhC,CCpYO,IAAMI,GACqC,mBAAZC,SAAqD,mBAApBA,QAAQC,QAEhE,SAACjL,GAAE,OAAKgL,QAAQC,UAAUC,KAAKlL,EAAG,EAGlC,SAACA,EAAI8B,GAAY,OAAKA,EAAa9B,EAAI,EAAE,EAG3CmL,GAAY5J,EAAW4J,WAAa5J,EAAW6J,aCJtDC,GAAqC,oBAAdC,WACI,iBAAtBA,UAAUC,SACmB,gBAApCD,UAAUC,QAAQC,cACTC,YAAEhF,GAAArE,EAAAqJ,EAAAhF,GAAA,IAAApE,EAAAC,EAAAmJ,GAOX,SAAAA,EAAY7J,GAAM,IAAAc,EAE0B,OAF1BC,OAAA8I,IACd/I,EAAAL,EAAAxG,UAAM+F,IACDvF,gBAAkBuF,EAAKmF,YAAYrE,CAC5C,CAmIC,OAnIAE,EAAA6I,EAAA,CAAA,CAAArQ,IAAA,OAAA+L,IACD,WACI,MAAO,WACX,GAAC,CAAA/L,IAAA,SAAAmI,MACD,WACI,GAAKlE,KAAKqM,QAAV,CAIA,IAAM/C,EAAMtJ,KAAKsJ,MACXgD,EAAYtM,KAAKuC,KAAK+J,UAEtB/J,EAAOyJ,GACP,CAAA,EACAvK,EAAKzB,KAAKuC,KAAM,QAAS,oBAAqB,MAAO,MAAO,aAAc,OAAQ,KAAM,UAAW,qBAAsB,eAAgB,kBAAmB,SAAU,aAAc,SAAU,uBAChMvC,KAAKuC,KAAK8H,eACV9H,EAAKgK,QAAUvM,KAAKuC,KAAK8H,cAE7B,IACIrK,KAAKwM,GACyBR,GAIpB,IAAIF,GAAUxC,EAAKgD,EAAW/J,GAH9B+J,EACI,IAAIR,GAAUxC,EAAKgD,GACnB,IAAIR,GAAUxC,EAE/B,CACD,MAAO7C,GACH,OAAOzG,KAAKkB,aAAa,QAASuF,EACtC,CACAzG,KAAKwM,GAAGnO,WAAa2B,KAAKiE,OAAO5F,YDpCR,cCqCzB2B,KAAKyM,mBAtBL,CAuBJ,GACA,CAAA1Q,IAAA,oBAAAmI,MAKA,WAAoB,IAAAL,EAAA7D,KAChBA,KAAKwM,GAAGE,OAAS,WACT7I,EAAKtB,KAAKoK,WACV9I,EAAK2I,GAAGI,QAAQC,QAEpBhJ,EAAK2E,UAETxI,KAAKwM,GAAGM,QAAU,SAACC,GAAU,OAAKlJ,EAAKW,QAAQ,CAC3CrB,YAAa,8BACbC,QAAS2J,GACX,EACF/M,KAAKwM,GAAGQ,UAAY,SAACC,GAAE,OAAKpJ,EAAKiG,OAAOmD,EAAG9Q,KAAK,EAChD6D,KAAKwM,GAAGU,QAAU,SAACrG,GAAC,OAAKhD,EAAK+F,QAAQ,kBAAmB/C,EAAE,CAC/D,GAAC,CAAA9K,IAAA,QAAAmI,MACD,SAAMO,GAAS,IAAA0D,EAAAnI,KACXA,KAAK8D,UAAW,EAGhB,IADA,IAAAqJ,EAAAA,WAEI,IAAMxI,EAASF,EAAQzG,GACjBoP,EAAapP,IAAMyG,EAAQ/F,OAAS,EAC1C5B,EAAa6H,EAAQwD,EAAKnL,gBAAgB,SAACb,GAmBvC,IAGQgM,EAAKqE,GAAGzB,KAAK5O,EAKrB,CACA,MAAO0K,GACP,CACIuG,GAGA1B,IAAS,WACLvD,EAAKrE,UAAW,EAChBqE,EAAKjH,aAAa,QACtB,GAAGiH,EAAK1F,aAEhB,KAzCKzE,EAAI,EAAGA,EAAIyG,EAAQ/F,OAAQV,IAAGmP,GA2C3C,GAAC,CAAApR,IAAA,UAAAmI,MACD,gBAC2B,IAAZlE,KAAKwM,KACZxM,KAAKwM,GAAG9D,QACR1I,KAAKwM,GAAK,KAElB,GACA,CAAAzQ,IAAA,MAAAmI,MAKA,WACI,IAAMa,EAAS/E,KAAKuC,KAAKiD,OAAS,MAAQ,KACpCxB,EAAQhE,KAAKgE,OAAS,GAS5B,OAPIhE,KAAKuC,KAAKwG,oBACV/E,EAAMhE,KAAKuC,KAAKyG,gBAAkB3C,KAGjCrG,KAAKhD,iBACNgH,EAAMkF,IAAM,GAETlJ,KAAKmJ,UAAUpE,EAAQf,EAClC,GACA,CAAAjI,IAAA,QAAAmI,MAMA,WACI,QAAS4H,EACb,KAACM,CAAA,EA7ImB1I,GCEX2J,IAAAA,YAAEjG,GAAArE,EAAAsK,EAAAjG,GAAA,IAAApE,EAAAC,EAAAoK,GAAA,SAAAA,IAAA,OAAA/J,OAAA+J,GAAArK,EAAA1C,MAAAN,KAAAO,UAAA,CA2EV,OA3EUgD,EAAA8J,EAAA,CAAA,CAAAtR,IAAA,OAAA+L,IACX,WACI,MAAO,cACX,GAAC,CAAA/L,IAAA,SAAAmI,MACD,WAAS,IAAAb,EAAArD,KAEuB,mBAAjBsN,eAIXtN,KAAKuN,UAAY,IAAID,aAAatN,KAAKmJ,UAAU,SAAUnJ,KAAKuC,KAAKiL,iBAAiBxN,KAAKyN,OAC3FzN,KAAKuN,UAAUG,OACV7B,MAAK,WACNxI,EAAKmB,SACT,IAAE,OACS,SAACiC,GACRpD,EAAKuG,QAAQ,qBAAsBnD,EACvC,IAEAzG,KAAKuN,UAAUI,MAAM9B,MAAK,WACtBxI,EAAKkK,UAAUK,4BAA4B/B,MAAK,SAACgC,GAC7C,IAEIC,EAFEC,EAASF,EAAOG,SAASC,YAC/B5K,EAAK6K,OAASL,EAAO/J,SAASqK,aAEjB,SAAPC,IACFL,EACKK,OACAvC,MAAK,SAAA9O,GAAqB,IAAlBsR,EAAItR,EAAJsR,KAAMnK,EAAKnH,EAALmH,MACXmK,IAGCP,GAAmC,IAArB5J,EAAMrG,YAAiC,KAAbqG,EAAM,IAK/Cb,EAAKuB,SbhB1B,SAAgCzI,EAAMmS,EAAUjQ,GAC9CH,IAEDA,EAAe,IAAIqQ,aAIvB,IAAMC,EAAgBF,GAAYnS,EAAK,GAAK,IAAMA,EAAK,GAAK,GAC5D,OAAOgC,EAAaqQ,EAAgBrS,EAAO+B,EAAaoB,OAAOnD,GAAOkC,EAC1E,CaO0CoQ,CAAuBvK,EAAO4J,EAAY,gBACxDA,GAAa,GALbA,GAAa,EAOjBM,IACH,WACU,SAAC3H,GACX,IAEL2H,GACA,IAAMM,EAAYrL,EAAKW,MAAMiF,IAAG,YAAAnC,OAAezD,EAAKW,MAAMiF,UAAU,IACpE5F,EAAK6K,OACAxJ,OAAM,IAAIiK,aAAc9I,OAAO6I,IAC/B7C,MAAK,WAAA,OAAMxI,EAAKmF,WACzB,GACJ,IACJ,GAAC,CAAAzM,IAAA,QAAAmI,MACD,SAAMO,GAAS,IAAAZ,EAAA7D,KACXA,KAAK8D,UAAW,EAChB,IADsB,IAAAqJ,EAAAA,WAElB,IAAMxI,EAASF,EAAQzG,GACjBoP,EAAapP,IAAMyG,EAAQ/F,OAAS,Gff/C,SAA8BiG,EAAQ1H,GACrCb,GAAkBuI,EAAOxI,gBAAgBE,KAClCsI,EAAOxI,KACTyS,cACA/C,KAAKnO,GACLmO,KAAK5O,GAELR,IACJkI,EAAOxI,gBAAgBO,aAAeC,EAAOgI,EAAOxI,OAC9Cc,EAASS,EAAQiH,EAAOxI,OAEnCW,EAAa6H,GAAQ,GAAO,SAAAuB,GACnBlK,IACDA,EAAe,IAAI2S,aAEvB1R,EAASjB,EAAa6J,OAAOK,GACjC,GACJ,CeDY2I,CAAqBlK,GAAQ,SAACxI,IAjE1C,SAAmCwI,EAAQuB,GAGvC,MAAwB,YAAhBvB,EAAOzI,MACY,iBAAhByI,EAAOxI,MACd+J,EAAQ,IAAM,IACdA,EAAQ,IAAM,EACtB,EA2DoB4I,CAA0BnK,EAAQxI,IAClC0H,EAAKqK,OAAOxJ,MAAM/G,WAAWoR,GAAG,KAEpClL,EAAKqK,OAAOxJ,MAAMvI,GAAM0P,MAAK,WACrBuB,GACA1B,IAAS,WACL7H,EAAKC,UAAW,EAChBD,EAAK3C,aAAa,QACtB,GAAG2C,EAAKpB,aAEhB,GACJ,KAfKzE,EAAI,EAAGA,EAAIyG,EAAQ/F,OAAQV,IAAGmP,GAiB3C,GAAC,CAAApR,IAAA,UAAAmI,MACD,WACI,IAAI+F,EACsB,QAAzBA,EAAKjK,KAAKuN,iBAA8B,IAAPtD,GAAyBA,EAAGvB,OAClE,KAAC2E,CAAA,EA3EmB3J,GCRXsL,GAAa,CACtBC,UAAW7C,GACX8C,aAAc7B,GACdhG,QAASF,ICaPgI,GAAK,sPACLC,GAAQ,CACV,SAAU,WAAY,YAAa,WAAY,OAAQ,WAAY,OAAQ,OAAQ,WAAY,OAAQ,YAAa,OAAQ,QAAS,UAElI,SAASC,GAAM1J,GAClB,IAAM2J,EAAM3J,EAAK4J,EAAI5J,EAAIL,QAAQ,KAAMuB,EAAIlB,EAAIL,QAAQ,MAC7C,GAANiK,IAAiB,GAAN1I,IACXlB,EAAMA,EAAIlH,UAAU,EAAG8Q,GAAK5J,EAAIlH,UAAU8Q,EAAG1I,GAAG2I,QAAQ,KAAM,KAAO7J,EAAIlH,UAAUoI,EAAGlB,EAAIjH,SAG9F,IADA,IAwBmBsF,EACb7H,EAzBFsT,EAAIN,GAAGO,KAAK/J,GAAO,IAAK2D,EAAM,CAAE,EAAEtL,EAAI,GACnCA,KACHsL,EAAI8F,GAAMpR,IAAMyR,EAAEzR,IAAM,GAU5B,OARU,GAANuR,IAAiB,GAAN1I,IACXyC,EAAIqG,OAASL,EACbhG,EAAIsG,KAAOtG,EAAIsG,KAAKnR,UAAU,EAAG6K,EAAIsG,KAAKlR,OAAS,GAAG8Q,QAAQ,KAAM,KACpElG,EAAIuG,UAAYvG,EAAIuG,UAAUL,QAAQ,IAAK,IAAIA,QAAQ,IAAK,IAAIA,QAAQ,KAAM,KAC9ElG,EAAIwG,SAAU,GAElBxG,EAAIyG,UAIR,SAAmBnT,EAAKuI,GACpB,IAAM6K,EAAO,WAAYC,EAAQ9K,EAAKqK,QAAQQ,EAAM,KAAKxS,MAAM,KACvC,KAApB2H,EAAKlE,MAAM,EAAG,IAA6B,IAAhBkE,EAAKzG,QAChCuR,EAAMpP,OAAO,EAAG,GAEE,KAAlBsE,EAAKlE,OAAO,IACZgP,EAAMpP,OAAOoP,EAAMvR,OAAS,EAAG,GAEnC,OAAOuR,CACX,CAboBF,CAAUzG,EAAKA,EAAU,MACzCA,EAAI4G,UAaelM,EAbUsF,EAAW,MAclCnN,EAAO,CAAA,EACb6H,EAAMwL,QAAQ,6BAA6B,SAAUW,EAAIC,EAAIC,GACrDD,IACAjU,EAAKiU,GAAMC,EAEnB,IACOlU,GAnBAmN,CACX,CCnCagH,IAAAA,YAAM3M,GAAAZ,EAAAuN,EAAA3M,GAAA,IAAAX,EAAAC,EAAAqN,GAOf,SAAAA,EAAYhH,GAAgB,IAAAjG,EAAXd,EAAIhC,UAAA7B,OAAA,QAAAsG,IAAAzE,UAAA,GAAAA,UAAA,GAAG,CAAA,EA+FR,OA/FU+C,OAAAgN,IACtBjN,EAAAL,EAAAxG,KAAAwD,OACKuQ,YAAc,GACfjH,GAAO,WAAQkH,EAAYlH,KAC3B/G,EAAO+G,EACPA,EAAM,MAENA,GACAA,EAAM+F,GAAM/F,GACZ/G,EAAK8C,SAAWiE,EAAIsG,KACpBrN,EAAKiD,OAA0B,UAAjB8D,EAAI9B,UAAyC,QAAjB8B,EAAI9B,SAC9CjF,EAAKgD,KAAO+D,EAAI/D,KACZ+D,EAAItF,QACJzB,EAAKyB,MAAQsF,EAAItF,QAEhBzB,EAAKqN,OACVrN,EAAK8C,SAAWgK,GAAM9M,EAAKqN,MAAMA,MAErCtN,EAAqByB,EAAAV,GAAOd,GAC5Bc,EAAKmC,OACD,MAAQjD,EAAKiD,OACPjD,EAAKiD,OACe,oBAAb8B,UAA4B,WAAaA,SAASE,SAC/DjF,EAAK8C,WAAa9C,EAAKgD,OAEvBhD,EAAKgD,KAAOlC,EAAKmC,OAAS,MAAQ,MAEtCnC,EAAKgC,SACD9C,EAAK8C,WACoB,oBAAbiC,SAA2BA,SAASjC,SAAW,aAC/DhC,EAAKkC,KACDhD,EAAKgD,OACoB,oBAAb+B,UAA4BA,SAAS/B,KACvC+B,SAAS/B,KACTlC,EAAKmC,OACD,MACA,MAClBnC,EAAK2L,WAAazM,EAAKyM,YAAc,CACjC,UACA,YACA,gBAEJ3L,EAAKkN,YAAc,GACnBlN,EAAKoN,cAAgB,EACrBpN,EAAKd,KAAO6G,EAAc,CACtBjE,KAAM,aACNuL,OAAO,EACP/I,iBAAiB,EACjBgJ,SAAS,EACT3H,eAAgB,IAChB4H,iBAAiB,EACjBC,kBAAkB,EAClBC,oBAAoB,EACpBC,kBAAmB,CACfC,UAAW,MAEfxD,iBAAkB,CAAE,EACpByD,qBAAqB,GACtB1O,GACHc,EAAKd,KAAK4C,KACN9B,EAAKd,KAAK4C,KAAKqK,QAAQ,MAAO,KACzBnM,EAAKd,KAAKsO,iBAAmB,IAAM,IACb,iBAApBxN,EAAKd,KAAKyB,QACjBX,EAAKd,KAAKyB,MTnDf,SAAgBkN,GAGnB,IAFA,IAAIC,EAAM,CAAA,EACNC,EAAQF,EAAG1T,MAAM,KACZQ,EAAI,EAAGqT,EAAID,EAAM1S,OAAQV,EAAIqT,EAAGrT,IAAK,CAC1C,IAAIsT,EAAOF,EAAMpT,GAAGR,MAAM,KAC1B2T,EAAII,mBAAmBD,EAAK,KAAOC,mBAAmBD,EAAK,GAC/D,CACA,OAAOH,CACX,CS2C8B7R,CAAO+D,EAAKd,KAAKyB,QAGvCX,EAAKmO,GAAK,KACVnO,EAAKoO,SAAW,KAChBpO,EAAKqO,aAAe,KACpBrO,EAAKsO,YAAc,KAEnBtO,EAAKuO,iBAAmB,KACQ,mBAArB/R,mBACHwD,EAAKd,KAAK0O,sBAIV5N,EAAKwO,0BAA4B,WACzBxO,EAAKkK,YAELlK,EAAKkK,UAAU9M,qBACf4C,EAAKkK,UAAU7E,UAGvB7I,iBAAiB,eAAgBwD,EAAKwO,2BAA2B,IAE/C,cAAlBxO,EAAKgC,WACLhC,EAAKyO,qBAAuB,WACxBzO,EAAKmB,QAAQ,kBAAmB,CAC5BrB,YAAa,6BAGrBtD,iBAAiB,UAAWwD,EAAKyO,sBAAsB,KAG/DzO,EAAK+G,OAAO/G,CAChB,CAgeC,OA/dDE,EAAA+M,EAAA,CAAA,CAAAvU,IAAA,kBAAAmI,MAOA,SAAgBuJ,GACZ,IAAMzJ,EAAQoF,EAAc,CAAA,EAAIpJ,KAAKuC,KAAKyB,OAE1CA,EAAM+N,IhB/EU,EgBiFhB/N,EAAMuJ,UAAYE,EAEdzN,KAAKwR,KACLxN,EAAMiF,IAAMjJ,KAAKwR,IACrB,IAAMjP,EAAO6G,EAAc,GAAIpJ,KAAKuC,KAAM,CACtCyB,MAAAA,EACAC,OAAQjE,KACRqF,SAAUrF,KAAKqF,SACfG,OAAQxF,KAAKwF,OACbD,KAAMvF,KAAKuF,MACZvF,KAAKuC,KAAKiL,iBAAiBC,IAC9B,OAAO,IAAIuB,GAAWvB,GAAMlL,EAChC,GACA,CAAAxG,IAAA,OAAAmI,MAKA,WAAO,IACCqJ,EADD1J,EAAA7D,KAEH,GAAIA,KAAKuC,KAAKqO,iBACVN,EAAO0B,wBACmC,IAA1ChS,KAAKgP,WAAW1J,QAAQ,aACxBiI,EAAY,gBAEX,IAAI,IAAMvN,KAAKgP,WAAWtQ,OAK3B,YAHAsB,KAAKyC,cAAa,WACdoB,EAAK3C,aAAa,QAAS,0BAC9B,GAAE,GAIHqM,EAAYvN,KAAKgP,WAAW,EAChC,CACAhP,KAAKqE,WAAa,UAElB,IACIkJ,EAAYvN,KAAKiS,gBAAgB1E,EACpC,CACD,MAAO1G,GAGH,OAFA7G,KAAKgP,WAAWkD,aAChBlS,KAAKoK,MAET,CACAmD,EAAUnD,OACVpK,KAAKmS,aAAa5E,EACtB,GACA,CAAAxR,IAAA,eAAAmI,MAKA,SAAaqJ,GAAW,IAAApF,EAAAnI,KAChBA,KAAKuN,WACLvN,KAAKuN,UAAU9M,qBAGnBT,KAAKuN,UAAYA,EAEjBA,EACK3N,GAAG,QAASI,KAAKoS,QAAQ1P,KAAK1C,OAC9BJ,GAAG,SAAUI,KAAK4E,SAASlC,KAAK1C,OAChCJ,GAAG,QAASI,KAAK4J,QAAQlH,KAAK1C,OAC9BJ,GAAG,SAAS,SAACsD,GAAM,OAAKiF,EAAK3D,QAAQ,kBAAmBtB,KACjE,GACA,CAAAnH,IAAA,QAAAmI,MAMA,SAAMuJ,GAAM,IAAAhF,EAAAzI,KACJuN,EAAYvN,KAAKiS,gBAAgBxE,GACjC4E,GAAS,EACb/B,EAAO0B,uBAAwB,EAC/B,IAAMM,EAAkB,WAChBD,IAEJ9E,EAAUxC,KAAK,CAAC,CAAE7O,KAAM,OAAQC,KAAM,WACtCoR,EAAUnN,KAAK,UAAU,SAACmS,GACtB,IAAIF,EAEJ,GAAI,SAAWE,EAAIrW,MAAQ,UAAYqW,EAAIpW,KAAM,CAG7C,GAFAsM,EAAK+J,WAAY,EACjB/J,EAAKvH,aAAa,YAAaqM,IAC1BA,EACD,OACJ+C,EAAO0B,sBAAwB,cAAgBzE,EAAUE,KACzDhF,EAAK8E,UAAUvF,OAAM,WACbqK,GAEA,WAAa5J,EAAKpE,aAEtB+G,IACA3C,EAAK0J,aAAa5E,GAClBA,EAAUxC,KAAK,CAAC,CAAE7O,KAAM,aACxBuM,EAAKvH,aAAa,UAAWqM,GAC7BA,EAAY,KACZ9E,EAAK+J,WAAY,EACjB/J,EAAKgK,QACT,GACJ,KACK,CACD,IAAMhM,EAAM,IAAIhD,MAAM,eAEtBgD,EAAI8G,UAAYA,EAAUE,KAC1BhF,EAAKvH,aAAa,eAAgBuF,EACtC,CACJ,MAEJ,SAASiM,IACDL,IAGJA,GAAS,EACTjH,IACAmC,EAAU7E,QACV6E,EAAY,KAChB,CAEA,IAAML,EAAU,SAACzG,GACb,IAAMkM,EAAQ,IAAIlP,MAAM,gBAAkBgD,GAE1CkM,EAAMpF,UAAYA,EAAUE,KAC5BiF,IACAjK,EAAKvH,aAAa,eAAgByR,IAEtC,SAASC,IACL1F,EAAQ,mBACZ,CAEA,SAASJ,IACLI,EAAQ,gBACZ,CAEA,SAAS2F,EAAUC,GACXvF,GAAauF,EAAGrF,OAASF,EAAUE,MACnCiF,GAER,CAEA,IAAMtH,EAAU,WACZmC,EAAU/M,eAAe,OAAQ8R,GACjC/E,EAAU/M,eAAe,QAAS0M,GAClCK,EAAU/M,eAAe,QAASoS,GAClCnK,EAAKpI,IAAI,QAASyM,GAClBrE,EAAKpI,IAAI,YAAawS,IAE1BtF,EAAUnN,KAAK,OAAQkS,GACvB/E,EAAUnN,KAAK,QAAS8M,GACxBK,EAAUnN,KAAK,QAASwS,GACxB5S,KAAKI,KAAK,QAAS0M,GACnB9M,KAAKI,KAAK,YAAayS,IACwB,IAA3C7S,KAAKyR,SAASnM,QAAQ,iBACb,iBAATmI,EAEAzN,KAAKyC,cAAa,WACT4P,GACD9E,EAAUnD,MAEjB,GAAE,KAGHmD,EAAUnD,MAElB,GACA,CAAArO,IAAA,SAAAmI,MAKA,WAOI,GANAlE,KAAKqE,WAAa,OAClBiM,EAAO0B,sBAAwB,cAAgBhS,KAAKuN,UAAUE,KAC9DzN,KAAKkB,aAAa,QAClBlB,KAAKyS,QAGD,SAAWzS,KAAKqE,YAAcrE,KAAKuC,KAAKoO,QAGxC,IAFA,IAAI3S,EAAI,EACFqT,EAAIrR,KAAKyR,SAAS/S,OACjBV,EAAIqT,EAAGrT,IACVgC,KAAK+S,MAAM/S,KAAKyR,SAASzT,GAGrC,GACA,CAAAjC,IAAA,WAAAmI,MAKA,SAASS,GACL,GAAI,YAAc3E,KAAKqE,YACnB,SAAWrE,KAAKqE,YAChB,YAAcrE,KAAKqE,WAInB,OAHArE,KAAKkB,aAAa,SAAUyD,GAE5B3E,KAAKkB,aAAa,aACVyD,EAAOzI,MACX,IAAK,OACD8D,KAAKgT,YAAYC,KAAK5D,MAAM1K,EAAOxI,OACnC,MACJ,IAAK,OACD6D,KAAKkT,mBACLlT,KAAKmT,WAAW,QAChBnT,KAAKkB,aAAa,QAClBlB,KAAKkB,aAAa,QAClB,MACJ,IAAK,QACD,IAAMuF,EAAM,IAAIhD,MAAM,gBAEtBgD,EAAI2M,KAAOzO,EAAOxI,KAClB6D,KAAK4J,QAAQnD,GACb,MACJ,IAAK,UACDzG,KAAKkB,aAAa,OAAQyD,EAAOxI,MACjC6D,KAAKkB,aAAa,UAAWyD,EAAOxI,MAMpD,GACA,CAAAJ,IAAA,cAAAmI,MAMA,SAAY/H,GACR6D,KAAKkB,aAAa,YAAa/E,GAC/B6D,KAAKwR,GAAKrV,EAAK8M,IACfjJ,KAAKuN,UAAUvJ,MAAMiF,IAAM9M,EAAK8M,IAChCjJ,KAAKyR,SAAWzR,KAAKqT,eAAelX,EAAKsV,UACzCzR,KAAK0R,aAAevV,EAAKuV,aACzB1R,KAAK2R,YAAcxV,EAAKwV,YACxB3R,KAAKsT,WAAanX,EAAKmX,WACvBtT,KAAKwI,SAED,WAAaxI,KAAKqE,YAEtBrE,KAAKkT,kBACT,GACA,CAAAnX,IAAA,mBAAAmI,MAKA,WAAmB,IAAAyE,EAAA3I,KACfA,KAAK2C,eAAe3C,KAAK4R,kBACzB5R,KAAK4R,iBAAmB5R,KAAKyC,cAAa,WACtCkG,EAAKnE,QAAQ,eAChB,GAAExE,KAAK0R,aAAe1R,KAAK2R,aACxB3R,KAAKuC,KAAKoK,WACV3M,KAAK4R,iBAAiB/E,OAE9B,GACA,CAAA9Q,IAAA,UAAAmI,MAKA,WACIlE,KAAKuQ,YAAY1P,OAAO,EAAGb,KAAKyQ,eAIhCzQ,KAAKyQ,cAAgB,EACjB,IAAMzQ,KAAKuQ,YAAY7R,OACvBsB,KAAKkB,aAAa,SAGlBlB,KAAKyS,OAEb,GACA,CAAA1W,IAAA,QAAAmI,MAKA,WACI,GAAI,WAAalE,KAAKqE,YAClBrE,KAAKuN,UAAUzJ,WACd9D,KAAKwS,WACNxS,KAAKuQ,YAAY7R,OAAQ,CACzB,IAAM+F,EAAUzE,KAAKuT,qBACrBvT,KAAKuN,UAAUxC,KAAKtG,GAGpBzE,KAAKyQ,cAAgBhM,EAAQ/F,OAC7BsB,KAAKkB,aAAa,QACtB,CACJ,GACA,CAAAnF,IAAA,qBAAAmI,MAMA,WAII,KAH+BlE,KAAKsT,YACR,YAAxBtT,KAAKuN,UAAUE,MACfzN,KAAKuQ,YAAY7R,OAAS,GAE1B,OAAOsB,KAAKuQ,YAGhB,IADA,IZpZmB3T,EYoZf4W,EAAc,EACTxV,EAAI,EAAGA,EAAIgC,KAAKuQ,YAAY7R,OAAQV,IAAK,CAC9C,IAAM7B,EAAO6D,KAAKuQ,YAAYvS,GAAG7B,KAIjC,GAHIA,IACAqX,GZvZO,iBADI5W,EYwZeT,GZjZ1C,SAAoBwJ,GAEhB,IADA,IAAI8N,EAAI,EAAG/U,EAAS,EACXV,EAAI,EAAGqT,EAAI1L,EAAIjH,OAAQV,EAAIqT,EAAGrT,KACnCyV,EAAI9N,EAAI1H,WAAWD,IACX,IACJU,GAAU,EAEL+U,EAAI,KACT/U,GAAU,EAEL+U,EAAI,OAAUA,GAAK,MACxB/U,GAAU,GAGVV,IACAU,GAAU,GAGlB,OAAOA,CACX,CAxBegV,CAAW9W,GAGfuJ,KAAKwN,KAPQ,MAOF/W,EAAIiB,YAAcjB,EAAIgX,QYqZ5B5V,EAAI,GAAKwV,EAAcxT,KAAKsT,WAC5B,OAAOtT,KAAKuQ,YAAYtP,MAAM,EAAGjD,GAErCwV,GAAe,CACnB,CACA,OAAOxT,KAAKuQ,WAChB,GACA,CAAAxU,IAAA,QAAAmI,MAQA,SAAMqO,EAAKsB,EAAS9T,GAEhB,OADAC,KAAKmT,WAAW,UAAWZ,EAAKsB,EAAS9T,GAClCC,IACX,GAAC,CAAAjE,IAAA,OAAAmI,MACD,SAAKqO,EAAKsB,EAAS9T,GAEf,OADAC,KAAKmT,WAAW,UAAWZ,EAAKsB,EAAS9T,GAClCC,IACX,GACA,CAAAjE,IAAA,aAAAmI,MASA,SAAWhI,EAAMC,EAAM0X,EAAS9T,GAS5B,GARI,mBAAsB5D,IACtB4D,EAAK5D,EACLA,OAAO6I,GAEP,mBAAsB6O,IACtB9T,EAAK8T,EACLA,EAAU,MAEV,YAAc7T,KAAKqE,YAAc,WAAarE,KAAKqE,WAAvD,EAGAwP,EAAUA,GAAW,IACbC,UAAW,IAAUD,EAAQC,SACrC,IAAMnP,EAAS,CACXzI,KAAMA,EACNC,KAAMA,EACN0X,QAASA,GAEb7T,KAAKkB,aAAa,eAAgByD,GAClC3E,KAAKuQ,YAAYrQ,KAAKyE,GAClB5E,GACAC,KAAKI,KAAK,QAASL,GACvBC,KAAKyS,OAZL,CAaJ,GACA,CAAA1W,IAAA,QAAAmI,MAGA,WAAQ,IAAAqF,EAAAvJ,KACE0I,EAAQ,WACVa,EAAK/E,QAAQ,gBACb+E,EAAKgE,UAAU7E,SAEbqL,EAAkB,SAAlBA,IACFxK,EAAKlJ,IAAI,UAAW0T,GACpBxK,EAAKlJ,IAAI,eAAgB0T,GACzBrL,KAEEsL,EAAiB,WAEnBzK,EAAKnJ,KAAK,UAAW2T,GACrBxK,EAAKnJ,KAAK,eAAgB2T,IAqB9B,MAnBI,YAAc/T,KAAKqE,YAAc,SAAWrE,KAAKqE,aACjDrE,KAAKqE,WAAa,UACdrE,KAAKuQ,YAAY7R,OACjBsB,KAAKI,KAAK,SAAS,WACXmJ,EAAKiJ,UACLwB,IAGAtL,GAER,IAEK1I,KAAKwS,UACVwB,IAGAtL,KAGD1I,IACX,GACA,CAAAjE,IAAA,UAAAmI,MAKA,SAAQuC,GACJ6J,EAAO0B,uBAAwB,EAC/BhS,KAAKkB,aAAa,QAASuF,GAC3BzG,KAAKwE,QAAQ,kBAAmBiC,EACpC,GACA,CAAA1K,IAAA,UAAAmI,MAKA,SAAQhB,EAAQC,GACR,YAAcnD,KAAKqE,YACnB,SAAWrE,KAAKqE,YAChB,YAAcrE,KAAKqE,aAEnBrE,KAAK2C,eAAe3C,KAAK4R,kBAEzB5R,KAAKuN,UAAU9M,mBAAmB,SAElCT,KAAKuN,UAAU7E,QAEf1I,KAAKuN,UAAU9M,qBACoB,mBAAxBC,sBACPA,oBAAoB,eAAgBV,KAAK6R,2BAA2B,GACpEnR,oBAAoB,UAAWV,KAAK8R,sBAAsB,IAG9D9R,KAAKqE,WAAa,SAElBrE,KAAKwR,GAAK,KAEVxR,KAAKkB,aAAa,QAASgC,EAAQC,GAGnCnD,KAAKuQ,YAAc,GACnBvQ,KAAKyQ,cAAgB,EAE7B,GACA,CAAA1U,IAAA,iBAAAmI,MAMA,SAAeuN,GAIX,IAHA,IAAMwC,EAAmB,GACrBjW,EAAI,EACFkW,EAAIzC,EAAS/S,OACZV,EAAIkW,EAAGlW,KACLgC,KAAKgP,WAAW1J,QAAQmM,EAASzT,KAClCiW,EAAiB/T,KAAKuR,EAASzT,IAEvC,OAAOiW,CACX,KAAC3D,CAAA,EAvkBuB5Q,GAykBtByU,GAAC3M,ShBtiBiB,EiBvCA8I,GAAO9I,yBCA/B,SAAS4M,GAAUC,EAAMC,EAAQ3O,GAE/B,IADA,IAAI8N,EAAI,EACCzV,EAAI,EAAGqT,EAAI1L,EAAIjH,OAAQV,EAAIqT,EAAGrT,KACrCyV,EAAI9N,EAAI1H,WAAWD,IACX,IACNqW,EAAKE,SAASD,IAAUb,GAEjBA,EAAI,MACXY,EAAKE,SAASD,IAAU,IAAQb,GAAK,GACrCY,EAAKE,SAASD,IAAU,IAAY,GAAJb,IAEzBA,EAAI,OAAUA,GAAK,OAC1BY,EAAKE,SAASD,IAAU,IAAQb,GAAK,IACrCY,EAAKE,SAASD,IAAU,IAAQb,GAAK,EAAK,IAC1CY,EAAKE,SAASD,IAAU,IAAY,GAAJb,KAGhCzV,IACAyV,EAAI,QAAiB,KAAJA,IAAc,GAA2B,KAApB9N,EAAI1H,WAAWD,IACrDqW,EAAKE,SAASD,IAAU,IAAQb,GAAK,IACrCY,EAAKE,SAASD,IAAU,IAAQb,GAAK,GAAM,IAC3CY,EAAKE,SAASD,IAAU,IAAQb,GAAK,EAAK,IAC1CY,EAAKE,SAASD,IAAU,IAAY,GAAJb,GAGtC,CAuBA,SAASe,GAAQnV,EAAOoV,EAAQvQ,GAC9B,IAAIhI,EAAIsU,EAAUtM,GAAOlG,EAAI,EAAGqT,EAAI,EAAGqD,EAAK,EAAGC,EAAK,EAAGjW,EAAS,EAAGkV,EAAO,EAE1E,GAAa,WAAT1X,EAAmB,CAIrB,GAHAwC,EAzBJ,SAAoBiH,GAElB,IADA,IAAI8N,EAAI,EAAG/U,EAAS,EACXV,EAAI,EAAGqT,EAAI1L,EAAIjH,OAAQV,EAAIqT,EAAGrT,KACrCyV,EAAI9N,EAAI1H,WAAWD,IACX,IACNU,GAAU,EAEH+U,EAAI,KACX/U,GAAU,EAEH+U,EAAI,OAAUA,GAAK,MAC1B/U,GAAU,GAGVV,IACAU,GAAU,GAGd,OAAOA,CACT,CAMagV,CAAWxP,GAGhBxF,EAAS,GACXW,EAAMa,KAAc,IAATxB,GACXkV,EAAO,OAGJ,GAAIlV,EAAS,IAChBW,EAAMa,KAAK,IAAMxB,GACjBkV,EAAO,OAGJ,GAAIlV,EAAS,MAChBW,EAAMa,KAAK,IAAMxB,GAAU,EAAGA,GAC9BkV,EAAO,MAGJ,MAAIlV,EAAS,YAIhB,MAAM,IAAI+E,MAAM,mBAHhBpE,EAAMa,KAAK,IAAMxB,GAAU,GAAIA,GAAU,GAAIA,GAAU,EAAGA,GAC1DkV,EAAO,CAGR,CAED,OADAa,EAAOvU,KAAK,CAAE0U,KAAM1Q,EAAO2Q,QAASnW,EAAQoW,QAASzV,EAAMX,SACpDkV,EAAOlV,CACf,CACD,GAAa,WAATxC,EAIF,OAAIiK,KAAKC,MAAMlC,KAAWA,GAAU6Q,SAAS7Q,GAMzCA,GAAS,EAEPA,EAAQ,KACV7E,EAAMa,KAAKgE,GACJ,GAGLA,EAAQ,KACV7E,EAAMa,KAAK,IAAMgE,GACV,GAGLA,EAAQ,OACV7E,EAAMa,KAAK,IAAMgE,GAAS,EAAGA,GACtB,GAGLA,EAAQ,YACV7E,EAAMa,KAAK,IAAMgE,GAAS,GAAIA,GAAS,GAAIA,GAAS,EAAGA,GAChD,IAGTwQ,EAAMxQ,EAAQiC,KAAK6O,IAAI,EAAG,KAAQ,EAClCL,EAAKzQ,IAAU,EACf7E,EAAMa,KAAK,IAAMwU,GAAM,GAAIA,GAAM,GAAIA,GAAM,EAAGA,EAAIC,GAAM,GAAIA,GAAM,GAAIA,GAAM,EAAGA,GACxE,GAGHzQ,IAAU,IACZ7E,EAAMa,KAAKgE,GACJ,GAGLA,IAAU,KACZ7E,EAAMa,KAAK,IAAMgE,GACV,GAGLA,IAAU,OACZ7E,EAAMa,KAAK,IAAMgE,GAAS,EAAGA,GACtB,GAGLA,IAAU,YACZ7E,EAAMa,KAAK,IAAMgE,GAAS,GAAIA,GAAS,GAAIA,GAAS,EAAGA,GAChD,IAGTwQ,EAAKvO,KAAKC,MAAMlC,EAAQiC,KAAK6O,IAAI,EAAG,KACpCL,EAAKzQ,IAAU,EACf7E,EAAMa,KAAK,IAAMwU,GAAM,GAAIA,GAAM,GAAIA,GAAM,EAAGA,EAAIC,GAAM,GAAIA,GAAM,GAAIA,GAAM,EAAGA,GACxE,IAxDPtV,EAAMa,KAAK,KACXuU,EAAOvU,KAAK,CAAE+U,OAAQ/Q,EAAO2Q,QAAS,EAAGC,QAASzV,EAAMX,SACjD,GAyDX,GAAa,WAATxC,EAAmB,CAErB,GAAc,OAAVgI,EAEF,OADA7E,EAAMa,KAAK,KACJ,EAGT,GAAIc,MAAMkU,QAAQhR,GAAQ,CAIxB,IAHAxF,EAASwF,EAAMxF,QAGF,GACXW,EAAMa,KAAc,IAATxB,GACXkV,EAAO,OAGJ,GAAIlV,EAAS,MAChBW,EAAMa,KAAK,IAAMxB,GAAU,EAAGA,GAC9BkV,EAAO,MAGJ,MAAIlV,EAAS,YAIhB,MAAM,IAAI+E,MAAM,mBAHhBpE,EAAMa,KAAK,IAAMxB,GAAU,GAAIA,GAAU,GAAIA,GAAU,EAAGA,GAC1DkV,EAAO,CAGR,CACD,IAAK5V,EAAI,EAAGA,EAAIU,EAAQV,IACtB4V,GAAQY,GAAQnV,EAAOoV,EAAQvQ,EAAMlG,IAEvC,OAAO4V,CACR,CAGD,GAAI1P,aAAiBqC,KAAM,CACzB,IAAI4O,EAAOjR,EAAMkR,UAIjB,OAHAV,EAAKvO,KAAKC,MAAM+O,EAAOhP,KAAK6O,IAAI,EAAG,KACnCL,EAAKQ,IAAS,EACd9V,EAAMa,KAAK,IAAM,EAAGwU,GAAM,GAAIA,GAAM,GAAIA,GAAM,EAAGA,EAAIC,GAAM,GAAIA,GAAM,GAAIA,GAAM,EAAGA,GAC3E,EACR,CAED,GAAIzQ,aAAiBxH,YAAa,CAIhC,IAHAgC,EAASwF,EAAMrG,YAGF,IACXwB,EAAMa,KAAK,IAAMxB,GACjBkV,EAAO,OAGT,GAAIlV,EAAS,MACXW,EAAMa,KAAK,IAAMxB,GAAU,EAAGA,GAC9BkV,EAAO,MAGT,MAAIlV,EAAS,YAIX,MAAM,IAAI+E,MAAM,oBAHhBpE,EAAMa,KAAK,IAAMxB,GAAU,GAAIA,GAAU,GAAIA,GAAU,EAAGA,GAC1DkV,EAAO,CAGR,CAED,OADAa,EAAOvU,KAAK,CAAEmV,KAAMnR,EAAO2Q,QAASnW,EAAQoW,QAASzV,EAAMX,SACpDkV,EAAOlV,CACf,CAED,GAA4B,mBAAjBwF,EAAMoR,OACf,OAAOd,GAAQnV,EAAOoV,EAAQvQ,EAAMoR,UAGtC,IAAIzZ,EAAO,GAAIE,EAAM,GAEjBwZ,EAAU7Z,OAAOG,KAAKqI,GAC1B,IAAKlG,EAAI,EAAGqT,EAAIkE,EAAQ7W,OAAQV,EAAIqT,EAAGrT,IAEX,mBAAfkG,EADXnI,EAAMwZ,EAAQvX,KAEZnC,EAAKqE,KAAKnE,GAMd,IAHA2C,EAAS7C,EAAK6C,QAGD,GACXW,EAAMa,KAAc,IAATxB,GACXkV,EAAO,OAGJ,GAAIlV,EAAS,MAChBW,EAAMa,KAAK,IAAMxB,GAAU,EAAGA,GAC9BkV,EAAO,MAGJ,MAAIlV,EAAS,YAIhB,MAAM,IAAI+E,MAAM,oBAHhBpE,EAAMa,KAAK,IAAMxB,GAAU,GAAIA,GAAU,GAAIA,GAAU,EAAGA,GAC1DkV,EAAO,CAGR,CAED,IAAK5V,EAAI,EAAGA,EAAIU,EAAQV,IAEtB4V,GAAQY,GAAQnV,EAAOoV,EADvB1Y,EAAMF,EAAKmC,IAEX4V,GAAQY,GAAQnV,EAAOoV,EAAQvQ,EAAMnI,IAEvC,OAAO6X,CACR,CAED,GAAa,YAAT1X,EAEF,OADAmD,EAAMa,KAAKgE,EAAQ,IAAO,KACnB,EAGT,GAAa,cAAThI,EAEF,OADAmD,EAAMa,KAAK,IAAM,EAAG,GACb,EAET,MAAM,IAAIuD,MAAM,mBAClB,CA0CA,IAAA+R,GAxCA,SAAgBtR,GACd,IAAI7E,EAAQ,GACRoV,EAAS,GACTb,EAAOY,GAAQnV,EAAOoV,EAAQvQ,GAC9BuR,EAAM,IAAI/Y,YAAYkX,GACtBS,EAAO,IAAIqB,SAASD,GAEpBE,EAAa,EACbC,EAAe,EACfC,GAAc,EACdpB,EAAO/V,OAAS,IAClBmX,EAAapB,EAAO,GAAGK,SAIzB,IADA,IAAIgB,EAAOC,EAAc,EAAGzB,EAAS,EAC5BtW,EAAI,EAAGqT,EAAIhS,EAAMX,OAAQV,EAAIqT,EAAGrT,IAEvC,GADAqW,EAAKE,SAASqB,EAAe5X,EAAGqB,EAAMrB,IAClCA,EAAI,IAAM6X,EAAd,CAIA,GAFAE,GADAD,EAAQrB,EAAOkB,IACKd,QACpBP,EAASsB,EAAeC,EACpBC,EAAMT,KAER,IADA,IAAIW,EAAM,IAAIrY,WAAWmY,EAAMT,MACtBnB,EAAI,EAAGA,EAAI6B,EAAa7B,IAC/BG,EAAKE,SAASD,EAASJ,EAAG8B,EAAI9B,SAEvB4B,EAAMlB,KACfR,GAAUC,EAAMC,EAAQwB,EAAMlB,WACJ5P,IAAjB8Q,EAAMb,QACfZ,EAAK4B,WAAW3B,EAAQwB,EAAMb,QAGhCW,GAAgBG,EACZtB,IAFJkB,KAGEE,EAAapB,EAAOkB,GAAYb,QAjBK,CAoBzC,OAAOW,CACT,EC5SA,SAASS,GAAQrZ,GAEf,GADAmD,KAAK8U,QAAU,EACXjY,aAAkBH,YACpBsD,KAAKmW,QAAUtZ,EACfmD,KAAKoW,MAAQ,IAAIV,SAAS1V,KAAKmW,aAC1B,KAAIzZ,YAAYC,OAAOE,GAI5B,MAAM,IAAI4G,MAAM,oBAHhBzD,KAAKmW,QAAUtZ,EAAOA,OACtBmD,KAAKoW,MAAQ,IAAIV,SAAS1V,KAAKmW,QAAStZ,EAAOe,WAAYf,EAAOgB,WAGnE,CACH,CA2CAqY,GAAQ5Z,UAAU+Z,OAAS,SAAU3X,GAEnC,IADA,IAAIwF,EAAQ,IAAIlD,MAAMtC,GACbV,EAAI,EAAGA,EAAIU,EAAQV,IAC1BkG,EAAMlG,GAAKgC,KAAKsW,SAElB,OAAOpS,CACT,EAEAgS,GAAQ5Z,UAAUia,KAAO,SAAU7X,GAEjC,IADA,IAAcwF,EAAQ,CAAA,EACblG,EAAI,EAAGA,EAAIU,EAAQV,IAE1BkG,EADMlE,KAAKsW,UACEtW,KAAKsW,SAEpB,OAAOpS,CACT,EAEAgS,GAAQ5Z,UAAUsY,KAAO,SAAUlW,GACjC,IAAIwF,EA3DN,SAAkBmQ,EAAMC,EAAQ5V,GAE9B,IADA,IAAI8X,EAAS,GAAIC,EAAM,EACdzY,EAAIsW,EAAQoC,EAAMpC,EAAS5V,EAAQV,EAAI0Y,EAAK1Y,IAAK,CACxD,IAAI2Y,EAAOtC,EAAKuC,SAAS5Y,GACzB,GAAsB,IAAV,IAAP2Y,GAIL,GAAsB,MAAV,IAAPA,GAOL,GAAsB,MAAV,IAAPA,GAAL,CAQA,GAAsB,MAAV,IAAPA,GAaL,MAAM,IAAIlT,MAAM,gBAAkBkT,EAAKpa,SAAS,MAZ9Cka,GAAe,EAAPE,IAAgB,IACC,GAArBtC,EAAKuC,WAAW5Y,KAAc,IACT,GAArBqW,EAAKuC,WAAW5Y,KAAc,GACT,GAArBqW,EAAKuC,WAAW5Y,KAAc,IACvB,OACTyY,GAAO,MACPD,GAAUhX,OAAOC,aAA4B,OAAdgX,IAAQ,IAA8B,OAAT,KAANA,KAEtDD,GAAUhX,OAAOC,aAAagX,EAVjC,MANCD,GAAUhX,OAAOC,cACN,GAAPkX,IAAgB,IACK,GAArBtC,EAAKuC,WAAW5Y,KAAc,GACT,GAArBqW,EAAKuC,WAAW5Y,KAAc,QAVlCwY,GAAUhX,OAAOC,cACN,GAAPkX,IAAgB,EACI,GAArBtC,EAAKuC,WAAW5Y,SANnBwY,GAAUhX,OAAOC,aAAakX,EAgCjC,CACD,OAAOH,CACT,CAoBcK,CAAS7W,KAAKoW,MAAOpW,KAAK8U,QAASpW,GAE/C,OADAsB,KAAK8U,SAAWpW,EACTwF,CACT,EAEAgS,GAAQ5Z,UAAU+Y,KAAO,SAAU3W,GACjC,IAAIwF,EAAQlE,KAAKmW,QAAQlV,MAAMjB,KAAK8U,QAAS9U,KAAK8U,QAAUpW,GAE5D,OADAsB,KAAK8U,SAAWpW,EACTwF,CACT,EAEAgS,GAAQ5Z,UAAUga,OAAS,WACzB,IACIpS,EADA4S,EAAS9W,KAAKoW,MAAMQ,SAAS5W,KAAK8U,WAC3BpW,EAAS,EAAGxC,EAAO,EAAGwY,EAAK,EAAGC,EAAK,EAE9C,GAAImC,EAAS,IAEX,OAAIA,EAAS,IACJA,EAGLA,EAAS,IACJ9W,KAAKuW,KAAc,GAATO,GAGfA,EAAS,IACJ9W,KAAKqW,OAAgB,GAATS,GAGd9W,KAAK4U,KAAc,GAATkC,GAInB,GAAIA,EAAS,IACX,OAA8B,GAAtB,IAAOA,EAAS,GAG1B,OAAQA,GAEN,KAAK,IACH,OAAO,KAET,KAAK,IACH,OAAO,EAET,KAAK,IACH,OAAO,EAGT,KAAK,IAGH,OAFApY,EAASsB,KAAKoW,MAAMQ,SAAS5W,KAAK8U,SAClC9U,KAAK8U,SAAW,EACT9U,KAAKqV,KAAK3W,GACnB,KAAK,IAGH,OAFAA,EAASsB,KAAKoW,MAAMW,UAAU/W,KAAK8U,SACnC9U,KAAK8U,SAAW,EACT9U,KAAKqV,KAAK3W,GACnB,KAAK,IAGH,OAFAA,EAASsB,KAAKoW,MAAMY,UAAUhX,KAAK8U,SACnC9U,KAAK8U,SAAW,EACT9U,KAAKqV,KAAK3W,GAGnB,KAAK,IAIH,OAHAA,EAASsB,KAAKoW,MAAMQ,SAAS5W,KAAK8U,SAClC5Y,EAAO8D,KAAKoW,MAAMa,QAAQjX,KAAK8U,QAAU,GACzC9U,KAAK8U,SAAW,EACT,CAAC5Y,EAAM8D,KAAKqV,KAAK3W,IAC1B,KAAK,IAIH,OAHAA,EAASsB,KAAKoW,MAAMW,UAAU/W,KAAK8U,SACnC5Y,EAAO8D,KAAKoW,MAAMa,QAAQjX,KAAK8U,QAAU,GACzC9U,KAAK8U,SAAW,EACT,CAAC5Y,EAAM8D,KAAKqV,KAAK3W,IAC1B,KAAK,IAIH,OAHAA,EAASsB,KAAKoW,MAAMY,UAAUhX,KAAK8U,SACnC5Y,EAAO8D,KAAKoW,MAAMa,QAAQjX,KAAK8U,QAAU,GACzC9U,KAAK8U,SAAW,EACT,CAAC5Y,EAAM8D,KAAKqV,KAAK3W,IAG1B,KAAK,IAGH,OAFAwF,EAAQlE,KAAKoW,MAAMc,WAAWlX,KAAK8U,SACnC9U,KAAK8U,SAAW,EACT5Q,EACT,KAAK,IAGH,OAFAA,EAAQlE,KAAKoW,MAAMe,WAAWnX,KAAK8U,SACnC9U,KAAK8U,SAAW,EACT5Q,EAGT,KAAK,IAGH,OAFAA,EAAQlE,KAAKoW,MAAMQ,SAAS5W,KAAK8U,SACjC9U,KAAK8U,SAAW,EACT5Q,EACT,KAAK,IAGH,OAFAA,EAAQlE,KAAKoW,MAAMW,UAAU/W,KAAK8U,SAClC9U,KAAK8U,SAAW,EACT5Q,EACT,KAAK,IAGH,OAFAA,EAAQlE,KAAKoW,MAAMY,UAAUhX,KAAK8U,SAClC9U,KAAK8U,SAAW,EACT5Q,EACT,KAAK,IAIH,OAHAwQ,EAAK1U,KAAKoW,MAAMY,UAAUhX,KAAK8U,SAAW3O,KAAK6O,IAAI,EAAG,IACtDL,EAAK3U,KAAKoW,MAAMY,UAAUhX,KAAK8U,QAAU,GACzC9U,KAAK8U,SAAW,EACTJ,EAAKC,EAGd,KAAK,IAGH,OAFAzQ,EAAQlE,KAAKoW,MAAMa,QAAQjX,KAAK8U,SAChC9U,KAAK8U,SAAW,EACT5Q,EACT,KAAK,IAGH,OAFAA,EAAQlE,KAAKoW,MAAMgB,SAASpX,KAAK8U,SACjC9U,KAAK8U,SAAW,EACT5Q,EACT,KAAK,IAGH,OAFAA,EAAQlE,KAAKoW,MAAMiB,SAASrX,KAAK8U,SACjC9U,KAAK8U,SAAW,EACT5Q,EACT,KAAK,IAIH,OAHAwQ,EAAK1U,KAAKoW,MAAMiB,SAASrX,KAAK8U,SAAW3O,KAAK6O,IAAI,EAAG,IACrDL,EAAK3U,KAAKoW,MAAMY,UAAUhX,KAAK8U,QAAU,GACzC9U,KAAK8U,SAAW,EACTJ,EAAKC,EAGd,KAAK,IAGH,OAFAzY,EAAO8D,KAAKoW,MAAMa,QAAQjX,KAAK8U,SAC/B9U,KAAK8U,SAAW,EACH,IAAT5Y,OACF8D,KAAK8U,SAAW,GAGX,CAAC5Y,EAAM8D,KAAKqV,KAAK,IAC1B,KAAK,IAGH,OAFAnZ,EAAO8D,KAAKoW,MAAMa,QAAQjX,KAAK8U,SAC/B9U,KAAK8U,SAAW,EACT,CAAC5Y,EAAM8D,KAAKqV,KAAK,IAC1B,KAAK,IAGH,OAFAnZ,EAAO8D,KAAKoW,MAAMa,QAAQjX,KAAK8U,SAC/B9U,KAAK8U,SAAW,EACT,CAAC5Y,EAAM8D,KAAKqV,KAAK,IAC1B,KAAK,IAGH,OAFAnZ,EAAO8D,KAAKoW,MAAMa,QAAQjX,KAAK8U,SAC/B9U,KAAK8U,SAAW,EACH,IAAT5Y,GACFwY,EAAK1U,KAAKoW,MAAMiB,SAASrX,KAAK8U,SAAW3O,KAAK6O,IAAI,EAAG,IACrDL,EAAK3U,KAAKoW,MAAMY,UAAUhX,KAAK8U,QAAU,GACzC9U,KAAK8U,SAAW,EACT,IAAIvO,KAAKmO,EAAKC,IAEhB,CAACzY,EAAM8D,KAAKqV,KAAK,IAC1B,KAAK,IAGH,OAFAnZ,EAAO8D,KAAKoW,MAAMa,QAAQjX,KAAK8U,SAC/B9U,KAAK8U,SAAW,EACT,CAAC5Y,EAAM8D,KAAKqV,KAAK,KAG1B,KAAK,IAGH,OAFA3W,EAASsB,KAAKoW,MAAMQ,SAAS5W,KAAK8U,SAClC9U,KAAK8U,SAAW,EACT9U,KAAK4U,KAAKlW,GACnB,KAAK,IAGH,OAFAA,EAASsB,KAAKoW,MAAMW,UAAU/W,KAAK8U,SACnC9U,KAAK8U,SAAW,EACT9U,KAAK4U,KAAKlW,GACnB,KAAK,IAGH,OAFAA,EAASsB,KAAKoW,MAAMY,UAAUhX,KAAK8U,SACnC9U,KAAK8U,SAAW,EACT9U,KAAK4U,KAAKlW,GAGnB,KAAK,IAGH,OAFAA,EAASsB,KAAKoW,MAAMW,UAAU/W,KAAK8U,SACnC9U,KAAK8U,SAAW,EACT9U,KAAKqW,OAAO3X,GACrB,KAAK,IAGH,OAFAA,EAASsB,KAAKoW,MAAMY,UAAUhX,KAAK8U,SACnC9U,KAAK8U,SAAW,EACT9U,KAAKqW,OAAO3X,GAGrB,KAAK,IAGH,OAFAA,EAASsB,KAAKoW,MAAMW,UAAU/W,KAAK8U,SACnC9U,KAAK8U,SAAW,EACT9U,KAAKuW,KAAK7X,GACnB,KAAK,IAGH,OAFAA,EAASsB,KAAKoW,MAAMY,UAAUhX,KAAK8U,SACnC9U,KAAK8U,SAAW,EACT9U,KAAKuW,KAAK7X,GAGrB,MAAM,IAAI+E,MAAM,kBAClB,EAWA,IAAA6T,GATA,SAAgBza,GACd,IAAI0a,EAAU,IAAIrB,GAAQrZ,GACtBqH,EAAQqT,EAAQjB,SACpB,GAAIiB,EAAQzC,UAAYjY,EAAOgB,WAC7B,MAAM,IAAI4F,MAAO5G,EAAOgB,WAAa0Z,EAAQzC,QAAW,mBAE1D,OAAO5Q,CACT,ECtRcsT,GAAA3R,OAAG4R,GACjBD,GAAAlY,OAAiBoY,uCCcjB,SAAShY,EAAQ9C,GACf,GAAIA,EAAK,OAWX,SAAeA,GACb,IAAK,IAAIb,KAAO2D,EAAQpD,UACtBM,EAAIb,GAAO2D,EAAQpD,UAAUP,GAE/B,OAAOa,CACT,CAhBkB+C,CAAM/C,EACxB,CAXE+a,EAAAC,QAAiBlY,EAqCnBA,EAAQpD,UAAUsD,GAClBF,EAAQpD,UAAUuD,iBAAmB,SAASC,EAAOC,GAInD,OAHAC,KAAKC,WAAaD,KAAKC,YAAc,CAAA,GACpCD,KAAKC,WAAW,IAAMH,GAASE,KAAKC,WAAW,IAAMH,IAAU,IAC7DI,KAAKH,GACDC,MAaTN,EAAQpD,UAAU8D,KAAO,SAASN,EAAOC,GACvC,SAASH,IACPI,KAAKK,IAAIP,EAAOF,GAChBG,EAAGO,MAAMN,KAAMO,UAChB,CAID,OAFAX,EAAGG,GAAKA,EACRC,KAAKJ,GAAGE,EAAOF,GACRI,MAaTN,EAAQpD,UAAU+D,IAClBX,EAAQpD,UAAUkE,eAClBd,EAAQpD,UAAUmE,mBAClBf,EAAQpD,UAAUoE,oBAAsB,SAASZ,EAAOC,GAItD,GAHAC,KAAKC,WAAaD,KAAKC,YAAc,CAAA,EAGjC,GAAKM,UAAU7B,OAEjB,OADAsB,KAAKC,WAAa,GACXD,KAIT,IAUIW,EAVAC,EAAYZ,KAAKC,WAAW,IAAMH,GACtC,IAAKc,EAAW,OAAOZ,KAGvB,GAAI,GAAKO,UAAU7B,OAEjB,cADOsB,KAAKC,WAAW,IAAMH,GACtBE,KAKT,IAAK,IAAIhC,EAAI,EAAGA,EAAI4C,EAAUlC,OAAQV,IAEpC,IADA2C,EAAKC,EAAU5C,MACJ+B,GAAMY,EAAGZ,KAAOA,EAAI,CAC7Ba,EAAUC,OAAO7C,EAAG,GACpB,KACD,CASH,OAJyB,IAArB4C,EAAUlC,eACLsB,KAAKC,WAAW,IAAMH,GAGxBE,MAWTN,EAAQpD,UAAUwE,KAAO,SAAShB,GAChCE,KAAKC,WAAaD,KAAKC,YAAc,CAAA,EAKrC,IAHA,IAAIc,EAAO,IAAIC,MAAMT,UAAU7B,OAAS,GACpCkC,EAAYZ,KAAKC,WAAW,IAAMH,GAE7B9B,EAAI,EAAGA,EAAIuC,UAAU7B,OAAQV,IACpC+C,EAAK/C,EAAI,GAAKuC,UAAUvC,GAG1B,GAAI4C,EAEG,CAAI5C,EAAI,EAAb,IAAK,IAAWkB,GADhB0B,EAAYA,EAAUK,MAAM,IACIvC,OAAQV,EAAIkB,IAAOlB,EACjD4C,EAAU5C,GAAGsC,MAAMN,KAAMe,EADKrC,CAKlC,OAAOsB,MAWTN,EAAQpD,UAAU6E,UAAY,SAASrB,GAErC,OADAE,KAAKC,WAAaD,KAAKC,YAAc,CAAA,EAC9BD,KAAKC,WAAW,IAAMH,IAAU,IAWzCJ,EAAQpD,UAAU8E,aAAe,SAAStB,GACxC,QAAUE,KAAKmB,UAAUrB,GAAOpB,aC7KlC,IAAImZ,GAAUJ,GACV/X,GAAUgY,GAAAA,QAEElQ,GAAAsQ,GAAAtQ,SAAG,EAMfuQ,GAAcC,GAAAF,GAAAC,WAAqB,CACrCE,QAAS,EACTC,WAAY,EACZC,MAAO,EACPC,IAAK,EACLC,cAAe,GAGbC,GACF7S,OAAO6S,WACP,SAAUpU,GACR,MACmB,iBAAVA,GACP6Q,SAAS7Q,IACTiC,KAAKC,MAAMlC,KAAWA,CAE5B,EAEIqU,GAAW,SAAUrU,GACvB,MAAwB,iBAAVA,CAChB,EAEIsU,GAAW,SAAUtU,GACvB,MAAiD,oBAA1CxI,OAAOY,UAAUC,SAASC,KAAK0H,EACxC,EAEA,SAASuU,KAAY,CAMrB,SAASvC,KAAY,CAJrBuC,GAAQnc,UAAUuJ,OAAS,SAAUlB,GACnC,MAAO,CAACkT,GAAQhS,OAAOlB,GACzB,EAIAjF,GAAQwW,GAAQ5Z,WAEhB4Z,GAAQ5Z,UAAUoc,IAAM,SAAU9b,GAChC,IAAI+B,EAAUkZ,GAAQvY,OAAO1C,GAC7BoD,KAAK2Y,YAAYha,GACjBqB,KAAKc,KAAK,UAAWnC,EACvB,EAeAuX,GAAQ5Z,UAAUqc,YAAc,SAAUha,GAKxC,KAHE2Z,GAAU3Z,EAAQzC,OAClByC,EAAQzC,MAAQ6b,GAAWE,SAC3BtZ,EAAQzC,MAAQ6b,GAAWM,eAE3B,MAAM,IAAI5U,MAAM,uBAGlB,IAAK8U,GAAS5Z,EAAQia,KACpB,MAAM,IAAInV,MAAM,qBAGlB,IA1BF,SAAqB9E,GACnB,OAAQA,EAAQzC,MACd,KAAK6b,GAAWE,QACd,YAAwBjT,IAAjBrG,EAAQxC,MAAsBqc,GAAS7Z,EAAQxC,MACxD,KAAK4b,GAAWG,WACd,YAAwBlT,IAAjBrG,EAAQxC,KACjB,KAAK4b,GAAWM,cACd,OAAOE,GAAS5Z,EAAQxC,OAASqc,GAAS7Z,EAAQxC,MACpD,QACE,OAAO6E,MAAMkU,QAAQvW,EAAQxC,MAEnC,CAeO0c,CAAYla,GACf,MAAM,IAAI8E,MAAM,mBAIlB,UADgCuB,IAAfrG,EAAQ6S,IAAoB8G,GAAU3Z,EAAQ6S,KAE7D,MAAM,IAAI/N,MAAM,oBAEpB,EAEAyS,GAAQ5Z,UAAUwc,QAAU,aAE5B,IAAeC,GAAAjB,GAAAW,QAAGA,GAClBO,GAAAlB,GAAA5B,QAAkBA,wGC1FX,SAAStW,GAAGhD,EAAKqQ,EAAIlN,GAExB,OADAnD,EAAIgD,GAAGqN,EAAIlN,GACJ,WACHnD,EAAIyD,IAAI4M,EAAIlN,GAEpB,CCEA,IAAMkZ,GAAkBvd,OAAOwd,OAAO,CAClCC,QAAS,EACTC,cAAe,EACfC,WAAY,EACZC,cAAe,EAEfC,YAAa,EACb/Y,eAAgB,IA0BP8P,YAAM3M,GAAAZ,EAAAuN,EAAA3M,GAAA,IAAAX,EAAAC,EAAAqN,GAIf,SAAAA,EAAYkJ,EAAIZ,EAAKrW,GAAM,IAAAc,EAoDP,OApDOC,OAAAgN,IACvBjN,EAAAL,EAAAxG,KAAAwD,OAeKyZ,WAAY,EAKjBpW,EAAKqW,WAAY,EAIjBrW,EAAKsW,cAAgB,GAIrBtW,EAAKuW,WAAa,GAOlBvW,EAAKwW,OAAS,GAKdxW,EAAKyW,UAAY,EACjBzW,EAAK0W,IAAM,EACX1W,EAAK2W,KAAO,GACZ3W,EAAK4W,MAAQ,GACb5W,EAAKmW,GAAKA,EACVnW,EAAKuV,IAAMA,EACPrW,GAAQA,EAAK2X,OACb7W,EAAK6W,KAAO3X,EAAK2X,MAErB7W,EAAK8W,MAAQ/Q,EAAc,CAAE,EAAE7G,GAC3Bc,EAAKmW,GAAGY,cACR/W,EAAK+G,OAAO/G,CACpB,CAmuBC,OAluBDE,EAAA+M,EAAA,CAAA,CAAAvU,IAAA,eAAA+L,IAcA,WACI,OAAQ9H,KAAKyZ,SACjB,GACA,CAAA1d,IAAA,YAAAmI,MAKA,WACI,IAAIlE,KAAKqa,KAAT,CAEA,IAAMb,EAAKxZ,KAAKwZ,GAChBxZ,KAAKqa,KAAO,CACRza,GAAG4Z,EAAI,OAAQxZ,KAAK0M,OAAOhK,KAAK1C,OAChCJ,GAAG4Z,EAAI,SAAUxZ,KAAKsa,SAAS5X,KAAK1C,OACpCJ,GAAG4Z,EAAI,QAASxZ,KAAKkN,QAAQxK,KAAK1C,OAClCJ,GAAG4Z,EAAI,QAASxZ,KAAK8M,QAAQpK,KAAK1C,OANlC,CAQR,GACA,CAAAjE,IAAA,SAAA+L,IAiBA,WACI,QAAS9H,KAAKqa,IAClB,GACA,CAAAte,IAAA,UAAAmI,MAUA,WACI,OAAIlE,KAAKyZ,YAETzZ,KAAKua,YACAva,KAAKwZ,GAAkB,eACxBxZ,KAAKwZ,GAAGpP,OACR,SAAWpK,KAAKwZ,GAAGgB,aACnBxa,KAAK0M,UALE1M,IAOf,GACA,CAAAjE,IAAA,OAAAmI,MAGA,WACI,OAAOlE,KAAKmZ,SAChB,GACA,CAAApd,IAAA,OAAAmI,MAeA,WAAc,IAAA,IAAAxC,EAAAnB,UAAA7B,OAANqC,EAAIC,IAAAA,MAAAU,GAAAE,EAAA,EAAAA,EAAAF,EAAAE,IAAJb,EAAIa,GAAArB,UAAAqB,GAGR,OAFAb,EAAK0Z,QAAQ,WACbza,KAAKc,KAAKR,MAAMN,KAAMe,GACff,IACX,GACA,CAAAjE,IAAA,OAAAmI,MAiBA,SAAK+I,GACD,GAAIgM,GAAgBjX,eAAeiL,GAC/B,MAAM,IAAIxJ,MAAM,IAAMwJ,EAAG1Q,WAAa,8BACzC,IAAAme,IAAAA,EAAAna,UAAA7B,OAHOqC,MAAIC,MAAA0Z,EAAAA,EAAAA,OAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAJ5Z,EAAI4Z,EAAApa,GAAAA,UAAAoa,GAKZ,GADA5Z,EAAK0Z,QAAQxN,GACTjN,KAAKma,MAAMS,UAAY5a,KAAKia,MAAMY,YAAc7a,KAAKia,eAErD,OADAja,KAAK8a,YAAY/Z,GACVf,KAEX,IAAM2E,EAAS,CACXzI,KAAM6b,GAAWI,MACjBhc,KAAM4E,EAEV4D,QAAiB,IAGjB,GAFAA,EAAOkP,QAAQC,UAAmC,IAAxB9T,KAAKia,MAAMnG,SAEjC,mBAAsB/S,EAAKA,EAAKrC,OAAS,GAAI,CAC7C,IAAM8S,EAAKxR,KAAK+Z,MACVgB,EAAMha,EAAKia,MACjBhb,KAAKib,qBAAqBzJ,EAAIuJ,GAC9BpW,EAAO6M,GAAKA,CAChB,CACA,IAAM0J,EAAsBlb,KAAKwZ,GAAG2B,QAChCnb,KAAKwZ,GAAG2B,OAAO5N,WACfvN,KAAKwZ,GAAG2B,OAAO5N,UAAUzJ,SAY7B,OAXsB9D,KAAKia,MAAc,YAAMiB,IAAwBlb,KAAKyZ,aAGnEzZ,KAAKyZ,WACVzZ,KAAKob,wBAAwBzW,GAC7B3E,KAAK2E,OAAOA,IAGZ3E,KAAK4Z,WAAW1Z,KAAKyE,IAEzB3E,KAAKia,MAAQ,GACNja,IACX,GACA,CAAAjE,IAAA,uBAAAmI,MAGA,SAAqBsN,EAAIuJ,GAAK,IACtB9Q,EADsBpG,EAAA7D,KAEpB0K,EAAwC,QAA7BT,EAAKjK,KAAKia,MAAMvP,eAA4B,IAAPT,EAAgBA,EAAKjK,KAAKma,MAAMkB,WACtF,QAAgBrW,IAAZ0F,EAAJ,CAKA,IAAM4Q,EAAQtb,KAAKwZ,GAAG/W,cAAa,kBACxBoB,EAAKmW,KAAKxI,GACjB,IAAK,IAAIxT,EAAI,EAAGA,EAAI6F,EAAK+V,WAAWlb,OAAQV,IACpC6F,EAAK+V,WAAW5b,GAAGwT,KAAOA,GAC1B3N,EAAK+V,WAAW/Y,OAAO7C,EAAG,GAGlC+c,EAAIve,KAAKqH,EAAM,IAAIJ,MAAM,2BAC5B,GAAEiH,GACH1K,KAAKga,KAAKxI,GAAM,WAEZ3N,EAAK2V,GAAG7W,eAAe2Y,GAAO,IAAA,IAAAC,EAAAhb,UAAA7B,OAFdqC,EAAIC,IAAAA,MAAAua,GAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAJza,EAAIya,GAAAjb,UAAAib,GAGpBT,EAAIza,MAAMuD,EAAI,CAAG,MAAIiD,OAAK/F,IAd9B,MAFIf,KAAKga,KAAKxI,GAAMuJ,CAkBxB,GACA,CAAAhf,IAAA,cAAAmI,MAgBA,SAAY+I,GAAa,IAAA,IAAA9E,EAAAnI,KAAAyb,EAAAlb,UAAA7B,OAANqC,MAAIC,MAAAya,EAAAA,EAAAA,OAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAJ3a,EAAI2a,EAAAnb,GAAAA,UAAAmb,GAEnB,IAAMC,OAAiC3W,IAAvBhF,KAAKia,MAAMvP,cAAmD1F,IAA1BhF,KAAKma,MAAMkB,WAC/D,OAAO,IAAI1P,SAAQ,SAACC,EAASgQ,GACzB7a,EAAKb,MAAK,SAAC2b,EAAMC,GACb,OAAIH,EACOE,EAAOD,EAAOC,GAAQjQ,EAAQkQ,GAG9BlQ,EAAQiQ,EAEvB,IACA1T,EAAKrH,KAAIR,MAAT6H,EAAU8E,CAAAA,GAAEnG,OAAK/F,GACrB,GACJ,GACA,CAAAhF,IAAA,cAAAmI,MAKA,SAAYnD,GAAM,IACVga,EADUtS,EAAAzI,KAEuB,mBAA1Be,EAAKA,EAAKrC,OAAS,KAC1Bqc,EAAMha,EAAKia,OAEf,IAAMrW,EAAS,CACX6M,GAAIxR,KAAK8Z,YACTiC,SAAU,EACVC,SAAS,EACTjb,KAAAA,EACAkZ,MAAO7Q,EAAc,CAAEyR,WAAW,GAAQ7a,KAAKia,QAEnDlZ,EAAKb,MAAK,SAACuG,GACP,GAAI9B,IAAW8D,EAAKoR,OAAO,GAA3B,CAKA,GADyB,OAARpT,EAET9B,EAAOoX,SAAWtT,EAAK0R,MAAMS,UAC7BnS,EAAKoR,OAAO3H,QACR6I,GACAA,EAAItU,SAMZ,GADAgC,EAAKoR,OAAO3H,QACR6I,EAAK,CAAA,IAAAkB,IAAAA,EAAA1b,UAAA7B,OAhBEwd,MAAYlb,MAAAib,EAAAA,EAAAA,OAAAE,EAAA,EAAAA,EAAAF,EAAAE,IAAZD,EAAYC,EAAA5b,GAAAA,UAAA4b,GAiBnBpB,EAAGza,WAAC,EAAA,CAAA,MAAIwG,OAAKoV,GACjB,CAGJ,OADAvX,EAAOqX,SAAU,EACVvT,EAAK2T,aAjBZ,CAkBJ,IACApc,KAAK6Z,OAAO3Z,KAAKyE,GACjB3E,KAAKoc,aACT,GACA,CAAArgB,IAAA,cAAAmI,MAMA,WAA2B,IAAfmY,EAAK9b,UAAA7B,OAAA,QAAAsG,IAAAzE,UAAA,IAAAA,UAAA,GACb,GAAKP,KAAKyZ,WAAoC,IAAvBzZ,KAAK6Z,OAAOnb,OAAnC,CAGA,IAAMiG,EAAS3E,KAAK6Z,OAAO,GACvBlV,EAAOqX,UAAYK,IAGvB1X,EAAOqX,SAAU,EACjBrX,EAAOoX,WACP/b,KAAKia,MAAQtV,EAAOsV,MACpBja,KAAKc,KAAKR,MAAMN,KAAM2E,EAAO5D,MAR7B,CASJ,GACA,CAAAhF,IAAA,SAAAmI,MAMA,SAAOS,GACHA,EAAOiU,IAAM5Y,KAAK4Y,IAClB5Y,KAAKwZ,GAAG8C,QAAQ3X,EACpB,GACA,CAAA5I,IAAA,SAAAmI,MAKA,WAAS,IAAAyE,EAAA3I,KACmB,mBAAbA,KAAKka,KACZla,KAAKka,MAAK,SAAC/d,GACPwM,EAAK4T,mBAAmBpgB,EAC5B,IAGA6D,KAAKuc,mBAAmBvc,KAAKka,KAErC,GACA,CAAAne,IAAA,qBAAAmI,MAMA,SAAmB/H,GACf6D,KAAK2E,OAAO,CACRzI,KAAM6b,GAAWE,QACjB9b,KAAM6D,KAAKwc,KACLpT,EAAc,CAAEqT,IAAKzc,KAAKwc,KAAMlI,OAAQtU,KAAK0c,aAAevgB,GAC5DA,GAEd,GACA,CAAAJ,IAAA,UAAAmI,MAMA,SAAQuC,GACCzG,KAAKyZ,WACNzZ,KAAKkB,aAAa,gBAAiBuF,EAE3C,GACA,CAAA1K,IAAA,UAAAmI,MAOA,SAAQhB,EAAQC,GACZnD,KAAKyZ,WAAY,SACVzZ,KAAKwR,GACZxR,KAAKkB,aAAa,aAAcgC,EAAQC,EAC5C,GACA,CAAApH,IAAA,WAAAmI,MAMA,SAASS,GAEL,GADsBA,EAAOiU,MAAQ5Y,KAAK4Y,IAG1C,OAAQjU,EAAOzI,MACX,KAAK6b,GAAWE,QACRtT,EAAOxI,MAAQwI,EAAOxI,KAAK8M,IAC3BjJ,KAAK2c,UAAUhY,EAAOxI,KAAK8M,IAAKtE,EAAOxI,KAAKsgB,KAG5Czc,KAAKkB,aAAa,gBAAiB,IAAIuC,MAAM,8LAEjD,MACJ,KAAKsU,GAAWI,MAChB,KAAKJ,GAAW6E,aACZ5c,KAAK6c,QAAQlY,GACb,MACJ,KAAKoT,GAAWK,IAChB,KAAKL,GAAW+E,WACZ9c,KAAK+c,MAAMpY,GACX,MACJ,KAAKoT,GAAWG,WACZlY,KAAKgd,eACL,MACJ,KAAKjF,GAAWM,cACZrY,KAAK8Y,UACL,IAAMrS,EAAM,IAAIhD,MAAMkB,EAAOxI,KAAK8gB,SAElCxW,EAAItK,KAAOwI,EAAOxI,KAAKA,KACvB6D,KAAKkB,aAAa,gBAAiBuF,GAG/C,GACA,CAAA1K,IAAA,UAAAmI,MAMA,SAAQS,GACJ,IAAM5D,EAAO4D,EAAOxI,MAAQ,GACxB,MAAQwI,EAAO6M,IACfzQ,EAAKb,KAAKF,KAAK+a,IAAIpW,EAAO6M,KAE1BxR,KAAKyZ,UACLzZ,KAAKkd,UAAUnc,GAGff,KAAK2Z,cAAczZ,KAAKxE,OAAOwd,OAAOnY,GAE9C,GAAC,CAAAhF,IAAA,YAAAmI,MACD,SAAUnD,GACN,GAAIf,KAAKmd,eAAiBnd,KAAKmd,cAAcze,OAAQ,CACjD,IACgC0e,EADaC,EAAAC,EAA3Btd,KAAKmd,cAAclc,SACL,IAAhC,IAAAoc,EAAAE,MAAAH,EAAAC,EAAAG,KAAAnP,MAAkC,CAAf+O,EAAAlZ,MACN5D,MAAMN,KAAMe,EACzB,CAAC,CAAA,MAAA0F,GAAA4W,EAAAxW,EAAAJ,EAAA,CAAA,QAAA4W,EAAAI,GAAA,CACL,CACAtZ,EAAAC,EAAAkM,EAAAhU,WAAWgE,OAAAA,MAAAA,MAAMN,KAAMe,GACnBf,KAAKwc,MAAQzb,EAAKrC,QAA2C,iBAA1BqC,EAAKA,EAAKrC,OAAS,KACtDsB,KAAK0c,YAAc3b,EAAKA,EAAKrC,OAAS,GAE9C,GACA,CAAA3C,IAAA,MAAAmI,MAKA,SAAIsN,GACA,IAAMlQ,EAAOtB,KACT0d,GAAO,EACX,OAAO,WAEH,IAAIA,EAAJ,CAEAA,GAAO,EAAK,IAAA,IAAAC,EAAApd,UAAA7B,OAJIqC,EAAIC,IAAAA,MAAA2c,GAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAJ7c,EAAI6c,GAAArd,UAAAqd,GAKpBtc,EAAKqD,OAAO,CACRzI,KAAM6b,GAAWK,IACjB5G,GAAIA,EACJrV,KAAM4E,GALN,EAQZ,GACA,CAAAhF,IAAA,QAAAmI,MAMA,SAAMS,GACF,IAAMoW,EAAM/a,KAAKga,KAAKrV,EAAO6M,IACzB,mBAAsBuJ,IACtBA,EAAIza,MAAMN,KAAM2E,EAAOxI,aAChB6D,KAAKga,KAAKrV,EAAO6M,IAIhC,GACA,CAAAzV,IAAA,YAAAmI,MAKA,SAAUsN,EAAIiL,GACVzc,KAAKwR,GAAKA,EACVxR,KAAK0Z,UAAY+C,GAAOzc,KAAKwc,OAASC,EACtCzc,KAAKwc,KAAOC,EACZzc,KAAKyZ,WAAY,EACjBzZ,KAAK6d,eACL7d,KAAKkB,aAAa,WAClBlB,KAAKoc,aAAY,EACrB,GACA,CAAArgB,IAAA,eAAAmI,MAKA,WAAe,IAAAqF,EAAAvJ,KACXA,KAAK2Z,cAAc7d,SAAQ,SAACiF,GAAI,OAAKwI,EAAK2T,UAAUnc,MACpDf,KAAK2Z,cAAgB,GACrB3Z,KAAK4Z,WAAW9d,SAAQ,SAAC6I,GACrB4E,EAAK6R,wBAAwBzW,GAC7B4E,EAAK5E,OAAOA,EAChB,IACA3E,KAAK4Z,WAAa,EACtB,GACA,CAAA7d,IAAA,eAAAmI,MAKA,WACIlE,KAAK8Y,UACL9Y,KAAK8M,QAAQ,uBACjB,GACA,CAAA/Q,IAAA,UAAAmI,MAOA,WACQlE,KAAKqa,OAELra,KAAKqa,KAAKve,SAAQ,SAACgiB,GAAU,OAAKA,OAClC9d,KAAKqa,UAAOrV,GAEhBhF,KAAKwZ,GAAa,SAAExZ,KACxB,GACA,CAAAjE,IAAA,aAAAmI,MAgBA,WAUI,OATIlE,KAAKyZ,WACLzZ,KAAK2E,OAAO,CAAEzI,KAAM6b,GAAWG,aAGnClY,KAAK8Y,UACD9Y,KAAKyZ,WAELzZ,KAAK8M,QAAQ,wBAEV9M,IACX,GACA,CAAAjE,IAAA,QAAAmI,MAKA,WACI,OAAOlE,KAAKqZ,YAChB,GACA,CAAAtd,IAAA,WAAAmI,MASA,SAAS4P,GAEL,OADA9T,KAAKia,MAAMnG,SAAWA,EACf9T,IACX,GACA,CAAAjE,IAAA,WAAA+L,IASA,WAEI,OADA9H,KAAKia,MAAc,UAAG,EACfja,IACX,GACA,CAAAjE,IAAA,UAAAmI,MAaA,SAAQwG,GAEJ,OADA1K,KAAKia,MAAMvP,QAAUA,EACd1K,IACX,GACA,CAAAjE,IAAA,QAAAmI,MAWA,SAAM6Z,GAGF,OAFA/d,KAAKmd,cAAgBnd,KAAKmd,eAAiB,GAC3Cnd,KAAKmd,cAAcjd,KAAK6d,GACjB/d,IACX,GACA,CAAAjE,IAAA,aAAAmI,MAWA,SAAW6Z,GAGP,OAFA/d,KAAKmd,cAAgBnd,KAAKmd,eAAiB,GAC3Cnd,KAAKmd,cAAc1C,QAAQsD,GACpB/d,IACX,GACA,CAAAjE,IAAA,SAAAmI,MAkBA,SAAO6Z,GACH,IAAK/d,KAAKmd,cACN,OAAOnd,KAEX,GAAI+d,GAEA,IADA,IAAM5c,EAAYnB,KAAKmd,cACdnf,EAAI,EAAGA,EAAImD,EAAUzC,OAAQV,IAClC,GAAI+f,IAAa5c,EAAUnD,GAEvB,OADAmD,EAAUN,OAAO7C,EAAG,GACbgC,UAKfA,KAAKmd,cAAgB,GAEzB,OAAOnd,IACX,GACA,CAAAjE,IAAA,eAAAmI,MAIA,WACI,OAAOlE,KAAKmd,eAAiB,EACjC,GACA,CAAAphB,IAAA,gBAAAmI,MAaA,SAAc6Z,GAGV,OAFA/d,KAAKge,sBAAwBhe,KAAKge,uBAAyB,GAC3Dhe,KAAKge,sBAAsB9d,KAAK6d,GACzB/d,IACX,GACA,CAAAjE,IAAA,qBAAAmI,MAaA,SAAmB6Z,GAGf,OAFA/d,KAAKge,sBAAwBhe,KAAKge,uBAAyB,GAC3Dhe,KAAKge,sBAAsBvD,QAAQsD,GAC5B/d,IACX,GACA,CAAAjE,IAAA,iBAAAmI,MAkBA,SAAe6Z,GACX,IAAK/d,KAAKge,sBACN,OAAOhe,KAEX,GAAI+d,GAEA,IADA,IAAM5c,EAAYnB,KAAKge,sBACdhgB,EAAI,EAAGA,EAAImD,EAAUzC,OAAQV,IAClC,GAAI+f,IAAa5c,EAAUnD,GAEvB,OADAmD,EAAUN,OAAO7C,EAAG,GACbgC,UAKfA,KAAKge,sBAAwB,GAEjC,OAAOhe,IACX,GACA,CAAAjE,IAAA,uBAAAmI,MAIA,WACI,OAAOlE,KAAKge,uBAAyB,EACzC,GACA,CAAAjiB,IAAA,0BAAAmI,MAOA,SAAwBS,GACpB,GAAI3E,KAAKge,uBAAyBhe,KAAKge,sBAAsBtf,OAAQ,CACjE,IACgCuf,EADqBC,EAAAZ,EAAnCtd,KAAKge,sBAAsB/c,SACb,IAAhC,IAAAid,EAAAX,MAAAU,EAAAC,EAAAV,KAAAnP,MAAkC,CAAf4P,EAAA/Z,MACN5D,MAAMN,KAAM2E,EAAOxI,KAChC,CAAC,CAAA,MAAAsK,GAAAyX,EAAArX,EAAAJ,EAAA,CAAA,QAAAyX,EAAAT,GAAA,CACL,CACJ,KAACnN,CAAA,EA5xBuB5Q,GC7BrB,SAASye,GAAQ5b,GACpBA,EAAOA,GAAQ,GACfvC,KAAKoe,GAAK7b,EAAK8b,KAAO,IACtBre,KAAKse,IAAM/b,EAAK+b,KAAO,IACvBte,KAAKue,OAAShc,EAAKgc,QAAU,EAC7Bve,KAAKwe,OAASjc,EAAKic,OAAS,GAAKjc,EAAKic,QAAU,EAAIjc,EAAKic,OAAS,EAClExe,KAAKye,SAAW,CACpB,CAOAN,GAAQ7hB,UAAUoiB,SAAW,WACzB,IAAIN,EAAKpe,KAAKoe,GAAKjY,KAAK6O,IAAIhV,KAAKue,OAAQve,KAAKye,YAC9C,GAAIze,KAAKwe,OAAQ,CACb,IAAIG,EAAOxY,KAAKyY,SACZC,EAAY1Y,KAAKC,MAAMuY,EAAO3e,KAAKwe,OAASJ,GAChDA,EAAoC,IAAN,EAAxBjY,KAAKC,MAAa,GAAPuY,IAAuBP,EAAKS,EAAYT,EAAKS,CAClE,CACA,OAAgC,EAAzB1Y,KAAKkY,IAAID,EAAIpe,KAAKse,IAC7B,EAMAH,GAAQ7hB,UAAUwiB,MAAQ,WACtB9e,KAAKye,SAAW,CACpB,EAMAN,GAAQ7hB,UAAUyiB,OAAS,SAAUV,GACjCre,KAAKoe,GAAKC,CACd,EAMAF,GAAQ7hB,UAAU0iB,OAAS,SAAUV,GACjCte,KAAKse,IAAMA,CACf,EAMAH,GAAQ7hB,UAAU2iB,UAAY,SAAUT,GACpCxe,KAAKwe,OAASA,CAClB,EC3DaU,IAAAA,YAAOvb,GAAAZ,EAAAmc,EAAAvb,GAAA,IAAAX,EAAAC,EAAAic,GAChB,SAAAA,EAAY5V,EAAK/G,GAAM,IAAAc,EACf4G,EADe3G,OAAA4b,IAEnB7b,EAAAL,EAAAxG,KAAAwD,OACKmf,KAAO,GACZ9b,EAAKgX,KAAO,GACR/Q,GAAO,WAAQkH,EAAYlH,KAC3B/G,EAAO+G,EACPA,OAAMtE,IAEVzC,EAAOA,GAAQ,IACV4C,KAAO5C,EAAK4C,MAAQ,aACzB9B,EAAKd,KAAOA,EACZD,EAAqByB,EAAAV,GAAOd,GAC5Bc,EAAK+b,cAAmC,IAAtB7c,EAAK6c,cACvB/b,EAAKgc,qBAAqB9c,EAAK8c,sBAAwBC,KACvDjc,EAAKkc,kBAAkBhd,EAAKgd,mBAAqB,KACjDlc,EAAKmc,qBAAqBjd,EAAKid,sBAAwB,KACvDnc,EAAKoc,oBAAwD,QAAnCxV,EAAK1H,EAAKkd,2BAAwC,IAAPxV,EAAgBA,EAAK,IAC1F5G,EAAKqc,QAAU,IAAIvB,GAAQ,CACvBE,IAAKhb,EAAKkc,oBACVjB,IAAKjb,EAAKmc,uBACVhB,OAAQnb,EAAKoc,wBAEjBpc,EAAKqH,QAAQ,MAAQnI,EAAKmI,QAAU,IAAQnI,EAAKmI,SACjDrH,EAAKmX,YAAc,SACnBnX,EAAKiG,IAAMA,EACX,IAAMqW,EAAUpd,EAAKqd,QAAUA,GAKf,OAJhBvc,EAAKwc,QAAU,IAAIF,EAAQlH,QAC3BpV,EAAKkU,QAAU,IAAIoI,EAAQzJ,QAC3B7S,EAAK+W,cAAoC,IAArB7X,EAAKud,YACrBzc,EAAK+W,cACL/W,EAAK+G,OAAO/G,CACpB,CA6TC,OA7TAE,EAAA2b,EAAA,CAAA,CAAAnjB,IAAA,eAAAmI,MACD,SAAa6b,GACT,OAAKxf,UAAU7B,QAEfsB,KAAKggB,gBAAkBD,EAChB/f,MAFIA,KAAKggB,aAGpB,GAAC,CAAAjkB,IAAA,uBAAAmI,MACD,SAAqB6b,GACjB,YAAU/a,IAAN+a,EACO/f,KAAKigB,uBAChBjgB,KAAKigB,sBAAwBF,EACtB/f,KACX,GAAC,CAAAjE,IAAA,oBAAAmI,MACD,SAAkB6b,GACd,IAAI9V,EACJ,YAAUjF,IAAN+a,EACO/f,KAAKkgB,oBAChBlgB,KAAKkgB,mBAAqBH,EACF,QAAvB9V,EAAKjK,KAAK0f,eAA4B,IAAPzV,GAAyBA,EAAG8U,OAAOgB,GAC5D/f,KACX,GAAC,CAAAjE,IAAA,sBAAAmI,MACD,SAAoB6b,GAChB,IAAI9V,EACJ,YAAUjF,IAAN+a,EACO/f,KAAKmgB,sBAChBngB,KAAKmgB,qBAAuBJ,EACJ,QAAvB9V,EAAKjK,KAAK0f,eAA4B,IAAPzV,GAAyBA,EAAGgV,UAAUc,GAC/D/f,KACX,GAAC,CAAAjE,IAAA,uBAAAmI,MACD,SAAqB6b,GACjB,IAAI9V,EACJ,YAAUjF,IAAN+a,EACO/f,KAAKogB,uBAChBpgB,KAAKogB,sBAAwBL,EACL,QAAvB9V,EAAKjK,KAAK0f,eAA4B,IAAPzV,GAAyBA,EAAG+U,OAAOe,GAC5D/f,KACX,GAAC,CAAAjE,IAAA,UAAAmI,MACD,SAAQ6b,GACJ,OAAKxf,UAAU7B,QAEfsB,KAAKqgB,SAAWN,EACT/f,MAFIA,KAAKqgB,QAGpB,GACA,CAAAtkB,IAAA,uBAAAmI,MAMA,YAESlE,KAAKsgB,eACNtgB,KAAKggB,eACqB,IAA1BhgB,KAAK0f,QAAQjB,UAEbze,KAAKugB,WAEb,GACA,CAAAxkB,IAAA,OAAAmI,MAOA,SAAKnE,GAAI,IAAA8D,EAAA7D,KACL,IAAKA,KAAKwa,YAAYlV,QAAQ,QAC1B,OAAOtF,KACXA,KAAKmb,OAAS,IAAIqF,GAAOxgB,KAAKsJ,IAAKtJ,KAAKuC,MACxC,IAAM0B,EAASjE,KAAKmb,OACd7Z,EAAOtB,KACbA,KAAKwa,YAAc,UACnBxa,KAAKygB,eAAgB,EAErB,IAAMC,EAAiB9gB,GAAGqE,EAAQ,QAAQ,WACtC3C,EAAKoL,SACL3M,GAAMA,GACV,IACM6J,EAAU,SAACnD,GACb5C,EAAKuH,UACLvH,EAAK2W,YAAc,SACnB3W,EAAK3C,aAAa,QAASuF,GACvB1G,EACAA,EAAG0G,GAIH5C,EAAK8c,wBAIPC,EAAWhhB,GAAGqE,EAAQ,QAAS2F,GACrC,IAAI,IAAU5J,KAAKqgB,SAAU,CACzB,IAAM3V,EAAU1K,KAAKqgB,SAEf/E,EAAQtb,KAAKyC,cAAa,WAC5Bie,IACA9W,EAAQ,IAAInG,MAAM,YAClBQ,EAAOyE,OACV,GAAEgC,GACC1K,KAAKuC,KAAKoK,WACV2O,EAAMzO,QAEV7M,KAAKqa,KAAKna,MAAK,WACX2D,EAAKlB,eAAe2Y,EACxB,GACJ,CAGA,OAFAtb,KAAKqa,KAAKna,KAAKwgB,GACf1gB,KAAKqa,KAAKna,KAAK0gB,GACR5gB,IACX,GACA,CAAAjE,IAAA,UAAAmI,MAMA,SAAQnE,GACJ,OAAOC,KAAKoK,KAAKrK,EACrB,GACA,CAAAhE,IAAA,SAAAmI,MAKA,WAEIlE,KAAKoL,UAELpL,KAAKwa,YAAc,OACnBxa,KAAKkB,aAAa,QAElB,IAAM+C,EAASjE,KAAKmb,OACpBnb,KAAKqa,KAAKna,KAAKN,GAAGqE,EAAQ,OAAQjE,KAAK6gB,OAAOne,KAAK1C,OAAQJ,GAAGqE,EAAQ,OAAQjE,KAAK8gB,OAAOpe,KAAK1C,OAAQJ,GAAGqE,EAAQ,QAASjE,KAAKkN,QAAQxK,KAAK1C,OAAQJ,GAAGqE,EAAQ,QAASjE,KAAK8M,QAAQpK,KAAK1C,OAAQJ,GAAGI,KAAKuX,QAAS,UAAWvX,KAAK+gB,UAAUre,KAAK1C,OACvP,GACA,CAAAjE,IAAA,SAAAmI,MAKA,WACIlE,KAAKkB,aAAa,OACtB,GACA,CAAAnF,IAAA,SAAAmI,MAKA,SAAO/H,GACH,IACI6D,KAAKuX,QAAQmB,IAAIvc,EACpB,CACD,MAAO0K,GACH7G,KAAK8M,QAAQ,cAAejG,EAChC,CACJ,GACA,CAAA9K,IAAA,YAAAmI,MAKA,SAAUS,GAAQ,IAAAwD,EAAAnI,KAEd0L,IAAS,WACLvD,EAAKjH,aAAa,SAAUyD,EAChC,GAAG3E,KAAKyC,aACZ,GACA,CAAA1G,IAAA,UAAAmI,MAKA,SAAQuC,GACJzG,KAAKkB,aAAa,QAASuF,EAC/B,GACA,CAAA1K,IAAA,SAAAmI,MAMA,SAAO0U,EAAKrW,GACR,IAAI0B,EAASjE,KAAKmf,KAAKvG,GAQvB,OAPK3U,EAIIjE,KAAKoa,eAAiBnW,EAAO+c,QAClC/c,EAAOkV,WAJPlV,EAAS,IAAIqM,GAAOtQ,KAAM4Y,EAAKrW,GAC/BvC,KAAKmf,KAAKvG,GAAO3U,GAKdA,CACX,GACA,CAAAlI,IAAA,WAAAmI,MAMA,SAASD,GAEL,IADA,IACAgd,EAAA,EAAAC,EADaxlB,OAAOG,KAAKmE,KAAKmf,MACR8B,EAAAC,EAAAxiB,OAAAuiB,IAAE,CAAnB,IAAMrI,EAAGsI,EAAAD,GAEV,GADejhB,KAAKmf,KAAKvG,GACdoI,OACP,MAER,CACAhhB,KAAKmhB,QACT,GACA,CAAAplB,IAAA,UAAAmI,MAMA,SAAQS,GAEJ,IADA,IAAM0D,EAAiBrI,KAAK6f,QAAQha,OAAOlB,GAClC3G,EAAI,EAAGA,EAAIqK,EAAe3J,OAAQV,IACvCgC,KAAKmb,OAAOzW,MAAM2D,EAAerK,GAAI2G,EAAOkP,QAEpD,GACA,CAAA9X,IAAA,UAAAmI,MAKA,WACIlE,KAAKqa,KAAKve,SAAQ,SAACgiB,GAAU,OAAKA,OAClC9d,KAAKqa,KAAK3b,OAAS,EACnBsB,KAAKuX,QAAQuB,SACjB,GACA,CAAA/c,IAAA,SAAAmI,MAKA,WACIlE,KAAKygB,eAAgB,EACrBzgB,KAAKsgB,eAAgB,EACrBtgB,KAAK8M,QAAQ,gBACT9M,KAAKmb,QACLnb,KAAKmb,OAAOzS,OACpB,GACA,CAAA3M,IAAA,aAAAmI,MAKA,WACI,OAAOlE,KAAKmhB,QAChB,GACA,CAAAplB,IAAA,UAAAmI,MAKA,SAAQhB,EAAQC,GACZnD,KAAKoL,UACLpL,KAAK0f,QAAQZ,QACb9e,KAAKwa,YAAc,SACnBxa,KAAKkB,aAAa,QAASgC,EAAQC,GAC/BnD,KAAKggB,gBAAkBhgB,KAAKygB,eAC5BzgB,KAAKugB,WAEb,GACA,CAAAxkB,IAAA,YAAAmI,MAKA,WAAY,IAAAuE,EAAAzI,KACR,GAAIA,KAAKsgB,eAAiBtgB,KAAKygB,cAC3B,OAAOzgB,KACX,IAAMsB,EAAOtB,KACb,GAAIA,KAAK0f,QAAQjB,UAAYze,KAAKigB,sBAC9BjgB,KAAK0f,QAAQZ,QACb9e,KAAKkB,aAAa,oBAClBlB,KAAKsgB,eAAgB,MAEpB,CACD,IAAMc,EAAQphB,KAAK0f,QAAQhB,WAC3B1e,KAAKsgB,eAAgB,EACrB,IAAMhF,EAAQtb,KAAKyC,cAAa,WACxBnB,EAAKmf,gBAEThY,EAAKvH,aAAa,oBAAqBI,EAAKoe,QAAQjB,UAEhDnd,EAAKmf,eAETnf,EAAK8I,MAAK,SAAC3D,GACHA,GACAnF,EAAKgf,eAAgB,EACrBhf,EAAKif,YACL9X,EAAKvH,aAAa,kBAAmBuF,IAGrCnF,EAAK+f,aAEb,IACH,GAAED,GACCphB,KAAKuC,KAAKoK,WACV2O,EAAMzO,QAEV7M,KAAKqa,KAAKna,MAAK,WACXuI,EAAK9F,eAAe2Y,EACxB,GACJ,CACJ,GACA,CAAAvf,IAAA,cAAAmI,MAKA,WACI,IAAMod,EAAUthB,KAAK0f,QAAQjB,SAC7Bze,KAAKsgB,eAAgB,EACrBtgB,KAAK0f,QAAQZ,QACb9e,KAAKkB,aAAa,YAAaogB,EACnC,KAACpC,CAAA,EA9VwBxf,GCAvB6hB,GAAQ,CAAA,EACd,SAASxjB,GAAOuL,EAAK/G,GACE,WAAfiO,EAAOlH,KACP/G,EAAO+G,EACPA,OAAMtE,GAGV,IASIwU,EATEgI,ECHH,SAAalY,GAAqB,IAAhBnE,EAAI5E,UAAA7B,OAAA,QAAAsG,IAAAzE,UAAA,GAAAA,UAAA,GAAG,GAAIkhB,EAAGlhB,UAAA7B,OAAA6B,EAAAA,kBAAAyE,EAC/BpI,EAAM0M,EAEVmY,EAAMA,GAA4B,oBAAbna,UAA4BA,SAC7C,MAAQgC,IACRA,EAAMmY,EAAIja,SAAW,KAAOia,EAAI7R,MAEjB,iBAARtG,IACH,MAAQA,EAAI/K,OAAO,KAEf+K,EADA,MAAQA,EAAI/K,OAAO,GACbkjB,EAAIja,SAAW8B,EAGfmY,EAAI7R,KAAOtG,GAGpB,sBAAsBoY,KAAKpY,KAExBA,OADA,IAAuBmY,EACjBA,EAAIja,SAAW,KAAO8B,EAGtB,WAAaA,GAI3B1M,EAAMyS,GAAM/F,IAGX1M,EAAI2I,OACD,cAAcmc,KAAK9kB,EAAI4K,UACvB5K,EAAI2I,KAAO,KAEN,eAAemc,KAAK9kB,EAAI4K,YAC7B5K,EAAI2I,KAAO,QAGnB3I,EAAIuI,KAAOvI,EAAIuI,MAAQ,IACvB,IACMyK,GADkC,IAA3BhT,EAAIgT,KAAKtK,QAAQ,KACV,IAAM1I,EAAIgT,KAAO,IAAMhT,EAAIgT,KAS/C,OAPAhT,EAAI4U,GAAK5U,EAAI4K,SAAW,MAAQoI,EAAO,IAAMhT,EAAI2I,KAAOJ,EAExDvI,EAAI+kB,KACA/kB,EAAI4K,SACA,MACAoI,GACC6R,GAAOA,EAAIlc,OAAS3I,EAAI2I,KAAO,GAAK,IAAM3I,EAAI2I,MAChD3I,CACX,CD7CmBglB,CAAItY,GADnB/G,EAAOA,GAAQ,IACc4C,MAAQ,cAC/BwK,EAAS6R,EAAO7R,OAChB6B,EAAKgQ,EAAOhQ,GACZrM,EAAOqc,EAAOrc,KACd0c,EAAgBN,GAAM/P,IAAOrM,KAAQoc,GAAM/P,GAAU,KAkB3D,OAjBsBjP,EAAKuf,UACvBvf,EAAK,0BACL,IAAUA,EAAKwf,WACfF,EAGArI,EAAK,IAAI0F,GAAQvP,EAAQpN,IAGpBgf,GAAM/P,KACP+P,GAAM/P,GAAM,IAAI0N,GAAQvP,EAAQpN,IAEpCiX,EAAK+H,GAAM/P,IAEXgQ,EAAOxd,QAAUzB,EAAKyB,QACtBzB,EAAKyB,MAAQwd,EAAOtR,UAEjBsJ,EAAGvV,OAAOud,EAAOrc,KAAM5C,EAClC,QAGA6G,EAAcrL,GAAQ,CAClBmhB,QAAAA,GACA5O,OAAAA,GACAkJ,GAAIzb,GACJob,QAASpb"} \ No newline at end of file diff --git a/package.json b/package.json index 598f1810..41198b2f 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "socket.io-client", - "version": "4.7.0", + "version": "4.7.1", "description": "Realtime application framework client", "keywords": [ "realtime",