@merkur/cli
Version:
Merkur is tiny and extensible library for creating front-end microservices.
8 lines (7 loc) • 47.8 kB
JavaScript
var tr=Object.create;var Ve=Object.defineProperty;var rr=Object.getOwnPropertyDescriptor;var sr=Object.getOwnPropertyNames;var ir=Object.getPrototypeOf,nr=Object.prototype.hasOwnProperty;var m=(t=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(t,{get:(e,r)=>(typeof require<"u"?require:e)[r]}):t)(function(t){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+t+'" is not supported')});var x=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports);var or=(t,e,r,s)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of sr(e))!nr.call(t,i)&&i!==r&&Ve(t,i,{get:()=>e[i],enumerable:!(s=rr(e,i))||s.enumerable});return t};var K=(t,e,r)=>(r=t!=null?tr(ir(t)):{},or(e||!t||!t.__esModule?Ve(r,"default",{value:t,enumerable:!0}):r,t));var T=x((Ns,Ye)=>{"use strict";var ze=["nodebuffer","arraybuffer","fragments"],He=typeof Blob<"u";He&&ze.push("blob");Ye.exports={BINARY_TYPES:ze,EMPTY_BUFFER:Buffer.alloc(0),GUID:"258EAFA5-E914-47DA-95CA-C5AB0DC85B11",hasBlob:He,kForOnEventAttribute:Symbol("kIsForOnEventAttribute"),kListener:Symbol("kListener"),kStatusCode:Symbol("status-code"),kWebSocket:Symbol("websocket"),NOOP:()=>{}}});var X=x((Ls,ie)=>{"use strict";var{EMPTY_BUFFER:ar}=T(),Se=Buffer[Symbol.species];function fr(t,e){if(t.length===0)return ar;if(t.length===1)return t[0];let r=Buffer.allocUnsafe(e),s=0;for(let i=0;i<t.length;i++){let n=t[i];r.set(n,s),s+=n.length}return s<e?new Se(r.buffer,r.byteOffset,s):r}function Ke(t,e,r,s,i){for(let n=0;n<i;n++)r[s+n]=t[n]^e[n&3]}function Xe(t,e){for(let r=0;r<t.length;r++)t[r]^=e[r&3]}function lr(t){return t.length===t.buffer.byteLength?t.buffer:t.buffer.slice(t.byteOffset,t.byteOffset+t.length)}function xe(t){if(xe.readOnly=!0,Buffer.isBuffer(t))return t;let e;return t instanceof ArrayBuffer?e=new Se(t):ArrayBuffer.isView(t)?e=new Se(t.buffer,t.byteOffset,t.byteLength):(e=Buffer.from(t),xe.readOnly=!1),e}ie.exports={concat:fr,mask:Ke,toArrayBuffer:lr,toBuffer:xe,unmask:Xe};if(!process.env.WS_NO_BUFFER_UTIL)try{let t=m("bufferutil");ie.exports.mask=function(e,r,s,i,n){n<48?Ke(e,r,s,i,n):t.mask(e,r,s,i,n)},ie.exports.unmask=function(e,r){e.length<32?Xe(e,r):t.unmask(e,r)}}catch{}});var Qe=x((Ps,Je)=>{"use strict";var Ze=Symbol("kDone"),Ee=Symbol("kRun"),ve=class{constructor(e){this[Ze]=()=>{this.pending--,this[Ee]()},this.concurrency=e||1/0,this.jobs=[],this.pending=0}add(e){this.jobs.push(e),this[Ee]()}[Ee](){if(this.pending!==this.concurrency&&this.jobs.length){let e=this.jobs.shift();this.pending++,e(this[Ze])}}};Je.exports=ve});var J=x((Bs,st)=>{"use strict";var Z=m("zlib"),et=X(),cr=Qe(),{kStatusCode:tt}=T(),hr=Buffer[Symbol.species],ur=Buffer.from([0,0,255,255]),oe=Symbol("permessage-deflate"),C=Symbol("total-length"),F=Symbol("callback"),P=Symbol("buffers"),G=Symbol("error"),ne,be=class{constructor(e,r,s){if(this._maxPayload=s|0,this._options=e||{},this._threshold=this._options.threshold!==void 0?this._options.threshold:1024,this._isServer=!!r,this._deflate=null,this._inflate=null,this.params=null,!ne){let i=this._options.concurrencyLimit!==void 0?this._options.concurrencyLimit:10;ne=new cr(i)}}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[F];this._deflate.close(),this._deflate=null,e&&e(new Error("The deflate stream was closed while data was being processed"))}}acceptAsServer(e){let r=this._options,s=e.find(i=>!(r.serverNoContextTakeover===!1&&i.server_no_context_takeover||i.server_max_window_bits&&(r.serverMaxWindowBits===!1||typeof r.serverMaxWindowBits=="number"&&r.serverMaxWindowBits>i.server_max_window_bits)||typeof r.clientMaxWindowBits=="number"&&!i.client_max_window_bits));if(!s)throw new Error("None of the extension offers can be accepted");return r.serverNoContextTakeover&&(s.server_no_context_takeover=!0),r.clientNoContextTakeover&&(s.client_no_context_takeover=!0),typeof r.serverMaxWindowBits=="number"&&(s.server_max_window_bits=r.serverMaxWindowBits),typeof r.clientMaxWindowBits=="number"?s.client_max_window_bits=r.clientMaxWindowBits:(s.client_max_window_bits===!0||r.clientMaxWindowBits===!1)&&delete s.client_max_window_bits,s}acceptAsClient(e){let r=e[0];if(this._options.clientNoContextTakeover===!1&&r.client_no_context_takeover)throw new Error('Unexpected parameter "client_no_context_takeover"');if(!r.client_max_window_bits)typeof this._options.clientMaxWindowBits=="number"&&(r.client_max_window_bits=this._options.clientMaxWindowBits);else if(this._options.clientMaxWindowBits===!1||typeof this._options.clientMaxWindowBits=="number"&&r.client_max_window_bits>this._options.clientMaxWindowBits)throw new Error('Unexpected or invalid parameter "client_max_window_bits"');return r}normalizeParams(e){return e.forEach(r=>{Object.keys(r).forEach(s=>{let i=r[s];if(i.length>1)throw new Error(`Parameter "${s}" must have only a single value`);if(i=i[0],s==="client_max_window_bits"){if(i!==!0){let n=+i;if(!Number.isInteger(n)||n<8||n>15)throw new TypeError(`Invalid value for parameter "${s}": ${i}`);i=n}else if(!this._isServer)throw new TypeError(`Invalid value for parameter "${s}": ${i}`)}else if(s==="server_max_window_bits"){let n=+i;if(!Number.isInteger(n)||n<8||n>15)throw new TypeError(`Invalid value for parameter "${s}": ${i}`);i=n}else if(s==="client_no_context_takeover"||s==="server_no_context_takeover"){if(i!==!0)throw new TypeError(`Invalid value for parameter "${s}": ${i}`)}else throw new Error(`Unknown parameter "${s}"`);r[s]=i})}),e}decompress(e,r,s){ne.add(i=>{this._decompress(e,r,(n,o)=>{i(),s(n,o)})})}compress(e,r,s){ne.add(i=>{this._compress(e,r,(n,o)=>{i(),s(n,o)})})}_decompress(e,r,s){let i=this._isServer?"client":"server";if(!this._inflate){let n=`${i}_max_window_bits`,o=typeof this.params[n]!="number"?Z.Z_DEFAULT_WINDOWBITS:this.params[n];this._inflate=Z.createInflateRaw({...this._options.zlibInflateOptions,windowBits:o}),this._inflate[oe]=this,this._inflate[C]=0,this._inflate[P]=[],this._inflate.on("error",_r),this._inflate.on("data",rt)}this._inflate[F]=s,this._inflate.write(e),r&&this._inflate.write(ur),this._inflate.flush(()=>{let n=this._inflate[G];if(n){this._inflate.close(),this._inflate=null,s(n);return}let o=et.concat(this._inflate[P],this._inflate[C]);this._inflate._readableState.endEmitted?(this._inflate.close(),this._inflate=null):(this._inflate[C]=0,this._inflate[P]=[],r&&this.params[`${i}_no_context_takeover`]&&this._inflate.reset()),s(null,o)})}_compress(e,r,s){let i=this._isServer?"server":"client";if(!this._deflate){let n=`${i}_max_window_bits`,o=typeof this.params[n]!="number"?Z.Z_DEFAULT_WINDOWBITS:this.params[n];this._deflate=Z.createDeflateRaw({...this._options.zlibDeflateOptions,windowBits:o}),this._deflate[C]=0,this._deflate[P]=[],this._deflate.on("data",dr)}this._deflate[F]=s,this._deflate.write(e),this._deflate.flush(Z.Z_SYNC_FLUSH,()=>{if(!this._deflate)return;let n=et.concat(this._deflate[P],this._deflate[C]);r&&(n=new hr(n.buffer,n.byteOffset,n.length-4)),this._deflate[F]=null,this._deflate[C]=0,this._deflate[P]=[],r&&this.params[`${i}_no_context_takeover`]&&this._deflate.reset(),s(null,n)})}};st.exports=be;function dr(t){this[P].push(t),this[C]+=t.length}function rt(t){if(this[C]+=t.length,this[oe]._maxPayload<1||this[C]<=this[oe]._maxPayload){this[P].push(t);return}this[G]=new RangeError("Max payload size exceeded"),this[G].code="WS_ERR_UNSUPPORTED_MESSAGE_LENGTH",this[G][tt]=1009,this.removeListener("data",rt),this.reset()}function _r(t){if(this[oe]._inflate=null,this[G]){this[F](this[G]);return}t[tt]=1007,this[F](t)}});var q=x((Rs,ae)=>{"use strict";var{isUtf8:it}=m("buffer"),{hasBlob:pr}=T(),mr=[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 gr(t){return t>=1e3&&t<=1014&&t!==1004&&t!==1005&&t!==1006||t>=3e3&&t<=4999}function we(t){let e=t.length,r=0;for(;r<e;)if((t[r]&128)===0)r++;else if((t[r]&224)===192){if(r+1===e||(t[r+1]&192)!==128||(t[r]&254)===192)return!1;r+=2}else if((t[r]&240)===224){if(r+2>=e||(t[r+1]&192)!==128||(t[r+2]&192)!==128||t[r]===224&&(t[r+1]&224)===128||t[r]===237&&(t[r+1]&224)===160)return!1;r+=3}else if((t[r]&248)===240){if(r+3>=e||(t[r+1]&192)!==128||(t[r+2]&192)!==128||(t[r+3]&192)!==128||t[r]===240&&(t[r+1]&240)===128||t[r]===244&&t[r+1]>143||t[r]>244)return!1;r+=4}else return!1;return!0}function yr(t){return pr&&typeof t=="object"&&typeof t.arrayBuffer=="function"&&typeof t.type=="string"&&typeof t.stream=="function"&&(t[Symbol.toStringTag]==="Blob"||t[Symbol.toStringTag]==="File")}ae.exports={isBlob:yr,isValidStatusCode:gr,isValidUTF8:we,tokenChars:mr};if(it)ae.exports.isValidUTF8=function(t){return t.length<24?we(t):it(t)};else if(!process.env.WS_NO_UTF_8_VALIDATE)try{let t=m("utf-8-validate");ae.exports.isValidUTF8=function(e){return e.length<32?we(e):t(e)}}catch{}});var Ne=x((Is,ht)=>{"use strict";var{Writable:Sr}=m("stream"),nt=J(),{BINARY_TYPES:xr,EMPTY_BUFFER:ot,kStatusCode:Er,kWebSocket:vr}=T(),{concat:Oe,toArrayBuffer:br,unmask:wr}=X(),{isValidStatusCode:Or,isValidUTF8:at}=q(),fe=Buffer[Symbol.species],v=0,ft=1,lt=2,ct=3,ke=4,Te=5,le=6,Ce=class extends Sr{constructor(e={}){super(),this._allowSynchronousEvents=e.allowSynchronousEvents!==void 0?e.allowSynchronousEvents:!0,this._binaryType=e.binaryType||xr[0],this._extensions=e.extensions||{},this._isServer=!!e.isServer,this._maxPayload=e.maxPayload|0,this._skipUTF8Validation=!!e.skipUTF8Validation,this[vr]=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=v}_write(e,r,s){if(this._opcode===8&&this._state==v)return s();this._bufferedBytes+=e.length,this._buffers.push(e),this.startLoop(s)}consume(e){if(this._bufferedBytes-=e,e===this._buffers[0].length)return this._buffers.shift();if(e<this._buffers[0].length){let s=this._buffers[0];return this._buffers[0]=new fe(s.buffer,s.byteOffset+e,s.length-e),new fe(s.buffer,s.byteOffset,e)}let r=Buffer.allocUnsafe(e);do{let s=this._buffers[0],i=r.length-e;e>=s.length?r.set(this._buffers.shift(),i):(r.set(new Uint8Array(s.buffer,s.byteOffset,e),i),this._buffers[0]=new fe(s.buffer,s.byteOffset+e,s.length-e)),e-=s.length}while(e>0);return r}startLoop(e){this._loop=!0;do switch(this._state){case v:this.getInfo(e);break;case ft:this.getPayloadLength16(e);break;case lt:this.getPayloadLength64(e);break;case ct:this.getMask();break;case ke:this.getData(e);break;case Te:case le:this._loop=!1;return}while(this._loop);this._errored||e()}getInfo(e){if(this._bufferedBytes<2){this._loop=!1;return}let r=this.consume(2);if((r[0]&48)!==0){let i=this.createError(RangeError,"RSV2 and RSV3 must be clear",!0,1002,"WS_ERR_UNEXPECTED_RSV_2_3");e(i);return}let s=(r[0]&64)===64;if(s&&!this._extensions[nt.extensionName]){let i=this.createError(RangeError,"RSV1 must be clear",!0,1002,"WS_ERR_UNEXPECTED_RSV_1");e(i);return}if(this._fin=(r[0]&128)===128,this._opcode=r[0]&15,this._payloadLength=r[1]&127,this._opcode===0){if(s){let i=this.createError(RangeError,"RSV1 must be clear",!0,1002,"WS_ERR_UNEXPECTED_RSV_1");e(i);return}if(!this._fragmented){let i=this.createError(RangeError,"invalid opcode 0",!0,1002,"WS_ERR_INVALID_OPCODE");e(i);return}this._opcode=this._fragmented}else if(this._opcode===1||this._opcode===2){if(this._fragmented){let i=this.createError(RangeError,`invalid opcode ${this._opcode}`,!0,1002,"WS_ERR_INVALID_OPCODE");e(i);return}this._compressed=s}else if(this._opcode>7&&this._opcode<11){if(!this._fin){let i=this.createError(RangeError,"FIN must be set",!0,1002,"WS_ERR_EXPECTED_FIN");e(i);return}if(s){let i=this.createError(RangeError,"RSV1 must be clear",!0,1002,"WS_ERR_UNEXPECTED_RSV_1");e(i);return}if(this._payloadLength>125||this._opcode===8&&this._payloadLength===1){let i=this.createError(RangeError,`invalid payload length ${this._payloadLength}`,!0,1002,"WS_ERR_INVALID_CONTROL_PAYLOAD_LENGTH");e(i);return}}else{let i=this.createError(RangeError,`invalid opcode ${this._opcode}`,!0,1002,"WS_ERR_INVALID_OPCODE");e(i);return}if(!this._fin&&!this._fragmented&&(this._fragmented=this._opcode),this._masked=(r[1]&128)===128,this._isServer){if(!this._masked){let i=this.createError(RangeError,"MASK must be set",!0,1002,"WS_ERR_EXPECTED_MASK");e(i);return}}else if(this._masked){let i=this.createError(RangeError,"MASK must be clear",!0,1002,"WS_ERR_UNEXPECTED_MASK");e(i);return}this._payloadLength===126?this._state=ft:this._payloadLength===127?this._state=lt: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 r=this.consume(8),s=r.readUInt32BE(0);if(s>Math.pow(2,21)-1){let i=this.createError(RangeError,"Unsupported WebSocket frame: payload length > 2^53 - 1",!1,1009,"WS_ERR_UNSUPPORTED_DATA_PAYLOAD_LENGTH");e(i);return}this._payloadLength=s*Math.pow(2,32)+r.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 r=this.createError(RangeError,"Max payload size exceeded",!1,1009,"WS_ERR_UNSUPPORTED_MESSAGE_LENGTH");e(r);return}this._masked?this._state=ct:this._state=ke}getMask(){if(this._bufferedBytes<4){this._loop=!1;return}this._mask=this.consume(4),this._state=ke}getData(e){let r=ot;if(this._payloadLength){if(this._bufferedBytes<this._payloadLength){this._loop=!1;return}r=this.consume(this._payloadLength),this._masked&&(this._mask[0]|this._mask[1]|this._mask[2]|this._mask[3])!==0&&wr(r,this._mask)}if(this._opcode>7){this.controlMessage(r,e);return}if(this._compressed){this._state=Te,this.decompress(r,e);return}r.length&&(this._messageLength=this._totalPayloadLength,this._fragments.push(r)),this.dataMessage(e)}decompress(e,r){this._extensions[nt.extensionName].decompress(e,this._fin,(i,n)=>{if(i)return r(i);if(n.length){if(this._messageLength+=n.length,this._messageLength>this._maxPayload&&this._maxPayload>0){let o=this.createError(RangeError,"Max payload size exceeded",!1,1009,"WS_ERR_UNSUPPORTED_MESSAGE_LENGTH");r(o);return}this._fragments.push(n)}this.dataMessage(r),this._state===v&&this.startLoop(r)})}dataMessage(e){if(!this._fin){this._state=v;return}let r=this._messageLength,s=this._fragments;if(this._totalPayloadLength=0,this._messageLength=0,this._fragmented=0,this._fragments=[],this._opcode===2){let i;this._binaryType==="nodebuffer"?i=Oe(s,r):this._binaryType==="arraybuffer"?i=br(Oe(s,r)):this._binaryType==="blob"?i=new Blob(s):i=s,this._allowSynchronousEvents?(this.emit("message",i,!0),this._state=v):(this._state=le,setImmediate(()=>{this.emit("message",i,!0),this._state=v,this.startLoop(e)}))}else{let i=Oe(s,r);if(!this._skipUTF8Validation&&!at(i)){let n=this.createError(Error,"invalid UTF-8 sequence",!0,1007,"WS_ERR_INVALID_UTF8");e(n);return}this._state===Te||this._allowSynchronousEvents?(this.emit("message",i,!1),this._state=v):(this._state=le,setImmediate(()=>{this.emit("message",i,!1),this._state=v,this.startLoop(e)}))}}controlMessage(e,r){if(this._opcode===8){if(e.length===0)this._loop=!1,this.emit("conclude",1005,ot),this.end();else{let s=e.readUInt16BE(0);if(!Or(s)){let n=this.createError(RangeError,`invalid status code ${s}`,!0,1002,"WS_ERR_INVALID_CLOSE_CODE");r(n);return}let i=new fe(e.buffer,e.byteOffset+2,e.length-2);if(!this._skipUTF8Validation&&!at(i)){let n=this.createError(Error,"invalid UTF-8 sequence",!0,1007,"WS_ERR_INVALID_UTF8");r(n);return}this._loop=!1,this.emit("conclude",s,i),this.end()}this._state=v;return}this._allowSynchronousEvents?(this.emit(this._opcode===9?"ping":"pong",e),this._state=v):(this._state=le,setImmediate(()=>{this.emit(this._opcode===9?"ping":"pong",e),this._state=v,this.startLoop(r)}))}createError(e,r,s,i,n){this._loop=!1,this._errored=!0;let o=new e(s?`Invalid WebSocket frame: ${r}`:r);return Error.captureStackTrace(o,this.createError),o.code=n,o[Er]=i,o}};ht.exports=Ce});var Be=x((Ds,_t)=>{"use strict";var{Duplex:Us}=m("stream"),{randomFillSync:kr}=m("crypto"),ut=J(),{EMPTY_BUFFER:Tr,kWebSocket:Cr,NOOP:Nr}=T(),{isBlob:$,isValidStatusCode:Lr}=q(),{mask:dt,toBuffer:R}=X(),b=Symbol("kByteLength"),Pr=Buffer.alloc(4),ce=8*1024,I,j=ce,w=0,Br=1,Rr=2,Le=class t{constructor(e,r,s){this._extensions=r||{},s&&(this._generateMask=s,this._maskBuffer=Buffer.alloc(4)),this._socket=e,this._firstFragment=!0,this._compress=!1,this._bufferedBytes=0,this._queue=[],this._state=w,this.onerror=Nr,this[Cr]=void 0}static frame(e,r){let s,i=!1,n=2,o=!1;r.mask&&(s=r.maskBuffer||Pr,r.generateMask?r.generateMask(s):(j===ce&&(I===void 0&&(I=Buffer.alloc(ce)),kr(I,0,ce),j=0),s[0]=I[j++],s[1]=I[j++],s[2]=I[j++],s[3]=I[j++]),o=(s[0]|s[1]|s[2]|s[3])===0,n=6);let f;typeof e=="string"?(!r.mask||o)&&r[b]!==void 0?f=r[b]:(e=Buffer.from(e),f=e.length):(f=e.length,i=r.mask&&r.readOnly&&!o);let l=f;f>=65536?(n+=8,l=127):f>125&&(n+=2,l=126);let a=Buffer.allocUnsafe(i?f+n:n);return a[0]=r.fin?r.opcode|128:r.opcode,r.rsv1&&(a[0]|=64),a[1]=l,l===126?a.writeUInt16BE(f,2):l===127&&(a[2]=a[3]=0,a.writeUIntBE(f,4,6)),r.mask?(a[1]|=128,a[n-4]=s[0],a[n-3]=s[1],a[n-2]=s[2],a[n-1]=s[3],o?[a,e]:i?(dt(e,s,a,n,f),[a]):(dt(e,s,e,0,f),[a,e])):[a,e]}close(e,r,s,i){let n;if(e===void 0)n=Tr;else{if(typeof e!="number"||!Lr(e))throw new TypeError("First argument must be a valid error code number");if(r===void 0||!r.length)n=Buffer.allocUnsafe(2),n.writeUInt16BE(e,0);else{let f=Buffer.byteLength(r);if(f>123)throw new RangeError("The message must not be greater than 123 bytes");n=Buffer.allocUnsafe(2+f),n.writeUInt16BE(e,0),typeof r=="string"?n.write(r,2):n.set(r,2)}}let o={[b]:n.length,fin:!0,generateMask:this._generateMask,mask:s,maskBuffer:this._maskBuffer,opcode:8,readOnly:!1,rsv1:!1};this._state!==w?this.enqueue([this.dispatch,n,!1,o,i]):this.sendFrame(t.frame(n,o),i)}ping(e,r,s){let i,n;if(typeof e=="string"?(i=Buffer.byteLength(e),n=!1):$(e)?(i=e.size,n=!1):(e=R(e),i=e.length,n=R.readOnly),i>125)throw new RangeError("The data size must not be greater than 125 bytes");let o={[b]:i,fin:!0,generateMask:this._generateMask,mask:r,maskBuffer:this._maskBuffer,opcode:9,readOnly:n,rsv1:!1};$(e)?this._state!==w?this.enqueue([this.getBlobData,e,!1,o,s]):this.getBlobData(e,!1,o,s):this._state!==w?this.enqueue([this.dispatch,e,!1,o,s]):this.sendFrame(t.frame(e,o),s)}pong(e,r,s){let i,n;if(typeof e=="string"?(i=Buffer.byteLength(e),n=!1):$(e)?(i=e.size,n=!1):(e=R(e),i=e.length,n=R.readOnly),i>125)throw new RangeError("The data size must not be greater than 125 bytes");let o={[b]:i,fin:!0,generateMask:this._generateMask,mask:r,maskBuffer:this._maskBuffer,opcode:10,readOnly:n,rsv1:!1};$(e)?this._state!==w?this.enqueue([this.getBlobData,e,!1,o,s]):this.getBlobData(e,!1,o,s):this._state!==w?this.enqueue([this.dispatch,e,!1,o,s]):this.sendFrame(t.frame(e,o),s)}send(e,r,s){let i=this._extensions[ut.extensionName],n=r.binary?2:1,o=r.compress,f,l;typeof e=="string"?(f=Buffer.byteLength(e),l=!1):$(e)?(f=e.size,l=!1):(e=R(e),f=e.length,l=R.readOnly),this._firstFragment?(this._firstFragment=!1,o&&i&&i.params[i._isServer?"server_no_context_takeover":"client_no_context_takeover"]&&(o=f>=i._threshold),this._compress=o):(o=!1,n=0),r.fin&&(this._firstFragment=!0);let a={[b]:f,fin:r.fin,generateMask:this._generateMask,mask:r.mask,maskBuffer:this._maskBuffer,opcode:n,readOnly:l,rsv1:o};$(e)?this._state!==w?this.enqueue([this.getBlobData,e,this._compress,a,s]):this.getBlobData(e,this._compress,a,s):this._state!==w?this.enqueue([this.dispatch,e,this._compress,a,s]):this.dispatch(e,this._compress,a,s)}getBlobData(e,r,s,i){this._bufferedBytes+=s[b],this._state=Rr,e.arrayBuffer().then(n=>{if(this._socket.destroyed){let f=new Error("The socket was closed while the blob was being read");process.nextTick(Pe,this,f,i);return}this._bufferedBytes-=s[b];let o=R(n);r?this.dispatch(o,r,s,i):(this._state=w,this.sendFrame(t.frame(o,s),i),this.dequeue())}).catch(n=>{process.nextTick(Ir,this,n,i)})}dispatch(e,r,s,i){if(!r){this.sendFrame(t.frame(e,s),i);return}let n=this._extensions[ut.extensionName];this._bufferedBytes+=s[b],this._state=Br,n.compress(e,s.fin,(o,f)=>{if(this._socket.destroyed){let l=new Error("The socket was closed while data was being compressed");Pe(this,l,i);return}this._bufferedBytes-=s[b],this._state=w,s.readOnly=!1,this.sendFrame(t.frame(f,s),i),this.dequeue()})}dequeue(){for(;this._state===w&&this._queue.length;){let e=this._queue.shift();this._bufferedBytes-=e[3][b],Reflect.apply(e[0],this,e.slice(1))}}enqueue(e){this._bufferedBytes+=e[3][b],this._queue.push(e)}sendFrame(e,r){e.length===2?(this._socket.cork(),this._socket.write(e[0]),this._socket.write(e[1],r),this._socket.uncork()):this._socket.write(e[0],r)}};_t.exports=Le;function Pe(t,e,r){typeof r=="function"&&r(e);for(let s=0;s<t._queue.length;s++){let i=t._queue[s],n=i[i.length-1];typeof n=="function"&&n(e)}}function Ir(t,e,r){Pe(t,e,r),t.onerror(e)}});var bt=x((Ms,vt)=>{"use strict";var{kForOnEventAttribute:Q,kListener:Re}=T(),pt=Symbol("kCode"),mt=Symbol("kData"),gt=Symbol("kError"),yt=Symbol("kMessage"),St=Symbol("kReason"),V=Symbol("kTarget"),xt=Symbol("kType"),Et=Symbol("kWasClean"),N=class{constructor(e){this[V]=null,this[xt]=e}get target(){return this[V]}get type(){return this[xt]}};Object.defineProperty(N.prototype,"target",{enumerable:!0});Object.defineProperty(N.prototype,"type",{enumerable:!0});var U=class extends N{constructor(e,r={}){super(e),this[pt]=r.code===void 0?0:r.code,this[St]=r.reason===void 0?"":r.reason,this[Et]=r.wasClean===void 0?!1:r.wasClean}get code(){return this[pt]}get reason(){return this[St]}get wasClean(){return this[Et]}};Object.defineProperty(U.prototype,"code",{enumerable:!0});Object.defineProperty(U.prototype,"reason",{enumerable:!0});Object.defineProperty(U.prototype,"wasClean",{enumerable:!0});var z=class extends N{constructor(e,r={}){super(e),this[gt]=r.error===void 0?null:r.error,this[yt]=r.message===void 0?"":r.message}get error(){return this[gt]}get message(){return this[yt]}};Object.defineProperty(z.prototype,"error",{enumerable:!0});Object.defineProperty(z.prototype,"message",{enumerable:!0});var ee=class extends N{constructor(e,r={}){super(e),this[mt]=r.data===void 0?null:r.data}get data(){return this[mt]}};Object.defineProperty(ee.prototype,"data",{enumerable:!0});var Ur={addEventListener(t,e,r={}){for(let i of this.listeners(t))if(!r[Q]&&i[Re]===e&&!i[Q])return;let s;if(t==="message")s=function(n,o){let f=new ee("message",{data:o?n:n.toString()});f[V]=this,he(e,this,f)};else if(t==="close")s=function(n,o){let f=new U("close",{code:n,reason:o.toString(),wasClean:this._closeFrameReceived&&this._closeFrameSent});f[V]=this,he(e,this,f)};else if(t==="error")s=function(n){let o=new z("error",{error:n,message:n.message});o[V]=this,he(e,this,o)};else if(t==="open")s=function(){let n=new N("open");n[V]=this,he(e,this,n)};else return;s[Q]=!!r[Q],s[Re]=e,r.once?this.once(t,s):this.on(t,s)},removeEventListener(t,e){for(let r of this.listeners(t))if(r[Re]===e&&!r[Q]){this.removeListener(t,r);break}}};vt.exports={CloseEvent:U,ErrorEvent:z,Event:N,EventTarget:Ur,MessageEvent:ee};function he(t,e,r){typeof t=="object"&&t.handleEvent?t.handleEvent.call(t,r):t.call(e,r)}});var Ie=x((As,wt)=>{"use strict";var{tokenChars:te}=q();function O(t,e,r){t[e]===void 0?t[e]=[r]:t[e].push(r)}function Dr(t){let e=Object.create(null),r=Object.create(null),s=!1,i=!1,n=!1,o,f,l=-1,a=-1,c=-1,h=0;for(;h<t.length;h++)if(a=t.charCodeAt(h),o===void 0)if(c===-1&&te[a]===1)l===-1&&(l=h);else if(h!==0&&(a===32||a===9))c===-1&&l!==-1&&(c=h);else if(a===59||a===44){if(l===-1)throw new SyntaxError(`Unexpected character at index ${h}`);c===-1&&(c=h);let g=t.slice(l,c);a===44?(O(e,g,r),r=Object.create(null)):o=g,l=c=-1}else throw new SyntaxError(`Unexpected character at index ${h}`);else if(f===void 0)if(c===-1&&te[a]===1)l===-1&&(l=h);else if(a===32||a===9)c===-1&&l!==-1&&(c=h);else if(a===59||a===44){if(l===-1)throw new SyntaxError(`Unexpected character at index ${h}`);c===-1&&(c=h),O(r,t.slice(l,c),!0),a===44&&(O(e,o,r),r=Object.create(null),o=void 0),l=c=-1}else if(a===61&&l!==-1&&c===-1)f=t.slice(l,h),l=c=-1;else throw new SyntaxError(`Unexpected character at index ${h}`);else if(i){if(te[a]!==1)throw new SyntaxError(`Unexpected character at index ${h}`);l===-1?l=h:s||(s=!0),i=!1}else if(n)if(te[a]===1)l===-1&&(l=h);else if(a===34&&l!==-1)n=!1,c=h;else if(a===92)i=!0;else throw new SyntaxError(`Unexpected character at index ${h}`);else if(a===34&&t.charCodeAt(h-1)===61)n=!0;else if(c===-1&&te[a]===1)l===-1&&(l=h);else if(l!==-1&&(a===32||a===9))c===-1&&(c=h);else if(a===59||a===44){if(l===-1)throw new SyntaxError(`Unexpected character at index ${h}`);c===-1&&(c=h);let g=t.slice(l,c);s&&(g=g.replace(/\\/g,""),s=!1),O(r,f,g),a===44&&(O(e,o,r),r=Object.create(null),o=void 0),f=void 0,l=c=-1}else throw new SyntaxError(`Unexpected character at index ${h}`);if(l===-1||n||a===32||a===9)throw new SyntaxError("Unexpected end of input");c===-1&&(c=h);let _=t.slice(l,c);return o===void 0?O(e,_,r):(f===void 0?O(r,_,!0):s?O(r,f,_.replace(/\\/g,"")):O(r,f,_),O(e,o,r)),e}function Mr(t){return Object.keys(t).map(e=>{let r=t[e];return Array.isArray(r)||(r=[r]),r.map(s=>[e].concat(Object.keys(s).map(i=>{let n=s[i];return Array.isArray(n)||(n=[n]),n.map(o=>o===!0?i:`${i}=${o}`).join("; ")})).join("; ")).join(", ")}).join(", ")}wt.exports={format:Mr,parse:Dr}});var pe=x((Gs,Dt)=>{"use strict";var Ar=m("events"),Wr=m("https"),Fr=m("http"),Tt=m("net"),Gr=m("tls"),{randomBytes:qr,createHash:$r}=m("crypto"),{Duplex:Ws,Readable:Fs}=m("stream"),{URL:Ue}=m("url"),B=J(),jr=Ne(),Vr=Be(),{isBlob:zr}=q(),{BINARY_TYPES:Ot,EMPTY_BUFFER:ue,GUID:Hr,kForOnEventAttribute:De,kListener:Yr,kStatusCode:Kr,kWebSocket:y,NOOP:Ct}=T(),{EventTarget:{addEventListener:Xr,removeEventListener:Zr}}=bt(),{format:Jr,parse:Qr}=Ie(),{toBuffer:es}=X(),ts=30*1e3,Nt=Symbol("kAborted"),Me=[8,13],L=["CONNECTING","OPEN","CLOSING","CLOSED"],rs=/^[!#$%&'*+\-.0-9A-Z^_`|a-z~]+$/,d=class t extends Ar{constructor(e,r,s){super(),this._binaryType=Ot[0],this._closeCode=1006,this._closeFrameReceived=!1,this._closeFrameSent=!1,this._closeMessage=ue,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,r===void 0?r=[]:Array.isArray(r)||(typeof r=="object"&&r!==null?(s=r,r=[]):r=[r]),Lt(this,e,r,s)):(this._autoPong=s.autoPong,this._isServer=!0)}get binaryType(){return this._binaryType}set binaryType(e){Ot.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,r,s){let i=new jr({allowSynchronousEvents:s.allowSynchronousEvents,binaryType:this.binaryType,extensions:this._extensions,isServer:this._isServer,maxPayload:s.maxPayload,skipUTF8Validation:s.skipUTF8Validation}),n=new Vr(e,this._extensions,s.generateMask);this._receiver=i,this._sender=n,this._socket=e,i[y]=this,n[y]=this,e[y]=this,i.on("conclude",ns),i.on("drain",os),i.on("error",as),i.on("message",fs),i.on("ping",ls),i.on("pong",cs),n.onerror=hs,e.setTimeout&&e.setTimeout(0),e.setNoDelay&&e.setNoDelay(),r.length>0&&e.unshift(r),e.on("close",Rt),e.on("data",_e),e.on("end",It),e.on("error",Ut),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[B.extensionName]&&this._extensions[B.extensionName].cleanup(),this._receiver.removeAllListeners(),this._readyState=t.CLOSED,this.emit("close",this._closeCode,this._closeMessage)}close(e,r){if(this.readyState!==t.CLOSED){if(this.readyState===t.CONNECTING){E(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,r,!this._isServer,s=>{s||(this._closeFrameSent=!0,(this._closeFrameReceived||this._receiver._writableState.errorEmitted)&&this._socket.end())}),Bt(this)}}pause(){this.readyState===t.CONNECTING||this.readyState===t.CLOSED||(this._paused=!0,this._socket.pause())}ping(e,r,s){if(this.readyState===t.CONNECTING)throw new Error("WebSocket is not open: readyState 0 (CONNECTING)");if(typeof e=="function"?(s=e,e=r=void 0):typeof r=="function"&&(s=r,r=void 0),typeof e=="number"&&(e=e.toString()),this.readyState!==t.OPEN){Ae(this,e,s);return}r===void 0&&(r=!this._isServer),this._sender.ping(e||ue,r,s)}pong(e,r,s){if(this.readyState===t.CONNECTING)throw new Error("WebSocket is not open: readyState 0 (CONNECTING)");if(typeof e=="function"?(s=e,e=r=void 0):typeof r=="function"&&(s=r,r=void 0),typeof e=="number"&&(e=e.toString()),this.readyState!==t.OPEN){Ae(this,e,s);return}r===void 0&&(r=!this._isServer),this._sender.pong(e||ue,r,s)}resume(){this.readyState===t.CONNECTING||this.readyState===t.CLOSED||(this._paused=!1,this._receiver._writableState.needDrain||this._socket.resume())}send(e,r,s){if(this.readyState===t.CONNECTING)throw new Error("WebSocket is not open: readyState 0 (CONNECTING)");if(typeof r=="function"&&(s=r,r={}),typeof e=="number"&&(e=e.toString()),this.readyState!==t.OPEN){Ae(this,e,s);return}let i={binary:typeof e!="string",mask:!this._isServer,compress:!0,fin:!0,...r};this._extensions[B.extensionName]||(i.compress=!1),this._sender.send(e||ue,i,s)}terminate(){if(this.readyState!==t.CLOSED){if(this.readyState===t.CONNECTING){E(this,this._req,"WebSocket was closed before the connection was established");return}this._socket&&(this._readyState=t.CLOSING,this._socket.destroy())}}};Object.defineProperty(d,"CONNECTING",{enumerable:!0,value:L.indexOf("CONNECTING")});Object.defineProperty(d.prototype,"CONNECTING",{enumerable:!0,value:L.indexOf("CONNECTING")});Object.defineProperty(d,"OPEN",{enumerable:!0,value:L.indexOf("OPEN")});Object.defineProperty(d.prototype,"OPEN",{enumerable:!0,value:L.indexOf("OPEN")});Object.defineProperty(d,"CLOSING",{enumerable:!0,value:L.indexOf("CLOSING")});Object.defineProperty(d.prototype,"CLOSING",{enumerable:!0,value:L.indexOf("CLOSING")});Object.defineProperty(d,"CLOSED",{enumerable:!0,value:L.indexOf("CLOSED")});Object.defineProperty(d.prototype,"CLOSED",{enumerable:!0,value:L.indexOf("CLOSED")});["binaryType","bufferedAmount","extensions","isPaused","protocol","readyState","url"].forEach(t=>{Object.defineProperty(d.prototype,t,{enumerable:!0})});["open","error","close","message"].forEach(t=>{Object.defineProperty(d.prototype,`on${t}`,{enumerable:!0,get(){for(let e of this.listeners(t))if(e[De])return e[Yr];return null},set(e){for(let r of this.listeners(t))if(r[De]){this.removeListener(t,r);break}typeof e=="function"&&this.addEventListener(t,e,{[De]:!0})}})});d.prototype.addEventListener=Xr;d.prototype.removeEventListener=Zr;Dt.exports=d;function Lt(t,e,r,s){let i={allowSynchronousEvents:!0,autoPong:!0,protocolVersion:Me[1],maxPayload:104857600,skipUTF8Validation:!1,perMessageDeflate:!0,followRedirects:!1,maxRedirects:10,...s,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=i.autoPong,!Me.includes(i.protocolVersion))throw new RangeError(`Unsupported protocol version: ${i.protocolVersion} (supported versions: ${Me.join(", ")})`);let n;if(e instanceof Ue)n=e;else try{n=new Ue(e)}catch{throw new SyntaxError(`Invalid URL: ${e}`)}n.protocol==="http:"?n.protocol="ws:":n.protocol==="https:"&&(n.protocol="wss:"),t._url=n.href;let o=n.protocol==="wss:",f=n.protocol==="ws+unix:",l;if(n.protocol!=="ws:"&&!o&&!f?l=`The URL's protocol must be one of "ws:", "wss:", "http:", "https:", or "ws+unix:"`:f&&!n.pathname?l="The URL's pathname is empty":n.hash&&(l="The URL contains a fragment identifier"),l){let u=new SyntaxError(l);if(t._redirects===0)throw u;de(t,u);return}let a=o?443:80,c=qr(16).toString("base64"),h=o?Wr.request:Fr.request,_=new Set,g;if(i.createConnection=i.createConnection||(o?is:ss),i.defaultPort=i.defaultPort||a,i.port=n.port||a,i.host=n.hostname.startsWith("[")?n.hostname.slice(1,-1):n.hostname,i.headers={...i.headers,"Sec-WebSocket-Version":i.protocolVersion,"Sec-WebSocket-Key":c,Connection:"Upgrade",Upgrade:"websocket"},i.path=n.pathname+n.search,i.timeout=i.handshakeTimeout,i.perMessageDeflate&&(g=new B(i.perMessageDeflate!==!0?i.perMessageDeflate:{},!1,i.maxPayload),i.headers["Sec-WebSocket-Extensions"]=Jr({[B.extensionName]:g.offer()})),r.length){for(let u of r){if(typeof u!="string"||!rs.test(u)||_.has(u))throw new SyntaxError("An invalid or duplicated subprotocol was specified");_.add(u)}i.headers["Sec-WebSocket-Protocol"]=r.join(",")}if(i.origin&&(i.protocolVersion<13?i.headers["Sec-WebSocket-Origin"]=i.origin:i.headers.Origin=i.origin),(n.username||n.password)&&(i.auth=`${n.username}:${n.password}`),f){let u=i.path.split(":");i.socketPath=u[0],i.path=u[1]}let p;if(i.followRedirects){if(t._redirects===0){t._originalIpc=f,t._originalSecure=o,t._originalHostOrSocketPath=f?i.socketPath:n.host;let u=s&&s.headers;if(s={...s,headers:{}},u)for(let[S,A]of Object.entries(u))s.headers[S.toLowerCase()]=A}else if(t.listenerCount("redirect")===0){let u=f?t._originalIpc?i.socketPath===t._originalHostOrSocketPath:!1:t._originalIpc?!1:n.host===t._originalHostOrSocketPath;(!u||t._originalSecure&&!o)&&(delete i.headers.authorization,delete i.headers.cookie,u||delete i.headers.host,i.auth=void 0)}i.auth&&!s.headers.authorization&&(s.headers.authorization="Basic "+Buffer.from(i.auth).toString("base64")),p=t._req=h(i),t._redirects&&t.emit("redirect",t.url,p)}else p=t._req=h(i);i.timeout&&p.on("timeout",()=>{E(t,p,"Opening handshake has timed out")}),p.on("error",u=>{p===null||p[Nt]||(p=t._req=null,de(t,u))}),p.on("response",u=>{let S=u.headers.location,A=u.statusCode;if(S&&i.followRedirects&&A>=300&&A<400){if(++t._redirects>i.maxRedirects){E(t,p,"Maximum redirects exceeded");return}p.abort();let H;try{H=new Ue(S,e)}catch{let W=new SyntaxError(`Invalid URL: ${S}`);de(t,W);return}Lt(t,H,r,s)}else t.emit("unexpected-response",p,u)||E(t,p,`Unexpected server response: ${u.statusCode}`)}),p.on("upgrade",(u,S,A)=>{if(t.emit("upgrade",u),t.readyState!==d.CONNECTING)return;p=t._req=null;let H=u.headers.upgrade;if(H===void 0||H.toLowerCase()!=="websocket"){E(t,S,"Invalid Upgrade header");return}let qe=$r("sha1").update(c+Hr).digest("base64");if(u.headers["sec-websocket-accept"]!==qe){E(t,S,"Invalid Sec-WebSocket-Accept header");return}let W=u.headers["sec-websocket-protocol"],Y;if(W!==void 0?_.size?_.has(W)||(Y="Server sent an invalid subprotocol"):Y="Server sent a subprotocol but none was requested":_.size&&(Y="Server sent no subprotocol"),Y){E(t,S,Y);return}W&&(t._protocol=W);let $e=u.headers["sec-websocket-extensions"];if($e!==void 0){if(!g){E(t,S,"Server sent a Sec-WebSocket-Extensions header but no extension was requested");return}let ge;try{ge=Qr($e)}catch{E(t,S,"Invalid Sec-WebSocket-Extensions header");return}let je=Object.keys(ge);if(je.length!==1||je[0]!==B.extensionName){E(t,S,"Server indicated an extension that was not requested");return}try{g.accept(ge[B.extensionName])}catch{E(t,S,"Invalid Sec-WebSocket-Extensions header");return}t._extensions[B.extensionName]=g}t.setSocket(S,A,{allowSynchronousEvents:i.allowSynchronousEvents,generateMask:i.generateMask,maxPayload:i.maxPayload,skipUTF8Validation:i.skipUTF8Validation})}),i.finishRequest?i.finishRequest(p,t):p.end()}function de(t,e){t._readyState=d.CLOSING,t._errorEmitted=!0,t.emit("error",e),t.emitClose()}function ss(t){return t.path=t.socketPath,Tt.connect(t)}function is(t){return t.path=void 0,!t.servername&&t.servername!==""&&(t.servername=Tt.isIP(t.host)?"":t.host),Gr.connect(t)}function E(t,e,r){t._readyState=d.CLOSING;let s=new Error(r);Error.captureStackTrace(s,E),e.setHeader?(e[Nt]=!0,e.abort(),e.socket&&!e.socket.destroyed&&e.socket.destroy(),process.nextTick(de,t,s)):(e.destroy(s),e.once("error",t.emit.bind(t,"error")),e.once("close",t.emitClose.bind(t)))}function Ae(t,e,r){if(e){let s=zr(e)?e.size:es(e).length;t._socket?t._sender._bufferedBytes+=s:t._bufferedAmount+=s}if(r){let s=new Error(`WebSocket is not open: readyState ${t.readyState} (${L[t.readyState]})`);process.nextTick(r,s)}}function ns(t,e){let r=this[y];r._closeFrameReceived=!0,r._closeMessage=e,r._closeCode=t,r._socket[y]!==void 0&&(r._socket.removeListener("data",_e),process.nextTick(Pt,r._socket),t===1005?r.close():r.close(t,e))}function os(){let t=this[y];t.isPaused||t._socket.resume()}function as(t){let e=this[y];e._socket[y]!==void 0&&(e._socket.removeListener("data",_e),process.nextTick(Pt,e._socket),e.close(t[Kr])),e._errorEmitted||(e._errorEmitted=!0,e.emit("error",t))}function kt(){this[y].emitClose()}function fs(t,e){this[y].emit("message",t,e)}function ls(t){let e=this[y];e._autoPong&&e.pong(t,!this._isServer,Ct),e.emit("ping",t)}function cs(t){this[y].emit("pong",t)}function Pt(t){t.resume()}function hs(t){let e=this[y];e.readyState!==d.CLOSED&&(e.readyState===d.OPEN&&(e._readyState=d.CLOSING,Bt(e)),this._socket.end(),e._errorEmitted||(e._errorEmitted=!0,e.emit("error",t)))}function Bt(t){t._closeTimer=setTimeout(t._socket.destroy.bind(t._socket),ts)}function Rt(){let t=this[y];this.removeListener("close",Rt),this.removeListener("data",_e),this.removeListener("end",It),t._readyState=d.CLOSING;let e;!this._readableState.endEmitted&&!t._closeFrameReceived&&!t._receiver._writableState.errorEmitted&&(e=t._socket.read())!==null&&t._receiver.write(e),t._receiver.end(),this[y]=void 0,clearTimeout(t._closeTimer),t._receiver._writableState.finished||t._receiver._writableState.errorEmitted?t.emitClose():(t._receiver.on("error",kt),t._receiver.on("finish",kt))}function _e(t){this[y]._receiver.write(t)||this.pause()}function It(){let t=this[y];t._readyState=d.CLOSING,t._receiver.end(),this.end()}function Ut(){let t=this[y];this.removeListener("error",Ut),this.on("error",Ct),t&&(t._readyState=d.CLOSING,this.destroy())}});var Ft=x(($s,Wt)=>{"use strict";var qs=pe(),{Duplex:us}=m("stream");function Mt(t){t.emit("close")}function ds(){!this.destroyed&&this._writableState.finished&&this.destroy()}function At(t){this.removeListener("error",At),this.destroy(),this.listenerCount("error")===0&&this.emit("error",t)}function _s(t,e){let r=!0,s=new us({...e,autoDestroy:!1,emitClose:!1,objectMode:!1,writableObjectMode:!1});return t.on("message",function(n,o){let f=!o&&s._readableState.objectMode?n.toString():n;s.push(f)||t.pause()}),t.once("error",function(n){s.destroyed||(r=!1,s.destroy(n))}),t.once("close",function(){s.destroyed||s.push(null)}),s._destroy=function(i,n){if(t.readyState===t.CLOSED){n(i),process.nextTick(Mt,s);return}let o=!1;t.once("error",function(l){o=!0,n(l)}),t.once("close",function(){o||n(i),process.nextTick(Mt,s)}),r&&t.terminate()},s._final=function(i){if(t.readyState===t.CONNECTING){t.once("open",function(){s._final(i)});return}t._socket!==null&&(t._socket._writableState.finished?(i(),s._readableState.endEmitted&&s.destroy()):(t._socket.once("finish",function(){i()}),t.close()))},s._read=function(){t.isPaused&&t.resume()},s._write=function(i,n,o){if(t.readyState===t.CONNECTING){t.once("open",function(){s._write(i,n,o)});return}t.send(i,o)},s.on("end",ds),s.on("error",At),s}Wt.exports=_s});var qt=x((js,Gt)=>{"use strict";var{tokenChars:ps}=q();function ms(t){let e=new Set,r=-1,s=-1,i=0;for(i;i<t.length;i++){let o=t.charCodeAt(i);if(s===-1&&ps[o]===1)r===-1&&(r=i);else if(i!==0&&(o===32||o===9))s===-1&&r!==-1&&(s=i);else if(o===44){if(r===-1)throw new SyntaxError(`Unexpected character at index ${i}`);s===-1&&(s=i);let f=t.slice(r,s);if(e.has(f))throw new SyntaxError(`The "${f}" subprotocol is duplicated`);e.add(f),r=s=-1}else throw new SyntaxError(`Unexpected character at index ${i}`)}if(r===-1||s!==-1)throw new SyntaxError("Unexpected end of input");let n=t.slice(r,i);if(e.has(n))throw new SyntaxError(`The "${n}" subprotocol is duplicated`);return e.add(n),e}Gt.exports={parse:ms}});var Kt=x((zs,Yt)=>{"use strict";var gs=m("events"),me=m("http"),{Duplex:Vs}=m("stream"),{createHash:ys}=m("crypto"),$t=Ie(),D=J(),Ss=qt(),xs=pe(),{GUID:Es,kWebSocket:vs}=T(),bs=/^[+/0-9A-Za-z]{22}==$/,jt=0,Vt=1,Ht=2,We=class extends gs{constructor(e,r){if(super(),e={allowSynchronousEvents:!0,autoPong:!0,maxPayload:100*1024*1024,skipUTF8Validation:!1,perMessageDeflate:!1,handleProtocols:null,clientTracking:!0,verifyClient:null,noServer:!1,backlog:null,server:null,host:null,path:null,port:null,WebSocket:xs,...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=me.createServer((s,i)=>{let n=me.STATUS_CODES[426];i.writeHead(426,{"Content-Length":n.length,"Content-Type":"text/plain"}),i.end(n)}),this._server.listen(e.port,e.host,e.backlog,r)):e.server&&(this._server=e.server),this._server){let s=this.emit.bind(this,"connection");this._removeListeners=ws(this._server,{listening:this.emit.bind(this,"listening"),error:this.emit.bind(this,"error"),upgrade:(i,n,o)=>{this.handleUpgrade(i,n,o,s)}})}e.perMessageDeflate===!0&&(e.perMessageDeflate={}),e.clientTracking&&(this.clients=new Set,this._shouldEmitClose=!1),this.options=e,this._state=jt}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===Ht){e&&this.once("close",()=>{e(new Error("The server is not running"))}),process.nextTick(re,this);return}if(e&&this.once("close",e),this._state!==Vt)if(this._state=Vt,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(re,this):process.nextTick(re,this);else{let r=this._server;this._removeListeners(),this._removeListeners=this._server=null,r.close(()=>{re(this)})}}shouldHandle(e){if(this.options.path){let r=e.url.indexOf("?");if((r!==-1?e.url.slice(0,r):e.url)!==this.options.path)return!1}return!0}handleUpgrade(e,r,s,i){r.on("error",zt);let n=e.headers["sec-websocket-key"],o=e.headers.upgrade,f=+e.headers["sec-websocket-version"];if(e.method!=="GET"){M(this,e,r,405,"Invalid HTTP method");return}if(o===void 0||o.toLowerCase()!=="websocket"){M(this,e,r,400,"Invalid Upgrade header");return}if(n===void 0||!bs.test(n)){M(this,e,r,400,"Missing or invalid Sec-WebSocket-Key header");return}if(f!==13&&f!==8){M(this,e,r,400,"Missing or invalid Sec-WebSocket-Version header",{"Sec-WebSocket-Version":"13, 8"});return}if(!this.shouldHandle(e)){se(r,400);return}let l=e.headers["sec-websocket-protocol"],a=new Set;if(l!==void 0)try{a=Ss.parse(l)}catch{M(this,e,r,400,"Invalid Sec-WebSocket-Protocol header");return}let c=e.headers["sec-websocket-extensions"],h={};if(this.options.perMessageDeflate&&c!==void 0){let _=new D(this.options.perMessageDeflate,!0,this.options.maxPayload);try{let g=$t.parse(c);g[D.extensionName]&&(_.accept(g[D.extensionName]),h[D.extensionName]=_)}catch{M(this,e,r,400,"Invalid or unacceptable Sec-WebSocket-Extensions header");return}}if(this.options.verifyClient){let _={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(_,(g,p,u,S)=>{if(!g)return se(r,p||401,u,S);this.completeUpgrade(h,n,a,e,r,s,i)});return}if(!this.options.verifyClient(_))return se(r,401)}this.completeUpgrade(h,n,a,e,r,s,i)}completeUpgrade(e,r,s,i,n,o,f){if(!n.readable||!n.writable)return n.destroy();if(n[vs])throw new Error("server.handleUpgrade() was called more than once with the same socket, possibly due to a misconfiguration");if(this._state>jt)return se(n,503);let a=["HTTP/1.1 101 Switching Protocols","Upgrade: websocket","Connection: Upgrade",`Sec-WebSocket-Accept: ${ys("sha1").update(r+Es).digest("base64")}`],c=new this.options.WebSocket(null,void 0,this.options);if(s.size){let h=this.options.handleProtocols?this.options.handleProtocols(s,i):s.values().next().value;h&&(a.push(`Sec-WebSocket-Protocol: ${h}`),c._protocol=h)}if(e[D.extensionName]){let h=e[D.extensionName].params,_=$t.format({[D.extensionName]:[h]});a.push(`Sec-WebSocket-Extensions: ${_}`),c._extensions=e}this.emit("headers",a,i),n.write(a.concat(`\r
`).join(`\r
`)),n.removeListener("error",zt),c.setSocket(n,o,{allowSynchronousEvents:this.options.allowSynchronousEvents,maxPayload:this.options.maxPayload,skipUTF8Validation:this.options.skipUTF8Validation}),this.clients&&(this.clients.add(c),c.on("close",()=>{this.clients.delete(c),this._shouldEmitClose&&!this.clients.size&&process.nextTick(re,this)})),f(c,i)}};Yt.exports=We;function ws(t,e){for(let r of Object.keys(e))t.on(r,e[r]);return function(){for(let s of Object.keys(e))t.removeListener(s,e[s])}}function re(t){t._state=Ht,t.emit("close")}function zt(){this.destroy()}function se(t,e,r,s){r=r||me.STATUS_CODES[e],s={Connection:"close","Content-Type":"text/html","Content-Length":Buffer.byteLength(r),...s},t.once("finish",t.destroy),t.end(`HTTP/1.1 ${e} ${me.STATUS_CODES[e]}\r
`+Object.keys(s).map(i=>`${i}: ${s[i]}`).join(`\r
`)+`\r
\r
`+r)}function M(t,e,r,s,i,n){if(t.listenerCount("wsClientError")){let o=new Error(i);Error.captureStackTrace(o,M),t.emit("wsClientError",o,r,e)}else se(r,s,i,n)}});import k from"node:process";var Os=K(Ft(),1),ks=K(Ne(),1),Ts=K(Be(),1),Xt=K(pe(),1),Zt=K(Kt(),1);var Jt=Xt.default;function Qt({merkurConfig:t}){let{protocol:e,host:r}=t.socketServer;return new Jt(`${e}//${r}`)}var Fe,Ge;function Js(){return k.env.CLI_CONFIG&&!Fe&&(Fe=JSON.parse(k.env.CLI_CONFIG)),k.env.MERKUR_CONFIG&&!Ge&&(Ge=JSON.parse(k.env.MERKUR_CONFIG)),{merkurConfig:Ge,cliConfig:Fe}}function Qs({merkurConfig:t,cliConfig:e}){function r(){let s=Qt({merkurConfig:t});s.on("error",i=>{console.error(i),s.terminate()}),s.on("open",function(){setTimeout(()=>{s.send(JSON.stringify({to:"browser",command:"reload",changed:[],errors:[]})),s.terminate()},50)})}if(e.watch){r();let s=()=>k.exit(0);k.on("SIGINT",s),k.on("SIGQUIT",s),k.on("SIGTERM",s),k.on("uncaughtException",()=>{r()}),k.on("unhandledRejection",()=>{r()})}}export{Qs as autoReload,Js as resolveConfig};