9remote 0.1.11 → 0.1.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/dist/server.cjs +1 -1
  2. package/package.json +1 -1
package/dist/server.cjs CHANGED
@@ -15,7 +15,7 @@ Connection: close\r
15
15
  Content-type: text/html\r
16
16
  Content-Length: `+n+`\r
17
17
  \r
18
- `+i)}s.destroy()}var Dt=[0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1];function bm(s){if(s+="",s.length<1)return!1;if(!Dt[s.charCodeAt(0)])return w('invalid header, index 0, char "%s"',s.charCodeAt(0)),!0;if(s.length<2)return!1;if(!Dt[s.charCodeAt(1)])return w('invalid header, index 1, char "%s"',s.charCodeAt(1)),!0;if(s.length<3)return!1;if(!Dt[s.charCodeAt(2)])return w('invalid header, index 2, char "%s"',s.charCodeAt(2)),!0;if(s.length<4)return!1;if(!Dt[s.charCodeAt(3)])return w('invalid header, index 3, char "%s"',s.charCodeAt(3)),!0;for(let e=4;e<s.length;++e)if(!Dt[s.charCodeAt(e)])return w('invalid header, index "%i", char "%s"',e,s.charCodeAt(e)),!0;return!1}});var ec=x(Ns=>{"use strict";Object.defineProperty(Ns,"__esModule",{value:!0});Ns.Polling=void 0;var ym=Fe(),Zo=require("zlib"),wm=ts(),_m=R(),ie=(0,_m.default)("engine:polling"),Sm={gzip:Zo.createGzip,deflate:Zo.createDeflate},xn=class extends ym.Transport{constructor(e){super(e),this.closeTimeout=30*1e3}get name(){return"polling"}onRequest(e){let t=e.res;e.res=null,e.getMethod()==="get"?this.onPollRequest(e,t):e.getMethod()==="post"?this.onDataRequest(e,t):(t.writeStatus("500 Internal Server Error"),t.end())}onPollRequest(e,t){if(this.req){ie("request overlap"),this.onError("overlap from client"),t.writeStatus("500 Internal Server Error"),t.end();return}ie("setting request"),this.req=e,this.res=t;let i=()=>{this.writable=!1,this.onError("poll connection closed prematurely")},n=()=>{this.req=this.res=null};e.cleanup=n,t.onAborted(i),this.writable=!0,this.emit("ready"),this.writable&&this.shouldClose&&(ie("triggering empty send to append close packet"),this.send([{type:"noop"}]))}onDataRequest(e,t){if(this.dataReq){this.onError("data request overlap from client"),t.writeStatus("500 Internal Server Error"),t.end();return}let i=Number(e.headers["content-length"]);if(!i){this.onError("content-length header required"),t.writeStatus("411 Length Required").end();return}if(i>this.maxHttpBufferSize){this.onError("payload too large"),t.writeStatus("413 Payload Too Large").end();return}if(e.headers["content-type"]==="application/octet-stream"&&this.protocol===4)return this.onError("invalid content");this.dataReq=e,this.dataRes=t;let a,r=0,o={"Content-Type":"text/html"};this.headers(e,o);for(let l in o)t.writeHeader(l,String(o[l]));let c=l=>{this.onData(l.toString()),this.onDataRequestCleanup(),t.cork(()=>{t.end("ok")})};t.onAborted(()=>{this.onDataRequestCleanup(),this.onError("data request connection closed prematurely")}),t.onData((l,p)=>{let u=r+l.byteLength;if(u>i){this.onError("content-length mismatch"),t.close();return}if(!a){if(p){c(Buffer.from(l));return}a=Buffer.allocUnsafe(i)}if(Buffer.from(l).copy(a,r),p){if(u!=i){this.onError("content-length mismatch"),t.writeStatus("400 Content-Length Mismatch").end(),this.onDataRequestCleanup();return}c(a);return}r=u})}onDataRequestCleanup(){this.dataReq=this.dataRes=null}onData(e){ie('received "%s"',e);let t=i=>{if(i.type==="close")return ie("got xhr close packet"),this.onClose(),!1;this.onPacket(i)};this.protocol===3?this.parser.decodePayload(e,t):this.parser.decodePayload(e).forEach(t)}onClose(){this.writable&&this.send([{type:"noop"}]),super.onClose()}send(e){this.writable=!1,this.shouldClose&&(ie("appending close packet to payload"),e.push({type:"close"}),this.shouldClose(),this.shouldClose=null);let t=i=>{let n=e.some(a=>a.options&&a.options.compress);this.write(i,{compress:n})};this.protocol===3?this.parser.encodePayload(e,this.supportsBinary,t):this.parser.encodePayload(e,t)}write(e,t){ie('writing "%s"',e),this.doWrite(e,t,()=>{this.req.cleanup(),this.emit("drain")})}doWrite(e,t,i){let n=typeof e=="string",r={"Content-Type":n?"text/plain; charset=UTF-8":"application/octet-stream"},o=p=>{this.headers(this.req,r),this.res.cork(()=>{Object.keys(r).forEach(u=>{this.res.writeHeader(u,String(r[u]))}),this.res.end(p)}),i()};if(!this.httpCompression||!t.compress){o(e);return}if((n?Buffer.byteLength(e):e.length)<this.httpCompression.threshold){o(e);return}let l=wm(this.req).encodings(["gzip","deflate"]);if(!l){o(e);return}this.compress(e,l,(p,u)=>{if(p){this.res.writeStatus("500 Internal Server Error"),this.res.end(),i(p);return}r["Content-Encoding"]=l,o(u)})}compress(e,t,i){ie("compressing");let n=[],a=0;Sm[t](this.httpCompression).on("error",i).on("data",function(r){n.push(r),a+=r.length}).on("end",function(){i(null,Buffer.concat(n,a))}).end(e)}doClose(e){ie("closing");let t,i=()=>{clearTimeout(t),e(),this.onClose()};this.writable?(ie("transport writable - closing right away"),this.send([{type:"close"}]),i()):this.discarded?(ie("transport discarded - closing right away"),i()):(ie("transport not writable - buffering orderly close"),this.shouldClose=i,t=setTimeout(i,this.closeTimeout))}headers(e,t){t=t||{};let i=e.headers["user-agent"];return i&&(~i.indexOf(";MSIE")||~i.indexOf("Trident/"))&&(t["X-XSS-Protection"]="0"),t["cache-control"]="no-store",this.emit("headers",t,e),t}};Ns.Polling=xn});var sc=x(Bs=>{"use strict";Object.defineProperty(Bs,"__esModule",{value:!0});Bs.WebSocket=void 0;var Em=Fe(),km=R(),tc=(0,km.default)("engine:ws"),vn=class extends Em.Transport{constructor(e){super(e),this.writable=!1,this.perMessageDeflate=null}get name(){return"websocket"}get handlesUpgrades(){return!0}send(e){this.writable=!1;for(let t=0;t<e.length;t++){let i=e[t],n=t+1===e.length,a=r=>{let o=typeof r!="string",c=this.perMessageDeflate&&Buffer.byteLength(r)>this.perMessageDeflate.threshold;tc('writing "%s"',r),this.socket.send(r,o,c),n&&(this.emit("drain"),this.writable=!0,this.emit("ready"))};i.options&&typeof i.options.wsPreEncoded=="string"?a(i.options.wsPreEncoded):this.parser.encodePacket(i,this.supportsBinary,a)}}doClose(e){tc("closing"),e&&e(),this.socket.end()}};Bs.WebSocket=vn});var ic=x(gn=>{"use strict";Object.defineProperty(gn,"__esModule",{value:!0});var Cm=ec(),Tm=sc();gn.default={polling:Cm.Polling,websocket:Tm.WebSocket}});var nc=x(Ls=>{"use strict";Object.defineProperty(Ls,"__esModule",{value:!0});Ls.uServer=void 0;var Om=R(),Ve=hn(),Rm=ic(),Ie=(0,Om.default)("engine:uws"),bn=class extends Ve.BaseServer{init(){}cleanup(){}prepare(e,t){e.method=e.getMethod().toUpperCase(),e.url=e.getUrl();let i=new URLSearchParams(e.getQuery());e._query=Object.fromEntries(i.entries()),e.headers={},e.forEach((n,a)=>{e.headers[n]=a}),e.connection={remoteAddress:Buffer.from(t.getRemoteAddressAsText()).toString()},t.onAborted(()=>{Ie("response has been aborted")})}createTransport(e,t){return new Rm.default[e](t)}attach(e,t={}){let i=this._computePath(t);e.any(i,this.handleRequest.bind(this)).ws(i,{compression:t.compression,idleTimeout:t.idleTimeout,maxBackpressure:t.maxBackpressure,maxPayloadLength:this.opts.maxHttpBufferSize,upgrade:this.handleUpgrade.bind(this),open:n=>{let a=n.getUserData().transport;a.socket=n,a.writable=!0,a.emit("ready")},message:(n,a,r)=>{n.getUserData().transport.onData(r?a:Buffer.from(a).toString())},close:(n,a,r)=>{n.getUserData().transport.onClose(a,r)}})}_applyMiddlewares(e,t,i){if(this.middlewares.length===0)return i();e.res=new yn(t),super._applyMiddlewares(e,e.res,n=>{e.res.writeHead(),i(n)})}handleRequest(e,t){Ie('handling "%s" http request "%s"',t.getMethod(),t.getUrl()),this.prepare(t,e),t.res=e;let i=(n,a)=>{if(n!==void 0){this.emit("connection_error",{req:t,code:n,message:Ve.Server.errorMessages[n],context:a}),this.abortRequest(t.res,n,a);return}if(t._query.sid)Ie("setting new request for existing client"),this.clients[t._query.sid].transport.onRequest(t);else{let r=(o,c)=>this.abortRequest(e,o,c);this.handshake(t._query.transport,t,r)}};this._applyMiddlewares(t,e,n=>{n?i(Ve.Server.errors.BAD_REQUEST,{name:"MIDDLEWARE_FAILURE"}):this.verify(t,!1,i)})}handleUpgrade(e,t,i){Ie("on upgrade"),this.prepare(t,e),t.res=e;let n=async(a,r)=>{if(a!==void 0){this.emit("connection_error",{req:t,code:a,message:Ve.Server.errorMessages[a],context:r}),this.abortRequest(e,a,r);return}let o=t._query.sid,c;if(o){let l=this.clients[o];if(l){if(l.upgrading)return Ie("transport has already been trying to upgrade"),e.close();if(l.upgraded)return Ie("transport had already been upgraded"),e.close();Ie("upgrading existing transport"),c=this.createTransport(t._query.transport,t),l._maybeUpgrade(c)}else return Ie("upgrade attempt for closed client"),e.close()}else if(c=await this.handshake(t._query.transport,t,(l,p)=>this.abortRequest(e,l,p)),!c)return;t.res.writeStatus("101 Switching Protocols"),e.upgrade({transport:c},t.getHeader("sec-websocket-key"),t.getHeader("sec-websocket-protocol"),t.getHeader("sec-websocket-extensions"),i)};this._applyMiddlewares(t,e,a=>{a?n(Ve.Server.errors.BAD_REQUEST,{name:"MIDDLEWARE_FAILURE"}):this.verify(t,!0,n)})}abortRequest(e,t,i){let n=t===Ve.Server.errors.FORBIDDEN?"403 Forbidden":"400 Bad Request",a=i&&i.message?i.message:Ve.Server.errorMessages[t];e.writeStatus(n),e.writeHeader("Content-Type","application/json"),e.end(JSON.stringify({code:t,message:a}))}};Ls.uServer=bn;var yn=class{constructor(e){this.res=e,this.statusWritten=!1,this.headers=[],this.isAborted=!1}set statusCode(e){e&&this.writeStatus(e===200?"200 OK":"204 No Content")}writeHead(e){this.statusCode=e}setHeader(e,t){Array.isArray(t)?t.forEach(i=>{this.writeHeader(e,i)}):this.writeHeader(e,t)}removeHeader(){}getHeader(){}writeStatus(e){if(!this.isAborted)return this.res.writeStatus(e),this.statusWritten=!0,this.writeBufferedHeaders(),this}writeHeader(e,t){this.isAborted||e!=="Content-Length"&&(this.statusWritten?this.res.writeHeader(e,t):this.headers.push([e,t]))}writeBufferedHeaders(){this.headers.forEach(([e,t])=>{this.res.writeHeader(e,t)})}end(e){this.isAborted||this.res.cork(()=>{this.statusWritten||this.writeBufferedHeaders(),this.res.end(e)})}onData(e){this.isAborted||this.res.onData(e)}onAborted(e){this.isAborted||this.res.onAborted(()=>{this.isAborted=!0,e()})}cork(e){this.isAborted||this.res.cork(e)}}});var cc=x(B=>{"use strict";Object.defineProperty(B,"__esModule",{value:!0});B.protocol=B.Transport=B.Socket=B.uServer=B.parser=B.transports=B.Server=void 0;B.listen=Bm;B.attach=oc;var Am=require("http"),ac=hn();Object.defineProperty(B,"Server",{enumerable:!0,get:function(){return ac.Server}});var Pm=qi();B.transports=Pm.default;var rc=Rt();B.parser=rc;var jm=nc();Object.defineProperty(B,"uServer",{enumerable:!0,get:function(){return jm.uServer}});var Im=Ui();Object.defineProperty(B,"Socket",{enumerable:!0,get:function(){return Im.Socket}});var Nm=Fe();Object.defineProperty(B,"Transport",{enumerable:!0,get:function(){return Nm.Transport}});B.protocol=rc.protocol;function Bm(s,e,t){typeof e=="function"&&(t=e,e={});let i=(0,Am.createServer)(function(a,r){r.writeHead(501),r.end("Not Implemented")}),n=oc(i,e);return n.httpServer=i,i.listen(s,t),n}function oc(s,e){let t=new ac.Server(e);return t.attach(s,e),t}});var pc=x(lc=>{lc.Emitter=U;function U(s){if(s)return Lm(s)}function Lm(s){for(var e in U.prototype)s[e]=U.prototype[e];return s}U.prototype.on=U.prototype.addEventListener=function(s,e){return this._callbacks=this._callbacks||{},(this._callbacks["$"+s]=this._callbacks["$"+s]||[]).push(e),this};U.prototype.once=function(s,e){function t(){this.off(s,t),e.apply(this,arguments)}return t.fn=e,this.on(s,t),this};U.prototype.off=U.prototype.removeListener=U.prototype.removeAllListeners=U.prototype.removeEventListener=function(s,e){if(this._callbacks=this._callbacks||{},arguments.length==0)return this._callbacks={},this;var t=this._callbacks["$"+s];if(!t)return this;if(arguments.length==1)return delete this._callbacks["$"+s],this;for(var i,n=0;n<t.length;n++)if(i=t[n],i===e||i.fn===e){t.splice(n,1);break}return t.length===0&&delete this._callbacks["$"+s],this};U.prototype.emit=function(s){this._callbacks=this._callbacks||{};for(var e=new Array(arguments.length-1),t=this._callbacks["$"+s],i=1;i<arguments.length;i++)e[i-1]=arguments[i];if(t){t=t.slice(0);for(var i=0,n=t.length;i<n;++i)t[i].apply(this,e)}return this};U.prototype.emitReserved=U.prototype.emit;U.prototype.listeners=function(s){return this._callbacks=this._callbacks||{},this._callbacks["$"+s]||[]};U.prototype.hasListeners=function(s){return!!this.listeners(s).length}});var wn=x(Ds=>{"use strict";Object.defineProperty(Ds,"__esModule",{value:!0});Ds.isBinary=dc;Ds.hasBinary=Ms;var Mm=typeof ArrayBuffer=="function",Dm=s=>typeof ArrayBuffer.isView=="function"?ArrayBuffer.isView(s):s.buffer instanceof ArrayBuffer,uc=Object.prototype.toString,qm=typeof Blob=="function"||typeof Blob<"u"&&uc.call(Blob)==="[object BlobConstructor]",Fm=typeof File=="function"||typeof File<"u"&&uc.call(File)==="[object FileConstructor]";function dc(s){return Mm&&(s instanceof ArrayBuffer||Dm(s))||qm&&s instanceof Blob||Fm&&s instanceof File}function Ms(s,e){if(!s||typeof s!="object")return!1;if(Array.isArray(s)){for(let t=0,i=s.length;t<i;t++)if(Ms(s[t]))return!0;return!1}if(dc(s))return!0;if(s.toJSON&&typeof s.toJSON=="function"&&arguments.length===1)return Ms(s.toJSON(),!0);for(let t in s)if(Object.prototype.hasOwnProperty.call(s,t)&&Ms(s[t]))return!0;return!1}});var fc=x(qs=>{"use strict";Object.defineProperty(qs,"__esModule",{value:!0});qs.deconstructPacket=Hm;qs.reconstructPacket=zm;var Um=wn();function Hm(s){let e=[],t=s.data,i=s;return i.data=_n(t,e),i.attachments=e.length,{packet:i,buffers:e}}function _n(s,e){if(!s)return s;if((0,Um.isBinary)(s)){let t={_placeholder:!0,num:e.length};return e.push(s),t}else if(Array.isArray(s)){let t=new Array(s.length);for(let i=0;i<s.length;i++)t[i]=_n(s[i],e);return t}else if(typeof s=="object"&&!(s instanceof Date)){let t={};for(let i in s)Object.prototype.hasOwnProperty.call(s,i)&&(t[i]=_n(s[i],e));return t}return s}function zm(s,e){return s.data=Sn(s.data,e),delete s.attachments,s}function Sn(s,e){if(!s)return s;if(s&&s._placeholder===!0){if(typeof s.num=="number"&&s.num>=0&&s.num<e.length)return e[s.num];throw new Error("illegal attachments")}else if(Array.isArray(s))for(let t=0;t<s.length;t++)s[t]=Sn(s[t],e);else if(typeof s=="object")for(let t in s)Object.prototype.hasOwnProperty.call(s,t)&&(s[t]=Sn(s[t],e));return s}});var qt=x(ce=>{"use strict";Object.defineProperty(ce,"__esModule",{value:!0});ce.Decoder=ce.Encoder=ce.PacketType=ce.protocol=void 0;ce.isPacketValid=Xm;var Wm=pc(),mc=fc(),hc=wn(),$m=R(),En=(0,$m.default)("socket.io-parser"),xc=["connect","connect_error","disconnect","disconnecting","newListener","removeListener"];ce.protocol=5;var E;(function(s){s[s.CONNECT=0]="CONNECT",s[s.DISCONNECT=1]="DISCONNECT",s[s.EVENT=2]="EVENT",s[s.ACK=3]="ACK",s[s.CONNECT_ERROR=4]="CONNECT_ERROR",s[s.BINARY_EVENT=5]="BINARY_EVENT",s[s.BINARY_ACK=6]="BINARY_ACK"})(E||(ce.PacketType=E={}));var kn=class{constructor(e){this.replacer=e}encode(e){return En("encoding packet %j",e),(e.type===E.EVENT||e.type===E.ACK)&&(0,hc.hasBinary)(e)?this.encodeAsBinary({type:e.type===E.EVENT?E.BINARY_EVENT:E.BINARY_ACK,nsp:e.nsp,data:e.data,id:e.id}):[this.encodeAsString(e)]}encodeAsString(e){let t=""+e.type;return(e.type===E.BINARY_EVENT||e.type===E.BINARY_ACK)&&(t+=e.attachments+"-"),e.nsp&&e.nsp!=="/"&&(t+=e.nsp+","),e.id!=null&&(t+=e.id),e.data!=null&&(t+=JSON.stringify(e.data,this.replacer)),En("encoded %j as %s",e,t),t}encodeAsBinary(e){let t=(0,mc.deconstructPacket)(e),i=this.encodeAsString(t.packet),n=t.buffers;return n.unshift(i),n}};ce.Encoder=kn;var Cn=class s extends Wm.Emitter{constructor(e){super(),this.reviver=e}add(e){let t;if(typeof e=="string"){if(this.reconstructor)throw new Error("got plaintext data when reconstructing a packet");t=this.decodeString(e);let i=t.type===E.BINARY_EVENT;i||t.type===E.BINARY_ACK?(t.type=i?E.EVENT:E.ACK,this.reconstructor=new Tn(t),t.attachments===0&&super.emitReserved("decoded",t)):super.emitReserved("decoded",t)}else if((0,hc.isBinary)(e)||e.base64)if(this.reconstructor)t=this.reconstructor.takeBinaryData(e),t&&(this.reconstructor=null,super.emitReserved("decoded",t));else throw new Error("got binary data when not reconstructing a packet");else throw new Error("Unknown type: "+e)}decodeString(e){let t=0,i={type:Number(e.charAt(0))};if(E[i.type]===void 0)throw new Error("unknown packet type "+i.type);if(i.type===E.BINARY_EVENT||i.type===E.BINARY_ACK){let a=t+1;for(;e.charAt(++t)!=="-"&&t!=e.length;);let r=e.substring(a,t);if(r!=Number(r)||e.charAt(t)!=="-")throw new Error("Illegal attachments");i.attachments=Number(r)}if(e.charAt(t+1)==="/"){let a=t+1;for(;++t&&!(e.charAt(t)===","||t===e.length););i.nsp=e.substring(a,t)}else i.nsp="/";let n=e.charAt(t+1);if(n!==""&&Number(n)==n){let a=t+1;for(;++t;){let r=e.charAt(t);if(r==null||Number(r)!=r){--t;break}if(t===e.length)break}i.id=Number(e.substring(a,t+1))}if(e.charAt(++t)){let a=this.tryParse(e.substr(t));if(s.isPayloadValid(i.type,a))i.data=a;else throw new Error("invalid payload")}return En("decoded %s as %j",e,i),i}tryParse(e){try{return JSON.parse(e,this.reviver)}catch{return!1}}static isPayloadValid(e,t){switch(e){case E.CONNECT:return Fs(t);case E.DISCONNECT:return t===void 0;case E.CONNECT_ERROR:return typeof t=="string"||Fs(t);case E.EVENT:case E.BINARY_EVENT:return Array.isArray(t)&&(typeof t[0]=="number"||typeof t[0]=="string"&&xc.indexOf(t[0])===-1);case E.ACK:case E.BINARY_ACK:return Array.isArray(t)}}destroy(){this.reconstructor&&(this.reconstructor.finishedReconstruction(),this.reconstructor=null)}};ce.Decoder=Cn;var Tn=class{constructor(e){this.packet=e,this.buffers=[],this.reconPack=e}takeBinaryData(e){if(this.buffers.push(e),this.buffers.length===this.reconPack.attachments){let t=(0,mc.reconstructPacket)(this.reconPack,this.buffers);return this.finishedReconstruction(),t}return null}finishedReconstruction(){this.reconPack=null,this.buffers=[]}};function Vm(s){return typeof s=="string"}var Gm=Number.isInteger||function(s){return typeof s=="number"&&isFinite(s)&&Math.floor(s)===s};function Km(s){return s===void 0||Gm(s)}function Fs(s){return Object.prototype.toString.call(s)==="[object Object]"}function Ym(s,e){switch(s){case E.CONNECT:return e===void 0||Fs(e);case E.DISCONNECT:return e===void 0;case E.EVENT:return Array.isArray(e)&&(typeof e[0]=="number"||typeof e[0]=="string"&&xc.indexOf(e[0])===-1);case E.ACK:return Array.isArray(e);case E.CONNECT_ERROR:return typeof e=="string"||Fs(e);default:return!1}}function Xm(s){return Vm(s.nsp)&&Km(s.id)&&Ym(s.type,s.data)}});var vc=x(xt=>{"use strict";var Jm=xt&&xt.__importDefault||function(s){return s&&s.__esModule?s:{default:s}};Object.defineProperty(xt,"__esModule",{value:!0});xt.Client=void 0;var Us=qt(),Qm=Jm(R()),le=(0,Qm.default)("socket.io:client"),On=class{constructor(e,t){this.sockets=new Map,this.nsps=new Map,this.server=e,this.conn=t,this.encoder=e.encoder,this.decoder=new e._parser.Decoder,this.id=t.id,this.setup()}get request(){return this.conn.request}setup(){this.onclose=this.onclose.bind(this),this.ondata=this.ondata.bind(this),this.onerror=this.onerror.bind(this),this.ondecoded=this.ondecoded.bind(this),this.decoder.on("decoded",this.ondecoded),this.conn.on("data",this.ondata),this.conn.on("error",this.onerror),this.conn.on("close",this.onclose),this.connectTimeout=setTimeout(()=>{this.nsps.size===0?(le("no namespace joined yet, close the client"),this.close()):le("the client has already joined a namespace, nothing to do")},this.server._connectTimeout)}connect(e,t={}){if(this.server._nsps.has(e))return le("connecting to namespace %s",e),this.doConnect(e,t);this.server._checkNamespace(e,t,i=>{i?this.doConnect(e,t):(le("creation of namespace %s was denied",e),this._packet({type:Us.PacketType.CONNECT_ERROR,nsp:e,data:{message:"Invalid namespace"}}))})}doConnect(e,t){let i=this.server.of(e);i._add(this,t,n=>{this.sockets.set(n.id,n),this.nsps.set(i.name,n),this.connectTimeout&&(clearTimeout(this.connectTimeout),this.connectTimeout=void 0)})}_disconnect(){for(let e of this.sockets.values())e.disconnect();this.sockets.clear(),this.close()}_remove(e){if(this.sockets.has(e.id)){let t=this.sockets.get(e.id).nsp.name;this.sockets.delete(e.id),this.nsps.delete(t)}else le("ignoring remove for %s",e.id)}close(){this.conn.readyState==="open"&&(le("forcing transport close"),this.conn.close(),this.onclose("forced server close"))}_packet(e,t={}){if(this.conn.readyState!=="open"){le("ignoring packet write %j",e);return}let i=t.preEncoded?e:this.encoder.encode(e);this.writeToEngine(i,t)}writeToEngine(e,t){if(t.volatile&&!this.conn.transport.writable){le("volatile packet is discarded since the transport is not currently writable");return}let i=Array.isArray(e)?e:[e];for(let n of i)this.conn.write(n,t)}ondata(e){try{this.decoder.add(e)}catch(t){le("invalid packet format"),this.onerror(t)}}ondecoded(e){let{namespace:t,authPayload:i}=this._parseNamespace(e),n=this.nsps.get(t);!n&&e.type===Us.PacketType.CONNECT?this.connect(t,i):n&&e.type!==Us.PacketType.CONNECT&&e.type!==Us.PacketType.CONNECT_ERROR?process.nextTick(function(){n._onpacket(e)}):(le("invalid state (packet type: %s)",e.type),this.close())}_parseNamespace(e){if(this.conn.protocol!==3)return{namespace:e.nsp,authPayload:e.data};let t=new URL(e.nsp,"https://socket.io");return{namespace:t.pathname,authPayload:Object.fromEntries(t.searchParams.entries())}}onerror(e){for(let t of this.sockets.values())t._onerror(e);this.conn.close()}onclose(e,t){le("client close with reason %s",e),this.destroy();for(let i of this.sockets.values())i._onclose(e,t);this.sockets.clear(),this.decoder.destroy()}destroy(){this.conn.removeListener("data",this.ondata),this.conn.removeListener("error",this.onerror),this.conn.removeListener("close",this.onclose),this.decoder.removeListener("decoded",this.ondecoded),this.connectTimeout&&(clearTimeout(this.connectTimeout),this.connectTimeout=void 0)}};xt.Client=On});var zs=x(Hs=>{"use strict";Object.defineProperty(Hs,"__esModule",{value:!0});Hs.StrictEventEmitter=void 0;var Zm=require("events"),Rn=class extends Zm.EventEmitter{on(e,t){return super.on(e,t)}once(e,t){return super.once(e,t)}emit(e,...t){return super.emit(e,...t)}emitReserved(e,...t){return super.emit(e,...t)}emitUntyped(e,...t){return super.emit(e,...t)}listeners(e){return super.listeners(e)}};Hs.StrictEventEmitter=Rn});var An=x(Ws=>{"use strict";Object.defineProperty(Ws,"__esModule",{value:!0});Ws.RESERVED_EVENTS=void 0;Ws.RESERVED_EVENTS=new Set(["connect","connect_error","disconnect","disconnecting","newListener","removeListener"])});var Pn=x(vt=>{"use strict";Object.defineProperty(vt,"__esModule",{value:!0});vt.RemoteSocket=vt.BroadcastOperator=void 0;var eh=An(),th=qt(),$s=class s{constructor(e,t=new Set,i=new Set,n={}){this.adapter=e,this.rooms=t,this.exceptRooms=i,this.flags=n}to(e){let t=new Set(this.rooms);return Array.isArray(e)?e.forEach(i=>t.add(i)):t.add(e),new s(this.adapter,t,this.exceptRooms,this.flags)}in(e){return this.to(e)}except(e){let t=new Set(this.exceptRooms);return Array.isArray(e)?e.forEach(i=>t.add(i)):t.add(e),new s(this.adapter,this.rooms,t,this.flags)}compress(e){let t=Object.assign({},this.flags,{compress:e});return new s(this.adapter,this.rooms,this.exceptRooms,t)}get volatile(){let e=Object.assign({},this.flags,{volatile:!0});return new s(this.adapter,this.rooms,this.exceptRooms,e)}get local(){let e=Object.assign({},this.flags,{local:!0});return new s(this.adapter,this.rooms,this.exceptRooms,e)}timeout(e){let t=Object.assign({},this.flags,{timeout:e});return new s(this.adapter,this.rooms,this.exceptRooms,t)}emit(e,...t){if(eh.RESERVED_EVENTS.has(e))throw new Error(`"${String(e)}" is a reserved event name`);let i=[e,...t],n={type:th.PacketType.EVENT,data:i};if(!(typeof i[i.length-1]=="function"))return this.adapter.broadcast(n,{rooms:this.rooms,except:this.exceptRooms,flags:this.flags}),!0;let r=i.pop(),o=!1,c=[],l=setTimeout(()=>{o=!0,r.apply(this,[new Error("operation has timed out"),this.flags.expectSingleResponse?null:c])},this.flags.timeout),p=-1,u=0,d=0,h=()=>{!o&&p===u&&c.length===d&&(clearTimeout(l),r.apply(this,[null,this.flags.expectSingleResponse?c[0]:c]))};return this.adapter.broadcastWithAck(n,{rooms:this.rooms,except:this.exceptRooms,flags:this.flags},m=>{d+=m,u++,h()},m=>{c.push(m),h()}),this.adapter.serverCount().then(m=>{p=m,h()}),!0}emitWithAck(e,...t){return new Promise((i,n)=>{t.push((a,r)=>a?(a.responses=r,n(a)):i(r)),this.emit(e,...t)})}allSockets(){if(!this.adapter)throw new Error("No adapter for this namespace, are you trying to get the list of clients of a dynamic namespace?");return this.adapter.sockets(this.rooms)}fetchSockets(){return this.adapter.fetchSockets({rooms:this.rooms,except:this.exceptRooms,flags:this.flags}).then(e=>e.map(t=>t.server?t:new Vs(this.adapter,t)))}socketsJoin(e){this.adapter.addSockets({rooms:this.rooms,except:this.exceptRooms,flags:this.flags},Array.isArray(e)?e:[e])}socketsLeave(e){this.adapter.delSockets({rooms:this.rooms,except:this.exceptRooms,flags:this.flags},Array.isArray(e)?e:[e])}disconnectSockets(e=!1){this.adapter.disconnectSockets({rooms:this.rooms,except:this.exceptRooms,flags:this.flags},e)}};vt.BroadcastOperator=$s;var Vs=class{constructor(e,t){this.id=t.id,this.handshake=t.handshake,this.rooms=new Set(t.rooms),this.data=t.data,this.operator=new $s(e,new Set([this.id]),new Set,{expectSingleResponse:!0})}timeout(e){return this.operator.timeout(e)}emit(e,...t){return this.operator.emit(e,...t)}join(e){return this.operator.socketsJoin(e)}leave(e){return this.operator.socketsLeave(e)}disconnect(e=!1){return this.operator.disconnectSockets(e),this}};vt.RemoteSocket=Vs});var In=x(gt=>{"use strict";var yc=gt&&gt.__importDefault||function(s){return s&&s.__esModule?s:{default:s}};Object.defineProperty(gt,"__esModule",{value:!0});gt.Socket=void 0;var ne=qt(),sh=yc(R()),ih=zs(),gc=yc(bi()),nh=Pn(),ah=An(),D=(0,sh.default)("socket.io:socket"),rh=new Set(["transport error","transport close","forced close","ping timeout","server shutting down","forced server close"]);function bc(){}var jn=class extends ih.StrictEventEmitter{constructor(e,t,i,n){super(),this.nsp=e,this.client=t,this.recovered=!1,this.data={},this.connected=!1,this.acks=new Map,this.fns=[],this.flags={},this.server=e.server,this.adapter=e.adapter,n?(this.id=n.sid,this.pid=n.pid,n.rooms.forEach(a=>this.join(a)),this.data=n.data,n.missedPackets.forEach(a=>{this.packet({type:ne.PacketType.EVENT,data:a})}),this.recovered=!0):(t.conn.protocol===3?this.id=e.name!=="/"?e.name+"#"+t.id:t.id:this.id=gc.default.generateId(),this.server._opts.connectionStateRecovery&&(this.pid=gc.default.generateId())),this.handshake=this.buildHandshake(i),this.on("error",bc)}buildHandshake(e){var t,i,n,a;return{headers:((t=this.request)===null||t===void 0?void 0:t.headers)||{},time:new Date+"",address:this.conn.remoteAddress,xdomain:!!(!((i=this.request)===null||i===void 0)&&i.headers.origin),secure:!this.request||!!this.request.connection.encrypted,issued:+new Date,url:(n=this.request)===null||n===void 0?void 0:n.url,query:((a=this.request)===null||a===void 0?void 0:a._query)||{},auth:e}}emit(e,...t){if(ah.RESERVED_EVENTS.has(e))throw new Error(`"${String(e)}" is a reserved event name`);let i=[e,...t],n={type:ne.PacketType.EVENT,data:i};if(typeof i[i.length-1]=="function"){let r=this.nsp._ids++;D("emitting packet with ack id %d",r),this.registerAckCallback(r,i.pop()),n.id=r}let a=Object.assign({},this.flags);return this.flags={},this.nsp.server.opts.connectionStateRecovery?this.adapter.broadcast(n,{rooms:new Set([this.id]),except:new Set,flags:a}):(this.notifyOutgoingListeners(n),this.packet(n,a)),!0}emitWithAck(e,...t){let i=this.flags.timeout!==void 0;return new Promise((n,a)=>{t.push((r,o)=>i?r?a(r):n(o):n(r)),this.emit(e,...t)})}registerAckCallback(e,t){let i=this.flags.timeout;if(i===void 0){this.acks.set(e,t);return}let n=setTimeout(()=>{D("event with ack id %d has timed out after %d ms",e,i),this.acks.delete(e),t.call(this,new Error("operation has timed out"))},i);this.acks.set(e,(...a)=>{clearTimeout(n),t.apply(this,[null,...a])})}to(e){return this.newBroadcastOperator().to(e)}in(e){return this.newBroadcastOperator().in(e)}except(e){return this.newBroadcastOperator().except(e)}send(...e){return this.emit("message",...e),this}write(...e){return this.emit("message",...e),this}packet(e,t={}){e.nsp=this.nsp.name,t.compress=t.compress!==!1,this.client._packet(e,t)}join(e){return D("join room %s",e),this.adapter.addAll(this.id,new Set(Array.isArray(e)?e:[e]))}leave(e){return D("leave room %s",e),this.adapter.del(this.id,e)}leaveAll(){this.adapter.delAll(this.id)}_onconnect(){D("socket connected - writing packet"),this.connected=!0,this.join(this.id),this.conn.protocol===3?this.packet({type:ne.PacketType.CONNECT}):this.packet({type:ne.PacketType.CONNECT,data:{sid:this.id,pid:this.pid}})}_onpacket(e){switch(D("got packet %j",e),e.type){case ne.PacketType.EVENT:this.onevent(e);break;case ne.PacketType.BINARY_EVENT:this.onevent(e);break;case ne.PacketType.ACK:this.onack(e);break;case ne.PacketType.BINARY_ACK:this.onack(e);break;case ne.PacketType.DISCONNECT:this.ondisconnect();break}}onevent(e){let t=e.data||[];if(D("emitting event %j",t),e.id!=null&&(D("attaching ack callback to event"),t.push(this.ack(e.id))),this._anyListeners&&this._anyListeners.length){let i=this._anyListeners.slice();for(let n of i)n.apply(this,t)}this.dispatch(t)}ack(e){let t=this,i=!1;return function(){if(i)return;let n=Array.prototype.slice.call(arguments);D("sending ack %j",n),t.packet({id:e,type:ne.PacketType.ACK,data:n}),i=!0}}onack(e){let t=this.acks.get(e.id);typeof t=="function"?(D("calling ack %s with %j",e.id,e.data),t.apply(this,e.data),this.acks.delete(e.id)):D("bad ack %s",e.id)}ondisconnect(){D("got disconnect packet"),this._onclose("client namespace disconnect")}_onerror(e){this.emitReserved("error",e)}_onclose(e,t){if(!this.connected)return this;D("closing socket - reason %s",e),this.emitReserved("disconnecting",e,t),this.server._opts.connectionStateRecovery&&rh.has(e)&&(D("connection state recovery is enabled for sid %s",this.id),this.adapter.persistSession({sid:this.id,pid:this.pid,rooms:[...this.rooms],data:this.data})),this._cleanup(),this.client._remove(this),this.connected=!1,this.emitReserved("disconnect",e,t)}_cleanup(){this.leaveAll(),this.nsp._remove(this),this.join=bc}_error(e){this.packet({type:ne.PacketType.CONNECT_ERROR,data:e})}disconnect(e=!1){return this.connected?(e?this.client._disconnect():(this.packet({type:ne.PacketType.DISCONNECT}),this._onclose("server namespace disconnect")),this):this}compress(e){return this.flags.compress=e,this}get volatile(){return this.flags.volatile=!0,this}get broadcast(){return this.newBroadcastOperator()}get local(){return this.newBroadcastOperator().local}timeout(e){return this.flags.timeout=e,this}dispatch(e){D("dispatching an event %j",e),this.run(e,t=>{process.nextTick(()=>{if(t)return this._onerror(t);this.connected?super.emitUntyped.apply(this,e):D("ignore packet received after disconnection")})})}use(e){return this.fns.push(e),this}run(e,t){if(!this.fns.length)return t();let i=this.fns.slice(0);function n(a){i[a](e,r=>{if(r)return t(r);if(!i[a+1])return t();n(a+1)})}n(0)}get disconnected(){return!this.connected}get request(){return this.client.request}get conn(){return this.client.conn}get rooms(){return this.adapter.socketRooms(this.id)||new Set}onAny(e){return this._anyListeners=this._anyListeners||[],this._anyListeners.push(e),this}prependAny(e){return this._anyListeners=this._anyListeners||[],this._anyListeners.unshift(e),this}offAny(e){if(!this._anyListeners)return this;if(e){let t=this._anyListeners;for(let i=0;i<t.length;i++)if(e===t[i])return t.splice(i,1),this}else this._anyListeners=[];return this}listenersAny(){return this._anyListeners||[]}onAnyOutgoing(e){return this._anyOutgoingListeners=this._anyOutgoingListeners||[],this._anyOutgoingListeners.push(e),this}prependAnyOutgoing(e){return this._anyOutgoingListeners=this._anyOutgoingListeners||[],this._anyOutgoingListeners.unshift(e),this}offAnyOutgoing(e){if(!this._anyOutgoingListeners)return this;if(e){let t=this._anyOutgoingListeners;for(let i=0;i<t.length;i++)if(e===t[i])return t.splice(i,1),this}else this._anyOutgoingListeners=[];return this}listenersAnyOutgoing(){return this._anyOutgoingListeners||[]}notifyOutgoingListeners(e){if(this._anyOutgoingListeners&&this._anyOutgoingListeners.length){let t=this._anyOutgoingListeners.slice();for(let i of t)i.apply(this,e.data)}}newBroadcastOperator(){let e=Object.assign({},this.flags);return this.flags={},new nh.BroadcastOperator(this.adapter,new Set,new Set([this.id]),e)}};gt.Socket=jn});var Bn=x(Ee=>{"use strict";var oh=Ee&&Ee.__importDefault||function(s){return s&&s.__esModule?s:{default:s}};Object.defineProperty(Ee,"__esModule",{value:!0});Ee.Namespace=Ee.RESERVED_EVENTS=void 0;var wc=In(),ch=zs(),lh=oh(R()),Z=Pn(),bt=(0,lh.default)("socket.io:namespace");Ee.RESERVED_EVENTS=new Set(["connect","connection","new_namespace"]);var Nn=class extends ch.StrictEventEmitter{constructor(e,t){super(),this.sockets=new Map,this._preConnectSockets=new Map,this._fns=[],this._ids=0,this.server=e,this.name=t,this._initAdapter()}_initAdapter(){this.adapter=new(this.server.adapter())(this),Promise.resolve(this.adapter.init()).catch(e=>{bt("error while initializing adapter: %s",e)})}use(e){return this._fns.push(e),this}run(e,t){if(!this._fns.length)return t();let i=this._fns.slice(0);function n(a){i[a](e,r=>{if(r)return t(r);if(!i[a+1])return t();n(a+1)})}n(0)}to(e){return new Z.BroadcastOperator(this.adapter).to(e)}in(e){return new Z.BroadcastOperator(this.adapter).in(e)}except(e){return new Z.BroadcastOperator(this.adapter).except(e)}async _add(e,t,i){var n;bt("adding socket to nsp %s",this.name);let a=await this._createSocket(e,t);if(this._preConnectSockets.set(a.id,a),!((n=this.server.opts.connectionStateRecovery)===null||n===void 0)&&n.skipMiddlewares&&a.recovered&&e.conn.readyState==="open")return this._doConnect(a,i);this.run(a,r=>{process.nextTick(()=>{if(e.conn.readyState!=="open"){bt("next called after client was closed - ignoring socket"),a._cleanup();return}if(r)return bt("middleware error, sending CONNECT_ERROR packet to the client"),a._cleanup(),e.conn.protocol===3?a._error(r.data||r.message):a._error({message:r.message,data:r.data});this._doConnect(a,i)})})}async _createSocket(e,t){let i=t.pid,n=t.offset;if(this.server.opts.connectionStateRecovery&&typeof i=="string"&&typeof n=="string"){let a;try{a=await this.adapter.restoreSession(i,n)}catch(r){bt("error while restoring session: %s",r)}if(a)return bt("connection state recovered for sid %s",a.sid),new wc.Socket(this,e,t,a)}return new wc.Socket(this,e,t)}_doConnect(e,t){this._preConnectSockets.delete(e.id),this.sockets.set(e.id,e),e._onconnect(),t&&t(e),this.emitReserved("connect",e),this.emitReserved("connection",e)}_remove(e){this.sockets.delete(e.id)||this._preConnectSockets.delete(e.id)}emit(e,...t){return new Z.BroadcastOperator(this.adapter).emit(e,...t)}send(...e){return this.emit("message",...e),this}write(...e){return this.emit("message",...e),this}serverSideEmit(e,...t){if(Ee.RESERVED_EVENTS.has(e))throw new Error(`"${String(e)}" is a reserved event name`);return t.unshift(e),this.adapter.serverSideEmit(t),!0}serverSideEmitWithAck(e,...t){return new Promise((i,n)=>{t.push((a,r)=>a?(a.responses=r,n(a)):i(r)),this.serverSideEmit(e,...t)})}_onServerSideEmit(e){super.emitUntyped.apply(this,e)}allSockets(){return new Z.BroadcastOperator(this.adapter).allSockets()}compress(e){return new Z.BroadcastOperator(this.adapter).compress(e)}get volatile(){return new Z.BroadcastOperator(this.adapter).volatile}get local(){return new Z.BroadcastOperator(this.adapter).local}timeout(e){return new Z.BroadcastOperator(this.adapter).timeout(e)}fetchSockets(){return new Z.BroadcastOperator(this.adapter).fetchSockets()}socketsJoin(e){return new Z.BroadcastOperator(this.adapter).socketsJoin(e)}socketsLeave(e){return new Z.BroadcastOperator(this.adapter).socketsLeave(e)}disconnectSockets(e=!1){return new Z.BroadcastOperator(this.adapter).disconnectSockets(e)}};Ee.Namespace=Nn});var Cc=x(Ft=>{"use strict";Object.defineProperty(Ft,"__esModule",{value:!0});Ft.encode=Ln;Ft.decode=ph;Ft.yeast=uh;var Ec="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-_".split(""),Gs=64,kc={},_c=0,Ne=0,Sc;function Ln(s){let e="";do e=Ec[s%Gs]+e,s=Math.floor(s/Gs);while(s>0);return e}function ph(s){let e=0;for(Ne=0;Ne<s.length;Ne++)e=e*Gs+kc[s.charAt(Ne)];return e}function uh(){let s=Ln(+new Date);return s!==Sc?(_c=0,Sc=s):s+"."+Ln(_c++)}for(;Ne<Gs;Ne++)kc[Ec[Ne]]=Ne});var qn=x(yt=>{"use strict";var Mn;Object.defineProperty(yt,"__esModule",{value:!0});yt.SessionAwareAdapter=yt.Adapter=void 0;var dh=require("events"),fh=Cc(),Ks=un(),mh=typeof((Mn=Ks?.Sender)===null||Mn===void 0?void 0:Mn.frame)=="function",Ys=class extends dh.EventEmitter{constructor(e){super(),this.nsp=e,this.rooms=new Map,this.sids=new Map,this.encoder=e.server.encoder}init(){}close(){}serverCount(){return Promise.resolve(1)}addAll(e,t){this.sids.has(e)||this.sids.set(e,new Set);for(let i of t)this.sids.get(e).add(i),this.rooms.has(i)||(this.rooms.set(i,new Set),this.emit("create-room",i)),this.rooms.get(i).has(e)||(this.rooms.get(i).add(e),this.emit("join-room",i,e))}del(e,t){this.sids.has(e)&&this.sids.get(e).delete(t),this._del(t,e)}_del(e,t){let i=this.rooms.get(e);i!=null&&(i.delete(t)&&this.emit("leave-room",e,t),i.size===0&&this.rooms.delete(e)&&this.emit("delete-room",e))}delAll(e){if(this.sids.has(e)){for(let t of this.sids.get(e))this._del(t,e);this.sids.delete(e)}}broadcast(e,t){let i=t.flags||{},n={preEncoded:!0,volatile:i.volatile,compress:i.compress};e.nsp=this.nsp.name;let a=this._encode(e,n);this.apply(t,r=>{typeof r.notifyOutgoingListeners=="function"&&r.notifyOutgoingListeners(e),r.client.writeToEngine(a,n)})}broadcastWithAck(e,t,i,n){let a=t.flags||{},r={preEncoded:!0,volatile:a.volatile,compress:a.compress};e.nsp=this.nsp.name,e.id=this.nsp._ids++;let o=this._encode(e,r),c=0;this.apply(t,l=>{c++,l.acks.set(e.id,n),typeof l.notifyOutgoingListeners=="function"&&l.notifyOutgoingListeners(e),l.client.writeToEngine(o,r)}),i(c)}_encode(e,t){let i=this.encoder.encode(e);if(mh&&i.length===1&&typeof i[0]=="string"){let n=Buffer.from("4"+i[0]);t.wsPreEncodedFrame=Ks.Sender.frame(n,{readOnly:!1,mask:!1,rsv1:!1,opcode:1,fin:!0})}return i}sockets(e){let t=new Set;return this.apply({rooms:e},i=>{t.add(i.id)}),Promise.resolve(t)}socketRooms(e){return this.sids.get(e)}fetchSockets(e){let t=[];return this.apply(e,i=>{t.push(i)}),Promise.resolve(t)}addSockets(e,t){this.apply(e,i=>{i.join(t)})}delSockets(e,t){this.apply(e,i=>{t.forEach(n=>i.leave(n))})}disconnectSockets(e,t){this.apply(e,i=>{i.disconnect(t)})}apply(e,t){let i=e.rooms,n=this.computeExceptSids(e.except);if(i.size){let a=new Set;for(let r of i)if(this.rooms.has(r))for(let o of this.rooms.get(r)){if(a.has(o)||n.has(o))continue;let c=this.nsp.sockets.get(o);c&&(t(c),a.add(o))}}else for(let[a]of this.sids){if(n.has(a))continue;let r=this.nsp.sockets.get(a);r&&t(r)}}computeExceptSids(e){let t=new Set;if(e&&e.size>0)for(let i of e)this.rooms.has(i)&&this.rooms.get(i).forEach(n=>t.add(n));return t}serverSideEmit(e){console.warn("this adapter does not support the serverSideEmit() functionality")}persistSession(e){}restoreSession(e,t){return null}};yt.Adapter=Ys;var Dn=class extends Ys{constructor(e){super(e),this.nsp=e,this.sessions=new Map,this.packets=[],this.maxDisconnectionDuration=e.server.opts.connectionStateRecovery.maxDisconnectionDuration,setInterval(()=>{let i=Date.now()-this.maxDisconnectionDuration;this.sessions.forEach((n,a)=>{n.disconnectedAt<i&&this.sessions.delete(a)});for(let n=this.packets.length-1;n>=0;n--)if(this.packets[n].emittedAt<i){this.packets.splice(0,n+1);break}},60*1e3).unref()}persistSession(e){e.disconnectedAt=Date.now(),this.sessions.set(e.pid,e)}restoreSession(e,t){let i=this.sessions.get(e);if(!i)return null;if(i.disconnectedAt+this.maxDisconnectionDuration<Date.now())return this.sessions.delete(e),null;let a=this.packets.findIndex(o=>o.id===t);if(a===-1)return null;let r=[];for(let o=a+1;o<this.packets.length;o++){let c=this.packets[o];hh(i.rooms,c.opts)&&r.push(c.data)}return Promise.resolve(Object.assign(Object.assign({},i),{missedPackets:r}))}broadcast(e,t){var i;let n=e.type===2,a=e.id===void 0,r=((i=t.flags)===null||i===void 0?void 0:i.volatile)===void 0;if(n&&a&&r){let o=(0,fh.yeast)();e.data.push(o),this.packets.push({id:o,opts:t,data:e.data,emittedAt:Date.now()})}super.broadcast(e,t)}};yt.SessionAwareAdapter=Dn;function hh(s,e){let t=e.rooms.size===0||s.some(n=>e.rooms.has(n)),i=s.every(n=>!e.except.has(n));return t&&i}});var Tc=x(xe=>{"use strict";var xh=xe&&xe.__rest||function(s,e){var t={};for(var i in s)Object.prototype.hasOwnProperty.call(s,i)&&e.indexOf(i)<0&&(t[i]=s[i]);if(s!=null&&typeof Object.getOwnPropertySymbols=="function")for(var n=0,i=Object.getOwnPropertySymbols(s);n<i.length;n++)e.indexOf(i[n])<0&&Object.prototype.propertyIsEnumerable.call(s,i[n])&&(t[i[n]]=s[i[n]]);return t};Object.defineProperty(xe,"__esModule",{value:!0});xe.ClusterAdapterWithHeartbeat=xe.ClusterAdapter=xe.MessageType=void 0;var vh=qn(),gh=R(),bh=require("crypto"),T=(0,gh.debug)("socket.io-adapter"),yh="emitter",Xs=5e3;function _t(){return(0,bh.randomBytes)(8).toString("hex")}var b;(function(s){s[s.INITIAL_HEARTBEAT=1]="INITIAL_HEARTBEAT",s[s.HEARTBEAT=2]="HEARTBEAT",s[s.BROADCAST=3]="BROADCAST",s[s.SOCKETS_JOIN=4]="SOCKETS_JOIN",s[s.SOCKETS_LEAVE=5]="SOCKETS_LEAVE",s[s.DISCONNECT_SOCKETS=6]="DISCONNECT_SOCKETS",s[s.FETCH_SOCKETS=7]="FETCH_SOCKETS",s[s.FETCH_SOCKETS_RESPONSE=8]="FETCH_SOCKETS_RESPONSE",s[s.SERVER_SIDE_EMIT=9]="SERVER_SIDE_EMIT",s[s.SERVER_SIDE_EMIT_RESPONSE=10]="SERVER_SIDE_EMIT_RESPONSE",s[s.BROADCAST_CLIENT_COUNT=11]="BROADCAST_CLIENT_COUNT",s[s.BROADCAST_ACK=12]="BROADCAST_ACK",s[s.ADAPTER_CLOSE=13]="ADAPTER_CLOSE"})(b||(xe.MessageType=b={}));function Ge(s){return{rooms:[...s.rooms],except:[...s.except],flags:s.flags}}function wt(s){return{rooms:new Set(s.rooms),except:new Set(s.except),flags:s.flags}}var Js=class extends vh.Adapter{constructor(e){super(e),this.requests=new Map,this.ackRequests=new Map,this.uid=_t()}onMessage(e,t){if(e.uid===this.uid)return T("[%s] ignore message from self",this.uid);if(e.nsp!==this.nsp.name)return T("[%s] ignore message from another namespace (%s)",this.uid,e.nsp);switch(T("[%s] new event of type %d from %s",this.uid,e.type,e.uid),e.type){case b.BROADCAST:{if(e.data.requestId!==void 0)super.broadcastWithAck(e.data.packet,wt(e.data.opts),n=>{T("[%s] waiting for %d client acknowledgements",this.uid,n),this.publishResponse(e.uid,{type:b.BROADCAST_CLIENT_COUNT,data:{requestId:e.data.requestId,clientCount:n}})},n=>{T("[%s] received acknowledgement with value %j",this.uid,n),this.publishResponse(e.uid,{type:b.BROADCAST_ACK,data:{requestId:e.data.requestId,packet:n}})});else{let n=e.data.packet,a=wt(e.data.opts);this.addOffsetIfNecessary(n,a,t),super.broadcast(n,a)}break}case b.SOCKETS_JOIN:super.addSockets(wt(e.data.opts),e.data.rooms);break;case b.SOCKETS_LEAVE:super.delSockets(wt(e.data.opts),e.data.rooms);break;case b.DISCONNECT_SOCKETS:super.disconnectSockets(wt(e.data.opts),e.data.close);break;case b.FETCH_SOCKETS:{T("[%s] calling fetchSockets with opts %j",this.uid,e.data.opts),super.fetchSockets(wt(e.data.opts)).then(i=>{this.publishResponse(e.uid,{type:b.FETCH_SOCKETS_RESPONSE,data:{requestId:e.data.requestId,sockets:i.map(n=>{let a=n.handshake,{sessionStore:r}=a,o=xh(a,["sessionStore"]);return{id:n.id,handshake:o,rooms:[...n.rooms],data:n.data}})}})});break}case b.SERVER_SIDE_EMIT:{let i=e.data.packet;if(!(e.data.requestId!==void 0)){this.nsp._onServerSideEmit(i);return}let a=!1,r=o=>{a||(a=!0,T("[%s] calling acknowledgement with %j",this.uid,o),this.publishResponse(e.uid,{type:b.SERVER_SIDE_EMIT_RESPONSE,data:{requestId:e.data.requestId,packet:o}}))};this.nsp._onServerSideEmit([...i,r]);break}case b.BROADCAST_CLIENT_COUNT:case b.BROADCAST_ACK:case b.FETCH_SOCKETS_RESPONSE:case b.SERVER_SIDE_EMIT_RESPONSE:this.onResponse(e);break;default:T("[%s] unknown message type: %s",this.uid,e.type)}}onResponse(e){var t,i;let n=e.data.requestId;switch(T("[%s] received response %s to request %s",this.uid,e.type,n),e.type){case b.BROADCAST_CLIENT_COUNT:{(t=this.ackRequests.get(n))===null||t===void 0||t.clientCountCallback(e.data.clientCount);break}case b.BROADCAST_ACK:{(i=this.ackRequests.get(n))===null||i===void 0||i.ack(e.data.packet);break}case b.FETCH_SOCKETS_RESPONSE:{let a=this.requests.get(n);if(!a)return;a.current++,e.data.sockets.forEach(r=>a.responses.push(r)),a.current===a.expected&&(clearTimeout(a.timeout),a.resolve(a.responses),this.requests.delete(n));break}case b.SERVER_SIDE_EMIT_RESPONSE:{let a=this.requests.get(n);if(!a)return;a.current++,a.responses.push(e.data.packet),a.current===a.expected&&(clearTimeout(a.timeout),a.resolve(null,a.responses),this.requests.delete(n));break}default:T("[%s] unknown response type: %s",this.uid,e.type)}}async broadcast(e,t){var i;if(!((i=t.flags)===null||i===void 0?void 0:i.local))try{let a=await this.publishAndReturnOffset({type:b.BROADCAST,data:{packet:e,opts:Ge(t)}});this.addOffsetIfNecessary(e,t,a)}catch(a){return T("[%s] error while broadcasting message: %s",this.uid,a.message)}super.broadcast(e,t)}addOffsetIfNecessary(e,t,i){var n;if(!this.nsp.server.opts.connectionStateRecovery)return;let a=e.type===2,r=e.id===void 0,o=((n=t.flags)===null||n===void 0?void 0:n.volatile)===void 0;a&&r&&o&&e.data.push(i)}broadcastWithAck(e,t,i,n){var a;if(!((a=t?.flags)===null||a===void 0?void 0:a.local)){let o=_t();this.ackRequests.set(o,{clientCountCallback:i,ack:n}),this.publish({type:b.BROADCAST,data:{packet:e,requestId:o,opts:Ge(t)}}),setTimeout(()=>{this.ackRequests.delete(o)},t.flags.timeout)}super.broadcastWithAck(e,t,i,n)}async addSockets(e,t){var i;if(!((i=e.flags)===null||i===void 0?void 0:i.local))try{await this.publishAndReturnOffset({type:b.SOCKETS_JOIN,data:{opts:Ge(e),rooms:t}})}catch(a){T("[%s] error while publishing message: %s",this.uid,a.message)}super.addSockets(e,t)}async delSockets(e,t){var i;if(!((i=e.flags)===null||i===void 0?void 0:i.local))try{await this.publishAndReturnOffset({type:b.SOCKETS_LEAVE,data:{opts:Ge(e),rooms:t}})}catch(a){T("[%s] error while publishing message: %s",this.uid,a.message)}super.delSockets(e,t)}async disconnectSockets(e,t){var i;if(!((i=e.flags)===null||i===void 0?void 0:i.local))try{await this.publishAndReturnOffset({type:b.DISCONNECT_SOCKETS,data:{opts:Ge(e),close:t}})}catch(a){T("[%s] error while publishing message: %s",this.uid,a.message)}super.disconnectSockets(e,t)}async fetchSockets(e){var t;let[i,n]=await Promise.all([super.fetchSockets(e),this.serverCount()]),a=n-1;if(!((t=e.flags)===null||t===void 0)&&t.local||a<=0)return i;let r=_t();return new Promise((o,c)=>{let l=setTimeout(()=>{let u=this.requests.get(r);u&&(c(new Error(`timeout reached: only ${u.current} responses received out of ${u.expected}`)),this.requests.delete(r))},e.flags.timeout||Xs),p={type:b.FETCH_SOCKETS,resolve:o,timeout:l,current:0,expected:a,responses:i};this.requests.set(r,p),this.publish({type:b.FETCH_SOCKETS,data:{opts:Ge(e),requestId:r}})})}async serverSideEmit(e){if(!(typeof e[e.length-1]=="function"))return this.publish({type:b.SERVER_SIDE_EMIT,data:{packet:e}});let i=e.pop(),n=await this.serverCount()-1;if(T('[%s] waiting for %d responses to "serverSideEmit" request',this.uid,n),n<=0)return i(null,[]);let a=_t(),r=setTimeout(()=>{let c=this.requests.get(a);c&&(i(new Error(`timeout reached: only ${c.current} responses received out of ${c.expected}`),c.responses),this.requests.delete(a))},Xs),o={type:b.SERVER_SIDE_EMIT,resolve:i,timeout:r,current:0,expected:n,responses:[]};this.requests.set(a,o),this.publish({type:b.SERVER_SIDE_EMIT,data:{requestId:a,packet:e}})}publish(e){T("[%s] sending message %s",this.uid,e.type),this.publishAndReturnOffset(e).catch(t=>{T("[%s] error while publishing message: %s",this.uid,t)})}publishAndReturnOffset(e){return e.uid=this.uid,e.nsp=this.nsp.name,this.doPublish(e)}publishResponse(e,t){t.uid=this.uid,t.nsp=this.nsp.name,T("[%s] sending response %s to %s",this.uid,t.type,e),this.doPublishResponse(e,t).catch(i=>{T("[%s] error while publishing response: %s",this.uid,i)})}};xe.ClusterAdapter=Js;var Fn=class extends Js{constructor(e,t){super(e),this.nodesMap=new Map,this.customRequests=new Map,this._opts=Object.assign({heartbeatInterval:5e3,heartbeatTimeout:1e4},t),this.cleanupTimer=setInterval(()=>{let i=Date.now();this.nodesMap.forEach((n,a)=>{i-n>this._opts.heartbeatTimeout&&(T("[%s] node %s seems down",this.uid,a),this.removeNode(a))})},1e3)}init(){this.publish({type:b.INITIAL_HEARTBEAT})}scheduleHeartbeat(){this.heartbeatTimer?this.heartbeatTimer.refresh():this.heartbeatTimer=setTimeout(()=>{this.publish({type:b.HEARTBEAT})},this._opts.heartbeatInterval)}close(){this.publish({type:b.ADAPTER_CLOSE}),clearTimeout(this.heartbeatTimer),this.cleanupTimer&&clearInterval(this.cleanupTimer)}onMessage(e,t){if(e.uid===this.uid)return T("[%s] ignore message from self",this.uid);switch(e.uid&&e.uid!==yh&&this.nodesMap.set(e.uid,Date.now()),e.type){case b.INITIAL_HEARTBEAT:this.publish({type:b.HEARTBEAT});break;case b.HEARTBEAT:break;case b.ADAPTER_CLOSE:this.removeNode(e.uid);break;default:super.onMessage(e,t)}}serverCount(){return Promise.resolve(1+this.nodesMap.size)}publish(e){return this.scheduleHeartbeat(),super.publish(e)}async serverSideEmit(e){if(!(typeof e[e.length-1]=="function"))return this.publish({type:b.SERVER_SIDE_EMIT,data:{packet:e}});let i=e.pop(),n=this.nodesMap.size;if(T('[%s] waiting for %d responses to "serverSideEmit" request',this.uid,n),n<=0)return i(null,[]);let a=_t(),r=setTimeout(()=>{let c=this.customRequests.get(a);c&&(i(new Error(`timeout reached: missing ${c.missingUids.size} responses`),c.responses),this.customRequests.delete(a))},Xs),o={type:b.SERVER_SIDE_EMIT,resolve:i,timeout:r,missingUids:new Set([...this.nodesMap.keys()]),responses:[]};this.customRequests.set(a,o),this.publish({type:b.SERVER_SIDE_EMIT,data:{requestId:a,packet:e}})}async fetchSockets(e){var t;let[i,n]=await Promise.all([super.fetchSockets({rooms:e.rooms,except:e.except,flags:{local:!0}}),this.serverCount()]),a=n-1;if(!((t=e.flags)===null||t===void 0)&&t.local||a<=0)return i;let r=_t();return new Promise((o,c)=>{let l=setTimeout(()=>{let u=this.customRequests.get(r);u&&(c(new Error(`timeout reached: missing ${u.missingUids.size} responses`)),this.customRequests.delete(r))},e.flags.timeout||Xs),p={type:b.FETCH_SOCKETS,resolve:o,timeout:l,missingUids:new Set([...this.nodesMap.keys()]),responses:i};this.customRequests.set(r,p),this.publish({type:b.FETCH_SOCKETS,data:{opts:Ge(e),requestId:r}})})}onResponse(e){let t=e.data.requestId;switch(T("[%s] received response %s to request %s",this.uid,e.type,t),e.type){case b.FETCH_SOCKETS_RESPONSE:{let i=this.customRequests.get(t);if(!i)return;e.data.sockets.forEach(n=>i.responses.push(n)),i.missingUids.delete(e.uid),i.missingUids.size===0&&(clearTimeout(i.timeout),i.resolve(i.responses),this.customRequests.delete(t));break}case b.SERVER_SIDE_EMIT_RESPONSE:{let i=this.customRequests.get(t);if(!i)return;i.responses.push(e.data.packet),i.missingUids.delete(e.uid),i.missingUids.size===0&&(clearTimeout(i.timeout),i.resolve(null,i.responses),this.customRequests.delete(t));break}default:super.onResponse(e)}}removeNode(e){this.customRequests.forEach((t,i)=>{t.missingUids.delete(e),t.missingUids.size===0&&(clearTimeout(t.timeout),t.type===b.FETCH_SOCKETS?t.resolve(t.responses):t.type===b.SERVER_SIDE_EMIT&&t.resolve(null,t.responses),this.customRequests.delete(i))}),this.nodesMap.delete(e)}};xe.ClusterAdapterWithHeartbeat=Fn});var Qs=x(ae=>{"use strict";Object.defineProperty(ae,"__esModule",{value:!0});ae.MessageType=ae.ClusterAdapterWithHeartbeat=ae.ClusterAdapter=ae.SessionAwareAdapter=ae.Adapter=void 0;var Oc=qn();Object.defineProperty(ae,"Adapter",{enumerable:!0,get:function(){return Oc.Adapter}});Object.defineProperty(ae,"SessionAwareAdapter",{enumerable:!0,get:function(){return Oc.SessionAwareAdapter}});var Un=Tc();Object.defineProperty(ae,"ClusterAdapter",{enumerable:!0,get:function(){return Un.ClusterAdapter}});Object.defineProperty(ae,"ClusterAdapterWithHeartbeat",{enumerable:!0,get:function(){return Un.ClusterAdapterWithHeartbeat}});Object.defineProperty(ae,"MessageType",{enumerable:!0,get:function(){return Un.MessageType}})});var Pc=x(St=>{"use strict";var wh=St&&St.__importDefault||function(s){return s&&s.__esModule?s:{default:s}};Object.defineProperty(St,"__esModule",{value:!0});St.ParentNamespace=void 0;var Rc=Bn(),_h=Qs(),Sh=wh(R()),Ac=(0,Sh.default)("socket.io:parent-namespace"),Zs=class s extends Rc.Namespace{constructor(e){super(e,"/_"+s.count++),this.children=new Set}_initAdapter(){this.adapter=new Hn(this)}emit(e,...t){return this.children.forEach(i=>{i.emit(e,...t)}),!0}createChild(e){Ac("creating child namespace %s",e);let t=new Rc.Namespace(this.server,e);if(this._fns.forEach(i=>t.use(i)),this.listeners("connect").forEach(i=>t.on("connect",i)),this.listeners("connection").forEach(i=>t.on("connection",i)),this.children.add(t),this.server._opts.cleanupEmptyChildNamespaces){let i=t._remove;t._remove=n=>{i.call(t,n),t.sockets.size===0&&(Ac("closing child namespace %s",e),t.adapter.close(),this.server._nsps.delete(t.name),this.children.delete(t))}}return this.server._nsps.set(e,t),this.server.sockets.emitReserved("new_namespace",t),t}fetchSockets(){throw new Error("fetchSockets() is not supported on parent namespaces")}};St.ParentNamespace=Zs;Zs.count=0;var Hn=class extends _h.Adapter{broadcast(e,t){this.nsp.children.forEach(i=>{i.adapter.broadcast(e,t)})}}});var Mc=x(Ye=>{"use strict";var Eh=Ye&&Ye.__importDefault||function(s){return s&&s.__esModule?s:{default:s}};Object.defineProperty(Ye,"__esModule",{value:!0});Ye.patchAdapter=Ch;Ye.restoreAdapter=Th;Ye.serveFile=Rh;var Ke=Qs(),jc=require("fs"),kh=Eh(R()),ei=(0,kh.default)("socket.io:adapter-uws"),zn="",{addAll:Nc,del:Bc,broadcast:Lc}=Ke.Adapter.prototype;function Ch(s){Ke.Adapter.prototype.addAll=function(e,t){let i=!this.sids.has(e);Nc.call(this,e,t);let n=this.nsp.sockets.get(e)||this.nsp._preConnectSockets.get(e);if(n){if(n.conn.transport.name==="websocket"){Ic(this.nsp.name,n,i,t);return}i&&n.conn.on("upgrade",()=>{let a=this.sids.get(e);a&&Ic(this.nsp.name,n,i,a)})}},Ke.Adapter.prototype.del=function(e,t){Bc.call(this,e,t);let i=this.nsp.sockets.get(e)||this.nsp._preConnectSockets.get(e);if(i&&i.conn.transport.name==="websocket"){let n=i.conn.id,a=i.conn.transport.socket,r=`${this.nsp.name}${zn}${t}`;ei("unsubscribe connection %s from topic %s",n,r),a.unsubscribe(r)}},Ke.Adapter.prototype.broadcast=function(e,t){if(!(t.rooms.size<=1&&t.except.size===0)){Lc.call(this,e,t);return}let n=t.flags||{},a={preEncoded:!0,volatile:n.volatile,compress:n.compress};e.nsp=this.nsp.name;let r=this.encoder.encode(e),o=t.rooms.size===0?this.nsp.name:`${this.nsp.name}${zn}${t.rooms.keys().next().value}`;ei("fast publish to %s",o),r.forEach(c=>{let l=typeof c!="string";s.publish(o,l?c:"4"+c,l)}),this.apply(t,c=>{c.conn.transport.name!=="websocket"&&c.client.writeToEngine(r,a)})}}function Ic(s,e,t,i){let n=e.conn.id,a=e.conn.transport.socket;t&&(ei("subscribe connection %s to topic %s",n,s),a.subscribe(s)),i.forEach(r=>{let o=`${s}${zn}${r}`;ei("subscribe connection %s to topic %s",n,o),a.subscribe(o)})}function Th(){Ke.Adapter.prototype.addAll=Nc,Ke.Adapter.prototype.del=Bc,Ke.Adapter.prototype.broadcast=Lc}var Oh=s=>{let{buffer:e,byteOffset:t,byteLength:i}=s;return e.slice(t,t+i)};function Rh(s,e){let{size:t}=(0,jc.statSync)(e),i=(0,jc.createReadStream)(e),n=()=>!i.destroyed&&i.destroy(),a=o=>{throw n(),o},r=o=>{let c=Oh(o);s.cork(()=>{let l=s.getWriteOffset(),[p,u]=s.tryEnd(c,t);!u&&!p&&(i.pause(),s.onWritable(d=>{let[h,m]=s.tryEnd(c.slice(d-l),t);return!m&&h&&i.resume(),h}))})};s.onAborted(n),i.on("data",r).on("error",a).on("end",n)}});var Dc=x((og,Ah)=>{Ah.exports={name:"socket.io",version:"4.8.3",description:"node.js realtime framework server",keywords:["realtime","framework","websocket","tcp","events","socket","io"],files:["dist/","client-dist/","wrapper.mjs","!**/*.tsbuildinfo"],directories:{doc:"docs/",example:"example/",lib:"lib/",test:"test/"},type:"commonjs",main:"./dist/index.js",exports:{".":{types:"./dist/index.d.ts",import:"./wrapper.mjs",require:"./dist/index.js"},"./package.json":"./package.json"},types:"./dist/index.d.ts",license:"MIT",homepage:"https://github.com/socketio/socket.io/tree/main/packages/socket.io#readme",repository:{type:"git",url:"git+https://github.com/socketio/socket.io.git"},bugs:{url:"https://github.com/socketio/socket.io/issues"},scripts:{compile:"rimraf ./dist && tsc",test:"npm run format:check && npm run compile && npm run test:types && npm run test:unit","test:types":"tsd","test:unit":"nyc mocha --import=tsx --reporter spec --slow 200 --bail --timeout 10000 test/index.ts","format:check":'prettier --check "lib/**/*.ts" "test/**/*.ts"',"format:fix":'prettier --write "lib/**/*.ts" "test/**/*.ts"',prepack:"npm run compile"},dependencies:{accepts:"~1.3.4",base64id:"~2.0.0",cors:"~2.8.5",debug:"~4.4.1","engine.io":"~6.6.0","socket.io-adapter":"~2.5.2","socket.io-parser":"~4.2.4"},contributors:[{name:"Guillermo Rauch",email:"rauchg@gmail.com"},{name:"Arnout Kazemier",email:"info@3rd-eden.com"},{name:"Vladimir Dronnikov",email:"dronnikov@gmail.com"},{name:"Einar Otto Stangvik",email:"einaros@gmail.com"}],engines:{node:">=10.2.0"},tsd:{directory:"test"}}});var Vc=x((q,Ut)=>{"use strict";var Ph=q&&q.__createBinding||(Object.create?(function(s,e,t,i){i===void 0&&(i=t);var n=Object.getOwnPropertyDescriptor(e,t);(!n||("get"in n?!e.__esModule:n.writable||n.configurable))&&(n={enumerable:!0,get:function(){return e[t]}}),Object.defineProperty(s,i,n)}):(function(s,e,t,i){i===void 0&&(i=t),s[i]=e[t]})),jh=q&&q.__setModuleDefault||(Object.create?(function(s,e){Object.defineProperty(s,"default",{enumerable:!0,value:e})}):function(s,e){s.default=e}),Ih=q&&q.__importStar||function(s){if(s&&s.__esModule)return s;var e={};if(s!=null)for(var t in s)t!=="default"&&Object.prototype.hasOwnProperty.call(s,t)&&Ph(e,s,t);return jh(e,s),e},Vn=q&&q.__importDefault||function(s){return s&&s.__esModule?s:{default:s}};Object.defineProperty(q,"__esModule",{value:!0});q.Namespace=q.Socket=q.Server=void 0;var Nh=Vn(require("http")),Bh=require("fs"),Wn=require("zlib"),Lh=ts(),ti=require("stream"),qc=require("path"),Fc=cc(),Mh=vc(),Uc=require("events"),Gn=Bn();Object.defineProperty(q,"Namespace",{enumerable:!0,get:function(){return Gn.Namespace}});var Dh=Pc(),Hc=Qs(),qh=Ih(qt()),Fh=Vn(R()),$c=In();Object.defineProperty(q,"Socket",{enumerable:!0,get:function(){return $c.Socket}});var Uh=zs(),$n=Mc(),Hh=Vn(fn()),H=(0,Fh.default)("socket.io:server"),zc=Dc().version,Wc=/\.map/,Et=class s extends Uh.StrictEventEmitter{constructor(e,t={}){super(),this._nsps=new Map,this.parentNsps=new Map,this.parentNamespacesFromRegExp=new Map,typeof e=="object"&&e instanceof Object&&!e.listen&&(t=e,e=void 0),this.path(t.path||"/socket.io"),this.connectTimeout(t.connectTimeout||45e3),this.serveClient(t.serveClient!==!1),this._parser=t.parser||qh,this.encoder=new this._parser.Encoder,this.opts=t,t.connectionStateRecovery?(t.connectionStateRecovery=Object.assign({maxDisconnectionDuration:120*1e3,skipMiddlewares:!0},t.connectionStateRecovery),this.adapter(t.adapter||Hc.SessionAwareAdapter)):this.adapter(t.adapter||Hc.Adapter),t.cleanupEmptyChildNamespaces=!!t.cleanupEmptyChildNamespaces,this.sockets=this.of("/"),(e||typeof e=="number")&&this.attach(e),this.opts.cors&&(this._corsMiddleware=(0,Hh.default)(this.opts.cors))}get _opts(){return this.opts}serveClient(e){return arguments.length?(this._serveClient=e,this):this._serveClient}_checkNamespace(e,t,i){if(this.parentNsps.size===0)return i(!1);let n=this.parentNsps.keys(),a=()=>{let r=n.next();if(r.done)return i(!1);r.value(e,t,(o,c)=>{if(o||!c)return a();if(this._nsps.has(e))return H("dynamic namespace %s already exists",e),i(this._nsps.get(e));let l=this.parentNsps.get(r.value).createChild(e);H("dynamic namespace %s was created",e),i(l)})};a()}path(e){if(!arguments.length)return this._path;this._path=e.replace(/\/$/,"");let t=this._path.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&");return this.clientPathRegex=new RegExp("^"+t+"/socket\\.io(\\.msgpack|\\.esm)?(\\.min)?\\.js(\\.map)?(?:\\?|$)"),this}connectTimeout(e){return e===void 0?this._connectTimeout:(this._connectTimeout=e,this)}adapter(e){if(!arguments.length)return this._adapter;this._adapter=e;for(let t of this._nsps.values())t._initAdapter();return this}listen(e,t={}){return this.attach(e,t)}attach(e,t={}){if(typeof e=="function"){let i="You are trying to attach socket.io to an express request handler function. Please pass a http.Server instance.";throw new Error(i)}if(Number(e)==e&&(e=Number(e)),typeof e=="number"){H("creating http server and binding to %d",e);let i=e;e=Nh.default.createServer((n,a)=>{a.writeHead(404),a.end()}),e.listen(i)}return Object.assign(t,this.opts),t.path=t.path||this._path,this.initEngine(e,t),this}attachApp(e,t={}){Object.assign(t,this.opts),t.path=t.path||this._path,H("creating uWebSockets.js-based engine with opts %j",t);let i=new Fc.uServer(t);i.attach(e,t),this.bind(i),this._serveClient&&e.get(`${this._path}/*`,(n,a)=>{if(!this.clientPathRegex.test(a.getUrl())){a.setYield(!0);return}let r=a.getUrl().replace(this._path,"").replace(/\?.*$/,"").replace(/^\//,""),o=Wc.test(r),c=o?"map":"source",l='"'+zc+'"',p="W/"+l,u=a.getHeader("if-none-match");if(u&&(l===u||p===u)){H("serve client %s 304",c),n.writeStatus("304 Not Modified"),n.end();return}H("serve client %s",c),n.writeHeader("cache-control","public, max-age=0"),n.writeHeader("content-type","application/"+(o?"json":"javascript")+"; charset=utf-8"),n.writeHeader("etag",l);let d=qc.join(__dirname,"../client-dist/",r);(0,$n.serveFile)(n,d)}),(0,$n.patchAdapter)(e)}initEngine(e,t){H("creating engine.io instance with opts %j",t),this.eio=(0,Fc.attach)(e,t),this._serveClient&&this.attachServe(e),this.httpServer=e,this.bind(this.eio)}attachServe(e){H("attaching client serving req handler");let t=e.listeners("request").slice(0);e.removeAllListeners("request"),e.on("request",(i,n)=>{if(this.clientPathRegex.test(i.url))this._corsMiddleware?this._corsMiddleware(i,n,()=>{this.serve(i,n)}):this.serve(i,n);else for(let a=0;a<t.length;a++)t[a].call(e,i,n)})}serve(e,t){let i=e.url.replace(this._path,"").replace(/\?.*$/,""),n=Wc.test(i),a=n?"map":"source",r='"'+zc+'"',o="W/"+r,c=e.headers["if-none-match"];if(c&&(r===c||o===c)){H("serve client %s 304",a),t.writeHead(304),t.end();return}H("serve client %s",a),t.setHeader("Cache-Control","public, max-age=0"),t.setHeader("Content-Type","application/"+(n?"json":"javascript")+"; charset=utf-8"),t.setHeader("ETag",r),s.sendFile(i,e,t)}static sendFile(e,t,i){let n=(0,Bh.createReadStream)(qc.join(__dirname,"../client-dist/",e)),a=Lh(t).encodings(["br","gzip","deflate"]),r=o=>{o&&i.end()};switch(a){case"br":i.writeHead(200,{"content-encoding":"br"}),(0,ti.pipeline)(n,(0,Wn.createBrotliCompress)(),i,r);break;case"gzip":i.writeHead(200,{"content-encoding":"gzip"}),(0,ti.pipeline)(n,(0,Wn.createGzip)(),i,r);break;case"deflate":i.writeHead(200,{"content-encoding":"deflate"}),(0,ti.pipeline)(n,(0,Wn.createDeflate)(),i,r);break;default:i.writeHead(200),(0,ti.pipeline)(n,i,r)}}bind(e){return this.engine=e,this.engine.on("connection",this.onconnection.bind(this)),this}onconnection(e){H("incoming connection with id %s",e.id);let t=new Mh.Client(this,e);return e.protocol===3&&t.connect("/"),this}of(e,t){if(typeof e=="function"||e instanceof RegExp){let n=new Dh.ParentNamespace(this);return H("initializing parent namespace %s",n.name),typeof e=="function"?this.parentNsps.set(e,n):(this.parentNsps.set((a,r,o)=>o(null,e.test(a)),n),this.parentNamespacesFromRegExp.set(e,n)),t&&n.on("connect",t),n}String(e)[0]!=="/"&&(e="/"+e);let i=this._nsps.get(e);if(!i){for(let[n,a]of this.parentNamespacesFromRegExp)if(n.test(e))return H("attaching namespace %s to parent namespace %s",e,n),a.createChild(e);H("initializing namespace %s",e),i=new Gn.Namespace(this,e),this._nsps.set(e,i),e!=="/"&&this.sockets.emitReserved("new_namespace",i)}return t&&i.on("connect",t),i}async close(e){if(await Promise.allSettled([...this._nsps.values()].map(async t=>{t.sockets.forEach(i=>{i._onclose("server shutting down")}),await t.adapter.close()})),this.engine.close(),(0,$n.restoreAdapter)(),this.httpServer)return new Promise(t=>{this.httpServer.close(i=>{e&&e(i),i&&H("server was not running"),t()})});e&&e()}use(e){return this.sockets.use(e),this}to(e){return this.sockets.to(e)}in(e){return this.sockets.in(e)}except(e){return this.sockets.except(e)}send(...e){return this.sockets.emit("message",...e),this}write(...e){return this.sockets.emit("message",...e),this}serverSideEmit(e,...t){return this.sockets.serverSideEmit(e,...t)}serverSideEmitWithAck(e,...t){return this.sockets.serverSideEmitWithAck(e,...t)}allSockets(){return this.sockets.allSockets()}compress(e){return this.sockets.compress(e)}get volatile(){return this.sockets.volatile}get local(){return this.sockets.local}timeout(e){return this.sockets.timeout(e)}fetchSockets(){return this.sockets.fetchSockets()}socketsJoin(e){return this.sockets.socketsJoin(e)}socketsLeave(e){return this.sockets.socketsLeave(e)}disconnectSockets(e=!1){return this.sockets.disconnectSockets(e)}};q.Server=Et;var zh=Object.keys(Uc.EventEmitter.prototype).filter(function(s){return typeof Uc.EventEmitter.prototype[s]=="function"});zh.forEach(function(s){Et.prototype[s]=function(){return this.sockets[s].apply(this.sockets,arguments)}});Ut.exports=(s,e)=>new Et(s,e);Ut.exports.Server=Et;Ut.exports.Namespace=Gn.Namespace;Ut.exports.Socket=$c.Socket});var Xc={};De(Xc,{TileManager:()=>Kn});var si,kt,ii,Yc,Wh,$h,Kn,Jc=Me(()=>{si=M(require("sharp"),1),kt=M(require("fs"),1),ii=M(require("path"),1),Yc=require("url"),Wh=(0,Yc.fileURLToPath)(__importMetaUrl),$h=ii.default.dirname(Wh),Kn=class{constructor(e){this.robot=e,this.tileSize=100,this.lastTileChecksums=new Map,this.lastTileBuffers=new Map,this.screenWidth=0,this.screenHeight=0,this.tilesPerRow=0,this.tilesPerColumn=0,this.totalTiles=0,this.frameCount=0,this.tempDir=ii.default.join($h,"../../temp"),this.compressionQuality=1,this.changeThreshold=1,this.scaleFactor=.99,this.scaledWidth=0,this.scaledHeight=0,this.isProcessing=!1,this.sharedScreenCache=null,this.lastCaptureTime=0,this.CACHE_TTL=100,kt.default.existsSync(this.tempDir)||kt.default.mkdirSync(this.tempDir,{recursive:!0}),this.initializeScreenDimensions()}initializeScreenDimensions(){try{let{width:e,height:t}=this.robot.getScreenSize();this.screenWidth=e,this.screenHeight=t,this.scaledWidth=Math.floor(e*this.scaleFactor),this.scaledHeight=Math.floor(t*this.scaleFactor),this.tilesPerRow=Math.ceil(this.scaledWidth/this.tileSize),this.tilesPerColumn=Math.ceil(this.scaledHeight/this.tileSize),this.totalTiles=this.tilesPerRow*this.tilesPerColumn;let i=100;if(this.totalTiles>i){let n=Math.ceil(Math.sqrt(this.scaledWidth*this.scaledHeight/i));this.tileSize=Math.max(n,120),this.tilesPerRow=Math.ceil(this.scaledWidth/this.tileSize),this.tilesPerColumn=Math.ceil(this.scaledHeight/this.tileSize),this.totalTiles=this.tilesPerRow*this.tilesPerColumn}console.log(`\u{1F5A5}\uFE0F TileManager: ${e}x${t} -> ${this.totalTiles} tiles`)}catch(e){console.error("Screen dimensions error:",e),this.screenWidth=1920,this.screenHeight=1080,this.scaledWidth=1728,this.scaledHeight=972,this.tileSize=120,this.tilesPerRow=Math.ceil(this.scaledWidth/this.tileSize),this.tilesPerColumn=Math.ceil(this.scaledHeight/this.tileSize),this.totalTiles=this.tilesPerRow*this.tilesPerColumn}}async captureFullScreen(){let e=this.robot.getScreenSize(),t=this.robot.screen.capture(0,0,1,1),i=t.byteWidth/t.bytesPerPixel,n=Math.floor(e.width*i),a=Math.floor(e.height*i),r=this.robot.screen.capture(0,0,n,a),o=Buffer.from(r.image);for(let d=0;d<o.length;d+=4){let h=o[d],m=o[d+2];o[d]=m,o[d+2]=h}let c=r.byteWidth/r.bytesPerPixel,l=o,p=c,u=r.height;if(this.scaleFactor<1){let d=Math.floor(c*this.scaleFactor),h=Math.floor(r.height*this.scaleFactor);l=await(0,si.default)(o,{raw:{width:c,height:r.height,channels:r.bytesPerPixel}}).resize(d,h,{kernel:si.default.kernel.lanczos3,fit:"fill"}).raw().toBuffer(),p=d,u=h,this.scaledWidth=d,this.scaledHeight=h,this.tilesPerRow=Math.ceil(d/this.tileSize),this.tilesPerColumn=Math.ceil(h/this.tileSize),this.totalTiles=this.tilesPerRow*this.tilesPerColumn}return{buffer:l,width:p,height:u,channels:r.bytesPerPixel}}async getSharedScreenCapture(){let e=Date.now();return this.sharedScreenCache&&e-this.lastCaptureTime<this.CACHE_TTL?this.sharedScreenCache:(this.sharedScreenCache=await this.captureFullScreen(),this.lastCaptureTime=e,this.sharedScreenCache)}clearScreenCache(){}async detectChangedTiles(){if(this.isProcessing)return[];this.isProcessing=!0;try{let e=await this.getSharedScreenCapture(),t=[],i=[];if(this.frameCount++,this.lastTileChecksums.size===0){let a=[];for(let o=0;o<this.totalTiles;o++)a.push(this.processTileAsync(e,o,!0));let r=await Promise.all(a);return t.push(...r),t}for(let a=0;a<this.totalTiles;a++){let r=await this.extractTile(e,a),o=this.calculateTileChecksum(r.buffer),c=this.lastTileChecksums.get(a);o!==c&&(i.push(a),this.lastTileChecksums.set(a,o))}if(i.length/this.totalTiles>this.changeThreshold){let a=[];for(let o=0;o<this.totalTiles;o++)a.push(this.processTileAsync(e,o,!0));let r=await Promise.all(a);t.push(...r.map(o=>({...o,fullRefresh:!0})))}else if(i.length>0){let a=i.map(o=>this.processTileAsync(e,o,!1)),r=await Promise.all(a);t.push(...r)}return t}finally{this.isProcessing=!1}}async processTileAsync(e,t){let i=await this.extractTile(e,t),n=this.calculateTileChecksum(i.buffer);this.lastTileChecksums.set(t,n),this.lastTileBuffers.set(t,i.buffer);let a=await this.compressTileImage(i.buffer,i.width,i.height),{row:r,col:o}=this.getTilePosition(t);return{type:"tile-update",tileIndex:t,x:o*this.tileSize,y:r*this.tileSize,width:i.width,height:i.height,imageBase64:a,size:Math.round(a.length*.75/1024),timestamp:Date.now(),frameCount:this.frameCount}}calculateTileChecksum(e){let t=0;for(let i=0;i<e.length;i+=64)t+=e[i]||0,t^=e[i+1]||0,t+=(e[i+2]||0)<<1,t^=(e[i+3]||0)<<2;return t>>>0}getTilePosition(e){return{row:Math.floor(e/this.tilesPerRow),col:e%this.tilesPerRow}}async extractTile(e,t){let{row:i,col:n}=this.getTilePosition(t),a=n*this.tileSize,r=i*this.tileSize,o=Math.min(a+this.tileSize,e.width),c=Math.min(r+this.tileSize,e.height),l=o-a,p=c-r,u=Buffer.alloc(l*p*e.channels);for(let d=0;d<p;d++)for(let h=0;h<l;h++){let m=((r+d)*e.width+(a+h))*e.channels,f=(d*l+h)*e.channels;for(let v=0;v<e.channels;v++)u[f+v]=e.buffer[m+v]}return{buffer:u,width:l,height:p,channels:e.channels,tileIndex:t,x:a,y:r}}async compressTileImage(e,t,i){return`data:image/webp;base64,${(await(0,si.default)(e,{raw:{width:t,height:i,channels:4}}).webp({quality:85,effort:2,smartSubsample:!0}).toBuffer()).toString("base64")}`}async getScreenDimensions(){try{let e=await this.captureFullScreen();this.scaledWidth=e.width,this.scaledHeight=e.height,this.tilesPerRow=Math.ceil(e.width/this.tileSize),this.tilesPerColumn=Math.ceil(e.height/this.tileSize),this.totalTiles=this.tilesPerRow*this.tilesPerColumn}catch(e){console.error("Error getting dimensions:",e)}return{width:this.scaledWidth,height:this.scaledHeight,tileWidth:this.tileSize,tileHeight:this.tileSize,tileCount:this.totalTiles,scaleFactor:this.scaleFactor,originalWidth:this.screenWidth,originalHeight:this.screenHeight}}async compareClientTileHashes(e){if(this.isProcessing)return{tiles:[],currentHashes:[],changedIndices:[]};this.isProcessing=!0;try{let t=await this.getSharedScreenCapture(),i=[],n=[];this.frameCount++;let a=new Map;for(let o=0;o<this.totalTiles;o++){let c=await this.extractTile(t,o),l=this.calculateTileChecksum(c.buffer);a.set(o,l),this.lastTileChecksums.set(o,l)}if(!e||e.length===0){let o=[];for(let l=0;l<this.totalTiles;l++)o.push(this.processTileAsync(t,l,!0));let c=await Promise.all(o);return i.push(...c),{tiles:i,currentHashes:Array.from(a.values())}}for(let o=0;o<this.totalTiles;o++)e[o]!==a.get(o)&&n.push(o);if(n.length/this.totalTiles>this.changeThreshold){let o=[];for(let l=0;l<this.totalTiles;l++)o.push(this.processTileAsync(t,l,!0));let c=await Promise.all(o);i.push(...c.map(l=>({...l,fullRefresh:!0})))}else if(n.length>0){let o=n.map(l=>this.processTileAsync(t,l,!1)),c=await Promise.all(o);i.push(...c)}return{tiles:i,currentHashes:Array.from(a.values()),changedIndices:n}}finally{this.isProcessing=!1}}reset(){this.lastTileChecksums.clear(),this.lastTileBuffers.clear(),this.frameCount=0}cleanup(){try{kt.default.existsSync(this.tempDir)&&kt.default.readdirSync(this.tempDir).forEach(t=>kt.default.unlinkSync(ii.default.join(this.tempDir,t)))}catch(e){console.warn("Cleanup error:",e)}}}});var K,Ht=Me(()=>{K={robotSettings:{mouseDelay:2,keyboardDelay:2},throttling:{mouseThrottle:8,keyThrottle:25,typeTextThrottle:100,maxTextLength:1e3},resourceManagement:{inactiveTimeout:12e4,memoryCheckInterval:6e4,memoryWarningThreshold:1e3,maxTimersPerClient:100,maxChunkTimersPerClient:50},streaming:{autoStreamingInterval:100,chunkSize:32,chunkDelay:5,updateDelayAfterAction:200}}});var Qc={};De(Qc,{ResourceManager:()=>Yn});var Yn,Zc=Me(()=>{Ht();Yn=class{constructor(){this.activeClients=new Map,this.activeTimers=new Map,this.chunkTimers=new Map,this.memoryCheckInterval=null}startResourceMonitoring(){this.memoryCheckInterval=setInterval(()=>{let e=process.memoryUsage(),t=Math.round(e.heapUsed/1024/1024);t>K.resourceManagement.memoryWarningThreshold&&(console.warn(`\u26A0\uFE0F High memory: ${t}MB`),this.cleanupInactiveClients())},K.resourceManagement.memoryCheckInterval)}stopResourceMonitoring(){this.memoryCheckInterval&&(clearInterval(this.memoryCheckInterval),this.memoryCheckInterval=null)}addClient(e,t){this.activeClients.set(e,{...t,lastActivity:Date.now()})}getClient(e){return this.activeClients.get(e)}updateClientActivity(e){let t=this.activeClients.get(e);t&&(t.lastActivity=Date.now())}cleanupInactiveClients(){let e=Date.now(),t=K.resourceManagement.inactiveTimeout;for(let[i,n]of this.activeClients.entries())e-n.lastActivity>t&&(console.log(`\u{1F9F9} Cleaning inactive client: ${i}`),this.cleanupClientResources(i,n),this.activeClients.delete(i))}cleanupClientResources(e,t){try{t?.screenInterval&&(clearInterval(t.screenInterval),t.screenInterval=null);let i=this.activeTimers.get(e);i&&(i.forEach(a=>clearTimeout(a)),this.activeTimers.delete(e));let n=this.chunkTimers.get(e);n&&(n.forEach(a=>clearTimeout(a)),this.chunkTimers.delete(e)),t?.tileManager&&(t.tileManager.cleanup(),t.tileManager.reset())}catch(i){console.error(`Error cleaning up ${e}:`,i.message)}}removeClient(e){let t=this.activeClients.get(e);t&&(this.cleanupClientResources(e,t),this.activeClients.delete(e))}getChunkTimers(e){return this.chunkTimers.has(e)||this.chunkTimers.set(e,new Set),this.chunkTimers.get(e)}cleanupAll(){this.stopResourceMonitoring();for(let[e,t]of this.activeClients.entries())this.cleanupClientResources(e,t);this.activeClients.clear(),this.activeTimers.clear(),this.chunkTimers.clear()}}});var el={};De(el,{ScreenUpdateHelper:()=>Xn});var Xn,tl=Me(()=>{Ht();Xn=class{constructor(e){this.resourceManager=e}async sendTilesInChunks(e,t,i,n=!1){if(!t||t.length===0)return;let a=K.streaming.chunkSize,r=[];for(let c=0;c<t.length;c+=a)r.push(t.slice(c,c+a));let o=this.resourceManager.getChunkTimers(e.id);for(let c=0;c<r.length;c++){let l=r[c],p=c===r.length-1,u=setTimeout(()=>{o.delete(u),e.connected&&e.emit("tiles-data",{tiles:l,timestamp:i,forceRefresh:!1,userAction:n,chunkInfo:{chunkIndex:c,totalChunks:r.length,isLastChunk:p}})},c*K.streaming.chunkDelay);o.add(u)}}}});var sl={};De(sl,{MouseHandler:()=>Jn});var Jn,il=Me(()=>{Ht();Jn=class{constructor(e,t){this.robot=e,this.resourceManager=t,this.lastMouseMove=0}setupMouseHandlers(e,t){let i=this.robot;e.on("mouse-move",t(n=>{let a=Date.now();if(!(a-this.lastMouseMove<K.throttling.mouseThrottle)){this.lastMouseMove=a;try{i.moveMouse(n.x,n.y),this.resourceManager.updateClientActivity(e.id)}catch(r){console.error("Mouse move error:",r.message)}}})),e.on("mouse-click",t(async n=>{try{if(!this.resourceManager.getClient(e.id))return;let r=i.getScreenSize(),o=Math.round(n.x/100*r.width),c=Math.round(n.y/100*r.height),l=Math.max(0,Math.min(r.width-1,o)),p=Math.max(0,Math.min(r.height-1,c));i.moveMouse(l,p),i.mouseClick(n.button||"left",n.double||!1),this.resourceManager.updateClientActivity(e.id)}catch(a){console.error("Mouse click error:",a.message)}})),e.on("mouse-press",t(async n=>{try{if(!this.resourceManager.getClient(e.id))return;let r=i.getScreenSize(),o=Math.round(n.x/100*r.width),c=Math.round(n.y/100*r.height),l=Math.max(0,Math.min(r.width-1,o)),p=Math.max(0,Math.min(r.height-1,c));i.moveMouse(l,p),i.mouseToggle("down",n.button||"left"),this.resourceManager.updateClientActivity(e.id)}catch(a){console.error("Mouse press error:",a.message)}})),e.on("mouse-release",t(async n=>{try{if(!this.resourceManager.getClient(e.id))return;let r=i.getScreenSize(),o=Math.round(n.x/100*r.width),c=Math.round(n.y/100*r.height),l=Math.max(0,Math.min(r.width-1,o)),p=Math.max(0,Math.min(r.height-1,c));i.moveMouse(l,p),i.mouseToggle("up",n.button||"left"),this.resourceManager.updateClientActivity(e.id)}catch(a){console.error("Mouse release error:",a.message)}})),e.on("scroll",t(async n=>{try{let{direction:a,amount:r=60,horizontal:o=!1}=n;if(!this.resourceManager.getClient(e.id))return;let l=0,p=0;o||a==="left"||a==="right"?l=a==="right"?r:-r:p=a==="down"?-r:r,i.scrollMouse(l,p),this.resourceManager.updateClientActivity(e.id)}catch(a){console.error("Scroll error:",a.message)}})),e.on("mouse-drag-select",t(n=>{try{let{startX:a,startY:r,endX:o,endY:c}=n,l=i.getScreenSize(),p=Math.round(a/100*l.width),u=Math.round(r/100*l.height),d=Math.round(o/100*l.width),h=Math.round(c/100*l.height),m=Math.max(0,Math.min(l.width-1,p)),f=Math.max(0,Math.min(l.height-1,u)),v=Math.max(0,Math.min(l.width-1,d)),y=Math.max(0,Math.min(l.height-1,h));i.moveMouse(m,f),i.mouseToggle("down","left"),i.dragMouse(v,y),i.mouseToggle("up","left"),this.resourceManager.updateClientActivity(e.id)}catch(a){console.error("Drag selection error:",a.message)}}))}}});var nl={};De(nl,{KeyboardHandler:()=>Qn});var Qn,al=Me(()=>{Ht();Qn=class{constructor(e,t){this.robot=e,this.resourceManager=t,this.lastKeyPress=0,this.lastTypeText=0}setupKeyboardHandlers(e,t){let i=this.robot;e.on("key-press",t(n=>{let a=Date.now();if(!(a-this.lastKeyPress<K.throttling.keyThrottle)){this.lastKeyPress=a;try{if(!n.key||typeof n.key!="string")return;let r=n.key;if(r.length===1){i.keyTap(r,n.modifier||[]);for(let o of n.modifier||[])i.keyToggle(o,"up")}else switch(r.toLowerCase()){case"enter":case"return":i.keyTap("enter");break;case"space":i.keyTap(" ");break;case"backspace":i.keyTap("backspace");break;case"tab":i.keyTap("tab");break;case"escape":i.keyTap("escape");break;default:i.keyTap(r,n.modifier||[])}this.resourceManager.updateClientActivity(e.id)}catch(r){console.error("Key press error:",r.message)}}})),e.on("type-text",t(n=>{let a=Date.now();if(!(a-this.lastTypeText<K.throttling.typeTextThrottle)){this.lastTypeText=a;try{if(!n.text||typeof n.text!="string")return;let r=n.text;r.length>K.throttling.maxTextLength&&(r=r.substring(0,K.throttling.maxTextLength));let o=r.replace(/[\x00-\x08\x0B\x0C\x0E-\x1F\x7F]/g,"");setTimeout(()=>{try{i.typeString(o),this.resourceManager.updateClientActivity(e.id);let c=this.resourceManager.getClient(e.id);c?.tileManager&&c.tileManager.clearScreenCache()}catch(c){console.error("Robot typeString error:",c.message)}},10)}catch(r){console.error("Type text error:",r.message)}}}))}}});var rl={};De(rl,{ScreenHandler:()=>Zn});var Zn,ol=Me(()=>{Zn=class{constructor(e,t){this.resourceManager=e,this.screenUpdateHelper=t}setupScreenHandlers(e,t){e.on("request-screen",t(async()=>{let i=this.resourceManager.getClient(e.id);if(i)try{let n=await i.tileManager.detectChangedTiles();n.length>0&&e.emit("tiles-data",{tiles:n,timestamp:Date.now()}),this.resourceManager.updateClientActivity(e.id)}catch(n){console.error("Tile capture error:",n),e.emit("screen-error",{error:n.message})}})),e.on("request-screen-with-hashes",t(async i=>{let n=this.resourceManager.getClient(e.id);if(n)try{let a=i.tileHashes||[],r=await n.tileManager.compareClientTileHashes(a);r?.tiles?.length>0?e.emit("tiles-data",{tiles:r.tiles,timestamp:Date.now(),currentHashes:r.currentHashes,changedIndices:r.changedIndices}):e.emit("tiles-data",{tiles:[],timestamp:Date.now(),currentHashes:r.currentHashes,changedIndices:[]}),this.resourceManager.updateClientActivity(e.id)}catch(a){console.error("Tile capture with hashes error:",a),e.emit("screen-error",{error:a.message})}})),e.on("start-streaming",t(()=>{let i=this.resourceManager.getClient(e.id);i&&(i.screenInterval&&(clearInterval(i.screenInterval),i.screenInterval=null),console.log("\u{1F680} Remote streaming started"),i.screenInterval=setInterval(async()=>{try{let n=await i.tileManager.detectChangedTiles();if(n.length>0){let a=Date.now();await this.screenUpdateHelper.sendTilesInChunks(e,n,a,!1)}}catch(n){console.error("Auto streaming error:",n)}},400))})),e.on("stop-streaming",()=>{let i=this.resourceManager.getClient(e.id);i&&(i.screenInterval&&(clearInterval(i.screenInterval),i.screenInterval=null),console.log("\u23F9\uFE0F Remote streaming stopped"))}),e.on("get-screen-dimensions",t(async()=>{let i=this.resourceManager.getClient(e.id);if(i)try{let n=await i.tileManager.getScreenDimensions();e.emit("screen-dimensions",n)}catch(n){console.error("Get dimensions error:",n),e.emit("screen-error",{error:n.message})}}))}}});var Nl=x((Ig,sa)=>{"use strict";var rx=Object.prototype.hasOwnProperty,z="~";function Vt(){}Object.create&&(Vt.prototype=Object.create(null),new Vt().__proto__||(z=!1));function ox(s,e,t){this.fn=s,this.context=e,this.once=t||!1}function Il(s,e,t,i,n){if(typeof t!="function")throw new TypeError("The listener must be a function");var a=new ox(t,i||s,n),r=z?z+e:e;return s._events[r]?s._events[r].fn?s._events[r]=[s._events[r],a]:s._events[r].push(a):(s._events[r]=a,s._eventsCount++),s}function li(s,e){--s._eventsCount===0?s._events=new Vt:delete s._events[e]}function F(){this._events=new Vt,this._eventsCount=0}F.prototype.eventNames=function(){var e=[],t,i;if(this._eventsCount===0)return e;for(i in t=this._events)rx.call(t,i)&&e.push(z?i.slice(1):i);return Object.getOwnPropertySymbols?e.concat(Object.getOwnPropertySymbols(t)):e};F.prototype.listeners=function(e){var t=z?z+e:e,i=this._events[t];if(!i)return[];if(i.fn)return[i.fn];for(var n=0,a=i.length,r=new Array(a);n<a;n++)r[n]=i[n].fn;return r};F.prototype.listenerCount=function(e){var t=z?z+e:e,i=this._events[t];return i?i.fn?1:i.length:0};F.prototype.emit=function(e,t,i,n,a,r){var o=z?z+e:e;if(!this._events[o])return!1;var c=this._events[o],l=arguments.length,p,u;if(c.fn){switch(c.once&&this.removeListener(e,c.fn,void 0,!0),l){case 1:return c.fn.call(c.context),!0;case 2:return c.fn.call(c.context,t),!0;case 3:return c.fn.call(c.context,t,i),!0;case 4:return c.fn.call(c.context,t,i,n),!0;case 5:return c.fn.call(c.context,t,i,n,a),!0;case 6:return c.fn.call(c.context,t,i,n,a,r),!0}for(u=1,p=new Array(l-1);u<l;u++)p[u-1]=arguments[u];c.fn.apply(c.context,p)}else{var d=c.length,h;for(u=0;u<d;u++)switch(c[u].once&&this.removeListener(e,c[u].fn,void 0,!0),l){case 1:c[u].fn.call(c[u].context);break;case 2:c[u].fn.call(c[u].context,t);break;case 3:c[u].fn.call(c[u].context,t,i);break;case 4:c[u].fn.call(c[u].context,t,i,n);break;default:if(!p)for(h=1,p=new Array(l-1);h<l;h++)p[h-1]=arguments[h];c[u].fn.apply(c[u].context,p)}}return!0};F.prototype.on=function(e,t,i){return Il(this,e,t,i,!1)};F.prototype.once=function(e,t,i){return Il(this,e,t,i,!0)};F.prototype.removeListener=function(e,t,i,n){var a=z?z+e:e;if(!this._events[a])return this;if(!t)return li(this,a),this;var r=this._events[a];if(r.fn)r.fn===t&&(!n||r.once)&&(!i||r.context===i)&&li(this,a);else{for(var o=0,c=[],l=r.length;o<l;o++)(r[o].fn!==t||n&&!r[o].once||i&&r[o].context!==i)&&c.push(r[o]);c.length?this._events[a]=c.length===1?c[0]:c:li(this,a)}return this};F.prototype.removeAllListeners=function(e){var t;return e?(t=z?z+e:e,this._events[t]&&li(this,t)):(this._events=new Vt,this._eventsCount=0),this};F.prototype.off=F.prototype.removeListener;F.prototype.addListener=F.prototype.on;F.prefixed=z;F.EventEmitter=F;typeof sa<"u"&&(sa.exports=F)});var Ll=x((Ng,Bl)=>{"use strict";Bl.exports=function(e,t){if(t=t.split(":")[0],e=+e,!e)return!1;switch(t){case"http":case"ws":return e!==80;case"https":case"wss":return e!==443;case"ftp":return e!==21;case"gopher":return e!==70;case"file":return!1}return e!==0}});var pi=x(Dl=>{var Ce=Dl,cx=require("url"),Ml=require("util")._extend,lx=Ll(),px=/(^|,)\s*upgrade\s*($|,)/i,ia=/^https|wss/;Ce.isSSL=ia;Ce.setupOutgoing=function(s,e,t,i){s.port=e[i||"target"].port||(ia.test(e[i||"target"].protocol)?443:80),["host","hostname","socketPath","pfx","key","passphrase","cert","ca","ciphers","secureProtocol"].forEach(function(o){s[o]=e[i||"target"][o]}),s.method=e.method||t.method,s.headers=Ml({},t.headers),e.headers&&Ml(s.headers,e.headers),e.auth&&(s.auth=e.auth),e.ca&&(s.ca=e.ca),ia.test(e[i||"target"].protocol)&&(s.rejectUnauthorized=typeof e.secure>"u"?!0:e.secure),s.agent=e.agent||!1,s.localAddress=e.localAddress,s.agent||(s.headers=s.headers||{},(typeof s.headers.connection!="string"||!px.test(s.headers.connection))&&(s.headers.connection="close"));var n=e[i||"target"],a=n&&e.prependPath!==!1&&n.path||"",r=e.toProxy?t.url:cx.parse(t.url).path||"";return r=e.ignorePath?"":r,s.path=Ce.urlJoin(a,r),e.changeOrigin&&(s.headers.host=lx(s.port,e[i||"target"].protocol)&&!ux(s.host)?s.host+":"+s.port:s.host),s};Ce.setupSocket=function(s){return s.setTimeout(0),s.setNoDelay(!0),s.setKeepAlive(!0,0),s};Ce.getPort=function(s){var e=s.headers.host?s.headers.host.match(/:(\d+)/):"";return e?e[1]:Ce.hasEncryptedConnection(s)?"443":"80"};Ce.hasEncryptedConnection=function(s){return!!(s.connection.encrypted||s.connection.pair)};Ce.urlJoin=function(){var s=Array.prototype.slice.call(arguments),e=s.length-1,t=s[e],i=t.split("?"),n;return s[e]=i.shift(),n=[s.filter(Boolean).join("/").replace(/\/+/g,"/").replace("http:/","http://").replace("https:/","https://")],n.push.apply(n,i),n.join("?")};Ce.rewriteCookieProperty=function s(e,t,i){return Array.isArray(e)?e.map(function(n){return s(n,t,i)}):e.replace(new RegExp("(;\\s*"+i+"=)([^;]+)","i"),function(n,a,r){var o;if(r in t)o=t[r];else if("*"in t)o=t["*"];else return n;return o?a+o:""})};function ux(s){return!!~s.indexOf(":")}});var Hl=x((Lg,Ul)=>{var ql=require("url"),Fl=pi(),dx=/^201|30(1|2|7|8)$/;Ul.exports={removeChunked:function(e,t,i){e.httpVersion==="1.0"&&delete i.headers["transfer-encoding"]},setConnection:function(e,t,i){e.httpVersion==="1.0"?i.headers.connection=e.headers.connection||"close":e.httpVersion!=="2.0"&&!i.headers.connection&&(i.headers.connection=e.headers.connection||"keep-alive")},setRedirectHostRewrite:function(e,t,i,n){if((n.hostRewrite||n.autoRewrite||n.protocolRewrite)&&i.headers.location&&dx.test(i.statusCode)){var a=ql.parse(n.target),r=ql.parse(i.headers.location);if(a.host!=r.host)return;n.hostRewrite?r.host=n.hostRewrite:n.autoRewrite&&(r.host=e.headers.host),n.protocolRewrite&&(r.protocol=n.protocolRewrite),i.headers.location=r.format()}},writeHeaders:function(e,t,i,n){var a=n.cookieDomainRewrite,r=n.cookiePathRewrite,o=n.preserveHeaderKeyCase,c,l=function(d,h){h!=null&&(a&&d.toLowerCase()==="set-cookie"&&(h=Fl.rewriteCookieProperty(h,a,"domain")),r&&d.toLowerCase()==="set-cookie"&&(h=Fl.rewriteCookieProperty(h,r,"path")),t.setHeader(String(d).trim(),h))};if(typeof a=="string"&&(a={"*":a}),typeof r=="string"&&(r={"*":r}),o&&i.rawHeaders!=null){c={};for(var p=0;p<i.rawHeaders.length;p+=2){var u=i.rawHeaders[p];c[u.toLowerCase()]=u}}Object.keys(i.headers).forEach(function(d){var h=i.headers[d];o&&c&&(d=c[d]||d),l(d,h)})},writeStatusCode:function(e,t,i){i.statusMessage?(t.statusCode=i.statusCode,t.statusMessage=i.statusMessage):t.statusCode=i.statusCode}}});var Wl=x((Mg,zl)=>{var Gt;zl.exports=function(){if(!Gt){try{Gt=R()("follow-redirects")}catch{}typeof Gt!="function"&&(Gt=function(){})}Gt.apply(null,arguments)}});var Yl=x((Dg,ha)=>{var Yt=require("url"),Kt=Yt.URL,fx=require("http"),mx=require("https"),ca=require("stream").Writable,la=require("assert"),$l=Wl();(function(){var e=typeof process<"u",t=typeof window<"u"&&typeof document<"u",i=Je(Error.captureStackTrace);!e&&(t||!i)&&console.warn("The follow-redirects package should be excluded from browser builds.")})();var pa=!1;try{la(new Kt(""))}catch(s){pa=s.code==="ERR_INVALID_URL"}var hx=["auth","host","hostname","href","path","pathname","port","protocol","query","search","hash"],ua=["abort","aborted","connect","error","socket","timeout"],da=Object.create(null);ua.forEach(function(s){da[s]=function(e,t,i){this._redirectable.emit(s,e,t,i)}});var aa=Xt("ERR_INVALID_URL","Invalid URL",TypeError),ra=Xt("ERR_FR_REDIRECTION_FAILURE","Redirected request failed"),xx=Xt("ERR_FR_TOO_MANY_REDIRECTS","Maximum number of redirects exceeded",ra),vx=Xt("ERR_FR_MAX_BODY_LENGTH_EXCEEDED","Request body larger than maxBodyLength limit"),gx=Xt("ERR_STREAM_WRITE_AFTER_END","write after end"),bx=ca.prototype.destroy||Gl;function Y(s,e){ca.call(this),this._sanitizeOptions(s),this._options=s,this._ended=!1,this._ending=!1,this._redirectCount=0,this._redirects=[],this._requestBodyLength=0,this._requestBodyBuffers=[],e&&this.on("response",e);var t=this;this._onNativeResponse=function(i){try{t._processResponse(i)}catch(n){t.emit("error",n instanceof ra?n:new ra({cause:n}))}},this._performRequest()}Y.prototype=Object.create(ca.prototype);Y.prototype.abort=function(){ma(this._currentRequest),this._currentRequest.abort(),this.emit("abort")};Y.prototype.destroy=function(s){return ma(this._currentRequest,s),bx.call(this,s),this};Y.prototype.write=function(s,e,t){if(this._ending)throw new gx;if(!Xe(s)&&!_x(s))throw new TypeError("data should be a string, Buffer or Uint8Array");if(Je(e)&&(t=e,e=null),s.length===0){t&&t();return}this._requestBodyLength+s.length<=this._options.maxBodyLength?(this._requestBodyLength+=s.length,this._requestBodyBuffers.push({data:s,encoding:e}),this._currentRequest.write(s,e,t)):(this.emit("error",new vx),this.abort())};Y.prototype.end=function(s,e,t){if(Je(s)?(t=s,s=e=null):Je(e)&&(t=e,e=null),!s)this._ended=this._ending=!0,this._currentRequest.end(null,null,t);else{var i=this,n=this._currentRequest;this.write(s,e,function(){i._ended=!0,n.end(null,null,t)}),this._ending=!0}};Y.prototype.setHeader=function(s,e){this._options.headers[s]=e,this._currentRequest.setHeader(s,e)};Y.prototype.removeHeader=function(s){delete this._options.headers[s],this._currentRequest.removeHeader(s)};Y.prototype.setTimeout=function(s,e){var t=this;function i(r){r.setTimeout(s),r.removeListener("timeout",r.destroy),r.addListener("timeout",r.destroy)}function n(r){t._timeout&&clearTimeout(t._timeout),t._timeout=setTimeout(function(){t.emit("timeout"),a()},s),i(r)}function a(){t._timeout&&(clearTimeout(t._timeout),t._timeout=null),t.removeListener("abort",a),t.removeListener("error",a),t.removeListener("response",a),t.removeListener("close",a),e&&t.removeListener("timeout",e),t.socket||t._currentRequest.removeListener("socket",n)}return e&&this.on("timeout",e),this.socket?n(this.socket):this._currentRequest.once("socket",n),this.on("socket",i),this.on("abort",a),this.on("error",a),this.on("response",a),this.on("close",a),this};["flushHeaders","getHeader","setNoDelay","setSocketKeepAlive"].forEach(function(s){Y.prototype[s]=function(e,t){return this._currentRequest[s](e,t)}});["aborted","connection","socket"].forEach(function(s){Object.defineProperty(Y.prototype,s,{get:function(){return this._currentRequest[s]}})});Y.prototype._sanitizeOptions=function(s){if(s.headers||(s.headers={}),s.host&&(s.hostname||(s.hostname=s.host),delete s.host),!s.pathname&&s.path){var e=s.path.indexOf("?");e<0?s.pathname=s.path:(s.pathname=s.path.substring(0,e),s.search=s.path.substring(e))}};Y.prototype._performRequest=function(){var s=this._options.protocol,e=this._options.nativeProtocols[s];if(!e)throw new TypeError("Unsupported protocol "+s);if(this._options.agents){var t=s.slice(0,-1);this._options.agent=this._options.agents[t]}var i=this._currentRequest=e.request(this._options,this._onNativeResponse);i._redirectable=this;for(var n of ua)i.on(n,da[n]);if(this._currentUrl=/^\//.test(this._options.path)?Yt.format(this._options):this._options.path,this._isRedirect){var a=0,r=this,o=this._requestBodyBuffers;(function c(l){if(i===r._currentRequest)if(l)r.emit("error",l);else if(a<o.length){var p=o[a++];i.finished||i.write(p.data,p.encoding,c)}else r._ended&&i.end()})()}};Y.prototype._processResponse=function(s){var e=s.statusCode;this._options.trackRedirects&&this._redirects.push({url:this._currentUrl,headers:s.headers,statusCode:e});var t=s.headers.location;if(!t||this._options.followRedirects===!1||e<300||e>=400){s.responseUrl=this._currentUrl,s.redirects=this._redirects,this.emit("response",s),this._requestBodyBuffers=[];return}if(ma(this._currentRequest),s.destroy(),++this._redirectCount>this._options.maxRedirects)throw new xx;var i,n=this._options.beforeRedirect;n&&(i=Object.assign({Host:s.req.getHeader("host")},this._options.headers));var a=this._options.method;((e===301||e===302)&&this._options.method==="POST"||e===303&&!/^(?:GET|HEAD)$/.test(this._options.method))&&(this._options.method="GET",this._requestBodyBuffers=[],na(/^content-/i,this._options.headers));var r=na(/^host$/i,this._options.headers),o=fa(this._currentUrl),c=r||o.host,l=/^\w+:/.test(t)?this._currentUrl:Yt.format(Object.assign(o,{host:c})),p=yx(t,l);if($l("redirecting to",p.href),this._isRedirect=!0,oa(p,this._options),(p.protocol!==o.protocol&&p.protocol!=="https:"||p.host!==c&&!wx(p.host,c))&&na(/^(?:(?:proxy-)?authorization|cookie)$/i,this._options.headers),Je(n)){var u={headers:s.headers,statusCode:e},d={url:l,method:a,headers:i};n(this._options,u,d),this._sanitizeOptions(this._options)}this._performRequest()};function Vl(s){var e={maxRedirects:21,maxBodyLength:10485760},t={};return Object.keys(s).forEach(function(i){var n=i+":",a=t[n]=s[i],r=e[i]=Object.create(a);function o(l,p,u){return Sx(l)?l=oa(l):Xe(l)?l=oa(fa(l)):(u=p,p=Kl(l),l={protocol:n}),Je(p)&&(u=p,p=null),p=Object.assign({maxRedirects:e.maxRedirects,maxBodyLength:e.maxBodyLength},l,p),p.nativeProtocols=t,!Xe(p.host)&&!Xe(p.hostname)&&(p.hostname="::1"),la.equal(p.protocol,n,"protocol mismatch"),$l("options",p),new Y(p,u)}function c(l,p,u){var d=r.request(l,p,u);return d.end(),d}Object.defineProperties(r,{request:{value:o,configurable:!0,enumerable:!0,writable:!0},get:{value:c,configurable:!0,enumerable:!0,writable:!0}})}),e}function Gl(){}function fa(s){var e;if(pa)e=new Kt(s);else if(e=Kl(Yt.parse(s)),!Xe(e.protocol))throw new aa({input:s});return e}function yx(s,e){return pa?new Kt(s,e):fa(Yt.resolve(e,s))}function Kl(s){if(/^\[/.test(s.hostname)&&!/^\[[:0-9a-f]+\]$/i.test(s.hostname))throw new aa({input:s.href||s});if(/^\[/.test(s.host)&&!/^\[[:0-9a-f]+\](:\d+)?$/i.test(s.host))throw new aa({input:s.href||s});return s}function oa(s,e){var t=e||{};for(var i of hx)t[i]=s[i];return t.hostname.startsWith("[")&&(t.hostname=t.hostname.slice(1,-1)),t.port!==""&&(t.port=Number(t.port)),t.path=t.search?t.pathname+t.search:t.pathname,t}function na(s,e){var t;for(var i in e)s.test(i)&&(t=e[i],delete e[i]);return t===null||typeof t>"u"?void 0:String(t).trim()}function Xt(s,e,t){function i(n){Je(Error.captureStackTrace)&&Error.captureStackTrace(this,this.constructor),Object.assign(this,n||{}),this.code=s,this.message=this.cause?e+": "+this.cause.message:e}return i.prototype=new(t||Error),Object.defineProperties(i.prototype,{constructor:{value:i,enumerable:!1},name:{value:"Error ["+s+"]",enumerable:!1}}),i}function ma(s,e){for(var t of ua)s.removeListener(t,da[t]);s.on("error",Gl),s.destroy(e)}function wx(s,e){la(Xe(s)&&Xe(e));var t=s.length-e.length-1;return t>0&&s[t]==="."&&s.endsWith(e)}function Xe(s){return typeof s=="string"||s instanceof String}function Je(s){return typeof s=="function"}function _x(s){return typeof s=="object"&&"length"in s}function Sx(s){return Kt&&s instanceof Kt}ha.exports=Vl({http:fx,https:mx});ha.exports.wrap=Vl});var Jl=x((qg,Xl)=>{var Ex=require("http"),kx=require("https"),Jt=Hl(),ui=pi(),Cx=Yl();Jt=Object.keys(Jt).map(function(s){return Jt[s]});var Tx={http:Ex,https:kx};Xl.exports={deleteLength:function(e,t,i){(e.method==="DELETE"||e.method==="OPTIONS")&&!e.headers["content-length"]&&(e.headers["content-length"]="0",delete e.headers["transfer-encoding"])},timeout:function(e,t,i){i.timeout&&e.socket.setTimeout(i.timeout)},XHeaders:function(e,t,i){if(i.xfwd){var n=e.isSpdy||ui.hasEncryptedConnection(e),a={for:e.connection.remoteAddress||e.socket.remoteAddress,port:ui.getPort(e),proto:n?"https":"http"};["for","port","proto"].forEach(function(r){e.headers["x-forwarded-"+r]=(e.headers["x-forwarded-"+r]||"")+(e.headers["x-forwarded-"+r]?",":"")+a[r]}),e.headers["x-forwarded-host"]=e.headers["x-forwarded-host"]||e.headers.host||""}},stream:function(e,t,i,n,a,r){a.emit("start",e,t,i.target||i.forward);var o=i.followRedirects?Cx:Tx,c=o.http,l=o.https;if(i.forward){var p=(i.forward.protocol==="https:"?l:c).request(ui.setupOutgoing(i.ssl||{},i,e,"forward")),u=m(p,i.forward);if(e.on("error",u),p.on("error",u),(i.buffer||e).pipe(p),!i.target)return t.end()}var d=(i.target.protocol==="https:"?l:c).request(ui.setupOutgoing(i.ssl||{},i,e));d.on("socket",function(f){a&&!d.getHeader("expect")&&a.emit("proxyReq",d,e,t,i)}),i.proxyTimeout&&d.setTimeout(i.proxyTimeout,function(){d.abort()}),e.on("aborted",function(){d.abort()});var h=m(d,i.target);e.on("error",h),d.on("error",h);function m(f,v){return function(g){if(e.socket.destroyed&&g.code==="ECONNRESET")return a.emit("econnreset",g,e,t,v),f.abort();r?r(g,e,t,v):a.emit("error",g,e,t,v)}}(i.buffer||e).pipe(d),d.on("response",function(f){if(a&&a.emit("proxyRes",f,e,t),!t.headersSent&&!i.selfHandleResponse)for(var v=0;v<Jt.length&&!Jt[v](e,t,f,i);v++);t.finished?a&&a.emit("end",e,t,f):(f.on("end",function(){a&&a.emit("end",e,t,f)}),i.selfHandleResponse||f.pipe(t))})}}});var Zl=x((Fg,Ql)=>{var Ox=require("http"),Rx=require("https"),Ct=pi();Ql.exports={checkMethodAndHeader:function(e,t){if(e.method!=="GET"||!e.headers.upgrade||e.headers.upgrade.toLowerCase()!=="websocket")return t.destroy(),!0},XHeaders:function(e,t,i){if(i.xfwd){var n={for:e.connection.remoteAddress||e.socket.remoteAddress,port:Ct.getPort(e),proto:Ct.hasEncryptedConnection(e)?"wss":"ws"};["for","port","proto"].forEach(function(a){e.headers["x-forwarded-"+a]=(e.headers["x-forwarded-"+a]||"")+(e.headers["x-forwarded-"+a]?",":"")+n[a]})}},stream:function(e,t,i,n,a,r){var o=function(p,u){return Object.keys(u).reduce(function(d,h){var m=u[h];if(!Array.isArray(m))return d.push(h+": "+m),d;for(var f=0;f<m.length;f++)d.push(h+": "+m[f]);return d},[p]).join(`\r
18
+ `+i)}s.destroy()}var Dt=[0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1];function bm(s){if(s+="",s.length<1)return!1;if(!Dt[s.charCodeAt(0)])return w('invalid header, index 0, char "%s"',s.charCodeAt(0)),!0;if(s.length<2)return!1;if(!Dt[s.charCodeAt(1)])return w('invalid header, index 1, char "%s"',s.charCodeAt(1)),!0;if(s.length<3)return!1;if(!Dt[s.charCodeAt(2)])return w('invalid header, index 2, char "%s"',s.charCodeAt(2)),!0;if(s.length<4)return!1;if(!Dt[s.charCodeAt(3)])return w('invalid header, index 3, char "%s"',s.charCodeAt(3)),!0;for(let e=4;e<s.length;++e)if(!Dt[s.charCodeAt(e)])return w('invalid header, index "%i", char "%s"',e,s.charCodeAt(e)),!0;return!1}});var ec=x(Ns=>{"use strict";Object.defineProperty(Ns,"__esModule",{value:!0});Ns.Polling=void 0;var ym=Fe(),Zo=require("zlib"),wm=ts(),_m=R(),ie=(0,_m.default)("engine:polling"),Sm={gzip:Zo.createGzip,deflate:Zo.createDeflate},xn=class extends ym.Transport{constructor(e){super(e),this.closeTimeout=30*1e3}get name(){return"polling"}onRequest(e){let t=e.res;e.res=null,e.getMethod()==="get"?this.onPollRequest(e,t):e.getMethod()==="post"?this.onDataRequest(e,t):(t.writeStatus("500 Internal Server Error"),t.end())}onPollRequest(e,t){if(this.req){ie("request overlap"),this.onError("overlap from client"),t.writeStatus("500 Internal Server Error"),t.end();return}ie("setting request"),this.req=e,this.res=t;let i=()=>{this.writable=!1,this.onError("poll connection closed prematurely")},n=()=>{this.req=this.res=null};e.cleanup=n,t.onAborted(i),this.writable=!0,this.emit("ready"),this.writable&&this.shouldClose&&(ie("triggering empty send to append close packet"),this.send([{type:"noop"}]))}onDataRequest(e,t){if(this.dataReq){this.onError("data request overlap from client"),t.writeStatus("500 Internal Server Error"),t.end();return}let i=Number(e.headers["content-length"]);if(!i){this.onError("content-length header required"),t.writeStatus("411 Length Required").end();return}if(i>this.maxHttpBufferSize){this.onError("payload too large"),t.writeStatus("413 Payload Too Large").end();return}if(e.headers["content-type"]==="application/octet-stream"&&this.protocol===4)return this.onError("invalid content");this.dataReq=e,this.dataRes=t;let a,r=0,o={"Content-Type":"text/html"};this.headers(e,o);for(let l in o)t.writeHeader(l,String(o[l]));let c=l=>{this.onData(l.toString()),this.onDataRequestCleanup(),t.cork(()=>{t.end("ok")})};t.onAborted(()=>{this.onDataRequestCleanup(),this.onError("data request connection closed prematurely")}),t.onData((l,p)=>{let u=r+l.byteLength;if(u>i){this.onError("content-length mismatch"),t.close();return}if(!a){if(p){c(Buffer.from(l));return}a=Buffer.allocUnsafe(i)}if(Buffer.from(l).copy(a,r),p){if(u!=i){this.onError("content-length mismatch"),t.writeStatus("400 Content-Length Mismatch").end(),this.onDataRequestCleanup();return}c(a);return}r=u})}onDataRequestCleanup(){this.dataReq=this.dataRes=null}onData(e){ie('received "%s"',e);let t=i=>{if(i.type==="close")return ie("got xhr close packet"),this.onClose(),!1;this.onPacket(i)};this.protocol===3?this.parser.decodePayload(e,t):this.parser.decodePayload(e).forEach(t)}onClose(){this.writable&&this.send([{type:"noop"}]),super.onClose()}send(e){this.writable=!1,this.shouldClose&&(ie("appending close packet to payload"),e.push({type:"close"}),this.shouldClose(),this.shouldClose=null);let t=i=>{let n=e.some(a=>a.options&&a.options.compress);this.write(i,{compress:n})};this.protocol===3?this.parser.encodePayload(e,this.supportsBinary,t):this.parser.encodePayload(e,t)}write(e,t){ie('writing "%s"',e),this.doWrite(e,t,()=>{this.req.cleanup(),this.emit("drain")})}doWrite(e,t,i){let n=typeof e=="string",r={"Content-Type":n?"text/plain; charset=UTF-8":"application/octet-stream"},o=p=>{this.headers(this.req,r),this.res.cork(()=>{Object.keys(r).forEach(u=>{this.res.writeHeader(u,String(r[u]))}),this.res.end(p)}),i()};if(!this.httpCompression||!t.compress){o(e);return}if((n?Buffer.byteLength(e):e.length)<this.httpCompression.threshold){o(e);return}let l=wm(this.req).encodings(["gzip","deflate"]);if(!l){o(e);return}this.compress(e,l,(p,u)=>{if(p){this.res.writeStatus("500 Internal Server Error"),this.res.end(),i(p);return}r["Content-Encoding"]=l,o(u)})}compress(e,t,i){ie("compressing");let n=[],a=0;Sm[t](this.httpCompression).on("error",i).on("data",function(r){n.push(r),a+=r.length}).on("end",function(){i(null,Buffer.concat(n,a))}).end(e)}doClose(e){ie("closing");let t,i=()=>{clearTimeout(t),e(),this.onClose()};this.writable?(ie("transport writable - closing right away"),this.send([{type:"close"}]),i()):this.discarded?(ie("transport discarded - closing right away"),i()):(ie("transport not writable - buffering orderly close"),this.shouldClose=i,t=setTimeout(i,this.closeTimeout))}headers(e,t){t=t||{};let i=e.headers["user-agent"];return i&&(~i.indexOf(";MSIE")||~i.indexOf("Trident/"))&&(t["X-XSS-Protection"]="0"),t["cache-control"]="no-store",this.emit("headers",t,e),t}};Ns.Polling=xn});var sc=x(Bs=>{"use strict";Object.defineProperty(Bs,"__esModule",{value:!0});Bs.WebSocket=void 0;var Em=Fe(),km=R(),tc=(0,km.default)("engine:ws"),vn=class extends Em.Transport{constructor(e){super(e),this.writable=!1,this.perMessageDeflate=null}get name(){return"websocket"}get handlesUpgrades(){return!0}send(e){this.writable=!1;for(let t=0;t<e.length;t++){let i=e[t],n=t+1===e.length,a=r=>{let o=typeof r!="string",c=this.perMessageDeflate&&Buffer.byteLength(r)>this.perMessageDeflate.threshold;tc('writing "%s"',r),this.socket.send(r,o,c),n&&(this.emit("drain"),this.writable=!0,this.emit("ready"))};i.options&&typeof i.options.wsPreEncoded=="string"?a(i.options.wsPreEncoded):this.parser.encodePacket(i,this.supportsBinary,a)}}doClose(e){tc("closing"),e&&e(),this.socket.end()}};Bs.WebSocket=vn});var ic=x(gn=>{"use strict";Object.defineProperty(gn,"__esModule",{value:!0});var Cm=ec(),Tm=sc();gn.default={polling:Cm.Polling,websocket:Tm.WebSocket}});var nc=x(Ls=>{"use strict";Object.defineProperty(Ls,"__esModule",{value:!0});Ls.uServer=void 0;var Om=R(),Ve=hn(),Rm=ic(),Ie=(0,Om.default)("engine:uws"),bn=class extends Ve.BaseServer{init(){}cleanup(){}prepare(e,t){e.method=e.getMethod().toUpperCase(),e.url=e.getUrl();let i=new URLSearchParams(e.getQuery());e._query=Object.fromEntries(i.entries()),e.headers={},e.forEach((n,a)=>{e.headers[n]=a}),e.connection={remoteAddress:Buffer.from(t.getRemoteAddressAsText()).toString()},t.onAborted(()=>{Ie("response has been aborted")})}createTransport(e,t){return new Rm.default[e](t)}attach(e,t={}){let i=this._computePath(t);e.any(i,this.handleRequest.bind(this)).ws(i,{compression:t.compression,idleTimeout:t.idleTimeout,maxBackpressure:t.maxBackpressure,maxPayloadLength:this.opts.maxHttpBufferSize,upgrade:this.handleUpgrade.bind(this),open:n=>{let a=n.getUserData().transport;a.socket=n,a.writable=!0,a.emit("ready")},message:(n,a,r)=>{n.getUserData().transport.onData(r?a:Buffer.from(a).toString())},close:(n,a,r)=>{n.getUserData().transport.onClose(a,r)}})}_applyMiddlewares(e,t,i){if(this.middlewares.length===0)return i();e.res=new yn(t),super._applyMiddlewares(e,e.res,n=>{e.res.writeHead(),i(n)})}handleRequest(e,t){Ie('handling "%s" http request "%s"',t.getMethod(),t.getUrl()),this.prepare(t,e),t.res=e;let i=(n,a)=>{if(n!==void 0){this.emit("connection_error",{req:t,code:n,message:Ve.Server.errorMessages[n],context:a}),this.abortRequest(t.res,n,a);return}if(t._query.sid)Ie("setting new request for existing client"),this.clients[t._query.sid].transport.onRequest(t);else{let r=(o,c)=>this.abortRequest(e,o,c);this.handshake(t._query.transport,t,r)}};this._applyMiddlewares(t,e,n=>{n?i(Ve.Server.errors.BAD_REQUEST,{name:"MIDDLEWARE_FAILURE"}):this.verify(t,!1,i)})}handleUpgrade(e,t,i){Ie("on upgrade"),this.prepare(t,e),t.res=e;let n=async(a,r)=>{if(a!==void 0){this.emit("connection_error",{req:t,code:a,message:Ve.Server.errorMessages[a],context:r}),this.abortRequest(e,a,r);return}let o=t._query.sid,c;if(o){let l=this.clients[o];if(l){if(l.upgrading)return Ie("transport has already been trying to upgrade"),e.close();if(l.upgraded)return Ie("transport had already been upgraded"),e.close();Ie("upgrading existing transport"),c=this.createTransport(t._query.transport,t),l._maybeUpgrade(c)}else return Ie("upgrade attempt for closed client"),e.close()}else if(c=await this.handshake(t._query.transport,t,(l,p)=>this.abortRequest(e,l,p)),!c)return;t.res.writeStatus("101 Switching Protocols"),e.upgrade({transport:c},t.getHeader("sec-websocket-key"),t.getHeader("sec-websocket-protocol"),t.getHeader("sec-websocket-extensions"),i)};this._applyMiddlewares(t,e,a=>{a?n(Ve.Server.errors.BAD_REQUEST,{name:"MIDDLEWARE_FAILURE"}):this.verify(t,!0,n)})}abortRequest(e,t,i){let n=t===Ve.Server.errors.FORBIDDEN?"403 Forbidden":"400 Bad Request",a=i&&i.message?i.message:Ve.Server.errorMessages[t];e.writeStatus(n),e.writeHeader("Content-Type","application/json"),e.end(JSON.stringify({code:t,message:a}))}};Ls.uServer=bn;var yn=class{constructor(e){this.res=e,this.statusWritten=!1,this.headers=[],this.isAborted=!1}set statusCode(e){e&&this.writeStatus(e===200?"200 OK":"204 No Content")}writeHead(e){this.statusCode=e}setHeader(e,t){Array.isArray(t)?t.forEach(i=>{this.writeHeader(e,i)}):this.writeHeader(e,t)}removeHeader(){}getHeader(){}writeStatus(e){if(!this.isAborted)return this.res.writeStatus(e),this.statusWritten=!0,this.writeBufferedHeaders(),this}writeHeader(e,t){this.isAborted||e!=="Content-Length"&&(this.statusWritten?this.res.writeHeader(e,t):this.headers.push([e,t]))}writeBufferedHeaders(){this.headers.forEach(([e,t])=>{this.res.writeHeader(e,t)})}end(e){this.isAborted||this.res.cork(()=>{this.statusWritten||this.writeBufferedHeaders(),this.res.end(e)})}onData(e){this.isAborted||this.res.onData(e)}onAborted(e){this.isAborted||this.res.onAborted(()=>{this.isAborted=!0,e()})}cork(e){this.isAborted||this.res.cork(e)}}});var cc=x(B=>{"use strict";Object.defineProperty(B,"__esModule",{value:!0});B.protocol=B.Transport=B.Socket=B.uServer=B.parser=B.transports=B.Server=void 0;B.listen=Bm;B.attach=oc;var Am=require("http"),ac=hn();Object.defineProperty(B,"Server",{enumerable:!0,get:function(){return ac.Server}});var Pm=qi();B.transports=Pm.default;var rc=Rt();B.parser=rc;var jm=nc();Object.defineProperty(B,"uServer",{enumerable:!0,get:function(){return jm.uServer}});var Im=Ui();Object.defineProperty(B,"Socket",{enumerable:!0,get:function(){return Im.Socket}});var Nm=Fe();Object.defineProperty(B,"Transport",{enumerable:!0,get:function(){return Nm.Transport}});B.protocol=rc.protocol;function Bm(s,e,t){typeof e=="function"&&(t=e,e={});let i=(0,Am.createServer)(function(a,r){r.writeHead(501),r.end("Not Implemented")}),n=oc(i,e);return n.httpServer=i,i.listen(s,t),n}function oc(s,e){let t=new ac.Server(e);return t.attach(s,e),t}});var pc=x(lc=>{lc.Emitter=U;function U(s){if(s)return Lm(s)}function Lm(s){for(var e in U.prototype)s[e]=U.prototype[e];return s}U.prototype.on=U.prototype.addEventListener=function(s,e){return this._callbacks=this._callbacks||{},(this._callbacks["$"+s]=this._callbacks["$"+s]||[]).push(e),this};U.prototype.once=function(s,e){function t(){this.off(s,t),e.apply(this,arguments)}return t.fn=e,this.on(s,t),this};U.prototype.off=U.prototype.removeListener=U.prototype.removeAllListeners=U.prototype.removeEventListener=function(s,e){if(this._callbacks=this._callbacks||{},arguments.length==0)return this._callbacks={},this;var t=this._callbacks["$"+s];if(!t)return this;if(arguments.length==1)return delete this._callbacks["$"+s],this;for(var i,n=0;n<t.length;n++)if(i=t[n],i===e||i.fn===e){t.splice(n,1);break}return t.length===0&&delete this._callbacks["$"+s],this};U.prototype.emit=function(s){this._callbacks=this._callbacks||{};for(var e=new Array(arguments.length-1),t=this._callbacks["$"+s],i=1;i<arguments.length;i++)e[i-1]=arguments[i];if(t){t=t.slice(0);for(var i=0,n=t.length;i<n;++i)t[i].apply(this,e)}return this};U.prototype.emitReserved=U.prototype.emit;U.prototype.listeners=function(s){return this._callbacks=this._callbacks||{},this._callbacks["$"+s]||[]};U.prototype.hasListeners=function(s){return!!this.listeners(s).length}});var wn=x(Ds=>{"use strict";Object.defineProperty(Ds,"__esModule",{value:!0});Ds.isBinary=dc;Ds.hasBinary=Ms;var Mm=typeof ArrayBuffer=="function",Dm=s=>typeof ArrayBuffer.isView=="function"?ArrayBuffer.isView(s):s.buffer instanceof ArrayBuffer,uc=Object.prototype.toString,qm=typeof Blob=="function"||typeof Blob<"u"&&uc.call(Blob)==="[object BlobConstructor]",Fm=typeof File=="function"||typeof File<"u"&&uc.call(File)==="[object FileConstructor]";function dc(s){return Mm&&(s instanceof ArrayBuffer||Dm(s))||qm&&s instanceof Blob||Fm&&s instanceof File}function Ms(s,e){if(!s||typeof s!="object")return!1;if(Array.isArray(s)){for(let t=0,i=s.length;t<i;t++)if(Ms(s[t]))return!0;return!1}if(dc(s))return!0;if(s.toJSON&&typeof s.toJSON=="function"&&arguments.length===1)return Ms(s.toJSON(),!0);for(let t in s)if(Object.prototype.hasOwnProperty.call(s,t)&&Ms(s[t]))return!0;return!1}});var fc=x(qs=>{"use strict";Object.defineProperty(qs,"__esModule",{value:!0});qs.deconstructPacket=Hm;qs.reconstructPacket=zm;var Um=wn();function Hm(s){let e=[],t=s.data,i=s;return i.data=_n(t,e),i.attachments=e.length,{packet:i,buffers:e}}function _n(s,e){if(!s)return s;if((0,Um.isBinary)(s)){let t={_placeholder:!0,num:e.length};return e.push(s),t}else if(Array.isArray(s)){let t=new Array(s.length);for(let i=0;i<s.length;i++)t[i]=_n(s[i],e);return t}else if(typeof s=="object"&&!(s instanceof Date)){let t={};for(let i in s)Object.prototype.hasOwnProperty.call(s,i)&&(t[i]=_n(s[i],e));return t}return s}function zm(s,e){return s.data=Sn(s.data,e),delete s.attachments,s}function Sn(s,e){if(!s)return s;if(s&&s._placeholder===!0){if(typeof s.num=="number"&&s.num>=0&&s.num<e.length)return e[s.num];throw new Error("illegal attachments")}else if(Array.isArray(s))for(let t=0;t<s.length;t++)s[t]=Sn(s[t],e);else if(typeof s=="object")for(let t in s)Object.prototype.hasOwnProperty.call(s,t)&&(s[t]=Sn(s[t],e));return s}});var qt=x(ce=>{"use strict";Object.defineProperty(ce,"__esModule",{value:!0});ce.Decoder=ce.Encoder=ce.PacketType=ce.protocol=void 0;ce.isPacketValid=Xm;var Wm=pc(),mc=fc(),hc=wn(),$m=R(),En=(0,$m.default)("socket.io-parser"),xc=["connect","connect_error","disconnect","disconnecting","newListener","removeListener"];ce.protocol=5;var E;(function(s){s[s.CONNECT=0]="CONNECT",s[s.DISCONNECT=1]="DISCONNECT",s[s.EVENT=2]="EVENT",s[s.ACK=3]="ACK",s[s.CONNECT_ERROR=4]="CONNECT_ERROR",s[s.BINARY_EVENT=5]="BINARY_EVENT",s[s.BINARY_ACK=6]="BINARY_ACK"})(E||(ce.PacketType=E={}));var kn=class{constructor(e){this.replacer=e}encode(e){return En("encoding packet %j",e),(e.type===E.EVENT||e.type===E.ACK)&&(0,hc.hasBinary)(e)?this.encodeAsBinary({type:e.type===E.EVENT?E.BINARY_EVENT:E.BINARY_ACK,nsp:e.nsp,data:e.data,id:e.id}):[this.encodeAsString(e)]}encodeAsString(e){let t=""+e.type;return(e.type===E.BINARY_EVENT||e.type===E.BINARY_ACK)&&(t+=e.attachments+"-"),e.nsp&&e.nsp!=="/"&&(t+=e.nsp+","),e.id!=null&&(t+=e.id),e.data!=null&&(t+=JSON.stringify(e.data,this.replacer)),En("encoded %j as %s",e,t),t}encodeAsBinary(e){let t=(0,mc.deconstructPacket)(e),i=this.encodeAsString(t.packet),n=t.buffers;return n.unshift(i),n}};ce.Encoder=kn;var Cn=class s extends Wm.Emitter{constructor(e){super(),this.reviver=e}add(e){let t;if(typeof e=="string"){if(this.reconstructor)throw new Error("got plaintext data when reconstructing a packet");t=this.decodeString(e);let i=t.type===E.BINARY_EVENT;i||t.type===E.BINARY_ACK?(t.type=i?E.EVENT:E.ACK,this.reconstructor=new Tn(t),t.attachments===0&&super.emitReserved("decoded",t)):super.emitReserved("decoded",t)}else if((0,hc.isBinary)(e)||e.base64)if(this.reconstructor)t=this.reconstructor.takeBinaryData(e),t&&(this.reconstructor=null,super.emitReserved("decoded",t));else throw new Error("got binary data when not reconstructing a packet");else throw new Error("Unknown type: "+e)}decodeString(e){let t=0,i={type:Number(e.charAt(0))};if(E[i.type]===void 0)throw new Error("unknown packet type "+i.type);if(i.type===E.BINARY_EVENT||i.type===E.BINARY_ACK){let a=t+1;for(;e.charAt(++t)!=="-"&&t!=e.length;);let r=e.substring(a,t);if(r!=Number(r)||e.charAt(t)!=="-")throw new Error("Illegal attachments");i.attachments=Number(r)}if(e.charAt(t+1)==="/"){let a=t+1;for(;++t&&!(e.charAt(t)===","||t===e.length););i.nsp=e.substring(a,t)}else i.nsp="/";let n=e.charAt(t+1);if(n!==""&&Number(n)==n){let a=t+1;for(;++t;){let r=e.charAt(t);if(r==null||Number(r)!=r){--t;break}if(t===e.length)break}i.id=Number(e.substring(a,t+1))}if(e.charAt(++t)){let a=this.tryParse(e.substr(t));if(s.isPayloadValid(i.type,a))i.data=a;else throw new Error("invalid payload")}return En("decoded %s as %j",e,i),i}tryParse(e){try{return JSON.parse(e,this.reviver)}catch{return!1}}static isPayloadValid(e,t){switch(e){case E.CONNECT:return Fs(t);case E.DISCONNECT:return t===void 0;case E.CONNECT_ERROR:return typeof t=="string"||Fs(t);case E.EVENT:case E.BINARY_EVENT:return Array.isArray(t)&&(typeof t[0]=="number"||typeof t[0]=="string"&&xc.indexOf(t[0])===-1);case E.ACK:case E.BINARY_ACK:return Array.isArray(t)}}destroy(){this.reconstructor&&(this.reconstructor.finishedReconstruction(),this.reconstructor=null)}};ce.Decoder=Cn;var Tn=class{constructor(e){this.packet=e,this.buffers=[],this.reconPack=e}takeBinaryData(e){if(this.buffers.push(e),this.buffers.length===this.reconPack.attachments){let t=(0,mc.reconstructPacket)(this.reconPack,this.buffers);return this.finishedReconstruction(),t}return null}finishedReconstruction(){this.reconPack=null,this.buffers=[]}};function Vm(s){return typeof s=="string"}var Gm=Number.isInteger||function(s){return typeof s=="number"&&isFinite(s)&&Math.floor(s)===s};function Km(s){return s===void 0||Gm(s)}function Fs(s){return Object.prototype.toString.call(s)==="[object Object]"}function Ym(s,e){switch(s){case E.CONNECT:return e===void 0||Fs(e);case E.DISCONNECT:return e===void 0;case E.EVENT:return Array.isArray(e)&&(typeof e[0]=="number"||typeof e[0]=="string"&&xc.indexOf(e[0])===-1);case E.ACK:return Array.isArray(e);case E.CONNECT_ERROR:return typeof e=="string"||Fs(e);default:return!1}}function Xm(s){return Vm(s.nsp)&&Km(s.id)&&Ym(s.type,s.data)}});var vc=x(xt=>{"use strict";var Jm=xt&&xt.__importDefault||function(s){return s&&s.__esModule?s:{default:s}};Object.defineProperty(xt,"__esModule",{value:!0});xt.Client=void 0;var Us=qt(),Qm=Jm(R()),le=(0,Qm.default)("socket.io:client"),On=class{constructor(e,t){this.sockets=new Map,this.nsps=new Map,this.server=e,this.conn=t,this.encoder=e.encoder,this.decoder=new e._parser.Decoder,this.id=t.id,this.setup()}get request(){return this.conn.request}setup(){this.onclose=this.onclose.bind(this),this.ondata=this.ondata.bind(this),this.onerror=this.onerror.bind(this),this.ondecoded=this.ondecoded.bind(this),this.decoder.on("decoded",this.ondecoded),this.conn.on("data",this.ondata),this.conn.on("error",this.onerror),this.conn.on("close",this.onclose),this.connectTimeout=setTimeout(()=>{this.nsps.size===0?(le("no namespace joined yet, close the client"),this.close()):le("the client has already joined a namespace, nothing to do")},this.server._connectTimeout)}connect(e,t={}){if(this.server._nsps.has(e))return le("connecting to namespace %s",e),this.doConnect(e,t);this.server._checkNamespace(e,t,i=>{i?this.doConnect(e,t):(le("creation of namespace %s was denied",e),this._packet({type:Us.PacketType.CONNECT_ERROR,nsp:e,data:{message:"Invalid namespace"}}))})}doConnect(e,t){let i=this.server.of(e);i._add(this,t,n=>{this.sockets.set(n.id,n),this.nsps.set(i.name,n),this.connectTimeout&&(clearTimeout(this.connectTimeout),this.connectTimeout=void 0)})}_disconnect(){for(let e of this.sockets.values())e.disconnect();this.sockets.clear(),this.close()}_remove(e){if(this.sockets.has(e.id)){let t=this.sockets.get(e.id).nsp.name;this.sockets.delete(e.id),this.nsps.delete(t)}else le("ignoring remove for %s",e.id)}close(){this.conn.readyState==="open"&&(le("forcing transport close"),this.conn.close(),this.onclose("forced server close"))}_packet(e,t={}){if(this.conn.readyState!=="open"){le("ignoring packet write %j",e);return}let i=t.preEncoded?e:this.encoder.encode(e);this.writeToEngine(i,t)}writeToEngine(e,t){if(t.volatile&&!this.conn.transport.writable){le("volatile packet is discarded since the transport is not currently writable");return}let i=Array.isArray(e)?e:[e];for(let n of i)this.conn.write(n,t)}ondata(e){try{this.decoder.add(e)}catch(t){le("invalid packet format"),this.onerror(t)}}ondecoded(e){let{namespace:t,authPayload:i}=this._parseNamespace(e),n=this.nsps.get(t);!n&&e.type===Us.PacketType.CONNECT?this.connect(t,i):n&&e.type!==Us.PacketType.CONNECT&&e.type!==Us.PacketType.CONNECT_ERROR?process.nextTick(function(){n._onpacket(e)}):(le("invalid state (packet type: %s)",e.type),this.close())}_parseNamespace(e){if(this.conn.protocol!==3)return{namespace:e.nsp,authPayload:e.data};let t=new URL(e.nsp,"https://socket.io");return{namespace:t.pathname,authPayload:Object.fromEntries(t.searchParams.entries())}}onerror(e){for(let t of this.sockets.values())t._onerror(e);this.conn.close()}onclose(e,t){le("client close with reason %s",e),this.destroy();for(let i of this.sockets.values())i._onclose(e,t);this.sockets.clear(),this.decoder.destroy()}destroy(){this.conn.removeListener("data",this.ondata),this.conn.removeListener("error",this.onerror),this.conn.removeListener("close",this.onclose),this.decoder.removeListener("decoded",this.ondecoded),this.connectTimeout&&(clearTimeout(this.connectTimeout),this.connectTimeout=void 0)}};xt.Client=On});var zs=x(Hs=>{"use strict";Object.defineProperty(Hs,"__esModule",{value:!0});Hs.StrictEventEmitter=void 0;var Zm=require("events"),Rn=class extends Zm.EventEmitter{on(e,t){return super.on(e,t)}once(e,t){return super.once(e,t)}emit(e,...t){return super.emit(e,...t)}emitReserved(e,...t){return super.emit(e,...t)}emitUntyped(e,...t){return super.emit(e,...t)}listeners(e){return super.listeners(e)}};Hs.StrictEventEmitter=Rn});var An=x(Ws=>{"use strict";Object.defineProperty(Ws,"__esModule",{value:!0});Ws.RESERVED_EVENTS=void 0;Ws.RESERVED_EVENTS=new Set(["connect","connect_error","disconnect","disconnecting","newListener","removeListener"])});var Pn=x(vt=>{"use strict";Object.defineProperty(vt,"__esModule",{value:!0});vt.RemoteSocket=vt.BroadcastOperator=void 0;var eh=An(),th=qt(),$s=class s{constructor(e,t=new Set,i=new Set,n={}){this.adapter=e,this.rooms=t,this.exceptRooms=i,this.flags=n}to(e){let t=new Set(this.rooms);return Array.isArray(e)?e.forEach(i=>t.add(i)):t.add(e),new s(this.adapter,t,this.exceptRooms,this.flags)}in(e){return this.to(e)}except(e){let t=new Set(this.exceptRooms);return Array.isArray(e)?e.forEach(i=>t.add(i)):t.add(e),new s(this.adapter,this.rooms,t,this.flags)}compress(e){let t=Object.assign({},this.flags,{compress:e});return new s(this.adapter,this.rooms,this.exceptRooms,t)}get volatile(){let e=Object.assign({},this.flags,{volatile:!0});return new s(this.adapter,this.rooms,this.exceptRooms,e)}get local(){let e=Object.assign({},this.flags,{local:!0});return new s(this.adapter,this.rooms,this.exceptRooms,e)}timeout(e){let t=Object.assign({},this.flags,{timeout:e});return new s(this.adapter,this.rooms,this.exceptRooms,t)}emit(e,...t){if(eh.RESERVED_EVENTS.has(e))throw new Error(`"${String(e)}" is a reserved event name`);let i=[e,...t],n={type:th.PacketType.EVENT,data:i};if(!(typeof i[i.length-1]=="function"))return this.adapter.broadcast(n,{rooms:this.rooms,except:this.exceptRooms,flags:this.flags}),!0;let r=i.pop(),o=!1,c=[],l=setTimeout(()=>{o=!0,r.apply(this,[new Error("operation has timed out"),this.flags.expectSingleResponse?null:c])},this.flags.timeout),p=-1,u=0,d=0,h=()=>{!o&&p===u&&c.length===d&&(clearTimeout(l),r.apply(this,[null,this.flags.expectSingleResponse?c[0]:c]))};return this.adapter.broadcastWithAck(n,{rooms:this.rooms,except:this.exceptRooms,flags:this.flags},m=>{d+=m,u++,h()},m=>{c.push(m),h()}),this.adapter.serverCount().then(m=>{p=m,h()}),!0}emitWithAck(e,...t){return new Promise((i,n)=>{t.push((a,r)=>a?(a.responses=r,n(a)):i(r)),this.emit(e,...t)})}allSockets(){if(!this.adapter)throw new Error("No adapter for this namespace, are you trying to get the list of clients of a dynamic namespace?");return this.adapter.sockets(this.rooms)}fetchSockets(){return this.adapter.fetchSockets({rooms:this.rooms,except:this.exceptRooms,flags:this.flags}).then(e=>e.map(t=>t.server?t:new Vs(this.adapter,t)))}socketsJoin(e){this.adapter.addSockets({rooms:this.rooms,except:this.exceptRooms,flags:this.flags},Array.isArray(e)?e:[e])}socketsLeave(e){this.adapter.delSockets({rooms:this.rooms,except:this.exceptRooms,flags:this.flags},Array.isArray(e)?e:[e])}disconnectSockets(e=!1){this.adapter.disconnectSockets({rooms:this.rooms,except:this.exceptRooms,flags:this.flags},e)}};vt.BroadcastOperator=$s;var Vs=class{constructor(e,t){this.id=t.id,this.handshake=t.handshake,this.rooms=new Set(t.rooms),this.data=t.data,this.operator=new $s(e,new Set([this.id]),new Set,{expectSingleResponse:!0})}timeout(e){return this.operator.timeout(e)}emit(e,...t){return this.operator.emit(e,...t)}join(e){return this.operator.socketsJoin(e)}leave(e){return this.operator.socketsLeave(e)}disconnect(e=!1){return this.operator.disconnectSockets(e),this}};vt.RemoteSocket=Vs});var In=x(gt=>{"use strict";var yc=gt&&gt.__importDefault||function(s){return s&&s.__esModule?s:{default:s}};Object.defineProperty(gt,"__esModule",{value:!0});gt.Socket=void 0;var ne=qt(),sh=yc(R()),ih=zs(),gc=yc(bi()),nh=Pn(),ah=An(),D=(0,sh.default)("socket.io:socket"),rh=new Set(["transport error","transport close","forced close","ping timeout","server shutting down","forced server close"]);function bc(){}var jn=class extends ih.StrictEventEmitter{constructor(e,t,i,n){super(),this.nsp=e,this.client=t,this.recovered=!1,this.data={},this.connected=!1,this.acks=new Map,this.fns=[],this.flags={},this.server=e.server,this.adapter=e.adapter,n?(this.id=n.sid,this.pid=n.pid,n.rooms.forEach(a=>this.join(a)),this.data=n.data,n.missedPackets.forEach(a=>{this.packet({type:ne.PacketType.EVENT,data:a})}),this.recovered=!0):(t.conn.protocol===3?this.id=e.name!=="/"?e.name+"#"+t.id:t.id:this.id=gc.default.generateId(),this.server._opts.connectionStateRecovery&&(this.pid=gc.default.generateId())),this.handshake=this.buildHandshake(i),this.on("error",bc)}buildHandshake(e){var t,i,n,a;return{headers:((t=this.request)===null||t===void 0?void 0:t.headers)||{},time:new Date+"",address:this.conn.remoteAddress,xdomain:!!(!((i=this.request)===null||i===void 0)&&i.headers.origin),secure:!this.request||!!this.request.connection.encrypted,issued:+new Date,url:(n=this.request)===null||n===void 0?void 0:n.url,query:((a=this.request)===null||a===void 0?void 0:a._query)||{},auth:e}}emit(e,...t){if(ah.RESERVED_EVENTS.has(e))throw new Error(`"${String(e)}" is a reserved event name`);let i=[e,...t],n={type:ne.PacketType.EVENT,data:i};if(typeof i[i.length-1]=="function"){let r=this.nsp._ids++;D("emitting packet with ack id %d",r),this.registerAckCallback(r,i.pop()),n.id=r}let a=Object.assign({},this.flags);return this.flags={},this.nsp.server.opts.connectionStateRecovery?this.adapter.broadcast(n,{rooms:new Set([this.id]),except:new Set,flags:a}):(this.notifyOutgoingListeners(n),this.packet(n,a)),!0}emitWithAck(e,...t){let i=this.flags.timeout!==void 0;return new Promise((n,a)=>{t.push((r,o)=>i?r?a(r):n(o):n(r)),this.emit(e,...t)})}registerAckCallback(e,t){let i=this.flags.timeout;if(i===void 0){this.acks.set(e,t);return}let n=setTimeout(()=>{D("event with ack id %d has timed out after %d ms",e,i),this.acks.delete(e),t.call(this,new Error("operation has timed out"))},i);this.acks.set(e,(...a)=>{clearTimeout(n),t.apply(this,[null,...a])})}to(e){return this.newBroadcastOperator().to(e)}in(e){return this.newBroadcastOperator().in(e)}except(e){return this.newBroadcastOperator().except(e)}send(...e){return this.emit("message",...e),this}write(...e){return this.emit("message",...e),this}packet(e,t={}){e.nsp=this.nsp.name,t.compress=t.compress!==!1,this.client._packet(e,t)}join(e){return D("join room %s",e),this.adapter.addAll(this.id,new Set(Array.isArray(e)?e:[e]))}leave(e){return D("leave room %s",e),this.adapter.del(this.id,e)}leaveAll(){this.adapter.delAll(this.id)}_onconnect(){D("socket connected - writing packet"),this.connected=!0,this.join(this.id),this.conn.protocol===3?this.packet({type:ne.PacketType.CONNECT}):this.packet({type:ne.PacketType.CONNECT,data:{sid:this.id,pid:this.pid}})}_onpacket(e){switch(D("got packet %j",e),e.type){case ne.PacketType.EVENT:this.onevent(e);break;case ne.PacketType.BINARY_EVENT:this.onevent(e);break;case ne.PacketType.ACK:this.onack(e);break;case ne.PacketType.BINARY_ACK:this.onack(e);break;case ne.PacketType.DISCONNECT:this.ondisconnect();break}}onevent(e){let t=e.data||[];if(D("emitting event %j",t),e.id!=null&&(D("attaching ack callback to event"),t.push(this.ack(e.id))),this._anyListeners&&this._anyListeners.length){let i=this._anyListeners.slice();for(let n of i)n.apply(this,t)}this.dispatch(t)}ack(e){let t=this,i=!1;return function(){if(i)return;let n=Array.prototype.slice.call(arguments);D("sending ack %j",n),t.packet({id:e,type:ne.PacketType.ACK,data:n}),i=!0}}onack(e){let t=this.acks.get(e.id);typeof t=="function"?(D("calling ack %s with %j",e.id,e.data),t.apply(this,e.data),this.acks.delete(e.id)):D("bad ack %s",e.id)}ondisconnect(){D("got disconnect packet"),this._onclose("client namespace disconnect")}_onerror(e){this.emitReserved("error",e)}_onclose(e,t){if(!this.connected)return this;D("closing socket - reason %s",e),this.emitReserved("disconnecting",e,t),this.server._opts.connectionStateRecovery&&rh.has(e)&&(D("connection state recovery is enabled for sid %s",this.id),this.adapter.persistSession({sid:this.id,pid:this.pid,rooms:[...this.rooms],data:this.data})),this._cleanup(),this.client._remove(this),this.connected=!1,this.emitReserved("disconnect",e,t)}_cleanup(){this.leaveAll(),this.nsp._remove(this),this.join=bc}_error(e){this.packet({type:ne.PacketType.CONNECT_ERROR,data:e})}disconnect(e=!1){return this.connected?(e?this.client._disconnect():(this.packet({type:ne.PacketType.DISCONNECT}),this._onclose("server namespace disconnect")),this):this}compress(e){return this.flags.compress=e,this}get volatile(){return this.flags.volatile=!0,this}get broadcast(){return this.newBroadcastOperator()}get local(){return this.newBroadcastOperator().local}timeout(e){return this.flags.timeout=e,this}dispatch(e){D("dispatching an event %j",e),this.run(e,t=>{process.nextTick(()=>{if(t)return this._onerror(t);this.connected?super.emitUntyped.apply(this,e):D("ignore packet received after disconnection")})})}use(e){return this.fns.push(e),this}run(e,t){if(!this.fns.length)return t();let i=this.fns.slice(0);function n(a){i[a](e,r=>{if(r)return t(r);if(!i[a+1])return t();n(a+1)})}n(0)}get disconnected(){return!this.connected}get request(){return this.client.request}get conn(){return this.client.conn}get rooms(){return this.adapter.socketRooms(this.id)||new Set}onAny(e){return this._anyListeners=this._anyListeners||[],this._anyListeners.push(e),this}prependAny(e){return this._anyListeners=this._anyListeners||[],this._anyListeners.unshift(e),this}offAny(e){if(!this._anyListeners)return this;if(e){let t=this._anyListeners;for(let i=0;i<t.length;i++)if(e===t[i])return t.splice(i,1),this}else this._anyListeners=[];return this}listenersAny(){return this._anyListeners||[]}onAnyOutgoing(e){return this._anyOutgoingListeners=this._anyOutgoingListeners||[],this._anyOutgoingListeners.push(e),this}prependAnyOutgoing(e){return this._anyOutgoingListeners=this._anyOutgoingListeners||[],this._anyOutgoingListeners.unshift(e),this}offAnyOutgoing(e){if(!this._anyOutgoingListeners)return this;if(e){let t=this._anyOutgoingListeners;for(let i=0;i<t.length;i++)if(e===t[i])return t.splice(i,1),this}else this._anyOutgoingListeners=[];return this}listenersAnyOutgoing(){return this._anyOutgoingListeners||[]}notifyOutgoingListeners(e){if(this._anyOutgoingListeners&&this._anyOutgoingListeners.length){let t=this._anyOutgoingListeners.slice();for(let i of t)i.apply(this,e.data)}}newBroadcastOperator(){let e=Object.assign({},this.flags);return this.flags={},new nh.BroadcastOperator(this.adapter,new Set,new Set([this.id]),e)}};gt.Socket=jn});var Bn=x(Ee=>{"use strict";var oh=Ee&&Ee.__importDefault||function(s){return s&&s.__esModule?s:{default:s}};Object.defineProperty(Ee,"__esModule",{value:!0});Ee.Namespace=Ee.RESERVED_EVENTS=void 0;var wc=In(),ch=zs(),lh=oh(R()),Z=Pn(),bt=(0,lh.default)("socket.io:namespace");Ee.RESERVED_EVENTS=new Set(["connect","connection","new_namespace"]);var Nn=class extends ch.StrictEventEmitter{constructor(e,t){super(),this.sockets=new Map,this._preConnectSockets=new Map,this._fns=[],this._ids=0,this.server=e,this.name=t,this._initAdapter()}_initAdapter(){this.adapter=new(this.server.adapter())(this),Promise.resolve(this.adapter.init()).catch(e=>{bt("error while initializing adapter: %s",e)})}use(e){return this._fns.push(e),this}run(e,t){if(!this._fns.length)return t();let i=this._fns.slice(0);function n(a){i[a](e,r=>{if(r)return t(r);if(!i[a+1])return t();n(a+1)})}n(0)}to(e){return new Z.BroadcastOperator(this.adapter).to(e)}in(e){return new Z.BroadcastOperator(this.adapter).in(e)}except(e){return new Z.BroadcastOperator(this.adapter).except(e)}async _add(e,t,i){var n;bt("adding socket to nsp %s",this.name);let a=await this._createSocket(e,t);if(this._preConnectSockets.set(a.id,a),!((n=this.server.opts.connectionStateRecovery)===null||n===void 0)&&n.skipMiddlewares&&a.recovered&&e.conn.readyState==="open")return this._doConnect(a,i);this.run(a,r=>{process.nextTick(()=>{if(e.conn.readyState!=="open"){bt("next called after client was closed - ignoring socket"),a._cleanup();return}if(r)return bt("middleware error, sending CONNECT_ERROR packet to the client"),a._cleanup(),e.conn.protocol===3?a._error(r.data||r.message):a._error({message:r.message,data:r.data});this._doConnect(a,i)})})}async _createSocket(e,t){let i=t.pid,n=t.offset;if(this.server.opts.connectionStateRecovery&&typeof i=="string"&&typeof n=="string"){let a;try{a=await this.adapter.restoreSession(i,n)}catch(r){bt("error while restoring session: %s",r)}if(a)return bt("connection state recovered for sid %s",a.sid),new wc.Socket(this,e,t,a)}return new wc.Socket(this,e,t)}_doConnect(e,t){this._preConnectSockets.delete(e.id),this.sockets.set(e.id,e),e._onconnect(),t&&t(e),this.emitReserved("connect",e),this.emitReserved("connection",e)}_remove(e){this.sockets.delete(e.id)||this._preConnectSockets.delete(e.id)}emit(e,...t){return new Z.BroadcastOperator(this.adapter).emit(e,...t)}send(...e){return this.emit("message",...e),this}write(...e){return this.emit("message",...e),this}serverSideEmit(e,...t){if(Ee.RESERVED_EVENTS.has(e))throw new Error(`"${String(e)}" is a reserved event name`);return t.unshift(e),this.adapter.serverSideEmit(t),!0}serverSideEmitWithAck(e,...t){return new Promise((i,n)=>{t.push((a,r)=>a?(a.responses=r,n(a)):i(r)),this.serverSideEmit(e,...t)})}_onServerSideEmit(e){super.emitUntyped.apply(this,e)}allSockets(){return new Z.BroadcastOperator(this.adapter).allSockets()}compress(e){return new Z.BroadcastOperator(this.adapter).compress(e)}get volatile(){return new Z.BroadcastOperator(this.adapter).volatile}get local(){return new Z.BroadcastOperator(this.adapter).local}timeout(e){return new Z.BroadcastOperator(this.adapter).timeout(e)}fetchSockets(){return new Z.BroadcastOperator(this.adapter).fetchSockets()}socketsJoin(e){return new Z.BroadcastOperator(this.adapter).socketsJoin(e)}socketsLeave(e){return new Z.BroadcastOperator(this.adapter).socketsLeave(e)}disconnectSockets(e=!1){return new Z.BroadcastOperator(this.adapter).disconnectSockets(e)}};Ee.Namespace=Nn});var Cc=x(Ft=>{"use strict";Object.defineProperty(Ft,"__esModule",{value:!0});Ft.encode=Ln;Ft.decode=ph;Ft.yeast=uh;var Ec="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-_".split(""),Gs=64,kc={},_c=0,Ne=0,Sc;function Ln(s){let e="";do e=Ec[s%Gs]+e,s=Math.floor(s/Gs);while(s>0);return e}function ph(s){let e=0;for(Ne=0;Ne<s.length;Ne++)e=e*Gs+kc[s.charAt(Ne)];return e}function uh(){let s=Ln(+new Date);return s!==Sc?(_c=0,Sc=s):s+"."+Ln(_c++)}for(;Ne<Gs;Ne++)kc[Ec[Ne]]=Ne});var qn=x(yt=>{"use strict";var Mn;Object.defineProperty(yt,"__esModule",{value:!0});yt.SessionAwareAdapter=yt.Adapter=void 0;var dh=require("events"),fh=Cc(),Ks=un(),mh=typeof((Mn=Ks?.Sender)===null||Mn===void 0?void 0:Mn.frame)=="function",Ys=class extends dh.EventEmitter{constructor(e){super(),this.nsp=e,this.rooms=new Map,this.sids=new Map,this.encoder=e.server.encoder}init(){}close(){}serverCount(){return Promise.resolve(1)}addAll(e,t){this.sids.has(e)||this.sids.set(e,new Set);for(let i of t)this.sids.get(e).add(i),this.rooms.has(i)||(this.rooms.set(i,new Set),this.emit("create-room",i)),this.rooms.get(i).has(e)||(this.rooms.get(i).add(e),this.emit("join-room",i,e))}del(e,t){this.sids.has(e)&&this.sids.get(e).delete(t),this._del(t,e)}_del(e,t){let i=this.rooms.get(e);i!=null&&(i.delete(t)&&this.emit("leave-room",e,t),i.size===0&&this.rooms.delete(e)&&this.emit("delete-room",e))}delAll(e){if(this.sids.has(e)){for(let t of this.sids.get(e))this._del(t,e);this.sids.delete(e)}}broadcast(e,t){let i=t.flags||{},n={preEncoded:!0,volatile:i.volatile,compress:i.compress};e.nsp=this.nsp.name;let a=this._encode(e,n);this.apply(t,r=>{typeof r.notifyOutgoingListeners=="function"&&r.notifyOutgoingListeners(e),r.client.writeToEngine(a,n)})}broadcastWithAck(e,t,i,n){let a=t.flags||{},r={preEncoded:!0,volatile:a.volatile,compress:a.compress};e.nsp=this.nsp.name,e.id=this.nsp._ids++;let o=this._encode(e,r),c=0;this.apply(t,l=>{c++,l.acks.set(e.id,n),typeof l.notifyOutgoingListeners=="function"&&l.notifyOutgoingListeners(e),l.client.writeToEngine(o,r)}),i(c)}_encode(e,t){let i=this.encoder.encode(e);if(mh&&i.length===1&&typeof i[0]=="string"){let n=Buffer.from("4"+i[0]);t.wsPreEncodedFrame=Ks.Sender.frame(n,{readOnly:!1,mask:!1,rsv1:!1,opcode:1,fin:!0})}return i}sockets(e){let t=new Set;return this.apply({rooms:e},i=>{t.add(i.id)}),Promise.resolve(t)}socketRooms(e){return this.sids.get(e)}fetchSockets(e){let t=[];return this.apply(e,i=>{t.push(i)}),Promise.resolve(t)}addSockets(e,t){this.apply(e,i=>{i.join(t)})}delSockets(e,t){this.apply(e,i=>{t.forEach(n=>i.leave(n))})}disconnectSockets(e,t){this.apply(e,i=>{i.disconnect(t)})}apply(e,t){let i=e.rooms,n=this.computeExceptSids(e.except);if(i.size){let a=new Set;for(let r of i)if(this.rooms.has(r))for(let o of this.rooms.get(r)){if(a.has(o)||n.has(o))continue;let c=this.nsp.sockets.get(o);c&&(t(c),a.add(o))}}else for(let[a]of this.sids){if(n.has(a))continue;let r=this.nsp.sockets.get(a);r&&t(r)}}computeExceptSids(e){let t=new Set;if(e&&e.size>0)for(let i of e)this.rooms.has(i)&&this.rooms.get(i).forEach(n=>t.add(n));return t}serverSideEmit(e){console.warn("this adapter does not support the serverSideEmit() functionality")}persistSession(e){}restoreSession(e,t){return null}};yt.Adapter=Ys;var Dn=class extends Ys{constructor(e){super(e),this.nsp=e,this.sessions=new Map,this.packets=[],this.maxDisconnectionDuration=e.server.opts.connectionStateRecovery.maxDisconnectionDuration,setInterval(()=>{let i=Date.now()-this.maxDisconnectionDuration;this.sessions.forEach((n,a)=>{n.disconnectedAt<i&&this.sessions.delete(a)});for(let n=this.packets.length-1;n>=0;n--)if(this.packets[n].emittedAt<i){this.packets.splice(0,n+1);break}},60*1e3).unref()}persistSession(e){e.disconnectedAt=Date.now(),this.sessions.set(e.pid,e)}restoreSession(e,t){let i=this.sessions.get(e);if(!i)return null;if(i.disconnectedAt+this.maxDisconnectionDuration<Date.now())return this.sessions.delete(e),null;let a=this.packets.findIndex(o=>o.id===t);if(a===-1)return null;let r=[];for(let o=a+1;o<this.packets.length;o++){let c=this.packets[o];hh(i.rooms,c.opts)&&r.push(c.data)}return Promise.resolve(Object.assign(Object.assign({},i),{missedPackets:r}))}broadcast(e,t){var i;let n=e.type===2,a=e.id===void 0,r=((i=t.flags)===null||i===void 0?void 0:i.volatile)===void 0;if(n&&a&&r){let o=(0,fh.yeast)();e.data.push(o),this.packets.push({id:o,opts:t,data:e.data,emittedAt:Date.now()})}super.broadcast(e,t)}};yt.SessionAwareAdapter=Dn;function hh(s,e){let t=e.rooms.size===0||s.some(n=>e.rooms.has(n)),i=s.every(n=>!e.except.has(n));return t&&i}});var Tc=x(xe=>{"use strict";var xh=xe&&xe.__rest||function(s,e){var t={};for(var i in s)Object.prototype.hasOwnProperty.call(s,i)&&e.indexOf(i)<0&&(t[i]=s[i]);if(s!=null&&typeof Object.getOwnPropertySymbols=="function")for(var n=0,i=Object.getOwnPropertySymbols(s);n<i.length;n++)e.indexOf(i[n])<0&&Object.prototype.propertyIsEnumerable.call(s,i[n])&&(t[i[n]]=s[i[n]]);return t};Object.defineProperty(xe,"__esModule",{value:!0});xe.ClusterAdapterWithHeartbeat=xe.ClusterAdapter=xe.MessageType=void 0;var vh=qn(),gh=R(),bh=require("crypto"),T=(0,gh.debug)("socket.io-adapter"),yh="emitter",Xs=5e3;function _t(){return(0,bh.randomBytes)(8).toString("hex")}var b;(function(s){s[s.INITIAL_HEARTBEAT=1]="INITIAL_HEARTBEAT",s[s.HEARTBEAT=2]="HEARTBEAT",s[s.BROADCAST=3]="BROADCAST",s[s.SOCKETS_JOIN=4]="SOCKETS_JOIN",s[s.SOCKETS_LEAVE=5]="SOCKETS_LEAVE",s[s.DISCONNECT_SOCKETS=6]="DISCONNECT_SOCKETS",s[s.FETCH_SOCKETS=7]="FETCH_SOCKETS",s[s.FETCH_SOCKETS_RESPONSE=8]="FETCH_SOCKETS_RESPONSE",s[s.SERVER_SIDE_EMIT=9]="SERVER_SIDE_EMIT",s[s.SERVER_SIDE_EMIT_RESPONSE=10]="SERVER_SIDE_EMIT_RESPONSE",s[s.BROADCAST_CLIENT_COUNT=11]="BROADCAST_CLIENT_COUNT",s[s.BROADCAST_ACK=12]="BROADCAST_ACK",s[s.ADAPTER_CLOSE=13]="ADAPTER_CLOSE"})(b||(xe.MessageType=b={}));function Ge(s){return{rooms:[...s.rooms],except:[...s.except],flags:s.flags}}function wt(s){return{rooms:new Set(s.rooms),except:new Set(s.except),flags:s.flags}}var Js=class extends vh.Adapter{constructor(e){super(e),this.requests=new Map,this.ackRequests=new Map,this.uid=_t()}onMessage(e,t){if(e.uid===this.uid)return T("[%s] ignore message from self",this.uid);if(e.nsp!==this.nsp.name)return T("[%s] ignore message from another namespace (%s)",this.uid,e.nsp);switch(T("[%s] new event of type %d from %s",this.uid,e.type,e.uid),e.type){case b.BROADCAST:{if(e.data.requestId!==void 0)super.broadcastWithAck(e.data.packet,wt(e.data.opts),n=>{T("[%s] waiting for %d client acknowledgements",this.uid,n),this.publishResponse(e.uid,{type:b.BROADCAST_CLIENT_COUNT,data:{requestId:e.data.requestId,clientCount:n}})},n=>{T("[%s] received acknowledgement with value %j",this.uid,n),this.publishResponse(e.uid,{type:b.BROADCAST_ACK,data:{requestId:e.data.requestId,packet:n}})});else{let n=e.data.packet,a=wt(e.data.opts);this.addOffsetIfNecessary(n,a,t),super.broadcast(n,a)}break}case b.SOCKETS_JOIN:super.addSockets(wt(e.data.opts),e.data.rooms);break;case b.SOCKETS_LEAVE:super.delSockets(wt(e.data.opts),e.data.rooms);break;case b.DISCONNECT_SOCKETS:super.disconnectSockets(wt(e.data.opts),e.data.close);break;case b.FETCH_SOCKETS:{T("[%s] calling fetchSockets with opts %j",this.uid,e.data.opts),super.fetchSockets(wt(e.data.opts)).then(i=>{this.publishResponse(e.uid,{type:b.FETCH_SOCKETS_RESPONSE,data:{requestId:e.data.requestId,sockets:i.map(n=>{let a=n.handshake,{sessionStore:r}=a,o=xh(a,["sessionStore"]);return{id:n.id,handshake:o,rooms:[...n.rooms],data:n.data}})}})});break}case b.SERVER_SIDE_EMIT:{let i=e.data.packet;if(!(e.data.requestId!==void 0)){this.nsp._onServerSideEmit(i);return}let a=!1,r=o=>{a||(a=!0,T("[%s] calling acknowledgement with %j",this.uid,o),this.publishResponse(e.uid,{type:b.SERVER_SIDE_EMIT_RESPONSE,data:{requestId:e.data.requestId,packet:o}}))};this.nsp._onServerSideEmit([...i,r]);break}case b.BROADCAST_CLIENT_COUNT:case b.BROADCAST_ACK:case b.FETCH_SOCKETS_RESPONSE:case b.SERVER_SIDE_EMIT_RESPONSE:this.onResponse(e);break;default:T("[%s] unknown message type: %s",this.uid,e.type)}}onResponse(e){var t,i;let n=e.data.requestId;switch(T("[%s] received response %s to request %s",this.uid,e.type,n),e.type){case b.BROADCAST_CLIENT_COUNT:{(t=this.ackRequests.get(n))===null||t===void 0||t.clientCountCallback(e.data.clientCount);break}case b.BROADCAST_ACK:{(i=this.ackRequests.get(n))===null||i===void 0||i.ack(e.data.packet);break}case b.FETCH_SOCKETS_RESPONSE:{let a=this.requests.get(n);if(!a)return;a.current++,e.data.sockets.forEach(r=>a.responses.push(r)),a.current===a.expected&&(clearTimeout(a.timeout),a.resolve(a.responses),this.requests.delete(n));break}case b.SERVER_SIDE_EMIT_RESPONSE:{let a=this.requests.get(n);if(!a)return;a.current++,a.responses.push(e.data.packet),a.current===a.expected&&(clearTimeout(a.timeout),a.resolve(null,a.responses),this.requests.delete(n));break}default:T("[%s] unknown response type: %s",this.uid,e.type)}}async broadcast(e,t){var i;if(!((i=t.flags)===null||i===void 0?void 0:i.local))try{let a=await this.publishAndReturnOffset({type:b.BROADCAST,data:{packet:e,opts:Ge(t)}});this.addOffsetIfNecessary(e,t,a)}catch(a){return T("[%s] error while broadcasting message: %s",this.uid,a.message)}super.broadcast(e,t)}addOffsetIfNecessary(e,t,i){var n;if(!this.nsp.server.opts.connectionStateRecovery)return;let a=e.type===2,r=e.id===void 0,o=((n=t.flags)===null||n===void 0?void 0:n.volatile)===void 0;a&&r&&o&&e.data.push(i)}broadcastWithAck(e,t,i,n){var a;if(!((a=t?.flags)===null||a===void 0?void 0:a.local)){let o=_t();this.ackRequests.set(o,{clientCountCallback:i,ack:n}),this.publish({type:b.BROADCAST,data:{packet:e,requestId:o,opts:Ge(t)}}),setTimeout(()=>{this.ackRequests.delete(o)},t.flags.timeout)}super.broadcastWithAck(e,t,i,n)}async addSockets(e,t){var i;if(!((i=e.flags)===null||i===void 0?void 0:i.local))try{await this.publishAndReturnOffset({type:b.SOCKETS_JOIN,data:{opts:Ge(e),rooms:t}})}catch(a){T("[%s] error while publishing message: %s",this.uid,a.message)}super.addSockets(e,t)}async delSockets(e,t){var i;if(!((i=e.flags)===null||i===void 0?void 0:i.local))try{await this.publishAndReturnOffset({type:b.SOCKETS_LEAVE,data:{opts:Ge(e),rooms:t}})}catch(a){T("[%s] error while publishing message: %s",this.uid,a.message)}super.delSockets(e,t)}async disconnectSockets(e,t){var i;if(!((i=e.flags)===null||i===void 0?void 0:i.local))try{await this.publishAndReturnOffset({type:b.DISCONNECT_SOCKETS,data:{opts:Ge(e),close:t}})}catch(a){T("[%s] error while publishing message: %s",this.uid,a.message)}super.disconnectSockets(e,t)}async fetchSockets(e){var t;let[i,n]=await Promise.all([super.fetchSockets(e),this.serverCount()]),a=n-1;if(!((t=e.flags)===null||t===void 0)&&t.local||a<=0)return i;let r=_t();return new Promise((o,c)=>{let l=setTimeout(()=>{let u=this.requests.get(r);u&&(c(new Error(`timeout reached: only ${u.current} responses received out of ${u.expected}`)),this.requests.delete(r))},e.flags.timeout||Xs),p={type:b.FETCH_SOCKETS,resolve:o,timeout:l,current:0,expected:a,responses:i};this.requests.set(r,p),this.publish({type:b.FETCH_SOCKETS,data:{opts:Ge(e),requestId:r}})})}async serverSideEmit(e){if(!(typeof e[e.length-1]=="function"))return this.publish({type:b.SERVER_SIDE_EMIT,data:{packet:e}});let i=e.pop(),n=await this.serverCount()-1;if(T('[%s] waiting for %d responses to "serverSideEmit" request',this.uid,n),n<=0)return i(null,[]);let a=_t(),r=setTimeout(()=>{let c=this.requests.get(a);c&&(i(new Error(`timeout reached: only ${c.current} responses received out of ${c.expected}`),c.responses),this.requests.delete(a))},Xs),o={type:b.SERVER_SIDE_EMIT,resolve:i,timeout:r,current:0,expected:n,responses:[]};this.requests.set(a,o),this.publish({type:b.SERVER_SIDE_EMIT,data:{requestId:a,packet:e}})}publish(e){T("[%s] sending message %s",this.uid,e.type),this.publishAndReturnOffset(e).catch(t=>{T("[%s] error while publishing message: %s",this.uid,t)})}publishAndReturnOffset(e){return e.uid=this.uid,e.nsp=this.nsp.name,this.doPublish(e)}publishResponse(e,t){t.uid=this.uid,t.nsp=this.nsp.name,T("[%s] sending response %s to %s",this.uid,t.type,e),this.doPublishResponse(e,t).catch(i=>{T("[%s] error while publishing response: %s",this.uid,i)})}};xe.ClusterAdapter=Js;var Fn=class extends Js{constructor(e,t){super(e),this.nodesMap=new Map,this.customRequests=new Map,this._opts=Object.assign({heartbeatInterval:5e3,heartbeatTimeout:1e4},t),this.cleanupTimer=setInterval(()=>{let i=Date.now();this.nodesMap.forEach((n,a)=>{i-n>this._opts.heartbeatTimeout&&(T("[%s] node %s seems down",this.uid,a),this.removeNode(a))})},1e3)}init(){this.publish({type:b.INITIAL_HEARTBEAT})}scheduleHeartbeat(){this.heartbeatTimer?this.heartbeatTimer.refresh():this.heartbeatTimer=setTimeout(()=>{this.publish({type:b.HEARTBEAT})},this._opts.heartbeatInterval)}close(){this.publish({type:b.ADAPTER_CLOSE}),clearTimeout(this.heartbeatTimer),this.cleanupTimer&&clearInterval(this.cleanupTimer)}onMessage(e,t){if(e.uid===this.uid)return T("[%s] ignore message from self",this.uid);switch(e.uid&&e.uid!==yh&&this.nodesMap.set(e.uid,Date.now()),e.type){case b.INITIAL_HEARTBEAT:this.publish({type:b.HEARTBEAT});break;case b.HEARTBEAT:break;case b.ADAPTER_CLOSE:this.removeNode(e.uid);break;default:super.onMessage(e,t)}}serverCount(){return Promise.resolve(1+this.nodesMap.size)}publish(e){return this.scheduleHeartbeat(),super.publish(e)}async serverSideEmit(e){if(!(typeof e[e.length-1]=="function"))return this.publish({type:b.SERVER_SIDE_EMIT,data:{packet:e}});let i=e.pop(),n=this.nodesMap.size;if(T('[%s] waiting for %d responses to "serverSideEmit" request',this.uid,n),n<=0)return i(null,[]);let a=_t(),r=setTimeout(()=>{let c=this.customRequests.get(a);c&&(i(new Error(`timeout reached: missing ${c.missingUids.size} responses`),c.responses),this.customRequests.delete(a))},Xs),o={type:b.SERVER_SIDE_EMIT,resolve:i,timeout:r,missingUids:new Set([...this.nodesMap.keys()]),responses:[]};this.customRequests.set(a,o),this.publish({type:b.SERVER_SIDE_EMIT,data:{requestId:a,packet:e}})}async fetchSockets(e){var t;let[i,n]=await Promise.all([super.fetchSockets({rooms:e.rooms,except:e.except,flags:{local:!0}}),this.serverCount()]),a=n-1;if(!((t=e.flags)===null||t===void 0)&&t.local||a<=0)return i;let r=_t();return new Promise((o,c)=>{let l=setTimeout(()=>{let u=this.customRequests.get(r);u&&(c(new Error(`timeout reached: missing ${u.missingUids.size} responses`)),this.customRequests.delete(r))},e.flags.timeout||Xs),p={type:b.FETCH_SOCKETS,resolve:o,timeout:l,missingUids:new Set([...this.nodesMap.keys()]),responses:i};this.customRequests.set(r,p),this.publish({type:b.FETCH_SOCKETS,data:{opts:Ge(e),requestId:r}})})}onResponse(e){let t=e.data.requestId;switch(T("[%s] received response %s to request %s",this.uid,e.type,t),e.type){case b.FETCH_SOCKETS_RESPONSE:{let i=this.customRequests.get(t);if(!i)return;e.data.sockets.forEach(n=>i.responses.push(n)),i.missingUids.delete(e.uid),i.missingUids.size===0&&(clearTimeout(i.timeout),i.resolve(i.responses),this.customRequests.delete(t));break}case b.SERVER_SIDE_EMIT_RESPONSE:{let i=this.customRequests.get(t);if(!i)return;i.responses.push(e.data.packet),i.missingUids.delete(e.uid),i.missingUids.size===0&&(clearTimeout(i.timeout),i.resolve(null,i.responses),this.customRequests.delete(t));break}default:super.onResponse(e)}}removeNode(e){this.customRequests.forEach((t,i)=>{t.missingUids.delete(e),t.missingUids.size===0&&(clearTimeout(t.timeout),t.type===b.FETCH_SOCKETS?t.resolve(t.responses):t.type===b.SERVER_SIDE_EMIT&&t.resolve(null,t.responses),this.customRequests.delete(i))}),this.nodesMap.delete(e)}};xe.ClusterAdapterWithHeartbeat=Fn});var Qs=x(ae=>{"use strict";Object.defineProperty(ae,"__esModule",{value:!0});ae.MessageType=ae.ClusterAdapterWithHeartbeat=ae.ClusterAdapter=ae.SessionAwareAdapter=ae.Adapter=void 0;var Oc=qn();Object.defineProperty(ae,"Adapter",{enumerable:!0,get:function(){return Oc.Adapter}});Object.defineProperty(ae,"SessionAwareAdapter",{enumerable:!0,get:function(){return Oc.SessionAwareAdapter}});var Un=Tc();Object.defineProperty(ae,"ClusterAdapter",{enumerable:!0,get:function(){return Un.ClusterAdapter}});Object.defineProperty(ae,"ClusterAdapterWithHeartbeat",{enumerable:!0,get:function(){return Un.ClusterAdapterWithHeartbeat}});Object.defineProperty(ae,"MessageType",{enumerable:!0,get:function(){return Un.MessageType}})});var Pc=x(St=>{"use strict";var wh=St&&St.__importDefault||function(s){return s&&s.__esModule?s:{default:s}};Object.defineProperty(St,"__esModule",{value:!0});St.ParentNamespace=void 0;var Rc=Bn(),_h=Qs(),Sh=wh(R()),Ac=(0,Sh.default)("socket.io:parent-namespace"),Zs=class s extends Rc.Namespace{constructor(e){super(e,"/_"+s.count++),this.children=new Set}_initAdapter(){this.adapter=new Hn(this)}emit(e,...t){return this.children.forEach(i=>{i.emit(e,...t)}),!0}createChild(e){Ac("creating child namespace %s",e);let t=new Rc.Namespace(this.server,e);if(this._fns.forEach(i=>t.use(i)),this.listeners("connect").forEach(i=>t.on("connect",i)),this.listeners("connection").forEach(i=>t.on("connection",i)),this.children.add(t),this.server._opts.cleanupEmptyChildNamespaces){let i=t._remove;t._remove=n=>{i.call(t,n),t.sockets.size===0&&(Ac("closing child namespace %s",e),t.adapter.close(),this.server._nsps.delete(t.name),this.children.delete(t))}}return this.server._nsps.set(e,t),this.server.sockets.emitReserved("new_namespace",t),t}fetchSockets(){throw new Error("fetchSockets() is not supported on parent namespaces")}};St.ParentNamespace=Zs;Zs.count=0;var Hn=class extends _h.Adapter{broadcast(e,t){this.nsp.children.forEach(i=>{i.adapter.broadcast(e,t)})}}});var Mc=x(Ye=>{"use strict";var Eh=Ye&&Ye.__importDefault||function(s){return s&&s.__esModule?s:{default:s}};Object.defineProperty(Ye,"__esModule",{value:!0});Ye.patchAdapter=Ch;Ye.restoreAdapter=Th;Ye.serveFile=Rh;var Ke=Qs(),jc=require("fs"),kh=Eh(R()),ei=(0,kh.default)("socket.io:adapter-uws"),zn="",{addAll:Nc,del:Bc,broadcast:Lc}=Ke.Adapter.prototype;function Ch(s){Ke.Adapter.prototype.addAll=function(e,t){let i=!this.sids.has(e);Nc.call(this,e,t);let n=this.nsp.sockets.get(e)||this.nsp._preConnectSockets.get(e);if(n){if(n.conn.transport.name==="websocket"){Ic(this.nsp.name,n,i,t);return}i&&n.conn.on("upgrade",()=>{let a=this.sids.get(e);a&&Ic(this.nsp.name,n,i,a)})}},Ke.Adapter.prototype.del=function(e,t){Bc.call(this,e,t);let i=this.nsp.sockets.get(e)||this.nsp._preConnectSockets.get(e);if(i&&i.conn.transport.name==="websocket"){let n=i.conn.id,a=i.conn.transport.socket,r=`${this.nsp.name}${zn}${t}`;ei("unsubscribe connection %s from topic %s",n,r),a.unsubscribe(r)}},Ke.Adapter.prototype.broadcast=function(e,t){if(!(t.rooms.size<=1&&t.except.size===0)){Lc.call(this,e,t);return}let n=t.flags||{},a={preEncoded:!0,volatile:n.volatile,compress:n.compress};e.nsp=this.nsp.name;let r=this.encoder.encode(e),o=t.rooms.size===0?this.nsp.name:`${this.nsp.name}${zn}${t.rooms.keys().next().value}`;ei("fast publish to %s",o),r.forEach(c=>{let l=typeof c!="string";s.publish(o,l?c:"4"+c,l)}),this.apply(t,c=>{c.conn.transport.name!=="websocket"&&c.client.writeToEngine(r,a)})}}function Ic(s,e,t,i){let n=e.conn.id,a=e.conn.transport.socket;t&&(ei("subscribe connection %s to topic %s",n,s),a.subscribe(s)),i.forEach(r=>{let o=`${s}${zn}${r}`;ei("subscribe connection %s to topic %s",n,o),a.subscribe(o)})}function Th(){Ke.Adapter.prototype.addAll=Nc,Ke.Adapter.prototype.del=Bc,Ke.Adapter.prototype.broadcast=Lc}var Oh=s=>{let{buffer:e,byteOffset:t,byteLength:i}=s;return e.slice(t,t+i)};function Rh(s,e){let{size:t}=(0,jc.statSync)(e),i=(0,jc.createReadStream)(e),n=()=>!i.destroyed&&i.destroy(),a=o=>{throw n(),o},r=o=>{let c=Oh(o);s.cork(()=>{let l=s.getWriteOffset(),[p,u]=s.tryEnd(c,t);!u&&!p&&(i.pause(),s.onWritable(d=>{let[h,m]=s.tryEnd(c.slice(d-l),t);return!m&&h&&i.resume(),h}))})};s.onAborted(n),i.on("data",r).on("error",a).on("end",n)}});var Dc=x((og,Ah)=>{Ah.exports={name:"socket.io",version:"4.8.3",description:"node.js realtime framework server",keywords:["realtime","framework","websocket","tcp","events","socket","io"],files:["dist/","client-dist/","wrapper.mjs","!**/*.tsbuildinfo"],directories:{doc:"docs/",example:"example/",lib:"lib/",test:"test/"},type:"commonjs",main:"./dist/index.js",exports:{".":{types:"./dist/index.d.ts",import:"./wrapper.mjs",require:"./dist/index.js"},"./package.json":"./package.json"},types:"./dist/index.d.ts",license:"MIT",homepage:"https://github.com/socketio/socket.io/tree/main/packages/socket.io#readme",repository:{type:"git",url:"git+https://github.com/socketio/socket.io.git"},bugs:{url:"https://github.com/socketio/socket.io/issues"},scripts:{compile:"rimraf ./dist && tsc",test:"npm run format:check && npm run compile && npm run test:types && npm run test:unit","test:types":"tsd","test:unit":"nyc mocha --import=tsx --reporter spec --slow 200 --bail --timeout 10000 test/index.ts","format:check":'prettier --check "lib/**/*.ts" "test/**/*.ts"',"format:fix":'prettier --write "lib/**/*.ts" "test/**/*.ts"',prepack:"npm run compile"},dependencies:{accepts:"~1.3.4",base64id:"~2.0.0",cors:"~2.8.5",debug:"~4.4.1","engine.io":"~6.6.0","socket.io-adapter":"~2.5.2","socket.io-parser":"~4.2.4"},contributors:[{name:"Guillermo Rauch",email:"rauchg@gmail.com"},{name:"Arnout Kazemier",email:"info@3rd-eden.com"},{name:"Vladimir Dronnikov",email:"dronnikov@gmail.com"},{name:"Einar Otto Stangvik",email:"einaros@gmail.com"}],engines:{node:">=10.2.0"},tsd:{directory:"test"}}});var Vc=x((q,Ut)=>{"use strict";var Ph=q&&q.__createBinding||(Object.create?(function(s,e,t,i){i===void 0&&(i=t);var n=Object.getOwnPropertyDescriptor(e,t);(!n||("get"in n?!e.__esModule:n.writable||n.configurable))&&(n={enumerable:!0,get:function(){return e[t]}}),Object.defineProperty(s,i,n)}):(function(s,e,t,i){i===void 0&&(i=t),s[i]=e[t]})),jh=q&&q.__setModuleDefault||(Object.create?(function(s,e){Object.defineProperty(s,"default",{enumerable:!0,value:e})}):function(s,e){s.default=e}),Ih=q&&q.__importStar||function(s){if(s&&s.__esModule)return s;var e={};if(s!=null)for(var t in s)t!=="default"&&Object.prototype.hasOwnProperty.call(s,t)&&Ph(e,s,t);return jh(e,s),e},Vn=q&&q.__importDefault||function(s){return s&&s.__esModule?s:{default:s}};Object.defineProperty(q,"__esModule",{value:!0});q.Namespace=q.Socket=q.Server=void 0;var Nh=Vn(require("http")),Bh=require("fs"),Wn=require("zlib"),Lh=ts(),ti=require("stream"),qc=require("path"),Fc=cc(),Mh=vc(),Uc=require("events"),Gn=Bn();Object.defineProperty(q,"Namespace",{enumerable:!0,get:function(){return Gn.Namespace}});var Dh=Pc(),Hc=Qs(),qh=Ih(qt()),Fh=Vn(R()),$c=In();Object.defineProperty(q,"Socket",{enumerable:!0,get:function(){return $c.Socket}});var Uh=zs(),$n=Mc(),Hh=Vn(fn()),H=(0,Fh.default)("socket.io:server"),zc=Dc().version,Wc=/\.map/,Et=class s extends Uh.StrictEventEmitter{constructor(e,t={}){super(),this._nsps=new Map,this.parentNsps=new Map,this.parentNamespacesFromRegExp=new Map,typeof e=="object"&&e instanceof Object&&!e.listen&&(t=e,e=void 0),this.path(t.path||"/socket.io"),this.connectTimeout(t.connectTimeout||45e3),this.serveClient(t.serveClient!==!1),this._parser=t.parser||qh,this.encoder=new this._parser.Encoder,this.opts=t,t.connectionStateRecovery?(t.connectionStateRecovery=Object.assign({maxDisconnectionDuration:120*1e3,skipMiddlewares:!0},t.connectionStateRecovery),this.adapter(t.adapter||Hc.SessionAwareAdapter)):this.adapter(t.adapter||Hc.Adapter),t.cleanupEmptyChildNamespaces=!!t.cleanupEmptyChildNamespaces,this.sockets=this.of("/"),(e||typeof e=="number")&&this.attach(e),this.opts.cors&&(this._corsMiddleware=(0,Hh.default)(this.opts.cors))}get _opts(){return this.opts}serveClient(e){return arguments.length?(this._serveClient=e,this):this._serveClient}_checkNamespace(e,t,i){if(this.parentNsps.size===0)return i(!1);let n=this.parentNsps.keys(),a=()=>{let r=n.next();if(r.done)return i(!1);r.value(e,t,(o,c)=>{if(o||!c)return a();if(this._nsps.has(e))return H("dynamic namespace %s already exists",e),i(this._nsps.get(e));let l=this.parentNsps.get(r.value).createChild(e);H("dynamic namespace %s was created",e),i(l)})};a()}path(e){if(!arguments.length)return this._path;this._path=e.replace(/\/$/,"");let t=this._path.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&");return this.clientPathRegex=new RegExp("^"+t+"/socket\\.io(\\.msgpack|\\.esm)?(\\.min)?\\.js(\\.map)?(?:\\?|$)"),this}connectTimeout(e){return e===void 0?this._connectTimeout:(this._connectTimeout=e,this)}adapter(e){if(!arguments.length)return this._adapter;this._adapter=e;for(let t of this._nsps.values())t._initAdapter();return this}listen(e,t={}){return this.attach(e,t)}attach(e,t={}){if(typeof e=="function"){let i="You are trying to attach socket.io to an express request handler function. Please pass a http.Server instance.";throw new Error(i)}if(Number(e)==e&&(e=Number(e)),typeof e=="number"){H("creating http server and binding to %d",e);let i=e;e=Nh.default.createServer((n,a)=>{a.writeHead(404),a.end()}),e.listen(i)}return Object.assign(t,this.opts),t.path=t.path||this._path,this.initEngine(e,t),this}attachApp(e,t={}){Object.assign(t,this.opts),t.path=t.path||this._path,H("creating uWebSockets.js-based engine with opts %j",t);let i=new Fc.uServer(t);i.attach(e,t),this.bind(i),this._serveClient&&e.get(`${this._path}/*`,(n,a)=>{if(!this.clientPathRegex.test(a.getUrl())){a.setYield(!0);return}let r=a.getUrl().replace(this._path,"").replace(/\?.*$/,"").replace(/^\//,""),o=Wc.test(r),c=o?"map":"source",l='"'+zc+'"',p="W/"+l,u=a.getHeader("if-none-match");if(u&&(l===u||p===u)){H("serve client %s 304",c),n.writeStatus("304 Not Modified"),n.end();return}H("serve client %s",c),n.writeHeader("cache-control","public, max-age=0"),n.writeHeader("content-type","application/"+(o?"json":"javascript")+"; charset=utf-8"),n.writeHeader("etag",l);let d=qc.join(__dirname,"../client-dist/",r);(0,$n.serveFile)(n,d)}),(0,$n.patchAdapter)(e)}initEngine(e,t){H("creating engine.io instance with opts %j",t),this.eio=(0,Fc.attach)(e,t),this._serveClient&&this.attachServe(e),this.httpServer=e,this.bind(this.eio)}attachServe(e){H("attaching client serving req handler");let t=e.listeners("request").slice(0);e.removeAllListeners("request"),e.on("request",(i,n)=>{if(this.clientPathRegex.test(i.url))this._corsMiddleware?this._corsMiddleware(i,n,()=>{this.serve(i,n)}):this.serve(i,n);else for(let a=0;a<t.length;a++)t[a].call(e,i,n)})}serve(e,t){let i=e.url.replace(this._path,"").replace(/\?.*$/,""),n=Wc.test(i),a=n?"map":"source",r='"'+zc+'"',o="W/"+r,c=e.headers["if-none-match"];if(c&&(r===c||o===c)){H("serve client %s 304",a),t.writeHead(304),t.end();return}H("serve client %s",a),t.setHeader("Cache-Control","public, max-age=0"),t.setHeader("Content-Type","application/"+(n?"json":"javascript")+"; charset=utf-8"),t.setHeader("ETag",r),s.sendFile(i,e,t)}static sendFile(e,t,i){let n=(0,Bh.createReadStream)(qc.join(__dirname,"../client-dist/",e)),a=Lh(t).encodings(["br","gzip","deflate"]),r=o=>{o&&i.end()};switch(a){case"br":i.writeHead(200,{"content-encoding":"br"}),(0,ti.pipeline)(n,(0,Wn.createBrotliCompress)(),i,r);break;case"gzip":i.writeHead(200,{"content-encoding":"gzip"}),(0,ti.pipeline)(n,(0,Wn.createGzip)(),i,r);break;case"deflate":i.writeHead(200,{"content-encoding":"deflate"}),(0,ti.pipeline)(n,(0,Wn.createDeflate)(),i,r);break;default:i.writeHead(200),(0,ti.pipeline)(n,i,r)}}bind(e){return this.engine=e,this.engine.on("connection",this.onconnection.bind(this)),this}onconnection(e){H("incoming connection with id %s",e.id);let t=new Mh.Client(this,e);return e.protocol===3&&t.connect("/"),this}of(e,t){if(typeof e=="function"||e instanceof RegExp){let n=new Dh.ParentNamespace(this);return H("initializing parent namespace %s",n.name),typeof e=="function"?this.parentNsps.set(e,n):(this.parentNsps.set((a,r,o)=>o(null,e.test(a)),n),this.parentNamespacesFromRegExp.set(e,n)),t&&n.on("connect",t),n}String(e)[0]!=="/"&&(e="/"+e);let i=this._nsps.get(e);if(!i){for(let[n,a]of this.parentNamespacesFromRegExp)if(n.test(e))return H("attaching namespace %s to parent namespace %s",e,n),a.createChild(e);H("initializing namespace %s",e),i=new Gn.Namespace(this,e),this._nsps.set(e,i),e!=="/"&&this.sockets.emitReserved("new_namespace",i)}return t&&i.on("connect",t),i}async close(e){if(await Promise.allSettled([...this._nsps.values()].map(async t=>{t.sockets.forEach(i=>{i._onclose("server shutting down")}),await t.adapter.close()})),this.engine.close(),(0,$n.restoreAdapter)(),this.httpServer)return new Promise(t=>{this.httpServer.close(i=>{e&&e(i),i&&H("server was not running"),t()})});e&&e()}use(e){return this.sockets.use(e),this}to(e){return this.sockets.to(e)}in(e){return this.sockets.in(e)}except(e){return this.sockets.except(e)}send(...e){return this.sockets.emit("message",...e),this}write(...e){return this.sockets.emit("message",...e),this}serverSideEmit(e,...t){return this.sockets.serverSideEmit(e,...t)}serverSideEmitWithAck(e,...t){return this.sockets.serverSideEmitWithAck(e,...t)}allSockets(){return this.sockets.allSockets()}compress(e){return this.sockets.compress(e)}get volatile(){return this.sockets.volatile}get local(){return this.sockets.local}timeout(e){return this.sockets.timeout(e)}fetchSockets(){return this.sockets.fetchSockets()}socketsJoin(e){return this.sockets.socketsJoin(e)}socketsLeave(e){return this.sockets.socketsLeave(e)}disconnectSockets(e=!1){return this.sockets.disconnectSockets(e)}};q.Server=Et;var zh=Object.keys(Uc.EventEmitter.prototype).filter(function(s){return typeof Uc.EventEmitter.prototype[s]=="function"});zh.forEach(function(s){Et.prototype[s]=function(){return this.sockets[s].apply(this.sockets,arguments)}});Ut.exports=(s,e)=>new Et(s,e);Ut.exports.Server=Et;Ut.exports.Namespace=Gn.Namespace;Ut.exports.Socket=$c.Socket});var Xc={};De(Xc,{TileManager:()=>Kn});var si,kt,ii,Yc,Wh,$h,Kn,Jc=Me(()=>{si=M(require("sharp"),1),kt=M(require("fs"),1),ii=M(require("path"),1),Yc=require("url"),Wh=(0,Yc.fileURLToPath)(__importMetaUrl),$h=ii.default.dirname(Wh),Kn=class{constructor(e){this.robot=e,this.tileSize=100,this.lastTileChecksums=new Map,this.lastTileBuffers=new Map,this.screenWidth=0,this.screenHeight=0,this.tilesPerRow=0,this.tilesPerColumn=0,this.totalTiles=0,this.frameCount=0,this.tempDir=ii.default.join($h,"../../temp"),this.compressionQuality=1,this.changeThreshold=1,this.scaleFactor=.99,this.scaledWidth=0,this.scaledHeight=0,this.isProcessing=!1,this.sharedScreenCache=null,this.lastCaptureTime=0,this.CACHE_TTL=100,kt.default.existsSync(this.tempDir)||kt.default.mkdirSync(this.tempDir,{recursive:!0}),this.initializeScreenDimensions()}initializeScreenDimensions(){try{let{width:e,height:t}=this.robot.getScreenSize();this.screenWidth=e,this.screenHeight=t,this.scaledWidth=Math.floor(e*this.scaleFactor),this.scaledHeight=Math.floor(t*this.scaleFactor),this.tilesPerRow=Math.ceil(this.scaledWidth/this.tileSize),this.tilesPerColumn=Math.ceil(this.scaledHeight/this.tileSize),this.totalTiles=this.tilesPerRow*this.tilesPerColumn;let i=100;if(this.totalTiles>i){let n=Math.ceil(Math.sqrt(this.scaledWidth*this.scaledHeight/i));this.tileSize=Math.max(n,120),this.tilesPerRow=Math.ceil(this.scaledWidth/this.tileSize),this.tilesPerColumn=Math.ceil(this.scaledHeight/this.tileSize),this.totalTiles=this.tilesPerRow*this.tilesPerColumn}console.log(`\u{1F5A5}\uFE0F TileManager: ${e}x${t} -> ${this.totalTiles} tiles`)}catch(e){console.error("Screen dimensions error:",e),this.screenWidth=1920,this.screenHeight=1080,this.scaledWidth=1728,this.scaledHeight=972,this.tileSize=120,this.tilesPerRow=Math.ceil(this.scaledWidth/this.tileSize),this.tilesPerColumn=Math.ceil(this.scaledHeight/this.tileSize),this.totalTiles=this.tilesPerRow*this.tilesPerColumn}}async captureFullScreen(){let e=this.robot.getScreenSize(),t,i,n;if(process.platform==="darwin"){let u=this.robot.screen.capture(0,0,1,1);n=u.byteWidth/u.bytesPerPixel,t=Math.floor(e.width*n),i=Math.floor(e.height*n)}else n=1,t=e.width,i=e.height;let a=this.robot.screen.capture(0,0,t,i),r=Buffer.from(a.image);for(let u=0;u<r.length;u+=4){let d=r[u],h=r[u+2];r[u]=h,r[u+2]=d}let o=a.byteWidth/a.bytesPerPixel,c=r,l=o,p=a.height;if(this.scaleFactor<1){let u=Math.floor(o*this.scaleFactor),d=Math.floor(a.height*this.scaleFactor);c=await(0,si.default)(r,{raw:{width:o,height:a.height,channels:a.bytesPerPixel}}).resize(u,d,{kernel:si.default.kernel.lanczos3,fit:"fill"}).raw().toBuffer(),l=u,p=d,this.scaledWidth=u,this.scaledHeight=d,this.tilesPerRow=Math.ceil(u/this.tileSize),this.tilesPerColumn=Math.ceil(d/this.tileSize),this.totalTiles=this.tilesPerRow*this.tilesPerColumn}return{buffer:c,width:l,height:p,channels:a.bytesPerPixel}}async getSharedScreenCapture(){let e=Date.now();return this.sharedScreenCache&&e-this.lastCaptureTime<this.CACHE_TTL?this.sharedScreenCache:(this.sharedScreenCache=await this.captureFullScreen(),this.lastCaptureTime=e,this.sharedScreenCache)}clearScreenCache(){}async detectChangedTiles(){if(this.isProcessing)return[];this.isProcessing=!0;try{let e=await this.getSharedScreenCapture(),t=[],i=[];if(this.frameCount++,this.lastTileChecksums.size===0){let a=[];for(let o=0;o<this.totalTiles;o++)a.push(this.processTileAsync(e,o,!0));let r=await Promise.all(a);return t.push(...r),t}for(let a=0;a<this.totalTiles;a++){let r=await this.extractTile(e,a),o=this.calculateTileChecksum(r.buffer),c=this.lastTileChecksums.get(a);o!==c&&(i.push(a),this.lastTileChecksums.set(a,o))}if(i.length/this.totalTiles>this.changeThreshold){let a=[];for(let o=0;o<this.totalTiles;o++)a.push(this.processTileAsync(e,o,!0));let r=await Promise.all(a);t.push(...r.map(o=>({...o,fullRefresh:!0})))}else if(i.length>0){let a=i.map(o=>this.processTileAsync(e,o,!1)),r=await Promise.all(a);t.push(...r)}return t}finally{this.isProcessing=!1}}async processTileAsync(e,t){let i=await this.extractTile(e,t),n=this.calculateTileChecksum(i.buffer);this.lastTileChecksums.set(t,n),this.lastTileBuffers.set(t,i.buffer);let a=await this.compressTileImage(i.buffer,i.width,i.height),{row:r,col:o}=this.getTilePosition(t);return{type:"tile-update",tileIndex:t,x:o*this.tileSize,y:r*this.tileSize,width:i.width,height:i.height,imageBase64:a,size:Math.round(a.length*.75/1024),timestamp:Date.now(),frameCount:this.frameCount}}calculateTileChecksum(e){let t=0;for(let i=0;i<e.length;i+=64)t+=e[i]||0,t^=e[i+1]||0,t+=(e[i+2]||0)<<1,t^=(e[i+3]||0)<<2;return t>>>0}getTilePosition(e){return{row:Math.floor(e/this.tilesPerRow),col:e%this.tilesPerRow}}async extractTile(e,t){let{row:i,col:n}=this.getTilePosition(t),a=n*this.tileSize,r=i*this.tileSize,o=Math.min(a+this.tileSize,e.width),c=Math.min(r+this.tileSize,e.height),l=o-a,p=c-r,u=Buffer.alloc(l*p*e.channels);for(let d=0;d<p;d++)for(let h=0;h<l;h++){let m=((r+d)*e.width+(a+h))*e.channels,f=(d*l+h)*e.channels;for(let v=0;v<e.channels;v++)u[f+v]=e.buffer[m+v]}return{buffer:u,width:l,height:p,channels:e.channels,tileIndex:t,x:a,y:r}}async compressTileImage(e,t,i){return`data:image/webp;base64,${(await(0,si.default)(e,{raw:{width:t,height:i,channels:4}}).webp({quality:85,effort:2,smartSubsample:!0}).toBuffer()).toString("base64")}`}async getScreenDimensions(){try{let e=await this.captureFullScreen();this.scaledWidth=e.width,this.scaledHeight=e.height,this.tilesPerRow=Math.ceil(e.width/this.tileSize),this.tilesPerColumn=Math.ceil(e.height/this.tileSize),this.totalTiles=this.tilesPerRow*this.tilesPerColumn}catch(e){console.error("Error getting dimensions:",e)}return{width:this.scaledWidth,height:this.scaledHeight,tileWidth:this.tileSize,tileHeight:this.tileSize,tileCount:this.totalTiles,scaleFactor:this.scaleFactor,originalWidth:this.screenWidth,originalHeight:this.screenHeight}}async compareClientTileHashes(e){if(this.isProcessing)return{tiles:[],currentHashes:[],changedIndices:[]};this.isProcessing=!0;try{let t=await this.getSharedScreenCapture(),i=[],n=[];this.frameCount++;let a=new Map;for(let o=0;o<this.totalTiles;o++){let c=await this.extractTile(t,o),l=this.calculateTileChecksum(c.buffer);a.set(o,l),this.lastTileChecksums.set(o,l)}if(!e||e.length===0){let o=[];for(let l=0;l<this.totalTiles;l++)o.push(this.processTileAsync(t,l,!0));let c=await Promise.all(o);return i.push(...c),{tiles:i,currentHashes:Array.from(a.values())}}for(let o=0;o<this.totalTiles;o++)e[o]!==a.get(o)&&n.push(o);if(n.length/this.totalTiles>this.changeThreshold){let o=[];for(let l=0;l<this.totalTiles;l++)o.push(this.processTileAsync(t,l,!0));let c=await Promise.all(o);i.push(...c.map(l=>({...l,fullRefresh:!0})))}else if(n.length>0){let o=n.map(l=>this.processTileAsync(t,l,!1)),c=await Promise.all(o);i.push(...c)}return{tiles:i,currentHashes:Array.from(a.values()),changedIndices:n}}finally{this.isProcessing=!1}}reset(){this.lastTileChecksums.clear(),this.lastTileBuffers.clear(),this.frameCount=0}cleanup(){try{kt.default.existsSync(this.tempDir)&&kt.default.readdirSync(this.tempDir).forEach(t=>kt.default.unlinkSync(ii.default.join(this.tempDir,t)))}catch(e){console.warn("Cleanup error:",e)}}}});var K,Ht=Me(()=>{K={robotSettings:{mouseDelay:2,keyboardDelay:2},throttling:{mouseThrottle:8,keyThrottle:25,typeTextThrottle:100,maxTextLength:1e3},resourceManagement:{inactiveTimeout:12e4,memoryCheckInterval:6e4,memoryWarningThreshold:1e3,maxTimersPerClient:100,maxChunkTimersPerClient:50},streaming:{autoStreamingInterval:100,chunkSize:32,chunkDelay:5,updateDelayAfterAction:200}}});var Qc={};De(Qc,{ResourceManager:()=>Yn});var Yn,Zc=Me(()=>{Ht();Yn=class{constructor(){this.activeClients=new Map,this.activeTimers=new Map,this.chunkTimers=new Map,this.memoryCheckInterval=null}startResourceMonitoring(){this.memoryCheckInterval=setInterval(()=>{let e=process.memoryUsage(),t=Math.round(e.heapUsed/1024/1024);t>K.resourceManagement.memoryWarningThreshold&&(console.warn(`\u26A0\uFE0F High memory: ${t}MB`),this.cleanupInactiveClients())},K.resourceManagement.memoryCheckInterval)}stopResourceMonitoring(){this.memoryCheckInterval&&(clearInterval(this.memoryCheckInterval),this.memoryCheckInterval=null)}addClient(e,t){this.activeClients.set(e,{...t,lastActivity:Date.now()})}getClient(e){return this.activeClients.get(e)}updateClientActivity(e){let t=this.activeClients.get(e);t&&(t.lastActivity=Date.now())}cleanupInactiveClients(){let e=Date.now(),t=K.resourceManagement.inactiveTimeout;for(let[i,n]of this.activeClients.entries())e-n.lastActivity>t&&(console.log(`\u{1F9F9} Cleaning inactive client: ${i}`),this.cleanupClientResources(i,n),this.activeClients.delete(i))}cleanupClientResources(e,t){try{t?.screenInterval&&(clearInterval(t.screenInterval),t.screenInterval=null);let i=this.activeTimers.get(e);i&&(i.forEach(a=>clearTimeout(a)),this.activeTimers.delete(e));let n=this.chunkTimers.get(e);n&&(n.forEach(a=>clearTimeout(a)),this.chunkTimers.delete(e)),t?.tileManager&&(t.tileManager.cleanup(),t.tileManager.reset())}catch(i){console.error(`Error cleaning up ${e}:`,i.message)}}removeClient(e){let t=this.activeClients.get(e);t&&(this.cleanupClientResources(e,t),this.activeClients.delete(e))}getChunkTimers(e){return this.chunkTimers.has(e)||this.chunkTimers.set(e,new Set),this.chunkTimers.get(e)}cleanupAll(){this.stopResourceMonitoring();for(let[e,t]of this.activeClients.entries())this.cleanupClientResources(e,t);this.activeClients.clear(),this.activeTimers.clear(),this.chunkTimers.clear()}}});var el={};De(el,{ScreenUpdateHelper:()=>Xn});var Xn,tl=Me(()=>{Ht();Xn=class{constructor(e){this.resourceManager=e}async sendTilesInChunks(e,t,i,n=!1){if(!t||t.length===0)return;let a=K.streaming.chunkSize,r=[];for(let c=0;c<t.length;c+=a)r.push(t.slice(c,c+a));let o=this.resourceManager.getChunkTimers(e.id);for(let c=0;c<r.length;c++){let l=r[c],p=c===r.length-1,u=setTimeout(()=>{o.delete(u),e.connected&&e.emit("tiles-data",{tiles:l,timestamp:i,forceRefresh:!1,userAction:n,chunkInfo:{chunkIndex:c,totalChunks:r.length,isLastChunk:p}})},c*K.streaming.chunkDelay);o.add(u)}}}});var sl={};De(sl,{MouseHandler:()=>Jn});var Jn,il=Me(()=>{Ht();Jn=class{constructor(e,t){this.robot=e,this.resourceManager=t,this.lastMouseMove=0}setupMouseHandlers(e,t){let i=this.robot;e.on("mouse-move",t(n=>{let a=Date.now();if(!(a-this.lastMouseMove<K.throttling.mouseThrottle)){this.lastMouseMove=a;try{i.moveMouse(n.x,n.y),this.resourceManager.updateClientActivity(e.id)}catch(r){console.error("Mouse move error:",r.message)}}})),e.on("mouse-click",t(async n=>{try{if(!this.resourceManager.getClient(e.id))return;let r=i.getScreenSize(),o=Math.round(n.x/100*r.width),c=Math.round(n.y/100*r.height),l=Math.max(0,Math.min(r.width-1,o)),p=Math.max(0,Math.min(r.height-1,c));i.moveMouse(l,p),i.mouseClick(n.button||"left",n.double||!1),this.resourceManager.updateClientActivity(e.id)}catch(a){console.error("Mouse click error:",a.message)}})),e.on("mouse-press",t(async n=>{try{if(!this.resourceManager.getClient(e.id))return;let r=i.getScreenSize(),o=Math.round(n.x/100*r.width),c=Math.round(n.y/100*r.height),l=Math.max(0,Math.min(r.width-1,o)),p=Math.max(0,Math.min(r.height-1,c));i.moveMouse(l,p),i.mouseToggle("down",n.button||"left"),this.resourceManager.updateClientActivity(e.id)}catch(a){console.error("Mouse press error:",a.message)}})),e.on("mouse-release",t(async n=>{try{if(!this.resourceManager.getClient(e.id))return;let r=i.getScreenSize(),o=Math.round(n.x/100*r.width),c=Math.round(n.y/100*r.height),l=Math.max(0,Math.min(r.width-1,o)),p=Math.max(0,Math.min(r.height-1,c));i.moveMouse(l,p),i.mouseToggle("up",n.button||"left"),this.resourceManager.updateClientActivity(e.id)}catch(a){console.error("Mouse release error:",a.message)}})),e.on("scroll",t(async n=>{try{let{direction:a,amount:r=60,horizontal:o=!1}=n;if(!this.resourceManager.getClient(e.id))return;let l=0,p=0;o||a==="left"||a==="right"?l=a==="right"?r:-r:p=a==="down"?-r:r,i.scrollMouse(l,p),this.resourceManager.updateClientActivity(e.id)}catch(a){console.error("Scroll error:",a.message)}})),e.on("mouse-drag-select",t(n=>{try{let{startX:a,startY:r,endX:o,endY:c}=n,l=i.getScreenSize(),p=Math.round(a/100*l.width),u=Math.round(r/100*l.height),d=Math.round(o/100*l.width),h=Math.round(c/100*l.height),m=Math.max(0,Math.min(l.width-1,p)),f=Math.max(0,Math.min(l.height-1,u)),v=Math.max(0,Math.min(l.width-1,d)),y=Math.max(0,Math.min(l.height-1,h));i.moveMouse(m,f),i.mouseToggle("down","left"),i.dragMouse(v,y),i.mouseToggle("up","left"),this.resourceManager.updateClientActivity(e.id)}catch(a){console.error("Drag selection error:",a.message)}}))}}});var nl={};De(nl,{KeyboardHandler:()=>Qn});var Qn,al=Me(()=>{Ht();Qn=class{constructor(e,t){this.robot=e,this.resourceManager=t,this.lastKeyPress=0,this.lastTypeText=0}setupKeyboardHandlers(e,t){let i=this.robot;e.on("key-press",t(n=>{let a=Date.now();if(!(a-this.lastKeyPress<K.throttling.keyThrottle)){this.lastKeyPress=a;try{if(!n.key||typeof n.key!="string")return;let r=n.key;if(r.length===1){i.keyTap(r,n.modifier||[]);for(let o of n.modifier||[])i.keyToggle(o,"up")}else switch(r.toLowerCase()){case"enter":case"return":i.keyTap("enter");break;case"space":i.keyTap(" ");break;case"backspace":i.keyTap("backspace");break;case"tab":i.keyTap("tab");break;case"escape":i.keyTap("escape");break;default:i.keyTap(r,n.modifier||[])}this.resourceManager.updateClientActivity(e.id)}catch(r){console.error("Key press error:",r.message)}}})),e.on("type-text",t(n=>{let a=Date.now();if(!(a-this.lastTypeText<K.throttling.typeTextThrottle)){this.lastTypeText=a;try{if(!n.text||typeof n.text!="string")return;let r=n.text;r.length>K.throttling.maxTextLength&&(r=r.substring(0,K.throttling.maxTextLength));let o=r.replace(/[\x00-\x08\x0B\x0C\x0E-\x1F\x7F]/g,"");setTimeout(()=>{try{i.typeString(o),this.resourceManager.updateClientActivity(e.id);let c=this.resourceManager.getClient(e.id);c?.tileManager&&c.tileManager.clearScreenCache()}catch(c){console.error("Robot typeString error:",c.message)}},10)}catch(r){console.error("Type text error:",r.message)}}}))}}});var rl={};De(rl,{ScreenHandler:()=>Zn});var Zn,ol=Me(()=>{Zn=class{constructor(e,t){this.resourceManager=e,this.screenUpdateHelper=t}setupScreenHandlers(e,t){e.on("request-screen",t(async()=>{let i=this.resourceManager.getClient(e.id);if(i)try{let n=await i.tileManager.detectChangedTiles();n.length>0&&e.emit("tiles-data",{tiles:n,timestamp:Date.now()}),this.resourceManager.updateClientActivity(e.id)}catch(n){console.error("Tile capture error:",n),e.emit("screen-error",{error:n.message})}})),e.on("request-screen-with-hashes",t(async i=>{let n=this.resourceManager.getClient(e.id);if(n)try{let a=i.tileHashes||[],r=await n.tileManager.compareClientTileHashes(a);r?.tiles?.length>0?e.emit("tiles-data",{tiles:r.tiles,timestamp:Date.now(),currentHashes:r.currentHashes,changedIndices:r.changedIndices}):e.emit("tiles-data",{tiles:[],timestamp:Date.now(),currentHashes:r.currentHashes,changedIndices:[]}),this.resourceManager.updateClientActivity(e.id)}catch(a){console.error("Tile capture with hashes error:",a),e.emit("screen-error",{error:a.message})}})),e.on("start-streaming",t(()=>{let i=this.resourceManager.getClient(e.id);i&&(i.screenInterval&&(clearInterval(i.screenInterval),i.screenInterval=null),console.log("\u{1F680} Remote streaming started"),i.screenInterval=setInterval(async()=>{try{let n=await i.tileManager.detectChangedTiles();if(n.length>0){let a=Date.now();await this.screenUpdateHelper.sendTilesInChunks(e,n,a,!1)}}catch(n){console.error("Auto streaming error:",n)}},400))})),e.on("stop-streaming",()=>{let i=this.resourceManager.getClient(e.id);i&&(i.screenInterval&&(clearInterval(i.screenInterval),i.screenInterval=null),console.log("\u23F9\uFE0F Remote streaming stopped"))}),e.on("get-screen-dimensions",t(async()=>{let i=this.resourceManager.getClient(e.id);if(i)try{let n=await i.tileManager.getScreenDimensions();e.emit("screen-dimensions",n)}catch(n){console.error("Get dimensions error:",n),e.emit("screen-error",{error:n.message})}}))}}});var Nl=x((Ig,sa)=>{"use strict";var rx=Object.prototype.hasOwnProperty,z="~";function Vt(){}Object.create&&(Vt.prototype=Object.create(null),new Vt().__proto__||(z=!1));function ox(s,e,t){this.fn=s,this.context=e,this.once=t||!1}function Il(s,e,t,i,n){if(typeof t!="function")throw new TypeError("The listener must be a function");var a=new ox(t,i||s,n),r=z?z+e:e;return s._events[r]?s._events[r].fn?s._events[r]=[s._events[r],a]:s._events[r].push(a):(s._events[r]=a,s._eventsCount++),s}function li(s,e){--s._eventsCount===0?s._events=new Vt:delete s._events[e]}function F(){this._events=new Vt,this._eventsCount=0}F.prototype.eventNames=function(){var e=[],t,i;if(this._eventsCount===0)return e;for(i in t=this._events)rx.call(t,i)&&e.push(z?i.slice(1):i);return Object.getOwnPropertySymbols?e.concat(Object.getOwnPropertySymbols(t)):e};F.prototype.listeners=function(e){var t=z?z+e:e,i=this._events[t];if(!i)return[];if(i.fn)return[i.fn];for(var n=0,a=i.length,r=new Array(a);n<a;n++)r[n]=i[n].fn;return r};F.prototype.listenerCount=function(e){var t=z?z+e:e,i=this._events[t];return i?i.fn?1:i.length:0};F.prototype.emit=function(e,t,i,n,a,r){var o=z?z+e:e;if(!this._events[o])return!1;var c=this._events[o],l=arguments.length,p,u;if(c.fn){switch(c.once&&this.removeListener(e,c.fn,void 0,!0),l){case 1:return c.fn.call(c.context),!0;case 2:return c.fn.call(c.context,t),!0;case 3:return c.fn.call(c.context,t,i),!0;case 4:return c.fn.call(c.context,t,i,n),!0;case 5:return c.fn.call(c.context,t,i,n,a),!0;case 6:return c.fn.call(c.context,t,i,n,a,r),!0}for(u=1,p=new Array(l-1);u<l;u++)p[u-1]=arguments[u];c.fn.apply(c.context,p)}else{var d=c.length,h;for(u=0;u<d;u++)switch(c[u].once&&this.removeListener(e,c[u].fn,void 0,!0),l){case 1:c[u].fn.call(c[u].context);break;case 2:c[u].fn.call(c[u].context,t);break;case 3:c[u].fn.call(c[u].context,t,i);break;case 4:c[u].fn.call(c[u].context,t,i,n);break;default:if(!p)for(h=1,p=new Array(l-1);h<l;h++)p[h-1]=arguments[h];c[u].fn.apply(c[u].context,p)}}return!0};F.prototype.on=function(e,t,i){return Il(this,e,t,i,!1)};F.prototype.once=function(e,t,i){return Il(this,e,t,i,!0)};F.prototype.removeListener=function(e,t,i,n){var a=z?z+e:e;if(!this._events[a])return this;if(!t)return li(this,a),this;var r=this._events[a];if(r.fn)r.fn===t&&(!n||r.once)&&(!i||r.context===i)&&li(this,a);else{for(var o=0,c=[],l=r.length;o<l;o++)(r[o].fn!==t||n&&!r[o].once||i&&r[o].context!==i)&&c.push(r[o]);c.length?this._events[a]=c.length===1?c[0]:c:li(this,a)}return this};F.prototype.removeAllListeners=function(e){var t;return e?(t=z?z+e:e,this._events[t]&&li(this,t)):(this._events=new Vt,this._eventsCount=0),this};F.prototype.off=F.prototype.removeListener;F.prototype.addListener=F.prototype.on;F.prefixed=z;F.EventEmitter=F;typeof sa<"u"&&(sa.exports=F)});var Ll=x((Ng,Bl)=>{"use strict";Bl.exports=function(e,t){if(t=t.split(":")[0],e=+e,!e)return!1;switch(t){case"http":case"ws":return e!==80;case"https":case"wss":return e!==443;case"ftp":return e!==21;case"gopher":return e!==70;case"file":return!1}return e!==0}});var pi=x(Dl=>{var Ce=Dl,cx=require("url"),Ml=require("util")._extend,lx=Ll(),px=/(^|,)\s*upgrade\s*($|,)/i,ia=/^https|wss/;Ce.isSSL=ia;Ce.setupOutgoing=function(s,e,t,i){s.port=e[i||"target"].port||(ia.test(e[i||"target"].protocol)?443:80),["host","hostname","socketPath","pfx","key","passphrase","cert","ca","ciphers","secureProtocol"].forEach(function(o){s[o]=e[i||"target"][o]}),s.method=e.method||t.method,s.headers=Ml({},t.headers),e.headers&&Ml(s.headers,e.headers),e.auth&&(s.auth=e.auth),e.ca&&(s.ca=e.ca),ia.test(e[i||"target"].protocol)&&(s.rejectUnauthorized=typeof e.secure>"u"?!0:e.secure),s.agent=e.agent||!1,s.localAddress=e.localAddress,s.agent||(s.headers=s.headers||{},(typeof s.headers.connection!="string"||!px.test(s.headers.connection))&&(s.headers.connection="close"));var n=e[i||"target"],a=n&&e.prependPath!==!1&&n.path||"",r=e.toProxy?t.url:cx.parse(t.url).path||"";return r=e.ignorePath?"":r,s.path=Ce.urlJoin(a,r),e.changeOrigin&&(s.headers.host=lx(s.port,e[i||"target"].protocol)&&!ux(s.host)?s.host+":"+s.port:s.host),s};Ce.setupSocket=function(s){return s.setTimeout(0),s.setNoDelay(!0),s.setKeepAlive(!0,0),s};Ce.getPort=function(s){var e=s.headers.host?s.headers.host.match(/:(\d+)/):"";return e?e[1]:Ce.hasEncryptedConnection(s)?"443":"80"};Ce.hasEncryptedConnection=function(s){return!!(s.connection.encrypted||s.connection.pair)};Ce.urlJoin=function(){var s=Array.prototype.slice.call(arguments),e=s.length-1,t=s[e],i=t.split("?"),n;return s[e]=i.shift(),n=[s.filter(Boolean).join("/").replace(/\/+/g,"/").replace("http:/","http://").replace("https:/","https://")],n.push.apply(n,i),n.join("?")};Ce.rewriteCookieProperty=function s(e,t,i){return Array.isArray(e)?e.map(function(n){return s(n,t,i)}):e.replace(new RegExp("(;\\s*"+i+"=)([^;]+)","i"),function(n,a,r){var o;if(r in t)o=t[r];else if("*"in t)o=t["*"];else return n;return o?a+o:""})};function ux(s){return!!~s.indexOf(":")}});var Hl=x((Lg,Ul)=>{var ql=require("url"),Fl=pi(),dx=/^201|30(1|2|7|8)$/;Ul.exports={removeChunked:function(e,t,i){e.httpVersion==="1.0"&&delete i.headers["transfer-encoding"]},setConnection:function(e,t,i){e.httpVersion==="1.0"?i.headers.connection=e.headers.connection||"close":e.httpVersion!=="2.0"&&!i.headers.connection&&(i.headers.connection=e.headers.connection||"keep-alive")},setRedirectHostRewrite:function(e,t,i,n){if((n.hostRewrite||n.autoRewrite||n.protocolRewrite)&&i.headers.location&&dx.test(i.statusCode)){var a=ql.parse(n.target),r=ql.parse(i.headers.location);if(a.host!=r.host)return;n.hostRewrite?r.host=n.hostRewrite:n.autoRewrite&&(r.host=e.headers.host),n.protocolRewrite&&(r.protocol=n.protocolRewrite),i.headers.location=r.format()}},writeHeaders:function(e,t,i,n){var a=n.cookieDomainRewrite,r=n.cookiePathRewrite,o=n.preserveHeaderKeyCase,c,l=function(d,h){h!=null&&(a&&d.toLowerCase()==="set-cookie"&&(h=Fl.rewriteCookieProperty(h,a,"domain")),r&&d.toLowerCase()==="set-cookie"&&(h=Fl.rewriteCookieProperty(h,r,"path")),t.setHeader(String(d).trim(),h))};if(typeof a=="string"&&(a={"*":a}),typeof r=="string"&&(r={"*":r}),o&&i.rawHeaders!=null){c={};for(var p=0;p<i.rawHeaders.length;p+=2){var u=i.rawHeaders[p];c[u.toLowerCase()]=u}}Object.keys(i.headers).forEach(function(d){var h=i.headers[d];o&&c&&(d=c[d]||d),l(d,h)})},writeStatusCode:function(e,t,i){i.statusMessage?(t.statusCode=i.statusCode,t.statusMessage=i.statusMessage):t.statusCode=i.statusCode}}});var Wl=x((Mg,zl)=>{var Gt;zl.exports=function(){if(!Gt){try{Gt=R()("follow-redirects")}catch{}typeof Gt!="function"&&(Gt=function(){})}Gt.apply(null,arguments)}});var Yl=x((Dg,ha)=>{var Yt=require("url"),Kt=Yt.URL,fx=require("http"),mx=require("https"),ca=require("stream").Writable,la=require("assert"),$l=Wl();(function(){var e=typeof process<"u",t=typeof window<"u"&&typeof document<"u",i=Je(Error.captureStackTrace);!e&&(t||!i)&&console.warn("The follow-redirects package should be excluded from browser builds.")})();var pa=!1;try{la(new Kt(""))}catch(s){pa=s.code==="ERR_INVALID_URL"}var hx=["auth","host","hostname","href","path","pathname","port","protocol","query","search","hash"],ua=["abort","aborted","connect","error","socket","timeout"],da=Object.create(null);ua.forEach(function(s){da[s]=function(e,t,i){this._redirectable.emit(s,e,t,i)}});var aa=Xt("ERR_INVALID_URL","Invalid URL",TypeError),ra=Xt("ERR_FR_REDIRECTION_FAILURE","Redirected request failed"),xx=Xt("ERR_FR_TOO_MANY_REDIRECTS","Maximum number of redirects exceeded",ra),vx=Xt("ERR_FR_MAX_BODY_LENGTH_EXCEEDED","Request body larger than maxBodyLength limit"),gx=Xt("ERR_STREAM_WRITE_AFTER_END","write after end"),bx=ca.prototype.destroy||Gl;function Y(s,e){ca.call(this),this._sanitizeOptions(s),this._options=s,this._ended=!1,this._ending=!1,this._redirectCount=0,this._redirects=[],this._requestBodyLength=0,this._requestBodyBuffers=[],e&&this.on("response",e);var t=this;this._onNativeResponse=function(i){try{t._processResponse(i)}catch(n){t.emit("error",n instanceof ra?n:new ra({cause:n}))}},this._performRequest()}Y.prototype=Object.create(ca.prototype);Y.prototype.abort=function(){ma(this._currentRequest),this._currentRequest.abort(),this.emit("abort")};Y.prototype.destroy=function(s){return ma(this._currentRequest,s),bx.call(this,s),this};Y.prototype.write=function(s,e,t){if(this._ending)throw new gx;if(!Xe(s)&&!_x(s))throw new TypeError("data should be a string, Buffer or Uint8Array");if(Je(e)&&(t=e,e=null),s.length===0){t&&t();return}this._requestBodyLength+s.length<=this._options.maxBodyLength?(this._requestBodyLength+=s.length,this._requestBodyBuffers.push({data:s,encoding:e}),this._currentRequest.write(s,e,t)):(this.emit("error",new vx),this.abort())};Y.prototype.end=function(s,e,t){if(Je(s)?(t=s,s=e=null):Je(e)&&(t=e,e=null),!s)this._ended=this._ending=!0,this._currentRequest.end(null,null,t);else{var i=this,n=this._currentRequest;this.write(s,e,function(){i._ended=!0,n.end(null,null,t)}),this._ending=!0}};Y.prototype.setHeader=function(s,e){this._options.headers[s]=e,this._currentRequest.setHeader(s,e)};Y.prototype.removeHeader=function(s){delete this._options.headers[s],this._currentRequest.removeHeader(s)};Y.prototype.setTimeout=function(s,e){var t=this;function i(r){r.setTimeout(s),r.removeListener("timeout",r.destroy),r.addListener("timeout",r.destroy)}function n(r){t._timeout&&clearTimeout(t._timeout),t._timeout=setTimeout(function(){t.emit("timeout"),a()},s),i(r)}function a(){t._timeout&&(clearTimeout(t._timeout),t._timeout=null),t.removeListener("abort",a),t.removeListener("error",a),t.removeListener("response",a),t.removeListener("close",a),e&&t.removeListener("timeout",e),t.socket||t._currentRequest.removeListener("socket",n)}return e&&this.on("timeout",e),this.socket?n(this.socket):this._currentRequest.once("socket",n),this.on("socket",i),this.on("abort",a),this.on("error",a),this.on("response",a),this.on("close",a),this};["flushHeaders","getHeader","setNoDelay","setSocketKeepAlive"].forEach(function(s){Y.prototype[s]=function(e,t){return this._currentRequest[s](e,t)}});["aborted","connection","socket"].forEach(function(s){Object.defineProperty(Y.prototype,s,{get:function(){return this._currentRequest[s]}})});Y.prototype._sanitizeOptions=function(s){if(s.headers||(s.headers={}),s.host&&(s.hostname||(s.hostname=s.host),delete s.host),!s.pathname&&s.path){var e=s.path.indexOf("?");e<0?s.pathname=s.path:(s.pathname=s.path.substring(0,e),s.search=s.path.substring(e))}};Y.prototype._performRequest=function(){var s=this._options.protocol,e=this._options.nativeProtocols[s];if(!e)throw new TypeError("Unsupported protocol "+s);if(this._options.agents){var t=s.slice(0,-1);this._options.agent=this._options.agents[t]}var i=this._currentRequest=e.request(this._options,this._onNativeResponse);i._redirectable=this;for(var n of ua)i.on(n,da[n]);if(this._currentUrl=/^\//.test(this._options.path)?Yt.format(this._options):this._options.path,this._isRedirect){var a=0,r=this,o=this._requestBodyBuffers;(function c(l){if(i===r._currentRequest)if(l)r.emit("error",l);else if(a<o.length){var p=o[a++];i.finished||i.write(p.data,p.encoding,c)}else r._ended&&i.end()})()}};Y.prototype._processResponse=function(s){var e=s.statusCode;this._options.trackRedirects&&this._redirects.push({url:this._currentUrl,headers:s.headers,statusCode:e});var t=s.headers.location;if(!t||this._options.followRedirects===!1||e<300||e>=400){s.responseUrl=this._currentUrl,s.redirects=this._redirects,this.emit("response",s),this._requestBodyBuffers=[];return}if(ma(this._currentRequest),s.destroy(),++this._redirectCount>this._options.maxRedirects)throw new xx;var i,n=this._options.beforeRedirect;n&&(i=Object.assign({Host:s.req.getHeader("host")},this._options.headers));var a=this._options.method;((e===301||e===302)&&this._options.method==="POST"||e===303&&!/^(?:GET|HEAD)$/.test(this._options.method))&&(this._options.method="GET",this._requestBodyBuffers=[],na(/^content-/i,this._options.headers));var r=na(/^host$/i,this._options.headers),o=fa(this._currentUrl),c=r||o.host,l=/^\w+:/.test(t)?this._currentUrl:Yt.format(Object.assign(o,{host:c})),p=yx(t,l);if($l("redirecting to",p.href),this._isRedirect=!0,oa(p,this._options),(p.protocol!==o.protocol&&p.protocol!=="https:"||p.host!==c&&!wx(p.host,c))&&na(/^(?:(?:proxy-)?authorization|cookie)$/i,this._options.headers),Je(n)){var u={headers:s.headers,statusCode:e},d={url:l,method:a,headers:i};n(this._options,u,d),this._sanitizeOptions(this._options)}this._performRequest()};function Vl(s){var e={maxRedirects:21,maxBodyLength:10485760},t={};return Object.keys(s).forEach(function(i){var n=i+":",a=t[n]=s[i],r=e[i]=Object.create(a);function o(l,p,u){return Sx(l)?l=oa(l):Xe(l)?l=oa(fa(l)):(u=p,p=Kl(l),l={protocol:n}),Je(p)&&(u=p,p=null),p=Object.assign({maxRedirects:e.maxRedirects,maxBodyLength:e.maxBodyLength},l,p),p.nativeProtocols=t,!Xe(p.host)&&!Xe(p.hostname)&&(p.hostname="::1"),la.equal(p.protocol,n,"protocol mismatch"),$l("options",p),new Y(p,u)}function c(l,p,u){var d=r.request(l,p,u);return d.end(),d}Object.defineProperties(r,{request:{value:o,configurable:!0,enumerable:!0,writable:!0},get:{value:c,configurable:!0,enumerable:!0,writable:!0}})}),e}function Gl(){}function fa(s){var e;if(pa)e=new Kt(s);else if(e=Kl(Yt.parse(s)),!Xe(e.protocol))throw new aa({input:s});return e}function yx(s,e){return pa?new Kt(s,e):fa(Yt.resolve(e,s))}function Kl(s){if(/^\[/.test(s.hostname)&&!/^\[[:0-9a-f]+\]$/i.test(s.hostname))throw new aa({input:s.href||s});if(/^\[/.test(s.host)&&!/^\[[:0-9a-f]+\](:\d+)?$/i.test(s.host))throw new aa({input:s.href||s});return s}function oa(s,e){var t=e||{};for(var i of hx)t[i]=s[i];return t.hostname.startsWith("[")&&(t.hostname=t.hostname.slice(1,-1)),t.port!==""&&(t.port=Number(t.port)),t.path=t.search?t.pathname+t.search:t.pathname,t}function na(s,e){var t;for(var i in e)s.test(i)&&(t=e[i],delete e[i]);return t===null||typeof t>"u"?void 0:String(t).trim()}function Xt(s,e,t){function i(n){Je(Error.captureStackTrace)&&Error.captureStackTrace(this,this.constructor),Object.assign(this,n||{}),this.code=s,this.message=this.cause?e+": "+this.cause.message:e}return i.prototype=new(t||Error),Object.defineProperties(i.prototype,{constructor:{value:i,enumerable:!1},name:{value:"Error ["+s+"]",enumerable:!1}}),i}function ma(s,e){for(var t of ua)s.removeListener(t,da[t]);s.on("error",Gl),s.destroy(e)}function wx(s,e){la(Xe(s)&&Xe(e));var t=s.length-e.length-1;return t>0&&s[t]==="."&&s.endsWith(e)}function Xe(s){return typeof s=="string"||s instanceof String}function Je(s){return typeof s=="function"}function _x(s){return typeof s=="object"&&"length"in s}function Sx(s){return Kt&&s instanceof Kt}ha.exports=Vl({http:fx,https:mx});ha.exports.wrap=Vl});var Jl=x((qg,Xl)=>{var Ex=require("http"),kx=require("https"),Jt=Hl(),ui=pi(),Cx=Yl();Jt=Object.keys(Jt).map(function(s){return Jt[s]});var Tx={http:Ex,https:kx};Xl.exports={deleteLength:function(e,t,i){(e.method==="DELETE"||e.method==="OPTIONS")&&!e.headers["content-length"]&&(e.headers["content-length"]="0",delete e.headers["transfer-encoding"])},timeout:function(e,t,i){i.timeout&&e.socket.setTimeout(i.timeout)},XHeaders:function(e,t,i){if(i.xfwd){var n=e.isSpdy||ui.hasEncryptedConnection(e),a={for:e.connection.remoteAddress||e.socket.remoteAddress,port:ui.getPort(e),proto:n?"https":"http"};["for","port","proto"].forEach(function(r){e.headers["x-forwarded-"+r]=(e.headers["x-forwarded-"+r]||"")+(e.headers["x-forwarded-"+r]?",":"")+a[r]}),e.headers["x-forwarded-host"]=e.headers["x-forwarded-host"]||e.headers.host||""}},stream:function(e,t,i,n,a,r){a.emit("start",e,t,i.target||i.forward);var o=i.followRedirects?Cx:Tx,c=o.http,l=o.https;if(i.forward){var p=(i.forward.protocol==="https:"?l:c).request(ui.setupOutgoing(i.ssl||{},i,e,"forward")),u=m(p,i.forward);if(e.on("error",u),p.on("error",u),(i.buffer||e).pipe(p),!i.target)return t.end()}var d=(i.target.protocol==="https:"?l:c).request(ui.setupOutgoing(i.ssl||{},i,e));d.on("socket",function(f){a&&!d.getHeader("expect")&&a.emit("proxyReq",d,e,t,i)}),i.proxyTimeout&&d.setTimeout(i.proxyTimeout,function(){d.abort()}),e.on("aborted",function(){d.abort()});var h=m(d,i.target);e.on("error",h),d.on("error",h);function m(f,v){return function(g){if(e.socket.destroyed&&g.code==="ECONNRESET")return a.emit("econnreset",g,e,t,v),f.abort();r?r(g,e,t,v):a.emit("error",g,e,t,v)}}(i.buffer||e).pipe(d),d.on("response",function(f){if(a&&a.emit("proxyRes",f,e,t),!t.headersSent&&!i.selfHandleResponse)for(var v=0;v<Jt.length&&!Jt[v](e,t,f,i);v++);t.finished?a&&a.emit("end",e,t,f):(f.on("end",function(){a&&a.emit("end",e,t,f)}),i.selfHandleResponse||f.pipe(t))})}}});var Zl=x((Fg,Ql)=>{var Ox=require("http"),Rx=require("https"),Ct=pi();Ql.exports={checkMethodAndHeader:function(e,t){if(e.method!=="GET"||!e.headers.upgrade||e.headers.upgrade.toLowerCase()!=="websocket")return t.destroy(),!0},XHeaders:function(e,t,i){if(i.xfwd){var n={for:e.connection.remoteAddress||e.socket.remoteAddress,port:Ct.getPort(e),proto:Ct.hasEncryptedConnection(e)?"wss":"ws"};["for","port","proto"].forEach(function(a){e.headers["x-forwarded-"+a]=(e.headers["x-forwarded-"+a]||"")+(e.headers["x-forwarded-"+a]?",":"")+n[a]})}},stream:function(e,t,i,n,a,r){var o=function(p,u){return Object.keys(u).reduce(function(d,h){var m=u[h];if(!Array.isArray(m))return d.push(h+": "+m),d;for(var f=0;f<m.length;f++)d.push(h+": "+m[f]);return d},[p]).join(`\r
19
19
  `)+`\r
20
20
  \r
21
21
  `};Ct.setupSocket(t),n&&n.length&&t.unshift(n);var c=(Ct.isSSL.test(i.target.protocol)?Rx:Ox).request(Ct.setupOutgoing(i.ssl||{},i,e));return a&&a.emit("proxyReqWs",c,e,t,i,n),c.on("error",l),c.on("response",function(p){p.upgrade||(t.write(o("HTTP/"+p.httpVersion+" "+p.statusCode+" "+p.statusMessage,p.headers)),p.pipe(t))}),c.on("upgrade",function(p,u,d){u.on("error",l),u.on("end",function(){a.emit("close",p,u,d)}),t.on("error",function(){u.end()}),Ct.setupSocket(u),d&&d.length&&u.unshift(d),t.write(o("HTTP/1.1 101 Switching Protocols",p.headers)),u.pipe(t).pipe(u),a.emit("open",u),a.emit("proxySocket",u)}),c.end();function l(p){r?r(p,e,t):a.emit("error",p,e,t),t.end()}}}});var rp=x((Ug,ap)=>{var ip=ap.exports,ep=require("util")._extend,Ax=require("url").parse,np=Nl(),Px=require("http"),jx=require("https"),tp=Jl(),sp=Zl();ip.Server=Qe;function xa(s){return function(e){return function(t,i){var n=s==="ws"?this.wsPasses:this.webPasses,a=[].slice.call(arguments),r=a.length-1,o,c;typeof a[r]=="function"&&(c=a[r],r--);var l=e;if(!(a[r]instanceof Buffer)&&a[r]!==i&&(l=ep({},e),ep(l,a[r]),r--),a[r]instanceof Buffer&&(o=a[r]),["target","forward"].forEach(function(u){typeof l[u]=="string"&&(l[u]=Ax(l[u]))}),!l.target&&!l.forward)return this.emit("error",new Error("Must provide a proper URL as target"));for(var p=0;p<n.length&&!n[p](t,i,l,o,this,c);p++);}}}ip.createRightProxy=xa;function Qe(s){np.call(this),s=s||{},s.prependPath=s.prependPath!==!1,this.web=this.proxyRequest=xa("web")(s),this.ws=this.proxyWebsocketRequest=xa("ws")(s),this.options=s,this.webPasses=Object.keys(tp).map(function(e){return tp[e]}),this.wsPasses=Object.keys(sp).map(function(e){return sp[e]}),this.on("error",this.onError,this)}require("util").inherits(Qe,np);Qe.prototype.onError=function(s){if(this.listeners("error").length===1)throw s};Qe.prototype.listen=function(s,e){var t=this,i=function(n,a){t.web(n,a)};return this._server=this.options.ssl?jx.createServer(this.options.ssl,i):Px.createServer(i),this.options.ws&&this._server.on("upgrade",function(n,a,r){t.ws(n,a,r)}),this._server.listen(s,e),this};Qe.prototype.close=function(s){var e=this;this._server&&this._server.close(t);function t(){e._server=null,s&&s.apply(null,arguments)}};Qe.prototype.before=function(s,e,t){if(s!=="ws"&&s!=="web")throw new Error("type must be `web` or `ws`");var i=s==="ws"?this.wsPasses:this.webPasses,n=!1;if(i.forEach(function(a,r){a.name===e&&(n=r)}),n===!1)throw new Error("No such pass");i.splice(n,0,t)};Qe.prototype.after=function(s,e,t){if(s!=="ws"&&s!=="web")throw new Error("type must be `web` or `ws`");var i=s==="ws"?this.wsPasses:this.webPasses,n=!1;if(i.forEach(function(a,r){a.name===e&&(n=r)}),n===!1)throw new Error("No such pass");i.splice(n++,0,t)}});var cp=x((Hg,op)=>{var Qt=rp().Server;function va(s){return new Qt(s)}Qt.createProxyServer=va;Qt.createServer=va;Qt.createProxy=va;op.exports=Qt});var pp=x((zg,lp)=>{lp.exports=cp()});var Ux={};De(Ux,{startServer:()=>Sp});module.exports=Ap(Ux);var yp=require("http"),wp=require("url"),_p=require("child_process");var Gc=M(Vc(),1),{Server:Kc,Namespace:cg,Socket:lg}=Gc.default;var ul=M(require("node-pty"),1),ai=M(require("os"),1),ri=M(require("fs"),1),dl=M(require("path"),1);var Be=null;function Vh(){return process.env.CODESPACES==="true"||process.env.GITPOD_WORKSPACE_ID||process.platform==="linux"&&!process.env.DISPLAY}async function cl(){if(Be!==null)return Be;if(Vh())return Be=!1,console.log("\u2139\uFE0F Remote desktop not available (headless environment)"),Be;try{let s=await import("@hurdlegroup/robotjs");(s.default||s).getScreenSize(),Be=!0}catch{Be=!1,console.log("\u2139\uFE0F Remote desktop not available (no display or robotjs not installed)")}return Be}function ll(){return Be===!0}async function pl(s){let e=null,t=null,i=null,n=null,a=null,r=null,o=null,c=async()=>{if(e)return!0;try{let f=await import("@hurdlegroup/robotjs");e=f.default||f;let{TileManager:v}=await Promise.resolve().then(()=>(Jc(),Xc)),{ResourceManager:y}=await Promise.resolve().then(()=>(Zc(),Qc)),{ScreenUpdateHelper:g}=await Promise.resolve().then(()=>(tl(),el)),{MouseHandler:L}=await Promise.resolve().then(()=>(il(),sl)),{KeyboardHandler:A}=await Promise.resolve().then(()=>(al(),nl)),{ScreenHandler:ue}=await Promise.resolve().then(()=>(ol(),rl));return t=v,i=y,n=g,a=L,r=A,o=ue,e.setMouseDelay(2),e.setKeyboardDelay(2),!0}catch(f){return console.error("\u274C Failed to load remote modules:",f.message),!1}},l=s.of("/remote"),p=null,u=null,d=null,h=null,m=null;l.on("connection",async f=>{let v=f.handshake.auth?.apiKey;if(!v){console.log("\u274C Remote connection rejected: no apiKey"),f.disconnect();return}if(console.log("\u{1F5A5}\uFE0F Remote client connected:",f.id),!await c()){f.emit("error",{message:"Remote desktop not available"}),f.disconnect();return}p||(p=new i,u=new n(p),d=new a(e,p),h=new r(e,p),m=new o(p,u),p.startResourceMonitoring()),f.isAuthenticated=!0;let g=new t(e);p.addClient(f.id,{tileManager:g,screenInterval:null,authenticated:!0,apiKey:v});let L=A=>A;d.setupMouseHandlers(f,L),h.setupKeyboardHandlers(f,L),m.setupScreenHandlers(f,L),f.on("disconnect",()=>{console.log("\u{1F5A5}\uFE0F Remote client disconnected:",f.id),p.removeClient(f.id)})})}var pe=new Map,ea="/tmp/9remote-uploads";ri.default.existsSync(ea)||ri.default.mkdirSync(ea,{recursive:!0});var ni=0,zt=null,Gh=6e4;function oi(){return process.env.CODESPACES==="true"}function Kh(){return oi()?{isCodespaces:!0,codespaceName:process.env.CODESPACE_NAME||"unknown"}:null}function Yh(){zt||(zt=setInterval(()=>{process.memoryUsage()},Gh))}function Xh(){zt&&(console.log("\u23F8\uFE0F Stopping Codespaces heartbeat"),clearInterval(zt),zt=null)}function fl(){return process.platform==="win32"?process.env.COMSPEC||"powershell.exe":process.env.SHELL||"/bin/zsh"}function Jh(){return oi()?"/workspaces":ai.default.homedir()}function Qh(){let s=ai.default.homedir(),e=ai.default.userInfo().username,t=fl(),i={...process.env};return Object.assign(i,{HOME:s,USER:e,LOGNAME:e,SHELL:t,TERM:"xterm-256color",COLORTERM:"truecolor",LANG:"en_US.UTF-8",LC_ALL:"en_US.UTF-8",LC_CTYPE:"en_US.UTF-8",PWD:s,OLDPWD:s,TMPDIR:i.TMPDIR||(process.platform==="win32"?i.TEMP||i.TMP:"/tmp"),__CF_USER_TEXT_ENCODING:i.__CF_USER_TEXT_ENCODING,XPC_FLAGS:i.XPC_FLAGS,XPC_SERVICE_NAME:i.XPC_SERVICE_NAME,SSH_AUTH_SOCK:i.SSH_AUTH_SOCK,TERM_PROGRAM:"9Remote",TERM_PROGRAM_VERSION:"1.0.0",ITERM_SESSION_ID:`9remote-${Date.now()}`,SHLVL:"1"}),i}function ml(s){s.on("connection",e=>{console.log(`\u{1F4DF} Terminal client connected: ${e.id}`),ni++,oi()&&ni===1&&Yh(),e.emit("serverInfo",{remoteAvailable:ll(),...Kh()}),e.on("getSessions",t=>{let i=[];for(let[n,a]of pe)i.push({id:n,name:a.name,createdAt:a.createdAt});t(i)}),e.on("createSession",({name:t},i)=>{let n=`session-${Date.now()}`,a=fl(),r=Qh(),o=Jh();try{let c=process.platform==="win32"?[]:["-l"],l=ul.default.spawn(a,c,{name:"xterm-256color",cols:80,rows:24,cwd:o,env:r,useConpty:!1}),p={pty:l,name:t||`Terminal ${pe.size+1}`,createdAt:Date.now(),buffer:[]},u=50*1024;l.onData(d=>{p.buffer.push(d);let h=p.buffer.reduce((m,f)=>m+f.length,0);for(;h>u&&p.buffer.length>1;){let m=p.buffer.shift();h-=m.length}s.emit("output",{sessionId:n,data:Buffer.from(d,"utf-8")})}),pe.set(n,p),console.log(`PTY created: sessionId=${n}, name=${t}`),l.onExit(({exitCode:d})=>{console.log(`PTY exited: sessionId=${n}, code=${d}`),pe.delete(n),s.emit("sessionClosed",n)}),i({success:!0,sessionId:n})}catch(c){console.error("Failed to create session:",c),i({success:!1,error:c.message})}}),e.on("joinSession",(t,i)=>{let n=pe.get(t);if(!n){i({success:!1,error:"Session not found"});return}if(n.buffer&&n.buffer.length>0){let a=n.buffer.join("");e.emit("output",{sessionId:t,data:Buffer.from(a,"utf-8")})}i({success:!0,name:n.name})}),e.on("input",({sessionId:t,data:i})=>{if(!t)return;let n=pe.get(t);if(n){let a=Buffer.isBuffer(i)?i.toString("utf-8"):i;n.pty.write(a)}}),e.on("upload-file",({sessionId:t,filename:i,size:n,type:a,content:r})=>{if(!t)return;let o=pe.get(t);if(o)try{let c=Date.now(),l=i.replace(/[^a-zA-Z0-9._-]/g,"_"),p=`${c}_${l}`,u=dl.default.join(ea,p),d=Buffer.from(r,"base64");ri.default.writeFileSync(u,d),console.log(`\u{1F4CE} File uploaded: ${u} (${n} bytes)`),o.pty.write(u)}catch(c){console.error("File upload error:",c),e.emit("output",{sessionId:t,data:Buffer.from(`\r
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "9remote",
3
- "version": "0.1.11",
3
+ "version": "0.1.12",
4
4
  "type": "module",
5
5
  "description": "Remote terminal access from anywhere",
6
6
  "main": "index.js",