@merkur/cli 0.35.1 → 0.35.3

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/lib/devClient.mjs CHANGED
@@ -1 +1 @@
1
- "use strict";(()=>{var l=class{#e=[];pipe(...t){return x(...t)(this)}next(...t){this.#e.forEach(e=>{typeof e=="function"?e(...t):e.next(...t)})}error(...t){this.#e.forEach(e=>{e?.error?.(...t),this.unsubscribe(e)})}complete(...t){this.#e.forEach(e=>{e?.complete?.(...t),this.unsubscribe(e)})}subscribe(t){return this.#e.push(t),{unsubscribe:()=>{this.unsubscribe(t)}}}unsubscribe(t){let e=this.#e.indexOf(t);this.#e.splice(e,1)}};function x(...t){return e=>Array.from(t).reduce((s,a)=>a(s),e)}var S=5,h=class extends l{#e=null;#t=0;#r={};constructor(e){super(),this.#r=e}init(){return this.#n(),this}send(e){return this.#e&&this.#e.send(e),this}destroy(){return this.#e&&(this.#e.close(),this.#e=null),this}#n(){this.#e=Reflect.construct(WebSocket,[`${this.#r.protocol}//${this.#r.host}`]),this.#e.onopen=()=>{this.#t=0},this.#e.onmessage=e=>{try{let s=JSON.parse(e.data);this.next(s)}catch(s){console.error(s)}},this.#e.onerror=e=>{console.error(e)},this.#e.onclose=()=>{this.#t>=S||(this.#t+=1,setTimeout(()=>{this.#n()},this.#t*500))}}};async function w({to:t,command:e}){t==="browser"&&e==="reload"&&location.reload()}async function p({to:t,command:e,changed:s}){if(t==="browser"&&e==="refresh"){if(await Promise.all(s.map(async o=>new Promise(c=>{let r=document.querySelector(`[data-name="${o.name}"]`);if(!r){location.reload();return}let n=null,u=new URLSearchParams({version:Math.random()});if(r.nodeName==="LINK"){let i=new URL(r.href);n=r.cloneNode(),n.onload=()=>{r.remove(),c()},n.onerror=()=>{r.remove(),c()},n.href=new URL(`${i.origin}${i.pathname}?${u.toString()}`)}if(r.nodeName==="SCRIPT"){let i=new URL(r.src);n=document.createElement("script"),n.setAttribute("data-name",o.name),n.onload=()=>{r.remove(),c()},n.onerror=()=>{r.remove(),c()},n.src=new URL(`${i.origin}${i.pathname}?${u.toString()}`)}r.parentNode.insertBefore(n,r.nextSibling)}))),!s.some(o=>o.name.endsWith(".js")))return;let a=window.__merkur_dev__.widgets;window.__merkur_dev__.widgets=[],a.forEach(async o=>{let{props:c,state:r,$external:n,name:u,version:i,containerSelector:f,container:_,slot:b}=o,k={props:c,state:r,$external:n,name:u,version:i,containerSelector:f,container:_,slot:b},g=await window.__merkur__.create(k);await o.unmount(),await g.mount()})}}var{__merkur_dev__:m}=window,d=new h(m.merkurConfig.socketServer);m.webSocket=d;m.widgets=[];d.init();d.subscribe(w);d.subscribe(p);addEventListener("load",function(){let e=window.__merkur__.create;window.__merkur__.create=async function(...a){let o=await e(...a);return m.widgets.push(o),o}});})();
1
+ "use strict";(()=>{var l=class{#e=[];pipe(...t){return x(...t)(this)}next(...t){this.#e.forEach(e=>{typeof e=="function"?e(...t):e.next(...t)})}error(...t){this.#e.forEach(e=>{e?.error?.(...t),this.unsubscribe(e)})}complete(...t){this.#e.forEach(e=>{e?.complete?.(...t),this.unsubscribe(e)})}subscribe(t){return this.#e.push(t),{unsubscribe:()=>{this.unsubscribe(t)}}}unsubscribe(t){let e=this.#e.indexOf(t);this.#e.splice(e,1)}};function x(...t){return e=>Array.from(t).reduce((s,a)=>a(s),e)}var S=5,m=class extends l{#e=null;#t=0;#r={};constructor(e){super(),this.#r=e}init(){return this.#n(),this}send(e){return this.#e&&this.#e.send(e),this}destroy(){return this.#e&&(this.#e.close(),this.#e=null),this}#n(){this.#e=Reflect.construct(WebSocket,[`${this.#r.protocol}//${this.#r.host}`]),this.#e.onopen=()=>{this.#t=0},this.#e.onmessage=e=>{try{let s=JSON.parse(e.data);this.next(s)}catch(s){console.error(s)}},this.#e.onerror=e=>{console.error(e)},this.#e.onclose=()=>{this.#t>=S||(this.#t+=1,setTimeout(()=>{this.#n()},this.#t*500))}}};async function w({to:t,command:e}){t==="browser"&&e==="reload"&&location.reload()}async function p({to:t,command:e,changed:s}){if(t==="browser"&&e==="refresh"){if(await Promise.all(s.map(async o=>new Promise(c=>{let r=document.querySelector(`[data-name="${o.name}"]`);if(!r||r.nodeName==="STYLE"){location.reload();return}let n=null,u=new URLSearchParams({version:Math.random()});if(r.nodeName==="LINK"){let i=new URL(r.href);n=r.cloneNode(),n.onload=()=>{r.remove(),c()},n.onerror=()=>{r.remove(),c()},n.href=new URL(`${i.origin}${i.pathname}?${u.toString()}`)}if(r.nodeName==="SCRIPT"){let i=new URL(r.src);n=document.createElement("script"),n.setAttribute("data-name",o.name),n.onload=()=>{r.remove(),c()},n.onerror=()=>{r.remove(),c()},n.src=new URL(`${i.origin}${i.pathname}?${u.toString()}`)}r.parentNode.insertBefore(n,r.nextSibling)}))),!s.some(o=>o.name.endsWith(".js")))return;let a=window.__merkur_dev__.widgets;window.__merkur_dev__.widgets=[],a.forEach(async o=>{let{props:c,state:r,$external:n,name:u,version:i,containerSelector:f,container:_,slot:b}=o,k={props:c,state:r,$external:n,name:u,version:i,containerSelector:f,container:_,slot:b},g=await window.__merkur__.create(k);await o.unmount(),await g.mount()})}}var{__merkur_dev__:h}=window,d=new m(h.merkurConfig.socketServer);h.webSocket=d;h.widgets=[];d.init();d.subscribe(w);d.subscribe(p);addEventListener("load",function(){let e=window.__merkur__.create;window.__merkur__.create=async function(...a){let o=await e(...a);return h.widgets.push(o),o}});})();
package/lib/index.cjs CHANGED
@@ -1,7 +1 @@
1
- "use strict";var Ht=Object.create;var J=Object.defineProperty;var zt=Object.getOwnPropertyDescriptor;var Yt=Object.getOwnPropertyNames;var Kt=Object.getPrototypeOf,Xt=Object.prototype.hasOwnProperty;var S=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports),Zt=(t,e)=>{for(var r in e)J(t,r,{get:e[r],enumerable:!0})},Ae=(t,e,r,s)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of Yt(e))!Xt.call(t,i)&&i!==r&&J(t,i,{get:()=>e[i],enumerable:!(s=zt(e,i))||s.enumerable});return t};var M=(t,e,r)=>(r=t!=null?Ht(Kt(t)):{},Ae(e||!t||!t.__esModule?J(r,"default",{value:t,enumerable:!0}):r,t)),Jt=t=>Ae(J({},"__esModule",{value:!0}),t);var $e=S((Ss,qe)=>{"use strict";var{Duplex:Qt}=require("stream");function Fe(t){t.emit("close")}function er(){!this.destroyed&&this._writableState.finished&&this.destroy()}function Ge(t){this.removeListener("error",Ge),this.destroy(),this.listenerCount("error")===0&&this.emit("error",t)}function tr(t,e){let r=!0,s=new Qt({...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(Fe,s);return}let o=!1;t.once("error",function(l){o=!0,n(l)}),t.once("close",function(){o||n(i),process.nextTick(Fe,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",er),s.on("error",Ge),s}qe.exports=tr});var C=S((xs,je)=>{"use strict";je.exports={BINARY_TYPES:["nodebuffer","arraybuffer","fragments"],EMPTY_BUFFER:Buffer.alloc(0),GUID:"258EAFA5-E914-47DA-95CA-C5AB0DC85B11",kForOnEventAttribute:Symbol("kIsForOnEventAttribute"),kListener:Symbol("kListener"),kStatusCode:Symbol("status-code"),kWebSocket:Symbol("websocket"),NOOP:()=>{}}});var G=S((Es,Q)=>{"use strict";var{EMPTY_BUFFER:rr}=C(),_e=Buffer[Symbol.species];function sr(t,e){if(t.length===0)return rr;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 _e(r.buffer,r.byteOffset,s):r}function Ve(t,e,r,s,i){for(let n=0;n<i;n++)r[s+n]=t[n]^e[n&3]}function He(t,e){for(let r=0;r<t.length;r++)t[r]^=e[r&3]}function ir(t){return t.length===t.buffer.byteLength?t.buffer:t.buffer.slice(t.byteOffset,t.byteOffset+t.length)}function pe(t){if(pe.readOnly=!0,Buffer.isBuffer(t))return t;let e;return t instanceof ArrayBuffer?e=new _e(t):ArrayBuffer.isView(t)?e=new _e(t.buffer,t.byteOffset,t.byteLength):(e=Buffer.from(t),pe.readOnly=!1),e}Q.exports={concat:sr,mask:Ve,toArrayBuffer:ir,toBuffer:pe,unmask:He};if(!process.env.WS_NO_BUFFER_UTIL)try{let t=require("bufferutil");Q.exports.mask=function(e,r,s,i,n){n<48?Ve(e,r,s,i,n):t.mask(e,r,s,i,n)},Q.exports.unmask=function(e,r){e.length<32?He(e,r):t.unmask(e,r)}}catch{}});var Ke=S((vs,Ye)=>{"use strict";var ze=Symbol("kDone"),me=Symbol("kRun"),ge=class{constructor(e){this[ze]=()=>{this.pending--,this[me]()},this.concurrency=e||1/0,this.jobs=[],this.pending=0}add(e){this.jobs.push(e),this[me]()}[me](){if(this.pending!==this.concurrency&&this.jobs.length){let e=this.jobs.shift();this.pending++,e(this[ze])}}};Ye.exports=ge});var j=S((bs,Qe)=>{"use strict";var q=require("zlib"),Xe=G(),nr=Ke(),{kStatusCode:Ze}=C(),or=Buffer[Symbol.species],ar=Buffer.from([0,0,255,255]),re=Symbol("permessage-deflate"),k=Symbol("total-length"),$=Symbol("callback"),N=Symbol("buffers"),te=Symbol("error"),ee,ye=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,!ee){let i=this._options.concurrencyLimit!==void 0?this._options.concurrencyLimit:10;ee=new nr(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[$];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){ee.add(i=>{this._decompress(e,r,(n,o)=>{i(),s(n,o)})})}compress(e,r,s){ee.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"?q.Z_DEFAULT_WINDOWBITS:this.params[n];this._inflate=q.createInflateRaw({...this._options.zlibInflateOptions,windowBits:o}),this._inflate[re]=this,this._inflate[k]=0,this._inflate[N]=[],this._inflate.on("error",lr),this._inflate.on("data",Je)}this._inflate[$]=s,this._inflate.write(e),r&&this._inflate.write(ar),this._inflate.flush(()=>{let n=this._inflate[te];if(n){this._inflate.close(),this._inflate=null,s(n);return}let o=Xe.concat(this._inflate[N],this._inflate[k]);this._inflate._readableState.endEmitted?(this._inflate.close(),this._inflate=null):(this._inflate[k]=0,this._inflate[N]=[],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"?q.Z_DEFAULT_WINDOWBITS:this.params[n];this._deflate=q.createDeflateRaw({...this._options.zlibDeflateOptions,windowBits:o}),this._deflate[k]=0,this._deflate[N]=[],this._deflate.on("data",fr)}this._deflate[$]=s,this._deflate.write(e),this._deflate.flush(q.Z_SYNC_FLUSH,()=>{if(!this._deflate)return;let n=Xe.concat(this._deflate[N],this._deflate[k]);r&&(n=new or(n.buffer,n.byteOffset,n.length-4)),this._deflate[$]=null,this._deflate[k]=0,this._deflate[N]=[],r&&this.params[`${i}_no_context_takeover`]&&this._deflate.reset(),s(null,n)})}};Qe.exports=ye;function fr(t){this[N].push(t),this[k]+=t.length}function Je(t){if(this[k]+=t.length,this[re]._maxPayload<1||this[k]<=this[re]._maxPayload){this[N].push(t);return}this[te]=new RangeError("Max payload size exceeded"),this[te].code="WS_ERR_UNSUPPORTED_MESSAGE_LENGTH",this[te][Ze]=1009,this.removeListener("data",Je),this.reset()}function lr(t){this[re]._inflate=null,t[Ze]=1007,this[$](t)}});var V=S((ws,se)=>{"use strict";var{isUtf8:et}=require("buffer"),cr=[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 hr(t){return t>=1e3&&t<=1014&&t!==1004&&t!==1005&&t!==1006||t>=3e3&&t<=4999}function Se(t){let e=t.length,r=0;for(;r<e;)if(!(t[r]&128))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}se.exports={isValidStatusCode:hr,isValidUTF8:Se,tokenChars:cr};if(et)se.exports.isValidUTF8=function(t){return t.length<24?Se(t):et(t)};else if(!process.env.WS_NO_UTF_8_VALIDATE)try{let t=require("utf-8-validate");se.exports.isValidUTF8=function(e){return e.length<32?Se(e):t(e)}}catch{}});var we=S((ks,at)=>{"use strict";var{Writable:ur}=require("stream"),tt=j(),{BINARY_TYPES:dr,EMPTY_BUFFER:rt,kStatusCode:_r,kWebSocket:pr}=C(),{concat:xe,toArrayBuffer:mr,unmask:gr}=G(),{isValidStatusCode:yr,isValidUTF8:st}=V(),ie=Buffer[Symbol.species],Sr=Promise.resolve(),Ee=typeof queueMicrotask=="function"?queueMicrotask:xr,E=0,it=1,nt=2,ot=3,ve=4,ne=5,oe=6,be=class extends ur{constructor(e={}){super(),this._allowSynchronousEvents=!!e.allowSynchronousEvents,this._binaryType=e.binaryType||dr[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=E}_write(e,r,s){if(this._opcode===8&&this._state==E)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 ie(s.buffer,s.byteOffset+e,s.length-e),new ie(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 ie(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 E:this.getInfo(e);break;case it:this.getPayloadLength16(e);break;case nt:this.getPayloadLength64(e);break;case ot:this.getMask();break;case ve:this.getData(e);break;case ne:case oe: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){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[tt.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=it:this._payloadLength===127?this._state=nt: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=ot:this._state=ve}getMask(){if(this._bufferedBytes<4){this._loop=!1;return}this._mask=this.consume(4),this._state=ve}getData(e){let r=rt;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]&&gr(r,this._mask)}if(this._opcode>7){this.controlMessage(r,e);return}if(this._compressed){this._state=ne,this.decompress(r,e);return}r.length&&(this._messageLength=this._totalPayloadLength,this._fragments.push(r)),this.dataMessage(e)}decompress(e,r){this._extensions[tt.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===E&&this.startLoop(r)})}dataMessage(e){if(!this._fin){this._state=E;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=xe(s,r):this._binaryType==="arraybuffer"?i=mr(xe(s,r)):i=s,this._state===ne||this._allowSynchronousEvents?(this.emit("message",i,!0),this._state=E):(this._state=oe,Ee(()=>{this.emit("message",i,!0),this._state=E,this.startLoop(e)}))}else{let i=xe(s,r);if(!this._skipUTF8Validation&&!st(i)){let n=this.createError(Error,"invalid UTF-8 sequence",!0,1007,"WS_ERR_INVALID_UTF8");e(n);return}this._state===ne||this._allowSynchronousEvents?(this.emit("message",i,!1),this._state=E):(this._state=oe,Ee(()=>{this.emit("message",i,!1),this._state=E,this.startLoop(e)}))}}controlMessage(e,r){if(this._opcode===8){if(e.length===0)this._loop=!1,this.emit("conclude",1005,rt),this.end();else{let s=e.readUInt16BE(0);if(!yr(s)){let n=this.createError(RangeError,`invalid status code ${s}`,!0,1002,"WS_ERR_INVALID_CLOSE_CODE");r(n);return}let i=new ie(e.buffer,e.byteOffset+2,e.length-2);if(!this._skipUTF8Validation&&!st(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=E;return}this._allowSynchronousEvents?(this.emit(this._opcode===9?"ping":"pong",e),this._state=E):(this._state=oe,Ee(()=>{this.emit(this._opcode===9?"ping":"pong",e),this._state=E,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[_r]=i,o}};at.exports=be;function xr(t){Sr.then(t).catch(vr)}function Er(t){throw t}function vr(t){process.nextTick(Er,t)}});var Oe=S((Ts,ct)=>{"use strict";var{Duplex:Os}=require("stream"),{randomFillSync:br}=require("crypto"),ft=j(),{EMPTY_BUFFER:wr}=C(),{isValidStatusCode:kr}=V(),{mask:lt,toBuffer:D}=G(),v=Symbol("kByteLength"),Or=Buffer.alloc(4),ke=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._deflating=!1,this._queue=[]}static frame(e,r){let s,i=!1,n=2,o=!1;r.mask&&(s=r.maskBuffer||Or,r.generateMask?r.generateMask(s):br(s,0,4),o=(s[0]|s[1]|s[2]|s[3])===0,n=6);let f;typeof e=="string"?(!r.mask||o)&&r[v]!==void 0?f=r[v]:(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?(lt(e,s,a,n,f),[a]):(lt(e,s,e,0,f),[a,e])):[a,e]}close(e,r,s,i){let n;if(e===void 0)n=wr;else{if(typeof e!="number"||!kr(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={[v]:n.length,fin:!0,generateMask:this._generateMask,mask:s,maskBuffer:this._maskBuffer,opcode:8,readOnly:!1,rsv1:!1};this._deflating?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=D(e),i=e.length,n=D.readOnly),i>125)throw new RangeError("The data size must not be greater than 125 bytes");let o={[v]:i,fin:!0,generateMask:this._generateMask,mask:r,maskBuffer:this._maskBuffer,opcode:9,readOnly:n,rsv1:!1};this._deflating?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=D(e),i=e.length,n=D.readOnly),i>125)throw new RangeError("The data size must not be greater than 125 bytes");let o={[v]:i,fin:!0,generateMask:this._generateMask,mask:r,maskBuffer:this._maskBuffer,opcode:10,readOnly:n,rsv1:!1};this._deflating?this.enqueue([this.dispatch,e,!1,o,s]):this.sendFrame(t.frame(e,o),s)}send(e,r,s){let i=this._extensions[ft.extensionName],n=r.binary?2:1,o=r.compress,f,l;if(typeof e=="string"?(f=Buffer.byteLength(e),l=!1):(e=D(e),f=e.length,l=D.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),i){let a={[v]:f,fin:r.fin,generateMask:this._generateMask,mask:r.mask,maskBuffer:this._maskBuffer,opcode:n,readOnly:l,rsv1:o};this._deflating?this.enqueue([this.dispatch,e,this._compress,a,s]):this.dispatch(e,this._compress,a,s)}else this.sendFrame(t.frame(e,{[v]:f,fin:r.fin,generateMask:this._generateMask,mask:r.mask,maskBuffer:this._maskBuffer,opcode:n,readOnly:l,rsv1:!1}),s)}dispatch(e,r,s,i){if(!r){this.sendFrame(t.frame(e,s),i);return}let n=this._extensions[ft.extensionName];this._bufferedBytes+=s[v],this._deflating=!0,n.compress(e,s.fin,(o,f)=>{if(this._socket.destroyed){let l=new Error("The socket was closed while data was being compressed");typeof i=="function"&&i(l);for(let a=0;a<this._queue.length;a++){let h=this._queue[a],c=h[h.length-1];typeof c=="function"&&c(l)}return}this._bufferedBytes-=s[v],this._deflating=!1,s.readOnly=!1,this.sendFrame(t.frame(f,s),i),this.dequeue()})}dequeue(){for(;!this._deflating&&this._queue.length;){let e=this._queue.shift();this._bufferedBytes-=e[3][v],Reflect.apply(e[0],this,e.slice(1))}}enqueue(e){this._bufferedBytes+=e[3][v],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)}};ct.exports=ke});var St=S((Cs,yt)=>{"use strict";var{kForOnEventAttribute:H,kListener:Te}=C(),ht=Symbol("kCode"),ut=Symbol("kData"),dt=Symbol("kError"),_t=Symbol("kMessage"),pt=Symbol("kReason"),W=Symbol("kTarget"),mt=Symbol("kType"),gt=Symbol("kWasClean"),O=class{constructor(e){this[W]=null,this[mt]=e}get target(){return this[W]}get type(){return this[mt]}};Object.defineProperty(O.prototype,"target",{enumerable:!0});Object.defineProperty(O.prototype,"type",{enumerable:!0});var R=class extends O{constructor(e,r={}){super(e),this[ht]=r.code===void 0?0:r.code,this[pt]=r.reason===void 0?"":r.reason,this[gt]=r.wasClean===void 0?!1:r.wasClean}get code(){return this[ht]}get reason(){return this[pt]}get wasClean(){return this[gt]}};Object.defineProperty(R.prototype,"code",{enumerable:!0});Object.defineProperty(R.prototype,"reason",{enumerable:!0});Object.defineProperty(R.prototype,"wasClean",{enumerable:!0});var A=class extends O{constructor(e,r={}){super(e),this[dt]=r.error===void 0?null:r.error,this[_t]=r.message===void 0?"":r.message}get error(){return this[dt]}get message(){return this[_t]}};Object.defineProperty(A.prototype,"error",{enumerable:!0});Object.defineProperty(A.prototype,"message",{enumerable:!0});var z=class extends O{constructor(e,r={}){super(e),this[ut]=r.data===void 0?null:r.data}get data(){return this[ut]}};Object.defineProperty(z.prototype,"data",{enumerable:!0});var Tr={addEventListener(t,e,r={}){for(let i of this.listeners(t))if(!r[H]&&i[Te]===e&&!i[H])return;let s;if(t==="message")s=function(n,o){let f=new z("message",{data:o?n:n.toString()});f[W]=this,ae(e,this,f)};else if(t==="close")s=function(n,o){let f=new R("close",{code:n,reason:o.toString(),wasClean:this._closeFrameReceived&&this._closeFrameSent});f[W]=this,ae(e,this,f)};else if(t==="error")s=function(n){let o=new A("error",{error:n,message:n.message});o[W]=this,ae(e,this,o)};else if(t==="open")s=function(){let n=new O("open");n[W]=this,ae(e,this,n)};else return;s[H]=!!r[H],s[Te]=e,r.once?this.once(t,s):this.on(t,s)},removeEventListener(t,e){for(let r of this.listeners(t))if(r[Te]===e&&!r[H]){this.removeListener(t,r);break}}};yt.exports={CloseEvent:R,ErrorEvent:A,Event:O,EventTarget:Tr,MessageEvent:z};function ae(t,e,r){typeof t=="object"&&t.handleEvent?t.handleEvent.call(t,r):t.call(e,r)}});var Ce=S((Ns,xt)=>{"use strict";var{tokenChars:Y}=V();function w(t,e,r){t[e]===void 0?t[e]=[r]:t[e].push(r)}function Cr(t){let e=Object.create(null),r=Object.create(null),s=!1,i=!1,n=!1,o,f,l=-1,a=-1,h=-1,c=0;for(;c<t.length;c++)if(a=t.charCodeAt(c),o===void 0)if(h===-1&&Y[a]===1)l===-1&&(l=c);else if(c!==0&&(a===32||a===9))h===-1&&l!==-1&&(h=c);else if(a===59||a===44){if(l===-1)throw new SyntaxError(`Unexpected character at index ${c}`);h===-1&&(h=c);let g=t.slice(l,h);a===44?(w(e,g,r),r=Object.create(null)):o=g,l=h=-1}else throw new SyntaxError(`Unexpected character at index ${c}`);else if(f===void 0)if(h===-1&&Y[a]===1)l===-1&&(l=c);else if(a===32||a===9)h===-1&&l!==-1&&(h=c);else if(a===59||a===44){if(l===-1)throw new SyntaxError(`Unexpected character at index ${c}`);h===-1&&(h=c),w(r,t.slice(l,h),!0),a===44&&(w(e,o,r),r=Object.create(null),o=void 0),l=h=-1}else if(a===61&&l!==-1&&h===-1)f=t.slice(l,c),l=h=-1;else throw new SyntaxError(`Unexpected character at index ${c}`);else if(i){if(Y[a]!==1)throw new SyntaxError(`Unexpected character at index ${c}`);l===-1?l=c:s||(s=!0),i=!1}else if(n)if(Y[a]===1)l===-1&&(l=c);else if(a===34&&l!==-1)n=!1,h=c;else if(a===92)i=!0;else throw new SyntaxError(`Unexpected character at index ${c}`);else if(a===34&&t.charCodeAt(c-1)===61)n=!0;else if(h===-1&&Y[a]===1)l===-1&&(l=c);else if(l!==-1&&(a===32||a===9))h===-1&&(h=c);else if(a===59||a===44){if(l===-1)throw new SyntaxError(`Unexpected character at index ${c}`);h===-1&&(h=c);let g=t.slice(l,h);s&&(g=g.replace(/\\/g,""),s=!1),w(r,f,g),a===44&&(w(e,o,r),r=Object.create(null),o=void 0),f=void 0,l=h=-1}else throw new SyntaxError(`Unexpected character at index ${c}`);if(l===-1||n||a===32||a===9)throw new SyntaxError("Unexpected end of input");h===-1&&(h=c);let p=t.slice(l,h);return o===void 0?w(e,p,r):(f===void 0?w(r,p,!0):s?w(r,f,p.replace(/\\/g,"")):w(r,f,p),w(e,o,r)),e}function Nr(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(", ")}xt.exports={format:Nr,parse:Cr}});var Ue=S((Rs,Pt)=>{"use strict";var Lr=require("events"),Pr=require("https"),Rr=require("http"),bt=require("net"),Ur=require("tls"),{randomBytes:Ir,createHash:Br}=require("crypto"),{Duplex:Ls,Readable:Ps}=require("stream"),{URL:Ne}=require("url"),L=j(),Mr=we(),Dr=Oe(),{BINARY_TYPES:Et,EMPTY_BUFFER:fe,GUID:Wr,kForOnEventAttribute:Le,kListener:Ar,kStatusCode:Fr,kWebSocket:m,NOOP:wt}=C(),{EventTarget:{addEventListener:Gr,removeEventListener:qr}}=St(),{format:$r,parse:jr}=Ce(),{toBuffer:Vr}=G(),Hr=30*1e3,kt=Symbol("kAborted"),Pe=[8,13],T=["CONNECTING","OPEN","CLOSING","CLOSED"],zr=/^[!#$%&'*+\-.0-9A-Z^_`|a-z~]+$/,d=class t extends Lr{constructor(e,r,s){super(),this._binaryType=Et[0],this._closeCode=1006,this._closeFrameReceived=!1,this._closeFrameSent=!1,this._closeMessage=fe,this._closeTimer=null,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]),Ot(this,e,r,s)):(this._autoPong=s.autoPong,this._isServer=!0)}get binaryType(){return this._binaryType}set binaryType(e){Et.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 Mr({allowSynchronousEvents:s.allowSynchronousEvents,binaryType:this.binaryType,extensions:this._extensions,isServer:this._isServer,maxPayload:s.maxPayload,skipUTF8Validation:s.skipUTF8Validation});this._sender=new Dr(e,this._extensions,s.generateMask),this._receiver=i,this._socket=e,i[m]=this,e[m]=this,i.on("conclude",Xr),i.on("drain",Zr),i.on("error",Jr),i.on("message",Qr),i.on("ping",es),i.on("pong",ts),e.setTimeout&&e.setTimeout(0),e.setNoDelay&&e.setNoDelay(),r.length>0&&e.unshift(r),e.on("close",Ct),e.on("data",ce),e.on("end",Nt),e.on("error",Lt),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[L.extensionName]&&this._extensions[L.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){x(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())}),this._closeTimer=setTimeout(this._socket.destroy.bind(this._socket),Hr)}}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){Re(this,e,s);return}r===void 0&&(r=!this._isServer),this._sender.ping(e||fe,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){Re(this,e,s);return}r===void 0&&(r=!this._isServer),this._sender.pong(e||fe,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){Re(this,e,s);return}let i={binary:typeof e!="string",mask:!this._isServer,compress:!0,fin:!0,...r};this._extensions[L.extensionName]||(i.compress=!1),this._sender.send(e||fe,i,s)}terminate(){if(this.readyState!==t.CLOSED){if(this.readyState===t.CONNECTING){x(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:T.indexOf("CONNECTING")});Object.defineProperty(d.prototype,"CONNECTING",{enumerable:!0,value:T.indexOf("CONNECTING")});Object.defineProperty(d,"OPEN",{enumerable:!0,value:T.indexOf("OPEN")});Object.defineProperty(d.prototype,"OPEN",{enumerable:!0,value:T.indexOf("OPEN")});Object.defineProperty(d,"CLOSING",{enumerable:!0,value:T.indexOf("CLOSING")});Object.defineProperty(d.prototype,"CLOSING",{enumerable:!0,value:T.indexOf("CLOSING")});Object.defineProperty(d,"CLOSED",{enumerable:!0,value:T.indexOf("CLOSED")});Object.defineProperty(d.prototype,"CLOSED",{enumerable:!0,value:T.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[Le])return e[Ar];return null},set(e){for(let r of this.listeners(t))if(r[Le]){this.removeListener(t,r);break}typeof e=="function"&&this.addEventListener(t,e,{[Le]:!0})}})});d.prototype.addEventListener=Gr;d.prototype.removeEventListener=qr;Pt.exports=d;function Ot(t,e,r,s){let i={allowSynchronousEvents:!1,autoPong:!0,protocolVersion:Pe[1],maxPayload:104857600,skipUTF8Validation:!1,perMessageDeflate:!0,followRedirects:!1,maxRedirects:10,...s,createConnection:void 0,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,!Pe.includes(i.protocolVersion))throw new RangeError(`Unsupported protocol version: ${i.protocolVersion} (supported versions: ${Pe.join(", ")})`);let n;if(e instanceof Ne)n=e;else try{n=new Ne(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;le(t,u);return}let a=o?443:80,h=Ir(16).toString("base64"),c=o?Pr.request:Rr.request,p=new Set,g;if(i.createConnection=o?Kr:Yr,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":h,Connection:"Upgrade",Upgrade:"websocket"},i.path=n.pathname+n.search,i.timeout=i.handshakeTimeout,i.perMessageDeflate&&(g=new L(i.perMessageDeflate!==!0?i.perMessageDeflate:{},!1,i.maxPayload),i.headers["Sec-WebSocket-Extensions"]=$r({[L.extensionName]:g.offer()})),r.length){for(let u of r){if(typeof u!="string"||!zr.test(u)||p.has(u))throw new SyntaxError("An invalid or duplicated subprotocol was specified");p.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 _;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[y,B]of Object.entries(u))s.headers[y.toLowerCase()]=B}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")),_=t._req=c(i),t._redirects&&t.emit("redirect",t.url,_)}else _=t._req=c(i);i.timeout&&_.on("timeout",()=>{x(t,_,"Opening handshake has timed out")}),_.on("error",u=>{_===null||_[kt]||(_=t._req=null,le(t,u))}),_.on("response",u=>{let y=u.headers.location,B=u.statusCode;if(y&&i.followRedirects&&B>=300&&B<400){if(++t._redirects>i.maxRedirects){x(t,_,"Maximum redirects exceeded");return}_.abort();let Z;try{Z=new Ne(y,e)}catch{let P=new SyntaxError(`Invalid URL: ${y}`);le(t,P);return}Ot(t,Z,r,s)}else t.emit("unexpected-response",_,u)||x(t,_,`Unexpected server response: ${u.statusCode}`)}),_.on("upgrade",(u,y,B)=>{if(t.emit("upgrade",u),t.readyState!==d.CONNECTING)return;if(_=t._req=null,u.headers.upgrade.toLowerCase()!=="websocket"){x(t,y,"Invalid Upgrade header");return}let Z=Br("sha1").update(h+Wr).digest("base64");if(u.headers["sec-websocket-accept"]!==Z){x(t,y,"Invalid Sec-WebSocket-Accept header");return}let F=u.headers["sec-websocket-protocol"],P;if(F!==void 0?p.size?p.has(F)||(P="Server sent an invalid subprotocol"):P="Server sent a subprotocol but none was requested":p.size&&(P="Server sent no subprotocol"),P){x(t,y,P);return}F&&(t._protocol=F);let De=u.headers["sec-websocket-extensions"];if(De!==void 0){if(!g){x(t,y,"Server sent a Sec-WebSocket-Extensions header but no extension was requested");return}let ue;try{ue=jr(De)}catch{x(t,y,"Invalid Sec-WebSocket-Extensions header");return}let We=Object.keys(ue);if(We.length!==1||We[0]!==L.extensionName){x(t,y,"Server indicated an extension that was not requested");return}try{g.accept(ue[L.extensionName])}catch{x(t,y,"Invalid Sec-WebSocket-Extensions header");return}t._extensions[L.extensionName]=g}t.setSocket(y,B,{allowSynchronousEvents:i.allowSynchronousEvents,generateMask:i.generateMask,maxPayload:i.maxPayload,skipUTF8Validation:i.skipUTF8Validation})}),i.finishRequest?i.finishRequest(_,t):_.end()}function le(t,e){t._readyState=d.CLOSING,t.emit("error",e),t.emitClose()}function Yr(t){return t.path=t.socketPath,bt.connect(t)}function Kr(t){return t.path=void 0,!t.servername&&t.servername!==""&&(t.servername=bt.isIP(t.host)?"":t.host),Ur.connect(t)}function x(t,e,r){t._readyState=d.CLOSING;let s=new Error(r);Error.captureStackTrace(s,x),e.setHeader?(e[kt]=!0,e.abort(),e.socket&&!e.socket.destroyed&&e.socket.destroy(),process.nextTick(le,t,s)):(e.destroy(s),e.once("error",t.emit.bind(t,"error")),e.once("close",t.emitClose.bind(t)))}function Re(t,e,r){if(e){let s=Vr(e).length;t._socket?t._sender._bufferedBytes+=s:t._bufferedAmount+=s}if(r){let s=new Error(`WebSocket is not open: readyState ${t.readyState} (${T[t.readyState]})`);process.nextTick(r,s)}}function Xr(t,e){let r=this[m];r._closeFrameReceived=!0,r._closeMessage=e,r._closeCode=t,r._socket[m]!==void 0&&(r._socket.removeListener("data",ce),process.nextTick(Tt,r._socket),t===1005?r.close():r.close(t,e))}function Zr(){let t=this[m];t.isPaused||t._socket.resume()}function Jr(t){let e=this[m];e._socket[m]!==void 0&&(e._socket.removeListener("data",ce),process.nextTick(Tt,e._socket),e.close(t[Fr])),e.emit("error",t)}function vt(){this[m].emitClose()}function Qr(t,e){this[m].emit("message",t,e)}function es(t){let e=this[m];e._autoPong&&e.pong(t,!this._isServer,wt),e.emit("ping",t)}function ts(t){this[m].emit("pong",t)}function Tt(t){t.resume()}function Ct(){let t=this[m];this.removeListener("close",Ct),this.removeListener("data",ce),this.removeListener("end",Nt),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[m]=void 0,clearTimeout(t._closeTimer),t._receiver._writableState.finished||t._receiver._writableState.errorEmitted?t.emitClose():(t._receiver.on("error",vt),t._receiver.on("finish",vt))}function ce(t){this[m]._receiver.write(t)||this.pause()}function Nt(){let t=this[m];t._readyState=d.CLOSING,t._receiver.end(),this.end()}function Lt(){let t=this[m];this.removeListener("error",Lt),this.on("error",wt),t&&(t._readyState=d.CLOSING,this.destroy())}});var Ut=S((Us,Rt)=>{"use strict";var{tokenChars:rs}=V();function ss(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&&rs[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}Rt.exports={parse:ss}});var Ft=S((Bs,At)=>{"use strict";var is=require("events"),he=require("http"),{Duplex:Is}=require("stream"),{createHash:ns}=require("crypto"),It=Ce(),U=j(),os=Ut(),as=Ue(),{GUID:fs,kWebSocket:ls}=C(),cs=/^[+/0-9A-Za-z]{22}==$/,Bt=0,Mt=1,Wt=2,Ie=class extends is{constructor(e,r){if(super(),e={allowSynchronousEvents:!1,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:as,...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=he.createServer((s,i)=>{let n=he.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=hs(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=Bt}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===Wt){e&&this.once("close",()=>{e(new Error("The server is not running"))}),process.nextTick(K,this);return}if(e&&this.once("close",e),this._state!==Mt)if(this._state=Mt,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(K,this):process.nextTick(K,this);else{let r=this._server;this._removeListeners(),this._removeListeners=this._server=null,r.close(()=>{K(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",Dt);let n=e.headers["sec-websocket-key"],o=+e.headers["sec-websocket-version"];if(e.method!=="GET"){I(this,e,r,405,"Invalid HTTP method");return}if(e.headers.upgrade.toLowerCase()!=="websocket"){I(this,e,r,400,"Invalid Upgrade header");return}if(!n||!cs.test(n)){I(this,e,r,400,"Missing or invalid Sec-WebSocket-Key header");return}if(o!==8&&o!==13){I(this,e,r,400,"Missing or invalid Sec-WebSocket-Version header");return}if(!this.shouldHandle(e)){X(r,400);return}let f=e.headers["sec-websocket-protocol"],l=new Set;if(f!==void 0)try{l=os.parse(f)}catch{I(this,e,r,400,"Invalid Sec-WebSocket-Protocol header");return}let a=e.headers["sec-websocket-extensions"],h={};if(this.options.perMessageDeflate&&a!==void 0){let c=new U(this.options.perMessageDeflate,!0,this.options.maxPayload);try{let p=It.parse(a);p[U.extensionName]&&(c.accept(p[U.extensionName]),h[U.extensionName]=c)}catch{I(this,e,r,400,"Invalid or unacceptable Sec-WebSocket-Extensions header");return}}if(this.options.verifyClient){let c={origin:e.headers[`${o===8?"sec-websocket-origin":"origin"}`],secure:!!(e.socket.authorized||e.socket.encrypted),req:e};if(this.options.verifyClient.length===2){this.options.verifyClient(c,(p,g,_,u)=>{if(!p)return X(r,g||401,_,u);this.completeUpgrade(h,n,l,e,r,s,i)});return}if(!this.options.verifyClient(c))return X(r,401)}this.completeUpgrade(h,n,l,e,r,s,i)}completeUpgrade(e,r,s,i,n,o,f){if(!n.readable||!n.writable)return n.destroy();if(n[ls])throw new Error("server.handleUpgrade() was called more than once with the same socket, possibly due to a misconfiguration");if(this._state>Bt)return X(n,503);let a=["HTTP/1.1 101 Switching Protocols","Upgrade: websocket","Connection: Upgrade",`Sec-WebSocket-Accept: ${ns("sha1").update(r+fs).digest("base64")}`],h=new this.options.WebSocket(null,void 0,this.options);if(s.size){let c=this.options.handleProtocols?this.options.handleProtocols(s,i):s.values().next().value;c&&(a.push(`Sec-WebSocket-Protocol: ${c}`),h._protocol=c)}if(e[U.extensionName]){let c=e[U.extensionName].params,p=It.format({[U.extensionName]:[c]});a.push(`Sec-WebSocket-Extensions: ${p}`),h._extensions=e}this.emit("headers",a,i),n.write(a.concat(`\r
2
- `).join(`\r
3
- `)),n.removeListener("error",Dt),h.setSocket(n,o,{allowSynchronousEvents:this.options.allowSynchronousEvents,maxPayload:this.options.maxPayload,skipUTF8Validation:this.options.skipUTF8Validation}),this.clients&&(this.clients.add(h),h.on("close",()=>{this.clients.delete(h),this._shouldEmitClose&&!this.clients.size&&process.nextTick(K,this)})),f(h,i)}};At.exports=Ie;function hs(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 K(t){t._state=Wt,t.emit("close")}function Dt(){this.destroy()}function X(t,e,r,s){r=r||he.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} ${he.STATUS_CODES[e]}\r
4
- `+Object.keys(s).map(i=>`${i}: ${s[i]}`).join(`\r
5
- `)+`\r
6
- \r
7
- `+r)}function I(t,e,r,s,i){if(t.listenerCount("wsClientError")){let n=new Error(i);Error.captureStackTrace(n,I),t.emit("wsClientError",n,r,e)}else X(r,s,i)}});var gs={};Zt(gs,{autoReload:()=>ms,resolveConfig:()=>ps});module.exports=Jt(gs);var b=M(require("process"),1);var us=M($e(),1),ds=M(we(),1),_s=M(Oe(),1),Gt=M(Ue(),1),qt=M(Ft(),1);var $t=Gt.default;function jt({merkurConfig:t}){let{protocol:e,host:r}=t.socketServer;return new $t(`${e}//${r}`)}var Be,Me;function ps(){return b.default.env.CLI_CONFIG&&!Be&&(Be=JSON.parse(b.default.env.CLI_CONFIG)),b.default.env.MERKUR_CONFIG&&!Me&&(Me=JSON.parse(b.default.env.MERKUR_CONFIG)),{merkurConfig:Me,cliConfig:Be}}function ms({merkurConfig:t,cliConfig:e}){function r(){let s=jt({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=()=>b.default.exit(0);b.default.on("SIGINT",s),b.default.on("SIGQUIT",s),b.default.on("SIGTERM",s),b.default.on("uncaughtException",()=>{r()}),b.default.on("unhandledRejection",()=>{r()})}}0&&(module.exports={autoReload,resolveConfig});
1
+ "use strict";
package/lib/index.mjs CHANGED
@@ -1,7 +0,0 @@
1
- var Ht=Object.create;var Ae=Object.defineProperty;var zt=Object.getOwnPropertyDescriptor;var Yt=Object.getOwnPropertyNames;var Kt=Object.getPrototypeOf,Xt=Object.prototype.hasOwnProperty;var p=(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 Zt=(t,e,r,s)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of Yt(e))!Xt.call(t,i)&&i!==r&&Ae(t,i,{get:()=>e[i],enumerable:!(s=zt(e,i))||s.enumerable});return t};var G=(t,e,r)=>(r=t!=null?Ht(Kt(t)):{},Zt(e||!t||!t.__esModule?Ae(r,"default",{value:t,enumerable:!0}):r,t));var $e=x((ps,qe)=>{"use strict";var{Duplex:Jt}=p("stream");function Fe(t){t.emit("close")}function Qt(){!this.destroyed&&this._writableState.finished&&this.destroy()}function Ge(t){this.removeListener("error",Ge),this.destroy(),this.listenerCount("error")===0&&this.emit("error",t)}function er(t,e){let r=!0,s=new Jt({...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(Fe,s);return}let o=!1;t.once("error",function(l){o=!0,n(l)}),t.once("close",function(){o||n(i),process.nextTick(Fe,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",Qt),s.on("error",Ge),s}qe.exports=er});var N=x((ms,je)=>{"use strict";je.exports={BINARY_TYPES:["nodebuffer","arraybuffer","fragments"],EMPTY_BUFFER:Buffer.alloc(0),GUID:"258EAFA5-E914-47DA-95CA-C5AB0DC85B11",kForOnEventAttribute:Symbol("kIsForOnEventAttribute"),kListener:Symbol("kListener"),kStatusCode:Symbol("status-code"),kWebSocket:Symbol("websocket"),NOOP:()=>{}}});var q=x((gs,Q)=>{"use strict";var{EMPTY_BUFFER:tr}=N(),_e=Buffer[Symbol.species];function rr(t,e){if(t.length===0)return tr;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 _e(r.buffer,r.byteOffset,s):r}function Ve(t,e,r,s,i){for(let n=0;n<i;n++)r[s+n]=t[n]^e[n&3]}function He(t,e){for(let r=0;r<t.length;r++)t[r]^=e[r&3]}function sr(t){return t.length===t.buffer.byteLength?t.buffer:t.buffer.slice(t.byteOffset,t.byteOffset+t.length)}function pe(t){if(pe.readOnly=!0,Buffer.isBuffer(t))return t;let e;return t instanceof ArrayBuffer?e=new _e(t):ArrayBuffer.isView(t)?e=new _e(t.buffer,t.byteOffset,t.byteLength):(e=Buffer.from(t),pe.readOnly=!1),e}Q.exports={concat:rr,mask:Ve,toArrayBuffer:sr,toBuffer:pe,unmask:He};if(!process.env.WS_NO_BUFFER_UTIL)try{let t=p("bufferutil");Q.exports.mask=function(e,r,s,i,n){n<48?Ve(e,r,s,i,n):t.mask(e,r,s,i,n)},Q.exports.unmask=function(e,r){e.length<32?He(e,r):t.unmask(e,r)}}catch{}});var Ke=x((ys,Ye)=>{"use strict";var ze=Symbol("kDone"),me=Symbol("kRun"),ge=class{constructor(e){this[ze]=()=>{this.pending--,this[me]()},this.concurrency=e||1/0,this.jobs=[],this.pending=0}add(e){this.jobs.push(e),this[me]()}[me](){if(this.pending!==this.concurrency&&this.jobs.length){let e=this.jobs.shift();this.pending++,e(this[ze])}}};Ye.exports=ge});var V=x((Ss,Qe)=>{"use strict";var $=p("zlib"),Xe=q(),ir=Ke(),{kStatusCode:Ze}=N(),nr=Buffer[Symbol.species],or=Buffer.from([0,0,255,255]),re=Symbol("permessage-deflate"),O=Symbol("total-length"),j=Symbol("callback"),L=Symbol("buffers"),te=Symbol("error"),ee,ye=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,!ee){let i=this._options.concurrencyLimit!==void 0?this._options.concurrencyLimit:10;ee=new ir(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[j];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){ee.add(i=>{this._decompress(e,r,(n,o)=>{i(),s(n,o)})})}compress(e,r,s){ee.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_DEFAULT_WINDOWBITS:this.params[n];this._inflate=$.createInflateRaw({...this._options.zlibInflateOptions,windowBits:o}),this._inflate[re]=this,this._inflate[O]=0,this._inflate[L]=[],this._inflate.on("error",fr),this._inflate.on("data",Je)}this._inflate[j]=s,this._inflate.write(e),r&&this._inflate.write(or),this._inflate.flush(()=>{let n=this._inflate[te];if(n){this._inflate.close(),this._inflate=null,s(n);return}let o=Xe.concat(this._inflate[L],this._inflate[O]);this._inflate._readableState.endEmitted?(this._inflate.close(),this._inflate=null):(this._inflate[O]=0,this._inflate[L]=[],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_DEFAULT_WINDOWBITS:this.params[n];this._deflate=$.createDeflateRaw({...this._options.zlibDeflateOptions,windowBits:o}),this._deflate[O]=0,this._deflate[L]=[],this._deflate.on("data",ar)}this._deflate[j]=s,this._deflate.write(e),this._deflate.flush($.Z_SYNC_FLUSH,()=>{if(!this._deflate)return;let n=Xe.concat(this._deflate[L],this._deflate[O]);r&&(n=new nr(n.buffer,n.byteOffset,n.length-4)),this._deflate[j]=null,this._deflate[O]=0,this._deflate[L]=[],r&&this.params[`${i}_no_context_takeover`]&&this._deflate.reset(),s(null,n)})}};Qe.exports=ye;function ar(t){this[L].push(t),this[O]+=t.length}function Je(t){if(this[O]+=t.length,this[re]._maxPayload<1||this[O]<=this[re]._maxPayload){this[L].push(t);return}this[te]=new RangeError("Max payload size exceeded"),this[te].code="WS_ERR_UNSUPPORTED_MESSAGE_LENGTH",this[te][Ze]=1009,this.removeListener("data",Je),this.reset()}function fr(t){this[re]._inflate=null,t[Ze]=1007,this[j](t)}});var H=x((xs,se)=>{"use strict";var{isUtf8:et}=p("buffer"),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 cr(t){return t>=1e3&&t<=1014&&t!==1004&&t!==1005&&t!==1006||t>=3e3&&t<=4999}function Se(t){let e=t.length,r=0;for(;r<e;)if(!(t[r]&128))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}se.exports={isValidStatusCode:cr,isValidUTF8:Se,tokenChars:lr};if(et)se.exports.isValidUTF8=function(t){return t.length<24?Se(t):et(t)};else if(!process.env.WS_NO_UTF_8_VALIDATE)try{let t=p("utf-8-validate");se.exports.isValidUTF8=function(e){return e.length<32?Se(e):t(e)}}catch{}});var we=x((Es,at)=>{"use strict";var{Writable:hr}=p("stream"),tt=V(),{BINARY_TYPES:ur,EMPTY_BUFFER:rt,kStatusCode:dr,kWebSocket:_r}=N(),{concat:xe,toArrayBuffer:pr,unmask:mr}=q(),{isValidStatusCode:gr,isValidUTF8:st}=H(),ie=Buffer[Symbol.species],yr=Promise.resolve(),Ee=typeof queueMicrotask=="function"?queueMicrotask:Sr,v=0,it=1,nt=2,ot=3,ve=4,ne=5,oe=6,be=class extends hr{constructor(e={}){super(),this._allowSynchronousEvents=!!e.allowSynchronousEvents,this._binaryType=e.binaryType||ur[0],this._extensions=e.extensions||{},this._isServer=!!e.isServer,this._maxPayload=e.maxPayload|0,this._skipUTF8Validation=!!e.skipUTF8Validation,this[_r]=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 ie(s.buffer,s.byteOffset+e,s.length-e),new ie(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 ie(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 it:this.getPayloadLength16(e);break;case nt:this.getPayloadLength64(e);break;case ot:this.getMask();break;case ve:this.getData(e);break;case ne:case oe: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){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[tt.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=it:this._payloadLength===127?this._state=nt: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=ot:this._state=ve}getMask(){if(this._bufferedBytes<4){this._loop=!1;return}this._mask=this.consume(4),this._state=ve}getData(e){let r=rt;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]&&mr(r,this._mask)}if(this._opcode>7){this.controlMessage(r,e);return}if(this._compressed){this._state=ne,this.decompress(r,e);return}r.length&&(this._messageLength=this._totalPayloadLength,this._fragments.push(r)),this.dataMessage(e)}decompress(e,r){this._extensions[tt.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=xe(s,r):this._binaryType==="arraybuffer"?i=pr(xe(s,r)):i=s,this._state===ne||this._allowSynchronousEvents?(this.emit("message",i,!0),this._state=v):(this._state=oe,Ee(()=>{this.emit("message",i,!0),this._state=v,this.startLoop(e)}))}else{let i=xe(s,r);if(!this._skipUTF8Validation&&!st(i)){let n=this.createError(Error,"invalid UTF-8 sequence",!0,1007,"WS_ERR_INVALID_UTF8");e(n);return}this._state===ne||this._allowSynchronousEvents?(this.emit("message",i,!1),this._state=v):(this._state=oe,Ee(()=>{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,rt),this.end();else{let s=e.readUInt16BE(0);if(!gr(s)){let n=this.createError(RangeError,`invalid status code ${s}`,!0,1002,"WS_ERR_INVALID_CLOSE_CODE");r(n);return}let i=new ie(e.buffer,e.byteOffset+2,e.length-2);if(!this._skipUTF8Validation&&!st(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=oe,Ee(()=>{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[dr]=i,o}};at.exports=be;function Sr(t){yr.then(t).catch(Er)}function xr(t){throw t}function Er(t){process.nextTick(xr,t)}});var Oe=x((bs,ct)=>{"use strict";var{Duplex:vs}=p("stream"),{randomFillSync:vr}=p("crypto"),ft=V(),{EMPTY_BUFFER:br}=N(),{isValidStatusCode:wr}=H(),{mask:lt,toBuffer:D}=q(),b=Symbol("kByteLength"),kr=Buffer.alloc(4),ke=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._deflating=!1,this._queue=[]}static frame(e,r){let s,i=!1,n=2,o=!1;r.mask&&(s=r.maskBuffer||kr,r.generateMask?r.generateMask(s):vr(s,0,4),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?(lt(e,s,a,n,f),[a]):(lt(e,s,e,0,f),[a,e])):[a,e]}close(e,r,s,i){let n;if(e===void 0)n=br;else{if(typeof e!="number"||!wr(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._deflating?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=D(e),i=e.length,n=D.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};this._deflating?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=D(e),i=e.length,n=D.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};this._deflating?this.enqueue([this.dispatch,e,!1,o,s]):this.sendFrame(t.frame(e,o),s)}send(e,r,s){let i=this._extensions[ft.extensionName],n=r.binary?2:1,o=r.compress,f,l;if(typeof e=="string"?(f=Buffer.byteLength(e),l=!1):(e=D(e),f=e.length,l=D.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),i){let a={[b]:f,fin:r.fin,generateMask:this._generateMask,mask:r.mask,maskBuffer:this._maskBuffer,opcode:n,readOnly:l,rsv1:o};this._deflating?this.enqueue([this.dispatch,e,this._compress,a,s]):this.dispatch(e,this._compress,a,s)}else this.sendFrame(t.frame(e,{[b]:f,fin:r.fin,generateMask:this._generateMask,mask:r.mask,maskBuffer:this._maskBuffer,opcode:n,readOnly:l,rsv1:!1}),s)}dispatch(e,r,s,i){if(!r){this.sendFrame(t.frame(e,s),i);return}let n=this._extensions[ft.extensionName];this._bufferedBytes+=s[b],this._deflating=!0,n.compress(e,s.fin,(o,f)=>{if(this._socket.destroyed){let l=new Error("The socket was closed while data was being compressed");typeof i=="function"&&i(l);for(let a=0;a<this._queue.length;a++){let h=this._queue[a],c=h[h.length-1];typeof c=="function"&&c(l)}return}this._bufferedBytes-=s[b],this._deflating=!1,s.readOnly=!1,this.sendFrame(t.frame(f,s),i),this.dequeue()})}dequeue(){for(;!this._deflating&&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)}};ct.exports=ke});var St=x((ws,yt)=>{"use strict";var{kForOnEventAttribute:z,kListener:Te}=N(),ht=Symbol("kCode"),ut=Symbol("kData"),dt=Symbol("kError"),_t=Symbol("kMessage"),pt=Symbol("kReason"),W=Symbol("kTarget"),mt=Symbol("kType"),gt=Symbol("kWasClean"),T=class{constructor(e){this[W]=null,this[mt]=e}get target(){return this[W]}get type(){return this[mt]}};Object.defineProperty(T.prototype,"target",{enumerable:!0});Object.defineProperty(T.prototype,"type",{enumerable:!0});var U=class extends T{constructor(e,r={}){super(e),this[ht]=r.code===void 0?0:r.code,this[pt]=r.reason===void 0?"":r.reason,this[gt]=r.wasClean===void 0?!1:r.wasClean}get code(){return this[ht]}get reason(){return this[pt]}get wasClean(){return this[gt]}};Object.defineProperty(U.prototype,"code",{enumerable:!0});Object.defineProperty(U.prototype,"reason",{enumerable:!0});Object.defineProperty(U.prototype,"wasClean",{enumerable:!0});var A=class extends T{constructor(e,r={}){super(e),this[dt]=r.error===void 0?null:r.error,this[_t]=r.message===void 0?"":r.message}get error(){return this[dt]}get message(){return this[_t]}};Object.defineProperty(A.prototype,"error",{enumerable:!0});Object.defineProperty(A.prototype,"message",{enumerable:!0});var Y=class extends T{constructor(e,r={}){super(e),this[ut]=r.data===void 0?null:r.data}get data(){return this[ut]}};Object.defineProperty(Y.prototype,"data",{enumerable:!0});var Or={addEventListener(t,e,r={}){for(let i of this.listeners(t))if(!r[z]&&i[Te]===e&&!i[z])return;let s;if(t==="message")s=function(n,o){let f=new Y("message",{data:o?n:n.toString()});f[W]=this,ae(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[W]=this,ae(e,this,f)};else if(t==="error")s=function(n){let o=new A("error",{error:n,message:n.message});o[W]=this,ae(e,this,o)};else if(t==="open")s=function(){let n=new T("open");n[W]=this,ae(e,this,n)};else return;s[z]=!!r[z],s[Te]=e,r.once?this.once(t,s):this.on(t,s)},removeEventListener(t,e){for(let r of this.listeners(t))if(r[Te]===e&&!r[z]){this.removeListener(t,r);break}}};yt.exports={CloseEvent:U,ErrorEvent:A,Event:T,EventTarget:Or,MessageEvent:Y};function ae(t,e,r){typeof t=="object"&&t.handleEvent?t.handleEvent.call(t,r):t.call(e,r)}});var Ce=x((ks,xt)=>{"use strict";var{tokenChars:K}=H();function w(t,e,r){t[e]===void 0?t[e]=[r]:t[e].push(r)}function Tr(t){let e=Object.create(null),r=Object.create(null),s=!1,i=!1,n=!1,o,f,l=-1,a=-1,h=-1,c=0;for(;c<t.length;c++)if(a=t.charCodeAt(c),o===void 0)if(h===-1&&K[a]===1)l===-1&&(l=c);else if(c!==0&&(a===32||a===9))h===-1&&l!==-1&&(h=c);else if(a===59||a===44){if(l===-1)throw new SyntaxError(`Unexpected character at index ${c}`);h===-1&&(h=c);let y=t.slice(l,h);a===44?(w(e,y,r),r=Object.create(null)):o=y,l=h=-1}else throw new SyntaxError(`Unexpected character at index ${c}`);else if(f===void 0)if(h===-1&&K[a]===1)l===-1&&(l=c);else if(a===32||a===9)h===-1&&l!==-1&&(h=c);else if(a===59||a===44){if(l===-1)throw new SyntaxError(`Unexpected character at index ${c}`);h===-1&&(h=c),w(r,t.slice(l,h),!0),a===44&&(w(e,o,r),r=Object.create(null),o=void 0),l=h=-1}else if(a===61&&l!==-1&&h===-1)f=t.slice(l,c),l=h=-1;else throw new SyntaxError(`Unexpected character at index ${c}`);else if(i){if(K[a]!==1)throw new SyntaxError(`Unexpected character at index ${c}`);l===-1?l=c:s||(s=!0),i=!1}else if(n)if(K[a]===1)l===-1&&(l=c);else if(a===34&&l!==-1)n=!1,h=c;else if(a===92)i=!0;else throw new SyntaxError(`Unexpected character at index ${c}`);else if(a===34&&t.charCodeAt(c-1)===61)n=!0;else if(h===-1&&K[a]===1)l===-1&&(l=c);else if(l!==-1&&(a===32||a===9))h===-1&&(h=c);else if(a===59||a===44){if(l===-1)throw new SyntaxError(`Unexpected character at index ${c}`);h===-1&&(h=c);let y=t.slice(l,h);s&&(y=y.replace(/\\/g,""),s=!1),w(r,f,y),a===44&&(w(e,o,r),r=Object.create(null),o=void 0),f=void 0,l=h=-1}else throw new SyntaxError(`Unexpected character at index ${c}`);if(l===-1||n||a===32||a===9)throw new SyntaxError("Unexpected end of input");h===-1&&(h=c);let m=t.slice(l,h);return o===void 0?w(e,m,r):(f===void 0?w(r,m,!0):s?w(r,f,m.replace(/\\/g,"")):w(r,f,m),w(e,o,r)),e}function Cr(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(", ")}xt.exports={format:Cr,parse:Tr}});var Ue=x((Cs,Pt)=>{"use strict";var Nr=p("events"),Lr=p("https"),Pr=p("http"),bt=p("net"),Rr=p("tls"),{randomBytes:Ur,createHash:Ir}=p("crypto"),{Duplex:Os,Readable:Ts}=p("stream"),{URL:Ne}=p("url"),P=V(),Br=we(),Mr=Oe(),{BINARY_TYPES:Et,EMPTY_BUFFER:fe,GUID:Dr,kForOnEventAttribute:Le,kListener:Wr,kStatusCode:Ar,kWebSocket:g,NOOP:wt}=N(),{EventTarget:{addEventListener:Fr,removeEventListener:Gr}}=St(),{format:qr,parse:$r}=Ce(),{toBuffer:jr}=q(),Vr=30*1e3,kt=Symbol("kAborted"),Pe=[8,13],C=["CONNECTING","OPEN","CLOSING","CLOSED"],Hr=/^[!#$%&'*+\-.0-9A-Z^_`|a-z~]+$/,d=class t extends Nr{constructor(e,r,s){super(),this._binaryType=Et[0],this._closeCode=1006,this._closeFrameReceived=!1,this._closeFrameSent=!1,this._closeMessage=fe,this._closeTimer=null,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]),Ot(this,e,r,s)):(this._autoPong=s.autoPong,this._isServer=!0)}get binaryType(){return this._binaryType}set binaryType(e){Et.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 Br({allowSynchronousEvents:s.allowSynchronousEvents,binaryType:this.binaryType,extensions:this._extensions,isServer:this._isServer,maxPayload:s.maxPayload,skipUTF8Validation:s.skipUTF8Validation});this._sender=new Mr(e,this._extensions,s.generateMask),this._receiver=i,this._socket=e,i[g]=this,e[g]=this,i.on("conclude",Kr),i.on("drain",Xr),i.on("error",Zr),i.on("message",Jr),i.on("ping",Qr),i.on("pong",es),e.setTimeout&&e.setTimeout(0),e.setNoDelay&&e.setNoDelay(),r.length>0&&e.unshift(r),e.on("close",Ct),e.on("data",ce),e.on("end",Nt),e.on("error",Lt),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[P.extensionName]&&this._extensions[P.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())}),this._closeTimer=setTimeout(this._socket.destroy.bind(this._socket),Vr)}}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){Re(this,e,s);return}r===void 0&&(r=!this._isServer),this._sender.ping(e||fe,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){Re(this,e,s);return}r===void 0&&(r=!this._isServer),this._sender.pong(e||fe,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){Re(this,e,s);return}let i={binary:typeof e!="string",mask:!this._isServer,compress:!0,fin:!0,...r};this._extensions[P.extensionName]||(i.compress=!1),this._sender.send(e||fe,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:C.indexOf("CONNECTING")});Object.defineProperty(d.prototype,"CONNECTING",{enumerable:!0,value:C.indexOf("CONNECTING")});Object.defineProperty(d,"OPEN",{enumerable:!0,value:C.indexOf("OPEN")});Object.defineProperty(d.prototype,"OPEN",{enumerable:!0,value:C.indexOf("OPEN")});Object.defineProperty(d,"CLOSING",{enumerable:!0,value:C.indexOf("CLOSING")});Object.defineProperty(d.prototype,"CLOSING",{enumerable:!0,value:C.indexOf("CLOSING")});Object.defineProperty(d,"CLOSED",{enumerable:!0,value:C.indexOf("CLOSED")});Object.defineProperty(d.prototype,"CLOSED",{enumerable:!0,value:C.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[Le])return e[Wr];return null},set(e){for(let r of this.listeners(t))if(r[Le]){this.removeListener(t,r);break}typeof e=="function"&&this.addEventListener(t,e,{[Le]:!0})}})});d.prototype.addEventListener=Fr;d.prototype.removeEventListener=Gr;Pt.exports=d;function Ot(t,e,r,s){let i={allowSynchronousEvents:!1,autoPong:!0,protocolVersion:Pe[1],maxPayload:104857600,skipUTF8Validation:!1,perMessageDeflate:!0,followRedirects:!1,maxRedirects:10,...s,createConnection:void 0,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,!Pe.includes(i.protocolVersion))throw new RangeError(`Unsupported protocol version: ${i.protocolVersion} (supported versions: ${Pe.join(", ")})`);let n;if(e instanceof Ne)n=e;else try{n=new Ne(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;le(t,u);return}let a=o?443:80,h=Ur(16).toString("base64"),c=o?Lr.request:Pr.request,m=new Set,y;if(i.createConnection=o?Yr:zr,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":h,Connection:"Upgrade",Upgrade:"websocket"},i.path=n.pathname+n.search,i.timeout=i.handshakeTimeout,i.perMessageDeflate&&(y=new P(i.perMessageDeflate!==!0?i.perMessageDeflate:{},!1,i.maxPayload),i.headers["Sec-WebSocket-Extensions"]=qr({[P.extensionName]:y.offer()})),r.length){for(let u of r){if(typeof u!="string"||!Hr.test(u)||m.has(u))throw new SyntaxError("An invalid or duplicated subprotocol was specified");m.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 _;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,M]of Object.entries(u))s.headers[S.toLowerCase()]=M}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")),_=t._req=c(i),t._redirects&&t.emit("redirect",t.url,_)}else _=t._req=c(i);i.timeout&&_.on("timeout",()=>{E(t,_,"Opening handshake has timed out")}),_.on("error",u=>{_===null||_[kt]||(_=t._req=null,le(t,u))}),_.on("response",u=>{let S=u.headers.location,M=u.statusCode;if(S&&i.followRedirects&&M>=300&&M<400){if(++t._redirects>i.maxRedirects){E(t,_,"Maximum redirects exceeded");return}_.abort();let J;try{J=new Ne(S,e)}catch{let R=new SyntaxError(`Invalid URL: ${S}`);le(t,R);return}Ot(t,J,r,s)}else t.emit("unexpected-response",_,u)||E(t,_,`Unexpected server response: ${u.statusCode}`)}),_.on("upgrade",(u,S,M)=>{if(t.emit("upgrade",u),t.readyState!==d.CONNECTING)return;if(_=t._req=null,u.headers.upgrade.toLowerCase()!=="websocket"){E(t,S,"Invalid Upgrade header");return}let J=Ir("sha1").update(h+Dr).digest("base64");if(u.headers["sec-websocket-accept"]!==J){E(t,S,"Invalid Sec-WebSocket-Accept header");return}let F=u.headers["sec-websocket-protocol"],R;if(F!==void 0?m.size?m.has(F)||(R="Server sent an invalid subprotocol"):R="Server sent a subprotocol but none was requested":m.size&&(R="Server sent no subprotocol"),R){E(t,S,R);return}F&&(t._protocol=F);let De=u.headers["sec-websocket-extensions"];if(De!==void 0){if(!y){E(t,S,"Server sent a Sec-WebSocket-Extensions header but no extension was requested");return}let ue;try{ue=$r(De)}catch{E(t,S,"Invalid Sec-WebSocket-Extensions header");return}let We=Object.keys(ue);if(We.length!==1||We[0]!==P.extensionName){E(t,S,"Server indicated an extension that was not requested");return}try{y.accept(ue[P.extensionName])}catch{E(t,S,"Invalid Sec-WebSocket-Extensions header");return}t._extensions[P.extensionName]=y}t.setSocket(S,M,{allowSynchronousEvents:i.allowSynchronousEvents,generateMask:i.generateMask,maxPayload:i.maxPayload,skipUTF8Validation:i.skipUTF8Validation})}),i.finishRequest?i.finishRequest(_,t):_.end()}function le(t,e){t._readyState=d.CLOSING,t.emit("error",e),t.emitClose()}function zr(t){return t.path=t.socketPath,bt.connect(t)}function Yr(t){return t.path=void 0,!t.servername&&t.servername!==""&&(t.servername=bt.isIP(t.host)?"":t.host),Rr.connect(t)}function E(t,e,r){t._readyState=d.CLOSING;let s=new Error(r);Error.captureStackTrace(s,E),e.setHeader?(e[kt]=!0,e.abort(),e.socket&&!e.socket.destroyed&&e.socket.destroy(),process.nextTick(le,t,s)):(e.destroy(s),e.once("error",t.emit.bind(t,"error")),e.once("close",t.emitClose.bind(t)))}function Re(t,e,r){if(e){let s=jr(e).length;t._socket?t._sender._bufferedBytes+=s:t._bufferedAmount+=s}if(r){let s=new Error(`WebSocket is not open: readyState ${t.readyState} (${C[t.readyState]})`);process.nextTick(r,s)}}function Kr(t,e){let r=this[g];r._closeFrameReceived=!0,r._closeMessage=e,r._closeCode=t,r._socket[g]!==void 0&&(r._socket.removeListener("data",ce),process.nextTick(Tt,r._socket),t===1005?r.close():r.close(t,e))}function Xr(){let t=this[g];t.isPaused||t._socket.resume()}function Zr(t){let e=this[g];e._socket[g]!==void 0&&(e._socket.removeListener("data",ce),process.nextTick(Tt,e._socket),e.close(t[Ar])),e.emit("error",t)}function vt(){this[g].emitClose()}function Jr(t,e){this[g].emit("message",t,e)}function Qr(t){let e=this[g];e._autoPong&&e.pong(t,!this._isServer,wt),e.emit("ping",t)}function es(t){this[g].emit("pong",t)}function Tt(t){t.resume()}function Ct(){let t=this[g];this.removeListener("close",Ct),this.removeListener("data",ce),this.removeListener("end",Nt),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[g]=void 0,clearTimeout(t._closeTimer),t._receiver._writableState.finished||t._receiver._writableState.errorEmitted?t.emitClose():(t._receiver.on("error",vt),t._receiver.on("finish",vt))}function ce(t){this[g]._receiver.write(t)||this.pause()}function Nt(){let t=this[g];t._readyState=d.CLOSING,t._receiver.end(),this.end()}function Lt(){let t=this[g];this.removeListener("error",Lt),this.on("error",wt),t&&(t._readyState=d.CLOSING,this.destroy())}});var Ut=x((Ns,Rt)=>{"use strict";var{tokenChars:ts}=H();function rs(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&&ts[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}Rt.exports={parse:rs}});var Ft=x((Ps,At)=>{"use strict";var ss=p("events"),he=p("http"),{Duplex:Ls}=p("stream"),{createHash:is}=p("crypto"),It=Ce(),I=V(),ns=Ut(),os=Ue(),{GUID:as,kWebSocket:fs}=N(),ls=/^[+/0-9A-Za-z]{22}==$/,Bt=0,Mt=1,Wt=2,Ie=class extends ss{constructor(e,r){if(super(),e={allowSynchronousEvents:!1,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:os,...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=he.createServer((s,i)=>{let n=he.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=cs(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=Bt}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===Wt){e&&this.once("close",()=>{e(new Error("The server is not running"))}),process.nextTick(X,this);return}if(e&&this.once("close",e),this._state!==Mt)if(this._state=Mt,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(X,this):process.nextTick(X,this);else{let r=this._server;this._removeListeners(),this._removeListeners=this._server=null,r.close(()=>{X(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",Dt);let n=e.headers["sec-websocket-key"],o=+e.headers["sec-websocket-version"];if(e.method!=="GET"){B(this,e,r,405,"Invalid HTTP method");return}if(e.headers.upgrade.toLowerCase()!=="websocket"){B(this,e,r,400,"Invalid Upgrade header");return}if(!n||!ls.test(n)){B(this,e,r,400,"Missing or invalid Sec-WebSocket-Key header");return}if(o!==8&&o!==13){B(this,e,r,400,"Missing or invalid Sec-WebSocket-Version header");return}if(!this.shouldHandle(e)){Z(r,400);return}let f=e.headers["sec-websocket-protocol"],l=new Set;if(f!==void 0)try{l=ns.parse(f)}catch{B(this,e,r,400,"Invalid Sec-WebSocket-Protocol header");return}let a=e.headers["sec-websocket-extensions"],h={};if(this.options.perMessageDeflate&&a!==void 0){let c=new I(this.options.perMessageDeflate,!0,this.options.maxPayload);try{let m=It.parse(a);m[I.extensionName]&&(c.accept(m[I.extensionName]),h[I.extensionName]=c)}catch{B(this,e,r,400,"Invalid or unacceptable Sec-WebSocket-Extensions header");return}}if(this.options.verifyClient){let c={origin:e.headers[`${o===8?"sec-websocket-origin":"origin"}`],secure:!!(e.socket.authorized||e.socket.encrypted),req:e};if(this.options.verifyClient.length===2){this.options.verifyClient(c,(m,y,_,u)=>{if(!m)return Z(r,y||401,_,u);this.completeUpgrade(h,n,l,e,r,s,i)});return}if(!this.options.verifyClient(c))return Z(r,401)}this.completeUpgrade(h,n,l,e,r,s,i)}completeUpgrade(e,r,s,i,n,o,f){if(!n.readable||!n.writable)return n.destroy();if(n[fs])throw new Error("server.handleUpgrade() was called more than once with the same socket, possibly due to a misconfiguration");if(this._state>Bt)return Z(n,503);let a=["HTTP/1.1 101 Switching Protocols","Upgrade: websocket","Connection: Upgrade",`Sec-WebSocket-Accept: ${is("sha1").update(r+as).digest("base64")}`],h=new this.options.WebSocket(null,void 0,this.options);if(s.size){let c=this.options.handleProtocols?this.options.handleProtocols(s,i):s.values().next().value;c&&(a.push(`Sec-WebSocket-Protocol: ${c}`),h._protocol=c)}if(e[I.extensionName]){let c=e[I.extensionName].params,m=It.format({[I.extensionName]:[c]});a.push(`Sec-WebSocket-Extensions: ${m}`),h._extensions=e}this.emit("headers",a,i),n.write(a.concat(`\r
2
- `).join(`\r
3
- `)),n.removeListener("error",Dt),h.setSocket(n,o,{allowSynchronousEvents:this.options.allowSynchronousEvents,maxPayload:this.options.maxPayload,skipUTF8Validation:this.options.skipUTF8Validation}),this.clients&&(this.clients.add(h),h.on("close",()=>{this.clients.delete(h),this._shouldEmitClose&&!this.clients.size&&process.nextTick(X,this)})),f(h,i)}};At.exports=Ie;function cs(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 X(t){t._state=Wt,t.emit("close")}function Dt(){this.destroy()}function Z(t,e,r,s){r=r||he.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} ${he.STATUS_CODES[e]}\r
4
- `+Object.keys(s).map(i=>`${i}: ${s[i]}`).join(`\r
5
- `)+`\r
6
- \r
7
- `+r)}function B(t,e,r,s,i){if(t.listenerCount("wsClientError")){let n=new Error(i);Error.captureStackTrace(n,B),t.emit("wsClientError",n,r,e)}else Z(r,s,i)}});import k from"process";var hs=G($e(),1),us=G(we(),1),ds=G(Oe(),1),Gt=G(Ue(),1),qt=G(Ft(),1);var $t=Gt.default;function jt({merkurConfig:t}){let{protocol:e,host:r}=t.socketServer;return new $t(`${e}//${r}`)}var Be,Me;function Ds(){return k.env.CLI_CONFIG&&!Be&&(Be=JSON.parse(k.env.CLI_CONFIG)),k.env.MERKUR_CONFIG&&!Me&&(Me=JSON.parse(k.env.MERKUR_CONFIG)),{merkurConfig:Me,cliConfig:Be}}function Ws({merkurConfig:t,cliConfig:e}){function r(){let s=jt({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{Ws as autoReload,Ds as resolveConfig};
package/lib/server.cjs ADDED
@@ -0,0 +1,7 @@
1
+ "use strict";var Ht=Object.create;var J=Object.defineProperty;var zt=Object.getOwnPropertyDescriptor;var Yt=Object.getOwnPropertyNames;var Kt=Object.getPrototypeOf,Xt=Object.prototype.hasOwnProperty;var S=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports),Zt=(t,e)=>{for(var r in e)J(t,r,{get:e[r],enumerable:!0})},Ae=(t,e,r,s)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of Yt(e))!Xt.call(t,i)&&i!==r&&J(t,i,{get:()=>e[i],enumerable:!(s=zt(e,i))||s.enumerable});return t};var M=(t,e,r)=>(r=t!=null?Ht(Kt(t)):{},Ae(e||!t||!t.__esModule?J(r,"default",{value:t,enumerable:!0}):r,t)),Jt=t=>Ae(J({},"__esModule",{value:!0}),t);var $e=S((Ss,qe)=>{"use strict";var{Duplex:Qt}=require("stream");function Fe(t){t.emit("close")}function er(){!this.destroyed&&this._writableState.finished&&this.destroy()}function Ge(t){this.removeListener("error",Ge),this.destroy(),this.listenerCount("error")===0&&this.emit("error",t)}function tr(t,e){let r=!0,s=new Qt({...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(Fe,s);return}let o=!1;t.once("error",function(l){o=!0,n(l)}),t.once("close",function(){o||n(i),process.nextTick(Fe,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",er),s.on("error",Ge),s}qe.exports=tr});var C=S((xs,je)=>{"use strict";je.exports={BINARY_TYPES:["nodebuffer","arraybuffer","fragments"],EMPTY_BUFFER:Buffer.alloc(0),GUID:"258EAFA5-E914-47DA-95CA-C5AB0DC85B11",kForOnEventAttribute:Symbol("kIsForOnEventAttribute"),kListener:Symbol("kListener"),kStatusCode:Symbol("status-code"),kWebSocket:Symbol("websocket"),NOOP:()=>{}}});var G=S((Es,Q)=>{"use strict";var{EMPTY_BUFFER:rr}=C(),_e=Buffer[Symbol.species];function sr(t,e){if(t.length===0)return rr;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 _e(r.buffer,r.byteOffset,s):r}function Ve(t,e,r,s,i){for(let n=0;n<i;n++)r[s+n]=t[n]^e[n&3]}function He(t,e){for(let r=0;r<t.length;r++)t[r]^=e[r&3]}function ir(t){return t.length===t.buffer.byteLength?t.buffer:t.buffer.slice(t.byteOffset,t.byteOffset+t.length)}function pe(t){if(pe.readOnly=!0,Buffer.isBuffer(t))return t;let e;return t instanceof ArrayBuffer?e=new _e(t):ArrayBuffer.isView(t)?e=new _e(t.buffer,t.byteOffset,t.byteLength):(e=Buffer.from(t),pe.readOnly=!1),e}Q.exports={concat:sr,mask:Ve,toArrayBuffer:ir,toBuffer:pe,unmask:He};if(!process.env.WS_NO_BUFFER_UTIL)try{let t=require("bufferutil");Q.exports.mask=function(e,r,s,i,n){n<48?Ve(e,r,s,i,n):t.mask(e,r,s,i,n)},Q.exports.unmask=function(e,r){e.length<32?He(e,r):t.unmask(e,r)}}catch{}});var Ke=S((vs,Ye)=>{"use strict";var ze=Symbol("kDone"),me=Symbol("kRun"),ge=class{constructor(e){this[ze]=()=>{this.pending--,this[me]()},this.concurrency=e||1/0,this.jobs=[],this.pending=0}add(e){this.jobs.push(e),this[me]()}[me](){if(this.pending!==this.concurrency&&this.jobs.length){let e=this.jobs.shift();this.pending++,e(this[ze])}}};Ye.exports=ge});var j=S((bs,Qe)=>{"use strict";var q=require("zlib"),Xe=G(),nr=Ke(),{kStatusCode:Ze}=C(),or=Buffer[Symbol.species],ar=Buffer.from([0,0,255,255]),re=Symbol("permessage-deflate"),k=Symbol("total-length"),$=Symbol("callback"),N=Symbol("buffers"),te=Symbol("error"),ee,ye=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,!ee){let i=this._options.concurrencyLimit!==void 0?this._options.concurrencyLimit:10;ee=new nr(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[$];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){ee.add(i=>{this._decompress(e,r,(n,o)=>{i(),s(n,o)})})}compress(e,r,s){ee.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"?q.Z_DEFAULT_WINDOWBITS:this.params[n];this._inflate=q.createInflateRaw({...this._options.zlibInflateOptions,windowBits:o}),this._inflate[re]=this,this._inflate[k]=0,this._inflate[N]=[],this._inflate.on("error",lr),this._inflate.on("data",Je)}this._inflate[$]=s,this._inflate.write(e),r&&this._inflate.write(ar),this._inflate.flush(()=>{let n=this._inflate[te];if(n){this._inflate.close(),this._inflate=null,s(n);return}let o=Xe.concat(this._inflate[N],this._inflate[k]);this._inflate._readableState.endEmitted?(this._inflate.close(),this._inflate=null):(this._inflate[k]=0,this._inflate[N]=[],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"?q.Z_DEFAULT_WINDOWBITS:this.params[n];this._deflate=q.createDeflateRaw({...this._options.zlibDeflateOptions,windowBits:o}),this._deflate[k]=0,this._deflate[N]=[],this._deflate.on("data",fr)}this._deflate[$]=s,this._deflate.write(e),this._deflate.flush(q.Z_SYNC_FLUSH,()=>{if(!this._deflate)return;let n=Xe.concat(this._deflate[N],this._deflate[k]);r&&(n=new or(n.buffer,n.byteOffset,n.length-4)),this._deflate[$]=null,this._deflate[k]=0,this._deflate[N]=[],r&&this.params[`${i}_no_context_takeover`]&&this._deflate.reset(),s(null,n)})}};Qe.exports=ye;function fr(t){this[N].push(t),this[k]+=t.length}function Je(t){if(this[k]+=t.length,this[re]._maxPayload<1||this[k]<=this[re]._maxPayload){this[N].push(t);return}this[te]=new RangeError("Max payload size exceeded"),this[te].code="WS_ERR_UNSUPPORTED_MESSAGE_LENGTH",this[te][Ze]=1009,this.removeListener("data",Je),this.reset()}function lr(t){this[re]._inflate=null,t[Ze]=1007,this[$](t)}});var V=S((ws,se)=>{"use strict";var{isUtf8:et}=require("buffer"),cr=[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 hr(t){return t>=1e3&&t<=1014&&t!==1004&&t!==1005&&t!==1006||t>=3e3&&t<=4999}function Se(t){let e=t.length,r=0;for(;r<e;)if(!(t[r]&128))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}se.exports={isValidStatusCode:hr,isValidUTF8:Se,tokenChars:cr};if(et)se.exports.isValidUTF8=function(t){return t.length<24?Se(t):et(t)};else if(!process.env.WS_NO_UTF_8_VALIDATE)try{let t=require("utf-8-validate");se.exports.isValidUTF8=function(e){return e.length<32?Se(e):t(e)}}catch{}});var we=S((ks,at)=>{"use strict";var{Writable:ur}=require("stream"),tt=j(),{BINARY_TYPES:dr,EMPTY_BUFFER:rt,kStatusCode:_r,kWebSocket:pr}=C(),{concat:xe,toArrayBuffer:mr,unmask:gr}=G(),{isValidStatusCode:yr,isValidUTF8:st}=V(),ie=Buffer[Symbol.species],Sr=Promise.resolve(),Ee=typeof queueMicrotask=="function"?queueMicrotask:xr,E=0,it=1,nt=2,ot=3,ve=4,ne=5,oe=6,be=class extends ur{constructor(e={}){super(),this._allowSynchronousEvents=!!e.allowSynchronousEvents,this._binaryType=e.binaryType||dr[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=E}_write(e,r,s){if(this._opcode===8&&this._state==E)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 ie(s.buffer,s.byteOffset+e,s.length-e),new ie(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 ie(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 E:this.getInfo(e);break;case it:this.getPayloadLength16(e);break;case nt:this.getPayloadLength64(e);break;case ot:this.getMask();break;case ve:this.getData(e);break;case ne:case oe: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){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[tt.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=it:this._payloadLength===127?this._state=nt: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=ot:this._state=ve}getMask(){if(this._bufferedBytes<4){this._loop=!1;return}this._mask=this.consume(4),this._state=ve}getData(e){let r=rt;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]&&gr(r,this._mask)}if(this._opcode>7){this.controlMessage(r,e);return}if(this._compressed){this._state=ne,this.decompress(r,e);return}r.length&&(this._messageLength=this._totalPayloadLength,this._fragments.push(r)),this.dataMessage(e)}decompress(e,r){this._extensions[tt.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===E&&this.startLoop(r)})}dataMessage(e){if(!this._fin){this._state=E;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=xe(s,r):this._binaryType==="arraybuffer"?i=mr(xe(s,r)):i=s,this._state===ne||this._allowSynchronousEvents?(this.emit("message",i,!0),this._state=E):(this._state=oe,Ee(()=>{this.emit("message",i,!0),this._state=E,this.startLoop(e)}))}else{let i=xe(s,r);if(!this._skipUTF8Validation&&!st(i)){let n=this.createError(Error,"invalid UTF-8 sequence",!0,1007,"WS_ERR_INVALID_UTF8");e(n);return}this._state===ne||this._allowSynchronousEvents?(this.emit("message",i,!1),this._state=E):(this._state=oe,Ee(()=>{this.emit("message",i,!1),this._state=E,this.startLoop(e)}))}}controlMessage(e,r){if(this._opcode===8){if(e.length===0)this._loop=!1,this.emit("conclude",1005,rt),this.end();else{let s=e.readUInt16BE(0);if(!yr(s)){let n=this.createError(RangeError,`invalid status code ${s}`,!0,1002,"WS_ERR_INVALID_CLOSE_CODE");r(n);return}let i=new ie(e.buffer,e.byteOffset+2,e.length-2);if(!this._skipUTF8Validation&&!st(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=E;return}this._allowSynchronousEvents?(this.emit(this._opcode===9?"ping":"pong",e),this._state=E):(this._state=oe,Ee(()=>{this.emit(this._opcode===9?"ping":"pong",e),this._state=E,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[_r]=i,o}};at.exports=be;function xr(t){Sr.then(t).catch(vr)}function Er(t){throw t}function vr(t){process.nextTick(Er,t)}});var Oe=S((Ts,ct)=>{"use strict";var{Duplex:Os}=require("stream"),{randomFillSync:br}=require("crypto"),ft=j(),{EMPTY_BUFFER:wr}=C(),{isValidStatusCode:kr}=V(),{mask:lt,toBuffer:D}=G(),v=Symbol("kByteLength"),Or=Buffer.alloc(4),ke=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._deflating=!1,this._queue=[]}static frame(e,r){let s,i=!1,n=2,o=!1;r.mask&&(s=r.maskBuffer||Or,r.generateMask?r.generateMask(s):br(s,0,4),o=(s[0]|s[1]|s[2]|s[3])===0,n=6);let f;typeof e=="string"?(!r.mask||o)&&r[v]!==void 0?f=r[v]:(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?(lt(e,s,a,n,f),[a]):(lt(e,s,e,0,f),[a,e])):[a,e]}close(e,r,s,i){let n;if(e===void 0)n=wr;else{if(typeof e!="number"||!kr(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={[v]:n.length,fin:!0,generateMask:this._generateMask,mask:s,maskBuffer:this._maskBuffer,opcode:8,readOnly:!1,rsv1:!1};this._deflating?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=D(e),i=e.length,n=D.readOnly),i>125)throw new RangeError("The data size must not be greater than 125 bytes");let o={[v]:i,fin:!0,generateMask:this._generateMask,mask:r,maskBuffer:this._maskBuffer,opcode:9,readOnly:n,rsv1:!1};this._deflating?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=D(e),i=e.length,n=D.readOnly),i>125)throw new RangeError("The data size must not be greater than 125 bytes");let o={[v]:i,fin:!0,generateMask:this._generateMask,mask:r,maskBuffer:this._maskBuffer,opcode:10,readOnly:n,rsv1:!1};this._deflating?this.enqueue([this.dispatch,e,!1,o,s]):this.sendFrame(t.frame(e,o),s)}send(e,r,s){let i=this._extensions[ft.extensionName],n=r.binary?2:1,o=r.compress,f,l;if(typeof e=="string"?(f=Buffer.byteLength(e),l=!1):(e=D(e),f=e.length,l=D.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),i){let a={[v]:f,fin:r.fin,generateMask:this._generateMask,mask:r.mask,maskBuffer:this._maskBuffer,opcode:n,readOnly:l,rsv1:o};this._deflating?this.enqueue([this.dispatch,e,this._compress,a,s]):this.dispatch(e,this._compress,a,s)}else this.sendFrame(t.frame(e,{[v]:f,fin:r.fin,generateMask:this._generateMask,mask:r.mask,maskBuffer:this._maskBuffer,opcode:n,readOnly:l,rsv1:!1}),s)}dispatch(e,r,s,i){if(!r){this.sendFrame(t.frame(e,s),i);return}let n=this._extensions[ft.extensionName];this._bufferedBytes+=s[v],this._deflating=!0,n.compress(e,s.fin,(o,f)=>{if(this._socket.destroyed){let l=new Error("The socket was closed while data was being compressed");typeof i=="function"&&i(l);for(let a=0;a<this._queue.length;a++){let h=this._queue[a],c=h[h.length-1];typeof c=="function"&&c(l)}return}this._bufferedBytes-=s[v],this._deflating=!1,s.readOnly=!1,this.sendFrame(t.frame(f,s),i),this.dequeue()})}dequeue(){for(;!this._deflating&&this._queue.length;){let e=this._queue.shift();this._bufferedBytes-=e[3][v],Reflect.apply(e[0],this,e.slice(1))}}enqueue(e){this._bufferedBytes+=e[3][v],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)}};ct.exports=ke});var St=S((Cs,yt)=>{"use strict";var{kForOnEventAttribute:H,kListener:Te}=C(),ht=Symbol("kCode"),ut=Symbol("kData"),dt=Symbol("kError"),_t=Symbol("kMessage"),pt=Symbol("kReason"),W=Symbol("kTarget"),mt=Symbol("kType"),gt=Symbol("kWasClean"),O=class{constructor(e){this[W]=null,this[mt]=e}get target(){return this[W]}get type(){return this[mt]}};Object.defineProperty(O.prototype,"target",{enumerable:!0});Object.defineProperty(O.prototype,"type",{enumerable:!0});var R=class extends O{constructor(e,r={}){super(e),this[ht]=r.code===void 0?0:r.code,this[pt]=r.reason===void 0?"":r.reason,this[gt]=r.wasClean===void 0?!1:r.wasClean}get code(){return this[ht]}get reason(){return this[pt]}get wasClean(){return this[gt]}};Object.defineProperty(R.prototype,"code",{enumerable:!0});Object.defineProperty(R.prototype,"reason",{enumerable:!0});Object.defineProperty(R.prototype,"wasClean",{enumerable:!0});var A=class extends O{constructor(e,r={}){super(e),this[dt]=r.error===void 0?null:r.error,this[_t]=r.message===void 0?"":r.message}get error(){return this[dt]}get message(){return this[_t]}};Object.defineProperty(A.prototype,"error",{enumerable:!0});Object.defineProperty(A.prototype,"message",{enumerable:!0});var z=class extends O{constructor(e,r={}){super(e),this[ut]=r.data===void 0?null:r.data}get data(){return this[ut]}};Object.defineProperty(z.prototype,"data",{enumerable:!0});var Tr={addEventListener(t,e,r={}){for(let i of this.listeners(t))if(!r[H]&&i[Te]===e&&!i[H])return;let s;if(t==="message")s=function(n,o){let f=new z("message",{data:o?n:n.toString()});f[W]=this,ae(e,this,f)};else if(t==="close")s=function(n,o){let f=new R("close",{code:n,reason:o.toString(),wasClean:this._closeFrameReceived&&this._closeFrameSent});f[W]=this,ae(e,this,f)};else if(t==="error")s=function(n){let o=new A("error",{error:n,message:n.message});o[W]=this,ae(e,this,o)};else if(t==="open")s=function(){let n=new O("open");n[W]=this,ae(e,this,n)};else return;s[H]=!!r[H],s[Te]=e,r.once?this.once(t,s):this.on(t,s)},removeEventListener(t,e){for(let r of this.listeners(t))if(r[Te]===e&&!r[H]){this.removeListener(t,r);break}}};yt.exports={CloseEvent:R,ErrorEvent:A,Event:O,EventTarget:Tr,MessageEvent:z};function ae(t,e,r){typeof t=="object"&&t.handleEvent?t.handleEvent.call(t,r):t.call(e,r)}});var Ce=S((Ns,xt)=>{"use strict";var{tokenChars:Y}=V();function w(t,e,r){t[e]===void 0?t[e]=[r]:t[e].push(r)}function Cr(t){let e=Object.create(null),r=Object.create(null),s=!1,i=!1,n=!1,o,f,l=-1,a=-1,h=-1,c=0;for(;c<t.length;c++)if(a=t.charCodeAt(c),o===void 0)if(h===-1&&Y[a]===1)l===-1&&(l=c);else if(c!==0&&(a===32||a===9))h===-1&&l!==-1&&(h=c);else if(a===59||a===44){if(l===-1)throw new SyntaxError(`Unexpected character at index ${c}`);h===-1&&(h=c);let g=t.slice(l,h);a===44?(w(e,g,r),r=Object.create(null)):o=g,l=h=-1}else throw new SyntaxError(`Unexpected character at index ${c}`);else if(f===void 0)if(h===-1&&Y[a]===1)l===-1&&(l=c);else if(a===32||a===9)h===-1&&l!==-1&&(h=c);else if(a===59||a===44){if(l===-1)throw new SyntaxError(`Unexpected character at index ${c}`);h===-1&&(h=c),w(r,t.slice(l,h),!0),a===44&&(w(e,o,r),r=Object.create(null),o=void 0),l=h=-1}else if(a===61&&l!==-1&&h===-1)f=t.slice(l,c),l=h=-1;else throw new SyntaxError(`Unexpected character at index ${c}`);else if(i){if(Y[a]!==1)throw new SyntaxError(`Unexpected character at index ${c}`);l===-1?l=c:s||(s=!0),i=!1}else if(n)if(Y[a]===1)l===-1&&(l=c);else if(a===34&&l!==-1)n=!1,h=c;else if(a===92)i=!0;else throw new SyntaxError(`Unexpected character at index ${c}`);else if(a===34&&t.charCodeAt(c-1)===61)n=!0;else if(h===-1&&Y[a]===1)l===-1&&(l=c);else if(l!==-1&&(a===32||a===9))h===-1&&(h=c);else if(a===59||a===44){if(l===-1)throw new SyntaxError(`Unexpected character at index ${c}`);h===-1&&(h=c);let g=t.slice(l,h);s&&(g=g.replace(/\\/g,""),s=!1),w(r,f,g),a===44&&(w(e,o,r),r=Object.create(null),o=void 0),f=void 0,l=h=-1}else throw new SyntaxError(`Unexpected character at index ${c}`);if(l===-1||n||a===32||a===9)throw new SyntaxError("Unexpected end of input");h===-1&&(h=c);let p=t.slice(l,h);return o===void 0?w(e,p,r):(f===void 0?w(r,p,!0):s?w(r,f,p.replace(/\\/g,"")):w(r,f,p),w(e,o,r)),e}function Nr(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(", ")}xt.exports={format:Nr,parse:Cr}});var Ue=S((Rs,Pt)=>{"use strict";var Lr=require("events"),Pr=require("https"),Rr=require("http"),bt=require("net"),Ur=require("tls"),{randomBytes:Ir,createHash:Br}=require("crypto"),{Duplex:Ls,Readable:Ps}=require("stream"),{URL:Ne}=require("url"),L=j(),Mr=we(),Dr=Oe(),{BINARY_TYPES:Et,EMPTY_BUFFER:fe,GUID:Wr,kForOnEventAttribute:Le,kListener:Ar,kStatusCode:Fr,kWebSocket:m,NOOP:wt}=C(),{EventTarget:{addEventListener:Gr,removeEventListener:qr}}=St(),{format:$r,parse:jr}=Ce(),{toBuffer:Vr}=G(),Hr=30*1e3,kt=Symbol("kAborted"),Pe=[8,13],T=["CONNECTING","OPEN","CLOSING","CLOSED"],zr=/^[!#$%&'*+\-.0-9A-Z^_`|a-z~]+$/,d=class t extends Lr{constructor(e,r,s){super(),this._binaryType=Et[0],this._closeCode=1006,this._closeFrameReceived=!1,this._closeFrameSent=!1,this._closeMessage=fe,this._closeTimer=null,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]),Ot(this,e,r,s)):(this._autoPong=s.autoPong,this._isServer=!0)}get binaryType(){return this._binaryType}set binaryType(e){Et.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 Mr({allowSynchronousEvents:s.allowSynchronousEvents,binaryType:this.binaryType,extensions:this._extensions,isServer:this._isServer,maxPayload:s.maxPayload,skipUTF8Validation:s.skipUTF8Validation});this._sender=new Dr(e,this._extensions,s.generateMask),this._receiver=i,this._socket=e,i[m]=this,e[m]=this,i.on("conclude",Xr),i.on("drain",Zr),i.on("error",Jr),i.on("message",Qr),i.on("ping",es),i.on("pong",ts),e.setTimeout&&e.setTimeout(0),e.setNoDelay&&e.setNoDelay(),r.length>0&&e.unshift(r),e.on("close",Ct),e.on("data",ce),e.on("end",Nt),e.on("error",Lt),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[L.extensionName]&&this._extensions[L.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){x(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())}),this._closeTimer=setTimeout(this._socket.destroy.bind(this._socket),Hr)}}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){Re(this,e,s);return}r===void 0&&(r=!this._isServer),this._sender.ping(e||fe,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){Re(this,e,s);return}r===void 0&&(r=!this._isServer),this._sender.pong(e||fe,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){Re(this,e,s);return}let i={binary:typeof e!="string",mask:!this._isServer,compress:!0,fin:!0,...r};this._extensions[L.extensionName]||(i.compress=!1),this._sender.send(e||fe,i,s)}terminate(){if(this.readyState!==t.CLOSED){if(this.readyState===t.CONNECTING){x(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:T.indexOf("CONNECTING")});Object.defineProperty(d.prototype,"CONNECTING",{enumerable:!0,value:T.indexOf("CONNECTING")});Object.defineProperty(d,"OPEN",{enumerable:!0,value:T.indexOf("OPEN")});Object.defineProperty(d.prototype,"OPEN",{enumerable:!0,value:T.indexOf("OPEN")});Object.defineProperty(d,"CLOSING",{enumerable:!0,value:T.indexOf("CLOSING")});Object.defineProperty(d.prototype,"CLOSING",{enumerable:!0,value:T.indexOf("CLOSING")});Object.defineProperty(d,"CLOSED",{enumerable:!0,value:T.indexOf("CLOSED")});Object.defineProperty(d.prototype,"CLOSED",{enumerable:!0,value:T.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[Le])return e[Ar];return null},set(e){for(let r of this.listeners(t))if(r[Le]){this.removeListener(t,r);break}typeof e=="function"&&this.addEventListener(t,e,{[Le]:!0})}})});d.prototype.addEventListener=Gr;d.prototype.removeEventListener=qr;Pt.exports=d;function Ot(t,e,r,s){let i={allowSynchronousEvents:!1,autoPong:!0,protocolVersion:Pe[1],maxPayload:104857600,skipUTF8Validation:!1,perMessageDeflate:!0,followRedirects:!1,maxRedirects:10,...s,createConnection:void 0,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,!Pe.includes(i.protocolVersion))throw new RangeError(`Unsupported protocol version: ${i.protocolVersion} (supported versions: ${Pe.join(", ")})`);let n;if(e instanceof Ne)n=e;else try{n=new Ne(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;le(t,u);return}let a=o?443:80,h=Ir(16).toString("base64"),c=o?Pr.request:Rr.request,p=new Set,g;if(i.createConnection=o?Kr:Yr,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":h,Connection:"Upgrade",Upgrade:"websocket"},i.path=n.pathname+n.search,i.timeout=i.handshakeTimeout,i.perMessageDeflate&&(g=new L(i.perMessageDeflate!==!0?i.perMessageDeflate:{},!1,i.maxPayload),i.headers["Sec-WebSocket-Extensions"]=$r({[L.extensionName]:g.offer()})),r.length){for(let u of r){if(typeof u!="string"||!zr.test(u)||p.has(u))throw new SyntaxError("An invalid or duplicated subprotocol was specified");p.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 _;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[y,B]of Object.entries(u))s.headers[y.toLowerCase()]=B}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")),_=t._req=c(i),t._redirects&&t.emit("redirect",t.url,_)}else _=t._req=c(i);i.timeout&&_.on("timeout",()=>{x(t,_,"Opening handshake has timed out")}),_.on("error",u=>{_===null||_[kt]||(_=t._req=null,le(t,u))}),_.on("response",u=>{let y=u.headers.location,B=u.statusCode;if(y&&i.followRedirects&&B>=300&&B<400){if(++t._redirects>i.maxRedirects){x(t,_,"Maximum redirects exceeded");return}_.abort();let Z;try{Z=new Ne(y,e)}catch{let P=new SyntaxError(`Invalid URL: ${y}`);le(t,P);return}Ot(t,Z,r,s)}else t.emit("unexpected-response",_,u)||x(t,_,`Unexpected server response: ${u.statusCode}`)}),_.on("upgrade",(u,y,B)=>{if(t.emit("upgrade",u),t.readyState!==d.CONNECTING)return;if(_=t._req=null,u.headers.upgrade.toLowerCase()!=="websocket"){x(t,y,"Invalid Upgrade header");return}let Z=Br("sha1").update(h+Wr).digest("base64");if(u.headers["sec-websocket-accept"]!==Z){x(t,y,"Invalid Sec-WebSocket-Accept header");return}let F=u.headers["sec-websocket-protocol"],P;if(F!==void 0?p.size?p.has(F)||(P="Server sent an invalid subprotocol"):P="Server sent a subprotocol but none was requested":p.size&&(P="Server sent no subprotocol"),P){x(t,y,P);return}F&&(t._protocol=F);let De=u.headers["sec-websocket-extensions"];if(De!==void 0){if(!g){x(t,y,"Server sent a Sec-WebSocket-Extensions header but no extension was requested");return}let ue;try{ue=jr(De)}catch{x(t,y,"Invalid Sec-WebSocket-Extensions header");return}let We=Object.keys(ue);if(We.length!==1||We[0]!==L.extensionName){x(t,y,"Server indicated an extension that was not requested");return}try{g.accept(ue[L.extensionName])}catch{x(t,y,"Invalid Sec-WebSocket-Extensions header");return}t._extensions[L.extensionName]=g}t.setSocket(y,B,{allowSynchronousEvents:i.allowSynchronousEvents,generateMask:i.generateMask,maxPayload:i.maxPayload,skipUTF8Validation:i.skipUTF8Validation})}),i.finishRequest?i.finishRequest(_,t):_.end()}function le(t,e){t._readyState=d.CLOSING,t.emit("error",e),t.emitClose()}function Yr(t){return t.path=t.socketPath,bt.connect(t)}function Kr(t){return t.path=void 0,!t.servername&&t.servername!==""&&(t.servername=bt.isIP(t.host)?"":t.host),Ur.connect(t)}function x(t,e,r){t._readyState=d.CLOSING;let s=new Error(r);Error.captureStackTrace(s,x),e.setHeader?(e[kt]=!0,e.abort(),e.socket&&!e.socket.destroyed&&e.socket.destroy(),process.nextTick(le,t,s)):(e.destroy(s),e.once("error",t.emit.bind(t,"error")),e.once("close",t.emitClose.bind(t)))}function Re(t,e,r){if(e){let s=Vr(e).length;t._socket?t._sender._bufferedBytes+=s:t._bufferedAmount+=s}if(r){let s=new Error(`WebSocket is not open: readyState ${t.readyState} (${T[t.readyState]})`);process.nextTick(r,s)}}function Xr(t,e){let r=this[m];r._closeFrameReceived=!0,r._closeMessage=e,r._closeCode=t,r._socket[m]!==void 0&&(r._socket.removeListener("data",ce),process.nextTick(Tt,r._socket),t===1005?r.close():r.close(t,e))}function Zr(){let t=this[m];t.isPaused||t._socket.resume()}function Jr(t){let e=this[m];e._socket[m]!==void 0&&(e._socket.removeListener("data",ce),process.nextTick(Tt,e._socket),e.close(t[Fr])),e.emit("error",t)}function vt(){this[m].emitClose()}function Qr(t,e){this[m].emit("message",t,e)}function es(t){let e=this[m];e._autoPong&&e.pong(t,!this._isServer,wt),e.emit("ping",t)}function ts(t){this[m].emit("pong",t)}function Tt(t){t.resume()}function Ct(){let t=this[m];this.removeListener("close",Ct),this.removeListener("data",ce),this.removeListener("end",Nt),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[m]=void 0,clearTimeout(t._closeTimer),t._receiver._writableState.finished||t._receiver._writableState.errorEmitted?t.emitClose():(t._receiver.on("error",vt),t._receiver.on("finish",vt))}function ce(t){this[m]._receiver.write(t)||this.pause()}function Nt(){let t=this[m];t._readyState=d.CLOSING,t._receiver.end(),this.end()}function Lt(){let t=this[m];this.removeListener("error",Lt),this.on("error",wt),t&&(t._readyState=d.CLOSING,this.destroy())}});var Ut=S((Us,Rt)=>{"use strict";var{tokenChars:rs}=V();function ss(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&&rs[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}Rt.exports={parse:ss}});var Ft=S((Bs,At)=>{"use strict";var is=require("events"),he=require("http"),{Duplex:Is}=require("stream"),{createHash:ns}=require("crypto"),It=Ce(),U=j(),os=Ut(),as=Ue(),{GUID:fs,kWebSocket:ls}=C(),cs=/^[+/0-9A-Za-z]{22}==$/,Bt=0,Mt=1,Wt=2,Ie=class extends is{constructor(e,r){if(super(),e={allowSynchronousEvents:!1,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:as,...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=he.createServer((s,i)=>{let n=he.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=hs(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=Bt}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===Wt){e&&this.once("close",()=>{e(new Error("The server is not running"))}),process.nextTick(K,this);return}if(e&&this.once("close",e),this._state!==Mt)if(this._state=Mt,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(K,this):process.nextTick(K,this);else{let r=this._server;this._removeListeners(),this._removeListeners=this._server=null,r.close(()=>{K(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",Dt);let n=e.headers["sec-websocket-key"],o=+e.headers["sec-websocket-version"];if(e.method!=="GET"){I(this,e,r,405,"Invalid HTTP method");return}if(e.headers.upgrade.toLowerCase()!=="websocket"){I(this,e,r,400,"Invalid Upgrade header");return}if(!n||!cs.test(n)){I(this,e,r,400,"Missing or invalid Sec-WebSocket-Key header");return}if(o!==8&&o!==13){I(this,e,r,400,"Missing or invalid Sec-WebSocket-Version header");return}if(!this.shouldHandle(e)){X(r,400);return}let f=e.headers["sec-websocket-protocol"],l=new Set;if(f!==void 0)try{l=os.parse(f)}catch{I(this,e,r,400,"Invalid Sec-WebSocket-Protocol header");return}let a=e.headers["sec-websocket-extensions"],h={};if(this.options.perMessageDeflate&&a!==void 0){let c=new U(this.options.perMessageDeflate,!0,this.options.maxPayload);try{let p=It.parse(a);p[U.extensionName]&&(c.accept(p[U.extensionName]),h[U.extensionName]=c)}catch{I(this,e,r,400,"Invalid or unacceptable Sec-WebSocket-Extensions header");return}}if(this.options.verifyClient){let c={origin:e.headers[`${o===8?"sec-websocket-origin":"origin"}`],secure:!!(e.socket.authorized||e.socket.encrypted),req:e};if(this.options.verifyClient.length===2){this.options.verifyClient(c,(p,g,_,u)=>{if(!p)return X(r,g||401,_,u);this.completeUpgrade(h,n,l,e,r,s,i)});return}if(!this.options.verifyClient(c))return X(r,401)}this.completeUpgrade(h,n,l,e,r,s,i)}completeUpgrade(e,r,s,i,n,o,f){if(!n.readable||!n.writable)return n.destroy();if(n[ls])throw new Error("server.handleUpgrade() was called more than once with the same socket, possibly due to a misconfiguration");if(this._state>Bt)return X(n,503);let a=["HTTP/1.1 101 Switching Protocols","Upgrade: websocket","Connection: Upgrade",`Sec-WebSocket-Accept: ${ns("sha1").update(r+fs).digest("base64")}`],h=new this.options.WebSocket(null,void 0,this.options);if(s.size){let c=this.options.handleProtocols?this.options.handleProtocols(s,i):s.values().next().value;c&&(a.push(`Sec-WebSocket-Protocol: ${c}`),h._protocol=c)}if(e[U.extensionName]){let c=e[U.extensionName].params,p=It.format({[U.extensionName]:[c]});a.push(`Sec-WebSocket-Extensions: ${p}`),h._extensions=e}this.emit("headers",a,i),n.write(a.concat(`\r
2
+ `).join(`\r
3
+ `)),n.removeListener("error",Dt),h.setSocket(n,o,{allowSynchronousEvents:this.options.allowSynchronousEvents,maxPayload:this.options.maxPayload,skipUTF8Validation:this.options.skipUTF8Validation}),this.clients&&(this.clients.add(h),h.on("close",()=>{this.clients.delete(h),this._shouldEmitClose&&!this.clients.size&&process.nextTick(K,this)})),f(h,i)}};At.exports=Ie;function hs(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 K(t){t._state=Wt,t.emit("close")}function Dt(){this.destroy()}function X(t,e,r,s){r=r||he.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} ${he.STATUS_CODES[e]}\r
4
+ `+Object.keys(s).map(i=>`${i}: ${s[i]}`).join(`\r
5
+ `)+`\r
6
+ \r
7
+ `+r)}function I(t,e,r,s,i){if(t.listenerCount("wsClientError")){let n=new Error(i);Error.captureStackTrace(n,I),t.emit("wsClientError",n,r,e)}else X(r,s,i)}});var gs={};Zt(gs,{autoReload:()=>ms,resolveConfig:()=>ps});module.exports=Jt(gs);var b=M(require("process"),1);var us=M($e(),1),ds=M(we(),1),_s=M(Oe(),1),Gt=M(Ue(),1),qt=M(Ft(),1);var $t=Gt.default;function jt({merkurConfig:t}){let{protocol:e,host:r}=t.socketServer;return new $t(`${e}//${r}`)}var Be,Me;function ps(){return b.default.env.CLI_CONFIG&&!Be&&(Be=JSON.parse(b.default.env.CLI_CONFIG)),b.default.env.MERKUR_CONFIG&&!Me&&(Me=JSON.parse(b.default.env.MERKUR_CONFIG)),{merkurConfig:Me,cliConfig:Be}}function ms({merkurConfig:t,cliConfig:e}){function r(){let s=jt({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=()=>b.default.exit(0);b.default.on("SIGINT",s),b.default.on("SIGQUIT",s),b.default.on("SIGTERM",s),b.default.on("uncaughtException",()=>{r()}),b.default.on("unhandledRejection",()=>{r()})}}0&&(module.exports={autoReload,resolveConfig});
package/lib/server.mjs ADDED
@@ -0,0 +1,7 @@
1
+ var Ht=Object.create;var Ae=Object.defineProperty;var zt=Object.getOwnPropertyDescriptor;var Yt=Object.getOwnPropertyNames;var Kt=Object.getPrototypeOf,Xt=Object.prototype.hasOwnProperty;var p=(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 Zt=(t,e,r,s)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of Yt(e))!Xt.call(t,i)&&i!==r&&Ae(t,i,{get:()=>e[i],enumerable:!(s=zt(e,i))||s.enumerable});return t};var G=(t,e,r)=>(r=t!=null?Ht(Kt(t)):{},Zt(e||!t||!t.__esModule?Ae(r,"default",{value:t,enumerable:!0}):r,t));var $e=x((ps,qe)=>{"use strict";var{Duplex:Jt}=p("stream");function Fe(t){t.emit("close")}function Qt(){!this.destroyed&&this._writableState.finished&&this.destroy()}function Ge(t){this.removeListener("error",Ge),this.destroy(),this.listenerCount("error")===0&&this.emit("error",t)}function er(t,e){let r=!0,s=new Jt({...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(Fe,s);return}let o=!1;t.once("error",function(l){o=!0,n(l)}),t.once("close",function(){o||n(i),process.nextTick(Fe,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",Qt),s.on("error",Ge),s}qe.exports=er});var N=x((ms,je)=>{"use strict";je.exports={BINARY_TYPES:["nodebuffer","arraybuffer","fragments"],EMPTY_BUFFER:Buffer.alloc(0),GUID:"258EAFA5-E914-47DA-95CA-C5AB0DC85B11",kForOnEventAttribute:Symbol("kIsForOnEventAttribute"),kListener:Symbol("kListener"),kStatusCode:Symbol("status-code"),kWebSocket:Symbol("websocket"),NOOP:()=>{}}});var q=x((gs,Q)=>{"use strict";var{EMPTY_BUFFER:tr}=N(),_e=Buffer[Symbol.species];function rr(t,e){if(t.length===0)return tr;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 _e(r.buffer,r.byteOffset,s):r}function Ve(t,e,r,s,i){for(let n=0;n<i;n++)r[s+n]=t[n]^e[n&3]}function He(t,e){for(let r=0;r<t.length;r++)t[r]^=e[r&3]}function sr(t){return t.length===t.buffer.byteLength?t.buffer:t.buffer.slice(t.byteOffset,t.byteOffset+t.length)}function pe(t){if(pe.readOnly=!0,Buffer.isBuffer(t))return t;let e;return t instanceof ArrayBuffer?e=new _e(t):ArrayBuffer.isView(t)?e=new _e(t.buffer,t.byteOffset,t.byteLength):(e=Buffer.from(t),pe.readOnly=!1),e}Q.exports={concat:rr,mask:Ve,toArrayBuffer:sr,toBuffer:pe,unmask:He};if(!process.env.WS_NO_BUFFER_UTIL)try{let t=p("bufferutil");Q.exports.mask=function(e,r,s,i,n){n<48?Ve(e,r,s,i,n):t.mask(e,r,s,i,n)},Q.exports.unmask=function(e,r){e.length<32?He(e,r):t.unmask(e,r)}}catch{}});var Ke=x((ys,Ye)=>{"use strict";var ze=Symbol("kDone"),me=Symbol("kRun"),ge=class{constructor(e){this[ze]=()=>{this.pending--,this[me]()},this.concurrency=e||1/0,this.jobs=[],this.pending=0}add(e){this.jobs.push(e),this[me]()}[me](){if(this.pending!==this.concurrency&&this.jobs.length){let e=this.jobs.shift();this.pending++,e(this[ze])}}};Ye.exports=ge});var V=x((Ss,Qe)=>{"use strict";var $=p("zlib"),Xe=q(),ir=Ke(),{kStatusCode:Ze}=N(),nr=Buffer[Symbol.species],or=Buffer.from([0,0,255,255]),re=Symbol("permessage-deflate"),O=Symbol("total-length"),j=Symbol("callback"),L=Symbol("buffers"),te=Symbol("error"),ee,ye=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,!ee){let i=this._options.concurrencyLimit!==void 0?this._options.concurrencyLimit:10;ee=new ir(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[j];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){ee.add(i=>{this._decompress(e,r,(n,o)=>{i(),s(n,o)})})}compress(e,r,s){ee.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_DEFAULT_WINDOWBITS:this.params[n];this._inflate=$.createInflateRaw({...this._options.zlibInflateOptions,windowBits:o}),this._inflate[re]=this,this._inflate[O]=0,this._inflate[L]=[],this._inflate.on("error",fr),this._inflate.on("data",Je)}this._inflate[j]=s,this._inflate.write(e),r&&this._inflate.write(or),this._inflate.flush(()=>{let n=this._inflate[te];if(n){this._inflate.close(),this._inflate=null,s(n);return}let o=Xe.concat(this._inflate[L],this._inflate[O]);this._inflate._readableState.endEmitted?(this._inflate.close(),this._inflate=null):(this._inflate[O]=0,this._inflate[L]=[],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_DEFAULT_WINDOWBITS:this.params[n];this._deflate=$.createDeflateRaw({...this._options.zlibDeflateOptions,windowBits:o}),this._deflate[O]=0,this._deflate[L]=[],this._deflate.on("data",ar)}this._deflate[j]=s,this._deflate.write(e),this._deflate.flush($.Z_SYNC_FLUSH,()=>{if(!this._deflate)return;let n=Xe.concat(this._deflate[L],this._deflate[O]);r&&(n=new nr(n.buffer,n.byteOffset,n.length-4)),this._deflate[j]=null,this._deflate[O]=0,this._deflate[L]=[],r&&this.params[`${i}_no_context_takeover`]&&this._deflate.reset(),s(null,n)})}};Qe.exports=ye;function ar(t){this[L].push(t),this[O]+=t.length}function Je(t){if(this[O]+=t.length,this[re]._maxPayload<1||this[O]<=this[re]._maxPayload){this[L].push(t);return}this[te]=new RangeError("Max payload size exceeded"),this[te].code="WS_ERR_UNSUPPORTED_MESSAGE_LENGTH",this[te][Ze]=1009,this.removeListener("data",Je),this.reset()}function fr(t){this[re]._inflate=null,t[Ze]=1007,this[j](t)}});var H=x((xs,se)=>{"use strict";var{isUtf8:et}=p("buffer"),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 cr(t){return t>=1e3&&t<=1014&&t!==1004&&t!==1005&&t!==1006||t>=3e3&&t<=4999}function Se(t){let e=t.length,r=0;for(;r<e;)if(!(t[r]&128))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}se.exports={isValidStatusCode:cr,isValidUTF8:Se,tokenChars:lr};if(et)se.exports.isValidUTF8=function(t){return t.length<24?Se(t):et(t)};else if(!process.env.WS_NO_UTF_8_VALIDATE)try{let t=p("utf-8-validate");se.exports.isValidUTF8=function(e){return e.length<32?Se(e):t(e)}}catch{}});var we=x((Es,at)=>{"use strict";var{Writable:hr}=p("stream"),tt=V(),{BINARY_TYPES:ur,EMPTY_BUFFER:rt,kStatusCode:dr,kWebSocket:_r}=N(),{concat:xe,toArrayBuffer:pr,unmask:mr}=q(),{isValidStatusCode:gr,isValidUTF8:st}=H(),ie=Buffer[Symbol.species],yr=Promise.resolve(),Ee=typeof queueMicrotask=="function"?queueMicrotask:Sr,v=0,it=1,nt=2,ot=3,ve=4,ne=5,oe=6,be=class extends hr{constructor(e={}){super(),this._allowSynchronousEvents=!!e.allowSynchronousEvents,this._binaryType=e.binaryType||ur[0],this._extensions=e.extensions||{},this._isServer=!!e.isServer,this._maxPayload=e.maxPayload|0,this._skipUTF8Validation=!!e.skipUTF8Validation,this[_r]=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 ie(s.buffer,s.byteOffset+e,s.length-e),new ie(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 ie(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 it:this.getPayloadLength16(e);break;case nt:this.getPayloadLength64(e);break;case ot:this.getMask();break;case ve:this.getData(e);break;case ne:case oe: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){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[tt.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=it:this._payloadLength===127?this._state=nt: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=ot:this._state=ve}getMask(){if(this._bufferedBytes<4){this._loop=!1;return}this._mask=this.consume(4),this._state=ve}getData(e){let r=rt;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]&&mr(r,this._mask)}if(this._opcode>7){this.controlMessage(r,e);return}if(this._compressed){this._state=ne,this.decompress(r,e);return}r.length&&(this._messageLength=this._totalPayloadLength,this._fragments.push(r)),this.dataMessage(e)}decompress(e,r){this._extensions[tt.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=xe(s,r):this._binaryType==="arraybuffer"?i=pr(xe(s,r)):i=s,this._state===ne||this._allowSynchronousEvents?(this.emit("message",i,!0),this._state=v):(this._state=oe,Ee(()=>{this.emit("message",i,!0),this._state=v,this.startLoop(e)}))}else{let i=xe(s,r);if(!this._skipUTF8Validation&&!st(i)){let n=this.createError(Error,"invalid UTF-8 sequence",!0,1007,"WS_ERR_INVALID_UTF8");e(n);return}this._state===ne||this._allowSynchronousEvents?(this.emit("message",i,!1),this._state=v):(this._state=oe,Ee(()=>{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,rt),this.end();else{let s=e.readUInt16BE(0);if(!gr(s)){let n=this.createError(RangeError,`invalid status code ${s}`,!0,1002,"WS_ERR_INVALID_CLOSE_CODE");r(n);return}let i=new ie(e.buffer,e.byteOffset+2,e.length-2);if(!this._skipUTF8Validation&&!st(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=oe,Ee(()=>{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[dr]=i,o}};at.exports=be;function Sr(t){yr.then(t).catch(Er)}function xr(t){throw t}function Er(t){process.nextTick(xr,t)}});var Oe=x((bs,ct)=>{"use strict";var{Duplex:vs}=p("stream"),{randomFillSync:vr}=p("crypto"),ft=V(),{EMPTY_BUFFER:br}=N(),{isValidStatusCode:wr}=H(),{mask:lt,toBuffer:D}=q(),b=Symbol("kByteLength"),kr=Buffer.alloc(4),ke=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._deflating=!1,this._queue=[]}static frame(e,r){let s,i=!1,n=2,o=!1;r.mask&&(s=r.maskBuffer||kr,r.generateMask?r.generateMask(s):vr(s,0,4),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?(lt(e,s,a,n,f),[a]):(lt(e,s,e,0,f),[a,e])):[a,e]}close(e,r,s,i){let n;if(e===void 0)n=br;else{if(typeof e!="number"||!wr(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._deflating?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=D(e),i=e.length,n=D.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};this._deflating?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=D(e),i=e.length,n=D.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};this._deflating?this.enqueue([this.dispatch,e,!1,o,s]):this.sendFrame(t.frame(e,o),s)}send(e,r,s){let i=this._extensions[ft.extensionName],n=r.binary?2:1,o=r.compress,f,l;if(typeof e=="string"?(f=Buffer.byteLength(e),l=!1):(e=D(e),f=e.length,l=D.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),i){let a={[b]:f,fin:r.fin,generateMask:this._generateMask,mask:r.mask,maskBuffer:this._maskBuffer,opcode:n,readOnly:l,rsv1:o};this._deflating?this.enqueue([this.dispatch,e,this._compress,a,s]):this.dispatch(e,this._compress,a,s)}else this.sendFrame(t.frame(e,{[b]:f,fin:r.fin,generateMask:this._generateMask,mask:r.mask,maskBuffer:this._maskBuffer,opcode:n,readOnly:l,rsv1:!1}),s)}dispatch(e,r,s,i){if(!r){this.sendFrame(t.frame(e,s),i);return}let n=this._extensions[ft.extensionName];this._bufferedBytes+=s[b],this._deflating=!0,n.compress(e,s.fin,(o,f)=>{if(this._socket.destroyed){let l=new Error("The socket was closed while data was being compressed");typeof i=="function"&&i(l);for(let a=0;a<this._queue.length;a++){let h=this._queue[a],c=h[h.length-1];typeof c=="function"&&c(l)}return}this._bufferedBytes-=s[b],this._deflating=!1,s.readOnly=!1,this.sendFrame(t.frame(f,s),i),this.dequeue()})}dequeue(){for(;!this._deflating&&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)}};ct.exports=ke});var St=x((ws,yt)=>{"use strict";var{kForOnEventAttribute:z,kListener:Te}=N(),ht=Symbol("kCode"),ut=Symbol("kData"),dt=Symbol("kError"),_t=Symbol("kMessage"),pt=Symbol("kReason"),W=Symbol("kTarget"),mt=Symbol("kType"),gt=Symbol("kWasClean"),T=class{constructor(e){this[W]=null,this[mt]=e}get target(){return this[W]}get type(){return this[mt]}};Object.defineProperty(T.prototype,"target",{enumerable:!0});Object.defineProperty(T.prototype,"type",{enumerable:!0});var U=class extends T{constructor(e,r={}){super(e),this[ht]=r.code===void 0?0:r.code,this[pt]=r.reason===void 0?"":r.reason,this[gt]=r.wasClean===void 0?!1:r.wasClean}get code(){return this[ht]}get reason(){return this[pt]}get wasClean(){return this[gt]}};Object.defineProperty(U.prototype,"code",{enumerable:!0});Object.defineProperty(U.prototype,"reason",{enumerable:!0});Object.defineProperty(U.prototype,"wasClean",{enumerable:!0});var A=class extends T{constructor(e,r={}){super(e),this[dt]=r.error===void 0?null:r.error,this[_t]=r.message===void 0?"":r.message}get error(){return this[dt]}get message(){return this[_t]}};Object.defineProperty(A.prototype,"error",{enumerable:!0});Object.defineProperty(A.prototype,"message",{enumerable:!0});var Y=class extends T{constructor(e,r={}){super(e),this[ut]=r.data===void 0?null:r.data}get data(){return this[ut]}};Object.defineProperty(Y.prototype,"data",{enumerable:!0});var Or={addEventListener(t,e,r={}){for(let i of this.listeners(t))if(!r[z]&&i[Te]===e&&!i[z])return;let s;if(t==="message")s=function(n,o){let f=new Y("message",{data:o?n:n.toString()});f[W]=this,ae(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[W]=this,ae(e,this,f)};else if(t==="error")s=function(n){let o=new A("error",{error:n,message:n.message});o[W]=this,ae(e,this,o)};else if(t==="open")s=function(){let n=new T("open");n[W]=this,ae(e,this,n)};else return;s[z]=!!r[z],s[Te]=e,r.once?this.once(t,s):this.on(t,s)},removeEventListener(t,e){for(let r of this.listeners(t))if(r[Te]===e&&!r[z]){this.removeListener(t,r);break}}};yt.exports={CloseEvent:U,ErrorEvent:A,Event:T,EventTarget:Or,MessageEvent:Y};function ae(t,e,r){typeof t=="object"&&t.handleEvent?t.handleEvent.call(t,r):t.call(e,r)}});var Ce=x((ks,xt)=>{"use strict";var{tokenChars:K}=H();function w(t,e,r){t[e]===void 0?t[e]=[r]:t[e].push(r)}function Tr(t){let e=Object.create(null),r=Object.create(null),s=!1,i=!1,n=!1,o,f,l=-1,a=-1,h=-1,c=0;for(;c<t.length;c++)if(a=t.charCodeAt(c),o===void 0)if(h===-1&&K[a]===1)l===-1&&(l=c);else if(c!==0&&(a===32||a===9))h===-1&&l!==-1&&(h=c);else if(a===59||a===44){if(l===-1)throw new SyntaxError(`Unexpected character at index ${c}`);h===-1&&(h=c);let y=t.slice(l,h);a===44?(w(e,y,r),r=Object.create(null)):o=y,l=h=-1}else throw new SyntaxError(`Unexpected character at index ${c}`);else if(f===void 0)if(h===-1&&K[a]===1)l===-1&&(l=c);else if(a===32||a===9)h===-1&&l!==-1&&(h=c);else if(a===59||a===44){if(l===-1)throw new SyntaxError(`Unexpected character at index ${c}`);h===-1&&(h=c),w(r,t.slice(l,h),!0),a===44&&(w(e,o,r),r=Object.create(null),o=void 0),l=h=-1}else if(a===61&&l!==-1&&h===-1)f=t.slice(l,c),l=h=-1;else throw new SyntaxError(`Unexpected character at index ${c}`);else if(i){if(K[a]!==1)throw new SyntaxError(`Unexpected character at index ${c}`);l===-1?l=c:s||(s=!0),i=!1}else if(n)if(K[a]===1)l===-1&&(l=c);else if(a===34&&l!==-1)n=!1,h=c;else if(a===92)i=!0;else throw new SyntaxError(`Unexpected character at index ${c}`);else if(a===34&&t.charCodeAt(c-1)===61)n=!0;else if(h===-1&&K[a]===1)l===-1&&(l=c);else if(l!==-1&&(a===32||a===9))h===-1&&(h=c);else if(a===59||a===44){if(l===-1)throw new SyntaxError(`Unexpected character at index ${c}`);h===-1&&(h=c);let y=t.slice(l,h);s&&(y=y.replace(/\\/g,""),s=!1),w(r,f,y),a===44&&(w(e,o,r),r=Object.create(null),o=void 0),f=void 0,l=h=-1}else throw new SyntaxError(`Unexpected character at index ${c}`);if(l===-1||n||a===32||a===9)throw new SyntaxError("Unexpected end of input");h===-1&&(h=c);let m=t.slice(l,h);return o===void 0?w(e,m,r):(f===void 0?w(r,m,!0):s?w(r,f,m.replace(/\\/g,"")):w(r,f,m),w(e,o,r)),e}function Cr(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(", ")}xt.exports={format:Cr,parse:Tr}});var Ue=x((Cs,Pt)=>{"use strict";var Nr=p("events"),Lr=p("https"),Pr=p("http"),bt=p("net"),Rr=p("tls"),{randomBytes:Ur,createHash:Ir}=p("crypto"),{Duplex:Os,Readable:Ts}=p("stream"),{URL:Ne}=p("url"),P=V(),Br=we(),Mr=Oe(),{BINARY_TYPES:Et,EMPTY_BUFFER:fe,GUID:Dr,kForOnEventAttribute:Le,kListener:Wr,kStatusCode:Ar,kWebSocket:g,NOOP:wt}=N(),{EventTarget:{addEventListener:Fr,removeEventListener:Gr}}=St(),{format:qr,parse:$r}=Ce(),{toBuffer:jr}=q(),Vr=30*1e3,kt=Symbol("kAborted"),Pe=[8,13],C=["CONNECTING","OPEN","CLOSING","CLOSED"],Hr=/^[!#$%&'*+\-.0-9A-Z^_`|a-z~]+$/,d=class t extends Nr{constructor(e,r,s){super(),this._binaryType=Et[0],this._closeCode=1006,this._closeFrameReceived=!1,this._closeFrameSent=!1,this._closeMessage=fe,this._closeTimer=null,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]),Ot(this,e,r,s)):(this._autoPong=s.autoPong,this._isServer=!0)}get binaryType(){return this._binaryType}set binaryType(e){Et.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 Br({allowSynchronousEvents:s.allowSynchronousEvents,binaryType:this.binaryType,extensions:this._extensions,isServer:this._isServer,maxPayload:s.maxPayload,skipUTF8Validation:s.skipUTF8Validation});this._sender=new Mr(e,this._extensions,s.generateMask),this._receiver=i,this._socket=e,i[g]=this,e[g]=this,i.on("conclude",Kr),i.on("drain",Xr),i.on("error",Zr),i.on("message",Jr),i.on("ping",Qr),i.on("pong",es),e.setTimeout&&e.setTimeout(0),e.setNoDelay&&e.setNoDelay(),r.length>0&&e.unshift(r),e.on("close",Ct),e.on("data",ce),e.on("end",Nt),e.on("error",Lt),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[P.extensionName]&&this._extensions[P.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())}),this._closeTimer=setTimeout(this._socket.destroy.bind(this._socket),Vr)}}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){Re(this,e,s);return}r===void 0&&(r=!this._isServer),this._sender.ping(e||fe,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){Re(this,e,s);return}r===void 0&&(r=!this._isServer),this._sender.pong(e||fe,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){Re(this,e,s);return}let i={binary:typeof e!="string",mask:!this._isServer,compress:!0,fin:!0,...r};this._extensions[P.extensionName]||(i.compress=!1),this._sender.send(e||fe,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:C.indexOf("CONNECTING")});Object.defineProperty(d.prototype,"CONNECTING",{enumerable:!0,value:C.indexOf("CONNECTING")});Object.defineProperty(d,"OPEN",{enumerable:!0,value:C.indexOf("OPEN")});Object.defineProperty(d.prototype,"OPEN",{enumerable:!0,value:C.indexOf("OPEN")});Object.defineProperty(d,"CLOSING",{enumerable:!0,value:C.indexOf("CLOSING")});Object.defineProperty(d.prototype,"CLOSING",{enumerable:!0,value:C.indexOf("CLOSING")});Object.defineProperty(d,"CLOSED",{enumerable:!0,value:C.indexOf("CLOSED")});Object.defineProperty(d.prototype,"CLOSED",{enumerable:!0,value:C.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[Le])return e[Wr];return null},set(e){for(let r of this.listeners(t))if(r[Le]){this.removeListener(t,r);break}typeof e=="function"&&this.addEventListener(t,e,{[Le]:!0})}})});d.prototype.addEventListener=Fr;d.prototype.removeEventListener=Gr;Pt.exports=d;function Ot(t,e,r,s){let i={allowSynchronousEvents:!1,autoPong:!0,protocolVersion:Pe[1],maxPayload:104857600,skipUTF8Validation:!1,perMessageDeflate:!0,followRedirects:!1,maxRedirects:10,...s,createConnection:void 0,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,!Pe.includes(i.protocolVersion))throw new RangeError(`Unsupported protocol version: ${i.protocolVersion} (supported versions: ${Pe.join(", ")})`);let n;if(e instanceof Ne)n=e;else try{n=new Ne(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;le(t,u);return}let a=o?443:80,h=Ur(16).toString("base64"),c=o?Lr.request:Pr.request,m=new Set,y;if(i.createConnection=o?Yr:zr,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":h,Connection:"Upgrade",Upgrade:"websocket"},i.path=n.pathname+n.search,i.timeout=i.handshakeTimeout,i.perMessageDeflate&&(y=new P(i.perMessageDeflate!==!0?i.perMessageDeflate:{},!1,i.maxPayload),i.headers["Sec-WebSocket-Extensions"]=qr({[P.extensionName]:y.offer()})),r.length){for(let u of r){if(typeof u!="string"||!Hr.test(u)||m.has(u))throw new SyntaxError("An invalid or duplicated subprotocol was specified");m.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 _;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,M]of Object.entries(u))s.headers[S.toLowerCase()]=M}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")),_=t._req=c(i),t._redirects&&t.emit("redirect",t.url,_)}else _=t._req=c(i);i.timeout&&_.on("timeout",()=>{E(t,_,"Opening handshake has timed out")}),_.on("error",u=>{_===null||_[kt]||(_=t._req=null,le(t,u))}),_.on("response",u=>{let S=u.headers.location,M=u.statusCode;if(S&&i.followRedirects&&M>=300&&M<400){if(++t._redirects>i.maxRedirects){E(t,_,"Maximum redirects exceeded");return}_.abort();let J;try{J=new Ne(S,e)}catch{let R=new SyntaxError(`Invalid URL: ${S}`);le(t,R);return}Ot(t,J,r,s)}else t.emit("unexpected-response",_,u)||E(t,_,`Unexpected server response: ${u.statusCode}`)}),_.on("upgrade",(u,S,M)=>{if(t.emit("upgrade",u),t.readyState!==d.CONNECTING)return;if(_=t._req=null,u.headers.upgrade.toLowerCase()!=="websocket"){E(t,S,"Invalid Upgrade header");return}let J=Ir("sha1").update(h+Dr).digest("base64");if(u.headers["sec-websocket-accept"]!==J){E(t,S,"Invalid Sec-WebSocket-Accept header");return}let F=u.headers["sec-websocket-protocol"],R;if(F!==void 0?m.size?m.has(F)||(R="Server sent an invalid subprotocol"):R="Server sent a subprotocol but none was requested":m.size&&(R="Server sent no subprotocol"),R){E(t,S,R);return}F&&(t._protocol=F);let De=u.headers["sec-websocket-extensions"];if(De!==void 0){if(!y){E(t,S,"Server sent a Sec-WebSocket-Extensions header but no extension was requested");return}let ue;try{ue=$r(De)}catch{E(t,S,"Invalid Sec-WebSocket-Extensions header");return}let We=Object.keys(ue);if(We.length!==1||We[0]!==P.extensionName){E(t,S,"Server indicated an extension that was not requested");return}try{y.accept(ue[P.extensionName])}catch{E(t,S,"Invalid Sec-WebSocket-Extensions header");return}t._extensions[P.extensionName]=y}t.setSocket(S,M,{allowSynchronousEvents:i.allowSynchronousEvents,generateMask:i.generateMask,maxPayload:i.maxPayload,skipUTF8Validation:i.skipUTF8Validation})}),i.finishRequest?i.finishRequest(_,t):_.end()}function le(t,e){t._readyState=d.CLOSING,t.emit("error",e),t.emitClose()}function zr(t){return t.path=t.socketPath,bt.connect(t)}function Yr(t){return t.path=void 0,!t.servername&&t.servername!==""&&(t.servername=bt.isIP(t.host)?"":t.host),Rr.connect(t)}function E(t,e,r){t._readyState=d.CLOSING;let s=new Error(r);Error.captureStackTrace(s,E),e.setHeader?(e[kt]=!0,e.abort(),e.socket&&!e.socket.destroyed&&e.socket.destroy(),process.nextTick(le,t,s)):(e.destroy(s),e.once("error",t.emit.bind(t,"error")),e.once("close",t.emitClose.bind(t)))}function Re(t,e,r){if(e){let s=jr(e).length;t._socket?t._sender._bufferedBytes+=s:t._bufferedAmount+=s}if(r){let s=new Error(`WebSocket is not open: readyState ${t.readyState} (${C[t.readyState]})`);process.nextTick(r,s)}}function Kr(t,e){let r=this[g];r._closeFrameReceived=!0,r._closeMessage=e,r._closeCode=t,r._socket[g]!==void 0&&(r._socket.removeListener("data",ce),process.nextTick(Tt,r._socket),t===1005?r.close():r.close(t,e))}function Xr(){let t=this[g];t.isPaused||t._socket.resume()}function Zr(t){let e=this[g];e._socket[g]!==void 0&&(e._socket.removeListener("data",ce),process.nextTick(Tt,e._socket),e.close(t[Ar])),e.emit("error",t)}function vt(){this[g].emitClose()}function Jr(t,e){this[g].emit("message",t,e)}function Qr(t){let e=this[g];e._autoPong&&e.pong(t,!this._isServer,wt),e.emit("ping",t)}function es(t){this[g].emit("pong",t)}function Tt(t){t.resume()}function Ct(){let t=this[g];this.removeListener("close",Ct),this.removeListener("data",ce),this.removeListener("end",Nt),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[g]=void 0,clearTimeout(t._closeTimer),t._receiver._writableState.finished||t._receiver._writableState.errorEmitted?t.emitClose():(t._receiver.on("error",vt),t._receiver.on("finish",vt))}function ce(t){this[g]._receiver.write(t)||this.pause()}function Nt(){let t=this[g];t._readyState=d.CLOSING,t._receiver.end(),this.end()}function Lt(){let t=this[g];this.removeListener("error",Lt),this.on("error",wt),t&&(t._readyState=d.CLOSING,this.destroy())}});var Ut=x((Ns,Rt)=>{"use strict";var{tokenChars:ts}=H();function rs(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&&ts[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}Rt.exports={parse:rs}});var Ft=x((Ps,At)=>{"use strict";var ss=p("events"),he=p("http"),{Duplex:Ls}=p("stream"),{createHash:is}=p("crypto"),It=Ce(),I=V(),ns=Ut(),os=Ue(),{GUID:as,kWebSocket:fs}=N(),ls=/^[+/0-9A-Za-z]{22}==$/,Bt=0,Mt=1,Wt=2,Ie=class extends ss{constructor(e,r){if(super(),e={allowSynchronousEvents:!1,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:os,...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=he.createServer((s,i)=>{let n=he.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=cs(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=Bt}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===Wt){e&&this.once("close",()=>{e(new Error("The server is not running"))}),process.nextTick(X,this);return}if(e&&this.once("close",e),this._state!==Mt)if(this._state=Mt,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(X,this):process.nextTick(X,this);else{let r=this._server;this._removeListeners(),this._removeListeners=this._server=null,r.close(()=>{X(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",Dt);let n=e.headers["sec-websocket-key"],o=+e.headers["sec-websocket-version"];if(e.method!=="GET"){B(this,e,r,405,"Invalid HTTP method");return}if(e.headers.upgrade.toLowerCase()!=="websocket"){B(this,e,r,400,"Invalid Upgrade header");return}if(!n||!ls.test(n)){B(this,e,r,400,"Missing or invalid Sec-WebSocket-Key header");return}if(o!==8&&o!==13){B(this,e,r,400,"Missing or invalid Sec-WebSocket-Version header");return}if(!this.shouldHandle(e)){Z(r,400);return}let f=e.headers["sec-websocket-protocol"],l=new Set;if(f!==void 0)try{l=ns.parse(f)}catch{B(this,e,r,400,"Invalid Sec-WebSocket-Protocol header");return}let a=e.headers["sec-websocket-extensions"],h={};if(this.options.perMessageDeflate&&a!==void 0){let c=new I(this.options.perMessageDeflate,!0,this.options.maxPayload);try{let m=It.parse(a);m[I.extensionName]&&(c.accept(m[I.extensionName]),h[I.extensionName]=c)}catch{B(this,e,r,400,"Invalid or unacceptable Sec-WebSocket-Extensions header");return}}if(this.options.verifyClient){let c={origin:e.headers[`${o===8?"sec-websocket-origin":"origin"}`],secure:!!(e.socket.authorized||e.socket.encrypted),req:e};if(this.options.verifyClient.length===2){this.options.verifyClient(c,(m,y,_,u)=>{if(!m)return Z(r,y||401,_,u);this.completeUpgrade(h,n,l,e,r,s,i)});return}if(!this.options.verifyClient(c))return Z(r,401)}this.completeUpgrade(h,n,l,e,r,s,i)}completeUpgrade(e,r,s,i,n,o,f){if(!n.readable||!n.writable)return n.destroy();if(n[fs])throw new Error("server.handleUpgrade() was called more than once with the same socket, possibly due to a misconfiguration");if(this._state>Bt)return Z(n,503);let a=["HTTP/1.1 101 Switching Protocols","Upgrade: websocket","Connection: Upgrade",`Sec-WebSocket-Accept: ${is("sha1").update(r+as).digest("base64")}`],h=new this.options.WebSocket(null,void 0,this.options);if(s.size){let c=this.options.handleProtocols?this.options.handleProtocols(s,i):s.values().next().value;c&&(a.push(`Sec-WebSocket-Protocol: ${c}`),h._protocol=c)}if(e[I.extensionName]){let c=e[I.extensionName].params,m=It.format({[I.extensionName]:[c]});a.push(`Sec-WebSocket-Extensions: ${m}`),h._extensions=e}this.emit("headers",a,i),n.write(a.concat(`\r
2
+ `).join(`\r
3
+ `)),n.removeListener("error",Dt),h.setSocket(n,o,{allowSynchronousEvents:this.options.allowSynchronousEvents,maxPayload:this.options.maxPayload,skipUTF8Validation:this.options.skipUTF8Validation}),this.clients&&(this.clients.add(h),h.on("close",()=>{this.clients.delete(h),this._shouldEmitClose&&!this.clients.size&&process.nextTick(X,this)})),f(h,i)}};At.exports=Ie;function cs(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 X(t){t._state=Wt,t.emit("close")}function Dt(){this.destroy()}function Z(t,e,r,s){r=r||he.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} ${he.STATUS_CODES[e]}\r
4
+ `+Object.keys(s).map(i=>`${i}: ${s[i]}`).join(`\r
5
+ `)+`\r
6
+ \r
7
+ `+r)}function B(t,e,r,s,i){if(t.listenerCount("wsClientError")){let n=new Error(i);Error.captureStackTrace(n,B),t.emit("wsClientError",n,r,e)}else Z(r,s,i)}});import k from"process";var hs=G($e(),1),us=G(we(),1),ds=G(Oe(),1),Gt=G(Ue(),1),qt=G(Ft(),1);var $t=Gt.default;function jt({merkurConfig:t}){let{protocol:e,host:r}=t.socketServer;return new $t(`${e}//${r}`)}var Be,Me;function Ds(){return k.env.CLI_CONFIG&&!Be&&(Be=JSON.parse(k.env.CLI_CONFIG)),k.env.MERKUR_CONFIG&&!Me&&(Me=JSON.parse(k.env.MERKUR_CONFIG)),{merkurConfig:Me,cliConfig:Be}}function Ws({merkurConfig:t,cliConfig:e}){function r(){let s=jt({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{Ws as autoReload,Ds as resolveConfig};
package/package.json CHANGED
@@ -1,14 +1,20 @@
1
1
  {
2
2
  "name": "@merkur/cli",
3
- "version": "0.35.1",
3
+ "version": "0.35.3",
4
4
  "description": "Merkur is tiny and extensible library for creating front-end microservices.",
5
5
  "bin": {
6
6
  "merkur": "./bin/merkur.mjs"
7
7
  },
8
+ "types": "./types.d.ts",
8
9
  "exports": {
9
- "./server": {
10
+ ".": {
11
+ "types": "./types.d.ts",
10
12
  "import": "./lib/index.mjs",
11
13
  "require": "./lib/index.cjs"
14
+ },
15
+ "./server": {
16
+ "import": "./lib/server.mjs",
17
+ "require": "./lib/server.cjs"
12
18
  }
13
19
  },
14
20
  "scripts": {
@@ -50,11 +56,14 @@
50
56
  "express": "^4.18.2",
51
57
  "ws": "^8.16.0"
52
58
  },
59
+ "devDependencies": {
60
+ "@types/express": "^4.17.14"
61
+ },
53
62
  "peerDependencies": {
54
63
  "@merkur/tools": "*"
55
64
  },
56
65
  "engines": {
57
66
  "node": ">=20"
58
67
  },
59
- "gitHead": "bc934c6a61b706062dd1fc11c9805457900e8d72"
68
+ "gitHead": "6b65a5581c1c32a14479c3bb4702c394592d0a20"
60
69
  }
@@ -5,7 +5,7 @@ export async function hmr({ to, command, changed }) {
5
5
  return new Promise((resolve) => {
6
6
  const element = document.querySelector(`[data-name="${asset.name}"]`);
7
7
 
8
- if (!element) {
8
+ if (!element || element.nodeName === 'STYLE') {
9
9
  location.reload();
10
10
  return;
11
11
  }
package/src/devServer.mjs CHANGED
@@ -25,7 +25,8 @@ export async function runDevServer({ context, merkurConfig, cliConfig }) {
25
25
  path: playgroundPath,
26
26
  widgetHandler,
27
27
  } = merkurConfig.playground;
28
- const { cliFolder, command } = cliConfig;
28
+ const { cliFolder, command, writeToDisk, buildFolder, projectFolder } =
29
+ cliConfig;
29
30
 
30
31
  return new Promise((resolve, reject) => {
31
32
  const app = express();
@@ -47,7 +48,7 @@ export async function runDevServer({ context, merkurConfig, cliConfig }) {
47
48
  asyncMiddleware(async (req, res) => {
48
49
  const isDevCommand = command === COMMAND_NAME.DEV;
49
50
 
50
- const widgetProperties = await widgetHandler(req);
51
+ const widgetProperties = await widgetHandler(req, res);
51
52
 
52
53
  // TODO refactor
53
54
  if (isDevCommand) {
@@ -59,6 +60,18 @@ export async function runDevServer({ context, merkurConfig, cliConfig }) {
59
60
  origin,
60
61
  );
61
62
 
63
+ if (asset.type.includes('inline')) {
64
+ const path = asset.source.replace(origin, '');
65
+ if (writeToDisk) {
66
+ asset.source = fs.readFileSync(
67
+ path.join(path.resolve(projectFolder, buildFolder), path),
68
+ 'utf8',
69
+ );
70
+ } else {
71
+ asset.source = context.memory[path]?.text;
72
+ }
73
+ }
74
+
62
75
  return asset;
63
76
  }
64
77
 
@@ -69,6 +82,21 @@ export async function runDevServer({ context, merkurConfig, cliConfig }) {
69
82
  assetVersion
70
83
  ].replace(widgetServer.origin, origin);
71
84
  }
85
+
86
+ if (asset.type.includes('inline')) {
87
+ const path = asset.source.replace(origin, '');
88
+ if (writeToDisk) {
89
+ asset.source = fs.readFileSync(
90
+ path.join(
91
+ path.resolve(projectFolder, buildFolder),
92
+ path,
93
+ ),
94
+ 'utf8',
95
+ );
96
+ } else {
97
+ asset.source = context.memory[path]?.text;
98
+ }
99
+ }
72
100
  });
73
101
  }
74
102
 
package/src/index.mjs CHANGED
@@ -1,62 +0,0 @@
1
- import process from 'node:process';
2
-
3
- import { createClient } from './websocket.mjs';
4
-
5
- let cliConfig, merkurConfig;
6
-
7
- export function resolveConfig() {
8
- if (process.env.CLI_CONFIG && !cliConfig) {
9
- cliConfig = JSON.parse(process.env.CLI_CONFIG);
10
- }
11
-
12
- if (process.env.MERKUR_CONFIG && !merkurConfig) {
13
- merkurConfig = JSON.parse(process.env.MERKUR_CONFIG);
14
- }
15
-
16
- return {
17
- merkurConfig,
18
- cliConfig,
19
- };
20
- }
21
-
22
- export function autoReload({ merkurConfig, cliConfig }) {
23
- function reload() {
24
- const client = createClient({ merkurConfig });
25
- client.on('error', (error) => {
26
- console.error(error);
27
- client.terminate();
28
- });
29
-
30
- client.on('open', function open() {
31
- setTimeout(() => {
32
- client.send(
33
- JSON.stringify({
34
- to: 'browser',
35
- command: 'reload',
36
- changed: [],
37
- errors: [],
38
- }),
39
- );
40
- client.terminate();
41
- }, 50);
42
- });
43
- }
44
-
45
- if (cliConfig.watch) {
46
- reload();
47
-
48
- const handleExit = () => process.exit(0);
49
- process.on('SIGINT', handleExit);
50
- process.on('SIGQUIT', handleExit);
51
- process.on('SIGTERM', handleExit);
52
-
53
- // TODO improve for error-overlay
54
- process.on('uncaughtException', () => {
55
- reload();
56
- });
57
-
58
- process.on('unhandledRejection', () => {
59
- reload();
60
- });
61
- }
62
- }
package/src/server.mjs ADDED
@@ -0,0 +1,62 @@
1
+ import process from 'node:process';
2
+
3
+ import { createClient } from './websocket.mjs';
4
+
5
+ let cliConfig, merkurConfig;
6
+
7
+ export function resolveConfig() {
8
+ if (process.env.CLI_CONFIG && !cliConfig) {
9
+ cliConfig = JSON.parse(process.env.CLI_CONFIG);
10
+ }
11
+
12
+ if (process.env.MERKUR_CONFIG && !merkurConfig) {
13
+ merkurConfig = JSON.parse(process.env.MERKUR_CONFIG);
14
+ }
15
+
16
+ return {
17
+ merkurConfig,
18
+ cliConfig,
19
+ };
20
+ }
21
+
22
+ export function autoReload({ merkurConfig, cliConfig }) {
23
+ function reload() {
24
+ const client = createClient({ merkurConfig });
25
+ client.on('error', (error) => {
26
+ console.error(error);
27
+ client.terminate();
28
+ });
29
+
30
+ client.on('open', function open() {
31
+ setTimeout(() => {
32
+ client.send(
33
+ JSON.stringify({
34
+ to: 'browser',
35
+ command: 'reload',
36
+ changed: [],
37
+ errors: [],
38
+ }),
39
+ );
40
+ client.terminate();
41
+ }, 50);
42
+ });
43
+ }
44
+
45
+ if (cliConfig.watch) {
46
+ reload();
47
+
48
+ const handleExit = () => process.exit(0);
49
+ process.on('SIGINT', handleExit);
50
+ process.on('SIGQUIT', handleExit);
51
+ process.on('SIGTERM', handleExit);
52
+
53
+ // TODO improve for error-overlay
54
+ process.on('uncaughtException', () => {
55
+ reload();
56
+ });
57
+
58
+ process.on('unhandledRejection', () => {
59
+ reload();
60
+ });
61
+ }
62
+ }
@@ -9,6 +9,12 @@
9
9
  <%if (asset.type==='stylesheet' ) { %>
10
10
  <link rel='stylesheet' href='<%= asset.source %>' data-name="<%= asset.name %>" />
11
11
  <% } %>
12
+ <%if (asset.type==='inlineStyle' ) { %>
13
+ <style data-name="<%= asset.name %>">
14
+ <%= asset.source %>
15
+ </style>
16
+ <% } %>
17
+
12
18
  <%if (asset.type==='script' ) { %>
13
19
  <%if (typeof asset.source==='string' ) { %>
14
20
  <script src='<%= asset.source %>' defer='true' data-name="<%= asset.name %>"></script>
@@ -9,7 +9,9 @@
9
9
  </head>
10
10
 
11
11
  <body>
12
- <div class="headline-view"><%- widgetProperties && widgetProperties.slot && widgetProperties.slot.headline.html %>
12
+ <% if(widgetProperties?.slot?.headline?.html){ %>
13
+ <div class="headline-view"><%- widgetProperties && widgetProperties.slot && widgetProperties.slot.headline && widgetProperties.slot.headline.html %>
14
+ <% } %>
13
15
  </div>
14
16
  <div class="merkur-view"><%- html %></div>
15
17
  <script>
@@ -17,7 +19,9 @@
17
19
  __merkur__.create(<%- JSON.stringify(widgetProperties) %>)
18
20
  .then(function (widget) {
19
21
  widget.containerSelector = '.merkur-view';
20
- widget.slot.headline.containerSelector = '.headline-view';
22
+ if (widget?.slot?.headline) {
23
+ widget.slot.headline.containerSelector = '.headline-view';
24
+ }
21
25
 
22
26
  widget.mount();
23
27
  });