synara 0.1.6 → 0.1.7
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.
- package/dist/index.js +74 -62
- package/package.json +5 -1
package/dist/index.js
CHANGED
|
@@ -1,82 +1,94 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
"use strict";var ur=Object.create;var Tt=Object.defineProperty;var hr=Object.getOwnPropertyDescriptor;var dr=Object.getOwnPropertyNames;var pr=Object.getPrototypeOf,_r=Object.prototype.hasOwnProperty;var R=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports);var mr=(t,e,s,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of dr(e))!_r.call(t,n)&&n!==s&&Tt(t,n,{get:()=>e[n],enumerable:!(r=hr(e,n))||r.enumerable});return t};var x=(t,e,s)=>(s=t!=null?ur(pr(t)):{},mr(e||!t||!t.__esModule?Tt(s,"default",{value:t,enumerable:!0}):s,t));var j=R((xi,Ct)=>{"use strict";var Ot=["nodebuffer","arraybuffer","fragments"],kt=typeof Blob<"u";kt&&Ot.push("blob");Ct.exports={BINARY_TYPES:Ot,CLOSE_TIMEOUT:3e4,EMPTY_BUFFER:Buffer.alloc(0),GUID:"258EAFA5-E914-47DA-95CA-C5AB0DC85B11",hasBlob:kt,kForOnEventAttribute:Symbol("kIsForOnEventAttribute"),kListener:Symbol("kListener"),kStatusCode:Symbol("status-code"),kWebSocket:Symbol("websocket"),NOOP:()=>{}}});var pe=R((bi,Te)=>{"use strict";var{EMPTY_BUFFER:gr}=j(),Ke=Buffer[Symbol.species];function yr(t,e){if(t.length===0)return gr;if(t.length===1)return t[0];let s=Buffer.allocUnsafe(e),r=0;for(let n=0;n<t.length;n++){let i=t[n];s.set(i,r),r+=i.length}return r<e?new Ke(s.buffer,s.byteOffset,r):s}function Nt(t,e,s,r,n){for(let i=0;i<n;i++)s[r+i]=t[i]^e[i&3]}function Lt(t,e){for(let s=0;s<t.length;s++)t[s]^=e[s&3]}function Sr(t){return t.length===t.buffer.byteLength?t.buffer:t.buffer.slice(t.byteOffset,t.byteOffset+t.length)}function Je(t){if(Je.readOnly=!0,Buffer.isBuffer(t))return t;let e;return t instanceof ArrayBuffer?e=new Ke(t):ArrayBuffer.isView(t)?e=new Ke(t.buffer,t.byteOffset,t.byteLength):(e=Buffer.from(t),Je.readOnly=!1),e}Te.exports={concat:yr,mask:Nt,toArrayBuffer:Sr,toBuffer:Je,unmask:Lt};if(!process.env.WS_NO_BUFFER_UTIL)try{let t=require("bufferutil");Te.exports.mask=function(e,s,r,n,i){i<48?Nt(e,s,r,n,i):t.mask(e,s,r,n,i)},Te.exports.unmask=function(e,s){e.length<32?Lt(e,s):t.unmask(e,s)}}catch{}});var Bt=R((Ei,Pt)=>{"use strict";var Rt=Symbol("kDone"),Xe=Symbol("kRun"),Ze=class{constructor(e){this[Rt]=()=>{this.pending--,this[Xe]()},this.concurrency=e||1/0,this.jobs=[],this.pending=0}add(e){this.jobs.push(e),this[Xe]()}[Xe](){if(this.pending!==this.concurrency&&this.jobs.length){let e=this.jobs.shift();this.pending++,e(this[Rt])}}};Pt.exports=Ze});var se=R((vi,$t)=>{"use strict";var _e=require("zlib"),It=pe(),xr=Bt(),{kStatusCode:At}=j(),br=Buffer[Symbol.species],Er=Buffer.from([0,0,255,255]),ke=Symbol("permessage-deflate"),q=Symbol("total-length"),ee=Symbol("callback"),Y=Symbol("buffers"),te=Symbol("error"),Oe,Qe=class{constructor(e){if(this._options=e||{},this._threshold=this._options.threshold!==void 0?this._options.threshold:1024,this._maxPayload=this._options.maxPayload|0,this._isServer=!!this._options.isServer,this._deflate=null,this._inflate=null,this.params=null,!Oe){let s=this._options.concurrencyLimit!==void 0?this._options.concurrencyLimit:10;Oe=new xr(s)}}static get extensionName(){return"permessage-deflate"}offer(){let e={};return this._options.serverNoContextTakeover&&(e.server_no_context_takeover=!0),this._options.clientNoContextTakeover&&(e.client_no_context_takeover=!0),this._options.serverMaxWindowBits&&(e.server_max_window_bits=this._options.serverMaxWindowBits),this._options.clientMaxWindowBits?e.client_max_window_bits=this._options.clientMaxWindowBits:this._options.clientMaxWindowBits==null&&(e.client_max_window_bits=!0),e}accept(e){return e=this.normalizeParams(e),this.params=this._isServer?this.acceptAsServer(e):this.acceptAsClient(e),this.params}cleanup(){if(this._inflate&&(this._inflate.close(),this._inflate=null),this._deflate){let e=this._deflate[ee];this._deflate.close(),this._deflate=null,e&&e(new Error("The deflate stream was closed while data was being processed"))}}acceptAsServer(e){let s=this._options,r=e.find(n=>!(s.serverNoContextTakeover===!1&&n.server_no_context_takeover||n.server_max_window_bits&&(s.serverMaxWindowBits===!1||typeof s.serverMaxWindowBits=="number"&&s.serverMaxWindowBits>n.server_max_window_bits)||typeof s.clientMaxWindowBits=="number"&&!n.client_max_window_bits));if(!r)throw new Error("None of the extension offers can be accepted");return s.serverNoContextTakeover&&(r.server_no_context_takeover=!0),s.clientNoContextTakeover&&(r.client_no_context_takeover=!0),typeof s.serverMaxWindowBits=="number"&&(r.server_max_window_bits=s.serverMaxWindowBits),typeof s.clientMaxWindowBits=="number"?r.client_max_window_bits=s.clientMaxWindowBits:(r.client_max_window_bits===!0||s.clientMaxWindowBits===!1)&&delete r.client_max_window_bits,r}acceptAsClient(e){let s=e[0];if(this._options.clientNoContextTakeover===!1&&s.client_no_context_takeover)throw new Error('Unexpected parameter "client_no_context_takeover"');if(!s.client_max_window_bits)typeof this._options.clientMaxWindowBits=="number"&&(s.client_max_window_bits=this._options.clientMaxWindowBits);else if(this._options.clientMaxWindowBits===!1||typeof this._options.clientMaxWindowBits=="number"&&s.client_max_window_bits>this._options.clientMaxWindowBits)throw new Error('Unexpected or invalid parameter "client_max_window_bits"');return s}normalizeParams(e){return e.forEach(s=>{Object.keys(s).forEach(r=>{let n=s[r];if(n.length>1)throw new Error(`Parameter "${r}" must have only a single value`);if(n=n[0],r==="client_max_window_bits"){if(n!==!0){let i=+n;if(!Number.isInteger(i)||i<8||i>15)throw new TypeError(`Invalid value for parameter "${r}": ${n}`);n=i}else if(!this._isServer)throw new TypeError(`Invalid value for parameter "${r}": ${n}`)}else if(r==="server_max_window_bits"){let i=+n;if(!Number.isInteger(i)||i<8||i>15)throw new TypeError(`Invalid value for parameter "${r}": ${n}`);n=i}else if(r==="client_no_context_takeover"||r==="server_no_context_takeover"){if(n!==!0)throw new TypeError(`Invalid value for parameter "${r}": ${n}`)}else throw new Error(`Unknown parameter "${r}"`);s[r]=n})}),e}decompress(e,s,r){Oe.add(n=>{this._decompress(e,s,(i,o)=>{n(),r(i,o)})})}compress(e,s,r){Oe.add(n=>{this._compress(e,s,(i,o)=>{n(),r(i,o)})})}_decompress(e,s,r){let n=this._isServer?"client":"server";if(!this._inflate){let i=`${n}_max_window_bits`,o=typeof this.params[i]!="number"?_e.Z_DEFAULT_WINDOWBITS:this.params[i];this._inflate=_e.createInflateRaw({...this._options.zlibInflateOptions,windowBits:o}),this._inflate[ke]=this,this._inflate[q]=0,this._inflate[Y]=[],this._inflate.on("error",wr),this._inflate.on("data",Mt)}this._inflate[ee]=r,this._inflate.write(e),s&&this._inflate.write(Er),this._inflate.flush(()=>{let i=this._inflate[te];if(i){this._inflate.close(),this._inflate=null,r(i);return}let o=It.concat(this._inflate[Y],this._inflate[q]);this._inflate._readableState.endEmitted?(this._inflate.close(),this._inflate=null):(this._inflate[q]=0,this._inflate[Y]=[],s&&this.params[`${n}_no_context_takeover`]&&this._inflate.reset()),r(null,o)})}_compress(e,s,r){let n=this._isServer?"server":"client";if(!this._deflate){let i=`${n}_max_window_bits`,o=typeof this.params[i]!="number"?_e.Z_DEFAULT_WINDOWBITS:this.params[i];this._deflate=_e.createDeflateRaw({...this._options.zlibDeflateOptions,windowBits:o}),this._deflate[q]=0,this._deflate[Y]=[],this._deflate.on("data",vr)}this._deflate[ee]=r,this._deflate.write(e),this._deflate.flush(_e.Z_SYNC_FLUSH,()=>{if(!this._deflate)return;let i=It.concat(this._deflate[Y],this._deflate[q]);s&&(i=new br(i.buffer,i.byteOffset,i.length-4)),this._deflate[ee]=null,this._deflate[q]=0,this._deflate[Y]=[],s&&this.params[`${n}_no_context_takeover`]&&this._deflate.reset(),r(null,i)})}};$t.exports=Qe;function vr(t){this[Y].push(t),this[q]+=t.length}function Mt(t){if(this[q]+=t.length,this[ke]._maxPayload<1||this[q]<=this[ke]._maxPayload){this[Y].push(t);return}this[te]=new RangeError("Max payload size exceeded"),this[te].code="WS_ERR_UNSUPPORTED_MESSAGE_LENGTH",this[te][At]=1009,this.removeListener("data",Mt),this.reset()}function wr(t){if(this[ke]._inflate=null,this[te]){this[ee](this[te]);return}t[At]=1007,this[ee](t)}});var re=R((wi,Ce)=>{"use strict";var{isUtf8:Ft}=require("buffer"),{hasBlob:Tr}=j(),Or=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,1,1,1,1,0,0,1,1,0,1,1,0,1,1,1,1,1,1,1,1,1,1,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,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,0,1,0,1,0];function kr(t){return t>=1e3&&t<=1014&&t!==1004&&t!==1005&&t!==1006||t>=3e3&&t<=4999}function et(t){let e=t.length,s=0;for(;s<e;)if((t[s]&128)===0)s++;else if((t[s]&224)===192){if(s+1===e||(t[s+1]&192)!==128||(t[s]&254)===192)return!1;s+=2}else if((t[s]&240)===224){if(s+2>=e||(t[s+1]&192)!==128||(t[s+2]&192)!==128||t[s]===224&&(t[s+1]&224)===128||t[s]===237&&(t[s+1]&224)===160)return!1;s+=3}else if((t[s]&248)===240){if(s+3>=e||(t[s+1]&192)!==128||(t[s+2]&192)!==128||(t[s+3]&192)!==128||t[s]===240&&(t[s+1]&240)===128||t[s]===244&&t[s+1]>143||t[s]>244)return!1;s+=4}else return!1;return!0}function Cr(t){return Tr&&typeof t=="object"&&typeof t.arrayBuffer=="function"&&typeof t.type=="string"&&typeof t.stream=="function"&&(t[Symbol.toStringTag]==="Blob"||t[Symbol.toStringTag]==="File")}Ce.exports={isBlob:Cr,isValidStatusCode:kr,isValidUTF8:et,tokenChars:Or};if(Ft)Ce.exports.isValidUTF8=function(t){return t.length<24?et(t):Ft(t)};else if(!process.env.WS_NO_UTF_8_VALIDATE)try{let t=require("utf-8-validate");Ce.exports.isValidUTF8=function(e){return e.length<32?et(e):t(e)}}catch{}});var it=R((Ti,Vt)=>{"use strict";var{Writable:Nr}=require("stream"),Ut=se(),{BINARY_TYPES:Lr,EMPTY_BUFFER:Dt,kStatusCode:Rr,kWebSocket:Pr}=j(),{concat:tt,toArrayBuffer:Br,unmask:Ir}=pe(),{isValidStatusCode:Ar,isValidUTF8:Wt}=re(),Ne=Buffer[Symbol.species],B=0,jt=1,qt=2,Gt=3,st=4,rt=5,Le=6,nt=class extends Nr{constructor(e={}){super(),this._allowSynchronousEvents=e.allowSynchronousEvents!==void 0?e.allowSynchronousEvents:!0,this._binaryType=e.binaryType||Lr[0],this._extensions=e.extensions||{},this._isServer=!!e.isServer,this._maxPayload=e.maxPayload|0,this._skipUTF8Validation=!!e.skipUTF8Validation,this[Pr]=void 0,this._bufferedBytes=0,this._buffers=[],this._compressed=!1,this._payloadLength=0,this._mask=void 0,this._fragmented=0,this._masked=!1,this._fin=!1,this._opcode=0,this._totalPayloadLength=0,this._messageLength=0,this._fragments=[],this._errored=!1,this._loop=!1,this._state=B}_write(e,s,r){if(this._opcode===8&&this._state==B)return r();this._bufferedBytes+=e.length,this._buffers.push(e),this.startLoop(r)}consume(e){if(this._bufferedBytes-=e,e===this._buffers[0].length)return this._buffers.shift();if(e<this._buffers[0].length){let r=this._buffers[0];return this._buffers[0]=new Ne(r.buffer,r.byteOffset+e,r.length-e),new Ne(r.buffer,r.byteOffset,e)}let s=Buffer.allocUnsafe(e);do{let r=this._buffers[0],n=s.length-e;e>=r.length?s.set(this._buffers.shift(),n):(s.set(new Uint8Array(r.buffer,r.byteOffset,e),n),this._buffers[0]=new Ne(r.buffer,r.byteOffset+e,r.length-e)),e-=r.length}while(e>0);return s}startLoop(e){this._loop=!0;do switch(this._state){case B:this.getInfo(e);break;case jt:this.getPayloadLength16(e);break;case qt:this.getPayloadLength64(e);break;case Gt:this.getMask();break;case st:this.getData(e);break;case rt:case Le:this._loop=!1;return}while(this._loop);this._errored||e()}getInfo(e){if(this._bufferedBytes<2){this._loop=!1;return}let s=this.consume(2);if((s[0]&48)!==0){let n=this.createError(RangeError,"RSV2 and RSV3 must be clear",!0,1002,"WS_ERR_UNEXPECTED_RSV_2_3");e(n);return}let r=(s[0]&64)===64;if(r&&!this._extensions[Ut.extensionName]){let n=this.createError(RangeError,"RSV1 must be clear",!0,1002,"WS_ERR_UNEXPECTED_RSV_1");e(n);return}if(this._fin=(s[0]&128)===128,this._opcode=s[0]&15,this._payloadLength=s[1]&127,this._opcode===0){if(r){let n=this.createError(RangeError,"RSV1 must be clear",!0,1002,"WS_ERR_UNEXPECTED_RSV_1");e(n);return}if(!this._fragmented){let n=this.createError(RangeError,"invalid opcode 0",!0,1002,"WS_ERR_INVALID_OPCODE");e(n);return}this._opcode=this._fragmented}else if(this._opcode===1||this._opcode===2){if(this._fragmented){let n=this.createError(RangeError,`invalid opcode ${this._opcode}`,!0,1002,"WS_ERR_INVALID_OPCODE");e(n);return}this._compressed=r}else if(this._opcode>7&&this._opcode<11){if(!this._fin){let n=this.createError(RangeError,"FIN must be set",!0,1002,"WS_ERR_EXPECTED_FIN");e(n);return}if(r){let n=this.createError(RangeError,"RSV1 must be clear",!0,1002,"WS_ERR_UNEXPECTED_RSV_1");e(n);return}if(this._payloadLength>125||this._opcode===8&&this._payloadLength===1){let n=this.createError(RangeError,`invalid payload length ${this._payloadLength}`,!0,1002,"WS_ERR_INVALID_CONTROL_PAYLOAD_LENGTH");e(n);return}}else{let n=this.createError(RangeError,`invalid opcode ${this._opcode}`,!0,1002,"WS_ERR_INVALID_OPCODE");e(n);return}if(!this._fin&&!this._fragmented&&(this._fragmented=this._opcode),this._masked=(s[1]&128)===128,this._isServer){if(!this._masked){let n=this.createError(RangeError,"MASK must be set",!0,1002,"WS_ERR_EXPECTED_MASK");e(n);return}}else if(this._masked){let n=this.createError(RangeError,"MASK must be clear",!0,1002,"WS_ERR_UNEXPECTED_MASK");e(n);return}this._payloadLength===126?this._state=jt:this._payloadLength===127?this._state=qt:this.haveLength(e)}getPayloadLength16(e){if(this._bufferedBytes<2){this._loop=!1;return}this._payloadLength=this.consume(2).readUInt16BE(0),this.haveLength(e)}getPayloadLength64(e){if(this._bufferedBytes<8){this._loop=!1;return}let s=this.consume(8),r=s.readUInt32BE(0);if(r>Math.pow(2,21)-1){let n=this.createError(RangeError,"Unsupported WebSocket frame: payload length > 2^53 - 1",!1,1009,"WS_ERR_UNSUPPORTED_DATA_PAYLOAD_LENGTH");e(n);return}this._payloadLength=r*Math.pow(2,32)+s.readUInt32BE(4),this.haveLength(e)}haveLength(e){if(this._payloadLength&&this._opcode<8&&(this._totalPayloadLength+=this._payloadLength,this._totalPayloadLength>this._maxPayload&&this._maxPayload>0)){let s=this.createError(RangeError,"Max payload size exceeded",!1,1009,"WS_ERR_UNSUPPORTED_MESSAGE_LENGTH");e(s);return}this._masked?this._state=Gt:this._state=st}getMask(){if(this._bufferedBytes<4){this._loop=!1;return}this._mask=this.consume(4),this._state=st}getData(e){let s=Dt;if(this._payloadLength){if(this._bufferedBytes<this._payloadLength){this._loop=!1;return}s=this.consume(this._payloadLength),this._masked&&(this._mask[0]|this._mask[1]|this._mask[2]|this._mask[3])!==0&&Ir(s,this._mask)}if(this._opcode>7){this.controlMessage(s,e);return}if(this._compressed){this._state=rt,this.decompress(s,e);return}s.length&&(this._messageLength=this._totalPayloadLength,this._fragments.push(s)),this.dataMessage(e)}decompress(e,s){this._extensions[Ut.extensionName].decompress(e,this._fin,(n,i)=>{if(n)return s(n);if(i.length){if(this._messageLength+=i.length,this._messageLength>this._maxPayload&&this._maxPayload>0){let o=this.createError(RangeError,"Max payload size exceeded",!1,1009,"WS_ERR_UNSUPPORTED_MESSAGE_LENGTH");s(o);return}this._fragments.push(i)}this.dataMessage(s),this._state===B&&this.startLoop(s)})}dataMessage(e){if(!this._fin){this._state=B;return}let s=this._messageLength,r=this._fragments;if(this._totalPayloadLength=0,this._messageLength=0,this._fragmented=0,this._fragments=[],this._opcode===2){let n;this._binaryType==="nodebuffer"?n=tt(r,s):this._binaryType==="arraybuffer"?n=Br(tt(r,s)):this._binaryType==="blob"?n=new Blob(r):n=r,this._allowSynchronousEvents?(this.emit("message",n,!0),this._state=B):(this._state=Le,setImmediate(()=>{this.emit("message",n,!0),this._state=B,this.startLoop(e)}))}else{let n=tt(r,s);if(!this._skipUTF8Validation&&!Wt(n)){let i=this.createError(Error,"invalid UTF-8 sequence",!0,1007,"WS_ERR_INVALID_UTF8");e(i);return}this._state===rt||this._allowSynchronousEvents?(this.emit("message",n,!1),this._state=B):(this._state=Le,setImmediate(()=>{this.emit("message",n,!1),this._state=B,this.startLoop(e)}))}}controlMessage(e,s){if(this._opcode===8){if(e.length===0)this._loop=!1,this.emit("conclude",1005,Dt),this.end();else{let r=e.readUInt16BE(0);if(!Ar(r)){let i=this.createError(RangeError,`invalid status code ${r}`,!0,1002,"WS_ERR_INVALID_CLOSE_CODE");s(i);return}let n=new Ne(e.buffer,e.byteOffset+2,e.length-2);if(!this._skipUTF8Validation&&!Wt(n)){let i=this.createError(Error,"invalid UTF-8 sequence",!0,1007,"WS_ERR_INVALID_UTF8");s(i);return}this._loop=!1,this.emit("conclude",r,n),this.end()}this._state=B;return}this._allowSynchronousEvents?(this.emit(this._opcode===9?"ping":"pong",e),this._state=B):(this._state=Le,setImmediate(()=>{this.emit(this._opcode===9?"ping":"pong",e),this._state=B,this.startLoop(s)}))}createError(e,s,r,n,i){this._loop=!1,this._errored=!0;let o=new e(r?`Invalid WebSocket frame: ${s}`:s);return Error.captureStackTrace(o,this.createError),o.code=i,o[Rr]=n,o}};Vt.exports=nt});var lt=R((ki,Ht)=>{"use strict";var{Duplex:Oi}=require("stream"),{randomFillSync:Mr}=require("crypto"),Yt=se(),{EMPTY_BUFFER:$r,kWebSocket:Fr,NOOP:Ur}=j(),{isBlob:ne,isValidStatusCode:Dr}=re(),{mask:zt,toBuffer:K}=pe(),I=Symbol("kByteLength"),Wr=Buffer.alloc(4),Re=8*1024,J,ie=Re,M=0,jr=1,qr=2,ot=class t{constructor(e,s,r){this._extensions=s||{},r&&(this._generateMask=r,this._maskBuffer=Buffer.alloc(4)),this._socket=e,this._firstFragment=!0,this._compress=!1,this._bufferedBytes=0,this._queue=[],this._state=M,this.onerror=Ur,this[Fr]=void 0}static frame(e,s){let r,n=!1,i=2,o=!1;s.mask&&(r=s.maskBuffer||Wr,s.generateMask?s.generateMask(r):(ie===Re&&(J===void 0&&(J=Buffer.alloc(Re)),Mr(J,0,Re),ie=0),r[0]=J[ie++],r[1]=J[ie++],r[2]=J[ie++],r[3]=J[ie++]),o=(r[0]|r[1]|r[2]|r[3])===0,i=6);let a;typeof e=="string"?(!s.mask||o)&&s[I]!==void 0?a=s[I]:(e=Buffer.from(e),a=e.length):(a=e.length,n=s.mask&&s.readOnly&&!o);let c=a;a>=65536?(i+=8,c=127):a>125&&(i+=2,c=126);let u=Buffer.allocUnsafe(n?a+i:i);return u[0]=s.fin?s.opcode|128:s.opcode,s.rsv1&&(u[0]|=64),u[1]=c,c===126?u.writeUInt16BE(a,2):c===127&&(u[2]=u[3]=0,u.writeUIntBE(a,4,6)),s.mask?(u[1]|=128,u[i-4]=r[0],u[i-3]=r[1],u[i-2]=r[2],u[i-1]=r[3],o?[u,e]:n?(zt(e,r,u,i,a),[u]):(zt(e,r,e,0,a),[u,e])):[u,e]}close(e,s,r,n){let i;if(e===void 0)i=$r;else{if(typeof e!="number"||!Dr(e))throw new TypeError("First argument must be a valid error code number");if(s===void 0||!s.length)i=Buffer.allocUnsafe(2),i.writeUInt16BE(e,0);else{let a=Buffer.byteLength(s);if(a>123)throw new RangeError("The message must not be greater than 123 bytes");i=Buffer.allocUnsafe(2+a),i.writeUInt16BE(e,0),typeof s=="string"?i.write(s,2):i.set(s,2)}}let o={[I]:i.length,fin:!0,generateMask:this._generateMask,mask:r,maskBuffer:this._maskBuffer,opcode:8,readOnly:!1,rsv1:!1};this._state!==M?this.enqueue([this.dispatch,i,!1,o,n]):this.sendFrame(t.frame(i,o),n)}ping(e,s,r){let n,i;if(typeof e=="string"?(n=Buffer.byteLength(e),i=!1):ne(e)?(n=e.size,i=!1):(e=K(e),n=e.length,i=K.readOnly),n>125)throw new RangeError("The data size must not be greater than 125 bytes");let o={[I]:n,fin:!0,generateMask:this._generateMask,mask:s,maskBuffer:this._maskBuffer,opcode:9,readOnly:i,rsv1:!1};ne(e)?this._state!==M?this.enqueue([this.getBlobData,e,!1,o,r]):this.getBlobData(e,!1,o,r):this._state!==M?this.enqueue([this.dispatch,e,!1,o,r]):this.sendFrame(t.frame(e,o),r)}pong(e,s,r){let n,i;if(typeof e=="string"?(n=Buffer.byteLength(e),i=!1):ne(e)?(n=e.size,i=!1):(e=K(e),n=e.length,i=K.readOnly),n>125)throw new RangeError("The data size must not be greater than 125 bytes");let o={[I]:n,fin:!0,generateMask:this._generateMask,mask:s,maskBuffer:this._maskBuffer,opcode:10,readOnly:i,rsv1:!1};ne(e)?this._state!==M?this.enqueue([this.getBlobData,e,!1,o,r]):this.getBlobData(e,!1,o,r):this._state!==M?this.enqueue([this.dispatch,e,!1,o,r]):this.sendFrame(t.frame(e,o),r)}send(e,s,r){let n=this._extensions[Yt.extensionName],i=s.binary?2:1,o=s.compress,a,c;typeof e=="string"?(a=Buffer.byteLength(e),c=!1):ne(e)?(a=e.size,c=!1):(e=K(e),a=e.length,c=K.readOnly),this._firstFragment?(this._firstFragment=!1,o&&n&&n.params[n._isServer?"server_no_context_takeover":"client_no_context_takeover"]&&(o=a>=n._threshold),this._compress=o):(o=!1,i=0),s.fin&&(this._firstFragment=!0);let u={[I]:a,fin:s.fin,generateMask:this._generateMask,mask:s.mask,maskBuffer:this._maskBuffer,opcode:i,readOnly:c,rsv1:o};ne(e)?this._state!==M?this.enqueue([this.getBlobData,e,this._compress,u,r]):this.getBlobData(e,this._compress,u,r):this._state!==M?this.enqueue([this.dispatch,e,this._compress,u,r]):this.dispatch(e,this._compress,u,r)}getBlobData(e,s,r,n){this._bufferedBytes+=r[I],this._state=qr,e.arrayBuffer().then(i=>{if(this._socket.destroyed){let a=new Error("The socket was closed while the blob was being read");process.nextTick(at,this,a,n);return}this._bufferedBytes-=r[I];let o=K(i);s?this.dispatch(o,s,r,n):(this._state=M,this.sendFrame(t.frame(o,r),n),this.dequeue())}).catch(i=>{process.nextTick(Gr,this,i,n)})}dispatch(e,s,r,n){if(!s){this.sendFrame(t.frame(e,r),n);return}let i=this._extensions[Yt.extensionName];this._bufferedBytes+=r[I],this._state=jr,i.compress(e,r.fin,(o,a)=>{if(this._socket.destroyed){let c=new Error("The socket was closed while data was being compressed");at(this,c,n);return}this._bufferedBytes-=r[I],this._state=M,r.readOnly=!1,this.sendFrame(t.frame(a,r),n),this.dequeue()})}dequeue(){for(;this._state===M&&this._queue.length;){let e=this._queue.shift();this._bufferedBytes-=e[3][I],Reflect.apply(e[0],this,e.slice(1))}}enqueue(e){this._bufferedBytes+=e[3][I],this._queue.push(e)}sendFrame(e,s){e.length===2?(this._socket.cork(),this._socket.write(e[0]),this._socket.write(e[1],s),this._socket.uncork()):this._socket.write(e[0],s)}};Ht.exports=ot;function at(t,e,s){typeof s=="function"&&s(e);for(let r=0;r<t._queue.length;r++){let n=t._queue[r],i=n[n.length-1];typeof i=="function"&&i(e)}}function Gr(t,e,s){at(t,e,s),t.onerror(e)}});var rs=R((Ci,ss)=>{"use strict";var{kForOnEventAttribute:me,kListener:ct}=j(),Kt=Symbol("kCode"),Jt=Symbol("kData"),Xt=Symbol("kError"),Zt=Symbol("kMessage"),Qt=Symbol("kReason"),oe=Symbol("kTarget"),es=Symbol("kType"),ts=Symbol("kWasClean"),G=class{constructor(e){this[oe]=null,this[es]=e}get target(){return this[oe]}get type(){return this[es]}};Object.defineProperty(G.prototype,"target",{enumerable:!0});Object.defineProperty(G.prototype,"type",{enumerable:!0});var X=class extends G{constructor(e,s={}){super(e),this[Kt]=s.code===void 0?0:s.code,this[Qt]=s.reason===void 0?"":s.reason,this[ts]=s.wasClean===void 0?!1:s.wasClean}get code(){return this[Kt]}get reason(){return this[Qt]}get wasClean(){return this[ts]}};Object.defineProperty(X.prototype,"code",{enumerable:!0});Object.defineProperty(X.prototype,"reason",{enumerable:!0});Object.defineProperty(X.prototype,"wasClean",{enumerable:!0});var ae=class extends G{constructor(e,s={}){super(e),this[Xt]=s.error===void 0?null:s.error,this[Zt]=s.message===void 0?"":s.message}get error(){return this[Xt]}get message(){return this[Zt]}};Object.defineProperty(ae.prototype,"error",{enumerable:!0});Object.defineProperty(ae.prototype,"message",{enumerable:!0});var ge=class extends G{constructor(e,s={}){super(e),this[Jt]=s.data===void 0?null:s.data}get data(){return this[Jt]}};Object.defineProperty(ge.prototype,"data",{enumerable:!0});var Vr={addEventListener(t,e,s={}){for(let n of this.listeners(t))if(!s[me]&&n[ct]===e&&!n[me])return;let r;if(t==="message")r=function(i,o){let a=new ge("message",{data:o?i:i.toString()});a[oe]=this,Pe(e,this,a)};else if(t==="close")r=function(i,o){let a=new X("close",{code:i,reason:o.toString(),wasClean:this._closeFrameReceived&&this._closeFrameSent});a[oe]=this,Pe(e,this,a)};else if(t==="error")r=function(i){let o=new ae("error",{error:i,message:i.message});o[oe]=this,Pe(e,this,o)};else if(t==="open")r=function(){let i=new G("open");i[oe]=this,Pe(e,this,i)};else return;r[me]=!!s[me],r[ct]=e,s.once?this.once(t,r):this.on(t,r)},removeEventListener(t,e){for(let s of this.listeners(t))if(s[ct]===e&&!s[me]){this.removeListener(t,s);break}}};ss.exports={CloseEvent:X,ErrorEvent:ae,Event:G,EventTarget:Vr,MessageEvent:ge};function Pe(t,e,s){typeof t=="object"&&t.handleEvent?t.handleEvent.call(t,s):t.call(e,s)}});var Be=R((Ni,ns)=>{"use strict";var{tokenChars:ye}=re();function F(t,e,s){t[e]===void 0?t[e]=[s]:t[e].push(s)}function Yr(t){let e=Object.create(null),s=Object.create(null),r=!1,n=!1,i=!1,o,a,c=-1,u=-1,h=-1,_=0;for(;_<t.length;_++)if(u=t.charCodeAt(_),o===void 0)if(h===-1&&ye[u]===1)c===-1&&(c=_);else if(_!==0&&(u===32||u===9))h===-1&&c!==-1&&(h=_);else if(u===59||u===44){if(c===-1)throw new SyntaxError(`Unexpected character at index ${_}`);h===-1&&(h=_);let y=t.slice(c,h);u===44?(F(e,y,s),s=Object.create(null)):o=y,c=h=-1}else throw new SyntaxError(`Unexpected character at index ${_}`);else if(a===void 0)if(h===-1&&ye[u]===1)c===-1&&(c=_);else if(u===32||u===9)h===-1&&c!==-1&&(h=_);else if(u===59||u===44){if(c===-1)throw new SyntaxError(`Unexpected character at index ${_}`);h===-1&&(h=_),F(s,t.slice(c,h),!0),u===44&&(F(e,o,s),s=Object.create(null),o=void 0),c=h=-1}else if(u===61&&c!==-1&&h===-1)a=t.slice(c,_),c=h=-1;else throw new SyntaxError(`Unexpected character at index ${_}`);else if(n){if(ye[u]!==1)throw new SyntaxError(`Unexpected character at index ${_}`);c===-1?c=_:r||(r=!0),n=!1}else if(i)if(ye[u]===1)c===-1&&(c=_);else if(u===34&&c!==-1)i=!1,h=_;else if(u===92)n=!0;else throw new SyntaxError(`Unexpected character at index ${_}`);else if(u===34&&t.charCodeAt(_-1)===61)i=!0;else if(h===-1&&ye[u]===1)c===-1&&(c=_);else if(c!==-1&&(u===32||u===9))h===-1&&(h=_);else if(u===59||u===44){if(c===-1)throw new SyntaxError(`Unexpected character at index ${_}`);h===-1&&(h=_);let y=t.slice(c,h);r&&(y=y.replace(/\\/g,""),r=!1),F(s,a,y),u===44&&(F(e,o,s),s=Object.create(null),o=void 0),a=void 0,c=h=-1}else throw new SyntaxError(`Unexpected character at index ${_}`);if(c===-1||i||u===32||u===9)throw new SyntaxError("Unexpected end of input");h===-1&&(h=_);let g=t.slice(c,h);return o===void 0?F(e,g,s):(a===void 0?F(s,g,!0):r?F(s,a,g.replace(/\\/g,"")):F(s,a,g),F(e,o,s)),e}function zr(t){return Object.keys(t).map(e=>{let s=t[e];return Array.isArray(s)||(s=[s]),s.map(r=>[e].concat(Object.keys(r).map(n=>{let i=r[n];return Array.isArray(i)||(i=[i]),i.map(o=>o===!0?n:`${n}=${o}`).join("; ")})).join("; ")).join(", ")}).join(", ")}ns.exports={format:zr,parse:Yr}});var $e=R((Pi,ms)=>{"use strict";var Hr=require("events"),Kr=require("https"),Jr=require("http"),as=require("net"),Xr=require("tls"),{randomBytes:Zr,createHash:Qr}=require("crypto"),{Duplex:Li,Readable:Ri}=require("stream"),{URL:ft}=require("url"),z=se(),en=it(),tn=lt(),{isBlob:sn}=re(),{BINARY_TYPES:is,CLOSE_TIMEOUT:rn,EMPTY_BUFFER:Ie,GUID:nn,kForOnEventAttribute:ut,kListener:on,kStatusCode:an,kWebSocket:C,NOOP:ls}=j(),{EventTarget:{addEventListener:ln,removeEventListener:cn}}=rs(),{format:fn,parse:un}=Be(),{toBuffer:hn}=pe(),cs=Symbol("kAborted"),ht=[8,13],V=["CONNECTING","OPEN","CLOSING","CLOSED"],dn=/^[!#$%&'*+\-.0-9A-Z^_`|a-z~]+$/,b=class t extends Hr{constructor(e,s,r){super(),this._binaryType=is[0],this._closeCode=1006,this._closeFrameReceived=!1,this._closeFrameSent=!1,this._closeMessage=Ie,this._closeTimer=null,this._errorEmitted=!1,this._extensions={},this._paused=!1,this._protocol="",this._readyState=t.CONNECTING,this._receiver=null,this._sender=null,this._socket=null,e!==null?(this._bufferedAmount=0,this._isServer=!1,this._redirects=0,s===void 0?s=[]:Array.isArray(s)||(typeof s=="object"&&s!==null?(r=s,s=[]):s=[s]),fs(this,e,s,r)):(this._autoPong=r.autoPong,this._closeTimeout=r.closeTimeout,this._isServer=!0)}get binaryType(){return this._binaryType}set binaryType(e){is.includes(e)&&(this._binaryType=e,this._receiver&&(this._receiver._binaryType=e))}get bufferedAmount(){return this._socket?this._socket._writableState.length+this._sender._bufferedBytes:this._bufferedAmount}get extensions(){return Object.keys(this._extensions).join()}get isPaused(){return this._paused}get onclose(){return null}get onerror(){return null}get onopen(){return null}get onmessage(){return null}get protocol(){return this._protocol}get readyState(){return this._readyState}get url(){return this._url}setSocket(e,s,r){let n=new en({allowSynchronousEvents:r.allowSynchronousEvents,binaryType:this.binaryType,extensions:this._extensions,isServer:this._isServer,maxPayload:r.maxPayload,skipUTF8Validation:r.skipUTF8Validation}),i=new tn(e,this._extensions,r.generateMask);this._receiver=n,this._sender=i,this._socket=e,n[C]=this,i[C]=this,e[C]=this,n.on("conclude",mn),n.on("drain",gn),n.on("error",yn),n.on("message",Sn),n.on("ping",xn),n.on("pong",bn),i.onerror=En,e.setTimeout&&e.setTimeout(0),e.setNoDelay&&e.setNoDelay(),s.length>0&&e.unshift(s),e.on("close",ds),e.on("data",Me),e.on("end",ps),e.on("error",_s),this._readyState=t.OPEN,this.emit("open")}emitClose(){if(!this._socket){this._readyState=t.CLOSED,this.emit("close",this._closeCode,this._closeMessage);return}this._extensions[z.extensionName]&&this._extensions[z.extensionName].cleanup(),this._receiver.removeAllListeners(),this._readyState=t.CLOSED,this.emit("close",this._closeCode,this._closeMessage)}close(e,s){if(this.readyState!==t.CLOSED){if(this.readyState===t.CONNECTING){P(this,this._req,"WebSocket was closed before the connection was established");return}if(this.readyState===t.CLOSING){this._closeFrameSent&&(this._closeFrameReceived||this._receiver._writableState.errorEmitted)&&this._socket.end();return}this._readyState=t.CLOSING,this._sender.close(e,s,!this._isServer,r=>{r||(this._closeFrameSent=!0,(this._closeFrameReceived||this._receiver._writableState.errorEmitted)&&this._socket.end())}),hs(this)}}pause(){this.readyState===t.CONNECTING||this.readyState===t.CLOSED||(this._paused=!0,this._socket.pause())}ping(e,s,r){if(this.readyState===t.CONNECTING)throw new Error("WebSocket is not open: readyState 0 (CONNECTING)");if(typeof e=="function"?(r=e,e=s=void 0):typeof s=="function"&&(r=s,s=void 0),typeof e=="number"&&(e=e.toString()),this.readyState!==t.OPEN){dt(this,e,r);return}s===void 0&&(s=!this._isServer),this._sender.ping(e||Ie,s,r)}pong(e,s,r){if(this.readyState===t.CONNECTING)throw new Error("WebSocket is not open: readyState 0 (CONNECTING)");if(typeof e=="function"?(r=e,e=s=void 0):typeof s=="function"&&(r=s,s=void 0),typeof e=="number"&&(e=e.toString()),this.readyState!==t.OPEN){dt(this,e,r);return}s===void 0&&(s=!this._isServer),this._sender.pong(e||Ie,s,r)}resume(){this.readyState===t.CONNECTING||this.readyState===t.CLOSED||(this._paused=!1,this._receiver._writableState.needDrain||this._socket.resume())}send(e,s,r){if(this.readyState===t.CONNECTING)throw new Error("WebSocket is not open: readyState 0 (CONNECTING)");if(typeof s=="function"&&(r=s,s={}),typeof e=="number"&&(e=e.toString()),this.readyState!==t.OPEN){dt(this,e,r);return}let n={binary:typeof e!="string",mask:!this._isServer,compress:!0,fin:!0,...s};this._extensions[z.extensionName]||(n.compress=!1),this._sender.send(e||Ie,n,r)}terminate(){if(this.readyState!==t.CLOSED){if(this.readyState===t.CONNECTING){P(this,this._req,"WebSocket was closed before the connection was established");return}this._socket&&(this._readyState=t.CLOSING,this._socket.destroy())}}};Object.defineProperty(b,"CONNECTING",{enumerable:!0,value:V.indexOf("CONNECTING")});Object.defineProperty(b.prototype,"CONNECTING",{enumerable:!0,value:V.indexOf("CONNECTING")});Object.defineProperty(b,"OPEN",{enumerable:!0,value:V.indexOf("OPEN")});Object.defineProperty(b.prototype,"OPEN",{enumerable:!0,value:V.indexOf("OPEN")});Object.defineProperty(b,"CLOSING",{enumerable:!0,value:V.indexOf("CLOSING")});Object.defineProperty(b.prototype,"CLOSING",{enumerable:!0,value:V.indexOf("CLOSING")});Object.defineProperty(b,"CLOSED",{enumerable:!0,value:V.indexOf("CLOSED")});Object.defineProperty(b.prototype,"CLOSED",{enumerable:!0,value:V.indexOf("CLOSED")});["binaryType","bufferedAmount","extensions","isPaused","protocol","readyState","url"].forEach(t=>{Object.defineProperty(b.prototype,t,{enumerable:!0})});["open","error","close","message"].forEach(t=>{Object.defineProperty(b.prototype,`on${t}`,{enumerable:!0,get(){for(let e of this.listeners(t))if(e[ut])return e[on];return null},set(e){for(let s of this.listeners(t))if(s[ut]){this.removeListener(t,s);break}typeof e=="function"&&this.addEventListener(t,e,{[ut]:!0})}})});b.prototype.addEventListener=ln;b.prototype.removeEventListener=cn;ms.exports=b;function fs(t,e,s,r){let n={allowSynchronousEvents:!0,autoPong:!0,closeTimeout:rn,protocolVersion:ht[1],maxPayload:104857600,skipUTF8Validation:!1,perMessageDeflate:!0,followRedirects:!1,maxRedirects:10,...r,socketPath:void 0,hostname:void 0,protocol:void 0,timeout:void 0,method:"GET",host:void 0,path:void 0,port:void 0};if(t._autoPong=n.autoPong,t._closeTimeout=n.closeTimeout,!ht.includes(n.protocolVersion))throw new RangeError(`Unsupported protocol version: ${n.protocolVersion} (supported versions: ${ht.join(", ")})`);let i;if(e instanceof ft)i=e;else try{i=new ft(e)}catch{throw new SyntaxError(`Invalid URL: ${e}`)}i.protocol==="http:"?i.protocol="ws:":i.protocol==="https:"&&(i.protocol="wss:"),t._url=i.href;let o=i.protocol==="wss:",a=i.protocol==="ws+unix:",c;if(i.protocol!=="ws:"&&!o&&!a?c=`The URL's protocol must be one of "ws:", "wss:", "http:", "https:", or "ws+unix:"`:a&&!i.pathname?c="The URL's pathname is empty":i.hash&&(c="The URL contains a fragment identifier"),c){let p=new SyntaxError(c);if(t._redirects===0)throw p;Ae(t,p);return}let u=o?443:80,h=Zr(16).toString("base64"),_=o?Kr.request:Jr.request,g=new Set,y;if(n.createConnection=n.createConnection||(o?_n:pn),n.defaultPort=n.defaultPort||u,n.port=i.port||u,n.host=i.hostname.startsWith("[")?i.hostname.slice(1,-1):i.hostname,n.headers={...n.headers,"Sec-WebSocket-Version":n.protocolVersion,"Sec-WebSocket-Key":h,Connection:"Upgrade",Upgrade:"websocket"},n.path=i.pathname+i.search,n.timeout=n.handshakeTimeout,n.perMessageDeflate&&(y=new z({...n.perMessageDeflate,isServer:!1,maxPayload:n.maxPayload}),n.headers["Sec-WebSocket-Extensions"]=fn({[z.extensionName]:y.offer()})),s.length){for(let p of s){if(typeof p!="string"||!dn.test(p)||g.has(p))throw new SyntaxError("An invalid or duplicated subprotocol was specified");g.add(p)}n.headers["Sec-WebSocket-Protocol"]=s.join(",")}if(n.origin&&(n.protocolVersion<13?n.headers["Sec-WebSocket-Origin"]=n.origin:n.headers.Origin=n.origin),(i.username||i.password)&&(n.auth=`${i.username}:${i.password}`),a){let p=n.path.split(":");n.socketPath=p[0],n.path=p[1]}let w;if(n.followRedirects){if(t._redirects===0){t._originalIpc=a,t._originalSecure=o,t._originalHostOrSocketPath=a?n.socketPath:i.host;let p=r&&r.headers;if(r={...r,headers:{}},p)for(let[k,D]of Object.entries(p))r.headers[k.toLowerCase()]=D}else if(t.listenerCount("redirect")===0){let p=a?t._originalIpc?n.socketPath===t._originalHostOrSocketPath:!1:t._originalIpc?!1:i.host===t._originalHostOrSocketPath;(!p||t._originalSecure&&!o)&&(delete n.headers.authorization,delete n.headers.cookie,p||delete n.headers.host,n.auth=void 0)}n.auth&&!r.headers.authorization&&(r.headers.authorization="Basic "+Buffer.from(n.auth).toString("base64")),w=t._req=_(n),t._redirects&&t.emit("redirect",t.url,w)}else w=t._req=_(n);n.timeout&&w.on("timeout",()=>{P(t,w,"Opening handshake has timed out")}),w.on("error",p=>{w===null||w[cs]||(w=t._req=null,Ae(t,p))}),w.on("response",p=>{let k=p.headers.location,D=p.statusCode;if(k&&n.followRedirects&&D>=300&&D<400){if(++t._redirects>n.maxRedirects){P(t,w,"Maximum redirects exceeded");return}w.abort();let H;try{H=new ft(k,e)}catch{let f=new SyntaxError(`Invalid URL: ${k}`);Ae(t,f);return}fs(t,H,s,r)}else t.emit("unexpected-response",w,p)||P(t,w,`Unexpected server response: ${p.statusCode}`)}),w.on("upgrade",(p,k,D)=>{if(t.emit("upgrade",p),t.readyState!==b.CONNECTING)return;w=t._req=null;let H=p.headers.upgrade;if(H===void 0||H.toLowerCase()!=="websocket"){P(t,k,"Invalid Upgrade header");return}let N=Qr("sha1").update(h+nn).digest("base64");if(p.headers["sec-websocket-accept"]!==N){P(t,k,"Invalid Sec-WebSocket-Accept header");return}let f=p.headers["sec-websocket-protocol"],d;if(f!==void 0?g.size?g.has(f)||(d="Server sent an invalid subprotocol"):d="Server sent a subprotocol but none was requested":g.size&&(d="Server sent no subprotocol"),d){P(t,k,d);return}f&&(t._protocol=f);let m=p.headers["sec-websocket-extensions"];if(m!==void 0){if(!y){P(t,k,"Server sent a Sec-WebSocket-Extensions header but no extension was requested");return}let S;try{S=un(m)}catch{P(t,k,"Invalid Sec-WebSocket-Extensions header");return}let T=Object.keys(S);if(T.length!==1||T[0]!==z.extensionName){P(t,k,"Server indicated an extension that was not requested");return}try{y.accept(S[z.extensionName])}catch{P(t,k,"Invalid Sec-WebSocket-Extensions header");return}t._extensions[z.extensionName]=y}t.setSocket(k,D,{allowSynchronousEvents:n.allowSynchronousEvents,generateMask:n.generateMask,maxPayload:n.maxPayload,skipUTF8Validation:n.skipUTF8Validation})}),n.finishRequest?n.finishRequest(w,t):w.end()}function Ae(t,e){t._readyState=b.CLOSING,t._errorEmitted=!0,t.emit("error",e),t.emitClose()}function pn(t){return t.path=t.socketPath,as.connect(t)}function _n(t){return t.path=void 0,!t.servername&&t.servername!==""&&(t.servername=as.isIP(t.host)?"":t.host),Xr.connect(t)}function P(t,e,s){t._readyState=b.CLOSING;let r=new Error(s);Error.captureStackTrace(r,P),e.setHeader?(e[cs]=!0,e.abort(),e.socket&&!e.socket.destroyed&&e.socket.destroy(),process.nextTick(Ae,t,r)):(e.destroy(r),e.once("error",t.emit.bind(t,"error")),e.once("close",t.emitClose.bind(t)))}function dt(t,e,s){if(e){let r=sn(e)?e.size:hn(e).length;t._socket?t._sender._bufferedBytes+=r:t._bufferedAmount+=r}if(s){let r=new Error(`WebSocket is not open: readyState ${t.readyState} (${V[t.readyState]})`);process.nextTick(s,r)}}function mn(t,e){let s=this[C];s._closeFrameReceived=!0,s._closeMessage=e,s._closeCode=t,s._socket[C]!==void 0&&(s._socket.removeListener("data",Me),process.nextTick(us,s._socket),t===1005?s.close():s.close(t,e))}function gn(){let t=this[C];t.isPaused||t._socket.resume()}function yn(t){let e=this[C];e._socket[C]!==void 0&&(e._socket.removeListener("data",Me),process.nextTick(us,e._socket),e.close(t[an])),e._errorEmitted||(e._errorEmitted=!0,e.emit("error",t))}function os(){this[C].emitClose()}function Sn(t,e){this[C].emit("message",t,e)}function xn(t){let e=this[C];e._autoPong&&e.pong(t,!this._isServer,ls),e.emit("ping",t)}function bn(t){this[C].emit("pong",t)}function us(t){t.resume()}function En(t){let e=this[C];e.readyState!==b.CLOSED&&(e.readyState===b.OPEN&&(e._readyState=b.CLOSING,hs(e)),this._socket.end(),e._errorEmitted||(e._errorEmitted=!0,e.emit("error",t)))}function hs(t){t._closeTimer=setTimeout(t._socket.destroy.bind(t._socket),t._closeTimeout)}function ds(){let t=this[C];if(this.removeListener("close",ds),this.removeListener("data",Me),this.removeListener("end",ps),t._readyState=b.CLOSING,!this._readableState.endEmitted&&!t._closeFrameReceived&&!t._receiver._writableState.errorEmitted&&this._readableState.length!==0){let e=this.read(this._readableState.length);t._receiver.write(e)}t._receiver.end(),this[C]=void 0,clearTimeout(t._closeTimer),t._receiver._writableState.finished||t._receiver._writableState.errorEmitted?t.emitClose():(t._receiver.on("error",os),t._receiver.on("finish",os))}function Me(t){this[C]._receiver.write(t)||this.pause()}function ps(){let t=this[C];t._readyState=b.CLOSING,t._receiver.end(),this.end()}function _s(){let t=this[C];this.removeListener("error",_s),this.on("error",ls),t&&(t._readyState=b.CLOSING,this.destroy())}});var xs=R((Ii,Ss)=>{"use strict";var Bi=$e(),{Duplex:vn}=require("stream");function gs(t){t.emit("close")}function wn(){!this.destroyed&&this._writableState.finished&&this.destroy()}function ys(t){this.removeListener("error",ys),this.destroy(),this.listenerCount("error")===0&&this.emit("error",t)}function Tn(t,e){let s=!0,r=new vn({...e,autoDestroy:!1,emitClose:!1,objectMode:!1,writableObjectMode:!1});return t.on("message",function(i,o){let a=!o&&r._readableState.objectMode?i.toString():i;r.push(a)||t.pause()}),t.once("error",function(i){r.destroyed||(s=!1,r.destroy(i))}),t.once("close",function(){r.destroyed||r.push(null)}),r._destroy=function(n,i){if(t.readyState===t.CLOSED){i(n),process.nextTick(gs,r);return}let o=!1;t.once("error",function(c){o=!0,i(c)}),t.once("close",function(){o||i(n),process.nextTick(gs,r)}),s&&t.terminate()},r._final=function(n){if(t.readyState===t.CONNECTING){t.once("open",function(){r._final(n)});return}t._socket!==null&&(t._socket._writableState.finished?(n(),r._readableState.endEmitted&&r.destroy()):(t._socket.once("finish",function(){n()}),t.close()))},r._read=function(){t.isPaused&&t.resume()},r._write=function(n,i,o){if(t.readyState===t.CONNECTING){t.once("open",function(){r._write(n,i,o)});return}t.send(n,o)},r.on("end",wn),r.on("error",ys),r}Ss.exports=Tn});var pt=R((Ai,bs)=>{"use strict";var{tokenChars:On}=re();function kn(t){let e=new Set,s=-1,r=-1,n=0;for(n;n<t.length;n++){let o=t.charCodeAt(n);if(r===-1&&On[o]===1)s===-1&&(s=n);else if(n!==0&&(o===32||o===9))r===-1&&s!==-1&&(r=n);else if(o===44){if(s===-1)throw new SyntaxError(`Unexpected character at index ${n}`);r===-1&&(r=n);let a=t.slice(s,r);if(e.has(a))throw new SyntaxError(`The "${a}" subprotocol is duplicated`);e.add(a),s=r=-1}else throw new SyntaxError(`Unexpected character at index ${n}`)}if(s===-1||r!==-1)throw new SyntaxError("Unexpected end of input");let i=t.slice(s,n);if(e.has(i))throw new SyntaxError(`The "${i}" subprotocol is duplicated`);return e.add(i),e}bs.exports={parse:kn}});var Cs=R(($i,ks)=>{"use strict";var Cn=require("events"),Fe=require("http"),{Duplex:Mi}=require("stream"),{createHash:Nn}=require("crypto"),Es=Be(),Z=se(),Ln=pt(),Rn=$e(),{CLOSE_TIMEOUT:Pn,GUID:Bn,kWebSocket:In}=j(),An=/^[+/0-9A-Za-z]{22}==$/,vs=0,ws=1,Os=2,_t=class extends Cn{constructor(e,s){if(super(),e={allowSynchronousEvents:!0,autoPong:!0,maxPayload:100*1024*1024,skipUTF8Validation:!1,perMessageDeflate:!1,handleProtocols:null,clientTracking:!0,closeTimeout:Pn,verifyClient:null,noServer:!1,backlog:null,server:null,host:null,path:null,port:null,WebSocket:Rn,...e},e.port==null&&!e.server&&!e.noServer||e.port!=null&&(e.server||e.noServer)||e.server&&e.noServer)throw new TypeError('One and only one of the "port", "server", or "noServer" options must be specified');if(e.port!=null?(this._server=Fe.createServer((r,n)=>{let i=Fe.STATUS_CODES[426];n.writeHead(426,{"Content-Length":i.length,"Content-Type":"text/plain"}),n.end(i)}),this._server.listen(e.port,e.host,e.backlog,s)):e.server&&(this._server=e.server),this._server){let r=this.emit.bind(this,"connection");this._removeListeners=Mn(this._server,{listening:this.emit.bind(this,"listening"),error:this.emit.bind(this,"error"),upgrade:(n,i,o)=>{this.handleUpgrade(n,i,o,r)}})}e.perMessageDeflate===!0&&(e.perMessageDeflate={}),e.clientTracking&&(this.clients=new Set,this._shouldEmitClose=!1),this.options=e,this._state=vs}address(){if(this.options.noServer)throw new Error('The server is operating in "noServer" mode');return this._server?this._server.address():null}close(e){if(this._state===Os){e&&this.once("close",()=>{e(new Error("The server is not running"))}),process.nextTick(Se,this);return}if(e&&this.once("close",e),this._state!==ws)if(this._state=ws,this.options.noServer||this.options.server)this._server&&(this._removeListeners(),this._removeListeners=this._server=null),this.clients?this.clients.size?this._shouldEmitClose=!0:process.nextTick(Se,this):process.nextTick(Se,this);else{let s=this._server;this._removeListeners(),this._removeListeners=this._server=null,s.close(()=>{Se(this)})}}shouldHandle(e){if(this.options.path){let s=e.url.indexOf("?");if((s!==-1?e.url.slice(0,s):e.url)!==this.options.path)return!1}return!0}handleUpgrade(e,s,r,n){s.on("error",Ts);let i=e.headers["sec-websocket-key"],o=e.headers.upgrade,a=+e.headers["sec-websocket-version"];if(e.method!=="GET"){Q(this,e,s,405,"Invalid HTTP method");return}if(o===void 0||o.toLowerCase()!=="websocket"){Q(this,e,s,400,"Invalid Upgrade header");return}if(i===void 0||!An.test(i)){Q(this,e,s,400,"Missing or invalid Sec-WebSocket-Key header");return}if(a!==13&&a!==8){Q(this,e,s,400,"Missing or invalid Sec-WebSocket-Version header",{"Sec-WebSocket-Version":"13, 8"});return}if(!this.shouldHandle(e)){xe(s,400);return}let c=e.headers["sec-websocket-protocol"],u=new Set;if(c!==void 0)try{u=Ln.parse(c)}catch{Q(this,e,s,400,"Invalid Sec-WebSocket-Protocol header");return}let h=e.headers["sec-websocket-extensions"],_={};if(this.options.perMessageDeflate&&h!==void 0){let g=new Z({...this.options.perMessageDeflate,isServer:!0,maxPayload:this.options.maxPayload});try{let y=Es.parse(h);y[Z.extensionName]&&(g.accept(y[Z.extensionName]),_[Z.extensionName]=g)}catch{Q(this,e,s,400,"Invalid or unacceptable Sec-WebSocket-Extensions header");return}}if(this.options.verifyClient){let g={origin:e.headers[`${a===8?"sec-websocket-origin":"origin"}`],secure:!!(e.socket.authorized||e.socket.encrypted),req:e};if(this.options.verifyClient.length===2){this.options.verifyClient(g,(y,w,p,k)=>{if(!y)return xe(s,w||401,p,k);this.completeUpgrade(_,i,u,e,s,r,n)});return}if(!this.options.verifyClient(g))return xe(s,401)}this.completeUpgrade(_,i,u,e,s,r,n)}completeUpgrade(e,s,r,n,i,o,a){if(!i.readable||!i.writable)return i.destroy();if(i[In])throw new Error("server.handleUpgrade() was called more than once with the same socket, possibly due to a misconfiguration");if(this._state>vs)return xe(i,503);let u=["HTTP/1.1 101 Switching Protocols","Upgrade: websocket","Connection: Upgrade",`Sec-WebSocket-Accept: ${Nn("sha1").update(s+Bn).digest("base64")}`],h=new this.options.WebSocket(null,void 0,this.options);if(r.size){let _=this.options.handleProtocols?this.options.handleProtocols(r,n):r.values().next().value;_&&(u.push(`Sec-WebSocket-Protocol: ${_}`),h._protocol=_)}if(e[Z.extensionName]){let _=e[Z.extensionName].params,g=Es.format({[Z.extensionName]:[_]});u.push(`Sec-WebSocket-Extensions: ${g}`),h._extensions=e}this.emit("headers",u,n),i.write(u.concat(`\r
|
|
2
|
+
"use strict";var gr=Object.create;var Pt=Object.defineProperty;var mr=Object.getOwnPropertyDescriptor;var yr=Object.getOwnPropertyNames;var Sr=Object.getPrototypeOf,xr=Object.prototype.hasOwnProperty;var L=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports);var br=(t,e,s,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of yr(e))!xr.call(t,n)&&n!==s&&Pt(t,n,{get:()=>e[n],enumerable:!(r=mr(e,n))||r.enumerable});return t};var E=(t,e,s)=>(s=t!=null?gr(Sr(t)):{},br(e||!t||!t.__esModule?Pt(s,"default",{value:t,enumerable:!0}):s,t));var j=L((Oo,Bt)=>{"use strict";var $t=["nodebuffer","arraybuffer","fragments"],It=typeof Blob<"u";It&&$t.push("blob");Bt.exports={BINARY_TYPES:$t,CLOSE_TIMEOUT:3e4,EMPTY_BUFFER:Buffer.alloc(0),GUID:"258EAFA5-E914-47DA-95CA-C5AB0DC85B11",hasBlob:It,kForOnEventAttribute:Symbol("kIsForOnEventAttribute"),kListener:Symbol("kListener"),kStatusCode:Symbol("status-code"),kWebSocket:Symbol("websocket"),NOOP:()=>{}}});var pe=L((Co,Ce)=>{"use strict";var{EMPTY_BUFFER:Er}=j(),Qe=Buffer[Symbol.species];function wr(t,e){if(t.length===0)return Er;if(t.length===1)return t[0];let s=Buffer.allocUnsafe(e),r=0;for(let n=0;n<t.length;n++){let o=t[n];s.set(o,r),r+=o.length}return r<e?new Qe(s.buffer,s.byteOffset,r):s}function Mt(t,e,s,r,n){for(let o=0;o<n;o++)s[r+o]=t[o]^e[o&3]}function At(t,e){for(let s=0;s<t.length;s++)t[s]^=e[s&3]}function vr(t){return t.length===t.buffer.byteLength?t.buffer:t.buffer.slice(t.byteOffset,t.byteOffset+t.length)}function et(t){if(et.readOnly=!0,Buffer.isBuffer(t))return t;let e;return t instanceof ArrayBuffer?e=new Qe(t):ArrayBuffer.isView(t)?e=new Qe(t.buffer,t.byteOffset,t.byteLength):(e=Buffer.from(t),et.readOnly=!1),e}Ce.exports={concat:wr,mask:Mt,toArrayBuffer:vr,toBuffer:et,unmask:At};if(!process.env.WS_NO_BUFFER_UTIL)try{let t=require("bufferutil");Ce.exports.mask=function(e,s,r,n,o){o<48?Mt(e,s,r,n,o):t.mask(e,s,r,n,o)},Ce.exports.unmask=function(e,s){e.length<32?At(e,s):t.unmask(e,s)}}catch{}});var Dt=L((ko,Ft)=>{"use strict";var Ut=Symbol("kDone"),tt=Symbol("kRun"),st=class{constructor(e){this[Ut]=()=>{this.pending--,this[tt]()},this.concurrency=e||1/0,this.jobs=[],this.pending=0}add(e){this.jobs.push(e),this[tt]()}[tt](){if(this.pending!==this.concurrency&&this.jobs.length){let e=this.jobs.shift();this.pending++,e(this[Ut])}}};Ft.exports=st});var re=L((No,Gt)=>{"use strict";var _e=require("zlib"),Wt=pe(),Tr=Dt(),{kStatusCode:jt}=j(),Or=Buffer[Symbol.species],Cr=Buffer.from([0,0,255,255]),Ne=Symbol("permessage-deflate"),q=Symbol("total-length"),te=Symbol("callback"),H=Symbol("buffers"),se=Symbol("error"),ke,rt=class{constructor(e){if(this._options=e||{},this._threshold=this._options.threshold!==void 0?this._options.threshold:1024,this._maxPayload=this._options.maxPayload|0,this._isServer=!!this._options.isServer,this._deflate=null,this._inflate=null,this.params=null,!ke){let s=this._options.concurrencyLimit!==void 0?this._options.concurrencyLimit:10;ke=new Tr(s)}}static get extensionName(){return"permessage-deflate"}offer(){let e={};return this._options.serverNoContextTakeover&&(e.server_no_context_takeover=!0),this._options.clientNoContextTakeover&&(e.client_no_context_takeover=!0),this._options.serverMaxWindowBits&&(e.server_max_window_bits=this._options.serverMaxWindowBits),this._options.clientMaxWindowBits?e.client_max_window_bits=this._options.clientMaxWindowBits:this._options.clientMaxWindowBits==null&&(e.client_max_window_bits=!0),e}accept(e){return e=this.normalizeParams(e),this.params=this._isServer?this.acceptAsServer(e):this.acceptAsClient(e),this.params}cleanup(){if(this._inflate&&(this._inflate.close(),this._inflate=null),this._deflate){let e=this._deflate[te];this._deflate.close(),this._deflate=null,e&&e(new Error("The deflate stream was closed while data was being processed"))}}acceptAsServer(e){let s=this._options,r=e.find(n=>!(s.serverNoContextTakeover===!1&&n.server_no_context_takeover||n.server_max_window_bits&&(s.serverMaxWindowBits===!1||typeof s.serverMaxWindowBits=="number"&&s.serverMaxWindowBits>n.server_max_window_bits)||typeof s.clientMaxWindowBits=="number"&&!n.client_max_window_bits));if(!r)throw new Error("None of the extension offers can be accepted");return s.serverNoContextTakeover&&(r.server_no_context_takeover=!0),s.clientNoContextTakeover&&(r.client_no_context_takeover=!0),typeof s.serverMaxWindowBits=="number"&&(r.server_max_window_bits=s.serverMaxWindowBits),typeof s.clientMaxWindowBits=="number"?r.client_max_window_bits=s.clientMaxWindowBits:(r.client_max_window_bits===!0||s.clientMaxWindowBits===!1)&&delete r.client_max_window_bits,r}acceptAsClient(e){let s=e[0];if(this._options.clientNoContextTakeover===!1&&s.client_no_context_takeover)throw new Error('Unexpected parameter "client_no_context_takeover"');if(!s.client_max_window_bits)typeof this._options.clientMaxWindowBits=="number"&&(s.client_max_window_bits=this._options.clientMaxWindowBits);else if(this._options.clientMaxWindowBits===!1||typeof this._options.clientMaxWindowBits=="number"&&s.client_max_window_bits>this._options.clientMaxWindowBits)throw new Error('Unexpected or invalid parameter "client_max_window_bits"');return s}normalizeParams(e){return e.forEach(s=>{Object.keys(s).forEach(r=>{let n=s[r];if(n.length>1)throw new Error(`Parameter "${r}" must have only a single value`);if(n=n[0],r==="client_max_window_bits"){if(n!==!0){let o=+n;if(!Number.isInteger(o)||o<8||o>15)throw new TypeError(`Invalid value for parameter "${r}": ${n}`);n=o}else if(!this._isServer)throw new TypeError(`Invalid value for parameter "${r}": ${n}`)}else if(r==="server_max_window_bits"){let o=+n;if(!Number.isInteger(o)||o<8||o>15)throw new TypeError(`Invalid value for parameter "${r}": ${n}`);n=o}else if(r==="client_no_context_takeover"||r==="server_no_context_takeover"){if(n!==!0)throw new TypeError(`Invalid value for parameter "${r}": ${n}`)}else throw new Error(`Unknown parameter "${r}"`);s[r]=n})}),e}decompress(e,s,r){ke.add(n=>{this._decompress(e,s,(o,i)=>{n(),r(o,i)})})}compress(e,s,r){ke.add(n=>{this._compress(e,s,(o,i)=>{n(),r(o,i)})})}_decompress(e,s,r){let n=this._isServer?"client":"server";if(!this._inflate){let o=`${n}_max_window_bits`,i=typeof this.params[o]!="number"?_e.Z_DEFAULT_WINDOWBITS:this.params[o];this._inflate=_e.createInflateRaw({...this._options.zlibInflateOptions,windowBits:i}),this._inflate[Ne]=this,this._inflate[q]=0,this._inflate[H]=[],this._inflate.on("error",Nr),this._inflate.on("data",qt)}this._inflate[te]=r,this._inflate.write(e),s&&this._inflate.write(Cr),this._inflate.flush(()=>{let o=this._inflate[se];if(o){this._inflate.close(),this._inflate=null,r(o);return}let i=Wt.concat(this._inflate[H],this._inflate[q]);this._inflate._readableState.endEmitted?(this._inflate.close(),this._inflate=null):(this._inflate[q]=0,this._inflate[H]=[],s&&this.params[`${n}_no_context_takeover`]&&this._inflate.reset()),r(null,i)})}_compress(e,s,r){let n=this._isServer?"server":"client";if(!this._deflate){let o=`${n}_max_window_bits`,i=typeof this.params[o]!="number"?_e.Z_DEFAULT_WINDOWBITS:this.params[o];this._deflate=_e.createDeflateRaw({...this._options.zlibDeflateOptions,windowBits:i}),this._deflate[q]=0,this._deflate[H]=[],this._deflate.on("data",kr)}this._deflate[te]=r,this._deflate.write(e),this._deflate.flush(_e.Z_SYNC_FLUSH,()=>{if(!this._deflate)return;let o=Wt.concat(this._deflate[H],this._deflate[q]);s&&(o=new Or(o.buffer,o.byteOffset,o.length-4)),this._deflate[te]=null,this._deflate[q]=0,this._deflate[H]=[],s&&this.params[`${n}_no_context_takeover`]&&this._deflate.reset(),r(null,o)})}};Gt.exports=rt;function kr(t){this[H].push(t),this[q]+=t.length}function qt(t){if(this[q]+=t.length,this[Ne]._maxPayload<1||this[q]<=this[Ne]._maxPayload){this[H].push(t);return}this[se]=new RangeError("Max payload size exceeded"),this[se].code="WS_ERR_UNSUPPORTED_MESSAGE_LENGTH",this[se][jt]=1009,this.removeListener("data",qt),this.reset()}function Nr(t){if(this[Ne]._inflate=null,this[se]){this[te](this[se]);return}t[jt]=1007,this[te](t)}});var ne=L((Ro,Re)=>{"use strict";var{isUtf8:Vt}=require("buffer"),{hasBlob:Rr}=j(),Lr=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,1,1,1,1,0,0,1,1,0,1,1,0,1,1,1,1,1,1,1,1,1,1,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,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,0,1,0,1,0];function Pr(t){return t>=1e3&&t<=1014&&t!==1004&&t!==1005&&t!==1006||t>=3e3&&t<=4999}function nt(t){let e=t.length,s=0;for(;s<e;)if((t[s]&128)===0)s++;else if((t[s]&224)===192){if(s+1===e||(t[s+1]&192)!==128||(t[s]&254)===192)return!1;s+=2}else if((t[s]&240)===224){if(s+2>=e||(t[s+1]&192)!==128||(t[s+2]&192)!==128||t[s]===224&&(t[s+1]&224)===128||t[s]===237&&(t[s+1]&224)===160)return!1;s+=3}else if((t[s]&248)===240){if(s+3>=e||(t[s+1]&192)!==128||(t[s+2]&192)!==128||(t[s+3]&192)!==128||t[s]===240&&(t[s+1]&240)===128||t[s]===244&&t[s+1]>143||t[s]>244)return!1;s+=4}else return!1;return!0}function $r(t){return Rr&&typeof t=="object"&&typeof t.arrayBuffer=="function"&&typeof t.type=="string"&&typeof t.stream=="function"&&(t[Symbol.toStringTag]==="Blob"||t[Symbol.toStringTag]==="File")}Re.exports={isBlob:$r,isValidStatusCode:Pr,isValidUTF8:nt,tokenChars:Lr};if(Vt)Re.exports.isValidUTF8=function(t){return t.length<24?nt(t):Vt(t)};else if(!process.env.WS_NO_UTF_8_VALIDATE)try{let t=require("utf-8-validate");Re.exports.isValidUTF8=function(e){return e.length<32?nt(e):t(e)}}catch{}});var ct=L((Lo,Zt)=>{"use strict";var{Writable:Ir}=require("stream"),Yt=re(),{BINARY_TYPES:Br,EMPTY_BUFFER:zt,kStatusCode:Mr,kWebSocket:Ar}=j(),{concat:ot,toArrayBuffer:Ur,unmask:Fr}=pe(),{isValidStatusCode:Dr,isValidUTF8:Ht}=ne(),Le=Buffer[Symbol.species],$=0,Kt=1,Jt=2,Xt=3,it=4,at=5,Pe=6,lt=class extends Ir{constructor(e={}){super(),this._allowSynchronousEvents=e.allowSynchronousEvents!==void 0?e.allowSynchronousEvents:!0,this._binaryType=e.binaryType||Br[0],this._extensions=e.extensions||{},this._isServer=!!e.isServer,this._maxPayload=e.maxPayload|0,this._skipUTF8Validation=!!e.skipUTF8Validation,this[Ar]=void 0,this._bufferedBytes=0,this._buffers=[],this._compressed=!1,this._payloadLength=0,this._mask=void 0,this._fragmented=0,this._masked=!1,this._fin=!1,this._opcode=0,this._totalPayloadLength=0,this._messageLength=0,this._fragments=[],this._errored=!1,this._loop=!1,this._state=$}_write(e,s,r){if(this._opcode===8&&this._state==$)return r();this._bufferedBytes+=e.length,this._buffers.push(e),this.startLoop(r)}consume(e){if(this._bufferedBytes-=e,e===this._buffers[0].length)return this._buffers.shift();if(e<this._buffers[0].length){let r=this._buffers[0];return this._buffers[0]=new Le(r.buffer,r.byteOffset+e,r.length-e),new Le(r.buffer,r.byteOffset,e)}let s=Buffer.allocUnsafe(e);do{let r=this._buffers[0],n=s.length-e;e>=r.length?s.set(this._buffers.shift(),n):(s.set(new Uint8Array(r.buffer,r.byteOffset,e),n),this._buffers[0]=new Le(r.buffer,r.byteOffset+e,r.length-e)),e-=r.length}while(e>0);return s}startLoop(e){this._loop=!0;do switch(this._state){case $:this.getInfo(e);break;case Kt:this.getPayloadLength16(e);break;case Jt:this.getPayloadLength64(e);break;case Xt:this.getMask();break;case it:this.getData(e);break;case at:case Pe:this._loop=!1;return}while(this._loop);this._errored||e()}getInfo(e){if(this._bufferedBytes<2){this._loop=!1;return}let s=this.consume(2);if((s[0]&48)!==0){let n=this.createError(RangeError,"RSV2 and RSV3 must be clear",!0,1002,"WS_ERR_UNEXPECTED_RSV_2_3");e(n);return}let r=(s[0]&64)===64;if(r&&!this._extensions[Yt.extensionName]){let n=this.createError(RangeError,"RSV1 must be clear",!0,1002,"WS_ERR_UNEXPECTED_RSV_1");e(n);return}if(this._fin=(s[0]&128)===128,this._opcode=s[0]&15,this._payloadLength=s[1]&127,this._opcode===0){if(r){let n=this.createError(RangeError,"RSV1 must be clear",!0,1002,"WS_ERR_UNEXPECTED_RSV_1");e(n);return}if(!this._fragmented){let n=this.createError(RangeError,"invalid opcode 0",!0,1002,"WS_ERR_INVALID_OPCODE");e(n);return}this._opcode=this._fragmented}else if(this._opcode===1||this._opcode===2){if(this._fragmented){let n=this.createError(RangeError,`invalid opcode ${this._opcode}`,!0,1002,"WS_ERR_INVALID_OPCODE");e(n);return}this._compressed=r}else if(this._opcode>7&&this._opcode<11){if(!this._fin){let n=this.createError(RangeError,"FIN must be set",!0,1002,"WS_ERR_EXPECTED_FIN");e(n);return}if(r){let n=this.createError(RangeError,"RSV1 must be clear",!0,1002,"WS_ERR_UNEXPECTED_RSV_1");e(n);return}if(this._payloadLength>125||this._opcode===8&&this._payloadLength===1){let n=this.createError(RangeError,`invalid payload length ${this._payloadLength}`,!0,1002,"WS_ERR_INVALID_CONTROL_PAYLOAD_LENGTH");e(n);return}}else{let n=this.createError(RangeError,`invalid opcode ${this._opcode}`,!0,1002,"WS_ERR_INVALID_OPCODE");e(n);return}if(!this._fin&&!this._fragmented&&(this._fragmented=this._opcode),this._masked=(s[1]&128)===128,this._isServer){if(!this._masked){let n=this.createError(RangeError,"MASK must be set",!0,1002,"WS_ERR_EXPECTED_MASK");e(n);return}}else if(this._masked){let n=this.createError(RangeError,"MASK must be clear",!0,1002,"WS_ERR_UNEXPECTED_MASK");e(n);return}this._payloadLength===126?this._state=Kt:this._payloadLength===127?this._state=Jt:this.haveLength(e)}getPayloadLength16(e){if(this._bufferedBytes<2){this._loop=!1;return}this._payloadLength=this.consume(2).readUInt16BE(0),this.haveLength(e)}getPayloadLength64(e){if(this._bufferedBytes<8){this._loop=!1;return}let s=this.consume(8),r=s.readUInt32BE(0);if(r>Math.pow(2,21)-1){let n=this.createError(RangeError,"Unsupported WebSocket frame: payload length > 2^53 - 1",!1,1009,"WS_ERR_UNSUPPORTED_DATA_PAYLOAD_LENGTH");e(n);return}this._payloadLength=r*Math.pow(2,32)+s.readUInt32BE(4),this.haveLength(e)}haveLength(e){if(this._payloadLength&&this._opcode<8&&(this._totalPayloadLength+=this._payloadLength,this._totalPayloadLength>this._maxPayload&&this._maxPayload>0)){let s=this.createError(RangeError,"Max payload size exceeded",!1,1009,"WS_ERR_UNSUPPORTED_MESSAGE_LENGTH");e(s);return}this._masked?this._state=Xt:this._state=it}getMask(){if(this._bufferedBytes<4){this._loop=!1;return}this._mask=this.consume(4),this._state=it}getData(e){let s=zt;if(this._payloadLength){if(this._bufferedBytes<this._payloadLength){this._loop=!1;return}s=this.consume(this._payloadLength),this._masked&&(this._mask[0]|this._mask[1]|this._mask[2]|this._mask[3])!==0&&Fr(s,this._mask)}if(this._opcode>7){this.controlMessage(s,e);return}if(this._compressed){this._state=at,this.decompress(s,e);return}s.length&&(this._messageLength=this._totalPayloadLength,this._fragments.push(s)),this.dataMessage(e)}decompress(e,s){this._extensions[Yt.extensionName].decompress(e,this._fin,(n,o)=>{if(n)return s(n);if(o.length){if(this._messageLength+=o.length,this._messageLength>this._maxPayload&&this._maxPayload>0){let i=this.createError(RangeError,"Max payload size exceeded",!1,1009,"WS_ERR_UNSUPPORTED_MESSAGE_LENGTH");s(i);return}this._fragments.push(o)}this.dataMessage(s),this._state===$&&this.startLoop(s)})}dataMessage(e){if(!this._fin){this._state=$;return}let s=this._messageLength,r=this._fragments;if(this._totalPayloadLength=0,this._messageLength=0,this._fragmented=0,this._fragments=[],this._opcode===2){let n;this._binaryType==="nodebuffer"?n=ot(r,s):this._binaryType==="arraybuffer"?n=Ur(ot(r,s)):this._binaryType==="blob"?n=new Blob(r):n=r,this._allowSynchronousEvents?(this.emit("message",n,!0),this._state=$):(this._state=Pe,setImmediate(()=>{this.emit("message",n,!0),this._state=$,this.startLoop(e)}))}else{let n=ot(r,s);if(!this._skipUTF8Validation&&!Ht(n)){let o=this.createError(Error,"invalid UTF-8 sequence",!0,1007,"WS_ERR_INVALID_UTF8");e(o);return}this._state===at||this._allowSynchronousEvents?(this.emit("message",n,!1),this._state=$):(this._state=Pe,setImmediate(()=>{this.emit("message",n,!1),this._state=$,this.startLoop(e)}))}}controlMessage(e,s){if(this._opcode===8){if(e.length===0)this._loop=!1,this.emit("conclude",1005,zt),this.end();else{let r=e.readUInt16BE(0);if(!Dr(r)){let o=this.createError(RangeError,`invalid status code ${r}`,!0,1002,"WS_ERR_INVALID_CLOSE_CODE");s(o);return}let n=new Le(e.buffer,e.byteOffset+2,e.length-2);if(!this._skipUTF8Validation&&!Ht(n)){let o=this.createError(Error,"invalid UTF-8 sequence",!0,1007,"WS_ERR_INVALID_UTF8");s(o);return}this._loop=!1,this.emit("conclude",r,n),this.end()}this._state=$;return}this._allowSynchronousEvents?(this.emit(this._opcode===9?"ping":"pong",e),this._state=$):(this._state=Pe,setImmediate(()=>{this.emit(this._opcode===9?"ping":"pong",e),this._state=$,this.startLoop(s)}))}createError(e,s,r,n,o){this._loop=!1,this._errored=!0;let i=new e(r?`Invalid WebSocket frame: ${s}`:s);return Error.captureStackTrace(i,this.createError),i.code=o,i[Mr]=n,i}};Zt.exports=lt});var ht=L(($o,ts)=>{"use strict";var{Duplex:Po}=require("stream"),{randomFillSync:Wr}=require("crypto"),Qt=re(),{EMPTY_BUFFER:jr,kWebSocket:qr,NOOP:Gr}=j(),{isBlob:oe,isValidStatusCode:Vr}=ne(),{mask:es,toBuffer:J}=pe(),I=Symbol("kByteLength"),Yr=Buffer.alloc(4),$e=8*1024,X,ie=$e,M=0,zr=1,Hr=2,ft=class t{constructor(e,s,r){this._extensions=s||{},r&&(this._generateMask=r,this._maskBuffer=Buffer.alloc(4)),this._socket=e,this._firstFragment=!0,this._compress=!1,this._bufferedBytes=0,this._queue=[],this._state=M,this.onerror=Gr,this[qr]=void 0}static frame(e,s){let r,n=!1,o=2,i=!1;s.mask&&(r=s.maskBuffer||Yr,s.generateMask?s.generateMask(r):(ie===$e&&(X===void 0&&(X=Buffer.alloc($e)),Wr(X,0,$e),ie=0),r[0]=X[ie++],r[1]=X[ie++],r[2]=X[ie++],r[3]=X[ie++]),i=(r[0]|r[1]|r[2]|r[3])===0,o=6);let f;typeof e=="string"?(!s.mask||i)&&s[I]!==void 0?f=s[I]:(e=Buffer.from(e),f=e.length):(f=e.length,n=s.mask&&s.readOnly&&!i);let c=f;f>=65536?(o+=8,c=127):f>125&&(o+=2,c=126);let u=Buffer.allocUnsafe(n?f+o:o);return u[0]=s.fin?s.opcode|128:s.opcode,s.rsv1&&(u[0]|=64),u[1]=c,c===126?u.writeUInt16BE(f,2):c===127&&(u[2]=u[3]=0,u.writeUIntBE(f,4,6)),s.mask?(u[1]|=128,u[o-4]=r[0],u[o-3]=r[1],u[o-2]=r[2],u[o-1]=r[3],i?[u,e]:n?(es(e,r,u,o,f),[u]):(es(e,r,e,0,f),[u,e])):[u,e]}close(e,s,r,n){let o;if(e===void 0)o=jr;else{if(typeof e!="number"||!Vr(e))throw new TypeError("First argument must be a valid error code number");if(s===void 0||!s.length)o=Buffer.allocUnsafe(2),o.writeUInt16BE(e,0);else{let f=Buffer.byteLength(s);if(f>123)throw new RangeError("The message must not be greater than 123 bytes");o=Buffer.allocUnsafe(2+f),o.writeUInt16BE(e,0),typeof s=="string"?o.write(s,2):o.set(s,2)}}let i={[I]:o.length,fin:!0,generateMask:this._generateMask,mask:r,maskBuffer:this._maskBuffer,opcode:8,readOnly:!1,rsv1:!1};this._state!==M?this.enqueue([this.dispatch,o,!1,i,n]):this.sendFrame(t.frame(o,i),n)}ping(e,s,r){let n,o;if(typeof e=="string"?(n=Buffer.byteLength(e),o=!1):oe(e)?(n=e.size,o=!1):(e=J(e),n=e.length,o=J.readOnly),n>125)throw new RangeError("The data size must not be greater than 125 bytes");let i={[I]:n,fin:!0,generateMask:this._generateMask,mask:s,maskBuffer:this._maskBuffer,opcode:9,readOnly:o,rsv1:!1};oe(e)?this._state!==M?this.enqueue([this.getBlobData,e,!1,i,r]):this.getBlobData(e,!1,i,r):this._state!==M?this.enqueue([this.dispatch,e,!1,i,r]):this.sendFrame(t.frame(e,i),r)}pong(e,s,r){let n,o;if(typeof e=="string"?(n=Buffer.byteLength(e),o=!1):oe(e)?(n=e.size,o=!1):(e=J(e),n=e.length,o=J.readOnly),n>125)throw new RangeError("The data size must not be greater than 125 bytes");let i={[I]:n,fin:!0,generateMask:this._generateMask,mask:s,maskBuffer:this._maskBuffer,opcode:10,readOnly:o,rsv1:!1};oe(e)?this._state!==M?this.enqueue([this.getBlobData,e,!1,i,r]):this.getBlobData(e,!1,i,r):this._state!==M?this.enqueue([this.dispatch,e,!1,i,r]):this.sendFrame(t.frame(e,i),r)}send(e,s,r){let n=this._extensions[Qt.extensionName],o=s.binary?2:1,i=s.compress,f,c;typeof e=="string"?(f=Buffer.byteLength(e),c=!1):oe(e)?(f=e.size,c=!1):(e=J(e),f=e.length,c=J.readOnly),this._firstFragment?(this._firstFragment=!1,i&&n&&n.params[n._isServer?"server_no_context_takeover":"client_no_context_takeover"]&&(i=f>=n._threshold),this._compress=i):(i=!1,o=0),s.fin&&(this._firstFragment=!0);let u={[I]:f,fin:s.fin,generateMask:this._generateMask,mask:s.mask,maskBuffer:this._maskBuffer,opcode:o,readOnly:c,rsv1:i};oe(e)?this._state!==M?this.enqueue([this.getBlobData,e,this._compress,u,r]):this.getBlobData(e,this._compress,u,r):this._state!==M?this.enqueue([this.dispatch,e,this._compress,u,r]):this.dispatch(e,this._compress,u,r)}getBlobData(e,s,r,n){this._bufferedBytes+=r[I],this._state=Hr,e.arrayBuffer().then(o=>{if(this._socket.destroyed){let f=new Error("The socket was closed while the blob was being read");process.nextTick(ut,this,f,n);return}this._bufferedBytes-=r[I];let i=J(o);s?this.dispatch(i,s,r,n):(this._state=M,this.sendFrame(t.frame(i,r),n),this.dequeue())}).catch(o=>{process.nextTick(Kr,this,o,n)})}dispatch(e,s,r,n){if(!s){this.sendFrame(t.frame(e,r),n);return}let o=this._extensions[Qt.extensionName];this._bufferedBytes+=r[I],this._state=zr,o.compress(e,r.fin,(i,f)=>{if(this._socket.destroyed){let c=new Error("The socket was closed while data was being compressed");ut(this,c,n);return}this._bufferedBytes-=r[I],this._state=M,r.readOnly=!1,this.sendFrame(t.frame(f,r),n),this.dequeue()})}dequeue(){for(;this._state===M&&this._queue.length;){let e=this._queue.shift();this._bufferedBytes-=e[3][I],Reflect.apply(e[0],this,e.slice(1))}}enqueue(e){this._bufferedBytes+=e[3][I],this._queue.push(e)}sendFrame(e,s){e.length===2?(this._socket.cork(),this._socket.write(e[0]),this._socket.write(e[1],s),this._socket.uncork()):this._socket.write(e[0],s)}};ts.exports=ft;function ut(t,e,s){typeof s=="function"&&s(e);for(let r=0;r<t._queue.length;r++){let n=t._queue[r],o=n[n.length-1];typeof o=="function"&&o(e)}}function Kr(t,e,s){ut(t,e,s),t.onerror(e)}});var fs=L((Io,cs)=>{"use strict";var{kForOnEventAttribute:ge,kListener:dt}=j(),ss=Symbol("kCode"),rs=Symbol("kData"),ns=Symbol("kError"),os=Symbol("kMessage"),is=Symbol("kReason"),ae=Symbol("kTarget"),as=Symbol("kType"),ls=Symbol("kWasClean"),G=class{constructor(e){this[ae]=null,this[as]=e}get target(){return this[ae]}get type(){return this[as]}};Object.defineProperty(G.prototype,"target",{enumerable:!0});Object.defineProperty(G.prototype,"type",{enumerable:!0});var Z=class extends G{constructor(e,s={}){super(e),this[ss]=s.code===void 0?0:s.code,this[is]=s.reason===void 0?"":s.reason,this[ls]=s.wasClean===void 0?!1:s.wasClean}get code(){return this[ss]}get reason(){return this[is]}get wasClean(){return this[ls]}};Object.defineProperty(Z.prototype,"code",{enumerable:!0});Object.defineProperty(Z.prototype,"reason",{enumerable:!0});Object.defineProperty(Z.prototype,"wasClean",{enumerable:!0});var le=class extends G{constructor(e,s={}){super(e),this[ns]=s.error===void 0?null:s.error,this[os]=s.message===void 0?"":s.message}get error(){return this[ns]}get message(){return this[os]}};Object.defineProperty(le.prototype,"error",{enumerable:!0});Object.defineProperty(le.prototype,"message",{enumerable:!0});var me=class extends G{constructor(e,s={}){super(e),this[rs]=s.data===void 0?null:s.data}get data(){return this[rs]}};Object.defineProperty(me.prototype,"data",{enumerable:!0});var Jr={addEventListener(t,e,s={}){for(let n of this.listeners(t))if(!s[ge]&&n[dt]===e&&!n[ge])return;let r;if(t==="message")r=function(o,i){let f=new me("message",{data:i?o:o.toString()});f[ae]=this,Ie(e,this,f)};else if(t==="close")r=function(o,i){let f=new Z("close",{code:o,reason:i.toString(),wasClean:this._closeFrameReceived&&this._closeFrameSent});f[ae]=this,Ie(e,this,f)};else if(t==="error")r=function(o){let i=new le("error",{error:o,message:o.message});i[ae]=this,Ie(e,this,i)};else if(t==="open")r=function(){let o=new G("open");o[ae]=this,Ie(e,this,o)};else return;r[ge]=!!s[ge],r[dt]=e,s.once?this.once(t,r):this.on(t,r)},removeEventListener(t,e){for(let s of this.listeners(t))if(s[dt]===e&&!s[ge]){this.removeListener(t,s);break}}};cs.exports={CloseEvent:Z,ErrorEvent:le,Event:G,EventTarget:Jr,MessageEvent:me};function Ie(t,e,s){typeof t=="object"&&t.handleEvent?t.handleEvent.call(t,s):t.call(e,s)}});var Be=L((Bo,us)=>{"use strict";var{tokenChars:ye}=ne();function F(t,e,s){t[e]===void 0?t[e]=[s]:t[e].push(s)}function Xr(t){let e=Object.create(null),s=Object.create(null),r=!1,n=!1,o=!1,i,f,c=-1,u=-1,d=-1,p=0;for(;p<t.length;p++)if(u=t.charCodeAt(p),i===void 0)if(d===-1&&ye[u]===1)c===-1&&(c=p);else if(p!==0&&(u===32||u===9))d===-1&&c!==-1&&(d=p);else if(u===59||u===44){if(c===-1)throw new SyntaxError(`Unexpected character at index ${p}`);d===-1&&(d=p);let _=t.slice(c,d);u===44?(F(e,_,s),s=Object.create(null)):i=_,c=d=-1}else throw new SyntaxError(`Unexpected character at index ${p}`);else if(f===void 0)if(d===-1&&ye[u]===1)c===-1&&(c=p);else if(u===32||u===9)d===-1&&c!==-1&&(d=p);else if(u===59||u===44){if(c===-1)throw new SyntaxError(`Unexpected character at index ${p}`);d===-1&&(d=p),F(s,t.slice(c,d),!0),u===44&&(F(e,i,s),s=Object.create(null),i=void 0),c=d=-1}else if(u===61&&c!==-1&&d===-1)f=t.slice(c,p),c=d=-1;else throw new SyntaxError(`Unexpected character at index ${p}`);else if(n){if(ye[u]!==1)throw new SyntaxError(`Unexpected character at index ${p}`);c===-1?c=p:r||(r=!0),n=!1}else if(o)if(ye[u]===1)c===-1&&(c=p);else if(u===34&&c!==-1)o=!1,d=p;else if(u===92)n=!0;else throw new SyntaxError(`Unexpected character at index ${p}`);else if(u===34&&t.charCodeAt(p-1)===61)o=!0;else if(d===-1&&ye[u]===1)c===-1&&(c=p);else if(c!==-1&&(u===32||u===9))d===-1&&(d=p);else if(u===59||u===44){if(c===-1)throw new SyntaxError(`Unexpected character at index ${p}`);d===-1&&(d=p);let _=t.slice(c,d);r&&(_=_.replace(/\\/g,""),r=!1),F(s,f,_),u===44&&(F(e,i,s),s=Object.create(null),i=void 0),f=void 0,c=d=-1}else throw new SyntaxError(`Unexpected character at index ${p}`);if(c===-1||o||u===32||u===9)throw new SyntaxError("Unexpected end of input");d===-1&&(d=p);let x=t.slice(c,d);return i===void 0?F(e,x,s):(f===void 0?F(s,x,!0):r?F(s,f,x.replace(/\\/g,"")):F(s,f,x),F(e,i,s)),e}function Zr(t){return Object.keys(t).map(e=>{let s=t[e];return Array.isArray(s)||(s=[s]),s.map(r=>[e].concat(Object.keys(r).map(n=>{let o=r[n];return Array.isArray(o)||(o=[o]),o.map(i=>i===!0?n:`${n}=${i}`).join("; ")})).join("; ")).join(", ")}).join(", ")}us.exports={format:Zr,parse:Xr}});var Fe=L((Uo,ws)=>{"use strict";var Qr=require("events"),en=require("https"),tn=require("http"),ps=require("net"),sn=require("tls"),{randomBytes:rn,createHash:nn}=require("crypto"),{Duplex:Mo,Readable:Ao}=require("stream"),{URL:pt}=require("url"),K=re(),on=ct(),an=ht(),{isBlob:ln}=ne(),{BINARY_TYPES:hs,CLOSE_TIMEOUT:cn,EMPTY_BUFFER:Me,GUID:fn,kForOnEventAttribute:_t,kListener:un,kStatusCode:hn,kWebSocket:k,NOOP:_s}=j(),{EventTarget:{addEventListener:dn,removeEventListener:pn}}=fs(),{format:_n,parse:gn}=Be(),{toBuffer:mn}=pe(),gs=Symbol("kAborted"),gt=[8,13],V=["CONNECTING","OPEN","CLOSING","CLOSED"],yn=/^[!#$%&'*+\-.0-9A-Z^_`|a-z~]+$/,w=class t extends Qr{constructor(e,s,r){super(),this._binaryType=hs[0],this._closeCode=1006,this._closeFrameReceived=!1,this._closeFrameSent=!1,this._closeMessage=Me,this._closeTimer=null,this._errorEmitted=!1,this._extensions={},this._paused=!1,this._protocol="",this._readyState=t.CONNECTING,this._receiver=null,this._sender=null,this._socket=null,e!==null?(this._bufferedAmount=0,this._isServer=!1,this._redirects=0,s===void 0?s=[]:Array.isArray(s)||(typeof s=="object"&&s!==null?(r=s,s=[]):s=[s]),ms(this,e,s,r)):(this._autoPong=r.autoPong,this._closeTimeout=r.closeTimeout,this._isServer=!0)}get binaryType(){return this._binaryType}set binaryType(e){hs.includes(e)&&(this._binaryType=e,this._receiver&&(this._receiver._binaryType=e))}get bufferedAmount(){return this._socket?this._socket._writableState.length+this._sender._bufferedBytes:this._bufferedAmount}get extensions(){return Object.keys(this._extensions).join()}get isPaused(){return this._paused}get onclose(){return null}get onerror(){return null}get onopen(){return null}get onmessage(){return null}get protocol(){return this._protocol}get readyState(){return this._readyState}get url(){return this._url}setSocket(e,s,r){let n=new on({allowSynchronousEvents:r.allowSynchronousEvents,binaryType:this.binaryType,extensions:this._extensions,isServer:this._isServer,maxPayload:r.maxPayload,skipUTF8Validation:r.skipUTF8Validation}),o=new an(e,this._extensions,r.generateMask);this._receiver=n,this._sender=o,this._socket=e,n[k]=this,o[k]=this,e[k]=this,n.on("conclude",bn),n.on("drain",En),n.on("error",wn),n.on("message",vn),n.on("ping",Tn),n.on("pong",On),o.onerror=Cn,e.setTimeout&&e.setTimeout(0),e.setNoDelay&&e.setNoDelay(),s.length>0&&e.unshift(s),e.on("close",xs),e.on("data",Ue),e.on("end",bs),e.on("error",Es),this._readyState=t.OPEN,this.emit("open")}emitClose(){if(!this._socket){this._readyState=t.CLOSED,this.emit("close",this._closeCode,this._closeMessage);return}this._extensions[K.extensionName]&&this._extensions[K.extensionName].cleanup(),this._receiver.removeAllListeners(),this._readyState=t.CLOSED,this.emit("close",this._closeCode,this._closeMessage)}close(e,s){if(this.readyState!==t.CLOSED){if(this.readyState===t.CONNECTING){P(this,this._req,"WebSocket was closed before the connection was established");return}if(this.readyState===t.CLOSING){this._closeFrameSent&&(this._closeFrameReceived||this._receiver._writableState.errorEmitted)&&this._socket.end();return}this._readyState=t.CLOSING,this._sender.close(e,s,!this._isServer,r=>{r||(this._closeFrameSent=!0,(this._closeFrameReceived||this._receiver._writableState.errorEmitted)&&this._socket.end())}),Ss(this)}}pause(){this.readyState===t.CONNECTING||this.readyState===t.CLOSED||(this._paused=!0,this._socket.pause())}ping(e,s,r){if(this.readyState===t.CONNECTING)throw new Error("WebSocket is not open: readyState 0 (CONNECTING)");if(typeof e=="function"?(r=e,e=s=void 0):typeof s=="function"&&(r=s,s=void 0),typeof e=="number"&&(e=e.toString()),this.readyState!==t.OPEN){mt(this,e,r);return}s===void 0&&(s=!this._isServer),this._sender.ping(e||Me,s,r)}pong(e,s,r){if(this.readyState===t.CONNECTING)throw new Error("WebSocket is not open: readyState 0 (CONNECTING)");if(typeof e=="function"?(r=e,e=s=void 0):typeof s=="function"&&(r=s,s=void 0),typeof e=="number"&&(e=e.toString()),this.readyState!==t.OPEN){mt(this,e,r);return}s===void 0&&(s=!this._isServer),this._sender.pong(e||Me,s,r)}resume(){this.readyState===t.CONNECTING||this.readyState===t.CLOSED||(this._paused=!1,this._receiver._writableState.needDrain||this._socket.resume())}send(e,s,r){if(this.readyState===t.CONNECTING)throw new Error("WebSocket is not open: readyState 0 (CONNECTING)");if(typeof s=="function"&&(r=s,s={}),typeof e=="number"&&(e=e.toString()),this.readyState!==t.OPEN){mt(this,e,r);return}let n={binary:typeof e!="string",mask:!this._isServer,compress:!0,fin:!0,...s};this._extensions[K.extensionName]||(n.compress=!1),this._sender.send(e||Me,n,r)}terminate(){if(this.readyState!==t.CLOSED){if(this.readyState===t.CONNECTING){P(this,this._req,"WebSocket was closed before the connection was established");return}this._socket&&(this._readyState=t.CLOSING,this._socket.destroy())}}};Object.defineProperty(w,"CONNECTING",{enumerable:!0,value:V.indexOf("CONNECTING")});Object.defineProperty(w.prototype,"CONNECTING",{enumerable:!0,value:V.indexOf("CONNECTING")});Object.defineProperty(w,"OPEN",{enumerable:!0,value:V.indexOf("OPEN")});Object.defineProperty(w.prototype,"OPEN",{enumerable:!0,value:V.indexOf("OPEN")});Object.defineProperty(w,"CLOSING",{enumerable:!0,value:V.indexOf("CLOSING")});Object.defineProperty(w.prototype,"CLOSING",{enumerable:!0,value:V.indexOf("CLOSING")});Object.defineProperty(w,"CLOSED",{enumerable:!0,value:V.indexOf("CLOSED")});Object.defineProperty(w.prototype,"CLOSED",{enumerable:!0,value:V.indexOf("CLOSED")});["binaryType","bufferedAmount","extensions","isPaused","protocol","readyState","url"].forEach(t=>{Object.defineProperty(w.prototype,t,{enumerable:!0})});["open","error","close","message"].forEach(t=>{Object.defineProperty(w.prototype,`on${t}`,{enumerable:!0,get(){for(let e of this.listeners(t))if(e[_t])return e[un];return null},set(e){for(let s of this.listeners(t))if(s[_t]){this.removeListener(t,s);break}typeof e=="function"&&this.addEventListener(t,e,{[_t]:!0})}})});w.prototype.addEventListener=dn;w.prototype.removeEventListener=pn;ws.exports=w;function ms(t,e,s,r){let n={allowSynchronousEvents:!0,autoPong:!0,closeTimeout:cn,protocolVersion:gt[1],maxPayload:104857600,skipUTF8Validation:!1,perMessageDeflate:!0,followRedirects:!1,maxRedirects:10,...r,socketPath:void 0,hostname:void 0,protocol:void 0,timeout:void 0,method:"GET",host:void 0,path:void 0,port:void 0};if(t._autoPong=n.autoPong,t._closeTimeout=n.closeTimeout,!gt.includes(n.protocolVersion))throw new RangeError(`Unsupported protocol version: ${n.protocolVersion} (supported versions: ${gt.join(", ")})`);let o;if(e instanceof pt)o=e;else try{o=new pt(e)}catch{throw new SyntaxError(`Invalid URL: ${e}`)}o.protocol==="http:"?o.protocol="ws:":o.protocol==="https:"&&(o.protocol="wss:"),t._url=o.href;let i=o.protocol==="wss:",f=o.protocol==="ws+unix:",c;if(o.protocol!=="ws:"&&!i&&!f?c=`The URL's protocol must be one of "ws:", "wss:", "http:", "https:", or "ws+unix:"`:f&&!o.pathname?c="The URL's pathname is empty":o.hash&&(c="The URL contains a fragment identifier"),c){let y=new SyntaxError(c);if(t._redirects===0)throw y;Ae(t,y);return}let u=i?443:80,d=rn(16).toString("base64"),p=i?en.request:tn.request,x=new Set,_;if(n.createConnection=n.createConnection||(i?xn:Sn),n.defaultPort=n.defaultPort||u,n.port=o.port||u,n.host=o.hostname.startsWith("[")?o.hostname.slice(1,-1):o.hostname,n.headers={...n.headers,"Sec-WebSocket-Version":n.protocolVersion,"Sec-WebSocket-Key":d,Connection:"Upgrade",Upgrade:"websocket"},n.path=o.pathname+o.search,n.timeout=n.handshakeTimeout,n.perMessageDeflate&&(_=new K({...n.perMessageDeflate,isServer:!1,maxPayload:n.maxPayload}),n.headers["Sec-WebSocket-Extensions"]=_n({[K.extensionName]:_.offer()})),s.length){for(let y of s){if(typeof y!="string"||!yn.test(y)||x.has(y))throw new SyntaxError("An invalid or duplicated subprotocol was specified");x.add(y)}n.headers["Sec-WebSocket-Protocol"]=s.join(",")}if(n.origin&&(n.protocolVersion<13?n.headers["Sec-WebSocket-Origin"]=n.origin:n.headers.Origin=n.origin),(o.username||o.password)&&(n.auth=`${o.username}:${o.password}`),f){let y=n.path.split(":");n.socketPath=y[0],n.path=y[1]}let S;if(n.followRedirects){if(t._redirects===0){t._originalIpc=f,t._originalSecure=i,t._originalHostOrSocketPath=f?n.socketPath:o.host;let y=r&&r.headers;if(r={...r,headers:{}},y)for(let[g,W]of Object.entries(y))r.headers[g.toLowerCase()]=W}else if(t.listenerCount("redirect")===0){let y=f?t._originalIpc?n.socketPath===t._originalHostOrSocketPath:!1:t._originalIpc?!1:o.host===t._originalHostOrSocketPath;(!y||t._originalSecure&&!i)&&(delete n.headers.authorization,delete n.headers.cookie,y||delete n.headers.host,n.auth=void 0)}n.auth&&!r.headers.authorization&&(r.headers.authorization="Basic "+Buffer.from(n.auth).toString("base64")),S=t._req=p(n),t._redirects&&t.emit("redirect",t.url,S)}else S=t._req=p(n);n.timeout&&S.on("timeout",()=>{P(t,S,"Opening handshake has timed out")}),S.on("error",y=>{S===null||S[gs]||(S=t._req=null,Ae(t,y))}),S.on("response",y=>{let g=y.headers.location,W=y.statusCode;if(g&&n.followRedirects&&W>=300&&W<400){if(++t._redirects>n.maxRedirects){P(t,S,"Maximum redirects exceeded");return}S.abort();let Y;try{Y=new pt(g,e)}catch{let l=new SyntaxError(`Invalid URL: ${g}`);Ae(t,l);return}ms(t,Y,s,r)}else t.emit("unexpected-response",S,y)||P(t,S,`Unexpected server response: ${y.statusCode}`)}),S.on("upgrade",(y,g,W)=>{if(t.emit("upgrade",y),t.readyState!==w.CONNECTING)return;S=t._req=null;let Y=y.headers.upgrade;if(Y===void 0||Y.toLowerCase()!=="websocket"){P(t,g,"Invalid Upgrade header");return}let N=nn("sha1").update(d+fn).digest("base64");if(y.headers["sec-websocket-accept"]!==N){P(t,g,"Invalid Sec-WebSocket-Accept header");return}let l=y.headers["sec-websocket-protocol"],h;if(l!==void 0?x.size?x.has(l)||(h="Server sent an invalid subprotocol"):h="Server sent a subprotocol but none was requested":x.size&&(h="Server sent no subprotocol"),h){P(t,g,h);return}l&&(t._protocol=l);let m=y.headers["sec-websocket-extensions"];if(m!==void 0){if(!_){P(t,g,"Server sent a Sec-WebSocket-Extensions header but no extension was requested");return}let O;try{O=gn(m)}catch{P(t,g,"Invalid Sec-WebSocket-Extensions header");return}let b=Object.keys(O);if(b.length!==1||b[0]!==K.extensionName){P(t,g,"Server indicated an extension that was not requested");return}try{_.accept(O[K.extensionName])}catch{P(t,g,"Invalid Sec-WebSocket-Extensions header");return}t._extensions[K.extensionName]=_}t.setSocket(g,W,{allowSynchronousEvents:n.allowSynchronousEvents,generateMask:n.generateMask,maxPayload:n.maxPayload,skipUTF8Validation:n.skipUTF8Validation})}),n.finishRequest?n.finishRequest(S,t):S.end()}function Ae(t,e){t._readyState=w.CLOSING,t._errorEmitted=!0,t.emit("error",e),t.emitClose()}function Sn(t){return t.path=t.socketPath,ps.connect(t)}function xn(t){return t.path=void 0,!t.servername&&t.servername!==""&&(t.servername=ps.isIP(t.host)?"":t.host),sn.connect(t)}function P(t,e,s){t._readyState=w.CLOSING;let r=new Error(s);Error.captureStackTrace(r,P),e.setHeader?(e[gs]=!0,e.abort(),e.socket&&!e.socket.destroyed&&e.socket.destroy(),process.nextTick(Ae,t,r)):(e.destroy(r),e.once("error",t.emit.bind(t,"error")),e.once("close",t.emitClose.bind(t)))}function mt(t,e,s){if(e){let r=ln(e)?e.size:mn(e).length;t._socket?t._sender._bufferedBytes+=r:t._bufferedAmount+=r}if(s){let r=new Error(`WebSocket is not open: readyState ${t.readyState} (${V[t.readyState]})`);process.nextTick(s,r)}}function bn(t,e){let s=this[k];s._closeFrameReceived=!0,s._closeMessage=e,s._closeCode=t,s._socket[k]!==void 0&&(s._socket.removeListener("data",Ue),process.nextTick(ys,s._socket),t===1005?s.close():s.close(t,e))}function En(){let t=this[k];t.isPaused||t._socket.resume()}function wn(t){let e=this[k];e._socket[k]!==void 0&&(e._socket.removeListener("data",Ue),process.nextTick(ys,e._socket),e.close(t[hn])),e._errorEmitted||(e._errorEmitted=!0,e.emit("error",t))}function ds(){this[k].emitClose()}function vn(t,e){this[k].emit("message",t,e)}function Tn(t){let e=this[k];e._autoPong&&e.pong(t,!this._isServer,_s),e.emit("ping",t)}function On(t){this[k].emit("pong",t)}function ys(t){t.resume()}function Cn(t){let e=this[k];e.readyState!==w.CLOSED&&(e.readyState===w.OPEN&&(e._readyState=w.CLOSING,Ss(e)),this._socket.end(),e._errorEmitted||(e._errorEmitted=!0,e.emit("error",t)))}function Ss(t){t._closeTimer=setTimeout(t._socket.destroy.bind(t._socket),t._closeTimeout)}function xs(){let t=this[k];if(this.removeListener("close",xs),this.removeListener("data",Ue),this.removeListener("end",bs),t._readyState=w.CLOSING,!this._readableState.endEmitted&&!t._closeFrameReceived&&!t._receiver._writableState.errorEmitted&&this._readableState.length!==0){let e=this.read(this._readableState.length);t._receiver.write(e)}t._receiver.end(),this[k]=void 0,clearTimeout(t._closeTimer),t._receiver._writableState.finished||t._receiver._writableState.errorEmitted?t.emitClose():(t._receiver.on("error",ds),t._receiver.on("finish",ds))}function Ue(t){this[k]._receiver.write(t)||this.pause()}function bs(){let t=this[k];t._readyState=w.CLOSING,t._receiver.end(),this.end()}function Es(){let t=this[k];this.removeListener("error",Es),this.on("error",_s),t&&(t._readyState=w.CLOSING,this.destroy())}});var Cs=L((Do,Os)=>{"use strict";var Fo=Fe(),{Duplex:kn}=require("stream");function vs(t){t.emit("close")}function Nn(){!this.destroyed&&this._writableState.finished&&this.destroy()}function Ts(t){this.removeListener("error",Ts),this.destroy(),this.listenerCount("error")===0&&this.emit("error",t)}function Rn(t,e){let s=!0,r=new kn({...e,autoDestroy:!1,emitClose:!1,objectMode:!1,writableObjectMode:!1});return t.on("message",function(o,i){let f=!i&&r._readableState.objectMode?o.toString():o;r.push(f)||t.pause()}),t.once("error",function(o){r.destroyed||(s=!1,r.destroy(o))}),t.once("close",function(){r.destroyed||r.push(null)}),r._destroy=function(n,o){if(t.readyState===t.CLOSED){o(n),process.nextTick(vs,r);return}let i=!1;t.once("error",function(c){i=!0,o(c)}),t.once("close",function(){i||o(n),process.nextTick(vs,r)}),s&&t.terminate()},r._final=function(n){if(t.readyState===t.CONNECTING){t.once("open",function(){r._final(n)});return}t._socket!==null&&(t._socket._writableState.finished?(n(),r._readableState.endEmitted&&r.destroy()):(t._socket.once("finish",function(){n()}),t.close()))},r._read=function(){t.isPaused&&t.resume()},r._write=function(n,o,i){if(t.readyState===t.CONNECTING){t.once("open",function(){r._write(n,o,i)});return}t.send(n,i)},r.on("end",Nn),r.on("error",Ts),r}Os.exports=Rn});var yt=L((Wo,ks)=>{"use strict";var{tokenChars:Ln}=ne();function Pn(t){let e=new Set,s=-1,r=-1,n=0;for(n;n<t.length;n++){let i=t.charCodeAt(n);if(r===-1&&Ln[i]===1)s===-1&&(s=n);else if(n!==0&&(i===32||i===9))r===-1&&s!==-1&&(r=n);else if(i===44){if(s===-1)throw new SyntaxError(`Unexpected character at index ${n}`);r===-1&&(r=n);let f=t.slice(s,r);if(e.has(f))throw new SyntaxError(`The "${f}" subprotocol is duplicated`);e.add(f),s=r=-1}else throw new SyntaxError(`Unexpected character at index ${n}`)}if(s===-1||r!==-1)throw new SyntaxError("Unexpected end of input");let o=t.slice(s,n);if(e.has(o))throw new SyntaxError(`The "${o}" subprotocol is duplicated`);return e.add(o),e}ks.exports={parse:Pn}});var Bs=L((qo,Is)=>{"use strict";var $n=require("events"),De=require("http"),{Duplex:jo}=require("stream"),{createHash:In}=require("crypto"),Ns=Be(),Q=re(),Bn=yt(),Mn=Fe(),{CLOSE_TIMEOUT:An,GUID:Un,kWebSocket:Fn}=j(),Dn=/^[+/0-9A-Za-z]{22}==$/,Rs=0,Ls=1,$s=2,St=class extends $n{constructor(e,s){if(super(),e={allowSynchronousEvents:!0,autoPong:!0,maxPayload:100*1024*1024,skipUTF8Validation:!1,perMessageDeflate:!1,handleProtocols:null,clientTracking:!0,closeTimeout:An,verifyClient:null,noServer:!1,backlog:null,server:null,host:null,path:null,port:null,WebSocket:Mn,...e},e.port==null&&!e.server&&!e.noServer||e.port!=null&&(e.server||e.noServer)||e.server&&e.noServer)throw new TypeError('One and only one of the "port", "server", or "noServer" options must be specified');if(e.port!=null?(this._server=De.createServer((r,n)=>{let o=De.STATUS_CODES[426];n.writeHead(426,{"Content-Length":o.length,"Content-Type":"text/plain"}),n.end(o)}),this._server.listen(e.port,e.host,e.backlog,s)):e.server&&(this._server=e.server),this._server){let r=this.emit.bind(this,"connection");this._removeListeners=Wn(this._server,{listening:this.emit.bind(this,"listening"),error:this.emit.bind(this,"error"),upgrade:(n,o,i)=>{this.handleUpgrade(n,o,i,r)}})}e.perMessageDeflate===!0&&(e.perMessageDeflate={}),e.clientTracking&&(this.clients=new Set,this._shouldEmitClose=!1),this.options=e,this._state=Rs}address(){if(this.options.noServer)throw new Error('The server is operating in "noServer" mode');return this._server?this._server.address():null}close(e){if(this._state===$s){e&&this.once("close",()=>{e(new Error("The server is not running"))}),process.nextTick(Se,this);return}if(e&&this.once("close",e),this._state!==Ls)if(this._state=Ls,this.options.noServer||this.options.server)this._server&&(this._removeListeners(),this._removeListeners=this._server=null),this.clients?this.clients.size?this._shouldEmitClose=!0:process.nextTick(Se,this):process.nextTick(Se,this);else{let s=this._server;this._removeListeners(),this._removeListeners=this._server=null,s.close(()=>{Se(this)})}}shouldHandle(e){if(this.options.path){let s=e.url.indexOf("?");if((s!==-1?e.url.slice(0,s):e.url)!==this.options.path)return!1}return!0}handleUpgrade(e,s,r,n){s.on("error",Ps);let o=e.headers["sec-websocket-key"],i=e.headers.upgrade,f=+e.headers["sec-websocket-version"];if(e.method!=="GET"){ee(this,e,s,405,"Invalid HTTP method");return}if(i===void 0||i.toLowerCase()!=="websocket"){ee(this,e,s,400,"Invalid Upgrade header");return}if(o===void 0||!Dn.test(o)){ee(this,e,s,400,"Missing or invalid Sec-WebSocket-Key header");return}if(f!==13&&f!==8){ee(this,e,s,400,"Missing or invalid Sec-WebSocket-Version header",{"Sec-WebSocket-Version":"13, 8"});return}if(!this.shouldHandle(e)){xe(s,400);return}let c=e.headers["sec-websocket-protocol"],u=new Set;if(c!==void 0)try{u=Bn.parse(c)}catch{ee(this,e,s,400,"Invalid Sec-WebSocket-Protocol header");return}let d=e.headers["sec-websocket-extensions"],p={};if(this.options.perMessageDeflate&&d!==void 0){let x=new Q({...this.options.perMessageDeflate,isServer:!0,maxPayload:this.options.maxPayload});try{let _=Ns.parse(d);_[Q.extensionName]&&(x.accept(_[Q.extensionName]),p[Q.extensionName]=x)}catch{ee(this,e,s,400,"Invalid or unacceptable Sec-WebSocket-Extensions header");return}}if(this.options.verifyClient){let x={origin:e.headers[`${f===8?"sec-websocket-origin":"origin"}`],secure:!!(e.socket.authorized||e.socket.encrypted),req:e};if(this.options.verifyClient.length===2){this.options.verifyClient(x,(_,S,y,g)=>{if(!_)return xe(s,S||401,y,g);this.completeUpgrade(p,o,u,e,s,r,n)});return}if(!this.options.verifyClient(x))return xe(s,401)}this.completeUpgrade(p,o,u,e,s,r,n)}completeUpgrade(e,s,r,n,o,i,f){if(!o.readable||!o.writable)return o.destroy();if(o[Fn])throw new Error("server.handleUpgrade() was called more than once with the same socket, possibly due to a misconfiguration");if(this._state>Rs)return xe(o,503);let u=["HTTP/1.1 101 Switching Protocols","Upgrade: websocket","Connection: Upgrade",`Sec-WebSocket-Accept: ${In("sha1").update(s+Un).digest("base64")}`],d=new this.options.WebSocket(null,void 0,this.options);if(r.size){let p=this.options.handleProtocols?this.options.handleProtocols(r,n):r.values().next().value;p&&(u.push(`Sec-WebSocket-Protocol: ${p}`),d._protocol=p)}if(e[Q.extensionName]){let p=e[Q.extensionName].params,x=Ns.format({[Q.extensionName]:[p]});u.push(`Sec-WebSocket-Extensions: ${x}`),d._extensions=e}this.emit("headers",u,n),o.write(u.concat(`\r
|
|
3
3
|
`).join(`\r
|
|
4
|
-
`)),
|
|
4
|
+
`)),o.removeListener("error",Ps),d.setSocket(o,i,{allowSynchronousEvents:this.options.allowSynchronousEvents,maxPayload:this.options.maxPayload,skipUTF8Validation:this.options.skipUTF8Validation}),this.clients&&(this.clients.add(d),d.on("close",()=>{this.clients.delete(d),this._shouldEmitClose&&!this.clients.size&&process.nextTick(Se,this)})),f(d,n)}};Is.exports=St;function Wn(t,e){for(let s of Object.keys(e))t.on(s,e[s]);return function(){for(let r of Object.keys(e))t.removeListener(r,e[r])}}function Se(t){t._state=$s,t.emit("close")}function Ps(){this.destroy()}function xe(t,e,s,r){s=s||De.STATUS_CODES[e],r={Connection:"close","Content-Type":"text/html","Content-Length":Buffer.byteLength(s),...r},t.once("finish",t.destroy),t.end(`HTTP/1.1 ${e} ${De.STATUS_CODES[e]}\r
|
|
5
5
|
`+Object.keys(r).map(n=>`${n}: ${r[n]}`).join(`\r
|
|
6
6
|
`)+`\r
|
|
7
7
|
\r
|
|
8
|
-
`+s)}function
|
|
8
|
+
`+s)}function ee(t,e,s,r,n,o){if(t.listenerCount("wsClientError")){let i=new Error(n);Error.captureStackTrace(i,ee),t.emit("wsClientError",i,s,e)}else xe(s,r,n,o)}});var jn=E(Cs(),1),qn=E(Be(),1),Gn=E(re(),1),Vn=E(ct(),1),Yn=E(ht(),1),zn=E(yt(),1),Ms=E(Fe(),1),Hn=E(Bs(),1);var As=Ms.default;var Lt=E(require("readline")),C=E(require("fs")),D=E(require("path"));var Us=(t=0)=>e=>`\x1B[${e+t}m`,Fs=(t=0)=>e=>`\x1B[${38+t};5;${e}m`,Ds=(t=0)=>(e,s,r)=>`\x1B[${38+t};2;${e};${s};${r}m`,v={modifier:{reset:[0,0],bold:[1,22],dim:[2,22],italic:[3,23],underline:[4,24],overline:[53,55],inverse:[7,27],hidden:[8,28],strikethrough:[9,29]},color:{black:[30,39],red:[31,39],green:[32,39],yellow:[33,39],blue:[34,39],magenta:[35,39],cyan:[36,39],white:[37,39],blackBright:[90,39],gray:[90,39],grey:[90,39],redBright:[91,39],greenBright:[92,39],yellowBright:[93,39],blueBright:[94,39],magentaBright:[95,39],cyanBright:[96,39],whiteBright:[97,39]},bgColor:{bgBlack:[40,49],bgRed:[41,49],bgGreen:[42,49],bgYellow:[43,49],bgBlue:[44,49],bgMagenta:[45,49],bgCyan:[46,49],bgWhite:[47,49],bgBlackBright:[100,49],bgGray:[100,49],bgGrey:[100,49],bgRedBright:[101,49],bgGreenBright:[102,49],bgYellowBright:[103,49],bgBlueBright:[104,49],bgMagentaBright:[105,49],bgCyanBright:[106,49],bgWhiteBright:[107,49]}},Vo=Object.keys(v.modifier),Kn=Object.keys(v.color),Jn=Object.keys(v.bgColor),Yo=[...Kn,...Jn];function Xn(){let t=new Map;for(let[e,s]of Object.entries(v)){for(let[r,n]of Object.entries(s))v[r]={open:`\x1B[${n[0]}m`,close:`\x1B[${n[1]}m`},s[r]=v[r],t.set(n[0],n[1]);Object.defineProperty(v,e,{value:s,enumerable:!1})}return Object.defineProperty(v,"codes",{value:t,enumerable:!1}),v.color.close="\x1B[39m",v.bgColor.close="\x1B[49m",v.color.ansi=Us(),v.color.ansi256=Fs(),v.color.ansi16m=Ds(),v.bgColor.ansi=Us(10),v.bgColor.ansi256=Fs(10),v.bgColor.ansi16m=Ds(10),Object.defineProperties(v,{rgbToAnsi256:{value(e,s,r){return e===s&&s===r?e<8?16:e>248?231:Math.round((e-8)/247*24)+232:16+36*Math.round(e/255*5)+6*Math.round(s/255*5)+Math.round(r/255*5)},enumerable:!1},hexToRgb:{value(e){let s=/[a-f\d]{6}|[a-f\d]{3}/i.exec(e.toString(16));if(!s)return[0,0,0];let[r]=s;r.length===3&&(r=[...r].map(o=>o+o).join(""));let n=Number.parseInt(r,16);return[n>>16&255,n>>8&255,n&255]},enumerable:!1},hexToAnsi256:{value:e=>v.rgbToAnsi256(...v.hexToRgb(e)),enumerable:!1},ansi256ToAnsi:{value(e){if(e<8)return 30+e;if(e<16)return 90+(e-8);let s,r,n;if(e>=232)s=((e-232)*10+8)/255,r=s,n=s;else{e-=16;let f=e%36;s=Math.floor(e/36)/5,r=Math.floor(f/6)/5,n=f%6/5}let o=Math.max(s,r,n)*2;if(o===0)return 30;let i=30+(Math.round(n)<<2|Math.round(r)<<1|Math.round(s));return o===2&&(i+=60),i},enumerable:!1},rgbToAnsi:{value:(e,s,r)=>v.ansi256ToAnsi(v.rgbToAnsi256(e,s,r)),enumerable:!1},hexToAnsi:{value:e=>v.ansi256ToAnsi(v.hexToAnsi256(e)),enumerable:!1}}),v}var Zn=Xn(),A=Zn;var je=E(require("node:process"),1),js=E(require("node:os"),1),xt=E(require("node:tty"),1);function B(t,e=globalThis.Deno?globalThis.Deno.args:je.default.argv){let s=t.startsWith("-")?"":t.length===1?"-":"--",r=e.indexOf(s+t),n=e.indexOf("--");return r!==-1&&(n===-1||r<n)}var{env:T}=je.default,We;B("no-color")||B("no-colors")||B("color=false")||B("color=never")?We=0:(B("color")||B("colors")||B("color=true")||B("color=always"))&&(We=1);function Qn(){if("FORCE_COLOR"in T)return T.FORCE_COLOR==="true"?1:T.FORCE_COLOR==="false"?0:T.FORCE_COLOR.length===0?1:Math.min(Number.parseInt(T.FORCE_COLOR,10),3)}function eo(t){return t===0?!1:{level:t,hasBasic:!0,has256:t>=2,has16m:t>=3}}function to(t,{streamIsTTY:e,sniffFlags:s=!0}={}){let r=Qn();r!==void 0&&(We=r);let n=s?We:r;if(n===0)return 0;if(s){if(B("color=16m")||B("color=full")||B("color=truecolor"))return 3;if(B("color=256"))return 2}if("TF_BUILD"in T&&"AGENT_NAME"in T)return 1;if(t&&!e&&n===void 0)return 0;let o=n||0;if(T.TERM==="dumb")return o;if(je.default.platform==="win32"){let i=js.default.release().split(".");return Number(i[0])>=10&&Number(i[2])>=10586?Number(i[2])>=14931?3:2:1}if("CI"in T)return["GITHUB_ACTIONS","GITEA_ACTIONS","CIRCLECI"].some(i=>i in T)?3:["TRAVIS","APPVEYOR","GITLAB_CI","BUILDKITE","DRONE"].some(i=>i in T)||T.CI_NAME==="codeship"?1:o;if("TEAMCITY_VERSION"in T)return/^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(T.TEAMCITY_VERSION)?1:0;if(T.COLORTERM==="truecolor"||T.TERM==="xterm-kitty"||T.TERM==="xterm-ghostty"||T.TERM==="wezterm")return 3;if("TERM_PROGRAM"in T){let i=Number.parseInt((T.TERM_PROGRAM_VERSION||"").split(".")[0],10);switch(T.TERM_PROGRAM){case"iTerm.app":return i>=3?3:2;case"Apple_Terminal":return 2}}return/-256(color)?$/i.test(T.TERM)?2:/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(T.TERM)||"COLORTERM"in T?1:o}function Ws(t,e={}){let s=to(t,{streamIsTTY:t&&t.isTTY,...e});return eo(s)}var so={stdout:Ws({isTTY:xt.default.isatty(1)}),stderr:Ws({isTTY:xt.default.isatty(2)})},qs=so;function Gs(t,e,s){let r=t.indexOf(e);if(r===-1)return t;let n=e.length,o=0,i="";do i+=t.slice(o,r)+e+s,o=r+n,r=t.indexOf(e,o);while(r!==-1);return i+=t.slice(o),i}function Vs(t,e,s,r){let n=0,o="";do{let i=t[r-1]==="\r";o+=t.slice(n,i?r-1:r)+e+(i?`\r
|
|
9
9
|
`:`
|
|
10
10
|
`)+s,n=r+1,r=t.indexOf(`
|
|
11
|
-
`,n)}while(r!==-1);return
|
|
12
|
-
`);return
|
|
13
|
-
`)
|
|
14
|
-
`)}var je=require("child_process"),L=x(require("fs")),qe=x(require("path")),Ge=process.cwd();async function xt(t,e){try{switch(t){case"read_file":return ni(e);case"write_file":return ii(e);case"edit_file":return oi(e);case"grep":return ai(e);case"glob":return li(e);case"list_dir":return ci(e);case"bash":return fi(e);default:return{success:!1,output:`Unknown tool: ${t}`}}}catch(s){return{success:!1,output:s.message}}}function Ve(t){return qe.resolve(Ge,t)}var qs=100*1024;function ni(t){let e=Ve(t.path),s=L.statSync(e);if(s.size>qs){let n=L.readFileSync(e,"utf-8").slice(0,qs),i=L.readFileSync(e,"utf-8").split(`
|
|
15
|
-
`).length,o=n.split(`
|
|
11
|
+
`,n)}while(r!==-1);return o+=t.slice(n),o}var{stdout:Ys,stderr:zs}=qs,bt=Symbol("GENERATOR"),ce=Symbol("STYLER"),be=Symbol("IS_EMPTY"),Hs=["ansi","ansi","ansi256","ansi16m"],fe=Object.create(null),ro=(t,e={})=>{if(e.level&&!(Number.isInteger(e.level)&&e.level>=0&&e.level<=3))throw new Error("The `level` option should be an integer from 0 to 3");let s=Ys?Ys.level:0;t.level=e.level===void 0?s:e.level};var no=t=>{let e=(...s)=>s.join(" ");return ro(e,t),Object.setPrototypeOf(e,Ee.prototype),e};function Ee(t){return no(t)}Object.setPrototypeOf(Ee.prototype,Function.prototype);for(let[t,e]of Object.entries(A))fe[t]={get(){let s=qe(this,wt(e.open,e.close,this[ce]),this[be]);return Object.defineProperty(this,t,{value:s}),s}};fe.visible={get(){let t=qe(this,this[ce],!0);return Object.defineProperty(this,"visible",{value:t}),t}};var Et=(t,e,s,...r)=>t==="rgb"?e==="ansi16m"?A[s].ansi16m(...r):e==="ansi256"?A[s].ansi256(A.rgbToAnsi256(...r)):A[s].ansi(A.rgbToAnsi(...r)):t==="hex"?Et("rgb",e,s,...A.hexToRgb(...r)):A[s][t](...r),oo=["rgb","hex","ansi256"];for(let t of oo){fe[t]={get(){let{level:s}=this;return function(...r){let n=wt(Et(t,Hs[s],"color",...r),A.color.close,this[ce]);return qe(this,n,this[be])}}};let e="bg"+t[0].toUpperCase()+t.slice(1);fe[e]={get(){let{level:s}=this;return function(...r){let n=wt(Et(t,Hs[s],"bgColor",...r),A.bgColor.close,this[ce]);return qe(this,n,this[be])}}}}var io=Object.defineProperties(()=>{},{...fe,level:{enumerable:!0,get(){return this[bt].level},set(t){this[bt].level=t}}}),wt=(t,e,s)=>{let r,n;return s===void 0?(r=t,n=e):(r=s.openAll+t,n=e+s.closeAll),{open:t,close:e,openAll:r,closeAll:n,parent:s}},qe=(t,e,s)=>{let r=(...n)=>ao(r,n.length===1?""+n[0]:n.join(" "));return Object.setPrototypeOf(r,io),r[bt]=t,r[ce]=e,r[be]=s,r},ao=(t,e)=>{if(t.level<=0||!e)return t[be]?"":e;let s=t[ce];if(s===void 0)return e;let{openAll:r,closeAll:n}=s;if(e.includes("\x1B"))for(;s!==void 0;)e=Gs(e,s.close,s.open),s=s.parent;let o=e.indexOf(`
|
|
12
|
+
`);return o!==-1&&(e=Vs(e,n,r,o)),r+e+n};Object.defineProperties(Ee.prototype,fe);var lo=Ee(),Qo=Ee({level:zs?zs.level:0});var a=lo;var Ge=require("child_process"),R=E(require("fs")),Ve=E(require("path")),Ye=process.cwd();async function vt(t,e){try{switch(t){case"read_file":return co(e);case"write_file":return fo(e);case"edit_file":return uo(e);case"grep":return ho(e);case"glob":return po(e);case"list_dir":return _o(e);case"bash":return go(e);default:return{success:!1,output:`Unknown tool: ${t}`}}}catch(s){return{success:!1,output:s.message}}}function ze(t){return Ve.resolve(Ye,t)}var Ks=100*1024;function co(t){let e=ze(t.path),s=R.statSync(e);if(s.size>Ks){let n=R.readFileSync(e,"utf-8").slice(0,Ks),o=R.readFileSync(e,"utf-8").split(`
|
|
13
|
+
`).length,i=n.split(`
|
|
16
14
|
`).length;return{success:!0,output:`${n}
|
|
17
15
|
|
|
18
|
-
[FILE TRUNCATED: showing ${
|
|
19
|
-
`)||"(empty)"}}function
|
|
20
|
-
`+
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
`).
|
|
24
|
-
`)
|
|
25
|
-
`)
|
|
26
|
-
`).
|
|
27
|
-
`);console.log(a),o
|
|
28
|
-
`).length:0;console.log(
|
|
29
|
-
`).
|
|
30
|
-
`).
|
|
31
|
-
`)
|
|
16
|
+
[FILE TRUNCATED: showing ${i}/${o} lines (${(s.size/1024).toFixed(0)}KB). Use grep to find specific sections.]`}}return{success:!0,output:R.readFileSync(e,"utf-8")}}function fo(t){let e=ze(t.path);return R.mkdirSync(Ve.dirname(e),{recursive:!0}),R.writeFileSync(e,t.content,"utf-8"),{success:!0,output:`Written ${t.path} (${t.content.length} chars)`}}function uo(t){let e=ze(t.path),s=R.readFileSync(e,"utf-8");if(!s.includes(t.old_str))return{success:!1,output:`old_str not found in ${t.path}`};let r=s.split(t.old_str).length-1;return r>1?{success:!1,output:`old_str found ${r} times in ${t.path}, must be unique`}:(R.writeFileSync(e,s.replace(t.old_str,t.new_str),"utf-8"),{success:!0,output:`Edited ${t.path}`})}function ho(t){let e=t.path||".",r=`grep -rn ${t.context_lines&&t.context_lines>0?`-C ${Math.min(t.context_lines,10)}`:""} --include='${t.include||"*"}' '${t.pattern}' ${e} 2>/dev/null | head -100`;return{success:!0,output:(0,Ge.execSync)(r,{cwd:Ye,encoding:"utf-8",timeout:1e4})||"(no matches)"}}function po(t){let e=`find . -name '${t.pattern}' -not -path '*/node_modules/*' -not -path '*/.git/*' 2>/dev/null | head -100`;return{success:!0,output:(0,Ge.execSync)(e,{cwd:Ye,encoding:"utf-8",timeout:1e4})||"(no files found)"}}function _o(t){let e=ze(t.path||".");return{success:!0,output:R.readdirSync(e,{withFileTypes:!0}).filter(n=>!n.name.startsWith(".")&&n.name!=="node_modules").map(n=>`${n.isDirectory()?"\u{1F4C1}":"\u{1F4C4}"} ${n.name}`).join(`
|
|
17
|
+
`)||"(empty)"}}function go(t){let e=t.command.trim();return[/\brm\s+-rf\s+[\/~]/,/\bmkfs\b/,/\bdd\s+if=/,/\b>\s*\/dev\/sd/,/\bchmod\s+-R\s+777\s+\//,/\bsudo\s+rm\b/].some(n=>n.test(e))?{success:!1,output:"Blocked: dangerous command detected"}:{success:!0,output:(0,Ge.execSync)(e,{cwd:Ye,encoding:"utf-8",timeout:t.timeout||3e4,maxBuffer:1024*1024})}}var we=E(require("path")),Js=E(require("fs")),Xs=E(require("readline"));var He=process.cwd(),Ke=new Set;function Zs(t){return Ke.has(t)}function Qs(){Ke.clear()}function mo(t){let e=we.resolve(He,t);return e.startsWith(He+we.sep)||e===He}var yo=new Set(["read_file","grep","glob","list_dir"]);async function er(t,e,s){if(yo.has(t)){let r=e.path||e.pattern||".";if(mo(r))return"y"}return t!=="bash"&&Ke.has(t)?"t":"ask"}async function tr(t,e,s){let r=t==="bash"?`Allow this action? [${a.cyan("y")}/${a.cyan("n")}]: `:`Allow this action? Use '${a.cyan("t")}' to trust (always allow) this tool for the session. [${a.cyan("y")}/${a.cyan("n")}/${a.cyan("t")}]: `,o=(await So(`
|
|
18
|
+
`+r)).trim().toLowerCase()[0]||"n";return o==="t"&&t!=="bash"?(Ke.add(t),"t"):o==="y"?"y":"n"}function Tt(t){try{let e=we.resolve(He,t);return Js.readFileSync(e,"utf-8")}catch{return}}function So(t){return new Promise(e=>{let s=Xs.createInterface({input:process.stdin,output:process.stdout,terminal:!0});s.on("SIGINT",()=>{s.close(),e("n")}),s.question(t,r=>{s.close(),e(r)})})}function sr(t){let e=t.split(`
|
|
19
|
+
`),s=[],r=!1,n="";for(let o of e){if(o.trimStart().startsWith("```")){r?(s.push(a.gray(" \u2514"+"\u2500".repeat(44))),r=!1,n=""):(n=o.trim().slice(3).trim(),s.push(a.gray(` \u250C\u2500 ${n||"code"} ${"\u2500".repeat(Math.max(0,40-(n||"code").length))}`)),r=!0);continue}if(r){s.push(a.green(" \u2502 ")+a.white(o));continue}let i=o.match(/^(#{1,3})\s+(.+)/);if(i){s.push(a.bold.cyan(i[2]));continue}if(/^\s*[-*]\s/.test(o)){s.push(o.replace(/^(\s*)[-*]\s/,"$1\u2022 ").replace(/`([^`]+)`/g,(f,c)=>a.cyan(c)).replace(/\*\*([^*]+)\*\*/g,(f,c)=>a.bold(c)));continue}if(/^\s*\d+\.\s/.test(o)){s.push(o.replace(/`([^`]+)`/g,(f,c)=>a.cyan(c)).replace(/\*\*([^*]+)\*\*/g,(f,c)=>a.bold(c)));continue}s.push(o.replace(/`([^`]+)`/g,(f,c)=>a.cyan(c)).replace(/\*\*([^*]+)\*\*/g,(f,c)=>a.bold(c)).replace(/\*([^*]+)\*/g,(f,c)=>a.italic(c)))}return r&&s.push(a.gray(" \u2514"+"\u2500".repeat(44))),s.join(`
|
|
20
|
+
`)}var rr=E(require("fs")),Je=E(require("path"));function xo(t){return t.replace(/\x1b\[[0-9;]*m/g,"")}function nr(){let t=process.stdout.columns||60,e=Math.min(t-4,62),s=a.gray,r=a.cyan,n=a.cyanBright.bold,o=a.white,i=r("\u2502"),f=(u,d)=>u+" ".repeat(Math.max(0,d-xo(u).length)),c=u=>` ${i} ${f(u,e-4)} ${i}`;console.log(""),console.log(r(" \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2557\u2588\u2588\u2557 \u2588\u2588\u2557\u2588\u2588\u2588\u2557 \u2588\u2588\u2557 \u2588\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2588\u2588\u2588\u2557 ")),console.log(r(" \u2588\u2588\u2554\u2550\u2550\u2550\u2550\u255D\u255A\u2588\u2588\u2557 \u2588\u2588\u2554\u255D\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2551\u2588\u2588\u2554\u2550\u2550\u2588\u2588\u2557\u2588\u2588\u2554\u2550\u2550\u2588\u2588\u2557\u2588\u2588\u2554\u2550\u2550\u2588\u2588\u2557")),console.log(n(" \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2557 \u255A\u2588\u2588\u2588\u2588\u2554\u255D \u2588\u2588\u2554\u2588\u2588\u2557 \u2588\u2588\u2551\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2551\u2588\u2588\u2588\u2588\u2588\u2588\u2554\u255D\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2551")),console.log(r(" \u255A\u2550\u2550\u2550\u2550\u2588\u2588\u2551 \u255A\u2588\u2588\u2554\u255D \u2588\u2588\u2551\u255A\u2588\u2588\u2557\u2588\u2588\u2551\u2588\u2588\u2554\u2550\u2550\u2588\u2588\u2551\u2588\u2588\u2554\u2550\u2550\u2550\u255D \u2588\u2588\u2554\u2550\u2550\u2588\u2588\u2551")),console.log(n(" \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2551 \u2588\u2588\u2551 \u2588\u2588\u2551 \u255A\u2588\u2588\u2588\u2588\u2551\u2588\u2588\u2551 \u2588\u2588\u2551\u2588\u2588\u2551 \u2588\u2588\u2551 \u2588\u2588\u2551")),console.log(r(" \u255A\u2550\u2550\u2550\u2550\u2550\u2550\u255D \u255A\u2550\u255D \u255A\u2550\u255D \u255A\u2550\u2550\u2550\u255D\u255A\u2550\u255D \u255A\u2550\u255D\u255A\u2550\u255D \u255A\u2550\u255D \u255A\u2550\u255D")),console.log(""),console.log(` ${r("\u250C"+"\u2500".repeat(e-2)+"\u2510")}`),console.log(c(s("AI-powered coding assistant")+" ".repeat(Math.max(0,e-38))+s("v0.1.7"))),console.log(c("")),console.log(c(s("model ")+o("Kimi K2.5")+s(" context ")+o("256k"))),console.log(c(s("location ")+o(process.cwd()))),console.log(c("")),console.log(c(s("/help")+o(" commands")+s(" \\ + Enter")+o(" newline"))),console.log(c(s("Ctrl+C")+o(" cancel")+s(" Powered by Cloudflare"))),console.log(` ${r("\u2514"+"\u2500".repeat(e-2)+"\u2518")}`),console.log("")}function or(t){console.log(a.white(t))}function Ot(t,e,s){let r="";s&&s.includes("||")&&(r=s.split("||")[1]||"");let n="",o=e.path||e.pattern||"",i=a.blue(o);switch(t){case"write_file":n=`I will write to file: ${i}`;break;case"edit_file":n=`I will edit the file: ${i}`;break;case"read_file":n=`I will read the file: ${i}`;break;case"bash":n=`I will run the following command: ${a.blue(e.command||"?")}`;break;case"web_search":n=`I will search the web for: ${a.blue(e.query||"?")}`;break;case"web_fetch":n=`I will fetch URL: ${a.blue(e.url||"?")}`;break;case"grep":n=`I will search for '${a.blue(e.pattern)}' in ${i||"."}`;break;case"glob":n=`I will find files matching: ${a.blue(e.pattern)}`;break;case"list_dir":n=`I will list directory: ${i||"."}`;break;default:n=`${t}`}console.log(a.yellow(`
|
|
21
|
+
\u26A1 `)+n+a.gray(` (using tool: ${t})`)),r&&console.log(a.white(` Purpose: ${r}`))}function Ct(t,e,s,r,n){let o=r!=null?a.gray(` ${(r/1e3).toFixed(1)}s`):"",i=s.length;if(!e){console.log(a.red(" \u2717 Failed")),console.log(a.gray(` Completed in${o}`)),s.trim()&&console.log(a.gray(` ${s.slice(0,200)}`));return}let f=n?.path||"";if(t==="bash"){let c=(n?.command||"").slice(0,60);if(console.log(a.greenBright(" \u2713 Successfully")+a.white(` ran: ${c}`)),console.log(a.gray(` Completed in${o}`)),s.trim()){let u=s.split(`
|
|
22
|
+
`).slice(0,20).map(d=>` ${d}`).join(`
|
|
23
|
+
`);console.log(a.white(u)),s.split(`
|
|
24
|
+
`).length>20&&console.log(a.gray(` ... (${s.split(`
|
|
25
|
+
`).length} lines)`))}}else if(t==="read_file"){let c=Je.resolve(process.cwd(),n?.path||"");console.log(a.greenBright(" \u2713 Successfully")+a.white(` read ${i} bytes from ${c}`)),console.log(a.gray(` Completed in${o}`))}else if(t==="write_file"){let c=Je.resolve(process.cwd(),n?.path||""),u=n?.path&&rr.existsSync(c);console.log(a.greenBright(" \u2713 Successfully")+a.white(` wrote ${i} bytes to ${c}`)),console.log(a.gray(` Completed in${o}`))}else if(t==="edit_file"){let c=Je.resolve(process.cwd(),n?.path||"");console.log(a.greenBright(" \u2713 Successfully")+a.white(` edited ${c}`)),console.log(a.gray(` Completed in${o}`))}else if(t==="grep"){let c=s.trim()?s.split(`
|
|
26
|
+
`).length:0;if(console.log(a.green(` \u2713 Found ${c} matches`)),console.log(a.gray(` Completed in${o}`)),s.trim()){let u=s.split(`
|
|
27
|
+
`).slice(0,10).map(d=>` ${a.gray(d)}`).join(`
|
|
28
|
+
`);console.log(u),c>10&&console.log(a.gray(` ... (${c} lines)`))}}else t==="glob"?(console.log(a.green(` \u2713 Found ${s.trim()?s.split(`
|
|
29
|
+
`).length:0} files`)),console.log(a.gray(` Completed in${o}`))):t==="list_dir"?(console.log(a.green(` \u2713 Listed ${s.trim()?s.split(`
|
|
30
|
+
`).length:0} entries`)),console.log(a.gray(` Completed in${o}`))):(console.log(a.green(" \u2713 Done")),console.log(a.gray(` Completed in${o}`)))}function ve(t){console.log(a.red(` \u274C ${t}`))}function ir(t,e,s){let r=e?a.green("\u2713"):a.red("\u2717");if(t==="web_search"){let n=s.split(`
|
|
31
|
+
`).find(o=>o.startsWith("["))||"";console.log(` ${r} ${a.gray(n.slice(0,120))}`)}else if(t==="web_fetch"){let n=s.split(`
|
|
32
|
+
`)[0]?.slice(0,80)||"fetched";console.log(` ${r} ${a.gray(n)}`)}else console.log(` ${r}`)}function ar(t,e){console.log(a.cyan(`
|
|
32
33
|
\u2500\u2500 ${t} \u2500\u2500`));let s=e.split(`
|
|
33
|
-
`);for(let r=0;r<s.length;r++){let n=
|
|
34
|
-
`))}function
|
|
35
|
-
`),
|
|
36
|
-
`),o=0;
|
|
37
|
-
`).length)}if(r&&o>1){let a=r.split(`
|
|
38
|
-
`),c=Math.max(0,o-1-3);for(let u=c;u<o-1;u++){let h=l.gray(String(u+1).padStart(4)+" \u2502 ");console.log(h+l.gray(" "+a[u]))}}for(let a=0;a<n.length;a++){let c=o>0?o+a:a+1,u=l.gray(String(c).padStart(4)+" \u2502 ");console.log(u+l.red("- "+n[a]))}for(let a=0;a<i.length;a++){let c=o>0?o+a:a+1,u=l.gray(String(c).padStart(4)+" \u2502 ");console.log(u+l.green("+ "+i[a]))}if(r&&o>0){let a=r.split(`
|
|
39
|
-
`),c=o-1+n.length,u=Math.min(a.length,c+3);for(let h=c;h<u;h++){let _=l.gray(String(h+1).padStart(4)+" \u2502 ");console.log(_+l.gray(" "+a[h]))}}console.log("")}var fe=x(require("fs")),vt=x(require("path")),or=x(require("readline"));var mi=process.env.SYNAPSE_API||"https://api.synapse.cloudc.top",ar=vt.join(process.env.HOME||"~",".synapse"),lr=vt.join(ar,"token");function ir(t,e=!1){let s=or.createInterface({input:process.stdin,output:process.stderr});return new Promise(r=>{s.question(t,n=>{s.close(),r(n.trim())})})}async function cr(){console.log(l.cyan.bold(`
|
|
34
|
+
`);for(let r=0;r<s.length;r++){let n=a.gray(String(r+1).padStart(4)+" \u2502 ");console.log(n+a.green("+ "+s[r]))}console.log(a.cyan(` \u2500\u2500 end \u2500\u2500
|
|
35
|
+
`))}function kt(t,e,s,r){console.log("");let n=t.split(`
|
|
36
|
+
`),o=e.split(`
|
|
37
|
+
`),i=0;for(;i<n.length&&i<o.length&&n[i]===o[i];)i++;let f=0;for(;f<n.length-i&&f<o.length-i&&n[n.length-1-f]===o[o.length-1-f];)f++;let c=n.slice(i,n.length-f),u=o.slice(i,o.length-f),d=Math.max(0,i-3);for(let _=d;_<i;_++)console.log(a.gray(String(_+1).padStart(4)+" "+n[_]));for(let _=0;_<c.length;_++){let S=i+_+1;console.log(a.red(String(S).padStart(4)+" - "+c[_]))}for(let _=0;_<u.length;_++){let S=i+_+1;console.log(a.green(String(S).padStart(4)+" + "+u[_]))}let p=n.length-f,x=Math.min(n.length,p+3);for(let _=p;_<x;_++){let S=i+u.length+(_-p)+1;console.log(a.gray(String(S).padStart(4)+" "+n[_]))}console.log("")}var ue=E(require("fs")),Nt=E(require("path")),cr=E(require("readline"));var Eo=process.env.SYNAPSE_API||"https://api.synapse.cloudc.top",fr=Nt.join(process.env.HOME||"~",".synapse"),ur=Nt.join(fr,"token");function lr(t,e=!1){let s=cr.createInterface({input:process.stdin,output:process.stderr});return new Promise(r=>{s.question(t,n=>{s.close(),r(n.trim())})})}async function hr(){console.log(a.cyan.bold(`
|
|
40
38
|
\u26A1 Synapse Login
|
|
41
|
-
`));let t=await
|
|
42
|
-
\u274C ${r.error||"Login failed"}`)),process.exit(1)),
|
|
43
|
-
\u2713 Logged in. Token saved to ~/.synapse/token`))}catch(s){console.log(
|
|
44
|
-
\u274C Connection failed: ${s.message}`)),process.exit(1)}}function
|
|
45
|
-
${
|
|
39
|
+
`));let t=await lr(" Username: "),e=await lr(" Password: ");try{let s=await fetch(`${Eo}/api/login`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({username:t,password:e})}),r=await s.json();(!s.ok||!r.token)&&(console.log(a.red(`
|
|
40
|
+
\u274C ${r.error||"Login failed"}`)),process.exit(1)),ue.mkdirSync(fr,{recursive:!0}),ue.writeFileSync(ur,r.token,{mode:384}),console.log(a.green(`
|
|
41
|
+
\u2713 Logged in. Token saved to ~/.synapse/token`))}catch(s){console.log(a.red(`
|
|
42
|
+
\u274C Connection failed: ${s.message}`)),process.exit(1)}}function dr(){try{ue.unlinkSync(ur),console.log(a.green(" \u2713 Logged out."))}catch{console.log(a.gray(" Already logged out."))}}var wo=process.env.SYNAPSE_CLI_WS||"wss://cli.synapse.cloudc.top",vo=D.join(process.env.HOME||"~",".synapse","token"),he=[],pr=[],Te="idle",de=!1,_r=0,Rt=!1,Oe=[],Xe=process.argv[2];(async()=>{Xe==="login"&&(await hr(),process.exit(0)),Xe==="logout"&&(await dr(),process.exit(0)),(Xe==="--help"||Xe==="-h")&&(console.log(`
|
|
43
|
+
${a.cyan.bold("\u26A1 Synara")} \u2014 AI coding assistant
|
|
46
44
|
|
|
47
|
-
${
|
|
48
|
-
|
|
45
|
+
${a.bold("Usage:")}
|
|
46
|
+
synara Start coding session in current directory
|
|
49
47
|
synara login Login with username/password
|
|
50
48
|
synara logout Remove stored credentials
|
|
51
49
|
|
|
52
|
-
${
|
|
50
|
+
${a.bold("Session commands:")}
|
|
53
51
|
/compact Compress conversation history
|
|
54
52
|
/context Show context usage (tokens, messages)
|
|
53
|
+
/tools List available tools
|
|
54
|
+
/usage Show token consumption
|
|
55
|
+
/save [name] Save session locally
|
|
56
|
+
/load <name> Load a saved session
|
|
57
|
+
/sessions List saved sessions
|
|
58
|
+
/undo Undo last file change
|
|
59
|
+
/help Show this help
|
|
55
60
|
/quit End session
|
|
56
61
|
|
|
57
|
-
${
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
/save
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
/
|
|
74
|
-
/
|
|
75
|
-
/usage
|
|
76
|
-
/
|
|
77
|
-
/
|
|
78
|
-
/help Show this help
|
|
79
|
-
/quit End session
|
|
62
|
+
${a.bold("Input:")}
|
|
63
|
+
\\ + Enter Multi-line continuation
|
|
64
|
+
Ctrl+C Cancel current operation
|
|
65
|
+
`),process.exit(0));let t=null,e=null,s=null;function r(){if(s)return;Te="active";let l=["\u280B","\u2819","\u2839","\u2838","\u283C","\u2834","\u2826","\u2827","\u2807","\u280F"],h=0;process.stdout.write(a.gray(`
|
|
66
|
+
${l[0]} Thinking...`)),s=setInterval(()=>{h=(h+1)%l.length,process.stdout.write(`\r ${a.gray(l[h]+" Thinking...")}`)},80)}function n(){s&&(clearInterval(s),s=null,process.stdout.write("\r\x1B[2K"))}function o(){try{return C.readFileSync(vo,"utf-8").trim()}catch{return null}}function i(){for(let l of["SYNAPSE.md","synapse.md"]){let h=D.join(process.cwd(),l);if(C.existsSync(h))return C.readFileSync(h,"utf-8")}}async function f(){nr();let l=o();l||(ve("Not logged in. Run: synara login"),process.exit(1));let h=`${wo}/ws?token=${encodeURIComponent(l)}`,m=new As(h);t=m,process.on("SIGINT",()=>{Te==="idle"&&(console.log(a.gray(`
|
|
67
|
+
Bye!`)),process.exit(0)),n(),console.log(a.yellow(`
|
|
68
|
+
\u23F9 Cancelled`)),N({type:"cancel"}),Te="idle",de=!0;let b=_r;g()}),m.on("open",()=>{N({type:"auth",token:l,project:{path:process.cwd(),synapseMd:i()}})}),m.on("message",async b=>{let U=JSON.parse(b.toString());if(Rt){Oe.push(U);return}await O(U)});async function O(b){switch(b.type){case"session_ready":g();break;case"reasoning_token":case"reasoning_end":break;case"content_token":if(de)break;n(),process.stdout.write(b.content);break;case"content_end":if(de)break;process.stdout.write(`
|
|
69
|
+
`);break;case"turn_end":n(),Te="idle",de=!1,g();break;case"assistant_message":n(),or(sr(b.content)),g();break;case"tool_request":if(n(),de)break;b.tool==="web_search"||b.tool==="web_fetch"?Ot(b.tool,b.args):await c(b);break;case"tool_result_from_cloud":ir(b.tool,b.success,b.output),r();break;case"session_save":n(),p(b),g();break;case"session_load":n(),x(b);break;case"session_list_request":n(),_(),g();break;case"error":n(),ve(b.message),g();break}}m.on("close",()=>{console.log(a.gray(`
|
|
70
|
+
Connection closed.`)),process.exit(0)}),m.on("error",b=>{ve(`Connection failed: ${b.message}`),process.exit(1)})}async function c(l){let h=l.description||`${l.tool}`;Ot(l.tool,l.args,h);let m=await er(l.tool,l.args,h);if(m==="y"||m==="t"){u(l.tool,l.args);let z=Date.now(),Ze=await vt(l.tool,l.args);Ct(l.tool,Ze.success,Ze.output,Date.now()-z,l.args),N({type:"tool_result",call_id:l.call_id,...Ze}),r();return}if(l.tool==="write_file"&&l.args.content){let z=Tt(l.args.path);z?kt(z,l.args.content,l.args.path):ar(l.args.path,l.args.content)}else if(l.tool==="edit_file"&&l.args.old_str&&l.args.new_str){let z=Tt(l.args.path);kt(l.args.old_str,l.args.new_str,l.args.path,z)}e?.close(),e=null,Rt=!0;let O;try{O=await tr(l.tool,l.args,h)}catch{O="n"}if(Rt=!1,O==="n"){for(N({type:"tool_result",call_id:l.call_id,success:!1,output:"User denied"});Oe.length;)await handleMessage(Oe.shift());r();return}u(l.tool,l.args);let b=Date.now(),U=await vt(l.tool,l.args);for(Ct(l.tool,U.success,U.output,Date.now()-b,l.args),N({type:"tool_result",call_id:l.call_id,...U});Oe.length;)await handleMessage(Oe.shift());r()}function u(l,h){if(l!=="write_file"&&l!=="edit_file")return;let m=h.path;if(!m)return;let O=D.resolve(process.cwd(),m);try{C.existsSync(O)?he.push({tool:l,path:m,content:C.readFileSync(O,"utf-8")}):he.push({tool:l,path:m,content:""}),he.length>50&&he.shift()}catch{}}let d=D.join(process.cwd(),".synapse","sessions");function p(l){C.mkdirSync(d,{recursive:!0});let h=l.name||new Date().toISOString().replace(/[:.]/g,"-").slice(0,19),m=D.join(d,`${h}.json`);if(C.existsSync(m)&&!l.force){ve(`Session '${h}' already exists. Use /save ${h} --force to overwrite.`);return}let O={name:h,saved_at:new Date().toISOString(),messages:l.messages,meta:l.meta};C.writeFileSync(m,JSON.stringify(O,null,2),"utf-8"),console.log(a.blue(` \u2713 Session saved: ${h}`)+a.gray(` (${l.messages.length} messages)`))}function x(l){let h=l.name;if(!h){_(),N({type:"session_data",messages:null,error:"No name. Use /load <name>"}),g();return}let m=D.join(d,`${h}.json`);if(!C.existsSync(m)){N({type:"session_data",messages:null,error:`Session '${h}' not found.`}),g();return}try{let O=JSON.parse(C.readFileSync(m,"utf-8"));N({type:"session_data",name:h,messages:O.messages,meta:O.meta||{}}),r()}catch(O){N({type:"session_data",messages:null,error:`${O}`}),g()}}function _(){if(!C.existsSync(d)){console.log(a.gray(" No saved sessions."));return}let l=C.readdirSync(d).filter(h=>h.endsWith(".json")).sort();if(l.length===0){console.log(a.gray(" No saved sessions."));return}console.log(a.white(`
|
|
71
|
+
Saved sessions (${l.length}):`));for(let h of l)try{let m=JSON.parse(C.readFileSync(D.join(d,h),"utf-8")),O=h.replace(".json","");console.log(a.cyan(` ${O}`)+a.gray(` \u2014 ${m.messages?.length||0} messages`))}catch{console.log(a.cyan(` ${h.replace(".json","")}`))}console.log("")}function S(){let l=[{name:"read_file",desc:"Read a file",perm:"auto"},{name:"write_file",desc:"Create or overwrite a file",perm:"ask"},{name:"edit_file",desc:"Edit a file (string replace)",perm:"ask"},{name:"grep",desc:"Search for patterns in files",perm:"auto"},{name:"glob",desc:"Find files by name pattern",perm:"auto"},{name:"list_dir",desc:"List directory contents",perm:"auto"},{name:"bash",desc:"Execute shell command",perm:"always ask"},{name:"web_search",desc:"Search the web",perm:"auto"},{name:"web_fetch",desc:"Fetch URL content",perm:"auto"}];console.log(a.white(`
|
|
72
|
+
Available tools:
|
|
73
|
+
`));for(let h of l){let m=h.perm==="always ask"?a.red("always ask"):Zs(h.name)?a.cyan("trusted"):h.perm==="ask"?a.yellow("ask"):a.cyan("auto");console.log(` ${a.cyan(h.name.padEnd(12))} ${m.padEnd(20)} ${a.gray(h.desc)}`)}console.log(a.gray(`
|
|
74
|
+
Use /tools reset to restore default permissions.
|
|
75
|
+
`))}function y(){if(he.length===0){console.log(a.gray(" Nothing to undo."));return}let l=he.pop(),h=D.resolve(process.cwd(),l.path);try{l.content===""&&C.existsSync(h)?(C.unlinkSync(h),console.log(a.blue(` \u2713 Undo: deleted ${l.path} (was newly created)`))):(C.writeFileSync(h,l.content,"utf-8"),console.log(a.blue(` \u2713 Undo: restored ${l.path}`)))}catch(m){console.log(a.red(` \u2717 Undo failed: ${m.message}`))}}function g(){e&&(e.close(),e=null),Te="idle";let l=["/save","/load","/sessions","/compact","/context","/tools","/tools reset","/usage","/undo","/help","/quit"];e=Lt.createInterface({input:process.stdin,output:process.stdout,terminal:!0,completer:h=>{let m=l.filter(O=>O.startsWith(h));return[m.length?m:l,h]},history:pr.slice().reverse(),historySize:100}),e.question(a.cyan(`
|
|
76
|
+
> `),h=>{if(e?.close(),e=null,h.trimEnd().endsWith("\\")){W([h.trimEnd().slice(0,-1)]);return}Y(h)})}function W(l){e&&(e.close(),e=null),e=Lt.createInterface({input:process.stdin,output:process.stdout,terminal:!0}),e.question(a.gray("\u2026 "),h=>{e?.close(),e=null,h.trimEnd().endsWith("\\")?(l.push(h.trimEnd().slice(0,-1)),W(l)):(l.push(h),Y(l.join(`
|
|
77
|
+
`)))})}function Y(l){let h=l.trim();if(!h){g();return}if(h.startsWith("/")||pr.push(h),(h==="/quit"||h==="/exit")&&process.exit(0),h==="/undo"){y(),g();return}if(h==="/sessions"){_(),g();return}if(h==="/tools"){S(),g();return}if(h==="/tools reset"){Qs(),S(),g();return}if(h==="/help"){console.log(`
|
|
78
|
+
${a.cyan("/save")} Save session ${a.cyan("/load")} Load session
|
|
79
|
+
${a.cyan("/sessions")} List sessions ${a.cyan("/compact")} Compress history
|
|
80
|
+
${a.cyan("/context")} Context usage ${a.cyan("/tools")} Tool permissions
|
|
81
|
+
${a.cyan("/usage")} Token usage ${a.cyan("/undo")} Undo last change
|
|
82
|
+
${a.cyan("/quit")} End session
|
|
80
83
|
|
|
81
|
-
|
|
82
|
-
`)
|
|
84
|
+
${a.gray("Type /command help for details. \\ + Enter for newline. Ctrl+C to cancel.")}
|
|
85
|
+
`),g();return}if(h==="/save help"){console.log(`
|
|
86
|
+
${a.cyan("/save [name] [--force]")} Save current session locally
|
|
87
|
+
${a.gray("name defaults to timestamp. --force overwrites existing.")}
|
|
88
|
+
`),g();return}if(h==="/load help"){console.log(`
|
|
89
|
+
${a.cyan("/load <name>")} Load a previously saved session
|
|
90
|
+
${a.gray("Use /sessions to see available names.")}
|
|
91
|
+
`),g();return}if(h==="/tools help"){console.log(`
|
|
92
|
+
${a.cyan("/tools")} Show tools and current permissions
|
|
93
|
+
${a.cyan("/tools reset")} Reset all trusted tools to default
|
|
94
|
+
`),g();return}if(h.startsWith("/save")){N({type:"user_message",content:h});return}if(h.startsWith("/load")){let m=h.split(/\s+/)[1]||"";if(!m){_(),console.log(a.gray(" Usage: /load <name>")),g();return}x({type:"session_load",name:m});return}N({type:"user_message",content:l}),_r++,de=!1,r()}function N(l){t?.send(JSON.stringify(l))}f().catch(l=>{console.error(l),process.exit(1)})})();
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "synara",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.7",
|
|
4
4
|
"description": "AI-powered coding assistant. Cloud brain, local hands.",
|
|
5
5
|
"bin": {
|
|
6
6
|
"synara": "dist/index.js"
|
|
@@ -27,12 +27,16 @@
|
|
|
27
27
|
},
|
|
28
28
|
"devDependencies": {
|
|
29
29
|
"@types/node": "^20.0.0",
|
|
30
|
+
"@types/react": "^19.2.14",
|
|
30
31
|
"@types/ws": "^8.5.0",
|
|
31
32
|
"esbuild": "^0.28.0",
|
|
32
33
|
"typescript": "^5.7.0"
|
|
33
34
|
},
|
|
34
35
|
"dependencies": {
|
|
35
36
|
"chalk": "^5.4.0",
|
|
37
|
+
"ink": "^7.0.0",
|
|
38
|
+
"ink-text-input": "^6.0.0",
|
|
39
|
+
"react": "^19.2.5",
|
|
36
40
|
"ws": "^8.18.0"
|
|
37
41
|
}
|
|
38
42
|
}
|