diff --git a/CHANGELOG.md b/CHANGELOG.md index c584278e..ef6d3d4d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,37 @@ +# [6.2.0](https://github.com/socketio/engine.io-client/compare/6.1.1...6.2.0) (2022-04-17) + + +### Features + +* add details to the "close" event ([b9252e2](https://github.com/socketio/engine.io-client/commit/b9252e207413a850db7e4f0f0ef7dd2ef0ed26da)) + +The close event will now include additional details to help debugging if anything has gone wrong. + +Example when a payload is over the maxHttpBufferSize value in HTTP long-polling mode: + +```js +socket.on("close", (reason, details) => { + console.log(reason); // "transport error" + + // in that case, details is an error object + console.log(details.message); "xhr post error" + console.log(details.description); // 413 (the HTTP status of the response) + + // details.context refers to the XMLHttpRequest object + console.log(details.context.status); // 413 + console.log(details.context.responseText); // "" +}); +``` + +Note: the error object was already included before this commit and is kept for backward compatibility. + +* slice write buffer according to the maxPayload value ([46fdc2f](https://github.com/socketio/engine.io-client/commit/46fdc2f0ed352b454614247406689edc9d908927)) + +The server will now include a "maxPayload" field in the handshake details, allowing the clients to decide how many +packets they have to send to stay under the maxHttpBufferSize value. + + + ## [6.0.3](https://github.com/socketio/engine.io-client/compare/6.0.2...6.0.3) (2021-11-14) Some bug fixes were backported from master, to be included by the latest `socket.io-client` version. diff --git a/dist/engine.io.esm.min.js b/dist/engine.io.esm.min.js index a463b2ea..1f1ad16a 100644 --- a/dist/engine.io.esm.min.js +++ b/dist/engine.io.esm.min.js @@ -1,7 +1,7 @@ /*! - * Engine.IO v6.1.1 - * (c) 2014-2021 Guillermo Rauch + * Engine.IO v6.2.0 + * (c) 2014-2022 Guillermo Rauch * Released under the MIT License. */ -var t={exports:{}};try{t.exports="undefined"!=typeof XMLHttpRequest&&"withCredentials"in new XMLHttpRequest}catch(e){t.exports=!1}var e=t.exports,s="undefined"!=typeof self?self:"undefined"!=typeof window?window:Function("return this")();function r(t){const r=t.xdomain;try{if("undefined"!=typeof XMLHttpRequest&&(!r||e))return new XMLHttpRequest}catch(t){}if(!r)try{return new(s[["Active"].concat("Object").join("X")])("Microsoft.XMLHTTP")}catch(t){}}function o(t,...e){return e.reduce(((e,s)=>(t.hasOwnProperty(s)&&(e[s]=t[s]),e)),{})}const i=setTimeout,n=clearTimeout;function a(t,e){e.useNativeTimers?(t.setTimeoutFn=i.bind(s),t.clearTimeoutFn=n.bind(s)):(t.setTimeoutFn=setTimeout.bind(s),t.clearTimeoutFn=clearTimeout.bind(s))}var h=p;function p(t){if(t)return function(t){for(var e in p.prototype)t[e]=p.prototype[e];return t}(t)}p.prototype.on=p.prototype.addEventListener=function(t,e){return this._callbacks=this._callbacks||{},(this._callbacks["$"+t]=this._callbacks["$"+t]||[]).push(e),this},p.prototype.once=function(t,e){function s(){this.off(t,s),e.apply(this,arguments)}return s.fn=e,this.on(t,s),this},p.prototype.off=p.prototype.removeListener=p.prototype.removeAllListeners=p.prototype.removeEventListener=function(t,e){if(this._callbacks=this._callbacks||{},0==arguments.length)return this._callbacks={},this;var s,r=this._callbacks["$"+t];if(!r)return this;if(1==arguments.length)return delete this._callbacks["$"+t],this;for(var o=0;o{u[c[t]]=t}));const l={type:"error",data:"parser error"},d="function"==typeof Blob||"undefined"!=typeof Blob&&"[object BlobConstructor]"===Object.prototype.toString.call(Blob),f="function"==typeof ArrayBuffer,y=({type:t,data:e},s,r)=>{return d&&e instanceof Blob?s?r(e):m(e,r):f&&(e instanceof ArrayBuffer||(o=e,"function"==typeof ArrayBuffer.isView?ArrayBuffer.isView(o):o&&o.buffer instanceof ArrayBuffer))?s?r(e):m(new Blob([e]),r):r(c[t]+(e||""));var o},m=(t,e)=>{const s=new FileReader;return s.onload=function(){const t=s.result.split(",")[1];e("b"+t)},s.readAsDataURL(t)};for(var g="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",b="undefined"==typeof Uint8Array?[]:new Uint8Array(256),v=0;v{if("string"!=typeof t)return{type:"message",data:x(t,e)};const s=t.charAt(0);if("b"===s)return{type:"message",data:T(t.substring(1),e)};return u[s]?t.length>1?{type:u[s],data:t.substring(1)}:{type:u[s]}:l},T=(t,e)=>{if(w){const s=function(t){var e,s,r,o,i,n=.75*t.length,a=t.length,h=0;"="===t[t.length-1]&&(n--,"="===t[t.length-2]&&n--);var p=new ArrayBuffer(n),c=new Uint8Array(p);for(e=0;e>4,c[h++]=(15&r)<<4|o>>2,c[h++]=(3&o)<<6|63&i;return p}(t);return x(s,e)}return{base64:!0,data:t}},x=(t,e)=>"blob"===e&&t instanceof ArrayBuffer?new Blob([t]):t,S=String.fromCharCode(30);class E extends h{constructor(t){super(),this.writable=!1,a(this,t),this.opts=t,this.query=t.query,this.readyState="",this.socket=t.socket}onError(t,e){const s=new Error(t);return s.type="TransportError",s.description=e,super.emit("error",s),this}open(){return"closed"!==this.readyState&&""!==this.readyState||(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.emit("open")}onData(t){const e=k(t,this.socket.binaryType);this.onPacket(e)}onPacket(t){super.emit("packet",t)}onClose(){this.readyState="closed",super.emit("close")}}var C,q="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-_".split(""),B={},L=0,O=0;function R(t){var e="";do{e=q[t%64]+e,t=Math.floor(t/64)}while(t>0);return e}function A(){var t=R(+new Date);return t!==C?(L=0,C=t):t+"."+R(L++)}for(;O<64;O++)B[q[O]]=O;A.encode=R,A.decode=function(t){var e=0;for(O=0;O{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.emit("poll")}onData(t){((t,e)=>{const s=t.split(S),r=[];for(let t=0;t{if("opening"===this.readyState&&"open"===t.type&&this.onOpen(),"close"===t.type)return this.onClose(),!1;this.onPacket(t)})),"closed"!==this.readyState&&(this.polling=!1,this.emit("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,r=new Array(s);let o=0;t.forEach(((t,i)=>{y(t,!1,(t=>{r[i]=t,++o===s&&e(r.join(S))}))}))})(t,(t=>{this.doWrite(t,(()=>{this.writable=!0,this.emit("drain")}))}))}uri(){let t=this.query||{};const e=this.opts.secure?"https":"http";let s="";!1!==this.opts.timestampRequests&&(t[this.opts.timestampParam]=P()),this.supportsBinary||t.sid||(t.b64=1),this.opts.port&&("https"===e&&443!==Number(this.opts.port)||"http"===e&&80!==Number(this.opts.port))&&(s=":"+this.opts.port);const r=U.encode(t);return e+"://"+(-1!==this.opts.hostname.indexOf(":")?"["+this.opts.hostname+"]":this.opts.hostname)+s+this.opts.path+(r.length?"?"+r:"")}}function _(){}const j=null!=new r({xdomain:!1}).responseType;class D extends h{constructor(t,e){super(),a(this,e),this.opts=e,this.method=e.method||"GET",this.uri=t,this.async=!1!==e.async,this.data=void 0!==e.data?e.data:null,this.create()}create(){const t=o(this.opts,"agent","pfx","key","passphrase","cert","ca","ciphers","rejectUnauthorized","autoUnref");t.xdomain=!!this.opts.xd,t.xscheme=!!this.opts.xs;const e=this.xhr=new r(t);try{e.open(this.method,this.uri,this.async);try{if(this.opts.extraHeaders){e.setDisableHeaderCheck&&e.setDisableHeaderCheck(!0);for(let t in this.opts.extraHeaders)this.opts.extraHeaders.hasOwnProperty(t)&&e.setRequestHeader(t,this.opts.extraHeaders[t])}}catch(t){}if("POST"===this.method)try{e.setRequestHeader("Content-type","text/plain;charset=UTF-8")}catch(t){}try{e.setRequestHeader("Accept","*/*")}catch(t){}"withCredentials"in e&&(e.withCredentials=this.opts.withCredentials),this.opts.requestTimeout&&(e.timeout=this.opts.requestTimeout),e.onreadystatechange=()=>{4===e.readyState&&(200===e.status||1223===e.status?this.onLoad():this.setTimeoutFn((()=>{this.onError("number"==typeof e.status?e.status:0)}),0))},e.send(this.data)}catch(t){return void this.setTimeoutFn((()=>{this.onError(t)}),0)}"undefined"!=typeof document&&(this.index=D.requestsCount++,D.requests[this.index]=this)}onSuccess(){this.emit("success"),this.cleanup()}onData(t){this.emit("data",t),this.onSuccess()}onError(t){this.emit("error",t),this.cleanup(!0)}cleanup(t){if(void 0!==this.xhr&&null!==this.xhr){if(this.xhr.onreadystatechange=_,t)try{this.xhr.abort()}catch(t){}"undefined"!=typeof document&&delete D.requests[this.index],this.xhr=null}}onLoad(){const t=this.xhr.responseText;null!==t&&this.onData(t)}abort(){this.cleanup()}}if(D.requestsCount=0,D.requests={},"undefined"!=typeof document)if("function"==typeof attachEvent)attachEvent("onunload",F);else if("function"==typeof addEventListener){addEventListener("onpagehide"in s?"pagehide":"unload",F,!1)}function F(){for(let t in D.requests)D.requests.hasOwnProperty(t)&&D.requests[t].abort()}const I="function"==typeof Promise&&"function"==typeof Promise.resolve?t=>Promise.resolve().then(t):(t,e)=>e(t,0),M=s.WebSocket||s.MozWebSocket,W="undefined"!=typeof navigator&&"string"==typeof navigator.product&&"reactnative"===navigator.product.toLowerCase();class N extends E{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=W?{}:o(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=W?new M(t,e,s):e?new M(t,e):new M(t)}catch(t){return this.emit("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=this.onClose.bind(this),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){}r&&I((()=>{this.writable=!0,this.emit("drain")}),this.setTimeoutFn)}))}}doClose(){void 0!==this.ws&&(this.ws.close(),this.ws=null)}uri(){let t=this.query||{};const e=this.opts.secure?"wss":"ws";let s="";this.opts.port&&("wss"===e&&443!==Number(this.opts.port)||"ws"===e&&80!==Number(this.opts.port))&&(s=":"+this.opts.port),this.opts.timestampRequests&&(t[this.opts.timestampParam]=P()),this.supportsBinary||(t.b64=1);const r=U.encode(t);return e+"://"+(-1!==this.opts.hostname.indexOf(":")?"["+this.opts.hostname+"]":this.opts.hostname)+s+this.opts.path+(r.length?"?"+r:"")}check(){return!(!M||"__initialize"in M&&this.name===N.prototype.name)}}const X={websocket:N,polling:class extends H{constructor(t){if(super(t),"undefined"!=typeof location){const e="https:"===location.protocol;let s=location.port;s||(s=e?"443":"80"),this.xd="undefined"!=typeof location&&t.hostname!==location.hostname||s!==t.port,this.xs=t.secure!==e}const e=t&&t.forceBase64;this.supportsBinary=j&&!e}request(t={}){return Object.assign(t,{xd:this.xd,xs:this.xs},this.opts),new D(this.uri(),t)}doWrite(t,e){const s=this.request({method:"POST",data:t});s.on("success",e),s.on("error",(t=>{this.onError("xhr post error",t)}))}doPoll(){const t=this.request();t.on("data",this.onData.bind(this)),t.on("error",(t=>{this.onError("xhr poll error",t)})),this.pollXhr=t}}};var $=/^(?:(?![^:@]+:[^:@\/]*@)(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"],V=function(t){var e=t,s=t.indexOf("["),r=t.indexOf("]");-1!=s&&-1!=r&&(t=t.substring(0,s)+t.substring(s,r).replace(/:/g,";")+t.substring(r,t.length));for(var o,i,n=$.exec(t||""),a={},h=14;h--;)a[z[h]]=n[h]||"";return-1!=s&&-1!=r&&(a.source=e,a.host=a.host.substring(1,a.host.length-1).replace(/;/g,":"),a.authority=a.authority.replace("[","").replace("]","").replace(/;/g,":"),a.ipv6uri=!0),a.pathNames=function(t,e){var s=/\/{2,9}/g,r=e.replace(s,"/").split("/");"/"!=e.substr(0,1)&&0!==e.length||r.splice(0,1);"/"==e.substr(e.length-1,1)&&r.splice(r.length-1,1);return r}(0,a.path),a.queryKey=(o=a.query,i={},o.replace(/(?:^|&)([^&=]*)=?([^&]*)/g,(function(t,e,s){e&&(i[e]=s)})),i),a};class G extends h{constructor(t,e={}){super(),t&&"object"==typeof t&&(e=t,t=null),t?(t=V(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=V(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"],this.readyState="",this.writeBuffer=[],this.prevBufferLen=0,this.opts=Object.assign({path:"/engine.io",agent:!1,withCredentials:!1,upgrade:!0,timestampParam:"t",rememberUpgrade:!1,rejectUnauthorized:!0,perMessageDeflate:{threshold:1024},transportOptions:{},closeOnBeforeunload:!0},e),this.opts.path=this.opts.path.replace(/\/$/,"")+"/","string"==typeof this.opts.query&&(this.opts.query=U.decode(this.opts.query)),this.id=null,this.upgrades=null,this.pingInterval=null,this.pingTimeout=null,this.pingTimeoutTimer=null,"function"==typeof addEventListener&&(this.opts.closeOnBeforeunload&&addEventListener("beforeunload",(()=>{this.transport&&(this.transport.removeAllListeners(),this.transport.close())}),!1),"localhost"!==this.hostname&&(this.offlineEventListener=()=>{this.onClose("transport close")},addEventListener("offline",this.offlineEventListener,!1))),this.open()}createTransport(t){const e=function(t){const e={};for(let s in t)t.hasOwnProperty(s)&&(e[s]=t[s]);return e}(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 X[t](s)}open(){let t;if(this.opts.rememberUpgrade&&G.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",(()=>{this.onClose("transport close")}))}probe(t){let e=this.createTransport(t),s=!1;G.priorWebsocketSuccess=!1;const r=()=>{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;G.priorWebsocketSuccess="websocket"===e.name,this.transport.pause((()=>{s||"closed"!==this.readyState&&(p(),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 o(){s||(s=!0,p(),e.close(),e=null)}const i=t=>{const s=new Error("probe error: "+t);s.transport=e.name,o(),this.emitReserved("upgradeError",s)};function n(){i("transport closed")}function a(){i("socket closed")}function h(t){e&&t.name!==e.name&&o()}const p=()=>{e.removeListener("open",r),e.removeListener("error",i),e.removeListener("close",n),this.off("close",a),this.off("upgrading",h)};e.once("open",r),e.once("error",i),e.once("close",n),this.once("close",a),this.once("upgrading",h),e.open()}onOpen(){if(this.readyState="open",G.priorWebsocketSuccess="websocket"===this.transport.name,this.emitReserved("open"),this.flush(),"open"===this.readyState&&this.opts.upgrade&&this.transport.pause){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(){"closed"!==this.readyState&&this.transport.writable&&!this.upgrading&&this.writeBuffer.length&&(this.transport.send(this.writeBuffer),this.prevBufferLen=this.writeBuffer.length,this.emitReserved("flush"))}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,r){if("function"==typeof e&&(r=e,e=void 0),"function"==typeof s&&(r=s,s=null),"closing"===this.readyState||"closed"===this.readyState)return;(s=s||{}).compress=!1!==s.compress;const o={type:t,data:e,options:s};this.emitReserved("packetCreate",o),this.writeBuffer.push(o),r&&this.once("flush",r),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){G.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("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 r=t.length;for(;s{e[t[s]]=s}));const s={type:"error",data:"parser error"},r="function"==typeof Blob||"undefined"!=typeof Blob&&"[object BlobConstructor]"===Object.prototype.toString.call(Blob),o="function"==typeof ArrayBuffer,i=({type:e,data:s},i,a)=>{return r&&s instanceof Blob?i?a(s):n(s,a):o&&(s instanceof ArrayBuffer||(h=s,"function"==typeof ArrayBuffer.isView?ArrayBuffer.isView(h):h&&h.buffer instanceof ArrayBuffer))?i?a(s):n(new Blob([s]),a):a(t[e]+(s||""));var h},n=(t,e)=>{const s=new FileReader;return s.onload=function(){const t=s.result.split(",")[1];e("b"+t)},s.readAsDataURL(t)};for(var a="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",h="undefined"==typeof Uint8Array?[]:new Uint8Array(256),p=0;p{if("string"!=typeof t)return{type:"message",data:d(t,r)};const o=t.charAt(0);if("b"===o)return{type:"message",data:u(t.substring(1),r)};return e[o]?t.length>1?{type:e[o],data:t.substring(1)}:{type:e[o]}:s},u=(t,e)=>{if(c){const s=function(t){var e,s,r,o,i,n=.75*t.length,a=t.length,p=0;"="===t[t.length-1]&&(n--,"="===t[t.length-2]&&n--);var c=new ArrayBuffer(n),l=new Uint8Array(c);for(e=0;e>4,l[p++]=(15&r)<<4|o>>2,l[p++]=(3&o)<<6|63&i;return c}(t);return d(s,e)}return{base64:!0,data:t}},d=(t,e)=>"blob"===e&&t instanceof ArrayBuffer?new Blob([t]):t,f=String.fromCharCode(30);function y(t){if(t)return function(t){for(var e in y.prototype)t[e]=y.prototype[e];return t}(t)}y.prototype.on=y.prototype.addEventListener=function(t,e){return this._callbacks=this._callbacks||{},(this._callbacks["$"+t]=this._callbacks["$"+t]||[]).push(e),this},y.prototype.once=function(t,e){function s(){this.off(t,s),e.apply(this,arguments)}return s.fn=e,this.on(t,s),this},y.prototype.off=y.prototype.removeListener=y.prototype.removeAllListeners=y.prototype.removeEventListener=function(t,e){if(this._callbacks=this._callbacks||{},0==arguments.length)return this._callbacks={},this;var s,r=this._callbacks["$"+t];if(!r)return this;if(1==arguments.length)return delete this._callbacks["$"+t],this;for(var o=0;o(t.hasOwnProperty(s)&&(e[s]=t[s]),e)),{})}const b=setTimeout,v=clearTimeout;function w(t,e){e.useNativeTimers?(t.setTimeoutFn=b.bind(m),t.clearTimeoutFn=v.bind(m)):(t.setTimeoutFn=setTimeout.bind(m),t.clearTimeoutFn=clearTimeout.bind(m))}class k extends Error{constructor(t,e,s){super(t),this.description=e,this.context=s,this.type="TransportError"}}class x extends y{constructor(t){super(),this.writable=!1,w(this,t),this.opts=t,this.query=t.query,this.readyState="",this.socket=t.socket}onError(t,e,s){return super.emitReserved("error",new k(t,e,s)),this}open(){return"closed"!==this.readyState&&""!==this.readyState||(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=l(t,this.socket.binaryType);this.onPacket(e)}onPacket(t){super.emitReserved("packet",t)}onClose(t){this.readyState="closed",super.emitReserved("close",t)}}const T="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-_".split(""),S={};let R,B=0,C=0;function E(t){let e="";do{e=T[t%64]+e,t=Math.floor(t/64)}while(t>0);return e}function L(){const t=E(+new Date);return t!==R?(B=0,R=t):t+"."+E(B++)}for(;C<64;C++)S[T[C]]=C;function q(t){let e="";for(let s in t)t.hasOwnProperty(s)&&(e.length&&(e+="&"),e+=encodeURIComponent(s)+"="+encodeURIComponent(t[s]));return e}let O=!1;try{O="undefined"!=typeof XMLHttpRequest&&"withCredentials"in new XMLHttpRequest}catch(t){}const P=O;function A(t){const e=t.xdomain;try{if("undefined"!=typeof XMLHttpRequest&&(!e||P))return new XMLHttpRequest}catch(t){}if(!e)try{return new(m[["Active"].concat("Object").join("X")])("Microsoft.XMLHTTP")}catch(t){}}function U(){}const H=null!=new A({xdomain:!1}).responseType;class _ extends y{constructor(t,e){super(),w(this,e),this.opts=e,this.method=e.method||"GET",this.uri=t,this.async=!1!==e.async,this.data=void 0!==e.data?e.data:null,this.create()}create(){const t=g(this.opts,"agent","pfx","key","passphrase","cert","ca","ciphers","rejectUnauthorized","autoUnref");t.xdomain=!!this.opts.xd,t.xscheme=!!this.opts.xs;const e=this.xhr=new A(t);try{e.open(this.method,this.uri,this.async);try{if(this.opts.extraHeaders){e.setDisableHeaderCheck&&e.setDisableHeaderCheck(!0);for(let t in this.opts.extraHeaders)this.opts.extraHeaders.hasOwnProperty(t)&&e.setRequestHeader(t,this.opts.extraHeaders[t])}}catch(t){}if("POST"===this.method)try{e.setRequestHeader("Content-type","text/plain;charset=UTF-8")}catch(t){}try{e.setRequestHeader("Accept","*/*")}catch(t){}"withCredentials"in e&&(e.withCredentials=this.opts.withCredentials),this.opts.requestTimeout&&(e.timeout=this.opts.requestTimeout),e.onreadystatechange=()=>{4===e.readyState&&(200===e.status||1223===e.status?this.onLoad():this.setTimeoutFn((()=>{this.onError("number"==typeof e.status?e.status:0)}),0))},e.send(this.data)}catch(t){return void this.setTimeoutFn((()=>{this.onError(t)}),0)}"undefined"!=typeof document&&(this.index=_.requestsCount++,_.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=U,t)try{this.xhr.abort()}catch(t){}"undefined"!=typeof document&&delete _.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(_.requestsCount=0,_.requests={},"undefined"!=typeof document)if("function"==typeof attachEvent)attachEvent("onunload",j);else if("function"==typeof addEventListener){addEventListener("onpagehide"in m?"pagehide":"unload",j,!1)}function j(){for(let t in _.requests)_.requests.hasOwnProperty(t)&&_.requests[t].abort()}const F="function"==typeof Promise&&"function"==typeof Promise.resolve?t=>Promise.resolve().then(t):(t,e)=>e(t,0),D=m.WebSocket||m.MozWebSocket,I="undefined"!=typeof navigator&&"string"==typeof navigator.product&&"reactnative"===navigator.product.toLowerCase();class M extends x{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=I?{}:g(this.opts,"agent","perMessageDeflate","pfx","key","passphrase","cert","ca","ciphers","rejectUnauthorized","localAddress","protocolVersion","origin","maxPayload","family","checkServerIdentity");this.opts.extraHeaders&&(s.headers=this.opts.extraHeaders);try{this.ws=I?new D(t,e,s):e?new D(t,e):new D(t)}catch(t){return this.emitReserved("error",t)}this.ws.binaryType=this.socket.binaryType||"arraybuffer",this.addEventListeners()}addEventListeners(){this.ws.onopen=()=>{this.opts.autoUnref&&this.ws._socket.unref(),this.onOpen()},this.ws.onclose=t=>this.onClose({description:"websocket connection closed",context:t}),this.ws.onmessage=t=>this.onData(t.data),this.ws.onerror=t=>this.onError("websocket error",t)}write(t){this.writable=!1;for(let e=0;e{try{this.ws.send(t)}catch(t){}r&&F((()=>{this.writable=!0,this.emitReserved("drain")}),this.setTimeoutFn)}))}}doClose(){void 0!==this.ws&&(this.ws.close(),this.ws=null)}uri(){let t=this.query||{};const e=this.opts.secure?"wss":"ws";let s="";this.opts.port&&("wss"===e&&443!==Number(this.opts.port)||"ws"===e&&80!==Number(this.opts.port))&&(s=":"+this.opts.port),this.opts.timestampRequests&&(t[this.opts.timestampParam]=L()),this.supportsBinary||(t.b64=1);const r=q(t);return e+"://"+(-1!==this.opts.hostname.indexOf(":")?"["+this.opts.hostname+"]":this.opts.hostname)+s+this.opts.path+(r.length?"?"+r:"")}check(){return!(!D||"__initialize"in D&&this.name===M.prototype.name)}}const W={websocket:M,polling:class extends x{constructor(t){if(super(t),this.polling=!1,"undefined"!=typeof location){const e="https:"===location.protocol;let s=location.port;s||(s=e?"443":"80"),this.xd="undefined"!=typeof location&&t.hostname!==location.hostname||s!==t.port,this.xs=t.secure!==e}const e=t&&t.forceBase64;this.supportsBinary=H&&!e}get name(){return"polling"}doOpen(){this.poll()}pause(t){this.readyState="pausing";const e=()=>{this.readyState="paused",t()};if(this.polling||!this.writable){let t=0;this.polling&&(t++,this.once("pollComplete",(function(){--t||e()}))),this.writable||(t++,this.once("drain",(function(){--t||e()})))}else e()}poll(){this.polling=!0,this.doPoll(),this.emitReserved("poll")}onData(t){((t,e)=>{const s=t.split(f),r=[];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,r=new Array(s);let o=0;t.forEach(((t,n)=>{i(t,!1,(t=>{r[n]=t,++o===s&&e(r.join(f))}))}))})(t,(t=>{this.doWrite(t,(()=>{this.writable=!0,this.emitReserved("drain")}))}))}uri(){let t=this.query||{};const e=this.opts.secure?"https":"http";let s="";!1!==this.opts.timestampRequests&&(t[this.opts.timestampParam]=L()),this.supportsBinary||t.sid||(t.b64=1),this.opts.port&&("https"===e&&443!==Number(this.opts.port)||"http"===e&&80!==Number(this.opts.port))&&(s=":"+this.opts.port);const r=q(t);return e+"://"+(-1!==this.opts.hostname.indexOf(":")?"["+this.opts.hostname+"]":this.opts.hostname)+s+this.opts.path+(r.length?"?"+r:"")}request(t={}){return Object.assign(t,{xd:this.xd,xs:this.xs},this.opts),new _(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}}},N=/^(?:(?![^:@]+:[^:@\/]*@)(http|https|ws|wss):\/\/)?((?:(([^:@]*)(?::([^:@]*))?)?@)?((?:[a-f0-9]{0,4}:){2,7}[a-f0-9]{0,4}|[^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/,X=["source","protocol","authority","userInfo","user","password","host","port","relative","path","directory","file","query","anchor"];function $(t){const e=t,s=t.indexOf("["),r=t.indexOf("]");-1!=s&&-1!=r&&(t=t.substring(0,s)+t.substring(s,r).replace(/:/g,";")+t.substring(r,t.length));let o=N.exec(t||""),i={},n=14;for(;n--;)i[X[n]]=o[n]||"";return-1!=s&&-1!=r&&(i.source=e,i.host=i.host.substring(1,i.host.length-1).replace(/;/g,":"),i.authority=i.authority.replace("[","").replace("]","").replace(/;/g,":"),i.ipv6uri=!0),i.pathNames=function(t,e){const s=/\/{2,9}/g,r=e.replace(s,"/").split("/");"/"!=e.substr(0,1)&&0!==e.length||r.splice(0,1);"/"==e.substr(e.length-1,1)&&r.splice(r.length-1,1);return r}(0,i.path),i.queryKey=function(t,e){const s={};return e.replace(/(?:^|&)([^&=]*)=?([^&]*)/g,(function(t,e,r){e&&(s[e]=r)})),s}(0,i.query),i}class z extends y{constructor(t,e={}){super(),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),w(this,e),this.secure=null!=e.secure?e.secure:"undefined"!=typeof location&&"https:"===location.protocol,e.hostname&&!e.port&&(e.port=this.secure?"443":"80"),this.hostname=e.hostname||("undefined"!=typeof location?location.hostname:"localhost"),this.port=e.port||("undefined"!=typeof location&&location.port?location.port:this.secure?"443":"80"),this.transports=e.transports||["polling","websocket"],this.readyState="",this.writeBuffer=[],this.prevBufferLen=0,this.opts=Object.assign({path:"/engine.io",agent:!1,withCredentials:!1,upgrade:!0,timestampParam:"t",rememberUpgrade:!1,rejectUnauthorized:!0,perMessageDeflate:{threshold:1024},transportOptions:{},closeOnBeforeunload:!0},e),this.opts.path=this.opts.path.replace(/\/$/,"")+"/","string"==typeof this.opts.query&&(this.opts.query=function(t){let e={},s=t.split("&");for(let t=0,r=s.length;t{this.transport&&(this.transport.removeAllListeners(),this.transport.close())}),!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 W[t](s)}open(){let t;if(this.opts.rememberUpgrade&&z.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;z.priorWebsocketSuccess=!1;const r=()=>{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;z.priorWebsocketSuccess="websocket"===e.name,this.transport.pause((()=>{s||"closed"!==this.readyState&&(p(),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 o(){s||(s=!0,p(),e.close(),e=null)}const i=t=>{const s=new Error("probe error: "+t);s.transport=e.name,o(),this.emitReserved("upgradeError",s)};function n(){i("transport closed")}function a(){i("socket closed")}function h(t){e&&t.name!==e.name&&o()}const p=()=>{e.removeListener("open",r),e.removeListener("error",i),e.removeListener("close",n),this.off("close",a),this.off("upgrading",h)};e.once("open",r),e.once("error",i),e.once("close",n),this.once("close",a),this.once("upgrading",h),e.open()}onOpen(){if(this.readyState="open",z.priorWebsocketSuccess="websocket"===this.transport.name,this.emitReserved("open"),this.flush(),"open"===this.readyState&&this.opts.upgrade&&this.transport.pause){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:(r++,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,r){if("function"==typeof e&&(r=e,e=void 0),"function"==typeof s&&(r=s,s=null),"closing"===this.readyState||"closed"===this.readyState)return;(s=s||{}).compress=!1!==s.compress;const o={type:t,data:e,options:s};this.emitReserved("packetCreate",o),this.writeBuffer.push(o),r&&this.once("flush",r),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){z.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("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 r=t.length;for(;s {\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","// browser shim for xmlhttprequest module\nimport hasCORS from \"has-cors\";\nimport globalThis from \"../globalThis.js\";\nexport default function (opts) {\n const xdomain = opts.xdomain;\n // XMLHttpRequest can be disabled on IE\n try {\n if (\"undefined\" !== typeof XMLHttpRequest && (!xdomain || hasCORS)) {\n return new XMLHttpRequest();\n }\n }\n catch (e) { }\n if (!xdomain) {\n try {\n return new globalThis[[\"Active\"].concat(\"Object\").join(\"X\")](\"Microsoft.XMLHTTP\");\n }\n catch (e) { }\n }\n}\n","import 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 = setTimeout;\nconst NATIVE_CLEAR_TIMEOUT = 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 = setTimeout.bind(globalThis);\n obj.clearTimeoutFn = clearTimeout.bind(globalThis);\n }\n}\n","\n/**\n * Expose `Emitter`.\n */\n\nexports.Emitter = Emitter;\n\n/**\n * Initialize a new `Emitter`.\n *\n * @api public\n */\n\nfunction 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","const PACKET_TYPES = Object.create(null); // no Map = no polyfill\nPACKET_TYPES[\"open\"] = \"0\";\nPACKET_TYPES[\"close\"] = \"1\";\nPACKET_TYPES[\"ping\"] = \"2\";\nPACKET_TYPES[\"pong\"] = \"3\";\nPACKET_TYPES[\"message\"] = \"4\";\nPACKET_TYPES[\"upgrade\"] = \"5\";\nPACKET_TYPES[\"noop\"] = \"6\";\nconst PACKET_TYPES_REVERSE = Object.create(null);\nObject.keys(PACKET_TYPES).forEach(key => {\n PACKET_TYPES_REVERSE[PACKET_TYPES[key]] = key;\n});\nconst ERROR_PACKET = { type: \"error\", data: \"parser error\" };\nexport { PACKET_TYPES, PACKET_TYPES_REVERSE, ERROR_PACKET };\n","import { PACKET_TYPES } from \"./commons.js\";\nconst withNativeBlob = typeof Blob === \"function\" ||\n (typeof Blob !== \"undefined\" &&\n Object.prototype.toString.call(Blob) === \"[object BlobConstructor]\");\nconst withNativeArrayBuffer = typeof ArrayBuffer === \"function\";\n// ArrayBuffer.isView method is not defined in IE10\nconst isView = obj => {\n return typeof ArrayBuffer.isView === \"function\"\n ? ArrayBuffer.isView(obj)\n : obj && obj.buffer instanceof ArrayBuffer;\n};\nconst encodePacket = ({ type, data }, supportsBinary, callback) => {\n if (withNativeBlob && data instanceof Blob) {\n if (supportsBinary) {\n return callback(data);\n }\n else {\n return encodeBlobAsBase64(data, callback);\n }\n }\n else if (withNativeArrayBuffer &&\n (data instanceof ArrayBuffer || isView(data))) {\n if (supportsBinary) {\n return callback(data);\n }\n else {\n return encodeBlobAsBase64(new Blob([data]), callback);\n }\n }\n // plain string\n return callback(PACKET_TYPES[type] + (data || \"\"));\n};\nconst encodeBlobAsBase64 = (data, callback) => {\n const fileReader = new FileReader();\n fileReader.onload = function () {\n const content = fileReader.result.split(\",\")[1];\n callback(\"b\" + content);\n };\n return fileReader.readAsDataURL(data);\n};\nexport default encodePacket;\n","/*\n * base64-arraybuffer 1.0.1 \n * Copyright (c) 2021 Niklas von Hertzen \n * Released under MIT License\n */\nvar chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n// Use a lookup table to find the index.\nvar lookup = typeof Uint8Array === 'undefined' ? [] : new Uint8Array(256);\nfor (var i = 0; i < chars.length; i++) {\n lookup[chars.charCodeAt(i)] = i;\n}\nvar encode = function (arraybuffer) {\n var bytes = new Uint8Array(arraybuffer), i, len = bytes.length, base64 = '';\n for (i = 0; i < len; i += 3) {\n base64 += chars[bytes[i] >> 2];\n base64 += chars[((bytes[i] & 3) << 4) | (bytes[i + 1] >> 4)];\n base64 += chars[((bytes[i + 1] & 15) << 2) | (bytes[i + 2] >> 6)];\n base64 += chars[bytes[i + 2] & 63];\n }\n if (len % 3 === 2) {\n base64 = base64.substring(0, base64.length - 1) + '=';\n }\n else if (len % 3 === 1) {\n base64 = base64.substring(0, base64.length - 2) + '==';\n }\n return base64;\n};\nvar decode = function (base64) {\n var bufferLength = base64.length * 0.75, len = base64.length, i, p = 0, encoded1, encoded2, encoded3, encoded4;\n if (base64[base64.length - 1] === '=') {\n bufferLength--;\n if (base64[base64.length - 2] === '=') {\n bufferLength--;\n }\n }\n var arraybuffer = new ArrayBuffer(bufferLength), bytes = new Uint8Array(arraybuffer);\n for (i = 0; i < len; i += 4) {\n encoded1 = lookup[base64.charCodeAt(i)];\n encoded2 = lookup[base64.charCodeAt(i + 1)];\n encoded3 = lookup[base64.charCodeAt(i + 2)];\n encoded4 = lookup[base64.charCodeAt(i + 3)];\n bytes[p++] = (encoded1 << 2) | (encoded2 >> 4);\n bytes[p++] = ((encoded2 & 15) << 4) | (encoded3 >> 2);\n bytes[p++] = ((encoded3 & 3) << 6) | (encoded4 & 63);\n }\n return arraybuffer;\n};\n\nexport { decode, encode };\n//# sourceMappingURL=base64-arraybuffer.es5.js.map\n","import { ERROR_PACKET, PACKET_TYPES_REVERSE } from \"./commons.js\";\nimport { decode } from \"base64-arraybuffer\";\nconst withNativeArrayBuffer = typeof ArrayBuffer === \"function\";\nconst decodePacket = (encodedPacket, binaryType) => {\n if (typeof encodedPacket !== \"string\") {\n return {\n type: \"message\",\n data: mapBinary(encodedPacket, binaryType)\n };\n }\n const type = encodedPacket.charAt(0);\n if (type === \"b\") {\n return {\n type: \"message\",\n data: decodeBase64Packet(encodedPacket.substring(1), binaryType)\n };\n }\n const packetType = PACKET_TYPES_REVERSE[type];\n if (!packetType) {\n return ERROR_PACKET;\n }\n return encodedPacket.length > 1\n ? {\n type: PACKET_TYPES_REVERSE[type],\n data: encodedPacket.substring(1)\n }\n : {\n type: PACKET_TYPES_REVERSE[type]\n };\n};\nconst decodeBase64Packet = (data, binaryType) => {\n if (withNativeArrayBuffer) {\n const decoded = decode(data);\n return mapBinary(decoded, binaryType);\n }\n else {\n return { base64: true, data }; // fallback for old browsers\n }\n};\nconst mapBinary = (data, binaryType) => {\n switch (binaryType) {\n case \"blob\":\n return data instanceof ArrayBuffer ? new Blob([data]) : data;\n case \"arraybuffer\":\n default:\n return data; // assuming the data is already an ArrayBuffer\n }\n};\nexport default decodePacket;\n","import encodePacket from \"./encodePacket.js\";\nimport decodePacket from \"./decodePacket.js\";\nconst SEPARATOR = String.fromCharCode(30); // see https://en.wikipedia.org/wiki/Delimiter#ASCII_delimited_text\nconst encodePayload = (packets, callback) => {\n // some packets may be added to the array while encoding, so the initial length must be saved\n const length = packets.length;\n const encodedPackets = new Array(length);\n let count = 0;\n packets.forEach((packet, i) => {\n // force base64 encoding for binary packets\n encodePacket(packet, false, encodedPacket => {\n encodedPackets[i] = encodedPacket;\n if (++count === length) {\n callback(encodedPackets.join(SEPARATOR));\n }\n });\n });\n};\nconst decodePayload = (encodedPayload, binaryType) => {\n const encodedPackets = encodedPayload.split(SEPARATOR);\n const packets = [];\n for (let i = 0; i < encodedPackets.length; i++) {\n const decodedPacket = decodePacket(encodedPackets[i], binaryType);\n packets.push(decodedPacket);\n if (decodedPacket.type === \"error\") {\n break;\n }\n }\n return packets;\n};\nexport const protocol = 4;\nexport { encodePacket, encodePayload, decodePacket, decodePayload };\n","import { decodePacket } from \"engine.io-parser\";\nimport { Emitter } from \"@socket.io/component-emitter\";\nimport { installTimerFunctions } from \"./util.js\";\nexport class Transport extends Emitter {\n /**\n * Transport abstract constructor.\n *\n * @param {Object} options.\n * @api private\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.readyState = \"\";\n this.socket = opts.socket;\n }\n /**\n * Emits an error.\n *\n * @param {String} str\n * @return {Transport} for chaining\n * @api protected\n */\n onError(msg, desc) {\n const err = new Error(msg);\n // @ts-ignore\n err.type = \"TransportError\";\n // @ts-ignore\n err.description = desc;\n super.emit(\"error\", err);\n return this;\n }\n /**\n * Opens the transport.\n *\n * @api public\n */\n open() {\n if (\"closed\" === this.readyState || \"\" === this.readyState) {\n this.readyState = \"opening\";\n this.doOpen();\n }\n return this;\n }\n /**\n * Closes the transport.\n *\n * @api public\n */\n close() {\n if (\"opening\" === this.readyState || \"open\" === this.readyState) {\n this.doClose();\n this.onClose();\n }\n return this;\n }\n /**\n * Sends multiple packets.\n *\n * @param {Array} packets\n * @api public\n */\n send(packets) {\n if (\"open\" === this.readyState) {\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 * @api protected\n */\n onOpen() {\n this.readyState = \"open\";\n this.writable = true;\n super.emit(\"open\");\n }\n /**\n * Called with data.\n *\n * @param {String} data\n * @api 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 * @api protected\n */\n onPacket(packet) {\n super.emit(\"packet\", packet);\n }\n /**\n * Called upon close.\n *\n * @api protected\n */\n onClose() {\n this.readyState = \"closed\";\n super.emit(\"close\");\n }\n}\n","'use strict';\n\nvar alphabet = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-_'.split('')\n , length = 64\n , map = {}\n , seed = 0\n , i = 0\n , prev;\n\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 */\nfunction encode(num) {\n var encoded = '';\n\n do {\n encoded = alphabet[num % length] + encoded;\n num = Math.floor(num / length);\n } while (num > 0);\n\n return encoded;\n}\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 */\nfunction decode(str) {\n var decoded = 0;\n\n for (i = 0; i < str.length; i++) {\n decoded = decoded * length + map[str.charAt(i)];\n }\n\n return decoded;\n}\n\n/**\n * Yeast: A tiny growing id generator.\n *\n * @returns {String} A unique id.\n * @api public\n */\nfunction yeast() {\n var now = encode(+new Date());\n\n if (now !== prev) return seed = 0, prev = now;\n return now +'.'+ encode(seed++);\n}\n\n//\n// Map each character to its index.\n//\nfor (; i < length; i++) map[alphabet[i]] = i;\n\n//\n// Expose the `yeast`, `encode` and `decode` functions.\n//\nyeast.encode = encode;\nyeast.decode = decode;\nmodule.exports = yeast;\n","/**\n * Compiles a querystring\n * Returns string representation of the object\n *\n * @param {Object}\n * @api private\n */\n\nexports.encode = function (obj) {\n var str = '';\n\n for (var i in obj) {\n if (obj.hasOwnProperty(i)) {\n if (str.length) str += '&';\n str += encodeURIComponent(i) + '=' + encodeURIComponent(obj[i]);\n }\n }\n\n return str;\n};\n\n/**\n * Parses a simple querystring into an object\n *\n * @param {String} qs\n * @api private\n */\n\nexports.decode = function(qs){\n var qry = {};\n var pairs = qs.split('&');\n for (var i = 0, l = pairs.length; i < l; i++) {\n var pair = pairs[i].split('=');\n qry[decodeURIComponent(pair[0])] = decodeURIComponent(pair[1]);\n }\n return qry;\n};\n","import { Transport } from \"../transport.js\";\nimport yeast from \"yeast\";\nimport parseqs from \"parseqs\";\nimport { encodePayload, decodePayload } from \"engine.io-parser\";\nexport class Polling extends Transport {\n constructor() {\n super(...arguments);\n this.polling = false;\n }\n /**\n * Transport name.\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 * @api private\n */\n doOpen() {\n this.poll();\n }\n /**\n * Pauses polling.\n *\n * @param {Function} callback upon buffers are flushed and transport is paused\n * @api private\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 * @api public\n */\n poll() {\n this.polling = true;\n this.doPoll();\n this.emit(\"poll\");\n }\n /**\n * Overloads onData to detect payloads.\n *\n * @api private\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();\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.emit(\"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 * @api private\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} data packets\n * @param {Function} drain callback\n * @api private\n */\n write(packets) {\n this.writable = false;\n encodePayload(packets, data => {\n this.doWrite(data, () => {\n this.writable = true;\n this.emit(\"drain\");\n });\n });\n }\n /**\n * Generates uri for connection.\n *\n * @api private\n */\n uri() {\n let query = this.query || {};\n const schema = this.opts.secure ? \"https\" : \"http\";\n let port = \"\";\n // cache busting is forced\n if (false !== this.opts.timestampRequests) {\n query[this.opts.timestampParam] = yeast();\n }\n if (!this.supportsBinary && !query.sid) {\n query.b64 = 1;\n }\n // avoid port if default for schema\n if (this.opts.port &&\n ((\"https\" === schema && Number(this.opts.port) !== 443) ||\n (\"http\" === schema && Number(this.opts.port) !== 80))) {\n port = \":\" + this.opts.port;\n }\n const encodedQuery = parseqs.encode(query);\n const ipv6 = this.opts.hostname.indexOf(\":\") !== -1;\n return (schema +\n \"://\" +\n (ipv6 ? \"[\" + this.opts.hostname + \"]\" : this.opts.hostname) +\n port +\n this.opts.path +\n (encodedQuery.length ? \"?\" + encodedQuery : \"\"));\n }\n}\n","/* global attachEvent */\nimport XMLHttpRequest from \"./xmlhttprequest.js\";\nimport globalThis from \"../globalThis.js\";\nimport { installTimerFunctions, pick } from \"../util.js\";\nimport { Emitter } from \"@socket.io/component-emitter\";\nimport { Polling } from \"./polling.js\";\n/**\n * Empty function\n */\nfunction empty() { }\nconst hasXHR2 = (function () {\n const xhr = new XMLHttpRequest({\n xdomain: false\n });\n return null != xhr.responseType;\n})();\nexport class XHR extends Polling {\n /**\n * XHR Polling constructor.\n *\n * @param {Object} opts\n * @api public\n */\n constructor(opts) {\n super(opts);\n if (typeof location !== \"undefined\") {\n const isSSL = \"https:\" === location.protocol;\n let port = location.port;\n // some user agents have empty `location.port`\n if (!port) {\n port = isSSL ? \"443\" : \"80\";\n }\n this.xd =\n (typeof location !== \"undefined\" &&\n opts.hostname !== location.hostname) ||\n port !== opts.port;\n this.xs = opts.secure !== isSSL;\n }\n /**\n * XHR supports binary\n */\n const forceBase64 = opts && opts.forceBase64;\n this.supportsBinary = hasXHR2 && !forceBase64;\n }\n /**\n * Creates a request.\n *\n * @param {String} method\n * @api private\n */\n request(opts = {}) {\n Object.assign(opts, { xd: this.xd, xs: this.xs }, this.opts);\n return new Request(this.uri(), opts);\n }\n /**\n * Sends data.\n *\n * @param {String} data to send.\n * @param {Function} called upon flush.\n * @api 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\", err => {\n this.onError(\"xhr post error\", err);\n });\n }\n /**\n * Starts a poll cycle.\n *\n * @api private\n */\n doPoll() {\n const req = this.request();\n req.on(\"data\", this.onData.bind(this));\n req.on(\"error\", err => {\n this.onError(\"xhr poll error\", err);\n });\n this.pollXhr = req;\n }\n}\nexport class Request extends Emitter {\n /**\n * Request constructor\n *\n * @param {Object} options\n * @api public\n */\n constructor(uri, opts) {\n super();\n installTimerFunctions(this, opts);\n this.opts = opts;\n this.method = opts.method || \"GET\";\n this.uri = uri;\n this.async = false !== opts.async;\n this.data = undefined !== opts.data ? opts.data : null;\n this.create();\n }\n /**\n * Creates the XHR object and sends the request.\n *\n * @api private\n */\n create() {\n const opts = pick(this.opts, \"agent\", \"pfx\", \"key\", \"passphrase\", \"cert\", \"ca\", \"ciphers\", \"rejectUnauthorized\", \"autoUnref\");\n opts.xdomain = !!this.opts.xd;\n opts.xscheme = !!this.opts.xs;\n const xhr = (this.xhr = new XMLHttpRequest(opts));\n try {\n xhr.open(this.method, this.uri, this.async);\n try {\n if (this.opts.extraHeaders) {\n xhr.setDisableHeaderCheck && xhr.setDisableHeaderCheck(true);\n for (let i in this.opts.extraHeaders) {\n if (this.opts.extraHeaders.hasOwnProperty(i)) {\n xhr.setRequestHeader(i, this.opts.extraHeaders[i]);\n }\n }\n }\n }\n catch (e) { }\n if (\"POST\" === this.method) {\n try {\n xhr.setRequestHeader(\"Content-type\", \"text/plain;charset=UTF-8\");\n }\n catch (e) { }\n }\n try {\n xhr.setRequestHeader(\"Accept\", \"*/*\");\n }\n catch (e) { }\n // ie6 check\n if (\"withCredentials\" in xhr) {\n xhr.withCredentials = this.opts.withCredentials;\n }\n if (this.opts.requestTimeout) {\n xhr.timeout = this.opts.requestTimeout;\n }\n xhr.onreadystatechange = () => {\n if (4 !== xhr.readyState)\n return;\n if (200 === xhr.status || 1223 === xhr.status) {\n this.onLoad();\n }\n else {\n // make sure the `error` event handler that's user-set\n // does not throw in the same tick and gets caught here\n this.setTimeoutFn(() => {\n this.onError(typeof xhr.status === \"number\" ? xhr.status : 0);\n }, 0);\n }\n };\n xhr.send(this.data);\n }\n catch (e) {\n // Need to defer since .create() is called directly from the constructor\n // and thus the 'error' event can only be only bound *after* this exception\n // occurs. Therefore, also, we cannot throw here at all.\n this.setTimeoutFn(() => {\n this.onError(e);\n }, 0);\n return;\n }\n if (typeof document !== \"undefined\") {\n this.index = Request.requestsCount++;\n Request.requests[this.index] = this;\n }\n }\n /**\n * Called upon successful response.\n *\n * @api private\n */\n onSuccess() {\n this.emit(\"success\");\n this.cleanup();\n }\n /**\n * Called if we have data.\n *\n * @api private\n */\n onData(data) {\n this.emit(\"data\", data);\n this.onSuccess();\n }\n /**\n * Called upon error.\n *\n * @api private\n */\n onError(err) {\n this.emit(\"error\", err);\n this.cleanup(true);\n }\n /**\n * Cleans up house.\n *\n * @api 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 * @api private\n */\n onLoad() {\n const data = this.xhr.responseText;\n if (data !== null) {\n this.onData(data);\n }\n }\n /**\n * Aborts the request.\n *\n * @api public\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 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 parseqs from \"parseqs\";\nimport yeast from \"yeast\";\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 * @api {Object} connection options\n * @api public\n */\n constructor(opts) {\n super(opts);\n this.supportsBinary = !opts.forceBase64;\n }\n /**\n * Transport name.\n *\n * @api public\n */\n get name() {\n return \"websocket\";\n }\n /**\n * Opens socket.\n *\n * @api private\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.emit(\"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 * @api 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 = this.onClose.bind(this);\n this.ws.onmessage = ev => this.onData(ev.data);\n this.ws.onerror = e => this.onError(\"websocket error\", e);\n }\n /**\n * Writes data to socket.\n *\n * @param {Array} array of packets.\n * @api private\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 = \"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.emit(\"drain\");\n }, this.setTimeoutFn);\n }\n });\n }\n }\n /**\n * Closes socket.\n *\n * @api private\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 * @api private\n */\n uri() {\n let query = this.query || {};\n const schema = this.opts.secure ? \"wss\" : \"ws\";\n let port = \"\";\n // avoid port if default for schema\n if (this.opts.port &&\n ((\"wss\" === schema && Number(this.opts.port) !== 443) ||\n (\"ws\" === schema && Number(this.opts.port) !== 80))) {\n port = \":\" + this.opts.port;\n }\n // append timestamp to URI\n if (this.opts.timestampRequests) {\n query[this.opts.timestampParam] = yeast();\n }\n // communicate binary support capabilities\n if (!this.supportsBinary) {\n query.b64 = 1;\n }\n const encodedQuery = parseqs.encode(query);\n const ipv6 = this.opts.hostname.indexOf(\":\") !== -1;\n return (schema +\n \"://\" +\n (ipv6 ? \"[\" + this.opts.hostname + \"]\" : this.opts.hostname) +\n port +\n this.opts.path +\n (encodedQuery.length ? \"?\" + encodedQuery : \"\"));\n }\n /**\n * Feature detection for WebSocket.\n *\n * @return {Boolean} whether this transport is available.\n * @api public\n */\n check() {\n return (!!WebSocket &&\n !(\"__initialize\" in WebSocket && this.name === WS.prototype.name));\n }\n}\n","import { XHR } from \"./polling-xhr.js\";\nimport { WS } from \"./websocket.js\";\nexport const transports = {\n websocket: WS,\n polling: XHR\n};\n","/**\n * Parses an URI\n *\n * @author Steven Levithan (MIT license)\n * @api private\n */\n\nvar re = /^(?:(?![^:@]+:[^:@\\/]*@)(http|https|ws|wss):\\/\\/)?((?:(([^:@]*)(?::([^:@]*))?)?@)?((?:[a-f0-9]{0,4}:){2,7}[a-f0-9]{0,4}|[^:\\/?#]*)(?::(\\d*))?)(((\\/(?:[^?#](?![^?#\\/]*\\.[^?#\\/.]+(?:[?#]|$)))*\\/?)?([^?#\\/]*))(?:\\?([^#]*))?(?:#(.*))?)/;\n\nvar parts = [\n 'source', 'protocol', 'authority', 'userInfo', 'user', 'password', 'host', 'port', 'relative', 'path', 'directory', 'file', 'query', 'anchor'\n];\n\nmodule.exports = function parseuri(str) {\n var src = str,\n b = str.indexOf('['),\n e = str.indexOf(']');\n\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\n var m = re.exec(str || ''),\n uri = {},\n i = 14;\n\n while (i--) {\n uri[parts[i]] = m[i] || '';\n }\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\n uri.pathNames = pathNames(uri, uri['path']);\n uri.queryKey = queryKey(uri, uri['query']);\n\n return uri;\n};\n\nfunction pathNames(obj, path) {\n var regx = /\\/{2,9}/g,\n names = path.replace(regx, \"/\").split(\"/\");\n\n if (path.substr(0, 1) == '/' || path.length === 0) {\n names.splice(0, 1);\n }\n if (path.substr(path.length - 1, 1) == '/') {\n names.splice(names.length - 1, 1);\n }\n\n return names;\n}\n\nfunction queryKey(uri, query) {\n var data = {};\n\n query.replace(/(?:^|&)([^&=]*)=?([^&]*)/g, function ($0, $1, $2) {\n if ($1) {\n data[$1] = $2;\n }\n });\n\n return data;\n}\n","import { transports } from \"./transports/index.js\";\nimport { installTimerFunctions } from \"./util.js\";\nimport parseqs from \"parseqs\";\nimport parseuri from \"parseuri\";\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 or options\n * @param {Object} opts - options\n * @api public\n */\n constructor(uri, opts = {}) {\n super();\n if (uri && \"object\" === typeof uri) {\n opts = uri;\n uri = null;\n }\n if (uri) {\n uri = parseuri(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 = parseuri(opts.host).host;\n }\n installTimerFunctions(this, opts);\n this.secure =\n null != opts.secure\n ? opts.secure\n : typeof location !== \"undefined\" && \"https:\" === location.protocol;\n if (opts.hostname && !opts.port) {\n // if no port is specified manually, use the protocol default\n opts.port = this.secure ? \"443\" : \"80\";\n }\n this.hostname =\n opts.hostname ||\n (typeof location !== \"undefined\" ? location.hostname : \"localhost\");\n this.port =\n opts.port ||\n (typeof location !== \"undefined\" && location.port\n ? location.port\n : this.secure\n ? \"443\"\n : \"80\");\n this.transports = opts.transports || [\"polling\", \"websocket\"];\n this.readyState = \"\";\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 rejectUnauthorized: true,\n perMessageDeflate: {\n threshold: 1024\n },\n transportOptions: {},\n closeOnBeforeunload: true\n }, opts);\n this.opts.path = this.opts.path.replace(/\\/$/, \"\") + \"/\";\n if (typeof this.opts.query === \"string\") {\n this.opts.query = parseqs.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 addEventListener(\"beforeunload\", () => {\n if (this.transport) {\n // silently close the transport\n this.transport.removeAllListeners();\n this.transport.close();\n }\n }, false);\n }\n if (this.hostname !== \"localhost\") {\n this.offlineEventListener = () => {\n this.onClose(\"transport close\");\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} transport name\n * @return {Transport}\n * @api private\n */\n createTransport(name) {\n const query = clone(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 * @api 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 * @api 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\", () => {\n this.onClose(\"transport close\");\n });\n }\n /**\n * Probes a transport.\n *\n * @param {String} transport name\n * @api private\n */\n probe(name) {\n let transport = this.createTransport(name);\n let failed = false;\n Socket.priorWebsocketSuccess = false;\n const onTransportOpen = () => {\n if (failed)\n return;\n transport.send([{ type: \"ping\", data: \"probe\" }]);\n transport.once(\"packet\", msg => {\n if (failed)\n return;\n if (\"pong\" === msg.type && \"probe\" === msg.data) {\n this.upgrading = true;\n this.emitReserved(\"upgrading\", transport);\n if (!transport)\n return;\n Socket.priorWebsocketSuccess = \"websocket\" === transport.name;\n this.transport.pause(() => {\n if (failed)\n return;\n if (\"closed\" === this.readyState)\n return;\n cleanup();\n this.setTransport(transport);\n transport.send([{ type: \"upgrade\" }]);\n this.emitReserved(\"upgrade\", transport);\n transport = null;\n this.upgrading = false;\n this.flush();\n });\n }\n else {\n const err = new Error(\"probe error\");\n // @ts-ignore\n err.transport = transport.name;\n this.emitReserved(\"upgradeError\", err);\n }\n });\n };\n function freezeTransport() {\n if (failed)\n return;\n // Any callback called by transport should be ignored since now\n failed = true;\n cleanup();\n transport.close();\n transport = null;\n }\n // Handle any error that happens while probing\n const onerror = err => {\n const error = new Error(\"probe error: \" + err);\n // @ts-ignore\n error.transport = transport.name;\n freezeTransport();\n this.emitReserved(\"upgradeError\", error);\n };\n function onTransportClose() {\n onerror(\"transport closed\");\n }\n // When the socket is closed while we're probing\n function onclose() {\n onerror(\"socket closed\");\n }\n // When the socket is upgraded while we're probing\n function onupgrade(to) {\n if (transport && to.name !== transport.name) {\n freezeTransport();\n }\n }\n // Remove all listeners on the transport and on self\n const cleanup = () => {\n transport.removeListener(\"open\", onTransportOpen);\n transport.removeListener(\"error\", onerror);\n transport.removeListener(\"close\", onTransportClose);\n this.off(\"close\", onclose);\n this.off(\"upgrading\", onupgrade);\n };\n transport.once(\"open\", onTransportOpen);\n transport.once(\"error\", onerror);\n transport.once(\"close\", onTransportClose);\n this.once(\"close\", onclose);\n this.once(\"upgrading\", onupgrade);\n transport.open();\n }\n /**\n * Called when connection is deemed open.\n *\n * @api 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 &&\n this.opts.upgrade &&\n this.transport.pause) {\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 * @api 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 * @api 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.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 * @api 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 * @api 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 * @api private\n */\n flush() {\n if (\"closed\" !== this.readyState &&\n this.transport.writable &&\n !this.upgrading &&\n this.writeBuffer.length) {\n this.transport.send(this.writeBuffer);\n // keep track of current length of writeBuffer\n // splice writeBuffer and callbackBuffer on `drain`\n this.prevBufferLen = this.writeBuffer.length;\n this.emitReserved(\"flush\");\n }\n }\n /**\n * Sends a message.\n *\n * @param {String} message.\n * @param {Function} callback function.\n * @param {Object} options.\n * @return {Socket} for chaining.\n * @api public\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} packet type.\n * @param {String} data.\n * @param {Object} options.\n * @param {Function} callback function.\n * @api 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 * @api public\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 * @api 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 * @api private\n */\n onClose(reason, desc) {\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(\"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, desc);\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} server upgrades\n * @api private\n *\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;\nfunction clone(obj) {\n const o = {};\n for (let i in obj) {\n if (obj.hasOwnProperty(i)) {\n o[i] = obj[i];\n }\n }\n return o;\n}\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\";\n"],"names":["hasCorsModule","XMLHttpRequest","err","self","window","Function","opts","xdomain","hasCORS","e","globalThis","concat","join","pick","obj","attr","reduce","acc","k","hasOwnProperty","NATIVE_SET_TIMEOUT","setTimeout","NATIVE_CLEAR_TIMEOUT","clearTimeout","installTimerFunctions","useNativeTimers","setTimeoutFn","bind","clearTimeoutFn","Emitter","key","prototype","mixin","on","addEventListener","event","fn","this","_callbacks","push","once","off","apply","arguments","removeListener","removeAllListeners","removeEventListener","length","cb","callbacks","i","splice","emit","args","Array","len","slice","emitReserved","listeners","hasListeners","PACKET_TYPES","Object","create","PACKET_TYPES_REVERSE","keys","forEach","ERROR_PACKET","type","data","withNativeBlob","Blob","toString","call","withNativeArrayBuffer","ArrayBuffer","encodePacket","supportsBinary","callback","encodeBlobAsBase64","isView","buffer","fileReader","FileReader","onload","content","result","split","readAsDataURL","chars","lookup","Uint8Array","charCodeAt","decodePacket","encodedPacket","binaryType","mapBinary","charAt","decodeBase64Packet","substring","decoded","base64","encoded1","encoded2","encoded3","encoded4","bufferLength","p","arraybuffer","bytes","decode","SEPARATOR","String","fromCharCode","Transport","constructor","super","writable","query","readyState","socket","onError","msg","desc","Error","description","open","doOpen","close","doClose","onClose","send","packets","write","onOpen","onData","packet","onPacket","prev","alphabet","map","seed","encode","num","encoded","Math","floor","yeast","now","Date","str","yeast_1","encodeURIComponent","qs","qry","pairs","l","pair","decodeURIComponent","Polling","polling","name","poll","pause","onPause","total","doPoll","encodedPayload","encodedPackets","decodedPacket","decodePayload","count","encodePayload","doWrite","uri","schema","secure","port","timestampRequests","timestampParam","sid","b64","Number","encodedQuery","parseqs","hostname","indexOf","path","empty","hasXHR2","responseType","Request","method","async","undefined","xd","xscheme","xs","xhr","extraHeaders","setDisableHeaderCheck","setRequestHeader","withCredentials","requestTimeout","timeout","onreadystatechange","status","onLoad","document","index","requestsCount","requests","onSuccess","cleanup","fromError","abort","responseText","attachEvent","unloadHandler","nextTick","Promise","resolve","then","WebSocket","MozWebSocket","isReactNative","navigator","product","toLowerCase","WS","forceBase64","check","protocols","headers","ws","addEventListeners","onopen","autoUnref","_socket","unref","onclose","onmessage","ev","onerror","lastPacket","transports","websocket","location","isSSL","protocol","request","assign","req","pollXhr","re","parts","parseuri","src","b","replace","m","exec","source","host","authority","ipv6uri","pathNames","regx","names","substr","queryKey","$0","$1","$2","Socket","writeBuffer","prevBufferLen","agent","upgrade","rememberUpgrade","rejectUnauthorized","perMessageDeflate","threshold","transportOptions","closeOnBeforeunload","id","upgrades","pingInterval","pingTimeout","pingTimeoutTimer","transport","offlineEventListener","createTransport","o","clone","EIO","priorWebsocketSuccess","shift","setTransport","onDrain","probe","failed","onTransportOpen","upgrading","flush","freezeTransport","error","onTransportClose","onupgrade","to","onHandshake","JSON","parse","resetPingTimeout","sendPacket","code","filterUpgrades","options","compress","cleanupAndClose","waitForUpgrade","reason","filteredUpgrades","j"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"engine.io.esm.min.js","sources":["../node_modules/engine.io-parser/build/esm/commons.js","../node_modules/engine.io-parser/build/esm/encodePacket.browser.js","../node_modules/@socket.io/base64-arraybuffer/dist/base64-arraybuffer.es5.js","../node_modules/engine.io-parser/build/esm/decodePacket.browser.js","../node_modules/engine.io-parser/build/esm/index.js","../node_modules/@socket.io/component-emitter/index.mjs","../build/esm/globalThis.browser.js","../build/esm/util.js","../build/esm/transport.js","../build/esm/contrib/yeast.js","../build/esm/contrib/parseqs.js","../build/esm/contrib/has-cors.js","../build/esm/transports/xmlhttprequest.browser.js","../build/esm/transports/polling.js","../build/esm/transports/websocket-constructor.browser.js","../build/esm/transports/websocket.js","../build/esm/transports/index.js","../build/esm/contrib/parseuri.js","../build/esm/socket.js","../build/esm/index.js"],"sourcesContent":["const PACKET_TYPES = Object.create(null); // no Map = no polyfill\nPACKET_TYPES[\"open\"] = \"0\";\nPACKET_TYPES[\"close\"] = \"1\";\nPACKET_TYPES[\"ping\"] = \"2\";\nPACKET_TYPES[\"pong\"] = \"3\";\nPACKET_TYPES[\"message\"] = \"4\";\nPACKET_TYPES[\"upgrade\"] = \"5\";\nPACKET_TYPES[\"noop\"] = \"6\";\nconst PACKET_TYPES_REVERSE = Object.create(null);\nObject.keys(PACKET_TYPES).forEach(key => {\n PACKET_TYPES_REVERSE[PACKET_TYPES[key]] = key;\n});\nconst ERROR_PACKET = { type: \"error\", data: \"parser error\" };\nexport { PACKET_TYPES, PACKET_TYPES_REVERSE, ERROR_PACKET };\n","import { PACKET_TYPES } from \"./commons.js\";\nconst withNativeBlob = typeof Blob === \"function\" ||\n (typeof Blob !== \"undefined\" &&\n Object.prototype.toString.call(Blob) === \"[object BlobConstructor]\");\nconst withNativeArrayBuffer = typeof ArrayBuffer === \"function\";\n// ArrayBuffer.isView method is not defined in IE10\nconst isView = obj => {\n return typeof ArrayBuffer.isView === \"function\"\n ? ArrayBuffer.isView(obj)\n : obj && obj.buffer instanceof ArrayBuffer;\n};\nconst encodePacket = ({ type, data }, supportsBinary, callback) => {\n if (withNativeBlob && data instanceof Blob) {\n if (supportsBinary) {\n return callback(data);\n }\n else {\n return encodeBlobAsBase64(data, callback);\n }\n }\n else if (withNativeArrayBuffer &&\n (data instanceof ArrayBuffer || isView(data))) {\n if (supportsBinary) {\n return callback(data);\n }\n else {\n return encodeBlobAsBase64(new Blob([data]), callback);\n }\n }\n // plain string\n return callback(PACKET_TYPES[type] + (data || \"\"));\n};\nconst encodeBlobAsBase64 = (data, callback) => {\n const fileReader = new FileReader();\n fileReader.onload = function () {\n const content = fileReader.result.split(\",\")[1];\n callback(\"b\" + content);\n };\n return fileReader.readAsDataURL(data);\n};\nexport default encodePacket;\n","/*\n * base64-arraybuffer 1.0.1 \n * Copyright (c) 2022 Niklas von Hertzen \n * Released under MIT License\n */\nvar chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n// Use a lookup table to find the index.\nvar lookup = typeof Uint8Array === 'undefined' ? [] : new Uint8Array(256);\nfor (var i = 0; i < chars.length; i++) {\n lookup[chars.charCodeAt(i)] = i;\n}\nvar encode = function (arraybuffer) {\n var bytes = new Uint8Array(arraybuffer), i, len = bytes.length, base64 = '';\n for (i = 0; i < len; i += 3) {\n base64 += chars[bytes[i] >> 2];\n base64 += chars[((bytes[i] & 3) << 4) | (bytes[i + 1] >> 4)];\n base64 += chars[((bytes[i + 1] & 15) << 2) | (bytes[i + 2] >> 6)];\n base64 += chars[bytes[i + 2] & 63];\n }\n if (len % 3 === 2) {\n base64 = base64.substring(0, base64.length - 1) + '=';\n }\n else if (len % 3 === 1) {\n base64 = base64.substring(0, base64.length - 2) + '==';\n }\n return base64;\n};\nvar decode = function (base64) {\n var bufferLength = base64.length * 0.75, len = base64.length, i, p = 0, encoded1, encoded2, encoded3, encoded4;\n if (base64[base64.length - 1] === '=') {\n bufferLength--;\n if (base64[base64.length - 2] === '=') {\n bufferLength--;\n }\n }\n var arraybuffer = new ArrayBuffer(bufferLength), bytes = new Uint8Array(arraybuffer);\n for (i = 0; i < len; i += 4) {\n encoded1 = lookup[base64.charCodeAt(i)];\n encoded2 = lookup[base64.charCodeAt(i + 1)];\n encoded3 = lookup[base64.charCodeAt(i + 2)];\n encoded4 = lookup[base64.charCodeAt(i + 3)];\n bytes[p++] = (encoded1 << 2) | (encoded2 >> 4);\n bytes[p++] = ((encoded2 & 15) << 4) | (encoded3 >> 2);\n bytes[p++] = ((encoded3 & 3) << 6) | (encoded4 & 63);\n }\n return arraybuffer;\n};\n\nexport { decode, encode };\n//# sourceMappingURL=base64-arraybuffer.es5.js.map\n","import { ERROR_PACKET, PACKET_TYPES_REVERSE } from \"./commons.js\";\nimport { decode } from \"@socket.io/base64-arraybuffer\";\nconst withNativeArrayBuffer = typeof ArrayBuffer === \"function\";\nconst decodePacket = (encodedPacket, binaryType) => {\n if (typeof encodedPacket !== \"string\") {\n return {\n type: \"message\",\n data: mapBinary(encodedPacket, binaryType)\n };\n }\n const type = encodedPacket.charAt(0);\n if (type === \"b\") {\n return {\n type: \"message\",\n data: decodeBase64Packet(encodedPacket.substring(1), binaryType)\n };\n }\n const packetType = PACKET_TYPES_REVERSE[type];\n if (!packetType) {\n return ERROR_PACKET;\n }\n return encodedPacket.length > 1\n ? {\n type: PACKET_TYPES_REVERSE[type],\n data: encodedPacket.substring(1)\n }\n : {\n type: PACKET_TYPES_REVERSE[type]\n };\n};\nconst decodeBase64Packet = (data, binaryType) => {\n if (withNativeArrayBuffer) {\n const decoded = decode(data);\n return mapBinary(decoded, binaryType);\n }\n else {\n return { base64: true, data }; // fallback for old browsers\n }\n};\nconst mapBinary = (data, binaryType) => {\n switch (binaryType) {\n case \"blob\":\n return data instanceof ArrayBuffer ? new Blob([data]) : data;\n case \"arraybuffer\":\n default:\n return data; // assuming the data is already an ArrayBuffer\n }\n};\nexport default decodePacket;\n","import encodePacket from \"./encodePacket.js\";\nimport decodePacket from \"./decodePacket.js\";\nconst SEPARATOR = String.fromCharCode(30); // see https://en.wikipedia.org/wiki/Delimiter#ASCII_delimited_text\nconst encodePayload = (packets, callback) => {\n // some packets may be added to the array while encoding, so the initial length must be saved\n const length = packets.length;\n const encodedPackets = new Array(length);\n let count = 0;\n packets.forEach((packet, i) => {\n // force base64 encoding for binary packets\n encodePacket(packet, false, encodedPacket => {\n encodedPackets[i] = encodedPacket;\n if (++count === length) {\n callback(encodedPackets.join(SEPARATOR));\n }\n });\n });\n};\nconst decodePayload = (encodedPayload, binaryType) => {\n const encodedPackets = encodedPayload.split(SEPARATOR);\n const packets = [];\n for (let i = 0; i < encodedPackets.length; i++) {\n const decodedPacket = decodePacket(encodedPackets[i], binaryType);\n packets.push(decodedPacket);\n if (decodedPacket.type === \"error\") {\n break;\n }\n }\n return packets;\n};\nexport const protocol = 4;\nexport { encodePacket, encodePayload, decodePacket, decodePayload };\n","/**\n * Initialize a new `Emitter`.\n *\n * @api public\n */\n\nexport function Emitter(obj) {\n if (obj) return mixin(obj);\n}\n\n/**\n * Mixin the emitter properties.\n *\n * @param {Object} obj\n * @return {Object}\n * @api private\n */\n\nfunction mixin(obj) {\n for (var key in Emitter.prototype) {\n obj[key] = Emitter.prototype[key];\n }\n return obj;\n}\n\n/**\n * Listen on the given `event` with `fn`.\n *\n * @param {String} event\n * @param {Function} fn\n * @return {Emitter}\n * @api public\n */\n\nEmitter.prototype.on =\nEmitter.prototype.addEventListener = function(event, fn){\n this._callbacks = this._callbacks || {};\n (this._callbacks['$' + event] = this._callbacks['$' + event] || [])\n .push(fn);\n return this;\n};\n\n/**\n * Adds an `event` listener that will be invoked a single\n * time then automatically removed.\n *\n * @param {String} event\n * @param {Function} fn\n * @return {Emitter}\n * @api public\n */\n\nEmitter.prototype.once = function(event, fn){\n function on() {\n this.off(event, on);\n fn.apply(this, arguments);\n }\n\n on.fn = fn;\n this.on(event, on);\n return this;\n};\n\n/**\n * Remove the given callback for `event` or all\n * registered callbacks.\n *\n * @param {String} event\n * @param {Function} fn\n * @return {Emitter}\n * @api public\n */\n\nEmitter.prototype.off =\nEmitter.prototype.removeListener =\nEmitter.prototype.removeAllListeners =\nEmitter.prototype.removeEventListener = function(event, fn){\n this._callbacks = this._callbacks || {};\n\n // all\n if (0 == arguments.length) {\n this._callbacks = {};\n return this;\n }\n\n // specific event\n var callbacks = this._callbacks['$' + event];\n if (!callbacks) return this;\n\n // remove all handlers\n if (1 == arguments.length) {\n delete this._callbacks['$' + event];\n return this;\n }\n\n // remove specific handler\n var cb;\n for (var i = 0; i < callbacks.length; i++) {\n cb = callbacks[i];\n if (cb === fn || cb.fn === fn) {\n callbacks.splice(i, 1);\n break;\n }\n }\n\n // Remove event specific arrays for event types that no\n // one is subscribed for to avoid memory leak.\n if (callbacks.length === 0) {\n delete this._callbacks['$' + event];\n }\n\n return this;\n};\n\n/**\n * Emit `event` with the given args.\n *\n * @param {String} event\n * @param {Mixed} ...\n * @return {Emitter}\n */\n\nEmitter.prototype.emit = function(event){\n this._callbacks = this._callbacks || {};\n\n var args = new Array(arguments.length - 1)\n , callbacks = this._callbacks['$' + event];\n\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n\n if (callbacks) {\n callbacks = callbacks.slice(0);\n for (var i = 0, len = callbacks.length; i < len; ++i) {\n callbacks[i].apply(this, args);\n }\n }\n\n return this;\n};\n\n// alias used for reserved events (protected method)\nEmitter.prototype.emitReserved = Emitter.prototype.emit;\n\n/**\n * Return array of callbacks for `event`.\n *\n * @param {String} event\n * @return {Array}\n * @api public\n */\n\nEmitter.prototype.listeners = function(event){\n this._callbacks = this._callbacks || {};\n return this._callbacks['$' + event] || [];\n};\n\n/**\n * Check if this emitter has `event` handlers.\n *\n * @param {String} event\n * @return {Boolean}\n * @api public\n */\n\nEmitter.prototype.hasListeners = function(event){\n return !! this.listeners(event).length;\n};\n","export default (() => {\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 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 = setTimeout;\nconst NATIVE_CLEAR_TIMEOUT = 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 = setTimeout.bind(globalThis);\n obj.clearTimeoutFn = clearTimeout.bind(globalThis);\n }\n}\n// base64 encoded buffers are about 33% bigger (https://en.wikipedia.org/wiki/Base64)\nconst BASE64_OVERHEAD = 1.33;\n// we could also have used `new Blob([obj]).size`, but it isn't supported in IE9\nexport function byteLength(obj) {\n if (typeof obj === \"string\") {\n return utf8Length(obj);\n }\n // arraybuffer or blob\n return Math.ceil((obj.byteLength || obj.size) * BASE64_OVERHEAD);\n}\nfunction utf8Length(str) {\n let c = 0, length = 0;\n for (let i = 0, l = str.length; i < l; i++) {\n c = str.charCodeAt(i);\n if (c < 0x80) {\n length += 1;\n }\n else if (c < 0x800) {\n length += 2;\n }\n else if (c < 0xd800 || c >= 0xe000) {\n length += 3;\n }\n else {\n i++;\n length += 4;\n }\n }\n return length;\n}\n","import { decodePacket } from \"engine.io-parser\";\nimport { Emitter } from \"@socket.io/component-emitter\";\nimport { installTimerFunctions } from \"./util.js\";\nclass TransportError extends Error {\n constructor(reason, description, context) {\n super(reason);\n this.description = description;\n this.context = context;\n this.type = \"TransportError\";\n }\n}\nexport class Transport extends Emitter {\n /**\n * Transport abstract constructor.\n *\n * @param {Object} options.\n * @api private\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.readyState = \"\";\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 * @api 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 * @api public\n */\n open() {\n if (\"closed\" === this.readyState || \"\" === this.readyState) {\n this.readyState = \"opening\";\n this.doOpen();\n }\n return this;\n }\n /**\n * Closes the transport.\n *\n * @api public\n */\n close() {\n if (\"opening\" === this.readyState || \"open\" === this.readyState) {\n this.doClose();\n this.onClose();\n }\n return this;\n }\n /**\n * Sends multiple packets.\n *\n * @param {Array} packets\n * @api public\n */\n send(packets) {\n if (\"open\" === this.readyState) {\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 * @api 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 * @api 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 * @api protected\n */\n onPacket(packet) {\n super.emitReserved(\"packet\", packet);\n }\n /**\n * Called upon close.\n *\n * @api protected\n */\n onClose(details) {\n this.readyState = \"closed\";\n super.emitReserved(\"close\", details);\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 globalThis from \"../globalThis.js\";\nexport default function (opts) {\n const xdomain = opts.xdomain;\n // XMLHttpRequest can be disabled on IE\n try {\n if (\"undefined\" !== typeof XMLHttpRequest && (!xdomain || hasCORS)) {\n return new XMLHttpRequest();\n }\n }\n catch (e) { }\n if (!xdomain) {\n try {\n return new globalThis[[\"Active\"].concat(\"Object\").join(\"X\")](\"Microsoft.XMLHTTP\");\n }\n catch (e) { }\n }\n}\n","import { Transport } from \"../transport.js\";\nimport { yeast } from \"../contrib/yeast.js\";\nimport { encode } from \"../contrib/parseqs.js\";\nimport { encodePayload, decodePayload } from \"engine.io-parser\";\nimport XMLHttpRequest from \"./xmlhttprequest.js\";\nimport { Emitter } from \"@socket.io/component-emitter\";\nimport { installTimerFunctions, pick } from \"../util.js\";\nimport 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 * @api public\n */\n constructor(opts) {\n super(opts);\n this.polling = false;\n if (typeof location !== \"undefined\") {\n const isSSL = \"https:\" === location.protocol;\n let port = location.port;\n // some user agents have empty `location.port`\n if (!port) {\n port = isSSL ? \"443\" : \"80\";\n }\n this.xd =\n (typeof location !== \"undefined\" &&\n opts.hostname !== location.hostname) ||\n port !== opts.port;\n this.xs = opts.secure !== isSSL;\n }\n /**\n * XHR supports binary\n */\n const forceBase64 = opts && opts.forceBase64;\n this.supportsBinary = hasXHR2 && !forceBase64;\n }\n /**\n * Transport name.\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 * @api private\n */\n doOpen() {\n this.poll();\n }\n /**\n * Pauses polling.\n *\n * @param {Function} callback upon buffers are flushed and transport is paused\n * @api private\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 * @api public\n */\n poll() {\n this.polling = true;\n this.doPoll();\n this.emitReserved(\"poll\");\n }\n /**\n * Overloads onData to detect payloads.\n *\n * @api private\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 * @api private\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} data packets\n * @param {Function} drain callback\n * @api private\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 * @api private\n */\n uri() {\n let query = this.query || {};\n const schema = this.opts.secure ? \"https\" : \"http\";\n let port = \"\";\n // cache busting is forced\n if (false !== this.opts.timestampRequests) {\n query[this.opts.timestampParam] = yeast();\n }\n if (!this.supportsBinary && !query.sid) {\n query.b64 = 1;\n }\n // avoid port if default for schema\n if (this.opts.port &&\n ((\"https\" === schema && Number(this.opts.port) !== 443) ||\n (\"http\" === schema && Number(this.opts.port) !== 80))) {\n port = \":\" + this.opts.port;\n }\n const encodedQuery = encode(query);\n const ipv6 = this.opts.hostname.indexOf(\":\") !== -1;\n return (schema +\n \"://\" +\n (ipv6 ? \"[\" + this.opts.hostname + \"]\" : this.opts.hostname) +\n port +\n this.opts.path +\n (encodedQuery.length ? \"?\" + encodedQuery : \"\"));\n }\n /**\n * Creates a request.\n *\n * @param {String} method\n * @api private\n */\n request(opts = {}) {\n Object.assign(opts, { xd: this.xd, xs: this.xs }, this.opts);\n return new Request(this.uri(), opts);\n }\n /**\n * Sends data.\n *\n * @param {String} data to send.\n * @param {Function} called upon flush.\n * @api 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 * @api 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 * @api public\n */\n constructor(uri, opts) {\n super();\n installTimerFunctions(this, opts);\n this.opts = opts;\n this.method = opts.method || \"GET\";\n this.uri = uri;\n this.async = false !== opts.async;\n this.data = undefined !== opts.data ? opts.data : null;\n this.create();\n }\n /**\n * Creates the XHR object and sends the request.\n *\n * @api private\n */\n create() {\n const opts = pick(this.opts, \"agent\", \"pfx\", \"key\", \"passphrase\", \"cert\", \"ca\", \"ciphers\", \"rejectUnauthorized\", \"autoUnref\");\n opts.xdomain = !!this.opts.xd;\n opts.xscheme = !!this.opts.xs;\n const xhr = (this.xhr = new XMLHttpRequest(opts));\n try {\n xhr.open(this.method, this.uri, this.async);\n try {\n if (this.opts.extraHeaders) {\n xhr.setDisableHeaderCheck && xhr.setDisableHeaderCheck(true);\n for (let i in this.opts.extraHeaders) {\n if (this.opts.extraHeaders.hasOwnProperty(i)) {\n xhr.setRequestHeader(i, this.opts.extraHeaders[i]);\n }\n }\n }\n }\n catch (e) { }\n if (\"POST\" === this.method) {\n try {\n xhr.setRequestHeader(\"Content-type\", \"text/plain;charset=UTF-8\");\n }\n catch (e) { }\n }\n try {\n xhr.setRequestHeader(\"Accept\", \"*/*\");\n }\n catch (e) { }\n // ie6 check\n if (\"withCredentials\" in xhr) {\n xhr.withCredentials = this.opts.withCredentials;\n }\n if (this.opts.requestTimeout) {\n xhr.timeout = this.opts.requestTimeout;\n }\n xhr.onreadystatechange = () => {\n if (4 !== xhr.readyState)\n return;\n if (200 === xhr.status || 1223 === xhr.status) {\n this.onLoad();\n }\n else {\n // make sure the `error` event handler that's user-set\n // does not throw in the same tick and gets caught here\n this.setTimeoutFn(() => {\n this.onError(typeof xhr.status === \"number\" ? xhr.status : 0);\n }, 0);\n }\n };\n xhr.send(this.data);\n }\n catch (e) {\n // Need to defer since .create() is called directly from the constructor\n // and thus the 'error' event can only be only bound *after* this exception\n // occurs. Therefore, also, we cannot throw here at all.\n this.setTimeoutFn(() => {\n this.onError(e);\n }, 0);\n return;\n }\n if (typeof document !== \"undefined\") {\n this.index = Request.requestsCount++;\n Request.requests[this.index] = this;\n }\n }\n /**\n * Called upon error.\n *\n * @api private\n */\n onError(err) {\n this.emitReserved(\"error\", err, this.xhr);\n this.cleanup(true);\n }\n /**\n * Cleans up house.\n *\n * @api 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 * @api 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 * @api public\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 globalThis from \"../globalThis.js\";\nexport const nextTick = (() => {\n const isPromiseAvailable = typeof Promise === \"function\" && typeof Promise.resolve === \"function\";\n if (isPromiseAvailable) {\n return cb => Promise.resolve().then(cb);\n }\n else {\n return (cb, setTimeoutFn) => setTimeoutFn(cb, 0);\n }\n})();\nexport const WebSocket = globalThis.WebSocket || globalThis.MozWebSocket;\nexport const usingBrowserWebSocket = true;\nexport const defaultBinaryType = \"arraybuffer\";\n","import { Transport } from \"../transport.js\";\nimport { encode } from \"../contrib/parseqs.js\";\nimport { yeast } from \"../contrib/yeast.js\";\nimport { pick } from \"../util.js\";\nimport { defaultBinaryType, nextTick, usingBrowserWebSocket, WebSocket } from \"./websocket-constructor.js\";\nimport { encodePacket } from \"engine.io-parser\";\n// detect ReactNative environment\nconst isReactNative = typeof navigator !== \"undefined\" &&\n typeof navigator.product === \"string\" &&\n navigator.product.toLowerCase() === \"reactnative\";\nexport class WS extends Transport {\n /**\n * WebSocket transport constructor.\n *\n * @api {Object} connection options\n * @api public\n */\n constructor(opts) {\n super(opts);\n this.supportsBinary = !opts.forceBase64;\n }\n /**\n * Transport name.\n *\n * @api public\n */\n get name() {\n return \"websocket\";\n }\n /**\n * Opens socket.\n *\n * @api private\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 * @api 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 /**\n * Writes data to socket.\n *\n * @param {Array} array of packets.\n * @api private\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 /**\n * Closes socket.\n *\n * @api private\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 * @api private\n */\n uri() {\n let query = this.query || {};\n const schema = this.opts.secure ? \"wss\" : \"ws\";\n let port = \"\";\n // avoid port if default for schema\n if (this.opts.port &&\n ((\"wss\" === schema && Number(this.opts.port) !== 443) ||\n (\"ws\" === schema && Number(this.opts.port) !== 80))) {\n port = \":\" + this.opts.port;\n }\n // append timestamp to URI\n if (this.opts.timestampRequests) {\n query[this.opts.timestampParam] = yeast();\n }\n // communicate binary support capabilities\n if (!this.supportsBinary) {\n query.b64 = 1;\n }\n const encodedQuery = encode(query);\n const ipv6 = this.opts.hostname.indexOf(\":\") !== -1;\n return (schema +\n \"://\" +\n (ipv6 ? \"[\" + this.opts.hostname + \"]\" : this.opts.hostname) +\n port +\n this.opts.path +\n (encodedQuery.length ? \"?\" + encodedQuery : \"\"));\n }\n /**\n * Feature detection for WebSocket.\n *\n * @return {Boolean} whether this transport is available.\n * @api public\n */\n check() {\n return (!!WebSocket &&\n !(\"__initialize\" in WebSocket && this.name === WS.prototype.name));\n }\n}\n","import { Polling } from \"./polling.js\";\nimport { WS } from \"./websocket.js\";\nexport const transports = {\n websocket: WS,\n polling: Polling\n};\n","// imported from https://github.com/galkn/parseuri\n/**\n * Parses an URI\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.substr(0, 1) == '/' || path.length === 0) {\n names.splice(0, 1);\n }\n if (path.substr(path.length - 1, 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 or options\n * @param {Object} opts - options\n * @api public\n */\n constructor(uri, opts = {}) {\n super();\n if (uri && \"object\" === typeof uri) {\n opts = uri;\n uri = null;\n }\n if (uri) {\n uri = parse(uri);\n opts.hostname = uri.host;\n opts.secure = uri.protocol === \"https\" || uri.protocol === \"wss\";\n opts.port = uri.port;\n if (uri.query)\n opts.query = uri.query;\n }\n else if (opts.host) {\n opts.hostname = parse(opts.host).host;\n }\n installTimerFunctions(this, opts);\n this.secure =\n null != opts.secure\n ? opts.secure\n : typeof location !== \"undefined\" && \"https:\" === location.protocol;\n if (opts.hostname && !opts.port) {\n // if no port is specified manually, use the protocol default\n opts.port = this.secure ? \"443\" : \"80\";\n }\n this.hostname =\n opts.hostname ||\n (typeof location !== \"undefined\" ? location.hostname : \"localhost\");\n this.port =\n opts.port ||\n (typeof location !== \"undefined\" && location.port\n ? location.port\n : this.secure\n ? \"443\"\n : \"80\");\n this.transports = opts.transports || [\"polling\", \"websocket\"];\n this.readyState = \"\";\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 rejectUnauthorized: true,\n perMessageDeflate: {\n threshold: 1024\n },\n transportOptions: {},\n closeOnBeforeunload: true\n }, opts);\n this.opts.path = this.opts.path.replace(/\\/$/, \"\") + \"/\";\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 addEventListener(\"beforeunload\", () => {\n if (this.transport) {\n // silently close the transport\n this.transport.removeAllListeners();\n this.transport.close();\n }\n }, 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} transport name\n * @return {Transport}\n * @api 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 * @api 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 * @api 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} transport name\n * @api private\n */\n probe(name) {\n let transport = this.createTransport(name);\n let failed = false;\n Socket.priorWebsocketSuccess = false;\n const onTransportOpen = () => {\n if (failed)\n return;\n transport.send([{ type: \"ping\", data: \"probe\" }]);\n transport.once(\"packet\", msg => {\n if (failed)\n return;\n if (\"pong\" === msg.type && \"probe\" === msg.data) {\n this.upgrading = true;\n this.emitReserved(\"upgrading\", transport);\n if (!transport)\n return;\n Socket.priorWebsocketSuccess = \"websocket\" === transport.name;\n this.transport.pause(() => {\n if (failed)\n return;\n if (\"closed\" === this.readyState)\n return;\n cleanup();\n this.setTransport(transport);\n transport.send([{ type: \"upgrade\" }]);\n this.emitReserved(\"upgrade\", transport);\n transport = null;\n this.upgrading = false;\n this.flush();\n });\n }\n else {\n const err = new Error(\"probe error\");\n // @ts-ignore\n err.transport = transport.name;\n this.emitReserved(\"upgradeError\", err);\n }\n });\n };\n function freezeTransport() {\n if (failed)\n return;\n // Any callback called by transport should be ignored since now\n failed = true;\n cleanup();\n transport.close();\n transport = null;\n }\n // Handle any error that happens while probing\n const onerror = err => {\n const error = new Error(\"probe error: \" + err);\n // @ts-ignore\n error.transport = transport.name;\n freezeTransport();\n this.emitReserved(\"upgradeError\", error);\n };\n function onTransportClose() {\n onerror(\"transport closed\");\n }\n // When the socket is closed while we're probing\n function onclose() {\n onerror(\"socket closed\");\n }\n // When the socket is upgraded while we're probing\n function onupgrade(to) {\n if (transport && to.name !== transport.name) {\n freezeTransport();\n }\n }\n // Remove all listeners on the transport and on self\n const cleanup = () => {\n transport.removeListener(\"open\", onTransportOpen);\n transport.removeListener(\"error\", onerror);\n transport.removeListener(\"close\", onTransportClose);\n this.off(\"close\", onclose);\n this.off(\"upgrading\", onupgrade);\n };\n transport.once(\"open\", onTransportOpen);\n transport.once(\"error\", onerror);\n transport.once(\"close\", onTransportClose);\n this.once(\"close\", onclose);\n this.once(\"upgrading\", onupgrade);\n transport.open();\n }\n /**\n * Called when connection is deemed open.\n *\n * @api 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 &&\n this.opts.upgrade &&\n this.transport.pause) {\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 * @api 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 * @api 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 * @api 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 * @api 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 * @api 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} message.\n * @param {Function} callback function.\n * @param {Object} options.\n * @return {Socket} for chaining.\n * @api public\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} packet type.\n * @param {String} data.\n * @param {Object} options.\n * @param {Function} callback function.\n * @api 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 * @api public\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 * @api 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 * @api 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(\"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} server upgrades\n * @api private\n *\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\";\n"],"names":["PACKET_TYPES","Object","create","PACKET_TYPES_REVERSE","keys","forEach","key","ERROR_PACKET","type","data","withNativeBlob","Blob","prototype","toString","call","withNativeArrayBuffer","ArrayBuffer","encodePacket","supportsBinary","callback","encodeBlobAsBase64","obj","isView","buffer","fileReader","FileReader","onload","content","result","split","readAsDataURL","chars","lookup","Uint8Array","i","length","charCodeAt","decodePacket","encodedPacket","binaryType","mapBinary","charAt","decodeBase64Packet","substring","decoded","base64","encoded1","encoded2","encoded3","encoded4","bufferLength","len","p","arraybuffer","bytes","decode","SEPARATOR","String","fromCharCode","Emitter","mixin","on","addEventListener","event","fn","this","_callbacks","push","once","off","apply","arguments","removeListener","removeAllListeners","removeEventListener","cb","callbacks","splice","emit","args","Array","slice","emitReserved","listeners","hasListeners","self","window","Function","pick","attr","reduce","acc","k","hasOwnProperty","NATIVE_SET_TIMEOUT","setTimeout","NATIVE_CLEAR_TIMEOUT","clearTimeout","installTimerFunctions","opts","useNativeTimers","setTimeoutFn","bind","globalThis","clearTimeoutFn","TransportError","Error","constructor","reason","description","context","super","Transport","writable","query","readyState","socket","onError","open","doOpen","close","doClose","onClose","send","packets","write","onOpen","onData","packet","onPacket","details","alphabet","map","prev","seed","encode","num","encoded","Math","floor","yeast","now","Date","str","encodeURIComponent","value","XMLHttpRequest","err","hasCORS","xdomain","e","concat","join","empty","hasXHR2","responseType","Request","uri","method","async","undefined","xd","xscheme","xs","xhr","extraHeaders","setDisableHeaderCheck","setRequestHeader","withCredentials","requestTimeout","timeout","onreadystatechange","status","onLoad","document","index","requestsCount","requests","cleanup","fromError","abort","responseText","attachEvent","unloadHandler","nextTick","Promise","resolve","then","WebSocket","MozWebSocket","isReactNative","navigator","product","toLowerCase","WS","forceBase64","name","check","protocols","headers","ws","addEventListeners","onopen","autoUnref","_socket","unref","onclose","closeEvent","onmessage","ev","onerror","lastPacket","schema","secure","port","Number","timestampRequests","timestampParam","b64","encodedQuery","hostname","indexOf","path","transports","websocket","polling","location","isSSL","protocol","poll","pause","onPause","total","doPoll","encodedPayload","encodedPackets","decodedPacket","decodePayload","count","encodePayload","doWrite","sid","request","assign","req","xhrStatus","pollXhr","re","parts","parse","src","b","replace","m","exec","source","host","authority","ipv6uri","pathNames","regx","names","substr","queryKey","$0","$1","$2","Socket","writeBuffer","prevBufferLen","agent","upgrade","rememberUpgrade","rejectUnauthorized","perMessageDeflate","threshold","transportOptions","closeOnBeforeunload","qs","qry","pairs","l","pair","decodeURIComponent","id","upgrades","pingInterval","pingTimeout","pingTimeoutTimer","transport","offlineEventListener","createTransport","EIO","priorWebsocketSuccess","shift","setTransport","onDrain","probe","failed","onTransportOpen","msg","upgrading","flush","freezeTransport","error","onTransportClose","onupgrade","to","onHandshake","JSON","resetPingTimeout","sendPacket","code","filterUpgrades","maxPayload","getWritablePackets","payloadSize","c","utf8Length","ceil","byteLength","size","options","compress","cleanupAndClose","waitForUpgrade","filteredUpgrades","j"],"mappings":"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"} \ No newline at end of file diff --git a/dist/engine.io.js b/dist/engine.io.js index 203ab292..7d76d133 100644 --- a/dist/engine.io.js +++ b/dist/engine.io.js @@ -1,6 +1,6 @@ /*! - * Engine.IO v6.1.1 - * (c) 2014-2021 Guillermo Rauch + * Engine.IO v6.2.0 + * (c) 2014-2022 Guillermo Rauch * Released under the MIT License. */ (function (global, factory) { @@ -109,6 +109,61 @@ } } + function _construct(Parent, args, Class) { + if (_isNativeReflectConstruct()) { + _construct = Reflect.construct; + } else { + _construct = function _construct(Parent, args, Class) { + var a = [null]; + a.push.apply(a, args); + var Constructor = Function.bind.apply(Parent, a); + var instance = new Constructor(); + if (Class) _setPrototypeOf(instance, Class.prototype); + 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, + enumerable: false, + writable: true, + configurable: true + } + }); + 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"); @@ -174,90 +229,210 @@ return _get(target, property, receiver || target); } - var hasCors = {exports: {}}; + var PACKET_TYPES = Object.create(null); // no Map = no polyfill - /** - * Module exports. - * - * Logic borrowed from Modernizr: - * - * - https://github.com/Modernizr/Modernizr/blob/master/feature-detects/cors.js - */ + PACKET_TYPES["open"] = "0"; + PACKET_TYPES["close"] = "1"; + PACKET_TYPES["ping"] = "2"; + PACKET_TYPES["pong"] = "3"; + PACKET_TYPES["message"] = "4"; + PACKET_TYPES["upgrade"] = "5"; + PACKET_TYPES["noop"] = "6"; + var PACKET_TYPES_REVERSE = Object.create(null); + Object.keys(PACKET_TYPES).forEach(function (key) { + PACKET_TYPES_REVERSE[PACKET_TYPES[key]] = key; + }); + var ERROR_PACKET = { + type: "error", + data: "parser error" + }; - try { - hasCors.exports = typeof XMLHttpRequest !== 'undefined' && 'withCredentials' in new XMLHttpRequest(); - } catch (err) { - // if XMLHttp support is disabled in IE then it will throw - // when trying to create - hasCors.exports = false; - } + var withNativeBlob = typeof Blob === "function" || typeof Blob !== "undefined" && Object.prototype.toString.call(Blob) === "[object BlobConstructor]"; + var withNativeArrayBuffer$1 = typeof ArrayBuffer === "function"; // ArrayBuffer.isView method is not defined in IE10 - var hasCORS = hasCors.exports; + var isView = function isView(obj) { + return typeof ArrayBuffer.isView === "function" ? ArrayBuffer.isView(obj) : obj && obj.buffer instanceof ArrayBuffer; + }; - var globalThis = (function () { - if (typeof self !== "undefined") { - return self; - } else if (typeof window !== "undefined") { - return window; - } else { - return Function("return this")(); - } - })(); + var encodePacket = function encodePacket(_ref, supportsBinary, callback) { + var type = _ref.type, + data = _ref.data; - // browser shim for xmlhttprequest module - function XMLHttpRequest$1 (opts) { - var xdomain = opts.xdomain; // XMLHttpRequest can be disabled on IE - - try { - if ("undefined" !== typeof XMLHttpRequest && (!xdomain || hasCORS)) { - return new XMLHttpRequest(); + if (withNativeBlob && data instanceof Blob) { + if (supportsBinary) { + return callback(data); + } else { + return encodeBlobAsBase64(data, callback); } - } catch (e) {} - - if (!xdomain) { - try { - return new globalThis[["Active"].concat("Object").join("X")]("Microsoft.XMLHTTP"); - } catch (e) {} - } - } - - function pick(obj) { - 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]; + } else if (withNativeArrayBuffer$1 && (data instanceof ArrayBuffer || isView(data))) { + if (supportsBinary) { + return callback(data); + } else { + return encodeBlobAsBase64(new Blob([data]), callback); } + } // plain string - return acc; - }, {}); - } // Keep a reference to the real timeout functions so they can be used when overridden - var NATIVE_SET_TIMEOUT = setTimeout; - var NATIVE_CLEAR_TIMEOUT = clearTimeout; - function installTimerFunctions(obj, opts) { - if (opts.useNativeTimers) { - obj.setTimeoutFn = NATIVE_SET_TIMEOUT.bind(globalThis); - obj.clearTimeoutFn = NATIVE_CLEAR_TIMEOUT.bind(globalThis); - } else { - obj.setTimeoutFn = setTimeout.bind(globalThis); - obj.clearTimeoutFn = clearTimeout.bind(globalThis); - } + 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); + }; + + /* + * base64-arraybuffer 1.0.1 + * Copyright (c) 2022 Niklas von Hertzen + * Released under MIT License + */ + var chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'; // Use a lookup table to find the index. + + var lookup = typeof Uint8Array === 'undefined' ? [] : new Uint8Array(256); + + for (var i$1 = 0; i$1 < chars.length; i$1++) { + lookup[chars.charCodeAt(i$1)] = i$1; } - /** - * Expose `Emitter`. - */ + var decode$1 = function decode(base64) { + var bufferLength = base64.length * 0.75, + 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); + + for (i = 0; i < len; i += 4) { + encoded1 = lookup[base64.charCodeAt(i)]; + encoded2 = lookup[base64.charCodeAt(i + 1)]; + encoded3 = lookup[base64.charCodeAt(i + 2)]; + encoded4 = lookup[base64.charCodeAt(i + 3)]; + bytes[p++] = encoded1 << 2 | encoded2 >> 4; + bytes[p++] = (encoded2 & 15) << 4 | encoded3 >> 2; + bytes[p++] = (encoded3 & 3) << 6 | encoded4 & 63; + } + + return arraybuffer; + }; + + var withNativeArrayBuffer = typeof ArrayBuffer === "function"; + + var decodePacket = function decodePacket(encodedPacket, binaryType) { + if (typeof encodedPacket !== "string") { + return { + type: "message", + 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) + } : { + type: PACKET_TYPES_REVERSE[type] + }; + }; + + var decodeBase64Packet = function decodeBase64Packet(data, binaryType) { + if (withNativeArrayBuffer) { + var decoded = decode$1(data); + return mapBinary(decoded, binaryType); + } else { + return { + base64: true, + data: data + }; // fallback for old browsers + } + }; + + var mapBinary = function mapBinary(data, binaryType) { + switch (binaryType) { + case "blob": + return data instanceof ArrayBuffer ? new Blob([data]) : data; + + case "arraybuffer": + default: + return data; + // assuming the data is already an ArrayBuffer + } + }; + + 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; + var encodedPackets = new Array(length); + var count = 0; + packets.forEach(function (packet, i) { + // force base64 encoding for binary packets + encodePacket(packet, false, function (encodedPacket) { + encodedPackets[i] = encodedPacket; + + if (++count === length) { + callback(encodedPackets.join(SEPARATOR)); + } + }); + }); + }; + + var decodePayload = function decodePayload(encodedPayload, binaryType) { + var encodedPackets = encodedPayload.split(SEPARATOR); + var packets = []; + + for (var i = 0; i < encodedPackets.length; i++) { + var decodedPacket = decodePacket(encodedPackets[i], binaryType); + packets.push(decodedPacket); + + if (decodedPacket.type === "error") { + break; + } + } + + return packets; + }; + + var protocol = 4; - var Emitter_1 = Emitter; /** * Initialize a new `Emitter`. * * @api public */ - function Emitter(obj) { if (obj) return mixin(obj); } @@ -269,7 +444,6 @@ * @api private */ - function mixin(obj) { for (var key in Emitter.prototype) { obj[key] = Emitter.prototype[key]; @@ -417,209 +591,99 @@ return !!this.listeners(event).length; }; - var PACKET_TYPES = Object.create(null); // no Map = no polyfill + var globalThis = (function () { + if (typeof self !== "undefined") { + return self; + } else if (typeof window !== "undefined") { + return window; + } else { + return Function("return this")(); + } + })(); - PACKET_TYPES["open"] = "0"; - PACKET_TYPES["close"] = "1"; - PACKET_TYPES["ping"] = "2"; - PACKET_TYPES["pong"] = "3"; - PACKET_TYPES["message"] = "4"; - PACKET_TYPES["upgrade"] = "5"; - PACKET_TYPES["noop"] = "6"; - var PACKET_TYPES_REVERSE = Object.create(null); - Object.keys(PACKET_TYPES).forEach(function (key) { - PACKET_TYPES_REVERSE[PACKET_TYPES[key]] = key; - }); - var ERROR_PACKET = { - type: "error", - data: "parser error" - }; + function pick(obj) { + for (var _len = arguments.length, attr = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { + attr[_key - 1] = arguments[_key]; + } - var withNativeBlob = typeof Blob === "function" || typeof Blob !== "undefined" && Object.prototype.toString.call(Blob) === "[object BlobConstructor]"; - var withNativeArrayBuffer$1 = typeof ArrayBuffer === "function"; // ArrayBuffer.isView method is not defined in IE10 - - var isView = function isView(obj) { - return typeof ArrayBuffer.isView === "function" ? ArrayBuffer.isView(obj) : obj && obj.buffer instanceof ArrayBuffer; - }; - - var encodePacket = function encodePacket(_ref, supportsBinary, callback) { - var type = _ref.type, - data = _ref.data; - - if (withNativeBlob && data instanceof Blob) { - if (supportsBinary) { - return callback(data); - } else { - return encodeBlobAsBase64(data, callback); + return attr.reduce(function (acc, k) { + if (obj.hasOwnProperty(k)) { + acc[k] = obj[k]; } - } else if (withNativeArrayBuffer$1 && (data instanceof ArrayBuffer || isView(data))) { - if (supportsBinary) { - return callback(data); - } else { - return encodeBlobAsBase64(new Blob([data]), callback); - } - } // plain string + + return acc; + }, {}); + } // Keep a reference to the real timeout functions so they can be used when overridden + + var NATIVE_SET_TIMEOUT = setTimeout; + var NATIVE_CLEAR_TIMEOUT = clearTimeout; + function installTimerFunctions(obj, opts) { + if (opts.useNativeTimers) { + obj.setTimeoutFn = NATIVE_SET_TIMEOUT.bind(globalThis); + obj.clearTimeoutFn = NATIVE_CLEAR_TIMEOUT.bind(globalThis); + } else { + obj.setTimeoutFn = setTimeout.bind(globalThis); + obj.clearTimeoutFn = clearTimeout.bind(globalThis); + } + } // 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 - 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); - }; - - /* - * base64-arraybuffer 1.0.1 - * Copyright (c) 2021 Niklas von Hertzen - * Released under MIT License - */ - var chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'; // Use a lookup table to find the index. - - var lookup = typeof Uint8Array === 'undefined' ? [] : new Uint8Array(256); - - for (var i$1 = 0; i$1 < chars.length; i$1++) { - lookup[chars.charCodeAt(i$1)] = i$1; + return Math.ceil((obj.byteLength || obj.size) * BASE64_OVERHEAD); } - var decode$1 = function decode(base64) { - var bufferLength = base64.length * 0.75, - len = base64.length, - i, - p = 0, - encoded1, - encoded2, - encoded3, - encoded4; + function utf8Length(str) { + var c = 0, + length = 0; - if (base64[base64.length - 1] === '=') { - bufferLength--; + for (var i = 0, l = str.length; i < l; i++) { + c = str.charCodeAt(i); - if (base64[base64.length - 2] === '=') { - bufferLength--; + if (c < 0x80) { + length += 1; + } else if (c < 0x800) { + length += 2; + } else if (c < 0xd800 || c >= 0xe000) { + length += 3; + } else { + i++; + length += 4; } } - var arraybuffer = new ArrayBuffer(bufferLength), - bytes = new Uint8Array(arraybuffer); + return length; + } - for (i = 0; i < len; i += 4) { - encoded1 = lookup[base64.charCodeAt(i)]; - encoded2 = lookup[base64.charCodeAt(i + 1)]; - encoded3 = lookup[base64.charCodeAt(i + 2)]; - encoded4 = lookup[base64.charCodeAt(i + 3)]; - bytes[p++] = encoded1 << 2 | encoded2 >> 4; - bytes[p++] = (encoded2 & 15) << 4 | encoded3 >> 2; - bytes[p++] = (encoded3 & 3) << 6 | encoded4 & 63; + 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 arraybuffer; - }; - - var withNativeArrayBuffer = typeof ArrayBuffer === "function"; - - var decodePacket = function decodePacket(encodedPacket, binaryType) { - if (typeof encodedPacket !== "string") { - return { - type: "message", - 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) - } : { - type: PACKET_TYPES_REVERSE[type] - }; - }; - - var decodeBase64Packet = function decodeBase64Packet(data, binaryType) { - if (withNativeArrayBuffer) { - var decoded = decode$1(data); - return mapBinary(decoded, binaryType); - } else { - return { - base64: true, - data: data - }; // fallback for old browsers - } - }; - - var mapBinary = function mapBinary(data, binaryType) { - switch (binaryType) { - case "blob": - return data instanceof ArrayBuffer ? new Blob([data]) : data; - - case "arraybuffer": - default: - return data; - // assuming the data is already an ArrayBuffer - } - }; - - 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; - var encodedPackets = new Array(length); - var count = 0; - packets.forEach(function (packet, i) { - // force base64 encoding for binary packets - encodePacket(packet, false, function (encodedPacket) { - encodedPackets[i] = encodedPacket; - - if (++count === length) { - callback(encodedPackets.join(SEPARATOR)); - } - }); - }); - }; - - var decodePayload = function decodePayload(encodedPayload, binaryType) { - var encodedPackets = encodedPayload.split(SEPARATOR); - var packets = []; - - for (var i = 0; i < encodedPackets.length; i++) { - var decodedPacket = decodePacket(encodedPackets[i], binaryType); - packets.push(decodedPacket); - - if (decodedPacket.type === "error") { - break; - } - } - - return packets; - }; - - var protocol = 4; + return TransportError; + }( /*#__PURE__*/_wrapNativeSuper(Error)); var Transport = /*#__PURE__*/function (_Emitter) { _inherits(Transport, _Emitter); - var _super = _createSuper(Transport); + var _super2 = _createSuper(Transport); /** * Transport abstract constructor. @@ -628,23 +692,25 @@ * @api private */ function Transport(opts) { - var _this; + var _this2; _classCallCheck(this, Transport); - _this = _super.call(this); - _this.writable = false; - installTimerFunctions(_assertThisInitialized(_this), opts); - _this.opts = opts; - _this.query = opts.query; - _this.readyState = ""; - _this.socket = opts.socket; - return _this; + _this2 = _super2.call(this); + _this2.writable = false; + installTimerFunctions(_assertThisInitialized(_this2), opts); + _this2.opts = opts; + _this2.query = opts.query; + _this2.readyState = ""; + _this2.socket = opts.socket; + return _this2; } /** * Emits an error. * - * @param {String} str + * @param {String} reason + * @param description + * @param context - the error context * @return {Transport} for chaining * @api protected */ @@ -652,14 +718,8 @@ _createClass(Transport, [{ key: "onError", - value: function onError(msg, desc) { - var err = new Error(msg); // @ts-ignore - - err.type = "TransportError"; // @ts-ignore - - err.description = desc; - - _get(_getPrototypeOf(Transport.prototype), "emit", this).call(this, "error", err); + value: function onError(reason, description, context) { + _get(_getPrototypeOf(Transport.prototype), "emitReserved", this).call(this, "error", new TransportError(reason, description, context)); return this; } @@ -721,7 +781,7 @@ this.readyState = "open"; this.writable = true; - _get(_getPrototypeOf(Transport.prototype), "emit", this).call(this, "open"); + _get(_getPrototypeOf(Transport.prototype), "emitReserved", this).call(this, "open"); } /** * Called with data. @@ -745,7 +805,7 @@ }, { key: "onPacket", value: function onPacket(packet) { - _get(_getPrototypeOf(Transport.prototype), "emit", this).call(this, "packet", packet); + _get(_getPrototypeOf(Transport.prototype), "emitReserved", this).call(this, "packet", packet); } /** * Called upon close. @@ -755,20 +815,22 @@ }, { key: "onClose", - value: function onClose() { + value: function onClose(details) { this.readyState = "closed"; - _get(_getPrototypeOf(Transport.prototype), "emit", this).call(this, "close"); + _get(_getPrototypeOf(Transport.prototype), "emitReserved", this).call(this, "close", details); } }]); return Transport; - }(Emitter_1); + }(Emitter); + + // imported from https://github.com/unshiftio/yeast var alphabet = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-_'.split(''), length = 64, - map = {}, - seed = 0, + map = {}; + var seed = 0, i = 0, prev; /** @@ -779,7 +841,7 @@ * @api public */ - function encode(num) { + function encode$1(num) { var encoded = ''; do { @@ -789,24 +851,6 @@ return encoded; } - /** - * Return the integer value specified by the given string. - * - * @param {String} str The string to convert. - * @returns {Number} The integer value represented by the string. - * @api public - */ - - - function decode(str) { - var decoded = 0; - - for (i = 0; i < str.length; i++) { - decoded = decoded * length + map[str.charAt(i)]; - } - - return decoded; - } /** * Yeast: A tiny growing id generator. * @@ -814,28 +858,19 @@ * @api public */ - function yeast() { - var now = encode(+new Date()); + var now = encode$1(+new Date()); if (now !== prev) return seed = 0, prev = now; - return now + '.' + encode(seed++); + return now + '.' + encode$1(seed++); } // // Map each character to its index. // - for (; i < length; i++) { map[alphabet[i]] = i; - } // - // Expose the `yeast`, `encode` and `decode` functions. - // + } - - yeast.encode = encode; - yeast.decode = decode; - var yeast_1 = yeast; - - var parseqs = {}; + // imported from https://github.com/galkn/querystring /** * Compiles a querystring @@ -844,8 +879,7 @@ * @param {Object} * @api private */ - - parseqs.encode = function (obj) { + function encode(obj) { var str = ''; for (var i in obj) { @@ -856,7 +890,7 @@ } return str; - }; + } /** * Parses a simple querystring into an object * @@ -864,8 +898,7 @@ * @api private */ - - parseqs.decode = function (qs) { + function decode(qs) { var qry = {}; var pairs = qs.split('&'); @@ -875,20 +908,82 @@ } return qry; - }; + } + + // imported from https://github.com/component/has-cors + var value = false; + + try { + value = typeof XMLHttpRequest !== 'undefined' && 'withCredentials' in new XMLHttpRequest(); + } catch (err) {// if XMLHttp support is disabled in IE then it will throw + // when trying to create + } + + var hasCORS = value; + + // browser shim for xmlhttprequest module + function XMLHttpRequest$1 (opts) { + 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 globalThis[["Active"].concat("Object").join("X")]("Microsoft.XMLHTTP"); + } catch (e) {} + } + } + + function empty() {} + + var hasXHR2 = function () { + var xhr = new XMLHttpRequest$1({ + xdomain: false + }); + return null != xhr.responseType; + }(); var Polling = /*#__PURE__*/function (_Transport) { _inherits(Polling, _Transport); var _super = _createSuper(Polling); - function Polling() { + /** + * XHR Polling constructor. + * + * @param {Object} opts + * @api public + */ + function Polling(opts) { var _this; _classCallCheck(this, Polling); - _this = _super.apply(this, arguments); + _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` + + if (!port) { + port = isSSL ? "443" : "80"; + } + + _this.xd = typeof location !== "undefined" && opts.hostname !== location.hostname || port !== opts.port; + _this.xs = opts.secure !== isSSL; + } + /** + * XHR supports binary + */ + + + var forceBase64 = opts && opts.forceBase64; + _this.supportsBinary = hasXHR2 && !forceBase64; return _this; } /** @@ -958,7 +1053,7 @@ value: function poll() { this.polling = true; this.doPoll(); - this.emit("poll"); + this.emitReserved("poll"); } /** * Overloads onData to detect payloads. @@ -979,7 +1074,9 @@ if ("close" === packet.type) { - _this3.onClose(); + _this3.onClose({ + description: "transport closed by the server" + }); return false; } // otherwise bypass onData and handle the message @@ -994,7 +1091,7 @@ if ("closed" !== this.readyState) { // if we got data we're not polling this.polling = false; - this.emit("pollComplete"); + this.emitReserved("pollComplete"); if ("open" === this.readyState) { this.poll(); @@ -1044,7 +1141,7 @@ _this5.doWrite(data, function () { _this5.writable = true; - _this5.emit("drain"); + _this5.emitReserved("drain"); }); }); } @@ -1062,7 +1159,7 @@ var port = ""; // cache busting is forced if (false !== this.opts.timestampRequests) { - query[this.opts.timestampParam] = yeast_1(); + query[this.opts.timestampParam] = yeast(); } if (!this.supportsBinary && !query.sid) { @@ -1074,80 +1171,18 @@ port = ":" + this.opts.port; } - var encodedQuery = parseqs.encode(query); + var encodedQuery = encode(query); var ipv6 = this.opts.hostname.indexOf(":") !== -1; return schema + "://" + (ipv6 ? "[" + this.opts.hostname + "]" : this.opts.hostname) + port + this.opts.path + (encodedQuery.length ? "?" + encodedQuery : ""); } - }, { - key: "name", - get: function get() { - return "polling"; - } - }]); - - return Polling; - }(Transport); - - /** - * Empty function - */ - - function empty() {} - - var hasXHR2 = function () { - var xhr = new XMLHttpRequest$1({ - xdomain: false - }); - return null != xhr.responseType; - }(); - - var XHR = /*#__PURE__*/function (_Polling) { - _inherits(XHR, _Polling); - - var _super = _createSuper(XHR); - - /** - * XHR Polling constructor. - * - * @param {Object} opts - * @api public - */ - function XHR(opts) { - var _this; - - _classCallCheck(this, XHR); - - _this = _super.call(this, opts); - - if (typeof location !== "undefined") { - var isSSL = "https:" === location.protocol; - var port = location.port; // some user agents have empty `location.port` - - if (!port) { - port = isSSL ? "443" : "80"; - } - - _this.xd = typeof location !== "undefined" && opts.hostname !== location.hostname || port !== opts.port; - _this.xs = opts.secure !== isSSL; - } /** - * XHR supports binary + * Creates a request. + * + * @param {String} method + * @api private */ - - var forceBase64 = opts && opts.forceBase64; - _this.supportsBinary = hasXHR2 && !forceBase64; - return _this; - } - /** - * Creates a request. - * - * @param {String} method - * @api private - */ - - - _createClass(XHR, [{ + }, { key: "request", value: function request() { var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; @@ -1170,15 +1205,15 @@ }, { key: "doWrite", value: function doWrite(data, fn) { - var _this2 = this; + var _this6 = this; var req = this.request({ method: "POST", data: data }); req.on("success", fn); - req.on("error", function (err) { - _this2.onError("xhr post error", err); + req.on("error", function (xhrStatus, context) { + _this6.onError("xhr post error", xhrStatus, context); }); } /** @@ -1190,19 +1225,24 @@ }, { key: "doPoll", value: function doPoll() { - var _this3 = this; + var _this7 = this; var req = this.request(); req.on("data", this.onData.bind(this)); - req.on("error", function (err) { - _this3.onError("xhr poll error", err); + req.on("error", function (xhrStatus, context) { + _this7.onError("xhr poll error", xhrStatus, context); }); this.pollXhr = req; } + }, { + key: "name", + get: function get() { + return "polling"; + } }]); - return XHR; - }(Polling); + return Polling; + }(Transport); var Request = /*#__PURE__*/function (_Emitter) { _inherits(Request, _Emitter); @@ -1215,21 +1255,21 @@ * @api public */ function Request(uri, opts) { - var _this4; + var _this8; _classCallCheck(this, Request); - _this4 = _super2.call(this); - installTimerFunctions(_assertThisInitialized(_this4), opts); - _this4.opts = opts; - _this4.method = opts.method || "GET"; - _this4.uri = uri; - _this4.async = false !== opts.async; - _this4.data = undefined !== opts.data ? opts.data : null; + _this8 = _super2.call(this); + installTimerFunctions(_assertThisInitialized(_this8), opts); + _this8.opts = opts; + _this8.method = opts.method || "GET"; + _this8.uri = uri; + _this8.async = false !== opts.async; + _this8.data = undefined !== opts.data ? opts.data : null; - _this4.create(); + _this8.create(); - return _this4; + return _this8; } /** * Creates the XHR object and sends the request. @@ -1241,7 +1281,7 @@ _createClass(Request, [{ key: "create", value: function create() { - var _this5 = this; + var _this9 = this; var opts = pick(this.opts, "agent", "pfx", "key", "passphrase", "cert", "ca", "ciphers", "rejectUnauthorized", "autoUnref"); opts.xdomain = !!this.opts.xd; @@ -1286,12 +1326,12 @@ if (4 !== xhr.readyState) return; if (200 === xhr.status || 1223 === xhr.status) { - _this5.onLoad(); + _this9.onLoad(); } else { // make sure the `error` event handler that's user-set // does not throw in the same tick and gets caught here - _this5.setTimeoutFn(function () { - _this5.onError(typeof xhr.status === "number" ? xhr.status : 0); + _this9.setTimeoutFn(function () { + _this9.onError(typeof xhr.status === "number" ? xhr.status : 0); }, 0); } }; @@ -1302,7 +1342,7 @@ // and thus the 'error' event can only be only bound *after* this exception // occurs. Therefore, also, we cannot throw here at all. this.setTimeoutFn(function () { - _this5.onError(e); + _this9.onError(e); }, 0); return; } @@ -1312,30 +1352,6 @@ Request.requests[this.index] = this; } } - /** - * Called upon successful response. - * - * @api private - */ - - }, { - key: "onSuccess", - value: function onSuccess() { - this.emit("success"); - this.cleanup(); - } - /** - * Called if we have data. - * - * @api private - */ - - }, { - key: "onData", - value: function onData(data) { - this.emit("data", data); - this.onSuccess(); - } /** * Called upon error. * @@ -1345,7 +1361,7 @@ }, { key: "onError", value: function onError(err) { - this.emit("error", err); + this.emitReserved("error", err, this.xhr); this.cleanup(true); } /** @@ -1387,7 +1403,9 @@ var data = this.xhr.responseText; if (data !== null) { - this.onData(data); + this.emitReserved("data", data); + this.emitReserved("success"); + this.cleanup(); } } /** @@ -1404,7 +1422,7 @@ }]); return Request; - }(Emitter_1); + }(Emitter); Request.requestsCount = 0; Request.requests = {}; /** @@ -1503,7 +1521,7 @@ try { this.ws = usingBrowserWebSocket && !isReactNative ? protocols ? new WebSocket(uri, protocols) : new WebSocket(uri) : new WebSocket(uri, protocols, opts); } catch (err) { - return this.emit("error", err); + return this.emitReserved("error", err); } this.ws.binaryType = this.socket.binaryType || defaultBinaryType; @@ -1528,7 +1546,12 @@ _this2.onOpen(); }; - this.ws.onclose = this.onClose.bind(this); + this.ws.onclose = function (closeEvent) { + return _this2.onClose({ + description: "websocket connection closed", + context: closeEvent + }); + }; this.ws.onmessage = function (ev) { return _this2.onData(ev.data); @@ -1576,7 +1599,7 @@ nextTick(function () { _this3.writable = true; - _this3.emit("drain"); + _this3.emitReserved("drain"); }, _this3.setTimeoutFn); } }); @@ -1619,7 +1642,7 @@ if (this.opts.timestampRequests) { - query[this.opts.timestampParam] = yeast_1(); + query[this.opts.timestampParam] = yeast(); } // communicate binary support capabilities @@ -1627,7 +1650,7 @@ query.b64 = 1; } - var encodedQuery = parseqs.encode(query); + var encodedQuery = encode(query); var ipv6 = this.opts.hostname.indexOf(":") !== -1; return schema + "://" + (ipv6 ? "[" + this.opts.hostname + "]" : this.opts.hostname) + port + this.opts.path + (encodedQuery.length ? "?" + encodedQuery : ""); } @@ -1655,9 +1678,11 @@ var transports = { websocket: WS, - polling: XHR + polling: Polling }; + // imported from https://github.com/galkn/parseuri + /** * Parses an URI * @@ -1666,8 +1691,7 @@ */ var re = /^(?:(?![^:@]+:[^:@\/]*@)(http|https|ws|wss):\/\/)?((?:(([^:@]*)(?::([^:@]*))?)?@)?((?:[a-f0-9]{0,4}:){2,7}[a-f0-9]{0,4}|[^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/; var parts = ['source', 'protocol', 'authority', 'userInfo', 'user', 'password', 'host', 'port', 'relative', 'path', 'directory', 'file', 'query', 'anchor']; - - var parseuri = function parseuri(str) { + function parse(str) { var src = str, b = str.indexOf('['), e = str.indexOf(']'); @@ -1694,7 +1718,7 @@ uri.pathNames = pathNames(uri, uri['path']); uri.queryKey = queryKey(uri, uri['query']); return uri; - }; + } function pathNames(obj, path) { var regx = /\/{2,9}/g, @@ -1748,13 +1772,13 @@ } if (uri) { - uri = parseuri(uri); + uri = parse(uri); opts.hostname = uri.host; opts.secure = uri.protocol === "https" || uri.protocol === "wss"; opts.port = uri.port; if (uri.query) opts.query = uri.query; } else if (opts.host) { - opts.hostname = parseuri(opts.host).host; + opts.hostname = parse(opts.host).host; } installTimerFunctions(_assertThisInitialized(_this), opts); @@ -1788,7 +1812,7 @@ _this.opts.path = _this.opts.path.replace(/\/$/, "") + "/"; if (typeof _this.opts.query === "string") { - _this.opts.query = parseqs.decode(_this.opts.query); + _this.opts.query = decode(_this.opts.query); } // set on handshake @@ -1816,7 +1840,9 @@ if (_this.hostname !== "localhost") { _this.offlineEventListener = function () { - _this.onClose("transport close"); + _this.onClose("transport close", { + description: "network connection lost" + }); }; addEventListener("offline", _this.offlineEventListener, false); @@ -1839,7 +1865,8 @@ _createClass(Socket, [{ key: "createTransport", value: function createTransport(name) { - var query = clone(this.opts.query); // append engine.io protocol identifier + var query = _extends({}, this.opts.query); // append engine.io protocol identifier + query.EIO = protocol; // transport name @@ -1913,8 +1940,8 @@ 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 () { - _this3.onClose("transport close"); + 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); }); } /** @@ -2111,6 +2138,7 @@ this.upgrades = this.filterUpgrades(data.upgrades); this.pingInterval = data.pingInterval; this.pingTimeout = data.pingTimeout; + this.maxPayload = data.maxPayload; this.onOpen(); // In case open handler closes socket if ("closed" === this.readyState) return; @@ -2167,13 +2195,48 @@ key: "flush", value: function flush() { if ("closed" !== this.readyState && this.transport.writable && !this.upgrading && this.writeBuffer.length) { - this.transport.send(this.writeBuffer); // keep track of current length of writeBuffer + var packets = this.getWritablePackets(); + this.transport.send(packets); // keep track of current length of writeBuffer // splice writeBuffer and callbackBuffer on `drain` - this.prevBufferLen = this.writeBuffer.length; + this.prevBufferLen = packets.length; this.emitReserved("flush"); } } + /** + * Ensure the encoded size of the writeBuffer is below the maxPayload value sent by the server (only for HTTP + * long-polling) + * + * @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 + } + + return this.writeBuffer; + } /** * Sends a message. * @@ -2308,7 +2371,7 @@ }, { key: "onClose", - value: function onClose(reason, desc) { + 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 @@ -2328,7 +2391,7 @@ this.id = null; // emit close event - this.emitReserved("close", reason, desc); // clean buffers after, so users can still + this.emitReserved("close", reason, description); // clean buffers after, so users can still // grab the buffers on `close` event this.writeBuffer = []; @@ -2359,21 +2422,9 @@ }]); return Socket; - }(Emitter_1); + }(Emitter); Socket.protocol = protocol; - function clone(obj) { - var o = {}; - - for (var i in obj) { - if (obj.hasOwnProperty(i)) { - o[i] = obj[i]; - } - } - - return o; - } - var browserEntrypoint = (function (uri, opts) { return new Socket(uri, opts); }); diff --git a/dist/engine.io.js.map b/dist/engine.io.js.map index a54b5b54..31f3b83b 100644 --- a/dist/engine.io.js.map +++ b/dist/engine.io.js.map @@ -1 +1 @@ -{"version":3,"file":"engine.io.js","sources":["../node_modules/has-cors/index.js","../build/esm/globalThis.browser.js","../build/esm/transports/xmlhttprequest.browser.js","../build/esm/util.js","../node_modules/@socket.io/component-emitter/index.js","../node_modules/engine.io-parser/build/esm/commons.js","../node_modules/engine.io-parser/build/esm/encodePacket.browser.js","../node_modules/base64-arraybuffer/dist/base64-arraybuffer.es5.js","../node_modules/engine.io-parser/build/esm/decodePacket.browser.js","../node_modules/engine.io-parser/build/esm/index.js","../build/esm/transport.js","../node_modules/yeast/index.js","../node_modules/parseqs/index.js","../build/esm/transports/polling.js","../build/esm/transports/polling-xhr.js","../build/esm/transports/websocket-constructor.browser.js","../build/esm/transports/websocket.js","../build/esm/transports/index.js","../node_modules/parseuri/index.js","../build/esm/socket.js","../build/esm/browser-entrypoint.js"],"sourcesContent":["\n/**\n * Module exports.\n *\n * Logic borrowed from Modernizr:\n *\n * - https://github.com/Modernizr/Modernizr/blob/master/feature-detects/cors.js\n */\n\ntry {\n module.exports = typeof XMLHttpRequest !== 'undefined' &&\n 'withCredentials' in new XMLHttpRequest();\n} catch (err) {\n // if XMLHttp support is disabled in IE then it will throw\n // when trying to create\n module.exports = false;\n}\n","export default (() => {\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","// browser shim for xmlhttprequest module\nimport hasCORS from \"has-cors\";\nimport globalThis from \"../globalThis.js\";\nexport default function (opts) {\n const xdomain = opts.xdomain;\n // XMLHttpRequest can be disabled on IE\n try {\n if (\"undefined\" !== typeof XMLHttpRequest && (!xdomain || hasCORS)) {\n return new XMLHttpRequest();\n }\n }\n catch (e) { }\n if (!xdomain) {\n try {\n return new globalThis[[\"Active\"].concat(\"Object\").join(\"X\")](\"Microsoft.XMLHTTP\");\n }\n catch (e) { }\n }\n}\n","import 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 = setTimeout;\nconst NATIVE_CLEAR_TIMEOUT = 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 = setTimeout.bind(globalThis);\n obj.clearTimeoutFn = clearTimeout.bind(globalThis);\n }\n}\n","\n/**\n * Expose `Emitter`.\n */\n\nexports.Emitter = Emitter;\n\n/**\n * Initialize a new `Emitter`.\n *\n * @api public\n */\n\nfunction 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","const PACKET_TYPES = Object.create(null); // no Map = no polyfill\nPACKET_TYPES[\"open\"] = \"0\";\nPACKET_TYPES[\"close\"] = \"1\";\nPACKET_TYPES[\"ping\"] = \"2\";\nPACKET_TYPES[\"pong\"] = \"3\";\nPACKET_TYPES[\"message\"] = \"4\";\nPACKET_TYPES[\"upgrade\"] = \"5\";\nPACKET_TYPES[\"noop\"] = \"6\";\nconst PACKET_TYPES_REVERSE = Object.create(null);\nObject.keys(PACKET_TYPES).forEach(key => {\n PACKET_TYPES_REVERSE[PACKET_TYPES[key]] = key;\n});\nconst ERROR_PACKET = { type: \"error\", data: \"parser error\" };\nexport { PACKET_TYPES, PACKET_TYPES_REVERSE, ERROR_PACKET };\n","import { PACKET_TYPES } from \"./commons.js\";\nconst withNativeBlob = typeof Blob === \"function\" ||\n (typeof Blob !== \"undefined\" &&\n Object.prototype.toString.call(Blob) === \"[object BlobConstructor]\");\nconst withNativeArrayBuffer = typeof ArrayBuffer === \"function\";\n// ArrayBuffer.isView method is not defined in IE10\nconst isView = obj => {\n return typeof ArrayBuffer.isView === \"function\"\n ? ArrayBuffer.isView(obj)\n : obj && obj.buffer instanceof ArrayBuffer;\n};\nconst encodePacket = ({ type, data }, supportsBinary, callback) => {\n if (withNativeBlob && data instanceof Blob) {\n if (supportsBinary) {\n return callback(data);\n }\n else {\n return encodeBlobAsBase64(data, callback);\n }\n }\n else if (withNativeArrayBuffer &&\n (data instanceof ArrayBuffer || isView(data))) {\n if (supportsBinary) {\n return callback(data);\n }\n else {\n return encodeBlobAsBase64(new Blob([data]), callback);\n }\n }\n // plain string\n return callback(PACKET_TYPES[type] + (data || \"\"));\n};\nconst encodeBlobAsBase64 = (data, callback) => {\n const fileReader = new FileReader();\n fileReader.onload = function () {\n const content = fileReader.result.split(\",\")[1];\n callback(\"b\" + content);\n };\n return fileReader.readAsDataURL(data);\n};\nexport default encodePacket;\n","/*\n * base64-arraybuffer 1.0.1 \n * Copyright (c) 2021 Niklas von Hertzen \n * Released under MIT License\n */\nvar chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n// Use a lookup table to find the index.\nvar lookup = typeof Uint8Array === 'undefined' ? [] : new Uint8Array(256);\nfor (var i = 0; i < chars.length; i++) {\n lookup[chars.charCodeAt(i)] = i;\n}\nvar encode = function (arraybuffer) {\n var bytes = new Uint8Array(arraybuffer), i, len = bytes.length, base64 = '';\n for (i = 0; i < len; i += 3) {\n base64 += chars[bytes[i] >> 2];\n base64 += chars[((bytes[i] & 3) << 4) | (bytes[i + 1] >> 4)];\n base64 += chars[((bytes[i + 1] & 15) << 2) | (bytes[i + 2] >> 6)];\n base64 += chars[bytes[i + 2] & 63];\n }\n if (len % 3 === 2) {\n base64 = base64.substring(0, base64.length - 1) + '=';\n }\n else if (len % 3 === 1) {\n base64 = base64.substring(0, base64.length - 2) + '==';\n }\n return base64;\n};\nvar decode = function (base64) {\n var bufferLength = base64.length * 0.75, len = base64.length, i, p = 0, encoded1, encoded2, encoded3, encoded4;\n if (base64[base64.length - 1] === '=') {\n bufferLength--;\n if (base64[base64.length - 2] === '=') {\n bufferLength--;\n }\n }\n var arraybuffer = new ArrayBuffer(bufferLength), bytes = new Uint8Array(arraybuffer);\n for (i = 0; i < len; i += 4) {\n encoded1 = lookup[base64.charCodeAt(i)];\n encoded2 = lookup[base64.charCodeAt(i + 1)];\n encoded3 = lookup[base64.charCodeAt(i + 2)];\n encoded4 = lookup[base64.charCodeAt(i + 3)];\n bytes[p++] = (encoded1 << 2) | (encoded2 >> 4);\n bytes[p++] = ((encoded2 & 15) << 4) | (encoded3 >> 2);\n bytes[p++] = ((encoded3 & 3) << 6) | (encoded4 & 63);\n }\n return arraybuffer;\n};\n\nexport { decode, encode };\n//# sourceMappingURL=base64-arraybuffer.es5.js.map\n","import { ERROR_PACKET, PACKET_TYPES_REVERSE } from \"./commons.js\";\nimport { decode } from \"base64-arraybuffer\";\nconst withNativeArrayBuffer = typeof ArrayBuffer === \"function\";\nconst decodePacket = (encodedPacket, binaryType) => {\n if (typeof encodedPacket !== \"string\") {\n return {\n type: \"message\",\n data: mapBinary(encodedPacket, binaryType)\n };\n }\n const type = encodedPacket.charAt(0);\n if (type === \"b\") {\n return {\n type: \"message\",\n data: decodeBase64Packet(encodedPacket.substring(1), binaryType)\n };\n }\n const packetType = PACKET_TYPES_REVERSE[type];\n if (!packetType) {\n return ERROR_PACKET;\n }\n return encodedPacket.length > 1\n ? {\n type: PACKET_TYPES_REVERSE[type],\n data: encodedPacket.substring(1)\n }\n : {\n type: PACKET_TYPES_REVERSE[type]\n };\n};\nconst decodeBase64Packet = (data, binaryType) => {\n if (withNativeArrayBuffer) {\n const decoded = decode(data);\n return mapBinary(decoded, binaryType);\n }\n else {\n return { base64: true, data }; // fallback for old browsers\n }\n};\nconst mapBinary = (data, binaryType) => {\n switch (binaryType) {\n case \"blob\":\n return data instanceof ArrayBuffer ? new Blob([data]) : data;\n case \"arraybuffer\":\n default:\n return data; // assuming the data is already an ArrayBuffer\n }\n};\nexport default decodePacket;\n","import encodePacket from \"./encodePacket.js\";\nimport decodePacket from \"./decodePacket.js\";\nconst SEPARATOR = String.fromCharCode(30); // see https://en.wikipedia.org/wiki/Delimiter#ASCII_delimited_text\nconst encodePayload = (packets, callback) => {\n // some packets may be added to the array while encoding, so the initial length must be saved\n const length = packets.length;\n const encodedPackets = new Array(length);\n let count = 0;\n packets.forEach((packet, i) => {\n // force base64 encoding for binary packets\n encodePacket(packet, false, encodedPacket => {\n encodedPackets[i] = encodedPacket;\n if (++count === length) {\n callback(encodedPackets.join(SEPARATOR));\n }\n });\n });\n};\nconst decodePayload = (encodedPayload, binaryType) => {\n const encodedPackets = encodedPayload.split(SEPARATOR);\n const packets = [];\n for (let i = 0; i < encodedPackets.length; i++) {\n const decodedPacket = decodePacket(encodedPackets[i], binaryType);\n packets.push(decodedPacket);\n if (decodedPacket.type === \"error\") {\n break;\n }\n }\n return packets;\n};\nexport const protocol = 4;\nexport { encodePacket, encodePayload, decodePacket, decodePayload };\n","import { decodePacket } from \"engine.io-parser\";\nimport { Emitter } from \"@socket.io/component-emitter\";\nimport { installTimerFunctions } from \"./util.js\";\nexport class Transport extends Emitter {\n /**\n * Transport abstract constructor.\n *\n * @param {Object} options.\n * @api private\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.readyState = \"\";\n this.socket = opts.socket;\n }\n /**\n * Emits an error.\n *\n * @param {String} str\n * @return {Transport} for chaining\n * @api protected\n */\n onError(msg, desc) {\n const err = new Error(msg);\n // @ts-ignore\n err.type = \"TransportError\";\n // @ts-ignore\n err.description = desc;\n super.emit(\"error\", err);\n return this;\n }\n /**\n * Opens the transport.\n *\n * @api public\n */\n open() {\n if (\"closed\" === this.readyState || \"\" === this.readyState) {\n this.readyState = \"opening\";\n this.doOpen();\n }\n return this;\n }\n /**\n * Closes the transport.\n *\n * @api public\n */\n close() {\n if (\"opening\" === this.readyState || \"open\" === this.readyState) {\n this.doClose();\n this.onClose();\n }\n return this;\n }\n /**\n * Sends multiple packets.\n *\n * @param {Array} packets\n * @api public\n */\n send(packets) {\n if (\"open\" === this.readyState) {\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 * @api protected\n */\n onOpen() {\n this.readyState = \"open\";\n this.writable = true;\n super.emit(\"open\");\n }\n /**\n * Called with data.\n *\n * @param {String} data\n * @api 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 * @api protected\n */\n onPacket(packet) {\n super.emit(\"packet\", packet);\n }\n /**\n * Called upon close.\n *\n * @api protected\n */\n onClose() {\n this.readyState = \"closed\";\n super.emit(\"close\");\n }\n}\n","'use strict';\n\nvar alphabet = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-_'.split('')\n , length = 64\n , map = {}\n , seed = 0\n , i = 0\n , prev;\n\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 */\nfunction encode(num) {\n var encoded = '';\n\n do {\n encoded = alphabet[num % length] + encoded;\n num = Math.floor(num / length);\n } while (num > 0);\n\n return encoded;\n}\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 */\nfunction decode(str) {\n var decoded = 0;\n\n for (i = 0; i < str.length; i++) {\n decoded = decoded * length + map[str.charAt(i)];\n }\n\n return decoded;\n}\n\n/**\n * Yeast: A tiny growing id generator.\n *\n * @returns {String} A unique id.\n * @api public\n */\nfunction yeast() {\n var now = encode(+new Date());\n\n if (now !== prev) return seed = 0, prev = now;\n return now +'.'+ encode(seed++);\n}\n\n//\n// Map each character to its index.\n//\nfor (; i < length; i++) map[alphabet[i]] = i;\n\n//\n// Expose the `yeast`, `encode` and `decode` functions.\n//\nyeast.encode = encode;\nyeast.decode = decode;\nmodule.exports = yeast;\n","/**\n * Compiles a querystring\n * Returns string representation of the object\n *\n * @param {Object}\n * @api private\n */\n\nexports.encode = function (obj) {\n var str = '';\n\n for (var i in obj) {\n if (obj.hasOwnProperty(i)) {\n if (str.length) str += '&';\n str += encodeURIComponent(i) + '=' + encodeURIComponent(obj[i]);\n }\n }\n\n return str;\n};\n\n/**\n * Parses a simple querystring into an object\n *\n * @param {String} qs\n * @api private\n */\n\nexports.decode = function(qs){\n var qry = {};\n var pairs = qs.split('&');\n for (var i = 0, l = pairs.length; i < l; i++) {\n var pair = pairs[i].split('=');\n qry[decodeURIComponent(pair[0])] = decodeURIComponent(pair[1]);\n }\n return qry;\n};\n","import { Transport } from \"../transport.js\";\nimport yeast from \"yeast\";\nimport parseqs from \"parseqs\";\nimport { encodePayload, decodePayload } from \"engine.io-parser\";\nexport class Polling extends Transport {\n constructor() {\n super(...arguments);\n this.polling = false;\n }\n /**\n * Transport name.\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 * @api private\n */\n doOpen() {\n this.poll();\n }\n /**\n * Pauses polling.\n *\n * @param {Function} callback upon buffers are flushed and transport is paused\n * @api private\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 * @api public\n */\n poll() {\n this.polling = true;\n this.doPoll();\n this.emit(\"poll\");\n }\n /**\n * Overloads onData to detect payloads.\n *\n * @api private\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();\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.emit(\"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 * @api private\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} data packets\n * @param {Function} drain callback\n * @api private\n */\n write(packets) {\n this.writable = false;\n encodePayload(packets, data => {\n this.doWrite(data, () => {\n this.writable = true;\n this.emit(\"drain\");\n });\n });\n }\n /**\n * Generates uri for connection.\n *\n * @api private\n */\n uri() {\n let query = this.query || {};\n const schema = this.opts.secure ? \"https\" : \"http\";\n let port = \"\";\n // cache busting is forced\n if (false !== this.opts.timestampRequests) {\n query[this.opts.timestampParam] = yeast();\n }\n if (!this.supportsBinary && !query.sid) {\n query.b64 = 1;\n }\n // avoid port if default for schema\n if (this.opts.port &&\n ((\"https\" === schema && Number(this.opts.port) !== 443) ||\n (\"http\" === schema && Number(this.opts.port) !== 80))) {\n port = \":\" + this.opts.port;\n }\n const encodedQuery = parseqs.encode(query);\n const ipv6 = this.opts.hostname.indexOf(\":\") !== -1;\n return (schema +\n \"://\" +\n (ipv6 ? \"[\" + this.opts.hostname + \"]\" : this.opts.hostname) +\n port +\n this.opts.path +\n (encodedQuery.length ? \"?\" + encodedQuery : \"\"));\n }\n}\n","/* global attachEvent */\nimport XMLHttpRequest from \"./xmlhttprequest.js\";\nimport globalThis from \"../globalThis.js\";\nimport { installTimerFunctions, pick } from \"../util.js\";\nimport { Emitter } from \"@socket.io/component-emitter\";\nimport { Polling } from \"./polling.js\";\n/**\n * Empty function\n */\nfunction empty() { }\nconst hasXHR2 = (function () {\n const xhr = new XMLHttpRequest({\n xdomain: false\n });\n return null != xhr.responseType;\n})();\nexport class XHR extends Polling {\n /**\n * XHR Polling constructor.\n *\n * @param {Object} opts\n * @api public\n */\n constructor(opts) {\n super(opts);\n if (typeof location !== \"undefined\") {\n const isSSL = \"https:\" === location.protocol;\n let port = location.port;\n // some user agents have empty `location.port`\n if (!port) {\n port = isSSL ? \"443\" : \"80\";\n }\n this.xd =\n (typeof location !== \"undefined\" &&\n opts.hostname !== location.hostname) ||\n port !== opts.port;\n this.xs = opts.secure !== isSSL;\n }\n /**\n * XHR supports binary\n */\n const forceBase64 = opts && opts.forceBase64;\n this.supportsBinary = hasXHR2 && !forceBase64;\n }\n /**\n * Creates a request.\n *\n * @param {String} method\n * @api private\n */\n request(opts = {}) {\n Object.assign(opts, { xd: this.xd, xs: this.xs }, this.opts);\n return new Request(this.uri(), opts);\n }\n /**\n * Sends data.\n *\n * @param {String} data to send.\n * @param {Function} called upon flush.\n * @api 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\", err => {\n this.onError(\"xhr post error\", err);\n });\n }\n /**\n * Starts a poll cycle.\n *\n * @api private\n */\n doPoll() {\n const req = this.request();\n req.on(\"data\", this.onData.bind(this));\n req.on(\"error\", err => {\n this.onError(\"xhr poll error\", err);\n });\n this.pollXhr = req;\n }\n}\nexport class Request extends Emitter {\n /**\n * Request constructor\n *\n * @param {Object} options\n * @api public\n */\n constructor(uri, opts) {\n super();\n installTimerFunctions(this, opts);\n this.opts = opts;\n this.method = opts.method || \"GET\";\n this.uri = uri;\n this.async = false !== opts.async;\n this.data = undefined !== opts.data ? opts.data : null;\n this.create();\n }\n /**\n * Creates the XHR object and sends the request.\n *\n * @api private\n */\n create() {\n const opts = pick(this.opts, \"agent\", \"pfx\", \"key\", \"passphrase\", \"cert\", \"ca\", \"ciphers\", \"rejectUnauthorized\", \"autoUnref\");\n opts.xdomain = !!this.opts.xd;\n opts.xscheme = !!this.opts.xs;\n const xhr = (this.xhr = new XMLHttpRequest(opts));\n try {\n xhr.open(this.method, this.uri, this.async);\n try {\n if (this.opts.extraHeaders) {\n xhr.setDisableHeaderCheck && xhr.setDisableHeaderCheck(true);\n for (let i in this.opts.extraHeaders) {\n if (this.opts.extraHeaders.hasOwnProperty(i)) {\n xhr.setRequestHeader(i, this.opts.extraHeaders[i]);\n }\n }\n }\n }\n catch (e) { }\n if (\"POST\" === this.method) {\n try {\n xhr.setRequestHeader(\"Content-type\", \"text/plain;charset=UTF-8\");\n }\n catch (e) { }\n }\n try {\n xhr.setRequestHeader(\"Accept\", \"*/*\");\n }\n catch (e) { }\n // ie6 check\n if (\"withCredentials\" in xhr) {\n xhr.withCredentials = this.opts.withCredentials;\n }\n if (this.opts.requestTimeout) {\n xhr.timeout = this.opts.requestTimeout;\n }\n xhr.onreadystatechange = () => {\n if (4 !== xhr.readyState)\n return;\n if (200 === xhr.status || 1223 === xhr.status) {\n this.onLoad();\n }\n else {\n // make sure the `error` event handler that's user-set\n // does not throw in the same tick and gets caught here\n this.setTimeoutFn(() => {\n this.onError(typeof xhr.status === \"number\" ? xhr.status : 0);\n }, 0);\n }\n };\n xhr.send(this.data);\n }\n catch (e) {\n // Need to defer since .create() is called directly from the constructor\n // and thus the 'error' event can only be only bound *after* this exception\n // occurs. Therefore, also, we cannot throw here at all.\n this.setTimeoutFn(() => {\n this.onError(e);\n }, 0);\n return;\n }\n if (typeof document !== \"undefined\") {\n this.index = Request.requestsCount++;\n Request.requests[this.index] = this;\n }\n }\n /**\n * Called upon successful response.\n *\n * @api private\n */\n onSuccess() {\n this.emit(\"success\");\n this.cleanup();\n }\n /**\n * Called if we have data.\n *\n * @api private\n */\n onData(data) {\n this.emit(\"data\", data);\n this.onSuccess();\n }\n /**\n * Called upon error.\n *\n * @api private\n */\n onError(err) {\n this.emit(\"error\", err);\n this.cleanup(true);\n }\n /**\n * Cleans up house.\n *\n * @api 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 * @api private\n */\n onLoad() {\n const data = this.xhr.responseText;\n if (data !== null) {\n this.onData(data);\n }\n }\n /**\n * Aborts the request.\n *\n * @api public\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 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 parseqs from \"parseqs\";\nimport yeast from \"yeast\";\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 * @api {Object} connection options\n * @api public\n */\n constructor(opts) {\n super(opts);\n this.supportsBinary = !opts.forceBase64;\n }\n /**\n * Transport name.\n *\n * @api public\n */\n get name() {\n return \"websocket\";\n }\n /**\n * Opens socket.\n *\n * @api private\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.emit(\"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 * @api 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 = this.onClose.bind(this);\n this.ws.onmessage = ev => this.onData(ev.data);\n this.ws.onerror = e => this.onError(\"websocket error\", e);\n }\n /**\n * Writes data to socket.\n *\n * @param {Array} array of packets.\n * @api private\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 = \"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.emit(\"drain\");\n }, this.setTimeoutFn);\n }\n });\n }\n }\n /**\n * Closes socket.\n *\n * @api private\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 * @api private\n */\n uri() {\n let query = this.query || {};\n const schema = this.opts.secure ? \"wss\" : \"ws\";\n let port = \"\";\n // avoid port if default for schema\n if (this.opts.port &&\n ((\"wss\" === schema && Number(this.opts.port) !== 443) ||\n (\"ws\" === schema && Number(this.opts.port) !== 80))) {\n port = \":\" + this.opts.port;\n }\n // append timestamp to URI\n if (this.opts.timestampRequests) {\n query[this.opts.timestampParam] = yeast();\n }\n // communicate binary support capabilities\n if (!this.supportsBinary) {\n query.b64 = 1;\n }\n const encodedQuery = parseqs.encode(query);\n const ipv6 = this.opts.hostname.indexOf(\":\") !== -1;\n return (schema +\n \"://\" +\n (ipv6 ? \"[\" + this.opts.hostname + \"]\" : this.opts.hostname) +\n port +\n this.opts.path +\n (encodedQuery.length ? \"?\" + encodedQuery : \"\"));\n }\n /**\n * Feature detection for WebSocket.\n *\n * @return {Boolean} whether this transport is available.\n * @api public\n */\n check() {\n return (!!WebSocket &&\n !(\"__initialize\" in WebSocket && this.name === WS.prototype.name));\n }\n}\n","import { XHR } from \"./polling-xhr.js\";\nimport { WS } from \"./websocket.js\";\nexport const transports = {\n websocket: WS,\n polling: XHR\n};\n","/**\n * Parses an URI\n *\n * @author Steven Levithan (MIT license)\n * @api private\n */\n\nvar re = /^(?:(?![^:@]+:[^:@\\/]*@)(http|https|ws|wss):\\/\\/)?((?:(([^:@]*)(?::([^:@]*))?)?@)?((?:[a-f0-9]{0,4}:){2,7}[a-f0-9]{0,4}|[^:\\/?#]*)(?::(\\d*))?)(((\\/(?:[^?#](?![^?#\\/]*\\.[^?#\\/.]+(?:[?#]|$)))*\\/?)?([^?#\\/]*))(?:\\?([^#]*))?(?:#(.*))?)/;\n\nvar parts = [\n 'source', 'protocol', 'authority', 'userInfo', 'user', 'password', 'host', 'port', 'relative', 'path', 'directory', 'file', 'query', 'anchor'\n];\n\nmodule.exports = function parseuri(str) {\n var src = str,\n b = str.indexOf('['),\n e = str.indexOf(']');\n\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\n var m = re.exec(str || ''),\n uri = {},\n i = 14;\n\n while (i--) {\n uri[parts[i]] = m[i] || '';\n }\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\n uri.pathNames = pathNames(uri, uri['path']);\n uri.queryKey = queryKey(uri, uri['query']);\n\n return uri;\n};\n\nfunction pathNames(obj, path) {\n var regx = /\\/{2,9}/g,\n names = path.replace(regx, \"/\").split(\"/\");\n\n if (path.substr(0, 1) == '/' || path.length === 0) {\n names.splice(0, 1);\n }\n if (path.substr(path.length - 1, 1) == '/') {\n names.splice(names.length - 1, 1);\n }\n\n return names;\n}\n\nfunction queryKey(uri, query) {\n var data = {};\n\n query.replace(/(?:^|&)([^&=]*)=?([^&]*)/g, function ($0, $1, $2) {\n if ($1) {\n data[$1] = $2;\n }\n });\n\n return data;\n}\n","import { transports } from \"./transports/index.js\";\nimport { installTimerFunctions } from \"./util.js\";\nimport parseqs from \"parseqs\";\nimport parseuri from \"parseuri\";\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 or options\n * @param {Object} opts - options\n * @api public\n */\n constructor(uri, opts = {}) {\n super();\n if (uri && \"object\" === typeof uri) {\n opts = uri;\n uri = null;\n }\n if (uri) {\n uri = parseuri(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 = parseuri(opts.host).host;\n }\n installTimerFunctions(this, opts);\n this.secure =\n null != opts.secure\n ? opts.secure\n : typeof location !== \"undefined\" && \"https:\" === location.protocol;\n if (opts.hostname && !opts.port) {\n // if no port is specified manually, use the protocol default\n opts.port = this.secure ? \"443\" : \"80\";\n }\n this.hostname =\n opts.hostname ||\n (typeof location !== \"undefined\" ? location.hostname : \"localhost\");\n this.port =\n opts.port ||\n (typeof location !== \"undefined\" && location.port\n ? location.port\n : this.secure\n ? \"443\"\n : \"80\");\n this.transports = opts.transports || [\"polling\", \"websocket\"];\n this.readyState = \"\";\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 rejectUnauthorized: true,\n perMessageDeflate: {\n threshold: 1024\n },\n transportOptions: {},\n closeOnBeforeunload: true\n }, opts);\n this.opts.path = this.opts.path.replace(/\\/$/, \"\") + \"/\";\n if (typeof this.opts.query === \"string\") {\n this.opts.query = parseqs.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 addEventListener(\"beforeunload\", () => {\n if (this.transport) {\n // silently close the transport\n this.transport.removeAllListeners();\n this.transport.close();\n }\n }, false);\n }\n if (this.hostname !== \"localhost\") {\n this.offlineEventListener = () => {\n this.onClose(\"transport close\");\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} transport name\n * @return {Transport}\n * @api private\n */\n createTransport(name) {\n const query = clone(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 * @api 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 * @api 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\", () => {\n this.onClose(\"transport close\");\n });\n }\n /**\n * Probes a transport.\n *\n * @param {String} transport name\n * @api private\n */\n probe(name) {\n let transport = this.createTransport(name);\n let failed = false;\n Socket.priorWebsocketSuccess = false;\n const onTransportOpen = () => {\n if (failed)\n return;\n transport.send([{ type: \"ping\", data: \"probe\" }]);\n transport.once(\"packet\", msg => {\n if (failed)\n return;\n if (\"pong\" === msg.type && \"probe\" === msg.data) {\n this.upgrading = true;\n this.emitReserved(\"upgrading\", transport);\n if (!transport)\n return;\n Socket.priorWebsocketSuccess = \"websocket\" === transport.name;\n this.transport.pause(() => {\n if (failed)\n return;\n if (\"closed\" === this.readyState)\n return;\n cleanup();\n this.setTransport(transport);\n transport.send([{ type: \"upgrade\" }]);\n this.emitReserved(\"upgrade\", transport);\n transport = null;\n this.upgrading = false;\n this.flush();\n });\n }\n else {\n const err = new Error(\"probe error\");\n // @ts-ignore\n err.transport = transport.name;\n this.emitReserved(\"upgradeError\", err);\n }\n });\n };\n function freezeTransport() {\n if (failed)\n return;\n // Any callback called by transport should be ignored since now\n failed = true;\n cleanup();\n transport.close();\n transport = null;\n }\n // Handle any error that happens while probing\n const onerror = err => {\n const error = new Error(\"probe error: \" + err);\n // @ts-ignore\n error.transport = transport.name;\n freezeTransport();\n this.emitReserved(\"upgradeError\", error);\n };\n function onTransportClose() {\n onerror(\"transport closed\");\n }\n // When the socket is closed while we're probing\n function onclose() {\n onerror(\"socket closed\");\n }\n // When the socket is upgraded while we're probing\n function onupgrade(to) {\n if (transport && to.name !== transport.name) {\n freezeTransport();\n }\n }\n // Remove all listeners on the transport and on self\n const cleanup = () => {\n transport.removeListener(\"open\", onTransportOpen);\n transport.removeListener(\"error\", onerror);\n transport.removeListener(\"close\", onTransportClose);\n this.off(\"close\", onclose);\n this.off(\"upgrading\", onupgrade);\n };\n transport.once(\"open\", onTransportOpen);\n transport.once(\"error\", onerror);\n transport.once(\"close\", onTransportClose);\n this.once(\"close\", onclose);\n this.once(\"upgrading\", onupgrade);\n transport.open();\n }\n /**\n * Called when connection is deemed open.\n *\n * @api 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 &&\n this.opts.upgrade &&\n this.transport.pause) {\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 * @api 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 * @api 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.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 * @api 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 * @api 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 * @api private\n */\n flush() {\n if (\"closed\" !== this.readyState &&\n this.transport.writable &&\n !this.upgrading &&\n this.writeBuffer.length) {\n this.transport.send(this.writeBuffer);\n // keep track of current length of writeBuffer\n // splice writeBuffer and callbackBuffer on `drain`\n this.prevBufferLen = this.writeBuffer.length;\n this.emitReserved(\"flush\");\n }\n }\n /**\n * Sends a message.\n *\n * @param {String} message.\n * @param {Function} callback function.\n * @param {Object} options.\n * @return {Socket} for chaining.\n * @api public\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} packet type.\n * @param {String} data.\n * @param {Object} options.\n * @param {Function} callback function.\n * @api 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 * @api public\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 * @api 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 * @api private\n */\n onClose(reason, desc) {\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(\"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, desc);\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} server upgrades\n * @api private\n *\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;\nfunction clone(obj) {\n const o = {};\n for (let i in obj) {\n if (obj.hasOwnProperty(i)) {\n o[i] = obj[i];\n }\n }\n return o;\n}\n","import { Socket } from \"./socket.js\";\nexport default (uri, opts) => new Socket(uri, opts);\n"],"names":["hasCorsModule","XMLHttpRequest","err","self","window","Function","opts","xdomain","hasCORS","e","globalThis","concat","join","pick","obj","attr","reduce","acc","k","hasOwnProperty","NATIVE_SET_TIMEOUT","setTimeout","NATIVE_CLEAR_TIMEOUT","clearTimeout","installTimerFunctions","useNativeTimers","setTimeoutFn","bind","clearTimeoutFn","Emitter","mixin","key","prototype","on","addEventListener","event","fn","_callbacks","push","once","off","apply","arguments","removeListener","removeAllListeners","removeEventListener","length","callbacks","cb","i","splice","emit","args","Array","slice","len","emitReserved","listeners","hasListeners","PACKET_TYPES","Object","create","PACKET_TYPES_REVERSE","keys","forEach","ERROR_PACKET","type","data","withNativeBlob","Blob","toString","call","withNativeArrayBuffer","ArrayBuffer","isView","buffer","encodePacket","supportsBinary","callback","encodeBlobAsBase64","fileReader","FileReader","onload","content","result","split","readAsDataURL","decode","decodePacket","encodedPacket","binaryType","mapBinary","charAt","decodeBase64Packet","substring","packetType","decoded","base64","SEPARATOR","String","fromCharCode","encodePayload","packets","encodedPackets","count","packet","decodePayload","encodedPayload","decodedPacket","protocol","Transport","writable","query","readyState","socket","msg","desc","Error","description","doOpen","doClose","onClose","write","onPacket","alphabet","map","seed","prev","encode","num","encoded","Math","floor","str","yeast","now","Date","yeast_1","encodeURIComponent","qs","qry","pairs","l","pair","decodeURIComponent","Polling","polling","poll","onPause","pause","total","doPoll","onOpen","close","doWrite","schema","secure","port","timestampRequests","timestampParam","sid","b64","Number","encodedQuery","parseqs","ipv6","hostname","indexOf","path","empty","hasXHR2","xhr","responseType","XHR","location","isSSL","xd","xs","forceBase64","Request","uri","req","request","method","onError","onData","pollXhr","async","undefined","xscheme","open","extraHeaders","setDisableHeaderCheck","setRequestHeader","withCredentials","requestTimeout","timeout","onreadystatechange","status","onLoad","send","document","index","requestsCount","requests","cleanup","onSuccess","fromError","abort","responseText","attachEvent","unloadHandler","terminationEvent","nextTick","isPromiseAvailable","Promise","resolve","then","WebSocket","MozWebSocket","usingBrowserWebSocket","defaultBinaryType","isReactNative","navigator","product","toLowerCase","WS","check","protocols","headers","ws","addEventListeners","onopen","autoUnref","_socket","unref","onclose","onmessage","ev","onerror","lastPacket","name","transports","websocket","re","parts","parseuri","src","b","replace","m","exec","source","host","authority","ipv6uri","pathNames","queryKey","regx","names","substr","$0","$1","$2","Socket","writeBuffer","prevBufferLen","agent","upgrade","rememberUpgrade","rejectUnauthorized","perMessageDeflate","threshold","transportOptions","closeOnBeforeunload","id","upgrades","pingInterval","pingTimeout","pingTimeoutTimer","transport","offlineEventListener","clone","EIO","priorWebsocketSuccess","createTransport","shift","setTransport","onDrain","failed","onTransportOpen","upgrading","flush","freezeTransport","error","onTransportClose","onupgrade","to","probe","onHandshake","JSON","parse","resetPingTimeout","sendPacket","code","filterUpgrades","options","compress","cleanupAndClose","waitForUpgrade","reason","filteredUpgrades","j","o"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"engine.io.js","sources":["../node_modules/engine.io-parser/build/esm/commons.js","../node_modules/engine.io-parser/build/esm/encodePacket.browser.js","../node_modules/@socket.io/base64-arraybuffer/dist/base64-arraybuffer.es5.js","../node_modules/engine.io-parser/build/esm/decodePacket.browser.js","../node_modules/engine.io-parser/build/esm/index.js","../node_modules/@socket.io/component-emitter/index.mjs","../build/esm/globalThis.browser.js","../build/esm/util.js","../build/esm/transport.js","../build/esm/contrib/yeast.js","../build/esm/contrib/parseqs.js","../build/esm/contrib/has-cors.js","../build/esm/transports/xmlhttprequest.browser.js","../build/esm/transports/polling.js","../build/esm/transports/websocket-constructor.browser.js","../build/esm/transports/websocket.js","../build/esm/transports/index.js","../build/esm/contrib/parseuri.js","../build/esm/socket.js","../build/esm/browser-entrypoint.js"],"sourcesContent":["const PACKET_TYPES = Object.create(null); // no Map = no polyfill\nPACKET_TYPES[\"open\"] = \"0\";\nPACKET_TYPES[\"close\"] = \"1\";\nPACKET_TYPES[\"ping\"] = \"2\";\nPACKET_TYPES[\"pong\"] = \"3\";\nPACKET_TYPES[\"message\"] = \"4\";\nPACKET_TYPES[\"upgrade\"] = \"5\";\nPACKET_TYPES[\"noop\"] = \"6\";\nconst PACKET_TYPES_REVERSE = Object.create(null);\nObject.keys(PACKET_TYPES).forEach(key => {\n PACKET_TYPES_REVERSE[PACKET_TYPES[key]] = key;\n});\nconst ERROR_PACKET = { type: \"error\", data: \"parser error\" };\nexport { PACKET_TYPES, PACKET_TYPES_REVERSE, ERROR_PACKET };\n","import { PACKET_TYPES } from \"./commons.js\";\nconst withNativeBlob = typeof Blob === \"function\" ||\n (typeof Blob !== \"undefined\" &&\n Object.prototype.toString.call(Blob) === \"[object BlobConstructor]\");\nconst withNativeArrayBuffer = typeof ArrayBuffer === \"function\";\n// ArrayBuffer.isView method is not defined in IE10\nconst isView = obj => {\n return typeof ArrayBuffer.isView === \"function\"\n ? ArrayBuffer.isView(obj)\n : obj && obj.buffer instanceof ArrayBuffer;\n};\nconst encodePacket = ({ type, data }, supportsBinary, callback) => {\n if (withNativeBlob && data instanceof Blob) {\n if (supportsBinary) {\n return callback(data);\n }\n else {\n return encodeBlobAsBase64(data, callback);\n }\n }\n else if (withNativeArrayBuffer &&\n (data instanceof ArrayBuffer || isView(data))) {\n if (supportsBinary) {\n return callback(data);\n }\n else {\n return encodeBlobAsBase64(new Blob([data]), callback);\n }\n }\n // plain string\n return callback(PACKET_TYPES[type] + (data || \"\"));\n};\nconst encodeBlobAsBase64 = (data, callback) => {\n const fileReader = new FileReader();\n fileReader.onload = function () {\n const content = fileReader.result.split(\",\")[1];\n callback(\"b\" + content);\n };\n return fileReader.readAsDataURL(data);\n};\nexport default encodePacket;\n","/*\n * base64-arraybuffer 1.0.1 \n * Copyright (c) 2022 Niklas von Hertzen \n * Released under MIT License\n */\nvar chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n// Use a lookup table to find the index.\nvar lookup = typeof Uint8Array === 'undefined' ? [] : new Uint8Array(256);\nfor (var i = 0; i < chars.length; i++) {\n lookup[chars.charCodeAt(i)] = i;\n}\nvar encode = function (arraybuffer) {\n var bytes = new Uint8Array(arraybuffer), i, len = bytes.length, base64 = '';\n for (i = 0; i < len; i += 3) {\n base64 += chars[bytes[i] >> 2];\n base64 += chars[((bytes[i] & 3) << 4) | (bytes[i + 1] >> 4)];\n base64 += chars[((bytes[i + 1] & 15) << 2) | (bytes[i + 2] >> 6)];\n base64 += chars[bytes[i + 2] & 63];\n }\n if (len % 3 === 2) {\n base64 = base64.substring(0, base64.length - 1) + '=';\n }\n else if (len % 3 === 1) {\n base64 = base64.substring(0, base64.length - 2) + '==';\n }\n return base64;\n};\nvar decode = function (base64) {\n var bufferLength = base64.length * 0.75, len = base64.length, i, p = 0, encoded1, encoded2, encoded3, encoded4;\n if (base64[base64.length - 1] === '=') {\n bufferLength--;\n if (base64[base64.length - 2] === '=') {\n bufferLength--;\n }\n }\n var arraybuffer = new ArrayBuffer(bufferLength), bytes = new Uint8Array(arraybuffer);\n for (i = 0; i < len; i += 4) {\n encoded1 = lookup[base64.charCodeAt(i)];\n encoded2 = lookup[base64.charCodeAt(i + 1)];\n encoded3 = lookup[base64.charCodeAt(i + 2)];\n encoded4 = lookup[base64.charCodeAt(i + 3)];\n bytes[p++] = (encoded1 << 2) | (encoded2 >> 4);\n bytes[p++] = ((encoded2 & 15) << 4) | (encoded3 >> 2);\n bytes[p++] = ((encoded3 & 3) << 6) | (encoded4 & 63);\n }\n return arraybuffer;\n};\n\nexport { decode, encode };\n//# sourceMappingURL=base64-arraybuffer.es5.js.map\n","import { ERROR_PACKET, PACKET_TYPES_REVERSE } from \"./commons.js\";\nimport { decode } from \"@socket.io/base64-arraybuffer\";\nconst withNativeArrayBuffer = typeof ArrayBuffer === \"function\";\nconst decodePacket = (encodedPacket, binaryType) => {\n if (typeof encodedPacket !== \"string\") {\n return {\n type: \"message\",\n data: mapBinary(encodedPacket, binaryType)\n };\n }\n const type = encodedPacket.charAt(0);\n if (type === \"b\") {\n return {\n type: \"message\",\n data: decodeBase64Packet(encodedPacket.substring(1), binaryType)\n };\n }\n const packetType = PACKET_TYPES_REVERSE[type];\n if (!packetType) {\n return ERROR_PACKET;\n }\n return encodedPacket.length > 1\n ? {\n type: PACKET_TYPES_REVERSE[type],\n data: encodedPacket.substring(1)\n }\n : {\n type: PACKET_TYPES_REVERSE[type]\n };\n};\nconst decodeBase64Packet = (data, binaryType) => {\n if (withNativeArrayBuffer) {\n const decoded = decode(data);\n return mapBinary(decoded, binaryType);\n }\n else {\n return { base64: true, data }; // fallback for old browsers\n }\n};\nconst mapBinary = (data, binaryType) => {\n switch (binaryType) {\n case \"blob\":\n return data instanceof ArrayBuffer ? new Blob([data]) : data;\n case \"arraybuffer\":\n default:\n return data; // assuming the data is already an ArrayBuffer\n }\n};\nexport default decodePacket;\n","import encodePacket from \"./encodePacket.js\";\nimport decodePacket from \"./decodePacket.js\";\nconst SEPARATOR = String.fromCharCode(30); // see https://en.wikipedia.org/wiki/Delimiter#ASCII_delimited_text\nconst encodePayload = (packets, callback) => {\n // some packets may be added to the array while encoding, so the initial length must be saved\n const length = packets.length;\n const encodedPackets = new Array(length);\n let count = 0;\n packets.forEach((packet, i) => {\n // force base64 encoding for binary packets\n encodePacket(packet, false, encodedPacket => {\n encodedPackets[i] = encodedPacket;\n if (++count === length) {\n callback(encodedPackets.join(SEPARATOR));\n }\n });\n });\n};\nconst decodePayload = (encodedPayload, binaryType) => {\n const encodedPackets = encodedPayload.split(SEPARATOR);\n const packets = [];\n for (let i = 0; i < encodedPackets.length; i++) {\n const decodedPacket = decodePacket(encodedPackets[i], binaryType);\n packets.push(decodedPacket);\n if (decodedPacket.type === \"error\") {\n break;\n }\n }\n return packets;\n};\nexport const protocol = 4;\nexport { encodePacket, encodePayload, decodePacket, decodePayload };\n","/**\n * Initialize a new `Emitter`.\n *\n * @api public\n */\n\nexport function Emitter(obj) {\n if (obj) return mixin(obj);\n}\n\n/**\n * Mixin the emitter properties.\n *\n * @param {Object} obj\n * @return {Object}\n * @api private\n */\n\nfunction mixin(obj) {\n for (var key in Emitter.prototype) {\n obj[key] = Emitter.prototype[key];\n }\n return obj;\n}\n\n/**\n * Listen on the given `event` with `fn`.\n *\n * @param {String} event\n * @param {Function} fn\n * @return {Emitter}\n * @api public\n */\n\nEmitter.prototype.on =\nEmitter.prototype.addEventListener = function(event, fn){\n this._callbacks = this._callbacks || {};\n (this._callbacks['$' + event] = this._callbacks['$' + event] || [])\n .push(fn);\n return this;\n};\n\n/**\n * Adds an `event` listener that will be invoked a single\n * time then automatically removed.\n *\n * @param {String} event\n * @param {Function} fn\n * @return {Emitter}\n * @api public\n */\n\nEmitter.prototype.once = function(event, fn){\n function on() {\n this.off(event, on);\n fn.apply(this, arguments);\n }\n\n on.fn = fn;\n this.on(event, on);\n return this;\n};\n\n/**\n * Remove the given callback for `event` or all\n * registered callbacks.\n *\n * @param {String} event\n * @param {Function} fn\n * @return {Emitter}\n * @api public\n */\n\nEmitter.prototype.off =\nEmitter.prototype.removeListener =\nEmitter.prototype.removeAllListeners =\nEmitter.prototype.removeEventListener = function(event, fn){\n this._callbacks = this._callbacks || {};\n\n // all\n if (0 == arguments.length) {\n this._callbacks = {};\n return this;\n }\n\n // specific event\n var callbacks = this._callbacks['$' + event];\n if (!callbacks) return this;\n\n // remove all handlers\n if (1 == arguments.length) {\n delete this._callbacks['$' + event];\n return this;\n }\n\n // remove specific handler\n var cb;\n for (var i = 0; i < callbacks.length; i++) {\n cb = callbacks[i];\n if (cb === fn || cb.fn === fn) {\n callbacks.splice(i, 1);\n break;\n }\n }\n\n // Remove event specific arrays for event types that no\n // one is subscribed for to avoid memory leak.\n if (callbacks.length === 0) {\n delete this._callbacks['$' + event];\n }\n\n return this;\n};\n\n/**\n * Emit `event` with the given args.\n *\n * @param {String} event\n * @param {Mixed} ...\n * @return {Emitter}\n */\n\nEmitter.prototype.emit = function(event){\n this._callbacks = this._callbacks || {};\n\n var args = new Array(arguments.length - 1)\n , callbacks = this._callbacks['$' + event];\n\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n\n if (callbacks) {\n callbacks = callbacks.slice(0);\n for (var i = 0, len = callbacks.length; i < len; ++i) {\n callbacks[i].apply(this, args);\n }\n }\n\n return this;\n};\n\n// alias used for reserved events (protected method)\nEmitter.prototype.emitReserved = Emitter.prototype.emit;\n\n/**\n * Return array of callbacks for `event`.\n *\n * @param {String} event\n * @return {Array}\n * @api public\n */\n\nEmitter.prototype.listeners = function(event){\n this._callbacks = this._callbacks || {};\n return this._callbacks['$' + event] || [];\n};\n\n/**\n * Check if this emitter has `event` handlers.\n *\n * @param {String} event\n * @return {Boolean}\n * @api public\n */\n\nEmitter.prototype.hasListeners = function(event){\n return !! this.listeners(event).length;\n};\n","export default (() => {\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 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 = setTimeout;\nconst NATIVE_CLEAR_TIMEOUT = 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 = setTimeout.bind(globalThis);\n obj.clearTimeoutFn = clearTimeout.bind(globalThis);\n }\n}\n// base64 encoded buffers are about 33% bigger (https://en.wikipedia.org/wiki/Base64)\nconst BASE64_OVERHEAD = 1.33;\n// we could also have used `new Blob([obj]).size`, but it isn't supported in IE9\nexport function byteLength(obj) {\n if (typeof obj === \"string\") {\n return utf8Length(obj);\n }\n // arraybuffer or blob\n return Math.ceil((obj.byteLength || obj.size) * BASE64_OVERHEAD);\n}\nfunction utf8Length(str) {\n let c = 0, length = 0;\n for (let i = 0, l = str.length; i < l; i++) {\n c = str.charCodeAt(i);\n if (c < 0x80) {\n length += 1;\n }\n else if (c < 0x800) {\n length += 2;\n }\n else if (c < 0xd800 || c >= 0xe000) {\n length += 3;\n }\n else {\n i++;\n length += 4;\n }\n }\n return length;\n}\n","import { decodePacket } from \"engine.io-parser\";\nimport { Emitter } from \"@socket.io/component-emitter\";\nimport { installTimerFunctions } from \"./util.js\";\nclass TransportError extends Error {\n constructor(reason, description, context) {\n super(reason);\n this.description = description;\n this.context = context;\n this.type = \"TransportError\";\n }\n}\nexport class Transport extends Emitter {\n /**\n * Transport abstract constructor.\n *\n * @param {Object} options.\n * @api private\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.readyState = \"\";\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 * @api 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 * @api public\n */\n open() {\n if (\"closed\" === this.readyState || \"\" === this.readyState) {\n this.readyState = \"opening\";\n this.doOpen();\n }\n return this;\n }\n /**\n * Closes the transport.\n *\n * @api public\n */\n close() {\n if (\"opening\" === this.readyState || \"open\" === this.readyState) {\n this.doClose();\n this.onClose();\n }\n return this;\n }\n /**\n * Sends multiple packets.\n *\n * @param {Array} packets\n * @api public\n */\n send(packets) {\n if (\"open\" === this.readyState) {\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 * @api 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 * @api 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 * @api protected\n */\n onPacket(packet) {\n super.emitReserved(\"packet\", packet);\n }\n /**\n * Called upon close.\n *\n * @api protected\n */\n onClose(details) {\n this.readyState = \"closed\";\n super.emitReserved(\"close\", details);\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 globalThis from \"../globalThis.js\";\nexport default function (opts) {\n const xdomain = opts.xdomain;\n // XMLHttpRequest can be disabled on IE\n try {\n if (\"undefined\" !== typeof XMLHttpRequest && (!xdomain || hasCORS)) {\n return new XMLHttpRequest();\n }\n }\n catch (e) { }\n if (!xdomain) {\n try {\n return new globalThis[[\"Active\"].concat(\"Object\").join(\"X\")](\"Microsoft.XMLHTTP\");\n }\n catch (e) { }\n }\n}\n","import { Transport } from \"../transport.js\";\nimport { yeast } from \"../contrib/yeast.js\";\nimport { encode } from \"../contrib/parseqs.js\";\nimport { encodePayload, decodePayload } from \"engine.io-parser\";\nimport XMLHttpRequest from \"./xmlhttprequest.js\";\nimport { Emitter } from \"@socket.io/component-emitter\";\nimport { installTimerFunctions, pick } from \"../util.js\";\nimport 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 * @api public\n */\n constructor(opts) {\n super(opts);\n this.polling = false;\n if (typeof location !== \"undefined\") {\n const isSSL = \"https:\" === location.protocol;\n let port = location.port;\n // some user agents have empty `location.port`\n if (!port) {\n port = isSSL ? \"443\" : \"80\";\n }\n this.xd =\n (typeof location !== \"undefined\" &&\n opts.hostname !== location.hostname) ||\n port !== opts.port;\n this.xs = opts.secure !== isSSL;\n }\n /**\n * XHR supports binary\n */\n const forceBase64 = opts && opts.forceBase64;\n this.supportsBinary = hasXHR2 && !forceBase64;\n }\n /**\n * Transport name.\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 * @api private\n */\n doOpen() {\n this.poll();\n }\n /**\n * Pauses polling.\n *\n * @param {Function} callback upon buffers are flushed and transport is paused\n * @api private\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 * @api public\n */\n poll() {\n this.polling = true;\n this.doPoll();\n this.emitReserved(\"poll\");\n }\n /**\n * Overloads onData to detect payloads.\n *\n * @api private\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 * @api private\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} data packets\n * @param {Function} drain callback\n * @api private\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 * @api private\n */\n uri() {\n let query = this.query || {};\n const schema = this.opts.secure ? \"https\" : \"http\";\n let port = \"\";\n // cache busting is forced\n if (false !== this.opts.timestampRequests) {\n query[this.opts.timestampParam] = yeast();\n }\n if (!this.supportsBinary && !query.sid) {\n query.b64 = 1;\n }\n // avoid port if default for schema\n if (this.opts.port &&\n ((\"https\" === schema && Number(this.opts.port) !== 443) ||\n (\"http\" === schema && Number(this.opts.port) !== 80))) {\n port = \":\" + this.opts.port;\n }\n const encodedQuery = encode(query);\n const ipv6 = this.opts.hostname.indexOf(\":\") !== -1;\n return (schema +\n \"://\" +\n (ipv6 ? \"[\" + this.opts.hostname + \"]\" : this.opts.hostname) +\n port +\n this.opts.path +\n (encodedQuery.length ? \"?\" + encodedQuery : \"\"));\n }\n /**\n * Creates a request.\n *\n * @param {String} method\n * @api private\n */\n request(opts = {}) {\n Object.assign(opts, { xd: this.xd, xs: this.xs }, this.opts);\n return new Request(this.uri(), opts);\n }\n /**\n * Sends data.\n *\n * @param {String} data to send.\n * @param {Function} called upon flush.\n * @api 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 * @api 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 * @api public\n */\n constructor(uri, opts) {\n super();\n installTimerFunctions(this, opts);\n this.opts = opts;\n this.method = opts.method || \"GET\";\n this.uri = uri;\n this.async = false !== opts.async;\n this.data = undefined !== opts.data ? opts.data : null;\n this.create();\n }\n /**\n * Creates the XHR object and sends the request.\n *\n * @api private\n */\n create() {\n const opts = pick(this.opts, \"agent\", \"pfx\", \"key\", \"passphrase\", \"cert\", \"ca\", \"ciphers\", \"rejectUnauthorized\", \"autoUnref\");\n opts.xdomain = !!this.opts.xd;\n opts.xscheme = !!this.opts.xs;\n const xhr = (this.xhr = new XMLHttpRequest(opts));\n try {\n xhr.open(this.method, this.uri, this.async);\n try {\n if (this.opts.extraHeaders) {\n xhr.setDisableHeaderCheck && xhr.setDisableHeaderCheck(true);\n for (let i in this.opts.extraHeaders) {\n if (this.opts.extraHeaders.hasOwnProperty(i)) {\n xhr.setRequestHeader(i, this.opts.extraHeaders[i]);\n }\n }\n }\n }\n catch (e) { }\n if (\"POST\" === this.method) {\n try {\n xhr.setRequestHeader(\"Content-type\", \"text/plain;charset=UTF-8\");\n }\n catch (e) { }\n }\n try {\n xhr.setRequestHeader(\"Accept\", \"*/*\");\n }\n catch (e) { }\n // ie6 check\n if (\"withCredentials\" in xhr) {\n xhr.withCredentials = this.opts.withCredentials;\n }\n if (this.opts.requestTimeout) {\n xhr.timeout = this.opts.requestTimeout;\n }\n xhr.onreadystatechange = () => {\n if (4 !== xhr.readyState)\n return;\n if (200 === xhr.status || 1223 === xhr.status) {\n this.onLoad();\n }\n else {\n // make sure the `error` event handler that's user-set\n // does not throw in the same tick and gets caught here\n this.setTimeoutFn(() => {\n this.onError(typeof xhr.status === \"number\" ? xhr.status : 0);\n }, 0);\n }\n };\n xhr.send(this.data);\n }\n catch (e) {\n // Need to defer since .create() is called directly from the constructor\n // and thus the 'error' event can only be only bound *after* this exception\n // occurs. Therefore, also, we cannot throw here at all.\n this.setTimeoutFn(() => {\n this.onError(e);\n }, 0);\n return;\n }\n if (typeof document !== \"undefined\") {\n this.index = Request.requestsCount++;\n Request.requests[this.index] = this;\n }\n }\n /**\n * Called upon error.\n *\n * @api private\n */\n onError(err) {\n this.emitReserved(\"error\", err, this.xhr);\n this.cleanup(true);\n }\n /**\n * Cleans up house.\n *\n * @api 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 * @api 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 * @api public\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 globalThis from \"../globalThis.js\";\nexport const nextTick = (() => {\n const isPromiseAvailable = typeof Promise === \"function\" && typeof Promise.resolve === \"function\";\n if (isPromiseAvailable) {\n return cb => Promise.resolve().then(cb);\n }\n else {\n return (cb, setTimeoutFn) => setTimeoutFn(cb, 0);\n }\n})();\nexport const WebSocket = globalThis.WebSocket || globalThis.MozWebSocket;\nexport const usingBrowserWebSocket = true;\nexport const defaultBinaryType = \"arraybuffer\";\n","import { Transport } from \"../transport.js\";\nimport { encode } from \"../contrib/parseqs.js\";\nimport { yeast } from \"../contrib/yeast.js\";\nimport { pick } from \"../util.js\";\nimport { defaultBinaryType, nextTick, usingBrowserWebSocket, WebSocket } from \"./websocket-constructor.js\";\nimport { encodePacket } from \"engine.io-parser\";\n// detect ReactNative environment\nconst isReactNative = typeof navigator !== \"undefined\" &&\n typeof navigator.product === \"string\" &&\n navigator.product.toLowerCase() === \"reactnative\";\nexport class WS extends Transport {\n /**\n * WebSocket transport constructor.\n *\n * @api {Object} connection options\n * @api public\n */\n constructor(opts) {\n super(opts);\n this.supportsBinary = !opts.forceBase64;\n }\n /**\n * Transport name.\n *\n * @api public\n */\n get name() {\n return \"websocket\";\n }\n /**\n * Opens socket.\n *\n * @api private\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 * @api 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 /**\n * Writes data to socket.\n *\n * @param {Array} array of packets.\n * @api private\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 /**\n * Closes socket.\n *\n * @api private\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 * @api private\n */\n uri() {\n let query = this.query || {};\n const schema = this.opts.secure ? \"wss\" : \"ws\";\n let port = \"\";\n // avoid port if default for schema\n if (this.opts.port &&\n ((\"wss\" === schema && Number(this.opts.port) !== 443) ||\n (\"ws\" === schema && Number(this.opts.port) !== 80))) {\n port = \":\" + this.opts.port;\n }\n // append timestamp to URI\n if (this.opts.timestampRequests) {\n query[this.opts.timestampParam] = yeast();\n }\n // communicate binary support capabilities\n if (!this.supportsBinary) {\n query.b64 = 1;\n }\n const encodedQuery = encode(query);\n const ipv6 = this.opts.hostname.indexOf(\":\") !== -1;\n return (schema +\n \"://\" +\n (ipv6 ? \"[\" + this.opts.hostname + \"]\" : this.opts.hostname) +\n port +\n this.opts.path +\n (encodedQuery.length ? \"?\" + encodedQuery : \"\"));\n }\n /**\n * Feature detection for WebSocket.\n *\n * @return {Boolean} whether this transport is available.\n * @api public\n */\n check() {\n return (!!WebSocket &&\n !(\"__initialize\" in WebSocket && this.name === WS.prototype.name));\n }\n}\n","import { Polling } from \"./polling.js\";\nimport { WS } from \"./websocket.js\";\nexport const transports = {\n websocket: WS,\n polling: Polling\n};\n","// imported from https://github.com/galkn/parseuri\n/**\n * Parses an URI\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.substr(0, 1) == '/' || path.length === 0) {\n names.splice(0, 1);\n }\n if (path.substr(path.length - 1, 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 or options\n * @param {Object} opts - options\n * @api public\n */\n constructor(uri, opts = {}) {\n super();\n if (uri && \"object\" === typeof uri) {\n opts = uri;\n uri = null;\n }\n if (uri) {\n uri = parse(uri);\n opts.hostname = uri.host;\n opts.secure = uri.protocol === \"https\" || uri.protocol === \"wss\";\n opts.port = uri.port;\n if (uri.query)\n opts.query = uri.query;\n }\n else if (opts.host) {\n opts.hostname = parse(opts.host).host;\n }\n installTimerFunctions(this, opts);\n this.secure =\n null != opts.secure\n ? opts.secure\n : typeof location !== \"undefined\" && \"https:\" === location.protocol;\n if (opts.hostname && !opts.port) {\n // if no port is specified manually, use the protocol default\n opts.port = this.secure ? \"443\" : \"80\";\n }\n this.hostname =\n opts.hostname ||\n (typeof location !== \"undefined\" ? location.hostname : \"localhost\");\n this.port =\n opts.port ||\n (typeof location !== \"undefined\" && location.port\n ? location.port\n : this.secure\n ? \"443\"\n : \"80\");\n this.transports = opts.transports || [\"polling\", \"websocket\"];\n this.readyState = \"\";\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 rejectUnauthorized: true,\n perMessageDeflate: {\n threshold: 1024\n },\n transportOptions: {},\n closeOnBeforeunload: true\n }, opts);\n this.opts.path = this.opts.path.replace(/\\/$/, \"\") + \"/\";\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 addEventListener(\"beforeunload\", () => {\n if (this.transport) {\n // silently close the transport\n this.transport.removeAllListeners();\n this.transport.close();\n }\n }, 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} transport name\n * @return {Transport}\n * @api 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 * @api 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 * @api 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} transport name\n * @api private\n */\n probe(name) {\n let transport = this.createTransport(name);\n let failed = false;\n Socket.priorWebsocketSuccess = false;\n const onTransportOpen = () => {\n if (failed)\n return;\n transport.send([{ type: \"ping\", data: \"probe\" }]);\n transport.once(\"packet\", msg => {\n if (failed)\n return;\n if (\"pong\" === msg.type && \"probe\" === msg.data) {\n this.upgrading = true;\n this.emitReserved(\"upgrading\", transport);\n if (!transport)\n return;\n Socket.priorWebsocketSuccess = \"websocket\" === transport.name;\n this.transport.pause(() => {\n if (failed)\n return;\n if (\"closed\" === this.readyState)\n return;\n cleanup();\n this.setTransport(transport);\n transport.send([{ type: \"upgrade\" }]);\n this.emitReserved(\"upgrade\", transport);\n transport = null;\n this.upgrading = false;\n this.flush();\n });\n }\n else {\n const err = new Error(\"probe error\");\n // @ts-ignore\n err.transport = transport.name;\n this.emitReserved(\"upgradeError\", err);\n }\n });\n };\n function freezeTransport() {\n if (failed)\n return;\n // Any callback called by transport should be ignored since now\n failed = true;\n cleanup();\n transport.close();\n transport = null;\n }\n // Handle any error that happens while probing\n const onerror = err => {\n const error = new Error(\"probe error: \" + err);\n // @ts-ignore\n error.transport = transport.name;\n freezeTransport();\n this.emitReserved(\"upgradeError\", error);\n };\n function onTransportClose() {\n onerror(\"transport closed\");\n }\n // When the socket is closed while we're probing\n function onclose() {\n onerror(\"socket closed\");\n }\n // When the socket is upgraded while we're probing\n function onupgrade(to) {\n if (transport && to.name !== transport.name) {\n freezeTransport();\n }\n }\n // Remove all listeners on the transport and on self\n const cleanup = () => {\n transport.removeListener(\"open\", onTransportOpen);\n transport.removeListener(\"error\", onerror);\n transport.removeListener(\"close\", onTransportClose);\n this.off(\"close\", onclose);\n this.off(\"upgrading\", onupgrade);\n };\n transport.once(\"open\", onTransportOpen);\n transport.once(\"error\", onerror);\n transport.once(\"close\", onTransportClose);\n this.once(\"close\", onclose);\n this.once(\"upgrading\", onupgrade);\n transport.open();\n }\n /**\n * Called when connection is deemed open.\n *\n * @api 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 &&\n this.opts.upgrade &&\n this.transport.pause) {\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 * @api 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 * @api 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 * @api 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 * @api 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 * @api 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} message.\n * @param {Function} callback function.\n * @param {Object} options.\n * @return {Socket} for chaining.\n * @api public\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} packet type.\n * @param {String} data.\n * @param {Object} options.\n * @param {Function} callback function.\n * @api 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 * @api public\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 * @api 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 * @api 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(\"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} server upgrades\n * @api private\n *\n */\n filterUpgrades(upgrades) {\n const filteredUpgrades = [];\n let i = 0;\n const j = upgrades.length;\n for (; i < j; i++) {\n if (~this.transports.indexOf(upgrades[i]))\n filteredUpgrades.push(upgrades[i]);\n }\n return filteredUpgrades;\n }\n}\nSocket.protocol = protocol;\n","import { Socket } from \"./socket.js\";\nexport default (uri, opts) => new Socket(uri, opts);\n"],"names":["PACKET_TYPES","Object","create","PACKET_TYPES_REVERSE","keys","forEach","key","ERROR_PACKET","type","data","withNativeBlob","Blob","prototype","toString","call","withNativeArrayBuffer","ArrayBuffer","isView","obj","buffer","encodePacket","supportsBinary","callback","encodeBlobAsBase64","fileReader","FileReader","onload","content","result","split","readAsDataURL","i","decode","decodePacket","encodedPacket","binaryType","mapBinary","charAt","decodeBase64Packet","substring","packetType","length","decoded","base64","SEPARATOR","String","fromCharCode","encodePayload","packets","encodedPackets","Array","count","packet","join","decodePayload","encodedPayload","decodedPacket","push","protocol","Emitter","mixin","on","addEventListener","event","fn","_callbacks","once","off","apply","arguments","removeListener","removeAllListeners","removeEventListener","callbacks","cb","splice","emit","args","slice","len","emitReserved","listeners","hasListeners","self","window","Function","pick","attr","reduce","acc","k","hasOwnProperty","NATIVE_SET_TIMEOUT","setTimeout","NATIVE_CLEAR_TIMEOUT","clearTimeout","installTimerFunctions","opts","useNativeTimers","setTimeoutFn","bind","globalThis","clearTimeoutFn","BASE64_OVERHEAD","byteLength","utf8Length","Math","ceil","size","str","c","l","charCodeAt","TransportError","reason","description","context","Error","Transport","writable","query","readyState","socket","doOpen","doClose","onClose","write","onPacket","details","alphabet","map","seed","prev","encode","num","encoded","floor","yeast","now","Date","encodeURIComponent","qs","qry","pairs","pair","decodeURIComponent","value","XMLHttpRequest","err","hasCORS","xdomain","e","concat","empty","hasXHR2","xhr","responseType","Polling","polling","location","isSSL","port","xd","hostname","xs","secure","forceBase64","poll","onPause","pause","total","doPoll","onOpen","close","doWrite","schema","timestampRequests","timestampParam","sid","b64","Number","encodedQuery","ipv6","indexOf","path","Request","uri","req","request","method","xhrStatus","onError","onData","pollXhr","async","undefined","xscheme","open","extraHeaders","setDisableHeaderCheck","setRequestHeader","withCredentials","requestTimeout","timeout","onreadystatechange","status","onLoad","send","document","index","requestsCount","requests","cleanup","fromError","abort","responseText","attachEvent","unloadHandler","terminationEvent","nextTick","isPromiseAvailable","Promise","resolve","then","WebSocket","MozWebSocket","usingBrowserWebSocket","defaultBinaryType","isReactNative","navigator","product","toLowerCase","WS","check","protocols","headers","ws","addEventListeners","onopen","autoUnref","_socket","unref","onclose","closeEvent","onmessage","ev","onerror","lastPacket","name","transports","websocket","re","parts","parse","src","b","replace","m","exec","source","host","authority","ipv6uri","pathNames","queryKey","regx","names","substr","$0","$1","$2","Socket","writeBuffer","prevBufferLen","agent","upgrade","rememberUpgrade","rejectUnauthorized","perMessageDeflate","threshold","transportOptions","closeOnBeforeunload","id","upgrades","pingInterval","pingTimeout","pingTimeoutTimer","transport","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"],"mappings":"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"} \ No newline at end of file diff --git a/dist/engine.io.min.js b/dist/engine.io.min.js index 87abce1b..50ac4a6b 100644 --- a/dist/engine.io.min.js +++ b/dist/engine.io.min.js @@ -1,7 +1,7 @@ /*! - * Engine.IO v6.1.1 - * (c) 2014-2021 Guillermo Rauch + * Engine.IO v6.2.0 + * (c) 2014-2022 Guillermo Rauch * Released under the MIT License. */ -!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t="undefined"!=typeof globalThis?globalThis:t||self).eio=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 r(t,e){for(var r=0;r1?e-1:0),n=1;n1?{type:S[r],data:t.substring(1)}:{type:S[r]}:x},j=function(t,e){if(A){var r=function(t){var e,r,n,o,s,i=.75*t.length,a=t.length,u=0;"="===t[t.length-1]&&(i--,"="===t[t.length-2]&&i--);var c=new ArrayBuffer(i),h=new Uint8Array(c);for(e=0;e>4,h[u++]=(15&n)<<4|o>>2,h[u++]=(3&o)<<6|63&s;return c}(t);return U(r,e)}return{base64:!0,data:t}},U=function(t,e){return"blob"===e&&t instanceof ArrayBuffer?new Blob([t]):t},H=String.fromCharCode(30),D=function(t){s(o,t);var r=h(o);function o(t){var n;return e(this,o),(n=r.call(this)).writable=!1,b(u(n),t),n.opts=t,n.query=t.query,n.readyState="",n.socket=t.socket,n}return n(o,[{key:"onError",value:function(t,e){var r=new Error(t);return r.type="TransportError",r.description=e,p(i(o.prototype),"emit",this).call(this,"error",r),this}},{key:"open",value:function(){return"closed"!==this.readyState&&""!==this.readyState||(this.readyState="opening",this.doOpen()),this}},{key:"close",value:function(){return"opening"!==this.readyState&&"open"!==this.readyState||(this.doClose(),this.onClose()),this}},{key:"send",value:function(t){"open"===this.readyState&&this.write(t)}},{key:"onOpen",value:function(){this.readyState="open",this.writable=!0,p(i(o.prototype),"emit",this).call(this,"open")}},{key:"onData",value:function(t){var e=_(t,this.socket.binaryType);this.onPacket(e)}},{key:"onPacket",value:function(t){p(i(o.prototype),"emit",this).call(this,"packet",t)}},{key:"onClose",value:function(){this.readyState="closed",p(i(o.prototype),"emit",this).call(this,"close")}}]),o}(k),F="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-_".split(""),I={},M=0,W=0;function N(t){var e="";do{e=F[t%64]+e,t=Math.floor(t/64)}while(t>0);return e}function X(){var t=N(+new Date);return t!==P?(M=0,P=t):t+"."+N(M++)}for(;W<64;W++)I[F[W]]=W;X.encode=N,X.decode=function(t){var e=0;for(W=0;W0&&void 0!==arguments[0]?arguments[0]:{};return o(t,{xd:this.xd,xs:this.xs},this.opts),new Q(this.uri(),t)}},{key:"doWrite",value:function(t,e){var r=this,n=this.request({method:"POST",data:t});n.on("success",e),n.on("error",(function(t){r.onError("xhr post error",t)}))}},{key:"doPoll",value:function(){var t=this,e=this.request();e.on("data",this.onData.bind(this)),e.on("error",(function(e){t.onError("xhr poll error",e)})),this.pollXhr=e}}]),i}(V),Q=function(t){s(o,t);var r=h(o);function o(t,n){var s;return e(this,o),b(u(s=r.call(this)),n),s.opts=n,s.method=n.method||"GET",s.uri=t,s.async=!1!==n.async,s.data=void 0!==n.data?n.data:null,s.create(),s}return n(o,[{key:"create",value:function(){var t=this,e=v(this.opts,"agent","pfx","key","passphrase","cert","ca","ciphers","rejectUnauthorized","autoUnref");e.xdomain=!!this.opts.xd,e.xscheme=!!this.opts.xs;var r=this.xhr=new y(e);try{r.open(this.method,this.uri,this.async);try{if(this.opts.extraHeaders)for(var n in r.setDisableHeaderCheck&&r.setDisableHeaderCheck(!0),this.opts.extraHeaders)this.opts.extraHeaders.hasOwnProperty(n)&&r.setRequestHeader(n,this.opts.extraHeaders[n])}catch(t){}if("POST"===this.method)try{r.setRequestHeader("Content-type","text/plain;charset=UTF-8")}catch(t){}try{r.setRequestHeader("Accept","*/*")}catch(t){}"withCredentials"in r&&(r.withCredentials=this.opts.withCredentials),this.opts.requestTimeout&&(r.timeout=this.opts.requestTimeout),r.onreadystatechange=function(){4===r.readyState&&(200===r.status||1223===r.status?t.onLoad():t.setTimeoutFn((function(){t.onError("number"==typeof r.status?r.status:0)}),0))},r.send(this.data)}catch(e){return void this.setTimeoutFn((function(){t.onError(e)}),0)}"undefined"!=typeof document&&(this.index=o.requestsCount++,o.requests[this.index]=this)}},{key:"onSuccess",value:function(){this.emit("success"),this.cleanup()}},{key:"onData",value:function(t){this.emit("data",t),this.onSuccess()}},{key:"onError",value:function(t){this.emit("error",t),this.cleanup(!0)}},{key:"cleanup",value:function(t){if(void 0!==this.xhr&&null!==this.xhr){if(this.xhr.onreadystatechange=G,t)try{this.xhr.abort()}catch(t){}"undefined"!=typeof document&&delete o.requests[this.index],this.xhr=null}}},{key:"onLoad",value:function(){var t=this.xhr.responseText;null!==t&&this.onData(t)}},{key:"abort",value:function(){this.cleanup()}}]),o}(k);if(Q.requestsCount=0,Q.requests={},"undefined"!=typeof document)if("function"==typeof attachEvent)attachEvent("onunload",Y);else if("function"==typeof addEventListener){addEventListener("onpagehide"in d?"pagehide":"unload",Y,!1)}function Y(){for(var t in Q.requests)Q.requests.hasOwnProperty(t)&&Q.requests[t].abort()}var Z="function"==typeof Promise&&"function"==typeof Promise.resolve?function(t){return Promise.resolve().then(t)}:function(t,e){return e(t,0)},tt=d.WebSocket||d.MozWebSocket,et="undefined"!=typeof navigator&&"string"==typeof navigator.product&&"reactnative"===navigator.product.toLowerCase(),rt=function(t){s(o,t);var r=h(o);function o(t){var n;return e(this,o),(n=r.call(this,t)).supportsBinary=!t.forceBase64,n}return n(o,[{key:"doOpen",value:function(){if(this.check()){var t=this.uri(),e=this.opts.protocols,r=et?{}:v(this.opts,"agent","perMessageDeflate","pfx","key","passphrase","cert","ca","ciphers","rejectUnauthorized","localAddress","protocolVersion","origin","maxPayload","family","checkServerIdentity");this.opts.extraHeaders&&(r.headers=this.opts.extraHeaders);try{this.ws=et?new tt(t,e,r):e?new tt(t,e):new tt(t)}catch(t){return this.emit("error",t)}this.ws.binaryType=this.socket.binaryType||"arraybuffer",this.addEventListeners()}}},{key:"addEventListeners",value:function(){var t=this;this.ws.onopen=function(){t.opts.autoUnref&&t.ws._socket.unref(),t.onOpen()},this.ws.onclose=this.onClose.bind(this),this.ws.onmessage=function(e){return t.onData(e.data)},this.ws.onerror=function(e){return t.onError("websocket error",e)}}},{key:"write",value:function(t){var e=this;this.writable=!1;for(var r=function(r){var n=t[r],o=r===t.length-1;R(n,e.supportsBinary,(function(t){try{e.ws.send(t)}catch(t){}o&&Z((function(){e.writable=!0,e.emit("drain")}),e.setTimeoutFn)}))},n=0;n1&&void 0!==arguments[1]?arguments[1]:{};return e(this,a),n=i.call(this),r&&"object"===t(r)&&(s=r,r=null),r?(r=it(r),s.hostname=r.host,s.secure="https"===r.protocol||"wss"===r.protocol,s.port=r.port,r.query&&(s.query=r.query)):s.host&&(s.hostname=it(s.host).host),b(u(n),s),n.secure=null!=s.secure?s.secure:"undefined"!=typeof location&&"https:"===location.protocol,s.hostname&&!s.port&&(s.port=n.secure?"443":"80"),n.hostname=s.hostname||("undefined"!=typeof location?location.hostname:"localhost"),n.port=s.port||("undefined"!=typeof location&&location.port?location.port:n.secure?"443":"80"),n.transports=s.transports||["polling","websocket"],n.readyState="",n.writeBuffer=[],n.prevBufferLen=0,n.opts=o({path:"/engine.io",agent:!1,withCredentials:!1,upgrade:!0,timestampParam:"t",rememberUpgrade:!1,rejectUnauthorized:!0,perMessageDeflate:{threshold:1024},transportOptions:{},closeOnBeforeunload:!0},s),n.opts.path=n.opts.path.replace(/\/$/,"")+"/","string"==typeof n.opts.query&&(n.opts.query=z.decode(n.opts.query)),n.id=null,n.upgrades=null,n.pingInterval=null,n.pingTimeout=null,n.pingTimeoutTimer=null,"function"==typeof addEventListener&&(n.opts.closeOnBeforeunload&&addEventListener("beforeunload",(function(){n.transport&&(n.transport.removeAllListeners(),n.transport.close())}),!1),"localhost"!==n.hostname&&(n.offlineEventListener=function(){n.onClose("transport close")},addEventListener("offline",n.offlineEventListener,!1))),n.open(),n}return n(a,[{key:"createTransport",value:function(t){var e=function(t){var e={};for(var r in t)t.hasOwnProperty(r)&&(e[r]=t[r]);return e}(this.opts.query);e.EIO=4,e.transport=t,this.id&&(e.sid=this.id);var r=o({},this.opts.transportOptions[t],this.opts,{query:e,socket:this,hostname:this.hostname,secure:this.secure,port:this.port});return new nt[t](r)}},{key:"open",value:function(){var t,e=this;if(this.opts.rememberUpgrade&&a.priorWebsocketSuccess&&-1!==this.transports.indexOf("websocket"))t="websocket";else{if(0===this.transports.length)return void this.setTimeoutFn((function(){e.emitReserved("error","No transports available")}),0);t=this.transports[0]}this.readyState="opening";try{t=this.createTransport(t)}catch(t){return this.transports.shift(),void this.open()}t.open(),this.setTransport(t)}},{key:"setTransport",value:function(t){var e=this;this.transport&&this.transport.removeAllListeners(),this.transport=t,t.on("drain",this.onDrain.bind(this)).on("packet",this.onPacket.bind(this)).on("error",this.onError.bind(this)).on("close",(function(){e.onClose("transport close")}))}},{key:"probe",value:function(t){var e=this,r=this.createTransport(t),n=!1;a.priorWebsocketSuccess=!1;var o=function(){n||(r.send([{type:"ping",data:"probe"}]),r.once("packet",(function(t){if(!n)if("pong"===t.type&&"probe"===t.data){if(e.upgrading=!0,e.emitReserved("upgrading",r),!r)return;a.priorWebsocketSuccess="websocket"===r.name,e.transport.pause((function(){n||"closed"!==e.readyState&&(p(),e.setTransport(r),r.send([{type:"upgrade"}]),e.emitReserved("upgrade",r),r=null,e.upgrading=!1,e.flush())}))}else{var o=new Error("probe error");o.transport=r.name,e.emitReserved("upgradeError",o)}})))};function s(){n||(n=!0,p(),r.close(),r=null)}var i=function(t){var n=new Error("probe error: "+t);n.transport=r.name,s(),e.emitReserved("upgradeError",n)};function u(){i("transport closed")}function c(){i("socket closed")}function h(t){r&&t.name!==r.name&&s()}var p=function(){r.removeListener("open",o),r.removeListener("error",i),r.removeListener("close",u),e.off("close",c),e.off("upgrading",h)};r.once("open",o),r.once("error",i),r.once("close",u),this.once("close",c),this.once("upgrading",h),r.open()}},{key:"onOpen",value:function(){if(this.readyState="open",a.priorWebsocketSuccess="websocket"===this.transport.name,this.emitReserved("open"),this.flush(),"open"===this.readyState&&this.opts.upgrade&&this.transport.pause)for(var t=0,e=this.upgrades.length;t1?{type:v[r],data:t.substring(1)}:{type:v[r]}:m},E=function(t,e){if(x){var r=function(t){var e,r,n,o,i,s=.75*t.length,a=t.length,u=0;"="===t[t.length-1]&&(s--,"="===t[t.length-2]&&s--);var c=new ArrayBuffer(s),p=new Uint8Array(c);for(e=0;e>4,p[u++]=(15&n)<<4|o>>2,p[u++]=(3&o)<<6|63&i;return c}(t);return P(r,e)}return{base64:!0,data:t}},P=function(t,e){return"blob"===e&&t instanceof ArrayBuffer?new Blob([t]):t},B=String.fromCharCode(30);function C(t){if(t)return function(t){for(var e in C.prototype)t[e]=C.prototype[e];return t}(t)}C.prototype.on=C.prototype.addEventListener=function(t,e){return this._callbacks=this._callbacks||{},(this._callbacks["$"+t]=this._callbacks["$"+t]||[]).push(e),this},C.prototype.once=function(t,e){function r(){this.off(t,r),e.apply(this,arguments)}return r.fn=e,this.on(t,r),this},C.prototype.off=C.prototype.removeListener=C.prototype.removeAllListeners=C.prototype.removeEventListener=function(t,e){if(this._callbacks=this._callbacks||{},0==arguments.length)return this._callbacks={},this;var r,n=this._callbacks["$"+t];if(!n)return this;if(1==arguments.length)return delete this._callbacks["$"+t],this;for(var o=0;o1?e-1:0),n=1;n0);return e}function X(){var t=N(+new Date);return t!==U?(I=0,U=t):t+"."+N(I++)}for(;W<64;W++)M[D[W]]=W;function $(t){var e="";for(var r in t)t.hasOwnProperty(r)&&(e.length&&(e+="&"),e+=encodeURIComponent(r)+"="+encodeURIComponent(t[r]));return e}function z(t){for(var e={},r=t.split("&"),n=0,o=r.length;n0&&void 0!==arguments[0]?arguments[0]:{};return o(t,{xd:this.xd,xs:this.xs},this.opts),new Z(this.uri(),t)}},{key:"doWrite",value:function(t,e){var r=this,n=this.request({method:"POST",data:t});n.on("success",e),n.on("error",(function(t,e){r.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,r){t.onError("xhr poll error",e,r)})),this.pollXhr=e}},{key:"name",get:function(){return"polling"}}]),s}(F),Z=function(t){i(o,t);var r=f(o);function o(t,n){var i;return e(this,o),j(h(i=r.call(this)),n),i.opts=n,i.method=n.method||"GET",i.uri=t,i.async=!1!==n.async,i.data=void 0!==n.data?n.data:null,i.create(),i}return n(o,[{key:"create",value:function(){var t=this,e=q(this.opts,"agent","pfx","key","passphrase","cert","ca","ciphers","rejectUnauthorized","autoUnref");e.xdomain=!!this.opts.xd,e.xscheme=!!this.opts.xs;var r=this.xhr=new J(e);try{r.open(this.method,this.uri,this.async);try{if(this.opts.extraHeaders)for(var n in r.setDisableHeaderCheck&&r.setDisableHeaderCheck(!0),this.opts.extraHeaders)this.opts.extraHeaders.hasOwnProperty(n)&&r.setRequestHeader(n,this.opts.extraHeaders[n])}catch(t){}if("POST"===this.method)try{r.setRequestHeader("Content-type","text/plain;charset=UTF-8")}catch(t){}try{r.setRequestHeader("Accept","*/*")}catch(t){}"withCredentials"in r&&(r.withCredentials=this.opts.withCredentials),this.opts.requestTimeout&&(r.timeout=this.opts.requestTimeout),r.onreadystatechange=function(){4===r.readyState&&(200===r.status||1223===r.status?t.onLoad():t.setTimeoutFn((function(){t.onError("number"==typeof r.status?r.status:0)}),0))},r.send(this.data)}catch(e){return void this.setTimeoutFn((function(){t.onError(e)}),0)}"undefined"!=typeof document&&(this.index=o.requestsCount++,o.requests[this.index]=this)}},{key:"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=K,t)try{this.xhr.abort()}catch(t){}"undefined"!=typeof document&&delete o.requests[this.index],this.xhr=null}}},{key:"onLoad",value:function(){var t=this.xhr.responseText;null!==t&&(this.emitReserved("data",t),this.emitReserved("success"),this.cleanup())}},{key:"abort",value:function(){this.cleanup()}}]),o}(C);if(Z.requestsCount=0,Z.requests={},"undefined"!=typeof document)if("function"==typeof attachEvent)attachEvent("onunload",tt);else if("function"==typeof addEventListener){addEventListener("onpagehide"in L?"pagehide":"unload",tt,!1)}function tt(){for(var t in Z.requests)Z.requests.hasOwnProperty(t)&&Z.requests[t].abort()}var et="function"==typeof Promise&&"function"==typeof Promise.resolve?function(t){return Promise.resolve().then(t)}:function(t,e){return e(t,0)},rt=L.WebSocket||L.MozWebSocket,nt="undefined"!=typeof navigator&&"string"==typeof navigator.product&&"reactnative"===navigator.product.toLowerCase(),ot=function(t){i(o,t);var r=f(o);function o(t){var n;return e(this,o),(n=r.call(this,t)).supportsBinary=!t.forceBase64,n}return n(o,[{key:"doOpen",value:function(){if(this.check()){var t=this.uri(),e=this.opts.protocols,r=nt?{}:q(this.opts,"agent","perMessageDeflate","pfx","key","passphrase","cert","ca","ciphers","rejectUnauthorized","localAddress","protocolVersion","origin","maxPayload","family","checkServerIdentity");this.opts.extraHeaders&&(r.headers=this.opts.extraHeaders);try{this.ws=nt?new rt(t,e,r):e?new rt(t,e):new rt(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 r=function(r){var n=t[r],o=r===t.length-1;k(n,e.supportsBinary,(function(t){try{e.ws.send(t)}catch(t){}o&&et((function(){e.writable=!0,e.emitReserved("drain")}),e.setTimeoutFn)}))},n=0;n1&&void 0!==arguments[1]?arguments[1]:{};return e(this,a),n=s.call(this),r&&"object"===t(r)&&(i=r,r=null),r?(r=ut(r),i.hostname=r.host,i.secure="https"===r.protocol||"wss"===r.protocol,i.port=r.port,r.query&&(i.query=r.query)):i.host&&(i.hostname=ut(i.host).host),j(h(n),i),n.secure=null!=i.secure?i.secure:"undefined"!=typeof location&&"https:"===location.protocol,i.hostname&&!i.port&&(i.port=n.secure?"443":"80"),n.hostname=i.hostname||("undefined"!=typeof location?location.hostname:"localhost"),n.port=i.port||("undefined"!=typeof location&&location.port?location.port:n.secure?"443":"80"),n.transports=i.transports||["polling","websocket"],n.readyState="",n.writeBuffer=[],n.prevBufferLen=0,n.opts=o({path:"/engine.io",agent:!1,withCredentials:!1,upgrade:!0,timestampParam:"t",rememberUpgrade:!1,rejectUnauthorized:!0,perMessageDeflate:{threshold:1024},transportOptions:{},closeOnBeforeunload:!0},i),n.opts.path=n.opts.path.replace(/\/$/,"")+"/","string"==typeof n.opts.query&&(n.opts.query=z(n.opts.query)),n.id=null,n.upgrades=null,n.pingInterval=null,n.pingTimeout=null,n.pingTimeoutTimer=null,"function"==typeof addEventListener&&(n.opts.closeOnBeforeunload&&addEventListener("beforeunload",(function(){n.transport&&(n.transport.removeAllListeners(),n.transport.close())}),!1),"localhost"!==n.hostname&&(n.offlineEventListener=function(){n.onClose("transport close",{description:"network connection lost"})},addEventListener("offline",n.offlineEventListener,!1))),n.open(),n}return n(a,[{key:"createTransport",value:function(t){var e=o({},this.opts.query);e.EIO=4,e.transport=t,this.id&&(e.sid=this.id);var r=o({},this.opts.transportOptions[t],this.opts,{query:e,socket:this,hostname:this.hostname,secure:this.secure,port:this.port});return new it[t](r)}},{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,r=this.createTransport(t),n=!1;a.priorWebsocketSuccess=!1;var o=function(){n||(r.send([{type:"ping",data:"probe"}]),r.once("packet",(function(t){if(!n)if("pong"===t.type&&"probe"===t.data){if(e.upgrading=!0,e.emitReserved("upgrading",r),!r)return;a.priorWebsocketSuccess="websocket"===r.name,e.transport.pause((function(){n||"closed"!==e.readyState&&(h(),e.setTransport(r),r.send([{type:"upgrade"}]),e.emitReserved("upgrade",r),r=null,e.upgrading=!1,e.flush())}))}else{var o=new Error("probe error");o.transport=r.name,e.emitReserved("upgradeError",o)}})))};function i(){n||(n=!0,h(),r.close(),r=null)}var s=function(t){var n=new Error("probe error: "+t);n.transport=r.name,i(),e.emitReserved("upgradeError",n)};function u(){s("transport closed")}function c(){s("socket closed")}function p(t){r&&t.name!==r.name&&i()}var h=function(){r.removeListener("open",o),r.removeListener("error",s),r.removeListener("close",u),e.off("close",c),e.off("upgrading",p)};r.once("open",o),r.once("error",s),r.once("close",u),this.once("close",c),this.once("upgrading",p),r.open()}},{key:"onOpen",value:function(){if(this.readyState="open",a.priorWebsocketSuccess="websocket"===this.transport.name,this.emitReserved("open"),this.flush(),"open"===this.readyState&&this.opts.upgrade&&this.transport.pause)for(var t=0,e=this.upgrades.length;t1))return this.writeBuffer;for(var t,e=1,r=0;r=57344?r+=3:(n++,r+=4);return r}(t):Math.ceil(1.33*(t.byteLength||t.size))),r>0&&e>this.maxPayload)return this.writeBuffer.slice(0,r);e+=2}return this.writeBuffer}},{key:"write",value:function(t,e,r){return this.sendPacket("message",t,e,r),this}},{key:"send",value:function(t,e,r){return this.sendPacket("message",t,e,r),this}},{key:"sendPacket",value:function(t,e,r,n){if("function"==typeof e&&(n=e,e=void 0),"function"==typeof r&&(n=r,r=null),"closing"!==this.readyState&&"closed"!==this.readyState){(r=r||{}).compress=!1!==r.compress;var o={type:t,data:e,options:r};this.emitReserved("packetCreate",o),this.writeBuffer.push(o),n&&this.once("flush",n),this.flush()}}},{key:"close",value:function(){var t=this,e=function(){t.onClose("forced close"),t.transport.close()},r=function r(){t.off("upgrade",r),t.off("upgradeError",r),e()},n=function(){t.once("upgrade",r),t.once("upgradeError",r)};return"opening"!==this.readyState&&"open"!==this.readyState||(this.readyState="closing",this.writeBuffer.length?this.once("drain",(function(){t.upgrading?n():e()})):this.upgrading?n():e()),this}},{key:"onError",value:function(t){a.priorWebsocketSuccess=!1,this.emitReserved("error",t),this.onClose("transport error",t)}},{key:"onClose",value:function(t,e){"opening"!==this.readyState&&"open"!==this.readyState&&"closing"!==this.readyState||(this.clearTimeoutFn(this.pingTimeoutTimer),this.transport.removeAllListeners("close"),this.transport.close(),this.transport.removeAllListeners(),"function"==typeof removeEventListener&&removeEventListener("offline",this.offlineEventListener,!1),this.readyState="closed",this.id=null,this.emitReserved("close",t,e),this.writeBuffer=[],this.prevBufferLen=0)}},{key:"filterUpgrades",value:function(t){for(var e=[],r=0,n=t.length;r {\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","// browser shim for xmlhttprequest module\nimport hasCORS from \"has-cors\";\nimport globalThis from \"../globalThis.js\";\nexport default function (opts) {\n const xdomain = opts.xdomain;\n // XMLHttpRequest can be disabled on IE\n try {\n if (\"undefined\" !== typeof XMLHttpRequest && (!xdomain || hasCORS)) {\n return new XMLHttpRequest();\n }\n }\n catch (e) { }\n if (!xdomain) {\n try {\n return new globalThis[[\"Active\"].concat(\"Object\").join(\"X\")](\"Microsoft.XMLHTTP\");\n }\n catch (e) { }\n }\n}\n","import 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 = setTimeout;\nconst NATIVE_CLEAR_TIMEOUT = 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 = setTimeout.bind(globalThis);\n obj.clearTimeoutFn = clearTimeout.bind(globalThis);\n }\n}\n","\n/**\n * Expose `Emitter`.\n */\n\nexports.Emitter = Emitter;\n\n/**\n * Initialize a new `Emitter`.\n *\n * @api public\n */\n\nfunction 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","const PACKET_TYPES = Object.create(null); // no Map = no polyfill\nPACKET_TYPES[\"open\"] = \"0\";\nPACKET_TYPES[\"close\"] = \"1\";\nPACKET_TYPES[\"ping\"] = \"2\";\nPACKET_TYPES[\"pong\"] = \"3\";\nPACKET_TYPES[\"message\"] = \"4\";\nPACKET_TYPES[\"upgrade\"] = \"5\";\nPACKET_TYPES[\"noop\"] = \"6\";\nconst PACKET_TYPES_REVERSE = Object.create(null);\nObject.keys(PACKET_TYPES).forEach(key => {\n PACKET_TYPES_REVERSE[PACKET_TYPES[key]] = key;\n});\nconst ERROR_PACKET = { type: \"error\", data: \"parser error\" };\nexport { PACKET_TYPES, PACKET_TYPES_REVERSE, ERROR_PACKET };\n","/*\n * base64-arraybuffer 1.0.1 \n * Copyright (c) 2021 Niklas von Hertzen \n * Released under MIT License\n */\nvar chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n// Use a lookup table to find the index.\nvar lookup = typeof Uint8Array === 'undefined' ? [] : new Uint8Array(256);\nfor (var i = 0; i < chars.length; i++) {\n lookup[chars.charCodeAt(i)] = i;\n}\nvar encode = function (arraybuffer) {\n var bytes = new Uint8Array(arraybuffer), i, len = bytes.length, base64 = '';\n for (i = 0; i < len; i += 3) {\n base64 += chars[bytes[i] >> 2];\n base64 += chars[((bytes[i] & 3) << 4) | (bytes[i + 1] >> 4)];\n base64 += chars[((bytes[i + 1] & 15) << 2) | (bytes[i + 2] >> 6)];\n base64 += chars[bytes[i + 2] & 63];\n }\n if (len % 3 === 2) {\n base64 = base64.substring(0, base64.length - 1) + '=';\n }\n else if (len % 3 === 1) {\n base64 = base64.substring(0, base64.length - 2) + '==';\n }\n return base64;\n};\nvar decode = function (base64) {\n var bufferLength = base64.length * 0.75, len = base64.length, i, p = 0, encoded1, encoded2, encoded3, encoded4;\n if (base64[base64.length - 1] === '=') {\n bufferLength--;\n if (base64[base64.length - 2] === '=') {\n bufferLength--;\n }\n }\n var arraybuffer = new ArrayBuffer(bufferLength), bytes = new Uint8Array(arraybuffer);\n for (i = 0; i < len; i += 4) {\n encoded1 = lookup[base64.charCodeAt(i)];\n encoded2 = lookup[base64.charCodeAt(i + 1)];\n encoded3 = lookup[base64.charCodeAt(i + 2)];\n encoded4 = lookup[base64.charCodeAt(i + 3)];\n bytes[p++] = (encoded1 << 2) | (encoded2 >> 4);\n bytes[p++] = ((encoded2 & 15) << 4) | (encoded3 >> 2);\n bytes[p++] = ((encoded3 & 3) << 6) | (encoded4 & 63);\n }\n return arraybuffer;\n};\n\nexport { decode, encode };\n//# sourceMappingURL=base64-arraybuffer.es5.js.map\n","import { PACKET_TYPES } from \"./commons.js\";\nconst withNativeBlob = typeof Blob === \"function\" ||\n (typeof Blob !== \"undefined\" &&\n Object.prototype.toString.call(Blob) === \"[object BlobConstructor]\");\nconst withNativeArrayBuffer = typeof ArrayBuffer === \"function\";\n// ArrayBuffer.isView method is not defined in IE10\nconst isView = obj => {\n return typeof ArrayBuffer.isView === \"function\"\n ? ArrayBuffer.isView(obj)\n : obj && obj.buffer instanceof ArrayBuffer;\n};\nconst encodePacket = ({ type, data }, supportsBinary, callback) => {\n if (withNativeBlob && data instanceof Blob) {\n if (supportsBinary) {\n return callback(data);\n }\n else {\n return encodeBlobAsBase64(data, callback);\n }\n }\n else if (withNativeArrayBuffer &&\n (data instanceof ArrayBuffer || isView(data))) {\n if (supportsBinary) {\n return callback(data);\n }\n else {\n return encodeBlobAsBase64(new Blob([data]), callback);\n }\n }\n // plain string\n return callback(PACKET_TYPES[type] + (data || \"\"));\n};\nconst encodeBlobAsBase64 = (data, callback) => {\n const fileReader = new FileReader();\n fileReader.onload = function () {\n const content = fileReader.result.split(\",\")[1];\n callback(\"b\" + content);\n };\n return fileReader.readAsDataURL(data);\n};\nexport default encodePacket;\n","'use strict';\n\nvar alphabet = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-_'.split('')\n , length = 64\n , map = {}\n , seed = 0\n , i = 0\n , prev;\n\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 */\nfunction encode(num) {\n var encoded = '';\n\n do {\n encoded = alphabet[num % length] + encoded;\n num = Math.floor(num / length);\n } while (num > 0);\n\n return encoded;\n}\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 */\nfunction decode(str) {\n var decoded = 0;\n\n for (i = 0; i < str.length; i++) {\n decoded = decoded * length + map[str.charAt(i)];\n }\n\n return decoded;\n}\n\n/**\n * Yeast: A tiny growing id generator.\n *\n * @returns {String} A unique id.\n * @api public\n */\nfunction yeast() {\n var now = encode(+new Date());\n\n if (now !== prev) return seed = 0, prev = now;\n return now +'.'+ encode(seed++);\n}\n\n//\n// Map each character to its index.\n//\nfor (; i < length; i++) map[alphabet[i]] = i;\n\n//\n// Expose the `yeast`, `encode` and `decode` functions.\n//\nyeast.encode = encode;\nyeast.decode = decode;\nmodule.exports = yeast;\n","import { ERROR_PACKET, PACKET_TYPES_REVERSE } from \"./commons.js\";\nimport { decode } from \"base64-arraybuffer\";\nconst withNativeArrayBuffer = typeof ArrayBuffer === \"function\";\nconst decodePacket = (encodedPacket, binaryType) => {\n if (typeof encodedPacket !== \"string\") {\n return {\n type: \"message\",\n data: mapBinary(encodedPacket, binaryType)\n };\n }\n const type = encodedPacket.charAt(0);\n if (type === \"b\") {\n return {\n type: \"message\",\n data: decodeBase64Packet(encodedPacket.substring(1), binaryType)\n };\n }\n const packetType = PACKET_TYPES_REVERSE[type];\n if (!packetType) {\n return ERROR_PACKET;\n }\n return encodedPacket.length > 1\n ? {\n type: PACKET_TYPES_REVERSE[type],\n data: encodedPacket.substring(1)\n }\n : {\n type: PACKET_TYPES_REVERSE[type]\n };\n};\nconst decodeBase64Packet = (data, binaryType) => {\n if (withNativeArrayBuffer) {\n const decoded = decode(data);\n return mapBinary(decoded, binaryType);\n }\n else {\n return { base64: true, data }; // fallback for old browsers\n }\n};\nconst mapBinary = (data, binaryType) => {\n switch (binaryType) {\n case \"blob\":\n return data instanceof ArrayBuffer ? new Blob([data]) : data;\n case \"arraybuffer\":\n default:\n return data; // assuming the data is already an ArrayBuffer\n }\n};\nexport default decodePacket;\n","import encodePacket from \"./encodePacket.js\";\nimport decodePacket from \"./decodePacket.js\";\nconst SEPARATOR = String.fromCharCode(30); // see https://en.wikipedia.org/wiki/Delimiter#ASCII_delimited_text\nconst encodePayload = (packets, callback) => {\n // some packets may be added to the array while encoding, so the initial length must be saved\n const length = packets.length;\n const encodedPackets = new Array(length);\n let count = 0;\n packets.forEach((packet, i) => {\n // force base64 encoding for binary packets\n encodePacket(packet, false, encodedPacket => {\n encodedPackets[i] = encodedPacket;\n if (++count === length) {\n callback(encodedPackets.join(SEPARATOR));\n }\n });\n });\n};\nconst decodePayload = (encodedPayload, binaryType) => {\n const encodedPackets = encodedPayload.split(SEPARATOR);\n const packets = [];\n for (let i = 0; i < encodedPackets.length; i++) {\n const decodedPacket = decodePacket(encodedPackets[i], binaryType);\n packets.push(decodedPacket);\n if (decodedPacket.type === \"error\") {\n break;\n }\n }\n return packets;\n};\nexport const protocol = 4;\nexport { encodePacket, encodePayload, decodePacket, decodePayload };\n","import { decodePacket } from \"engine.io-parser\";\nimport { Emitter } from \"@socket.io/component-emitter\";\nimport { installTimerFunctions } from \"./util.js\";\nexport class Transport extends Emitter {\n /**\n * Transport abstract constructor.\n *\n * @param {Object} options.\n * @api private\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.readyState = \"\";\n this.socket = opts.socket;\n }\n /**\n * Emits an error.\n *\n * @param {String} str\n * @return {Transport} for chaining\n * @api protected\n */\n onError(msg, desc) {\n const err = new Error(msg);\n // @ts-ignore\n err.type = \"TransportError\";\n // @ts-ignore\n err.description = desc;\n super.emit(\"error\", err);\n return this;\n }\n /**\n * Opens the transport.\n *\n * @api public\n */\n open() {\n if (\"closed\" === this.readyState || \"\" === this.readyState) {\n this.readyState = \"opening\";\n this.doOpen();\n }\n return this;\n }\n /**\n * Closes the transport.\n *\n * @api public\n */\n close() {\n if (\"opening\" === this.readyState || \"open\" === this.readyState) {\n this.doClose();\n this.onClose();\n }\n return this;\n }\n /**\n * Sends multiple packets.\n *\n * @param {Array} packets\n * @api public\n */\n send(packets) {\n if (\"open\" === this.readyState) {\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 * @api protected\n */\n onOpen() {\n this.readyState = \"open\";\n this.writable = true;\n super.emit(\"open\");\n }\n /**\n * Called with data.\n *\n * @param {String} data\n * @api 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 * @api protected\n */\n onPacket(packet) {\n super.emit(\"packet\", packet);\n }\n /**\n * Called upon close.\n *\n * @api protected\n */\n onClose() {\n this.readyState = \"closed\";\n super.emit(\"close\");\n }\n}\n","/**\n * Compiles a querystring\n * Returns string representation of the object\n *\n * @param {Object}\n * @api private\n */\n\nexports.encode = function (obj) {\n var str = '';\n\n for (var i in obj) {\n if (obj.hasOwnProperty(i)) {\n if (str.length) str += '&';\n str += encodeURIComponent(i) + '=' + encodeURIComponent(obj[i]);\n }\n }\n\n return str;\n};\n\n/**\n * Parses a simple querystring into an object\n *\n * @param {String} qs\n * @api private\n */\n\nexports.decode = function(qs){\n var qry = {};\n var pairs = qs.split('&');\n for (var i = 0, l = pairs.length; i < l; i++) {\n var pair = pairs[i].split('=');\n qry[decodeURIComponent(pair[0])] = decodeURIComponent(pair[1]);\n }\n return qry;\n};\n","import { Transport } from \"../transport.js\";\nimport yeast from \"yeast\";\nimport parseqs from \"parseqs\";\nimport { encodePayload, decodePayload } from \"engine.io-parser\";\nexport class Polling extends Transport {\n constructor() {\n super(...arguments);\n this.polling = false;\n }\n /**\n * Transport name.\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 * @api private\n */\n doOpen() {\n this.poll();\n }\n /**\n * Pauses polling.\n *\n * @param {Function} callback upon buffers are flushed and transport is paused\n * @api private\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 * @api public\n */\n poll() {\n this.polling = true;\n this.doPoll();\n this.emit(\"poll\");\n }\n /**\n * Overloads onData to detect payloads.\n *\n * @api private\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();\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.emit(\"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 * @api private\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} data packets\n * @param {Function} drain callback\n * @api private\n */\n write(packets) {\n this.writable = false;\n encodePayload(packets, data => {\n this.doWrite(data, () => {\n this.writable = true;\n this.emit(\"drain\");\n });\n });\n }\n /**\n * Generates uri for connection.\n *\n * @api private\n */\n uri() {\n let query = this.query || {};\n const schema = this.opts.secure ? \"https\" : \"http\";\n let port = \"\";\n // cache busting is forced\n if (false !== this.opts.timestampRequests) {\n query[this.opts.timestampParam] = yeast();\n }\n if (!this.supportsBinary && !query.sid) {\n query.b64 = 1;\n }\n // avoid port if default for schema\n if (this.opts.port &&\n ((\"https\" === schema && Number(this.opts.port) !== 443) ||\n (\"http\" === schema && Number(this.opts.port) !== 80))) {\n port = \":\" + this.opts.port;\n }\n const encodedQuery = parseqs.encode(query);\n const ipv6 = this.opts.hostname.indexOf(\":\") !== -1;\n return (schema +\n \"://\" +\n (ipv6 ? \"[\" + this.opts.hostname + \"]\" : this.opts.hostname) +\n port +\n this.opts.path +\n (encodedQuery.length ? \"?\" + encodedQuery : \"\"));\n }\n}\n","/* global attachEvent */\nimport XMLHttpRequest from \"./xmlhttprequest.js\";\nimport globalThis from \"../globalThis.js\";\nimport { installTimerFunctions, pick } from \"../util.js\";\nimport { Emitter } from \"@socket.io/component-emitter\";\nimport { Polling } from \"./polling.js\";\n/**\n * Empty function\n */\nfunction empty() { }\nconst hasXHR2 = (function () {\n const xhr = new XMLHttpRequest({\n xdomain: false\n });\n return null != xhr.responseType;\n})();\nexport class XHR extends Polling {\n /**\n * XHR Polling constructor.\n *\n * @param {Object} opts\n * @api public\n */\n constructor(opts) {\n super(opts);\n if (typeof location !== \"undefined\") {\n const isSSL = \"https:\" === location.protocol;\n let port = location.port;\n // some user agents have empty `location.port`\n if (!port) {\n port = isSSL ? \"443\" : \"80\";\n }\n this.xd =\n (typeof location !== \"undefined\" &&\n opts.hostname !== location.hostname) ||\n port !== opts.port;\n this.xs = opts.secure !== isSSL;\n }\n /**\n * XHR supports binary\n */\n const forceBase64 = opts && opts.forceBase64;\n this.supportsBinary = hasXHR2 && !forceBase64;\n }\n /**\n * Creates a request.\n *\n * @param {String} method\n * @api private\n */\n request(opts = {}) {\n Object.assign(opts, { xd: this.xd, xs: this.xs }, this.opts);\n return new Request(this.uri(), opts);\n }\n /**\n * Sends data.\n *\n * @param {String} data to send.\n * @param {Function} called upon flush.\n * @api 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\", err => {\n this.onError(\"xhr post error\", err);\n });\n }\n /**\n * Starts a poll cycle.\n *\n * @api private\n */\n doPoll() {\n const req = this.request();\n req.on(\"data\", this.onData.bind(this));\n req.on(\"error\", err => {\n this.onError(\"xhr poll error\", err);\n });\n this.pollXhr = req;\n }\n}\nexport class Request extends Emitter {\n /**\n * Request constructor\n *\n * @param {Object} options\n * @api public\n */\n constructor(uri, opts) {\n super();\n installTimerFunctions(this, opts);\n this.opts = opts;\n this.method = opts.method || \"GET\";\n this.uri = uri;\n this.async = false !== opts.async;\n this.data = undefined !== opts.data ? opts.data : null;\n this.create();\n }\n /**\n * Creates the XHR object and sends the request.\n *\n * @api private\n */\n create() {\n const opts = pick(this.opts, \"agent\", \"pfx\", \"key\", \"passphrase\", \"cert\", \"ca\", \"ciphers\", \"rejectUnauthorized\", \"autoUnref\");\n opts.xdomain = !!this.opts.xd;\n opts.xscheme = !!this.opts.xs;\n const xhr = (this.xhr = new XMLHttpRequest(opts));\n try {\n xhr.open(this.method, this.uri, this.async);\n try {\n if (this.opts.extraHeaders) {\n xhr.setDisableHeaderCheck && xhr.setDisableHeaderCheck(true);\n for (let i in this.opts.extraHeaders) {\n if (this.opts.extraHeaders.hasOwnProperty(i)) {\n xhr.setRequestHeader(i, this.opts.extraHeaders[i]);\n }\n }\n }\n }\n catch (e) { }\n if (\"POST\" === this.method) {\n try {\n xhr.setRequestHeader(\"Content-type\", \"text/plain;charset=UTF-8\");\n }\n catch (e) { }\n }\n try {\n xhr.setRequestHeader(\"Accept\", \"*/*\");\n }\n catch (e) { }\n // ie6 check\n if (\"withCredentials\" in xhr) {\n xhr.withCredentials = this.opts.withCredentials;\n }\n if (this.opts.requestTimeout) {\n xhr.timeout = this.opts.requestTimeout;\n }\n xhr.onreadystatechange = () => {\n if (4 !== xhr.readyState)\n return;\n if (200 === xhr.status || 1223 === xhr.status) {\n this.onLoad();\n }\n else {\n // make sure the `error` event handler that's user-set\n // does not throw in the same tick and gets caught here\n this.setTimeoutFn(() => {\n this.onError(typeof xhr.status === \"number\" ? xhr.status : 0);\n }, 0);\n }\n };\n xhr.send(this.data);\n }\n catch (e) {\n // Need to defer since .create() is called directly from the constructor\n // and thus the 'error' event can only be only bound *after* this exception\n // occurs. Therefore, also, we cannot throw here at all.\n this.setTimeoutFn(() => {\n this.onError(e);\n }, 0);\n return;\n }\n if (typeof document !== \"undefined\") {\n this.index = Request.requestsCount++;\n Request.requests[this.index] = this;\n }\n }\n /**\n * Called upon successful response.\n *\n * @api private\n */\n onSuccess() {\n this.emit(\"success\");\n this.cleanup();\n }\n /**\n * Called if we have data.\n *\n * @api private\n */\n onData(data) {\n this.emit(\"data\", data);\n this.onSuccess();\n }\n /**\n * Called upon error.\n *\n * @api private\n */\n onError(err) {\n this.emit(\"error\", err);\n this.cleanup(true);\n }\n /**\n * Cleans up house.\n *\n * @api 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 * @api private\n */\n onLoad() {\n const data = this.xhr.responseText;\n if (data !== null) {\n this.onData(data);\n }\n }\n /**\n * Aborts the request.\n *\n * @api public\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 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 parseqs from \"parseqs\";\nimport yeast from \"yeast\";\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 * @api {Object} connection options\n * @api public\n */\n constructor(opts) {\n super(opts);\n this.supportsBinary = !opts.forceBase64;\n }\n /**\n * Transport name.\n *\n * @api public\n */\n get name() {\n return \"websocket\";\n }\n /**\n * Opens socket.\n *\n * @api private\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.emit(\"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 * @api 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 = this.onClose.bind(this);\n this.ws.onmessage = ev => this.onData(ev.data);\n this.ws.onerror = e => this.onError(\"websocket error\", e);\n }\n /**\n * Writes data to socket.\n *\n * @param {Array} array of packets.\n * @api private\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 = \"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.emit(\"drain\");\n }, this.setTimeoutFn);\n }\n });\n }\n }\n /**\n * Closes socket.\n *\n * @api private\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 * @api private\n */\n uri() {\n let query = this.query || {};\n const schema = this.opts.secure ? \"wss\" : \"ws\";\n let port = \"\";\n // avoid port if default for schema\n if (this.opts.port &&\n ((\"wss\" === schema && Number(this.opts.port) !== 443) ||\n (\"ws\" === schema && Number(this.opts.port) !== 80))) {\n port = \":\" + this.opts.port;\n }\n // append timestamp to URI\n if (this.opts.timestampRequests) {\n query[this.opts.timestampParam] = yeast();\n }\n // communicate binary support capabilities\n if (!this.supportsBinary) {\n query.b64 = 1;\n }\n const encodedQuery = parseqs.encode(query);\n const ipv6 = this.opts.hostname.indexOf(\":\") !== -1;\n return (schema +\n \"://\" +\n (ipv6 ? \"[\" + this.opts.hostname + \"]\" : this.opts.hostname) +\n port +\n this.opts.path +\n (encodedQuery.length ? \"?\" + encodedQuery : \"\"));\n }\n /**\n * Feature detection for WebSocket.\n *\n * @return {Boolean} whether this transport is available.\n * @api public\n */\n check() {\n return (!!WebSocket &&\n !(\"__initialize\" in WebSocket && this.name === WS.prototype.name));\n }\n}\n","import { XHR } from \"./polling-xhr.js\";\nimport { WS } from \"./websocket.js\";\nexport const transports = {\n websocket: WS,\n polling: XHR\n};\n","/**\n * Parses an URI\n *\n * @author Steven Levithan (MIT license)\n * @api private\n */\n\nvar re = /^(?:(?![^:@]+:[^:@\\/]*@)(http|https|ws|wss):\\/\\/)?((?:(([^:@]*)(?::([^:@]*))?)?@)?((?:[a-f0-9]{0,4}:){2,7}[a-f0-9]{0,4}|[^:\\/?#]*)(?::(\\d*))?)(((\\/(?:[^?#](?![^?#\\/]*\\.[^?#\\/.]+(?:[?#]|$)))*\\/?)?([^?#\\/]*))(?:\\?([^#]*))?(?:#(.*))?)/;\n\nvar parts = [\n 'source', 'protocol', 'authority', 'userInfo', 'user', 'password', 'host', 'port', 'relative', 'path', 'directory', 'file', 'query', 'anchor'\n];\n\nmodule.exports = function parseuri(str) {\n var src = str,\n b = str.indexOf('['),\n e = str.indexOf(']');\n\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\n var m = re.exec(str || ''),\n uri = {},\n i = 14;\n\n while (i--) {\n uri[parts[i]] = m[i] || '';\n }\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\n uri.pathNames = pathNames(uri, uri['path']);\n uri.queryKey = queryKey(uri, uri['query']);\n\n return uri;\n};\n\nfunction pathNames(obj, path) {\n var regx = /\\/{2,9}/g,\n names = path.replace(regx, \"/\").split(\"/\");\n\n if (path.substr(0, 1) == '/' || path.length === 0) {\n names.splice(0, 1);\n }\n if (path.substr(path.length - 1, 1) == '/') {\n names.splice(names.length - 1, 1);\n }\n\n return names;\n}\n\nfunction queryKey(uri, query) {\n var data = {};\n\n query.replace(/(?:^|&)([^&=]*)=?([^&]*)/g, function ($0, $1, $2) {\n if ($1) {\n data[$1] = $2;\n }\n });\n\n return data;\n}\n","import { transports } from \"./transports/index.js\";\nimport { installTimerFunctions } from \"./util.js\";\nimport parseqs from \"parseqs\";\nimport parseuri from \"parseuri\";\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 or options\n * @param {Object} opts - options\n * @api public\n */\n constructor(uri, opts = {}) {\n super();\n if (uri && \"object\" === typeof uri) {\n opts = uri;\n uri = null;\n }\n if (uri) {\n uri = parseuri(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 = parseuri(opts.host).host;\n }\n installTimerFunctions(this, opts);\n this.secure =\n null != opts.secure\n ? opts.secure\n : typeof location !== \"undefined\" && \"https:\" === location.protocol;\n if (opts.hostname && !opts.port) {\n // if no port is specified manually, use the protocol default\n opts.port = this.secure ? \"443\" : \"80\";\n }\n this.hostname =\n opts.hostname ||\n (typeof location !== \"undefined\" ? location.hostname : \"localhost\");\n this.port =\n opts.port ||\n (typeof location !== \"undefined\" && location.port\n ? location.port\n : this.secure\n ? \"443\"\n : \"80\");\n this.transports = opts.transports || [\"polling\", \"websocket\"];\n this.readyState = \"\";\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 rejectUnauthorized: true,\n perMessageDeflate: {\n threshold: 1024\n },\n transportOptions: {},\n closeOnBeforeunload: true\n }, opts);\n this.opts.path = this.opts.path.replace(/\\/$/, \"\") + \"/\";\n if (typeof this.opts.query === \"string\") {\n this.opts.query = parseqs.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 addEventListener(\"beforeunload\", () => {\n if (this.transport) {\n // silently close the transport\n this.transport.removeAllListeners();\n this.transport.close();\n }\n }, false);\n }\n if (this.hostname !== \"localhost\") {\n this.offlineEventListener = () => {\n this.onClose(\"transport close\");\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} transport name\n * @return {Transport}\n * @api private\n */\n createTransport(name) {\n const query = clone(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 * @api 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 * @api 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\", () => {\n this.onClose(\"transport close\");\n });\n }\n /**\n * Probes a transport.\n *\n * @param {String} transport name\n * @api private\n */\n probe(name) {\n let transport = this.createTransport(name);\n let failed = false;\n Socket.priorWebsocketSuccess = false;\n const onTransportOpen = () => {\n if (failed)\n return;\n transport.send([{ type: \"ping\", data: \"probe\" }]);\n transport.once(\"packet\", msg => {\n if (failed)\n return;\n if (\"pong\" === msg.type && \"probe\" === msg.data) {\n this.upgrading = true;\n this.emitReserved(\"upgrading\", transport);\n if (!transport)\n return;\n Socket.priorWebsocketSuccess = \"websocket\" === transport.name;\n this.transport.pause(() => {\n if (failed)\n return;\n if (\"closed\" === this.readyState)\n return;\n cleanup();\n this.setTransport(transport);\n transport.send([{ type: \"upgrade\" }]);\n this.emitReserved(\"upgrade\", transport);\n transport = null;\n this.upgrading = false;\n this.flush();\n });\n }\n else {\n const err = new Error(\"probe error\");\n // @ts-ignore\n err.transport = transport.name;\n this.emitReserved(\"upgradeError\", err);\n }\n });\n };\n function freezeTransport() {\n if (failed)\n return;\n // Any callback called by transport should be ignored since now\n failed = true;\n cleanup();\n transport.close();\n transport = null;\n }\n // Handle any error that happens while probing\n const onerror = err => {\n const error = new Error(\"probe error: \" + err);\n // @ts-ignore\n error.transport = transport.name;\n freezeTransport();\n this.emitReserved(\"upgradeError\", error);\n };\n function onTransportClose() {\n onerror(\"transport closed\");\n }\n // When the socket is closed while we're probing\n function onclose() {\n onerror(\"socket closed\");\n }\n // When the socket is upgraded while we're probing\n function onupgrade(to) {\n if (transport && to.name !== transport.name) {\n freezeTransport();\n }\n }\n // Remove all listeners on the transport and on self\n const cleanup = () => {\n transport.removeListener(\"open\", onTransportOpen);\n transport.removeListener(\"error\", onerror);\n transport.removeListener(\"close\", onTransportClose);\n this.off(\"close\", onclose);\n this.off(\"upgrading\", onupgrade);\n };\n transport.once(\"open\", onTransportOpen);\n transport.once(\"error\", onerror);\n transport.once(\"close\", onTransportClose);\n this.once(\"close\", onclose);\n this.once(\"upgrading\", onupgrade);\n transport.open();\n }\n /**\n * Called when connection is deemed open.\n *\n * @api 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 &&\n this.opts.upgrade &&\n this.transport.pause) {\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 * @api 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 * @api 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.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 * @api 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 * @api 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 * @api private\n */\n flush() {\n if (\"closed\" !== this.readyState &&\n this.transport.writable &&\n !this.upgrading &&\n this.writeBuffer.length) {\n this.transport.send(this.writeBuffer);\n // keep track of current length of writeBuffer\n // splice writeBuffer and callbackBuffer on `drain`\n this.prevBufferLen = this.writeBuffer.length;\n this.emitReserved(\"flush\");\n }\n }\n /**\n * Sends a message.\n *\n * @param {String} message.\n * @param {Function} callback function.\n * @param {Object} options.\n * @return {Socket} for chaining.\n * @api public\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} packet type.\n * @param {String} data.\n * @param {Object} options.\n * @param {Function} callback function.\n * @api 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 * @api public\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 * @api 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 * @api private\n */\n onClose(reason, desc) {\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(\"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, desc);\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} server upgrades\n * @api private\n *\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;\nfunction clone(obj) {\n const o = {};\n for (let i in obj) {\n if (obj.hasOwnProperty(i)) {\n o[i] = obj[i];\n }\n }\n return o;\n}\n","import { Socket } from \"./socket.js\";\nexport default (uri, opts) => new Socket(uri, opts);\n"],"names":["hasCorsModule","XMLHttpRequest","err","self","window","Function","opts","xdomain","hasCORS","e","globalThis","concat","join","pick","obj","attr","reduce","acc","k","hasOwnProperty","NATIVE_SET_TIMEOUT","setTimeout","NATIVE_CLEAR_TIMEOUT","clearTimeout","installTimerFunctions","useNativeTimers","setTimeoutFn","bind","clearTimeoutFn","Emitter","key","prototype","mixin","on","addEventListener","event","fn","_callbacks","this","push","once","off","apply","arguments","removeListener","removeAllListeners","removeEventListener","length","cb","callbacks","i","splice","emit","args","Array","len","slice","emitReserved","listeners","hasListeners","PACKET_TYPES","Object","create","PACKET_TYPES_REVERSE","keys","forEach","ERROR_PACKET","type","data","withNativeBlob","Blob","toString","call","withNativeArrayBuffer","ArrayBuffer","encodePacket","supportsBinary","callback","encodeBlobAsBase64","isView","buffer","fileReader","FileReader","onload","content","result","split","readAsDataURL","chars","lookup","Uint8Array","charCodeAt","prev","decodePacket","encodedPacket","binaryType","mapBinary","charAt","decodeBase64Packet","substring","decoded","base64","encoded1","encoded2","encoded3","encoded4","bufferLength","p","arraybuffer","bytes","decode","SEPARATOR","String","fromCharCode","Transport","writable","query","readyState","socket","msg","desc","Error","description","doOpen","doClose","onClose","packets","write","packet","onPacket","alphabet","map","seed","encode","num","encoded","Math","floor","yeast","now","Date","str","yeast_1","encodeURIComponent","qs","qry","pairs","l","pair","decodeURIComponent","Polling","polling","poll","onPause","pause","_this2","total","doPoll","encodedPayload","encodedPackets","decodedPacket","decodePayload","_this3","onOpen","close","_this4","count","encodePayload","_this5","doWrite","schema","secure","port","timestampRequests","timestampParam","sid","b64","Number","encodedQuery","parseqs","hostname","indexOf","path","empty","hasXHR2","responseType","XHR","location","isSSL","protocol","xd","xs","forceBase64","Request","uri","req","request","method","onError","onData","pollXhr","async","undefined","xscheme","xhr","open","extraHeaders","setDisableHeaderCheck","setRequestHeader","withCredentials","requestTimeout","timeout","onreadystatechange","status","onLoad","send","document","index","requestsCount","requests","cleanup","onSuccess","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","onmessage","ev","onerror","lastPacket","name","transports","websocket","re","parts","parseuri","src","b","replace","m","exec","source","host","authority","ipv6uri","pathNames","regx","names","substr","queryKey","$0","$1","$2","Socket","_this","writeBuffer","prevBufferLen","_extends","agent","upgrade","rememberUpgrade","rejectUnauthorized","perMessageDeflate","threshold","transportOptions","closeOnBeforeunload","id","upgrades","pingInterval","pingTimeout","pingTimeoutTimer","transport","offlineEventListener","o","clone","EIO","priorWebsocketSuccess","createTransport","shift","setTransport","onDrain","failed","onTransportOpen","upgrading","flush","freezeTransport","error","onTransportClose","onupgrade","to","probe","onHandshake","JSON","parse","resetPingTimeout","sendPacket","code","filterUpgrades","options","compress","_this6","cleanupAndClose","waitForUpgrade","reason","filteredUpgrades","j"],"mappings":";;;;;4zEASA,IACEA,UAA2C,oBAAnBC,gBACtB,oBAAqB,IAAIA,eAC3B,MAAOC,GAGPF,WAAiB,oBCdK,oBAATG,KACAA,KAEgB,oBAAXC,OACLA,OAGAC,SAAS,cAATA,GCLA,WAAUC,OACfC,EAAUD,EAAKC,eAGb,oBAAuBN,kBAAoBM,GAAWC,UAC/C,IAAIP,eAGnB,MAAOQ,QACFF,aAEU,IAAIG,EAAW,CAAC,UAAUC,OAAO,UAAUC,KAAK,OAAM,qBAEjE,MAAOH,KCfR,SAASI,EAAKC,8BAAQC,mCAAAA,2BAClBA,EAAKC,QAAO,SAACC,EAAKC,UACjBJ,EAAIK,eAAeD,KACnBD,EAAIC,GAAKJ,EAAII,IAEVD,IACR,IAGP,IAAMG,EAAqBC,WACrBC,EAAuBC,aACtB,SAASC,EAAsBV,EAAKR,GACnCA,EAAKmB,iBACLX,EAAIY,aAAeN,EAAmBO,KAAKjB,GAC3CI,EAAIc,eAAiBN,EAAqBK,KAAKjB,KAG/CI,EAAIY,aAAeL,WAAWM,KAAKjB,GACnCI,EAAIc,eAAiBL,aAAaI,KAAKjB,ICd/C,MAAkBmB,EAQlB,SAASA,EAAQf,MACXA,EAAK,OAWX,SAAeA,OACR,IAAIgB,KAAOD,EAAQE,UACtBjB,EAAIgB,GAAOD,EAAQE,UAAUD,UAExBhB,EAfSkB,CAAMlB,GA2BxBe,EAAQE,UAAUE,GAClBJ,EAAQE,UAAUG,iBAAmB,SAASC,EAAOC,eAC9CC,WAAaC,KAAKD,YAAc,IACpCC,KAAKD,WAAW,IAAMF,GAASG,KAAKD,WAAW,IAAMF,IAAU,IAC7DI,KAAKH,GACDE,MAaTT,EAAQE,UAAUS,KAAO,SAASL,EAAOC,YAC9BH,SACFQ,IAAIN,EAAOF,GAChBG,EAAGM,MAAMJ,KAAMK,kBAGjBV,EAAGG,GAAKA,OACHH,GAAGE,EAAOF,GACRK,MAaTT,EAAQE,UAAUU,IAClBZ,EAAQE,UAAUa,eAClBf,EAAQE,UAAUc,mBAClBhB,EAAQE,UAAUe,oBAAsB,SAASX,EAAOC,WACjDC,WAAaC,KAAKD,YAAc,GAGjC,GAAKM,UAAUI,mBACZV,WAAa,GACXC,SAcLU,EAVAC,EAAYX,KAAKD,WAAW,IAAMF,OACjCc,EAAW,OAAOX,QAGnB,GAAKK,UAAUI,qBACVT,KAAKD,WAAW,IAAMF,GACtBG,SAKJ,IAAIY,EAAI,EAAGA,EAAID,EAAUF,OAAQG,QACpCF,EAAKC,EAAUC,MACJd,GAAMY,EAAGZ,KAAOA,EAAI,CAC7Ba,EAAUE,OAAOD,EAAG,gBAOC,IAArBD,EAAUF,eACLT,KAAKD,WAAW,IAAMF,GAGxBG,MAWTT,EAAQE,UAAUqB,KAAO,SAASjB,QAC3BE,WAAaC,KAAKD,YAAc,WAEjCgB,EAAO,IAAIC,MAAMX,UAAUI,OAAS,GACpCE,EAAYX,KAAKD,WAAW,IAAMF,GAE7Be,EAAI,EAAGA,EAAIP,UAAUI,OAAQG,IACpCG,EAAKH,EAAI,GAAKP,UAAUO,MAGtBD,EAEG,CAAIC,EAAI,MAAR,IAAWK,GADhBN,EAAYA,EAAUO,MAAM,IACIT,OAAQG,EAAIK,IAAOL,EACjDD,EAAUC,GAAGR,MAAMJ,KAAMe,UAItBf,MAITT,EAAQE,UAAU0B,aAAe5B,EAAQE,UAAUqB,KAUnDvB,EAAQE,UAAU2B,UAAY,SAASvB,eAChCE,WAAaC,KAAKD,YAAc,GAC9BC,KAAKD,WAAW,IAAMF,IAAU,IAWzCN,EAAQE,UAAU4B,aAAe,SAASxB,WAC9BG,KAAKoB,UAAUvB,GAAOY,QC9KlC,IAAMa,EAAeC,OAAOC,OAAO,MACnCF,EAAY,KAAW,IACvBA,EAAY,MAAY,IACxBA,EAAY,KAAW,IACvBA,EAAY,KAAW,IACvBA,EAAY,QAAc,IAC1BA,EAAY,QAAc,IAC1BA,EAAY,KAAW,IACvB,IAAMG,EAAuBF,OAAOC,OAAO,MAC3CD,OAAOG,KAAKJ,GAAcK,SAAQ,SAAAnC,GAC9BiC,EAAqBH,EAAa9B,IAAQA,KCN9C,IDQA,IAAMoC,EAAe,CAAEC,KAAM,QAASC,KAAM,gBEXtCC,EAAiC,mBAATC,MACT,oBAATA,MACqC,6BAAzCT,OAAO9B,UAAUwC,SAASC,KAAKF,MACjCG,EAA+C,mBAAhBC,YAO/BC,EAAe,WAAiBC,EAAgBC,OALvC/D,EAKSqD,IAAAA,KAAMC,IAAAA,YACtBC,GAAkBD,aAAgBE,KAC9BM,EACOC,EAAST,GAGTU,EAAmBV,EAAMS,GAG/BJ,IACJL,aAAgBM,cAfV5D,EAegCsD,EAdN,mBAAvBM,YAAYK,OACpBL,YAAYK,OAAOjE,GACnBA,GAAOA,EAAIkE,kBAAkBN,cAa3BE,EACOC,EAAST,GAGTU,EAAmB,IAAIR,KAAK,CAACF,IAAQS,GAI7CA,EAASjB,EAAaO,IAASC,GAAQ,MAE5CU,EAAqB,SAACV,EAAMS,OACxBI,EAAa,IAAIC,kBACvBD,EAAWE,OAAS,eACVC,EAAUH,EAAWI,OAAOC,MAAM,KAAK,GAC7CT,EAAS,IAAMO,IAEZH,EAAWM,cAAcnB,IDtC9BoB,EAAQ,mEAGRC,EAA+B,oBAAfC,WAA6B,GAAK,IAAIA,WAAW,KAC9DxC,EAAI,EAAGA,EAAIsC,EAAMzC,OAAQG,IAC9BuC,EAAOD,EAAMG,WAAWzC,IAAMA,MEE9B0C,ECLEnB,EAA+C,mBAAhBC,YAC/BmB,EAAe,SAACC,EAAeC,MACJ,iBAAlBD,QACA,CACH3B,KAAM,UACNC,KAAM4B,EAAUF,EAAeC,QAGjC5B,EAAO2B,EAAcG,OAAO,SACrB,MAAT9B,EACO,CACHA,KAAM,UACNC,KAAM8B,EAAmBJ,EAAcK,UAAU,GAAIJ,IAG1ChC,EAAqBI,GAIjC2B,EAAc/C,OAAS,EACxB,CACEoB,KAAMJ,EAAqBI,GAC3BC,KAAM0B,EAAcK,UAAU,IAEhC,CACEhC,KAAMJ,EAAqBI,IARxBD,GAWTgC,EAAqB,SAAC9B,EAAM2B,MAC1BtB,EAAuB,KACjB2B,EHFQ,SAACC,OAGfnD,EAEAoD,EACAC,EACAC,EACAC,EAPAC,EAA+B,IAAhBL,EAAOtD,OACtBQ,EAAM8C,EAAOtD,OAEb4D,EAAI,EAM0B,MAA9BN,EAAOA,EAAOtD,OAAS,KACvB2D,IACkC,MAA9BL,EAAOA,EAAOtD,OAAS,IACvB2D,SAIFE,EAAc,IAAIlC,YAAYgC,GAChCG,EAAQ,IAAInB,WAAWkB,OAEtB1D,EAAI,EAAGA,EAAIK,EAAKL,GAAK,EACtBoD,EAAWb,EAAOY,EAAOV,WAAWzC,IACpCqD,EAAWd,EAAOY,EAAOV,WAAWzC,EAAI,IACxCsD,EAAWf,EAAOY,EAAOV,WAAWzC,EAAI,IACxCuD,EAAWhB,EAAOY,EAAOV,WAAWzC,EAAI,IAExC2D,EAAMF,KAAQL,GAAY,EAAMC,GAAY,EAC5CM,EAAMF,MAAoB,GAAXJ,IAAkB,EAAMC,GAAY,EACnDK,EAAMF,MAAoB,EAAXH,IAAiB,EAAiB,GAAXC,SAGnCG,EG7BaE,CAAO1C,UAChB4B,EAAUI,EAASL,SAGnB,CAAEM,QAAQ,EAAMjC,KAAAA,IAGzB4B,EAAY,SAAC5B,EAAM2B,SAEZ,SADDA,GAEO3B,aAAgBM,YAAc,IAAIJ,KAAK,CAACF,IAGxCA,GC3Cb2C,EAAYC,OAAOC,aAAa,ICCzBC,2CAOG5G,2CAEH6G,UAAW,EAChB3F,OAA4BlB,KACvBA,KAAOA,IACP8G,MAAQ9G,EAAK8G,QACbC,WAAa,KACbC,OAAShH,EAAKgH,mDASfC,EAAKC,OACHtH,EAAM,IAAIuH,MAAMF,UAEtBrH,EAAIiE,KAAO,iBAEXjE,EAAIwH,YAAcF,0CACP,QAAStH,GACboC,0CAQH,WAAaA,KAAK+E,YAAc,KAAO/E,KAAK+E,kBACvCA,WAAa,eACbM,UAEFrF,2CAQH,YAAcA,KAAK+E,YAAc,SAAW/E,KAAK+E,kBAC5CO,eACAC,WAEFvF,kCAQNwF,GACG,SAAWxF,KAAK+E,iBACXU,MAAMD,yCAYVT,WAAa,YACbF,UAAW,0CACL,uCAQR/C,OACG4D,EAASnC,EAAazB,EAAM9B,KAAKgF,OAAOvB,iBACzCkC,SAASD,oCAOTA,2CACM,SAAUA,0CAQhBX,WAAa,iDACP,gBAzGYxF,GHD3BqG,EAAW,mEAAmE5C,MAAM,IAEpF6C,EAAM,GACNC,EAAO,EACPlF,EAAI,EAUR,SAASmF,EAAOC,OACVC,EAAU,MAGZA,EAAUL,EAASI,EAjBV,IAiB0BC,EACnCD,EAAME,KAAKC,MAAMH,EAlBR,UAmBFA,EAAM,UAERC,EA0BT,SAASG,QACHC,EAAMN,GAAQ,IAAIO,aAElBD,IAAQ/C,GAAawC,EAAO,EAAGxC,EAAO+C,GACnCA,EAAK,IAAKN,EAAOD,KAM1B,KAAOlF,EAzDM,GAyDMA,IAAKiF,EAAID,EAAShF,IAAMA,EAK3CwF,EAAML,OAASA,EACfK,EAAM5B,OAhCN,SAAgB+B,OACVzC,EAAU,MAETlD,EAAI,EAAGA,EAAI2F,EAAI9F,OAAQG,IAC1BkD,EAnCS,GAmCCA,EAAmB+B,EAAIU,EAAI5C,OAAO/C,WAGvCkD,OA0BT0C,EAAiBJ,YI3DA,SAAU5H,OACrB+H,EAAM,OAEL,IAAI3F,KAAKpC,EACRA,EAAIK,eAAe+B,KACjB2F,EAAI9F,SAAQ8F,GAAO,KACvBA,GAAOE,mBAAmB7F,GAAK,IAAM6F,mBAAmBjI,EAAIoC,YAIzD2F,UAUQ,SAASG,WACpBC,EAAM,GACNC,EAAQF,EAAG1D,MAAM,KACZpC,EAAI,EAAGiG,EAAID,EAAMnG,OAAQG,EAAIiG,EAAGjG,IAAK,KACxCkG,EAAOF,EAAMhG,GAAGoC,MAAM,KAC1B2D,EAAII,mBAAmBD,EAAK,KAAOC,mBAAmBD,EAAK,WAEtDH,IC/BIK,oFAEI3G,YACJ4G,SAAU,oDAeVC,qCAQHC,mBACGpC,WAAa,cACZqC,EAAQ,WACVC,EAAKtC,WAAa,SAClBoC,QAEAnH,KAAKiH,UAAYjH,KAAK6E,SAAU,KAC5ByC,EAAQ,EACRtH,KAAKiH,UACLK,SACKpH,KAAK,gBAAgB,aACpBoH,GAASF,QAGdpH,KAAK6E,WACNyC,SACKpH,KAAK,SAAS,aACboH,GAASF,aAKnBA,wCASCH,SAAU,OACVM,cACAzG,KAAK,uCAOPgB,eHpDW,SAAC0F,EAAgB/D,WAC7BgE,EAAiBD,EAAexE,MAAMyB,GACtCe,EAAU,GACP5E,EAAI,EAAGA,EAAI6G,EAAehH,OAAQG,IAAK,KACtC8G,EAAgBnE,EAAakE,EAAe7G,GAAI6C,MACtD+B,EAAQvF,KAAKyH,GACc,UAAvBA,EAAc7F,kBAIf2D,GGyDHmC,CAAc7F,EAAM9B,KAAKgF,OAAOvB,YAAY9B,SAd3B,SAAA+D,MAET,YAAckC,EAAK7C,YAA8B,SAAhBW,EAAO7D,MACxC+F,EAAKC,SAGL,UAAYnC,EAAO7D,YACnB+F,EAAKrC,WACE,EAGXqC,EAAKjC,SAASD,MAKd,WAAa1F,KAAK+E,kBAEbkC,SAAU,OACVnG,KAAK,gBACN,SAAWd,KAAK+E,iBACXmC,qDAYPY,EAAQ,WACVC,EAAKtC,MAAM,CAAC,CAAE5D,KAAM,YAEpB,SAAW7B,KAAK+E,WAChB+C,SAKK5H,KAAK,OAAQ4H,iCAUpBtC,mBACGX,UAAW,EHzHF,SAACW,EAASjD,OAEtB9B,EAAS+E,EAAQ/E,OACjBgH,EAAiB,IAAIzG,MAAMP,GAC7BuH,EAAQ,EACZxC,EAAQ7D,SAAQ,SAAC+D,EAAQ9E,GAErByB,EAAaqD,GAAQ,GAAO,SAAAlC,GACxBiE,EAAe7G,GAAK4C,IACdwE,IAAUvH,GACZ8B,EAASkF,EAAenJ,KAAKmG,UGgHrCwD,CAAczC,GAAS,SAAA1D,GACnBoG,EAAKC,QAAQrG,GAAM,WACfoG,EAAKrD,UAAW,EAChBqD,EAAKpH,KAAK,iDAUdgE,EAAQ9E,KAAK8E,OAAS,GACpBsD,EAASpI,KAAKhC,KAAKqK,OAAS,QAAU,OACxCC,EAAO,IAEP,IAAUtI,KAAKhC,KAAKuK,oBACpBzD,EAAM9E,KAAKhC,KAAKwK,gBAAkBpC,KAEjCpG,KAAKsC,gBAAmBwC,EAAM2D,MAC/B3D,EAAM4D,IAAM,GAGZ1I,KAAKhC,KAAKsK,OACR,UAAYF,GAAqC,MAA3BO,OAAO3I,KAAKhC,KAAKsK,OACpC,SAAWF,GAAqC,KAA3BO,OAAO3I,KAAKhC,KAAKsK,SAC3CA,EAAO,IAAMtI,KAAKhC,KAAKsK,UAErBM,EAAeC,EAAQ9C,OAAOjB,UAE5BsD,EACJ,QAF8C,IAArCpI,KAAKhC,KAAK8K,SAASC,QAAQ,KAG5B,IAAM/I,KAAKhC,KAAK8K,SAAW,IAAM9I,KAAKhC,KAAK8K,UACnDR,EACAtI,KAAKhC,KAAKgL,MACTJ,EAAanI,OAAS,IAAMmI,EAAe,uCApJzC,iBATchE,GCK7B,SAASqE,KACT,IAAMC,EAIK,MAHK,IAAIvL,EAAe,CAC3BM,SAAS,IAEMkL,aAEVC,2CAOGpL,oCACFA,GACkB,oBAAbqL,SAA0B,KAC3BC,EAAQ,WAAaD,SAASE,SAChCjB,EAAOe,SAASf,KAEfA,IACDA,EAAOgB,EAAQ,MAAQ,QAEtBE,GACoB,oBAAbH,UACJrL,EAAK8K,WAAaO,SAASP,UAC3BR,IAAStK,EAAKsK,OACjBmB,GAAKzL,EAAKqK,SAAWiB,MAKxBI,EAAc1L,GAAQA,EAAK0L,qBAC5BpH,eAAiB4G,IAAYQ,oDAQ9B1L,yDAAO,YACGA,EAAM,CAAEwL,GAAIxJ,KAAKwJ,GAAIC,GAAIzJ,KAAKyJ,IAAMzJ,KAAKhC,MAChD,IAAI2L,EAAQ3J,KAAK4J,MAAO5L,mCAS3B8D,EAAMhC,cACJ+J,EAAM7J,KAAK8J,QAAQ,CACrBC,OAAQ,OACRjI,KAAMA,IAEV+H,EAAIlK,GAAG,UAAWG,GAClB+J,EAAIlK,GAAG,SAAS,SAAA/B,GACZyJ,EAAK2C,QAAQ,iBAAkBpM,kDAS7BiM,EAAM7J,KAAK8J,UACjBD,EAAIlK,GAAG,OAAQK,KAAKiK,OAAO5K,KAAKW,OAChC6J,EAAIlK,GAAG,SAAS,SAAA/B,GACZgK,EAAKoC,QAAQ,iBAAkBpM,WAE9BsM,QAAUL,SAlEE7C,GAqEZ2C,2CAOGC,EAAK5L,0BAEbkB,oBAA4BlB,KACvBA,KAAOA,IACP+L,OAAS/L,EAAK+L,QAAU,QACxBH,IAAMA,IACNO,OAAQ,IAAUnM,EAAKmM,QACvBrI,UAAOsI,IAAcpM,EAAK8D,KAAO9D,EAAK8D,KAAO,OAC7CN,iEAQCxD,EAAOO,EAAKyB,KAAKhC,KAAM,QAAS,MAAO,MAAO,aAAc,OAAQ,KAAM,UAAW,qBAAsB,aACjHA,EAAKC,UAAY+B,KAAKhC,KAAKwL,GAC3BxL,EAAKqM,UAAYrK,KAAKhC,KAAKyL,OACrBa,EAAOtK,KAAKsK,IAAM,IAAI3M,EAAeK,OAEvCsM,EAAIC,KAAKvK,KAAK+J,OAAQ/J,KAAK4J,IAAK5J,KAAKmK,cAE7BnK,KAAKhC,KAAKwM,iBAEL,IAAI5J,KADT0J,EAAIG,uBAAyBH,EAAIG,uBAAsB,GACzCzK,KAAKhC,KAAKwM,aAChBxK,KAAKhC,KAAKwM,aAAa3L,eAAe+B,IACtC0J,EAAII,iBAAiB9J,EAAGZ,KAAKhC,KAAKwM,aAAa5J,IAK/D,MAAOzC,OACH,SAAW6B,KAAK+J,WAEZO,EAAII,iBAAiB,eAAgB,4BAEzC,MAAOvM,QAGPmM,EAAII,iBAAiB,SAAU,OAEnC,MAAOvM,IAEH,oBAAqBmM,IACrBA,EAAIK,gBAAkB3K,KAAKhC,KAAK2M,iBAEhC3K,KAAKhC,KAAK4M,iBACVN,EAAIO,QAAU7K,KAAKhC,KAAK4M,gBAE5BN,EAAIQ,mBAAqB,WACjB,IAAMR,EAAIvF,aAEV,MAAQuF,EAAIS,QAAU,OAAST,EAAIS,OACnC7C,EAAK8C,SAKL9C,EAAK9I,cAAa,WACd8I,EAAK8B,QAA8B,iBAAfM,EAAIS,OAAsBT,EAAIS,OAAS,KAC5D,KAGXT,EAAIW,KAAKjL,KAAK8B,MAElB,MAAO3D,oBAIEiB,cAAa,WACd8I,EAAK8B,QAAQ7L,KACd,GAGiB,oBAAb+M,gBACFC,MAAQxB,EAAQyB,gBACrBzB,EAAQ0B,SAASrL,KAAKmL,OAASnL,+CAS9Bc,KAAK,gBACLwK,yCAOFxJ,QACEhB,KAAK,OAAQgB,QACbyJ,4CAOD3N,QACCkD,KAAK,QAASlD,QACd0N,SAAQ,mCAOTE,WACA,IAAuBxL,KAAKsK,KAAO,OAAStK,KAAKsK,aAGhDA,IAAIQ,mBAAqB7B,EAC1BuC,WAESlB,IAAImB,QAEb,MAAOtN,IAEa,oBAAb+M,iBACAvB,EAAQ0B,SAASrL,KAAKmL,YAE5Bb,IAAM,2CAQLxI,EAAO9B,KAAKsK,IAAIoB,aACT,OAAT5J,QACKmI,OAAOnI,wCASXwJ,iBAxJgB/L,GAkK7B,GAPAoK,EAAQyB,cAAgB,EACxBzB,EAAQ0B,SAAW,GAMK,oBAAbH,YAEoB,mBAAhBS,YAEPA,YAAY,WAAYC,QAEvB,GAAgC,mBAArBhM,iBAAiC,CAE7CA,iBADyB,eAAgBxB,EAAa,WAAa,SAChCwN,GAAe,GAG1D,SAASA,QACA,IAAIhL,KAAK+I,EAAQ0B,SACd1B,EAAQ0B,SAASxM,eAAe+B,IAChC+I,EAAQ0B,SAASzK,GAAG6K,QCpQzB,IAAMI,EACqC,mBAAZC,SAAqD,mBAApBA,QAAQC,QAEhE,SAAArL,UAAMoL,QAAQC,UAAUC,KAAKtL,IAG7B,SAACA,EAAItB,UAAiBA,EAAasB,EAAI,IAGzCuL,GAAY7N,EAAW6N,WAAa7N,EAAW8N,aCHtDC,GAAqC,oBAAdC,WACI,iBAAtBA,UAAUC,SACmB,gBAApCD,UAAUC,QAAQC,cACTC,4CAOGvO,yCACFA,IACDsE,gBAAkBtE,EAAK0L,4DAgBvB1J,KAAKwM,aAIJ5C,EAAM5J,KAAK4J,MACX6C,EAAYzM,KAAKhC,KAAKyO,UAEtBzO,EAAOmO,GACP,GACA5N,EAAKyB,KAAKhC,KAAM,QAAS,oBAAqB,MAAO,MAAO,aAAc,OAAQ,KAAM,UAAW,qBAAsB,eAAgB,kBAAmB,SAAU,aAAc,SAAU,uBAChMgC,KAAKhC,KAAKwM,eACVxM,EAAK0O,QAAU1M,KAAKhC,KAAKwM,uBAGpBmC,GACyBR,GAIpB,IAAIF,GAAUrC,EAAK6C,EAAWzO,GAH9ByO,EACI,IAAIR,GAAUrC,EAAK6C,GACnB,IAAIR,GAAUrC,GAGhC,MAAOhM,UACIoC,KAAKc,KAAK,QAASlD,QAEzB+O,GAAGlJ,WAAazD,KAAKgF,OAAOvB,YD/CR,mBCgDpBmJ,iFAQAD,GAAGE,OAAS,WACTxF,EAAKrJ,KAAK8O,WACVzF,EAAKsF,GAAGI,QAAQC,QAEpB3F,EAAKQ,eAEJ8E,GAAGM,QAAUjN,KAAKuF,QAAQlG,KAAKW,WAC/B2M,GAAGO,UAAY,SAAAC,UAAM9F,EAAK4C,OAAOkD,EAAGrL,YACpC6K,GAAGS,QAAU,SAAAjP,UAAKkJ,EAAK2C,QAAQ,kBAAmB7L,kCAQrDqH,mBACGX,UAAW,qBAGPjE,OACC8E,EAASF,EAAQ5E,GACjByM,EAAazM,IAAM4E,EAAQ/E,OAAS,EAC1C4B,EAAaqD,EAAQkC,EAAKtF,gBAAgB,SAAAR,OAoB9B8F,EAAK+E,GAAG1B,KAAKnJ,GAMrB,MAAO3D,IAEHkP,GAGAxB,GAAS,WACLjE,EAAK/C,UAAW,EAChB+C,EAAK9G,KAAK,WACX8G,EAAKxI,kBArCXwB,EAAI,EAAGA,EAAI4E,EAAQ/E,OAAQG,MAA3BA,0CAgDc,IAAZZ,KAAK2M,UACPA,GAAG7E,aACH6E,GAAK,wCASV7H,EAAQ9E,KAAK8E,OAAS,GACpBsD,EAASpI,KAAKhC,KAAKqK,OAAS,MAAQ,KACtCC,EAAO,GAEPtI,KAAKhC,KAAKsK,OACR,QAAUF,GAAqC,MAA3BO,OAAO3I,KAAKhC,KAAKsK,OAClC,OAASF,GAAqC,KAA3BO,OAAO3I,KAAKhC,KAAKsK,SACzCA,EAAO,IAAMtI,KAAKhC,KAAKsK,MAGvBtI,KAAKhC,KAAKuK,oBACVzD,EAAM9E,KAAKhC,KAAKwK,gBAAkBpC,KAGjCpG,KAAKsC,iBACNwC,EAAM4D,IAAM,OAEVE,EAAeC,EAAQ9C,OAAOjB,UAE5BsD,EACJ,QAF8C,IAArCpI,KAAKhC,KAAK8K,SAASC,QAAQ,KAG5B,IAAM/I,KAAKhC,KAAK8K,SAAW,IAAM9I,KAAKhC,KAAK8K,UACnDR,EACAtI,KAAKhC,KAAKgL,MACTJ,EAAanI,OAAS,IAAMmI,EAAe,6CAStCqD,IACJ,iBAAkBA,IAAajM,KAAKsN,OAASf,EAAG9M,UAAU6N,yCA1JzD,mBAjBS1I,GCRX2I,GAAa,CACtBC,UAAWjB,GACXtF,QAASmC,GCGTqE,GAAK,0OAELC,GAAQ,CACR,SAAU,WAAY,YAAa,WAAY,OAAQ,WAAY,OAAQ,OAAQ,WAAY,OAAQ,YAAa,OAAQ,QAAS,UAGzIC,GAAiB,SAAkBpH,OAC3BqH,EAAMrH,EACNsH,EAAItH,EAAIwC,QAAQ,KAChB5K,EAAIoI,EAAIwC,QAAQ,MAEV,GAAN8E,IAAiB,GAAN1P,IACXoI,EAAMA,EAAI1C,UAAU,EAAGgK,GAAKtH,EAAI1C,UAAUgK,EAAG1P,GAAG2P,QAAQ,KAAM,KAAOvH,EAAI1C,UAAU1F,EAAGoI,EAAI9F,iBAsC3EqE,EACfhD,EApCAiM,EAAIN,GAAGO,KAAKzH,GAAO,IACnBqD,EAAM,GACNhJ,EAAI,GAEDA,KACHgJ,EAAI8D,GAAM9M,IAAMmN,EAAEnN,IAAM,UAGlB,GAANiN,IAAiB,GAAN1P,IACXyL,EAAIqE,OAASL,EACbhE,EAAIsE,KAAOtE,EAAIsE,KAAKrK,UAAU,EAAG+F,EAAIsE,KAAKzN,OAAS,GAAGqN,QAAQ,KAAM,KACpElE,EAAIuE,UAAYvE,EAAIuE,UAAUL,QAAQ,IAAK,IAAIA,QAAQ,IAAK,IAAIA,QAAQ,KAAM,KAC9ElE,EAAIwE,SAAU,GAGlBxE,EAAIyE,UAMR,SAAmB7P,EAAKwK,OAChBsF,EAAO,WACPC,EAAQvF,EAAK8E,QAAQQ,EAAM,KAAKtL,MAAM,KAEjB,KAArBgG,EAAKwF,OAAO,EAAG,IAA6B,IAAhBxF,EAAKvI,QACjC8N,EAAM1N,OAAO,EAAG,GAEmB,KAAnCmI,EAAKwF,OAAOxF,EAAKvI,OAAS,EAAG,IAC7B8N,EAAM1N,OAAO0N,EAAM9N,OAAS,EAAG,UAG5B8N,EAjBSF,CAAUzE,EAAKA,EAAG,MAClCA,EAAI6E,UAmBe3J,EAnBU8E,EAAG,MAoB5B9H,EAAO,GAEXgD,EAAMgJ,QAAQ,6BAA6B,SAAUY,EAAIC,EAAIC,GACrDD,IACA7M,EAAK6M,GAAMC,MAIZ9M,GA1BA8H,OClCEiF,4CAQGjF,SAAK5L,yDAAO,mCAEhB4L,GAAO,aAAoBA,KAC3B5L,EAAO4L,EACPA,EAAM,MAENA,GACAA,EAAM+D,GAAS/D,GACf5L,EAAK8K,SAAWc,EAAIsE,KACpBlQ,EAAKqK,OAA0B,UAAjBuB,EAAIL,UAAyC,QAAjBK,EAAIL,SAC9CvL,EAAKsK,KAAOsB,EAAItB,KACZsB,EAAI9E,QACJ9G,EAAK8G,MAAQ8E,EAAI9E,QAEhB9G,EAAKkQ,OACVlQ,EAAK8K,SAAW6E,GAAS3P,EAAKkQ,MAAMA,MAExChP,OAA4BlB,KACvBqK,OACD,MAAQrK,EAAKqK,OACPrK,EAAKqK,OACe,oBAAbgB,UAA4B,WAAaA,SAASE,SAC/DvL,EAAK8K,WAAa9K,EAAKsK,OAEvBtK,EAAKsK,KAAOwG,EAAKzG,OAAS,MAAQ,QAEjCS,SACD9K,EAAK8K,WACoB,oBAAbO,SAA2BA,SAASP,SAAW,eAC1DR,KACDtK,EAAKsK,OACoB,oBAAbe,UAA4BA,SAASf,KACvCe,SAASf,KACTwG,EAAKzG,OACD,MACA,QACbkF,WAAavP,EAAKuP,YAAc,CAAC,UAAW,eAC5CxI,WAAa,KACbgK,YAAc,KACdC,cAAgB,IAChBhR,KAAOiR,EAAc,CACtBjG,KAAM,aACNkG,OAAO,EACPvE,iBAAiB,EACjBwE,SAAS,EACT3G,eAAgB,IAChB4G,iBAAiB,EACjBC,oBAAoB,EACpBC,kBAAmB,CACfC,UAAW,MAEfC,iBAAkB,GAClBC,qBAAqB,GACtBzR,KACEA,KAAKgL,KAAO8F,EAAK9Q,KAAKgL,KAAK8E,QAAQ,MAAO,IAAM,IACtB,iBAApBgB,EAAK9Q,KAAK8G,UACZ9G,KAAK8G,MAAQ+D,EAAQrE,OAAOsK,EAAK9Q,KAAK8G,UAG1C4K,GAAK,OACLC,SAAW,OACXC,aAAe,OACfC,YAAc,OAEdC,iBAAmB,KACQ,mBAArBlQ,mBACHkP,EAAK9Q,KAAKyR,qBAIV7P,iBAAiB,gBAAgB,WACzBkP,EAAKiB,cAEAA,UAAUxP,uBACVwP,UAAUjI,YAEpB,GAEe,cAAlBgH,EAAKhG,aACAkH,qBAAuB,aACnBzK,QAAQ,oBAEjB3F,iBAAiB,UAAWkP,EAAKkB,sBAAsB,OAG1DzF,2DASO+C,OACNxI,EA0bd,SAAetG,OACLyR,EAAI,OACL,IAAIrP,KAAKpC,EACNA,EAAIK,eAAe+B,KACnBqP,EAAErP,GAAKpC,EAAIoC,WAGZqP,EAjcWC,CAAMlQ,KAAKhC,KAAK8G,OAE9BA,EAAMqL,ITjFU,ESmFhBrL,EAAMiL,UAAYzC,EAEdtN,KAAK0P,KACL5K,EAAM2D,IAAMzI,KAAK0P,QACf1R,EAAOiR,EAAc,GAAIjP,KAAKhC,KAAKwR,iBAAiBlC,GAAOtN,KAAKhC,KAAM,CACxE8G,MAAAA,EACAE,OAAQhF,KACR8I,SAAU9I,KAAK8I,SACfT,OAAQrI,KAAKqI,OACbC,KAAMtI,KAAKsI,cAER,IAAIiF,GAAWD,GAAMtP,sCAQxB+R,YACA/P,KAAKhC,KAAKoR,iBACVP,EAAOuB,wBACmC,IAA1CpQ,KAAKuN,WAAWxE,QAAQ,aACxBgH,EAAY,gBAEX,CAAA,GAAI,IAAM/P,KAAKuN,WAAW9M,wBAEtBrB,cAAa,WACdiI,EAAKlG,aAAa,QAAS,6BAC5B,GAIH4O,EAAY/P,KAAKuN,WAAW,QAE3BxI,WAAa,cAGdgL,EAAY/P,KAAKqQ,gBAAgBN,GAErC,MAAO5R,eACEoP,WAAW+C,kBACX/F,OAGTwF,EAAUxF,YACLgG,aAAaR,wCAOTA,cACL/P,KAAK+P,gBACAA,UAAUxP,0BAGdwP,UAAYA,EAEjBA,EACKpQ,GAAG,QAASK,KAAKwQ,QAAQnR,KAAKW,OAC9BL,GAAG,SAAUK,KAAK2F,SAAStG,KAAKW,OAChCL,GAAG,QAASK,KAAKgK,QAAQ3K,KAAKW,OAC9BL,GAAG,SAAS,WACbiI,EAAKrC,QAAQ,oDASf+H,cACEyC,EAAY/P,KAAKqQ,gBAAgB/C,GACjCmD,GAAS,EACb5B,EAAOuB,uBAAwB,MACzBM,EAAkB,WAChBD,IAEJV,EAAU9E,KAAK,CAAC,CAAEpJ,KAAM,OAAQC,KAAM,WACtCiO,EAAU7P,KAAK,UAAU,SAAA+E,OACjBwL,KAEA,SAAWxL,EAAIpD,MAAQ,UAAYoD,EAAInD,KAAM,IAC7CiG,EAAK4I,WAAY,EACjB5I,EAAK5G,aAAa,YAAa4O,IAC1BA,EACD,OACJlB,EAAOuB,sBAAwB,cAAgBL,EAAUzC,KACzDvF,EAAKgI,UAAU3I,OAAM,WACbqJ,GAEA,WAAa1I,EAAKhD,aAEtBuG,IACAvD,EAAKwI,aAAaR,GAClBA,EAAU9E,KAAK,CAAC,CAAEpJ,KAAM,aACxBkG,EAAK5G,aAAa,UAAW4O,GAC7BA,EAAY,KACZhI,EAAK4I,WAAY,EACjB5I,EAAK6I,gBAGR,KACKhT,EAAM,IAAIuH,MAAM,eAEtBvH,EAAImS,UAAYA,EAAUzC,KAC1BvF,EAAK5G,aAAa,eAAgBvD,kBAIrCiT,IACDJ,IAGJA,GAAS,EACTnF,IACAyE,EAAUjI,QACViI,EAAY,UAGV3C,EAAU,SAAAxP,OACNkT,EAAQ,IAAI3L,MAAM,gBAAkBvH,GAE1CkT,EAAMf,UAAYA,EAAUzC,KAC5BuD,IACA9I,EAAK5G,aAAa,eAAgB2P,aAE7BC,IACL3D,EAAQ,6BAGHH,IACLG,EAAQ,0BAGH4D,EAAUC,GACXlB,GAAakB,EAAG3D,OAASyC,EAAUzC,MACnCuD,QAIFvF,EAAU,WACZyE,EAAUzP,eAAe,OAAQoQ,GACjCX,EAAUzP,eAAe,QAAS8M,GAClC2C,EAAUzP,eAAe,QAASyQ,GAClChJ,EAAK5H,IAAI,QAAS8M,GAClBlF,EAAK5H,IAAI,YAAa6Q,IAE1BjB,EAAU7P,KAAK,OAAQwQ,GACvBX,EAAU7P,KAAK,QAASkN,GACxB2C,EAAU7P,KAAK,QAAS6Q,QACnB7Q,KAAK,QAAS+M,QACd/M,KAAK,YAAa8Q,GACvBjB,EAAUxF,gDAQLxF,WAAa,OAClB8J,EAAOuB,sBAAwB,cAAgBpQ,KAAK+P,UAAUzC,UACzDnM,aAAa,aACbyP,QAGD,SAAW5Q,KAAK+E,YAChB/E,KAAKhC,KAAKmR,SACVnP,KAAK+P,UAAU3I,cACXxG,EAAI,EACFiG,EAAI7G,KAAK2P,SAASlP,OACjBG,EAAIiG,EAAGjG,SACLsQ,MAAMlR,KAAK2P,SAAS/O,qCAS5B8E,MACD,YAAc1F,KAAK+E,YACnB,SAAW/E,KAAK+E,YAChB,YAAc/E,KAAK+E,uBACd5D,aAAa,SAAUuE,QAEvBvE,aAAa,aACVuE,EAAO7D,UACN,YACIsP,YAAYC,KAAKC,MAAM3L,EAAO5D,iBAElC,YACIwP,wBACAC,WAAW,aACXpQ,aAAa,aACbA,aAAa,kBAEjB,YACKvD,EAAM,IAAIuH,MAAM,gBAEtBvH,EAAI4T,KAAO9L,EAAO5D,UACbkI,QAAQpM,aAEZ,eACIuD,aAAa,OAAQuE,EAAO5D,WAC5BX,aAAa,UAAWuE,EAAO5D,2CAaxCA,QACHX,aAAa,YAAaW,QAC1B4N,GAAK5N,EAAK2G,SACVsH,UAAUjL,MAAM2D,IAAM3G,EAAK2G,SAC3BkH,SAAW3P,KAAKyR,eAAe3P,EAAK6N,eACpCC,aAAe9N,EAAK8N,kBACpBC,YAAc/N,EAAK+N,iBACnBhI,SAED,WAAa7H,KAAK+E,iBAEjBuM,8EAQAhS,eAAeU,KAAK8P,uBACpBA,iBAAmB9P,KAAKZ,cAAa,WACtC8I,EAAK3C,QAAQ,kBACdvF,KAAK4P,aAAe5P,KAAK6P,aACxB7P,KAAKhC,KAAK8O,gBACLgD,iBAAiB9C,+CASrB+B,YAAYlO,OAAO,EAAGb,KAAKgP,oBAI3BA,cAAgB,EACjB,IAAMhP,KAAK+O,YAAYtO,YAClBU,aAAa,cAGbyP,wCASL,WAAa5Q,KAAK+E,YAClB/E,KAAK+P,UAAUlL,WACd7E,KAAK2Q,WACN3Q,KAAK+O,YAAYtO,cACZsP,UAAU9E,KAAKjL,KAAK+O,kBAGpBC,cAAgBhP,KAAK+O,YAAYtO,YACjCU,aAAa,wCAYpB8D,EAAKyM,EAAS5R,eACXyR,WAAW,UAAWtM,EAAKyM,EAAS5R,GAClCE,kCAENiF,EAAKyM,EAAS5R,eACVyR,WAAW,UAAWtM,EAAKyM,EAAS5R,GAClCE,wCAWA6B,EAAMC,EAAM4P,EAAS5R,MACxB,mBAAsBgC,IACtBhC,EAAKgC,EACLA,OAAOsI,GAEP,mBAAsBsH,IACtB5R,EAAK4R,EACLA,EAAU,MAEV,YAAc1R,KAAK+E,YAAc,WAAa/E,KAAK+E,aAGvD2M,EAAUA,GAAW,IACbC,UAAW,IAAUD,EAAQC,aAC/BjM,EAAS,CACX7D,KAAMA,EACNC,KAAMA,EACN4P,QAASA,QAERvQ,aAAa,eAAgBuE,QAC7BqJ,YAAY9O,KAAKyF,GAClB5F,GACAE,KAAKE,KAAK,QAASJ,QAClB8Q,oDAQC9I,EAAQ,WACV8J,EAAKrM,QAAQ,gBACbqM,EAAK7B,UAAUjI,SAEb+J,EAAkB,SAAlBA,IACFD,EAAKzR,IAAI,UAAW0R,GACpBD,EAAKzR,IAAI,eAAgB0R,GACzB/J,KAEEgK,EAAiB,WAEnBF,EAAK1R,KAAK,UAAW2R,GACrBD,EAAK1R,KAAK,eAAgB2R,UAE1B,YAAc7R,KAAK+E,YAAc,SAAW/E,KAAK+E,kBAC5CA,WAAa,UACd/E,KAAK+O,YAAYtO,YACZP,KAAK,SAAS,WACX0R,EAAKjB,UACLmB,IAGAhK,OAIH9H,KAAK2Q,UACVmB,IAGAhK,KAGD9H,qCAOHpC,GACJiR,EAAOuB,uBAAwB,OAC1BjP,aAAa,QAASvD,QACtB2H,QAAQ,kBAAmB3H,mCAO5BmU,EAAQ7M,GACR,YAAclF,KAAK+E,YACnB,SAAW/E,KAAK+E,YAChB,YAAc/E,KAAK+E,kBAEdzF,eAAeU,KAAK8P,uBAEpBC,UAAUxP,mBAAmB,cAE7BwP,UAAUjI,aAEViI,UAAUxP,qBACoB,mBAAxBC,qBACPA,oBAAoB,UAAWR,KAAKgQ,sBAAsB,QAGzDjL,WAAa,cAEb2K,GAAK,UAELvO,aAAa,QAAS4Q,EAAQ7M,QAG9B6J,YAAc,QACdC,cAAgB,0CAUdW,WACLqC,EAAmB,GACrBpR,EAAI,EACFqR,EAAItC,EAASlP,OACZG,EAAIqR,EAAGrR,KACLZ,KAAKuN,WAAWxE,QAAQ4G,EAAS/O,KAClCoR,EAAiB/R,KAAK0P,EAAS/O,WAEhCoR,SA7hBazS,GAgiB5BsP,GAAOtF,STxgBiB,kBU7BRK,EAAK5L,UAAS,IAAI6Q,GAAOjF,EAAK5L"} \ No newline at end of file +{"version":3,"file":"engine.io.min.js","sources":["../node_modules/engine.io-parser/build/esm/commons.js","../node_modules/@socket.io/base64-arraybuffer/dist/base64-arraybuffer.es5.js","../node_modules/engine.io-parser/build/esm/encodePacket.browser.js","../node_modules/engine.io-parser/build/esm/decodePacket.browser.js","../node_modules/engine.io-parser/build/esm/index.js","../node_modules/@socket.io/component-emitter/index.mjs","../build/esm/globalThis.browser.js","../build/esm/util.js","../build/esm/contrib/yeast.js","../build/esm/transport.js","../build/esm/contrib/parseqs.js","../build/esm/contrib/has-cors.js","../build/esm/transports/xmlhttprequest.browser.js","../build/esm/transports/polling.js","../build/esm/transports/websocket-constructor.browser.js","../build/esm/transports/websocket.js","../build/esm/transports/index.js","../build/esm/contrib/parseuri.js","../build/esm/socket.js","../build/esm/browser-entrypoint.js"],"sourcesContent":["const PACKET_TYPES = Object.create(null); // no Map = no polyfill\nPACKET_TYPES[\"open\"] = \"0\";\nPACKET_TYPES[\"close\"] = \"1\";\nPACKET_TYPES[\"ping\"] = \"2\";\nPACKET_TYPES[\"pong\"] = \"3\";\nPACKET_TYPES[\"message\"] = \"4\";\nPACKET_TYPES[\"upgrade\"] = \"5\";\nPACKET_TYPES[\"noop\"] = \"6\";\nconst PACKET_TYPES_REVERSE = Object.create(null);\nObject.keys(PACKET_TYPES).forEach(key => {\n PACKET_TYPES_REVERSE[PACKET_TYPES[key]] = key;\n});\nconst ERROR_PACKET = { type: \"error\", data: \"parser error\" };\nexport { PACKET_TYPES, PACKET_TYPES_REVERSE, ERROR_PACKET };\n","/*\n * base64-arraybuffer 1.0.1 \n * Copyright (c) 2022 Niklas von Hertzen \n * Released under MIT License\n */\nvar chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n// Use a lookup table to find the index.\nvar lookup = typeof Uint8Array === 'undefined' ? [] : new Uint8Array(256);\nfor (var i = 0; i < chars.length; i++) {\n lookup[chars.charCodeAt(i)] = i;\n}\nvar encode = function (arraybuffer) {\n var bytes = new Uint8Array(arraybuffer), i, len = bytes.length, base64 = '';\n for (i = 0; i < len; i += 3) {\n base64 += chars[bytes[i] >> 2];\n base64 += chars[((bytes[i] & 3) << 4) | (bytes[i + 1] >> 4)];\n base64 += chars[((bytes[i + 1] & 15) << 2) | (bytes[i + 2] >> 6)];\n base64 += chars[bytes[i + 2] & 63];\n }\n if (len % 3 === 2) {\n base64 = base64.substring(0, base64.length - 1) + '=';\n }\n else if (len % 3 === 1) {\n base64 = base64.substring(0, base64.length - 2) + '==';\n }\n return base64;\n};\nvar decode = function (base64) {\n var bufferLength = base64.length * 0.75, len = base64.length, i, p = 0, encoded1, encoded2, encoded3, encoded4;\n if (base64[base64.length - 1] === '=') {\n bufferLength--;\n if (base64[base64.length - 2] === '=') {\n bufferLength--;\n }\n }\n var arraybuffer = new ArrayBuffer(bufferLength), bytes = new Uint8Array(arraybuffer);\n for (i = 0; i < len; i += 4) {\n encoded1 = lookup[base64.charCodeAt(i)];\n encoded2 = lookup[base64.charCodeAt(i + 1)];\n encoded3 = lookup[base64.charCodeAt(i + 2)];\n encoded4 = lookup[base64.charCodeAt(i + 3)];\n bytes[p++] = (encoded1 << 2) | (encoded2 >> 4);\n bytes[p++] = ((encoded2 & 15) << 4) | (encoded3 >> 2);\n bytes[p++] = ((encoded3 & 3) << 6) | (encoded4 & 63);\n }\n return arraybuffer;\n};\n\nexport { decode, encode };\n//# sourceMappingURL=base64-arraybuffer.es5.js.map\n","import { PACKET_TYPES } from \"./commons.js\";\nconst withNativeBlob = typeof Blob === \"function\" ||\n (typeof Blob !== \"undefined\" &&\n Object.prototype.toString.call(Blob) === \"[object BlobConstructor]\");\nconst withNativeArrayBuffer = typeof ArrayBuffer === \"function\";\n// ArrayBuffer.isView method is not defined in IE10\nconst isView = obj => {\n return typeof ArrayBuffer.isView === \"function\"\n ? ArrayBuffer.isView(obj)\n : obj && obj.buffer instanceof ArrayBuffer;\n};\nconst encodePacket = ({ type, data }, supportsBinary, callback) => {\n if (withNativeBlob && data instanceof Blob) {\n if (supportsBinary) {\n return callback(data);\n }\n else {\n return encodeBlobAsBase64(data, callback);\n }\n }\n else if (withNativeArrayBuffer &&\n (data instanceof ArrayBuffer || isView(data))) {\n if (supportsBinary) {\n return callback(data);\n }\n else {\n return encodeBlobAsBase64(new Blob([data]), callback);\n }\n }\n // plain string\n return callback(PACKET_TYPES[type] + (data || \"\"));\n};\nconst encodeBlobAsBase64 = (data, callback) => {\n const fileReader = new FileReader();\n fileReader.onload = function () {\n const content = fileReader.result.split(\",\")[1];\n callback(\"b\" + content);\n };\n return fileReader.readAsDataURL(data);\n};\nexport default encodePacket;\n","import { ERROR_PACKET, PACKET_TYPES_REVERSE } from \"./commons.js\";\nimport { decode } from \"@socket.io/base64-arraybuffer\";\nconst withNativeArrayBuffer = typeof ArrayBuffer === \"function\";\nconst decodePacket = (encodedPacket, binaryType) => {\n if (typeof encodedPacket !== \"string\") {\n return {\n type: \"message\",\n data: mapBinary(encodedPacket, binaryType)\n };\n }\n const type = encodedPacket.charAt(0);\n if (type === \"b\") {\n return {\n type: \"message\",\n data: decodeBase64Packet(encodedPacket.substring(1), binaryType)\n };\n }\n const packetType = PACKET_TYPES_REVERSE[type];\n if (!packetType) {\n return ERROR_PACKET;\n }\n return encodedPacket.length > 1\n ? {\n type: PACKET_TYPES_REVERSE[type],\n data: encodedPacket.substring(1)\n }\n : {\n type: PACKET_TYPES_REVERSE[type]\n };\n};\nconst decodeBase64Packet = (data, binaryType) => {\n if (withNativeArrayBuffer) {\n const decoded = decode(data);\n return mapBinary(decoded, binaryType);\n }\n else {\n return { base64: true, data }; // fallback for old browsers\n }\n};\nconst mapBinary = (data, binaryType) => {\n switch (binaryType) {\n case \"blob\":\n return data instanceof ArrayBuffer ? new Blob([data]) : data;\n case \"arraybuffer\":\n default:\n return data; // assuming the data is already an ArrayBuffer\n }\n};\nexport default decodePacket;\n","import encodePacket from \"./encodePacket.js\";\nimport decodePacket from \"./decodePacket.js\";\nconst SEPARATOR = String.fromCharCode(30); // see https://en.wikipedia.org/wiki/Delimiter#ASCII_delimited_text\nconst encodePayload = (packets, callback) => {\n // some packets may be added to the array while encoding, so the initial length must be saved\n const length = packets.length;\n const encodedPackets = new Array(length);\n let count = 0;\n packets.forEach((packet, i) => {\n // force base64 encoding for binary packets\n encodePacket(packet, false, encodedPacket => {\n encodedPackets[i] = encodedPacket;\n if (++count === length) {\n callback(encodedPackets.join(SEPARATOR));\n }\n });\n });\n};\nconst decodePayload = (encodedPayload, binaryType) => {\n const encodedPackets = encodedPayload.split(SEPARATOR);\n const packets = [];\n for (let i = 0; i < encodedPackets.length; i++) {\n const decodedPacket = decodePacket(encodedPackets[i], binaryType);\n packets.push(decodedPacket);\n if (decodedPacket.type === \"error\") {\n break;\n }\n }\n return packets;\n};\nexport const protocol = 4;\nexport { encodePacket, encodePayload, decodePacket, decodePayload };\n","/**\n * Initialize a new `Emitter`.\n *\n * @api public\n */\n\nexport function Emitter(obj) {\n if (obj) return mixin(obj);\n}\n\n/**\n * Mixin the emitter properties.\n *\n * @param {Object} obj\n * @return {Object}\n * @api private\n */\n\nfunction mixin(obj) {\n for (var key in Emitter.prototype) {\n obj[key] = Emitter.prototype[key];\n }\n return obj;\n}\n\n/**\n * Listen on the given `event` with `fn`.\n *\n * @param {String} event\n * @param {Function} fn\n * @return {Emitter}\n * @api public\n */\n\nEmitter.prototype.on =\nEmitter.prototype.addEventListener = function(event, fn){\n this._callbacks = this._callbacks || {};\n (this._callbacks['$' + event] = this._callbacks['$' + event] || [])\n .push(fn);\n return this;\n};\n\n/**\n * Adds an `event` listener that will be invoked a single\n * time then automatically removed.\n *\n * @param {String} event\n * @param {Function} fn\n * @return {Emitter}\n * @api public\n */\n\nEmitter.prototype.once = function(event, fn){\n function on() {\n this.off(event, on);\n fn.apply(this, arguments);\n }\n\n on.fn = fn;\n this.on(event, on);\n return this;\n};\n\n/**\n * Remove the given callback for `event` or all\n * registered callbacks.\n *\n * @param {String} event\n * @param {Function} fn\n * @return {Emitter}\n * @api public\n */\n\nEmitter.prototype.off =\nEmitter.prototype.removeListener =\nEmitter.prototype.removeAllListeners =\nEmitter.prototype.removeEventListener = function(event, fn){\n this._callbacks = this._callbacks || {};\n\n // all\n if (0 == arguments.length) {\n this._callbacks = {};\n return this;\n }\n\n // specific event\n var callbacks = this._callbacks['$' + event];\n if (!callbacks) return this;\n\n // remove all handlers\n if (1 == arguments.length) {\n delete this._callbacks['$' + event];\n return this;\n }\n\n // remove specific handler\n var cb;\n for (var i = 0; i < callbacks.length; i++) {\n cb = callbacks[i];\n if (cb === fn || cb.fn === fn) {\n callbacks.splice(i, 1);\n break;\n }\n }\n\n // Remove event specific arrays for event types that no\n // one is subscribed for to avoid memory leak.\n if (callbacks.length === 0) {\n delete this._callbacks['$' + event];\n }\n\n return this;\n};\n\n/**\n * Emit `event` with the given args.\n *\n * @param {String} event\n * @param {Mixed} ...\n * @return {Emitter}\n */\n\nEmitter.prototype.emit = function(event){\n this._callbacks = this._callbacks || {};\n\n var args = new Array(arguments.length - 1)\n , callbacks = this._callbacks['$' + event];\n\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n\n if (callbacks) {\n callbacks = callbacks.slice(0);\n for (var i = 0, len = callbacks.length; i < len; ++i) {\n callbacks[i].apply(this, args);\n }\n }\n\n return this;\n};\n\n// alias used for reserved events (protected method)\nEmitter.prototype.emitReserved = Emitter.prototype.emit;\n\n/**\n * Return array of callbacks for `event`.\n *\n * @param {String} event\n * @return {Array}\n * @api public\n */\n\nEmitter.prototype.listeners = function(event){\n this._callbacks = this._callbacks || {};\n return this._callbacks['$' + event] || [];\n};\n\n/**\n * Check if this emitter has `event` handlers.\n *\n * @param {String} event\n * @return {Boolean}\n * @api public\n */\n\nEmitter.prototype.hasListeners = function(event){\n return !! this.listeners(event).length;\n};\n","export default (() => {\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 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 = setTimeout;\nconst NATIVE_CLEAR_TIMEOUT = 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 = setTimeout.bind(globalThis);\n obj.clearTimeoutFn = clearTimeout.bind(globalThis);\n }\n}\n// base64 encoded buffers are about 33% bigger (https://en.wikipedia.org/wiki/Base64)\nconst BASE64_OVERHEAD = 1.33;\n// we could also have used `new Blob([obj]).size`, but it isn't supported in IE9\nexport function byteLength(obj) {\n if (typeof obj === \"string\") {\n return utf8Length(obj);\n }\n // arraybuffer or blob\n return Math.ceil((obj.byteLength || obj.size) * BASE64_OVERHEAD);\n}\nfunction utf8Length(str) {\n let c = 0, length = 0;\n for (let i = 0, l = str.length; i < l; i++) {\n c = str.charCodeAt(i);\n if (c < 0x80) {\n length += 1;\n }\n else if (c < 0x800) {\n length += 2;\n }\n else if (c < 0xd800 || c >= 0xe000) {\n length += 3;\n }\n else {\n i++;\n length += 4;\n }\n }\n return length;\n}\n","// imported from https://github.com/unshiftio/yeast\n'use strict';\nconst alphabet = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-_'.split(''), length = 64, map = {};\nlet seed = 0, i = 0, prev;\n/**\n * Return a string representing the specified number.\n *\n * @param {Number} num The number to convert.\n * @returns {String} The string representation of the number.\n * @api public\n */\nexport function encode(num) {\n let encoded = '';\n do {\n encoded = alphabet[num % length] + encoded;\n num = Math.floor(num / length);\n } while (num > 0);\n return encoded;\n}\n/**\n * Return the integer value specified by the given string.\n *\n * @param {String} str The string to convert.\n * @returns {Number} The integer value represented by the string.\n * @api public\n */\nexport function decode(str) {\n let decoded = 0;\n for (i = 0; i < str.length; i++) {\n decoded = decoded * length + map[str.charAt(i)];\n }\n return decoded;\n}\n/**\n * Yeast: A tiny growing id generator.\n *\n * @returns {String} A unique id.\n * @api public\n */\nexport function yeast() {\n const now = encode(+new Date());\n if (now !== prev)\n return seed = 0, prev = now;\n return now + '.' + encode(seed++);\n}\n//\n// Map each character to its index.\n//\nfor (; i < length; i++)\n map[alphabet[i]] = i;\n","import { decodePacket } from \"engine.io-parser\";\nimport { Emitter } from \"@socket.io/component-emitter\";\nimport { installTimerFunctions } from \"./util.js\";\nclass TransportError extends Error {\n constructor(reason, description, context) {\n super(reason);\n this.description = description;\n this.context = context;\n this.type = \"TransportError\";\n }\n}\nexport class Transport extends Emitter {\n /**\n * Transport abstract constructor.\n *\n * @param {Object} options.\n * @api private\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.readyState = \"\";\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 * @api 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 * @api public\n */\n open() {\n if (\"closed\" === this.readyState || \"\" === this.readyState) {\n this.readyState = \"opening\";\n this.doOpen();\n }\n return this;\n }\n /**\n * Closes the transport.\n *\n * @api public\n */\n close() {\n if (\"opening\" === this.readyState || \"open\" === this.readyState) {\n this.doClose();\n this.onClose();\n }\n return this;\n }\n /**\n * Sends multiple packets.\n *\n * @param {Array} packets\n * @api public\n */\n send(packets) {\n if (\"open\" === this.readyState) {\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 * @api 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 * @api 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 * @api protected\n */\n onPacket(packet) {\n super.emitReserved(\"packet\", packet);\n }\n /**\n * Called upon close.\n *\n * @api protected\n */\n onClose(details) {\n this.readyState = \"closed\";\n super.emitReserved(\"close\", details);\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/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 globalThis from \"../globalThis.js\";\nexport default function (opts) {\n const xdomain = opts.xdomain;\n // XMLHttpRequest can be disabled on IE\n try {\n if (\"undefined\" !== typeof XMLHttpRequest && (!xdomain || hasCORS)) {\n return new XMLHttpRequest();\n }\n }\n catch (e) { }\n if (!xdomain) {\n try {\n return new globalThis[[\"Active\"].concat(\"Object\").join(\"X\")](\"Microsoft.XMLHTTP\");\n }\n catch (e) { }\n }\n}\n","import { Transport } from \"../transport.js\";\nimport { yeast } from \"../contrib/yeast.js\";\nimport { encode } from \"../contrib/parseqs.js\";\nimport { encodePayload, decodePayload } from \"engine.io-parser\";\nimport XMLHttpRequest from \"./xmlhttprequest.js\";\nimport { Emitter } from \"@socket.io/component-emitter\";\nimport { installTimerFunctions, pick } from \"../util.js\";\nimport 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 * @api public\n */\n constructor(opts) {\n super(opts);\n this.polling = false;\n if (typeof location !== \"undefined\") {\n const isSSL = \"https:\" === location.protocol;\n let port = location.port;\n // some user agents have empty `location.port`\n if (!port) {\n port = isSSL ? \"443\" : \"80\";\n }\n this.xd =\n (typeof location !== \"undefined\" &&\n opts.hostname !== location.hostname) ||\n port !== opts.port;\n this.xs = opts.secure !== isSSL;\n }\n /**\n * XHR supports binary\n */\n const forceBase64 = opts && opts.forceBase64;\n this.supportsBinary = hasXHR2 && !forceBase64;\n }\n /**\n * Transport name.\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 * @api private\n */\n doOpen() {\n this.poll();\n }\n /**\n * Pauses polling.\n *\n * @param {Function} callback upon buffers are flushed and transport is paused\n * @api private\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 * @api public\n */\n poll() {\n this.polling = true;\n this.doPoll();\n this.emitReserved(\"poll\");\n }\n /**\n * Overloads onData to detect payloads.\n *\n * @api private\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 * @api private\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} data packets\n * @param {Function} drain callback\n * @api private\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 * @api private\n */\n uri() {\n let query = this.query || {};\n const schema = this.opts.secure ? \"https\" : \"http\";\n let port = \"\";\n // cache busting is forced\n if (false !== this.opts.timestampRequests) {\n query[this.opts.timestampParam] = yeast();\n }\n if (!this.supportsBinary && !query.sid) {\n query.b64 = 1;\n }\n // avoid port if default for schema\n if (this.opts.port &&\n ((\"https\" === schema && Number(this.opts.port) !== 443) ||\n (\"http\" === schema && Number(this.opts.port) !== 80))) {\n port = \":\" + this.opts.port;\n }\n const encodedQuery = encode(query);\n const ipv6 = this.opts.hostname.indexOf(\":\") !== -1;\n return (schema +\n \"://\" +\n (ipv6 ? \"[\" + this.opts.hostname + \"]\" : this.opts.hostname) +\n port +\n this.opts.path +\n (encodedQuery.length ? \"?\" + encodedQuery : \"\"));\n }\n /**\n * Creates a request.\n *\n * @param {String} method\n * @api private\n */\n request(opts = {}) {\n Object.assign(opts, { xd: this.xd, xs: this.xs }, this.opts);\n return new Request(this.uri(), opts);\n }\n /**\n * Sends data.\n *\n * @param {String} data to send.\n * @param {Function} called upon flush.\n * @api 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 * @api 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 * @api public\n */\n constructor(uri, opts) {\n super();\n installTimerFunctions(this, opts);\n this.opts = opts;\n this.method = opts.method || \"GET\";\n this.uri = uri;\n this.async = false !== opts.async;\n this.data = undefined !== opts.data ? opts.data : null;\n this.create();\n }\n /**\n * Creates the XHR object and sends the request.\n *\n * @api private\n */\n create() {\n const opts = pick(this.opts, \"agent\", \"pfx\", \"key\", \"passphrase\", \"cert\", \"ca\", \"ciphers\", \"rejectUnauthorized\", \"autoUnref\");\n opts.xdomain = !!this.opts.xd;\n opts.xscheme = !!this.opts.xs;\n const xhr = (this.xhr = new XMLHttpRequest(opts));\n try {\n xhr.open(this.method, this.uri, this.async);\n try {\n if (this.opts.extraHeaders) {\n xhr.setDisableHeaderCheck && xhr.setDisableHeaderCheck(true);\n for (let i in this.opts.extraHeaders) {\n if (this.opts.extraHeaders.hasOwnProperty(i)) {\n xhr.setRequestHeader(i, this.opts.extraHeaders[i]);\n }\n }\n }\n }\n catch (e) { }\n if (\"POST\" === this.method) {\n try {\n xhr.setRequestHeader(\"Content-type\", \"text/plain;charset=UTF-8\");\n }\n catch (e) { }\n }\n try {\n xhr.setRequestHeader(\"Accept\", \"*/*\");\n }\n catch (e) { }\n // ie6 check\n if (\"withCredentials\" in xhr) {\n xhr.withCredentials = this.opts.withCredentials;\n }\n if (this.opts.requestTimeout) {\n xhr.timeout = this.opts.requestTimeout;\n }\n xhr.onreadystatechange = () => {\n if (4 !== xhr.readyState)\n return;\n if (200 === xhr.status || 1223 === xhr.status) {\n this.onLoad();\n }\n else {\n // make sure the `error` event handler that's user-set\n // does not throw in the same tick and gets caught here\n this.setTimeoutFn(() => {\n this.onError(typeof xhr.status === \"number\" ? xhr.status : 0);\n }, 0);\n }\n };\n xhr.send(this.data);\n }\n catch (e) {\n // Need to defer since .create() is called directly from the constructor\n // and thus the 'error' event can only be only bound *after* this exception\n // occurs. Therefore, also, we cannot throw here at all.\n this.setTimeoutFn(() => {\n this.onError(e);\n }, 0);\n return;\n }\n if (typeof document !== \"undefined\") {\n this.index = Request.requestsCount++;\n Request.requests[this.index] = this;\n }\n }\n /**\n * Called upon error.\n *\n * @api private\n */\n onError(err) {\n this.emitReserved(\"error\", err, this.xhr);\n this.cleanup(true);\n }\n /**\n * Cleans up house.\n *\n * @api 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 * @api 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 * @api public\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 globalThis from \"../globalThis.js\";\nexport const nextTick = (() => {\n const isPromiseAvailable = typeof Promise === \"function\" && typeof Promise.resolve === \"function\";\n if (isPromiseAvailable) {\n return cb => Promise.resolve().then(cb);\n }\n else {\n return (cb, setTimeoutFn) => setTimeoutFn(cb, 0);\n }\n})();\nexport const WebSocket = globalThis.WebSocket || globalThis.MozWebSocket;\nexport const usingBrowserWebSocket = true;\nexport const defaultBinaryType = \"arraybuffer\";\n","import { Transport } from \"../transport.js\";\nimport { encode } from \"../contrib/parseqs.js\";\nimport { yeast } from \"../contrib/yeast.js\";\nimport { pick } from \"../util.js\";\nimport { defaultBinaryType, nextTick, usingBrowserWebSocket, WebSocket } from \"./websocket-constructor.js\";\nimport { encodePacket } from \"engine.io-parser\";\n// detect ReactNative environment\nconst isReactNative = typeof navigator !== \"undefined\" &&\n typeof navigator.product === \"string\" &&\n navigator.product.toLowerCase() === \"reactnative\";\nexport class WS extends Transport {\n /**\n * WebSocket transport constructor.\n *\n * @api {Object} connection options\n * @api public\n */\n constructor(opts) {\n super(opts);\n this.supportsBinary = !opts.forceBase64;\n }\n /**\n * Transport name.\n *\n * @api public\n */\n get name() {\n return \"websocket\";\n }\n /**\n * Opens socket.\n *\n * @api private\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 * @api 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 /**\n * Writes data to socket.\n *\n * @param {Array} array of packets.\n * @api private\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 /**\n * Closes socket.\n *\n * @api private\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 * @api private\n */\n uri() {\n let query = this.query || {};\n const schema = this.opts.secure ? \"wss\" : \"ws\";\n let port = \"\";\n // avoid port if default for schema\n if (this.opts.port &&\n ((\"wss\" === schema && Number(this.opts.port) !== 443) ||\n (\"ws\" === schema && Number(this.opts.port) !== 80))) {\n port = \":\" + this.opts.port;\n }\n // append timestamp to URI\n if (this.opts.timestampRequests) {\n query[this.opts.timestampParam] = yeast();\n }\n // communicate binary support capabilities\n if (!this.supportsBinary) {\n query.b64 = 1;\n }\n const encodedQuery = encode(query);\n const ipv6 = this.opts.hostname.indexOf(\":\") !== -1;\n return (schema +\n \"://\" +\n (ipv6 ? \"[\" + this.opts.hostname + \"]\" : this.opts.hostname) +\n port +\n this.opts.path +\n (encodedQuery.length ? \"?\" + encodedQuery : \"\"));\n }\n /**\n * Feature detection for WebSocket.\n *\n * @return {Boolean} whether this transport is available.\n * @api public\n */\n check() {\n return (!!WebSocket &&\n !(\"__initialize\" in WebSocket && this.name === WS.prototype.name));\n }\n}\n","import { Polling } from \"./polling.js\";\nimport { WS } from \"./websocket.js\";\nexport const transports = {\n websocket: WS,\n polling: Polling\n};\n","// imported from https://github.com/galkn/parseuri\n/**\n * Parses an URI\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.substr(0, 1) == '/' || path.length === 0) {\n names.splice(0, 1);\n }\n if (path.substr(path.length - 1, 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 or options\n * @param {Object} opts - options\n * @api public\n */\n constructor(uri, opts = {}) {\n super();\n if (uri && \"object\" === typeof uri) {\n opts = uri;\n uri = null;\n }\n if (uri) {\n uri = parse(uri);\n opts.hostname = uri.host;\n opts.secure = uri.protocol === \"https\" || uri.protocol === \"wss\";\n opts.port = uri.port;\n if (uri.query)\n opts.query = uri.query;\n }\n else if (opts.host) {\n opts.hostname = parse(opts.host).host;\n }\n installTimerFunctions(this, opts);\n this.secure =\n null != opts.secure\n ? opts.secure\n : typeof location !== \"undefined\" && \"https:\" === location.protocol;\n if (opts.hostname && !opts.port) {\n // if no port is specified manually, use the protocol default\n opts.port = this.secure ? \"443\" : \"80\";\n }\n this.hostname =\n opts.hostname ||\n (typeof location !== \"undefined\" ? location.hostname : \"localhost\");\n this.port =\n opts.port ||\n (typeof location !== \"undefined\" && location.port\n ? location.port\n : this.secure\n ? \"443\"\n : \"80\");\n this.transports = opts.transports || [\"polling\", \"websocket\"];\n this.readyState = \"\";\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 rejectUnauthorized: true,\n perMessageDeflate: {\n threshold: 1024\n },\n transportOptions: {},\n closeOnBeforeunload: true\n }, opts);\n this.opts.path = this.opts.path.replace(/\\/$/, \"\") + \"/\";\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 addEventListener(\"beforeunload\", () => {\n if (this.transport) {\n // silently close the transport\n this.transport.removeAllListeners();\n this.transport.close();\n }\n }, 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} transport name\n * @return {Transport}\n * @api 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 * @api 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 * @api 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} transport name\n * @api private\n */\n probe(name) {\n let transport = this.createTransport(name);\n let failed = false;\n Socket.priorWebsocketSuccess = false;\n const onTransportOpen = () => {\n if (failed)\n return;\n transport.send([{ type: \"ping\", data: \"probe\" }]);\n transport.once(\"packet\", msg => {\n if (failed)\n return;\n if (\"pong\" === msg.type && \"probe\" === msg.data) {\n this.upgrading = true;\n this.emitReserved(\"upgrading\", transport);\n if (!transport)\n return;\n Socket.priorWebsocketSuccess = \"websocket\" === transport.name;\n this.transport.pause(() => {\n if (failed)\n return;\n if (\"closed\" === this.readyState)\n return;\n cleanup();\n this.setTransport(transport);\n transport.send([{ type: \"upgrade\" }]);\n this.emitReserved(\"upgrade\", transport);\n transport = null;\n this.upgrading = false;\n this.flush();\n });\n }\n else {\n const err = new Error(\"probe error\");\n // @ts-ignore\n err.transport = transport.name;\n this.emitReserved(\"upgradeError\", err);\n }\n });\n };\n function freezeTransport() {\n if (failed)\n return;\n // Any callback called by transport should be ignored since now\n failed = true;\n cleanup();\n transport.close();\n transport = null;\n }\n // Handle any error that happens while probing\n const onerror = err => {\n const error = new Error(\"probe error: \" + err);\n // @ts-ignore\n error.transport = transport.name;\n freezeTransport();\n this.emitReserved(\"upgradeError\", error);\n };\n function onTransportClose() {\n onerror(\"transport closed\");\n }\n // When the socket is closed while we're probing\n function onclose() {\n onerror(\"socket closed\");\n }\n // When the socket is upgraded while we're probing\n function onupgrade(to) {\n if (transport && to.name !== transport.name) {\n freezeTransport();\n }\n }\n // Remove all listeners on the transport and on self\n const cleanup = () => {\n transport.removeListener(\"open\", onTransportOpen);\n transport.removeListener(\"error\", onerror);\n transport.removeListener(\"close\", onTransportClose);\n this.off(\"close\", onclose);\n this.off(\"upgrading\", onupgrade);\n };\n transport.once(\"open\", onTransportOpen);\n transport.once(\"error\", onerror);\n transport.once(\"close\", onTransportClose);\n this.once(\"close\", onclose);\n this.once(\"upgrading\", onupgrade);\n transport.open();\n }\n /**\n * Called when connection is deemed open.\n *\n * @api 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 &&\n this.opts.upgrade &&\n this.transport.pause) {\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 * @api 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 * @api 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 * @api 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 * @api 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 * @api 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} message.\n * @param {Function} callback function.\n * @param {Object} options.\n * @return {Socket} for chaining.\n * @api public\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} packet type.\n * @param {String} data.\n * @param {Object} options.\n * @param {Function} callback function.\n * @api 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 * @api public\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 * @api 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 * @api 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(\"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} server upgrades\n * @api private\n *\n */\n filterUpgrades(upgrades) {\n const filteredUpgrades = [];\n let i = 0;\n const j = upgrades.length;\n for (; i < j; i++) {\n if (~this.transports.indexOf(upgrades[i]))\n filteredUpgrades.push(upgrades[i]);\n }\n return filteredUpgrades;\n }\n}\nSocket.protocol = protocol;\n","import { Socket } from \"./socket.js\";\nexport default (uri, opts) => new Socket(uri, opts);\n"],"names":["PACKET_TYPES","Object","create","PACKET_TYPES_REVERSE","keys","forEach","key","ERROR_PACKET","type","data","withNativeBlob","Blob","prototype","toString","call","withNativeArrayBuffer","ArrayBuffer","encodePacket","supportsBinary","callback","obj","encodeBlobAsBase64","isView","buffer","fileReader","FileReader","onload","content","result","split","readAsDataURL","chars","lookup","Uint8Array","i","length","charCodeAt","decodePacket","encodedPacket","binaryType","mapBinary","charAt","decodeBase64Packet","substring","decoded","base64","encoded1","encoded2","encoded3","encoded4","bufferLength","len","p","arraybuffer","bytes","decode","SEPARATOR","String","fromCharCode","Emitter","mixin","on","addEventListener","event","fn","_callbacks","this","push","once","off","apply","arguments","removeListener","removeAllListeners","removeEventListener","cb","callbacks","splice","emit","args","Array","slice","emitReserved","listeners","hasListeners","self","window","Function","pick","attr","reduce","acc","k","hasOwnProperty","NATIVE_SET_TIMEOUT","setTimeout","NATIVE_CLEAR_TIMEOUT","clearTimeout","installTimerFunctions","opts","useNativeTimers","setTimeoutFn","bind","globalThis","clearTimeoutFn","prev","TransportError","reason","description","context","Error","Transport","writable","query","readyState","socket","doOpen","doClose","onClose","packets","write","packet","onPacket","details","alphabet","map","seed","encode","num","encoded","Math","floor","yeast","now","Date","str","encodeURIComponent","qs","qry","pairs","l","pair","decodeURIComponent","value","XMLHttpRequest","err","hasCORS","xdomain","e","concat","join","empty","hasXHR2","responseType","Polling","polling","location","isSSL","protocol","port","xd","hostname","xs","secure","forceBase64","poll","onPause","pause","_this2","total","doPoll","encodedPayload","encodedPackets","decodedPacket","decodePayload","_this3","onOpen","close","_this4","count","encodePayload","_this5","doWrite","schema","timestampRequests","timestampParam","sid","b64","Number","encodedQuery","indexOf","path","Request","uri","req","request","method","xhrStatus","_this6","onError","onData","_this7","pollXhr","async","undefined","xscheme","xhr","open","extraHeaders","setDisableHeaderCheck","setRequestHeader","withCredentials","requestTimeout","timeout","onreadystatechange","status","_this9","onLoad","send","document","index","requestsCount","requests","cleanup","fromError","abort","responseText","attachEvent","unloadHandler","nextTick","Promise","resolve","then","WebSocket","MozWebSocket","isReactNative","navigator","product","toLowerCase","WS","check","protocols","headers","ws","addEventListeners","onopen","autoUnref","_socket","unref","onclose","closeEvent","onmessage","ev","onerror","lastPacket","name","transports","websocket","re","parts","parse","src","b","replace","m","exec","source","host","authority","ipv6uri","pathNames","regx","names","substr","queryKey","$0","$1","$2","Socket","_this","writeBuffer","prevBufferLen","_extends","agent","upgrade","rememberUpgrade","rejectUnauthorized","perMessageDeflate","threshold","transportOptions","closeOnBeforeunload","id","upgrades","pingInterval","pingTimeout","pingTimeoutTimer","transport","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","byteLength","size","options","compress","cleanupAndClose","waitForUpgrade","filteredUpgrades","j"],"mappings":";;;;;29FAAA,IAAMA,EAAeC,OAAOC,OAAO,MACnCF,EAAY,KAAW,IACvBA,EAAY,MAAY,IACxBA,EAAY,KAAW,IACvBA,EAAY,KAAW,IACvBA,EAAY,QAAc,IAC1BA,EAAY,QAAc,IAC1BA,EAAY,KAAW,IACvB,IAAMG,EAAuBF,OAAOC,OAAO,MAC3CD,OAAOG,KAAKJ,GAAcK,SAAQ,SAAAC,GAC9BH,EAAqBH,EAAaM,IAAQA,KCN9C,IDQA,IAAMC,EAAe,CAAEC,KAAM,QAASC,KAAM,gBEXtCC,EAAiC,mBAATC,MACT,oBAATA,MACqC,6BAAzCV,OAAOW,UAAUC,SAASC,KAAKH,MACjCI,EAA+C,mBAAhBC,YAO/BC,EAAe,WAAiBC,EAAgBC,OALvCC,EAKSZ,IAAAA,KAAMC,IAAAA,YACtBC,GAAkBD,aAAgBE,KAC9BO,EACOC,EAASV,GAGTY,EAAmBZ,EAAMU,GAG/BJ,IACJN,aAAgBO,cAfVI,EAegCX,EAdN,mBAAvBO,YAAYM,OACpBN,YAAYM,OAAOF,GACnBA,GAAOA,EAAIG,kBAAkBP,cAa3BE,EACOC,EAASV,GAGTY,EAAmB,IAAIV,KAAK,CAACF,IAAQU,GAI7CA,EAASnB,EAAaQ,IAASC,GAAQ,MAE5CY,EAAqB,SAACZ,EAAMU,OACxBK,EAAa,IAAIC,kBACvBD,EAAWE,OAAS,eACVC,EAAUH,EAAWI,OAAOC,MAAM,KAAK,GAC7CV,EAAS,IAAMQ,IAEZH,EAAWM,cAAcrB,IDtC9BsB,EAAQ,mEAGRC,EAA+B,oBAAfC,WAA6B,GAAK,IAAIA,WAAW,KAC9DC,EAAI,EAAGA,EAAIH,EAAMI,OAAQD,IAC9BF,EAAOD,EAAMK,WAAWF,IAAMA,MEH5BnB,EAA+C,mBAAhBC,YAC/BqB,EAAe,SAACC,EAAeC,MACJ,iBAAlBD,QACA,CACH9B,KAAM,UACNC,KAAM+B,EAAUF,EAAeC,QAGjC/B,EAAO8B,EAAcG,OAAO,SACrB,MAATjC,EACO,CACHA,KAAM,UACNC,KAAMiC,EAAmBJ,EAAcK,UAAU,GAAIJ,IAG1CpC,EAAqBK,GAIjC8B,EAAcH,OAAS,EACxB,CACE3B,KAAML,EAAqBK,GAC3BC,KAAM6B,EAAcK,UAAU,IAEhC,CACEnC,KAAML,EAAqBK,IARxBD,GAWTmC,EAAqB,SAACjC,EAAM8B,MAC1BxB,EAAuB,KACjB6B,EFFQ,SAACC,OAGfX,EAEAY,EACAC,EACAC,EACAC,EAPAC,EAA+B,IAAhBL,EAAOV,OACtBgB,EAAMN,EAAOV,OAEbiB,EAAI,EAM0B,MAA9BP,EAAOA,EAAOV,OAAS,KACvBe,IACkC,MAA9BL,EAAOA,EAAOV,OAAS,IACvBe,SAIFG,EAAc,IAAIrC,YAAYkC,GAChCI,EAAQ,IAAIrB,WAAWoB,OAEtBnB,EAAI,EAAGA,EAAIiB,EAAKjB,GAAK,EACtBY,EAAWd,EAAOa,EAAOT,WAAWF,IACpCa,EAAWf,EAAOa,EAAOT,WAAWF,EAAI,IACxCc,EAAWhB,EAAOa,EAAOT,WAAWF,EAAI,IACxCe,EAAWjB,EAAOa,EAAOT,WAAWF,EAAI,IAExCoB,EAAMF,KAAQN,GAAY,EAAMC,GAAY,EAC5CO,EAAMF,MAAoB,GAAXL,IAAkB,EAAMC,GAAY,EACnDM,EAAMF,MAAoB,EAAXJ,IAAiB,EAAiB,GAAXC,SAGnCI,EE7BaE,CAAO9C,UAChB+B,EAAUI,EAASL,SAGnB,CAAEM,QAAQ,EAAMpC,KAAAA,IAGzB+B,EAAY,SAAC/B,EAAM8B,SAEZ,SADDA,GAEO9B,aAAgBO,YAAc,IAAIL,KAAK,CAACF,IAGxCA,GC3Cb+C,EAAYC,OAAOC,aAAa,ICI/B,SAASC,EAAQvC,MAClBA,EAAK,OAWX,SAAeA,OACR,IAAId,KAAOqD,EAAQ/C,UACtBQ,EAAId,GAAOqD,EAAQ/C,UAAUN,UAExBc,EAfSwC,CAAMxC,GA2BxBuC,EAAQ/C,UAAUiD,GAClBF,EAAQ/C,UAAUkD,iBAAmB,SAASC,EAAOC,eAC9CC,WAAaC,KAAKD,YAAc,IACpCC,KAAKD,WAAW,IAAMF,GAASG,KAAKD,WAAW,IAAMF,IAAU,IAC7DI,KAAKH,GACDE,MAaTP,EAAQ/C,UAAUwD,KAAO,SAASL,EAAOC,YAC9BH,SACFQ,IAAIN,EAAOF,GAChBG,EAAGM,MAAMJ,KAAMK,kBAGjBV,EAAGG,GAAKA,OACHH,GAAGE,EAAOF,GACRK,MAaTP,EAAQ/C,UAAUyD,IAClBV,EAAQ/C,UAAU4D,eAClBb,EAAQ/C,UAAU6D,mBAClBd,EAAQ/C,UAAU8D,oBAAsB,SAASX,EAAOC,WACjDC,WAAaC,KAAKD,YAAc,GAGjC,GAAKM,UAAUpC,mBACZ8B,WAAa,GACXC,SAcLS,EAVAC,EAAYV,KAAKD,WAAW,IAAMF,OACjCa,EAAW,OAAOV,QAGnB,GAAKK,UAAUpC,qBACV+B,KAAKD,WAAW,IAAMF,GACtBG,SAKJ,IAAIhC,EAAI,EAAGA,EAAI0C,EAAUzC,OAAQD,QACpCyC,EAAKC,EAAU1C,MACJ8B,GAAMW,EAAGX,KAAOA,EAAI,CAC7BY,EAAUC,OAAO3C,EAAG,gBAOC,IAArB0C,EAAUzC,eACL+B,KAAKD,WAAW,IAAMF,GAGxBG,MAWTP,EAAQ/C,UAAUkE,KAAO,SAASf,QAC3BE,WAAaC,KAAKD,YAAc,WAEjCc,EAAO,IAAIC,MAAMT,UAAUpC,OAAS,GACpCyC,EAAYV,KAAKD,WAAW,IAAMF,GAE7B7B,EAAI,EAAGA,EAAIqC,UAAUpC,OAAQD,IACpC6C,EAAK7C,EAAI,GAAKqC,UAAUrC,MAGtB0C,EAEG,CAAI1C,EAAI,MAAR,IAAWiB,GADhByB,EAAYA,EAAUK,MAAM,IACI9C,OAAQD,EAAIiB,IAAOjB,EACjD0C,EAAU1C,GAAGoC,MAAMJ,KAAMa,UAItBb,MAITP,EAAQ/C,UAAUsE,aAAevB,EAAQ/C,UAAUkE,KAUnDnB,EAAQ/C,UAAUuE,UAAY,SAASpB,eAChCE,WAAaC,KAAKD,YAAc,GAC9BC,KAAKD,WAAW,IAAMF,IAAU,IAWzCJ,EAAQ/C,UAAUwE,aAAe,SAASrB,WAC9BG,KAAKiB,UAAUpB,GAAO5B,cCtKV,oBAATkD,KACAA,KAEgB,oBAAXC,OACLA,OAGAC,SAAS,cAATA,GCPR,SAASC,EAAKpE,8BAAQqE,mCAAAA,2BAClBA,EAAKC,QAAO,SAACC,EAAKC,UACjBxE,EAAIyE,eAAeD,KACnBD,EAAIC,GAAKxE,EAAIwE,IAEVD,IACR,IAGP,IAAMG,EAAqBC,WACrBC,EAAuBC,aACtB,SAASC,EAAsB9E,EAAK+E,GACnCA,EAAKC,iBACLhF,EAAIiF,aAAeP,EAAmBQ,KAAKC,GAC3CnF,EAAIoF,eAAiBR,EAAqBM,KAAKC,KAG/CnF,EAAIiF,aAAeN,WAAWO,KAAKC,GACnCnF,EAAIoF,eAAiBP,aAAaK,KAAKC,QChB1BE,ECAfC,2CACUC,EAAQC,EAAaC,yCACvBF,IACDC,YAAcA,IACdC,QAAUA,IACVrG,KAAO,+BALSsG,QAQhBC,2CAOGZ,2CAEHa,UAAW,EAChBd,OAA4BC,KACvBA,KAAOA,IACPc,MAAQd,EAAKc,QACbC,WAAa,KACbC,OAAShB,EAAKgB,mDAWfR,EAAQC,EAAaC,0DACN,QAAS,IAAIH,EAAeC,EAAQC,EAAaC,IAC7D3C,0CAQH,WAAaA,KAAKgD,YAAc,KAAOhD,KAAKgD,kBACvCA,WAAa,eACbE,UAEFlD,2CAQH,YAAcA,KAAKgD,YAAc,SAAWhD,KAAKgD,kBAC5CG,eACAC,WAEFpD,kCAQNqD,GACG,SAAWrD,KAAKgD,iBACXM,MAAMD,yCAYVL,WAAa,YACbF,UAAW,kDACG,uCAQhBvG,OACGgH,EAASpF,EAAa5B,EAAMyD,KAAKiD,OAAO5E,iBACzCmF,SAASD,oCAOTA,mDACc,SAAUA,mCAOzBE,QACCT,WAAa,yDACC,QAASS,UAtGLhE,GDTzBiE,EAAW,mEAAmE/F,MAAM,IAAkBgG,EAAM,GAC9GC,EAAO,EAAG5F,EAAI,EAQX,SAAS6F,EAAOC,OACfC,EAAU,MAEVA,EAAUL,EAASI,EAZ6E,IAY7DC,EACnCD,EAAME,KAAKC,MAAMH,EAb+E,UAc3FA,EAAM,UACRC,EAsBJ,SAASG,QACNC,EAAMN,GAAQ,IAAIO,aACpBD,IAAQ5B,GACDqB,EAAO,EAAGrB,EAAO4B,GACrBA,EAAM,IAAMN,EAAOD,KAK9B,KAAO5F,EA9CiG,GA8CrFA,IACf2F,EAAID,EAAS1F,IAAMA,EEzChB,SAAS6F,EAAO3G,OACfmH,EAAM,OACL,IAAIrG,KAAKd,EACNA,EAAIyE,eAAe3D,KACfqG,EAAIpG,SACJoG,GAAO,KACXA,GAAOC,mBAAmBtG,GAAK,IAAMsG,mBAAmBpH,EAAIc,YAG7DqG,EAQJ,SAAShF,EAAOkF,WACfC,EAAM,GACNC,EAAQF,EAAG5G,MAAM,KACZK,EAAI,EAAG0G,EAAID,EAAMxG,OAAQD,EAAI0G,EAAG1G,IAAK,KACtC2G,EAAOF,EAAMzG,GAAGL,MAAM,KAC1B6G,EAAII,mBAAmBD,EAAK,KAAOC,mBAAmBD,EAAK,WAExDH,EC/BX,IAAIK,GAAQ,EACZ,IACIA,EAAkC,oBAAnBC,gBACX,oBAAqB,IAAIA,eAEjC,MAAOC,IAIA,IAAMC,EAAUH,ECPR,WAAU5C,OACfgD,EAAUhD,EAAKgD,eAGb,oBAAuBH,kBAAoBG,GAAWD,UAC/C,IAAIF,eAGnB,MAAOI,QACFD,aAEU,IAAI5C,EAAW,CAAC,UAAU8C,OAAO,UAAUC,KAAK,OAAM,qBAEjE,MAAOF,KCRf,SAASG,KACT,IAAMC,EAIK,MAHK,IAAIR,EAAe,CAC3BG,SAAS,IAEMM,aAEVC,2CAOGvD,qCACFA,IACDwD,SAAU,EACS,oBAAbC,SAA0B,KAC3BC,EAAQ,WAAaD,SAASE,SAChCC,EAAOH,SAASG,KAEfA,IACDA,EAAOF,EAAQ,MAAQ,QAEtBG,GACoB,oBAAbJ,UACJzD,EAAK8D,WAAaL,SAASK,UAC3BF,IAAS5D,EAAK4D,OACjBG,GAAK/D,EAAKgE,SAAWN,MAKxBO,EAAcjE,GAAQA,EAAKiE,qBAC5BlJ,eAAiBsI,IAAYY,oDAe7BC,qCAQHC,mBACGpD,WAAa,cACZqD,EAAQ,WACVC,EAAKtD,WAAa,SAClBoD,QAEApG,KAAKyF,UAAYzF,KAAK8C,SAAU,KAC5ByD,EAAQ,EACRvG,KAAKyF,UACLc,SACKrG,KAAK,gBAAgB,aACpBqG,GAASF,QAGdrG,KAAK8C,WACNyD,SACKrG,KAAK,SAAS,aACbqG,GAASF,aAKnBA,wCASCZ,SAAU,OACVe,cACAxF,aAAa,uCAOfzE,eTvFW,SAACkK,EAAgBpI,WAC7BqI,EAAiBD,EAAe9I,MAAM2B,GACtC+D,EAAU,GACPrF,EAAI,EAAGA,EAAI0I,EAAezI,OAAQD,IAAK,KACtC2I,EAAgBxI,EAAauI,EAAe1I,GAAIK,MACtDgF,EAAQpD,KAAK0G,GACc,UAAvBA,EAAcrK,kBAIf+G,GS4FHuD,CAAcrK,EAAMyD,KAAKiD,OAAO5E,YAAYlC,SAd3B,SAAAoH,MAET,YAAcsD,EAAK7D,YAA8B,SAAhBO,EAAOjH,MACxCuK,EAAKC,SAGL,UAAYvD,EAAOjH,YACnBuK,EAAKzD,QAAQ,CAAEV,YAAa,oCACrB,EAGXmE,EAAKrD,SAASD,MAKd,WAAavD,KAAKgD,kBAEbyC,SAAU,OACVzE,aAAa,gBACd,SAAWhB,KAAKgD,iBACXmD,qDAYPY,EAAQ,WACVC,EAAK1D,MAAM,CAAC,CAAEhH,KAAM,YAEpB,SAAW0D,KAAKgD,WAChB+D,SAKK7G,KAAK,OAAQ6G,iCAUpB1D,mBACGP,UAAW,ET5JF,SAACO,EAASpG,OAEtBgB,EAASoF,EAAQpF,OACjByI,EAAiB,IAAI5F,MAAM7C,GAC7BgJ,EAAQ,EACZ5D,EAAQlH,SAAQ,SAACoH,EAAQvF,GAErBjB,EAAawG,GAAQ,GAAO,SAAAnF,GACxBsI,EAAe1I,GAAKI,IACd6I,IAAUhJ,GACZhB,EAASyJ,EAAetB,KAAK9F,USmJrC4H,CAAc7D,GAAS,SAAA9G,GACnB4K,EAAKC,QAAQ7K,GAAM,WACf4K,EAAKrE,UAAW,EAChBqE,EAAKnG,aAAa,iDAUtB+B,EAAQ/C,KAAK+C,OAAS,GACpBsE,EAASrH,KAAKiC,KAAKgE,OAAS,QAAU,OACxCJ,EAAO,IAEP,IAAU7F,KAAKiC,KAAKqF,oBACpBvE,EAAM/C,KAAKiC,KAAKsF,gBAAkBrD,KAEjClE,KAAKhD,gBAAmB+F,EAAMyE,MAC/BzE,EAAM0E,IAAM,GAGZzH,KAAKiC,KAAK4D,OACR,UAAYwB,GAAqC,MAA3BK,OAAO1H,KAAKiC,KAAK4D,OACpC,SAAWwB,GAAqC,KAA3BK,OAAO1H,KAAKiC,KAAK4D,SAC3CA,EAAO,IAAM7F,KAAKiC,KAAK4D,UAErB8B,EAAe9D,EAAOd,UAEpBsE,EACJ,QAF8C,IAArCrH,KAAKiC,KAAK8D,SAAS6B,QAAQ,KAG5B,IAAM5H,KAAKiC,KAAK8D,SAAW,IAAM/F,KAAKiC,KAAK8D,UACnDF,EACA7F,KAAKiC,KAAK4F,MACTF,EAAa1J,OAAS,IAAM0J,EAAe,0CAQ5C1F,yDAAO,YACGA,EAAM,CAAE6D,GAAI9F,KAAK8F,GAAIE,GAAIhG,KAAKgG,IAAMhG,KAAKiC,MAChD,IAAI6F,EAAQ9H,KAAK+H,MAAO9F,mCAS3B1F,EAAMuD,cACJkI,EAAMhI,KAAKiI,QAAQ,CACrBC,OAAQ,OACR3L,KAAMA,IAEVyL,EAAIrI,GAAG,UAAWG,GAClBkI,EAAIrI,GAAG,SAAS,SAACwI,EAAWxF,GACxByF,EAAKC,QAAQ,iBAAkBF,EAAWxF,kDASxCqF,EAAMhI,KAAKiI,UACjBD,EAAIrI,GAAG,OAAQK,KAAKsI,OAAOlG,KAAKpC,OAChCgI,EAAIrI,GAAG,SAAS,SAACwI,EAAWxF,GACxB4F,EAAKF,QAAQ,iBAAkBF,EAAWxF,WAEzC6F,QAAUR,qCA5LR,iBAjCcnF,GAgOhBiF,2CAOGC,EAAK9F,0BAEbD,oBAA4BC,KACvBA,KAAOA,IACPiG,OAASjG,EAAKiG,QAAU,QACxBH,IAAMA,IACNU,OAAQ,IAAUxG,EAAKwG,QACvBlM,UAAOmM,IAAczG,EAAK1F,KAAO0F,EAAK1F,KAAO,OAC7CP,iEAQCiG,EAAOX,EAAKtB,KAAKiC,KAAM,QAAS,MAAO,MAAO,aAAc,OAAQ,KAAM,UAAW,qBAAsB,aACjHA,EAAKgD,UAAYjF,KAAKiC,KAAK6D,GAC3B7D,EAAK0G,UAAY3I,KAAKiC,KAAK+D,OACrB4C,EAAO5I,KAAK4I,IAAM,IAAI9D,EAAe7C,OAEvC2G,EAAIC,KAAK7I,KAAKkI,OAAQlI,KAAK+H,IAAK/H,KAAKyI,cAE7BzI,KAAKiC,KAAK6G,iBAEL,IAAI9K,KADT4K,EAAIG,uBAAyBH,EAAIG,uBAAsB,GACzC/I,KAAKiC,KAAK6G,aAChB9I,KAAKiC,KAAK6G,aAAanH,eAAe3D,IACtC4K,EAAII,iBAAiBhL,EAAGgC,KAAKiC,KAAK6G,aAAa9K,IAK/D,MAAOkH,OACH,SAAWlF,KAAKkI,WAEZU,EAAII,iBAAiB,eAAgB,4BAEzC,MAAO9D,QAGP0D,EAAII,iBAAiB,SAAU,OAEnC,MAAO9D,IAEH,oBAAqB0D,IACrBA,EAAIK,gBAAkBjJ,KAAKiC,KAAKgH,iBAEhCjJ,KAAKiC,KAAKiH,iBACVN,EAAIO,QAAUnJ,KAAKiC,KAAKiH,gBAE5BN,EAAIQ,mBAAqB,WACjB,IAAMR,EAAI5F,aAEV,MAAQ4F,EAAIS,QAAU,OAAST,EAAIS,OACnCC,EAAKC,SAKLD,EAAKnH,cAAa,WACdmH,EAAKjB,QAA8B,iBAAfO,EAAIS,OAAsBT,EAAIS,OAAS,KAC5D,KAGXT,EAAIY,KAAKxJ,KAAKzD,MAElB,MAAO2I,oBAIE/C,cAAa,WACdmH,EAAKjB,QAAQnD,KACd,GAGiB,oBAAbuE,gBACFC,MAAQ5B,EAAQ6B,gBACrB7B,EAAQ8B,SAAS5J,KAAK0J,OAAS1J,sCAQ/B+E,QACC/D,aAAa,QAAS+D,EAAK/E,KAAK4I,UAChCiB,SAAQ,mCAOTC,WACA,IAAuB9J,KAAK4I,KAAO,OAAS5I,KAAK4I,aAGhDA,IAAIQ,mBAAqB/D,EAC1ByE,WAESlB,IAAImB,QAEb,MAAO7E,IAEa,oBAAbuE,iBACA3B,EAAQ8B,SAAS5J,KAAK0J,YAE5Bd,IAAM,2CAQLrM,EAAOyD,KAAK4I,IAAIoB,aACT,OAATzN,SACKyE,aAAa,OAAQzE,QACrByE,aAAa,gBACb6I,gDASJA,iBAxIgBpK,GAkJ7B,GAPAqI,EAAQ6B,cAAgB,EACxB7B,EAAQ8B,SAAW,GAMK,oBAAbH,YAEoB,mBAAhBQ,YAEPA,YAAY,WAAYC,SAEvB,GAAgC,mBAArBtK,iBAAiC,CAE7CA,iBADyB,eAAgByC,EAAa,WAAa,SAChC6H,IAAe,GAG1D,SAASA,SACA,IAAIlM,KAAK8J,EAAQ8B,SACd9B,EAAQ8B,SAASjI,eAAe3D,IAChC8J,EAAQ8B,SAAS5L,GAAG+L,QC9YzB,IAAMI,GACqC,mBAAZC,SAAqD,mBAApBA,QAAQC,QAEhE,SAAA5J,UAAM2J,QAAQC,UAAUC,KAAK7J,IAG7B,SAACA,EAAI0B,UAAiBA,EAAa1B,EAAI,IAGzC8J,GAAYlI,EAAWkI,WAAalI,EAAWmI,aCHtDC,GAAqC,oBAAdC,WACI,iBAAtBA,UAAUC,SACmB,gBAApCD,UAAUC,QAAQC,cACTC,4CAOG5I,yCACFA,IACDjF,gBAAkBiF,EAAKiE,4DAgBvBlG,KAAK8K,aAIJ/C,EAAM/H,KAAK+H,MACXgD,EAAY/K,KAAKiC,KAAK8I,UAEtB9I,EAAOwI,GACP,GACAnJ,EAAKtB,KAAKiC,KAAM,QAAS,oBAAqB,MAAO,MAAO,aAAc,OAAQ,KAAM,UAAW,qBAAsB,eAAgB,kBAAmB,SAAU,aAAc,SAAU,uBAChMjC,KAAKiC,KAAK6G,eACV7G,EAAK+I,QAAUhL,KAAKiC,KAAK6G,uBAGpBmC,GACyBR,GAIpB,IAAIF,GAAUxC,EAAKgD,EAAW9I,GAH9B8I,EACI,IAAIR,GAAUxC,EAAKgD,GACnB,IAAIR,GAAUxC,GAGhC,MAAOhD,UACI/E,KAAKgB,aAAa,QAAS+D,QAEjCkG,GAAG5M,WAAa2B,KAAKiD,OAAO5E,YD/CR,mBCgDpB6M,iFAQAD,GAAGE,OAAS,WACT7E,EAAKrE,KAAKmJ,WACV9E,EAAK2E,GAAGI,QAAQC,QAEpBhF,EAAKQ,eAEJmE,GAAGM,QAAU,SAAAC,UAAclF,EAAKlD,QAAQ,CACzCV,YAAa,8BACbC,QAAS6I,UAERP,GAAGQ,UAAY,SAAAC,UAAMpF,EAAKgC,OAAOoD,EAAGnP,YACpC0O,GAAGU,QAAU,SAAAzG,UAAKoB,EAAK+B,QAAQ,kBAAmBnD,kCAQrD7B,mBACGP,UAAW,qBAGP9E,OACCuF,EAASF,EAAQrF,GACjB4N,EAAa5N,IAAMqF,EAAQpF,OAAS,EAC1ClB,EAAawG,EAAQsD,EAAK7J,gBAAgB,SAAAT,OAsB9BsK,EAAKoE,GAAGzB,KAAKjN,GAMrB,MAAO2I,IAEH0G,GAGAzB,IAAS,WACLtD,EAAK/D,UAAW,EAChB+D,EAAK7F,aAAa,WACnB6F,EAAK1E,kBAvCXnE,EAAI,EAAGA,EAAIqF,EAAQpF,OAAQD,MAA3BA,0CAkDc,IAAZgC,KAAKiL,UACPA,GAAGlE,aACHkE,GAAK,wCASVlI,EAAQ/C,KAAK+C,OAAS,GACpBsE,EAASrH,KAAKiC,KAAKgE,OAAS,MAAQ,KACtCJ,EAAO,GAEP7F,KAAKiC,KAAK4D,OACR,QAAUwB,GAAqC,MAA3BK,OAAO1H,KAAKiC,KAAK4D,OAClC,OAASwB,GAAqC,KAA3BK,OAAO1H,KAAKiC,KAAK4D,SACzCA,EAAO,IAAM7F,KAAKiC,KAAK4D,MAGvB7F,KAAKiC,KAAKqF,oBACVvE,EAAM/C,KAAKiC,KAAKsF,gBAAkBrD,KAGjClE,KAAKhD,iBACN+F,EAAM0E,IAAM,OAEVE,EAAe9D,EAAOd,UAEpBsE,EACJ,QAF8C,IAArCrH,KAAKiC,KAAK8D,SAAS6B,QAAQ,KAG5B,IAAM5H,KAAKiC,KAAK8D,SAAW,IAAM/F,KAAKiC,KAAK8D,UACnDF,EACA7F,KAAKiC,KAAK4F,MACTF,EAAa1J,OAAS,IAAM0J,EAAe,6CAStC4C,IACJ,iBAAkBA,IAAavK,KAAK6L,OAAShB,EAAGnO,UAAUmP,yCA/JzD,mBAjBShJ,GCRXiJ,GAAa,CACtBC,UAAWlB,GACXpF,QAASD,GCGPwG,GAAK,0OACLC,GAAQ,CACV,SAAU,WAAY,YAAa,WAAY,OAAQ,WAAY,OAAQ,OAAQ,WAAY,OAAQ,YAAa,OAAQ,QAAS,UAElI,SAASC,GAAM7H,OACZ8H,EAAM9H,EAAK+H,EAAI/H,EAAIuD,QAAQ,KAAM1C,EAAIb,EAAIuD,QAAQ,MAC7C,GAANwE,IAAiB,GAANlH,IACXb,EAAMA,EAAI5F,UAAU,EAAG2N,GAAK/H,EAAI5F,UAAU2N,EAAGlH,GAAGmH,QAAQ,KAAM,KAAOhI,EAAI5F,UAAUyG,EAAGb,EAAIpG,iBA0B3E8E,EACbxG,EAzBF+P,EAAIN,GAAGO,KAAKlI,GAAO,IAAK0D,EAAM,GAAI/J,EAAI,GACnCA,KACH+J,EAAIkE,GAAMjO,IAAMsO,EAAEtO,IAAM,UAElB,GAANoO,IAAiB,GAANlH,IACX6C,EAAIyE,OAASL,EACbpE,EAAI0E,KAAO1E,EAAI0E,KAAKhO,UAAU,EAAGsJ,EAAI0E,KAAKxO,OAAS,GAAGoO,QAAQ,KAAM,KACpEtE,EAAI2E,UAAY3E,EAAI2E,UAAUL,QAAQ,IAAK,IAAIA,QAAQ,IAAK,IAAIA,QAAQ,KAAM,KAC9EtE,EAAI4E,SAAU,GAElB5E,EAAI6E,UAIR,SAAmB1P,EAAK2K,OACdgF,EAAO,WAAYC,EAAQjF,EAAKwE,QAAQQ,EAAM,KAAKlP,MAAM,KACtC,KAArBkK,EAAKkF,OAAO,EAAG,IAA6B,IAAhBlF,EAAK5J,QACjC6O,EAAMnM,OAAO,EAAG,GAEmB,KAAnCkH,EAAKkF,OAAOlF,EAAK5J,OAAS,EAAG,IAC7B6O,EAAMnM,OAAOmM,EAAM7O,OAAS,EAAG,UAE5B6O,EAZSF,CAAU7E,EAAKA,EAAG,MAClCA,EAAIiF,UAaejK,EAbUgF,EAAG,MAc1BxL,EAAO,GACbwG,EAAMsJ,QAAQ,6BAA6B,SAAUY,EAAIC,EAAIC,GACrDD,IACA3Q,EAAK2Q,GAAMC,MAGZ5Q,GAnBAwL,MCtBEqF,4CAQGrF,SAAK9F,yDAAO,mCAEhB8F,GAAO,aAAoBA,KAC3B9F,EAAO8F,EACPA,EAAM,MAENA,GACAA,EAAMmE,GAAMnE,GACZ9F,EAAK8D,SAAWgC,EAAI0E,KACpBxK,EAAKgE,OAA0B,UAAjB8B,EAAInC,UAAyC,QAAjBmC,EAAInC,SAC9C3D,EAAK4D,KAAOkC,EAAIlC,KACZkC,EAAIhF,QACJd,EAAKc,MAAQgF,EAAIhF,QAEhBd,EAAKwK,OACVxK,EAAK8D,SAAWmG,GAAMjK,EAAKwK,MAAMA,MAErCzK,OAA4BC,KACvBgE,OACD,MAAQhE,EAAKgE,OACPhE,EAAKgE,OACe,oBAAbP,UAA4B,WAAaA,SAASE,SAC/D3D,EAAK8D,WAAa9D,EAAK4D,OAEvB5D,EAAK4D,KAAOwH,EAAKpH,OAAS,MAAQ,QAEjCF,SACD9D,EAAK8D,WACoB,oBAAbL,SAA2BA,SAASK,SAAW,eAC1DF,KACD5D,EAAK4D,OACoB,oBAAbH,UAA4BA,SAASG,KACvCH,SAASG,KACTwH,EAAKpH,OACD,MACA,QACb6F,WAAa7J,EAAK6J,YAAc,CAAC,UAAW,eAC5C9I,WAAa,KACbsK,YAAc,KACdC,cAAgB,IAChBtL,KAAOuL,EAAc,CACtB3F,KAAM,aACN4F,OAAO,EACPxE,iBAAiB,EACjByE,SAAS,EACTnG,eAAgB,IAChBoG,iBAAiB,EACjBC,oBAAoB,EACpBC,kBAAmB,CACfC,UAAW,MAEfC,iBAAkB,GAClBC,qBAAqB,GACtB/L,KACEA,KAAK4F,KAAOwF,EAAKpL,KAAK4F,KAAKwE,QAAQ,MAAO,IAAM,IACtB,iBAApBgB,EAAKpL,KAAKc,UACZd,KAAKc,MAAQ1D,EAAOgO,EAAKpL,KAAKc,UAGlCkL,GAAK,OACLC,SAAW,OACXC,aAAe,OACfC,YAAc,OAEdC,iBAAmB,KACQ,mBAArBzO,mBACHyN,EAAKpL,KAAK+L,qBAIVpO,iBAAiB,gBAAgB,WACzByN,EAAKiB,cAEAA,UAAU/N,uBACV+N,UAAUvH,YAEpB,GAEe,cAAlBsG,EAAKtH,aACAwI,qBAAuB,aACnBnL,QAAQ,kBAAmB,CAC5BV,YAAa,6BAGrB9C,iBAAiB,UAAWyN,EAAKkB,sBAAsB,OAG1D1F,2DASOgD,OACN9I,EAAQyK,EAAc,GAAIxN,KAAKiC,KAAKc,OAE1CA,EAAMyL,IdnFU,EcqFhBzL,EAAMuL,UAAYzC,EAEd7L,KAAKiO,KACLlL,EAAMyE,IAAMxH,KAAKiO,QACfhM,EAAOuL,EAAc,GAAIxN,KAAKiC,KAAK8L,iBAAiBlC,GAAO7L,KAAKiC,KAAM,CACxEc,MAAAA,EACAE,OAAQjD,KACR+F,SAAU/F,KAAK+F,SACfE,OAAQjG,KAAKiG,OACbJ,KAAM7F,KAAK6F,cAER,IAAIiG,GAAWD,GAAM5J,sCAQxBqM,YACAtO,KAAKiC,KAAK0L,iBACVP,EAAOqB,wBACmC,IAA1CzO,KAAK8L,WAAWlE,QAAQ,aACxB0G,EAAY,gBAEX,CAAA,GAAI,IAAMtO,KAAK8L,WAAW7N,wBAEtBkE,cAAa,WACdmE,EAAKtF,aAAa,QAAS,6BAC5B,GAIHsN,EAAYtO,KAAK8L,WAAW,QAE3B9I,WAAa,cAGdsL,EAAYtO,KAAK0O,gBAAgBJ,GAErC,MAAOpJ,eACE4G,WAAW6C,kBACX9F,OAGTyF,EAAUzF,YACL+F,aAAaN,wCAOTA,cACLtO,KAAKsO,gBACAA,UAAU/N,0BAGd+N,UAAYA,EAEjBA,EACK3O,GAAG,QAASK,KAAK6O,QAAQzM,KAAKpC,OAC9BL,GAAG,SAAUK,KAAKwD,SAASpB,KAAKpC,OAChCL,GAAG,QAASK,KAAKqI,QAAQjG,KAAKpC,OAC9BL,GAAG,SAAS,SAAA8C,UAAUoE,EAAKzD,QAAQ,kBAAmBX,oCAQzDoJ,cACEyC,EAAYtO,KAAK0O,gBAAgB7C,GACjCiD,GAAS,EACb1B,EAAOqB,uBAAwB,MACzBM,EAAkB,WAChBD,IAEJR,EAAU9E,KAAK,CAAC,CAAElN,KAAM,OAAQC,KAAM,WACtC+R,EAAUpO,KAAK,UAAU,SAAA8O,OACjBF,KAEA,SAAWE,EAAI1S,MAAQ,UAAY0S,EAAIzS,KAAM,IAC7CyK,EAAKiI,WAAY,EACjBjI,EAAKhG,aAAa,YAAasN,IAC1BA,EACD,OACJlB,EAAOqB,sBAAwB,cAAgBH,EAAUzC,KACzD7E,EAAKsH,UAAUjI,OAAM,WACbyI,GAEA,WAAa9H,EAAKhE,aAEtB6G,IACA7C,EAAK4H,aAAaN,GAClBA,EAAU9E,KAAK,CAAC,CAAElN,KAAM,aACxB0K,EAAKhG,aAAa,UAAWsN,GAC7BA,EAAY,KACZtH,EAAKiI,WAAY,EACjBjI,EAAKkI,gBAGR,KACKnK,EAAM,IAAInC,MAAM,eAEtBmC,EAAIuJ,UAAYA,EAAUzC,KAC1B7E,EAAKhG,aAAa,eAAgB+D,kBAIrCoK,IACDL,IAGJA,GAAS,EACTjF,IACAyE,EAAUvH,QACVuH,EAAY,UAGV3C,EAAU,SAAA5G,OACNqK,EAAQ,IAAIxM,MAAM,gBAAkBmC,GAE1CqK,EAAMd,UAAYA,EAAUzC,KAC5BsD,IACAnI,EAAKhG,aAAa,eAAgBoO,aAE7BC,IACL1D,EAAQ,6BAGHJ,IACLI,EAAQ,0BAGH2D,EAAUC,GACXjB,GAAaiB,EAAG1D,OAASyC,EAAUzC,MACnCsD,QAIFtF,EAAU,WACZyE,EAAUhO,eAAe,OAAQyO,GACjCT,EAAUhO,eAAe,QAASqL,GAClC2C,EAAUhO,eAAe,QAAS+O,GAClCrI,EAAK7G,IAAI,QAASoL,GAClBvE,EAAK7G,IAAI,YAAamP,IAE1BhB,EAAUpO,KAAK,OAAQ6O,GACvBT,EAAUpO,KAAK,QAASyL,GACxB2C,EAAUpO,KAAK,QAASmP,QACnBnP,KAAK,QAASqL,QACdrL,KAAK,YAAaoP,GACvBhB,EAAUzF,gDAQL7F,WAAa,OAClBoK,EAAOqB,sBAAwB,cAAgBzO,KAAKsO,UAAUzC,UACzD7K,aAAa,aACbkO,QAGD,SAAWlP,KAAKgD,YAChBhD,KAAKiC,KAAKyL,SACV1N,KAAKsO,UAAUjI,cACXrI,EAAI,EACF0G,EAAI1E,KAAKkO,SAASjQ,OACjBD,EAAI0G,EAAG1G,SACLwR,MAAMxP,KAAKkO,SAASlQ,qCAS5BuF,MACD,YAAcvD,KAAKgD,YACnB,SAAWhD,KAAKgD,YAChB,YAAchD,KAAKgD,uBACdhC,aAAa,SAAUuC,QAEvBvC,aAAa,aACVuC,EAAOjH,UACN,YACImT,YAAYC,KAAKxD,MAAM3I,EAAOhH,iBAElC,YACIoT,wBACAC,WAAW,aACX5O,aAAa,aACbA,aAAa,kBAEjB,YACK+D,EAAM,IAAInC,MAAM,gBAEtBmC,EAAI8K,KAAOtM,EAAOhH,UACb8L,QAAQtD,aAEZ,eACI/D,aAAa,OAAQuC,EAAOhH,WAC5ByE,aAAa,UAAWuC,EAAOhH,2CAaxCA,QACHyE,aAAa,YAAazE,QAC1B0R,GAAK1R,EAAKiL,SACV8G,UAAUvL,MAAMyE,IAAMjL,EAAKiL,SAC3B0G,SAAWlO,KAAK8P,eAAevT,EAAK2R,eACpCC,aAAe5R,EAAK4R,kBACpBC,YAAc7R,EAAK6R,iBACnB2B,WAAaxT,EAAKwT,gBAClBjJ,SAED,WAAa9G,KAAKgD,iBAEjB2M,8EAQArN,eAAetC,KAAKqO,uBACpBA,iBAAmBrO,KAAKmC,cAAa,WACtCgF,EAAK/D,QAAQ,kBACdpD,KAAKmO,aAAenO,KAAKoO,aACxBpO,KAAKiC,KAAKmJ,gBACLiD,iBAAiB/C,+CASrBgC,YAAY3M,OAAO,EAAGX,KAAKuN,oBAI3BA,cAAgB,EACjB,IAAMvN,KAAKsN,YAAYrP,YAClB+C,aAAa,cAGbkO,2CASL,WAAalP,KAAKgD,YAClBhD,KAAKsO,UAAUxL,WACd9C,KAAKiP,WACNjP,KAAKsN,YAAYrP,OAAQ,KACnBoF,EAAUrD,KAAKgQ,0BAChB1B,UAAU9E,KAAKnG,QAGfkK,cAAgBlK,EAAQpF,YACxB+C,aAAa,4DAUShB,KAAK+P,YACR,YAAxB/P,KAAKsO,UAAUzC,MACf7L,KAAKsN,YAAYrP,OAAS,UAEnB+B,KAAKsN,oBXlYGpQ,EWoYf+S,EAAc,EACTjS,EAAI,EAAGA,EAAIgC,KAAKsN,YAAYrP,OAAQD,IAAK,KACxCzB,EAAOyD,KAAKsN,YAAYtP,GAAGzB,QAC7BA,IACA0T,GXvYO,iBADI/S,EWwYeX,GXjY1C,SAAoB8H,WACZ6L,EAAI,EAAGjS,EAAS,EACXD,EAAI,EAAG0G,EAAIL,EAAIpG,OAAQD,EAAI0G,EAAG1G,KACnCkS,EAAI7L,EAAInG,WAAWF,IACX,IACJC,GAAU,EAELiS,EAAI,KACTjS,GAAU,EAELiS,EAAI,OAAUA,GAAK,MACxBjS,GAAU,GAGVD,IACAC,GAAU,UAGXA,EAvBIkS,CAAWjT,GAGf8G,KAAKoM,KAPQ,MAOFlT,EAAImT,YAAcnT,EAAIoT,QWqY5BtS,EAAI,GAAKiS,EAAcjQ,KAAK+P,kBACrB/P,KAAKsN,YAAYvM,MAAM,EAAG/C,GAErCiS,GAAe,SAEZjQ,KAAKsN,0CAWV0B,EAAKuB,EAASzQ,eACX8P,WAAW,UAAWZ,EAAKuB,EAASzQ,GAClCE,kCAENgP,EAAKuB,EAASzQ,eACV8P,WAAW,UAAWZ,EAAKuB,EAASzQ,GAClCE,wCAWA1D,EAAMC,EAAMgU,EAASzQ,MACxB,mBAAsBvD,IACtBuD,EAAKvD,EACLA,OAAOmM,GAEP,mBAAsB6H,IACtBzQ,EAAKyQ,EACLA,EAAU,MAEV,YAAcvQ,KAAKgD,YAAc,WAAahD,KAAKgD,aAGvDuN,EAAUA,GAAW,IACbC,UAAW,IAAUD,EAAQC,aAC/BjN,EAAS,CACXjH,KAAMA,EACNC,KAAMA,EACNgU,QAASA,QAERvP,aAAa,eAAgBuC,QAC7B+J,YAAYrN,KAAKsD,GAClBzD,GACAE,KAAKE,KAAK,QAASJ,QAClBoP,oDAQCnI,EAAQ,WACVqB,EAAKhF,QAAQ,gBACbgF,EAAKkG,UAAUvH,SAEb0J,EAAkB,SAAlBA,IACFrI,EAAKjI,IAAI,UAAWsQ,GACpBrI,EAAKjI,IAAI,eAAgBsQ,GACzB1J,KAEE2J,EAAiB,WAEnBtI,EAAKlI,KAAK,UAAWuQ,GACrBrI,EAAKlI,KAAK,eAAgBuQ,UAE1B,YAAczQ,KAAKgD,YAAc,SAAWhD,KAAKgD,kBAC5CA,WAAa,UACdhD,KAAKsN,YAAYrP,YACZiC,KAAK,SAAS,WACXkI,EAAK6G,UACLyB,IAGA3J,OAIH/G,KAAKiP,UACVyB,IAGA3J,KAGD/G,qCAOH+E,GACJqI,EAAOqB,uBAAwB,OAC1BzN,aAAa,QAAS+D,QACtB3B,QAAQ,kBAAmB2B,mCAO5BtC,EAAQC,GACR,YAAc1C,KAAKgD,YACnB,SAAWhD,KAAKgD,YAChB,YAAchD,KAAKgD,kBAEdV,eAAetC,KAAKqO,uBAEpBC,UAAU/N,mBAAmB,cAE7B+N,UAAUvH,aAEVuH,UAAU/N,qBACoB,mBAAxBC,qBACPA,oBAAoB,UAAWR,KAAKuO,sBAAsB,QAGzDvL,WAAa,cAEbiL,GAAK,UAELjN,aAAa,QAASyB,EAAQC,QAG9B4K,YAAc,QACdC,cAAgB,0CAUdW,WACLyC,EAAmB,GACrB3S,EAAI,EACF4S,EAAI1C,EAASjQ,OACZD,EAAI4S,EAAG5S,KACLgC,KAAK8L,WAAWlE,QAAQsG,EAASlQ,KAClC2S,EAAiB1Q,KAAKiO,EAASlQ,WAEhC2S,SAzjBalR,GA4jB5B2N,GAAOxH,SdpiBiB,kBe7BRmC,EAAK9F,UAAS,IAAImL,GAAOrF,EAAK9F"} \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 4e0d42a6..f25db679 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "engine.io-client", - "version": "6.1.1", + "version": "6.2.0", "lockfileVersion": 2, "requires": true, "packages": { diff --git a/package.json b/package.json index 97eaf64f..caa1b4ee 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "engine.io-client", "description": "Client for the realtime Engine", "license": "MIT", - "version": "6.1.1", + "version": "6.2.0", "main": "./build/cjs/index.js", "module": "./build/esm/index.js", "exports": {