@merkur/cli 0.38.1 → 0.40.0
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/README.md +1 -1
- package/bin/merkur.mjs +1 -1
- package/lib/devClient.mjs +1 -1
- package/lib/index.cjs +2 -2
- package/lib/index.mjs +3 -3
- package/lib/server.cjs +2 -2
- package/lib/server.mjs +2 -2
- package/package.json +9 -12
- package/src/devClient/hmr.mjs +4 -2
- package/src/devClient/index.mjs +25 -3
- package/src/devServer.mjs +20 -0
- package/src/merkurConfig.mjs +10 -1
- package/src/plugins/devPlugin.mjs +15 -1
- package/src/runBuild.mjs +1 -1
- package/src/templates/head.ejs +7 -7
- package/types.d.ts +2 -2
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
<p align="center">
|
|
2
2
|
<a href="https://merkur.js.org/docs/getting-started" title="Getting started">
|
|
3
|
-
<img src="https://raw.githubusercontent.com/mjancarik/merkur/master/images/merkur-
|
|
3
|
+
<img src="https://raw.githubusercontent.com/mjancarik/merkur/master/images/merkur-logo.png" width="100px" height="100px" alt="Merkur illustration"/>
|
|
4
4
|
</a>
|
|
5
5
|
</p>
|
|
6
6
|
|
package/bin/merkur.mjs
CHANGED
package/lib/devClient.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";(()=>{var
|
|
1
|
+
"use strict";(()=>{function _(e){return typeof e=="function"}function R({name:e,version:r,createWidget:t}){let o=d();o.$in.widgetFactory[e+r]=t}function S(e={}){let r=d(),{name:t,version:o}=e,s=r.$in.widgetFactory[t+o];if(!_(s))throw new Error(`The widget with defined name and version "${t+o}" is not defined.`);return s(e)}function h({$plugins:e=[]}={}){let r=d();return e.forEach(t=>{t&&_(t.setup)&&t.setup(r)}),r}function d(){let e=C();return e.__merkur__||(e.__merkur__={$in:{widgets:[],widgetFactory:{}},$external:{},$dependencies:{},isRegistered:v,register:R,create:S}),e.__merkur__}function v(e){let r=d();return!!Object.keys(r.$in.widgetFactory).find(t=>new RegExp(`^${e}`).test(t))}function C(){return typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{}}var p=class{#e=new Set;pipe(...e){return N(...e)(this)}next(...e){Array.from(this.#e).forEach(r=>{typeof r=="function"?r(...e):r.next(...e)})}error(...e){Array.from(this.#e).forEach(r=>{r?.error?.(...e),this.unsubscribe(r)})}complete(...e){Array.from(this.#e).forEach(r=>{r?.complete?.(...e),this.unsubscribe(r)})}subscribe(e){return this.#e.add(e),{unsubscribe:()=>{this.unsubscribe(e)}}}unsubscribe(e){this.#e.delete(e)}};function N(...e){return r=>Array.from(e).reduce((t,o)=>o(t),r)}var M=5,f=class extends p{#e=null;#r=0;#t={};constructor(r){super(),this.#t=r}init(){return this.#n(),this}send(r){return this.#e&&this.#e.send(r),this}destroy(){return this.#e&&(this.#e.close(),this.#e=null),this}#n(){this.#e=Reflect.construct(WebSocket,[`${this.#t.protocol}//${this.#t.host}`]),this.#e.onopen=()=>{this.#r=0},this.#e.onmessage=r=>{try{let t=JSON.parse(r.data);this.next(t)}catch(t){console.error(t)}},this.#e.onerror=r=>{console.error(r)},this.#e.onclose=()=>{this.#r>=M||(this.#r+=1,setTimeout(()=>{this.#n()},this.#r*500))}}};async function w({to:e,command:r}){e==="browser"&&r==="reload"&&location.reload()}async function k({to:e,command:r,changed:t}){if(e==="browser"&&r==="refresh"){if(await Promise.all(t.map(async s=>new Promise(a=>{let n=document.querySelector(`[data-merkur-asset-name="${s.name}"]`);if(!n||n.nodeName==="STYLE"){location.reload();return}let i=null,l=new URLSearchParams({version:Math.random()});if(n.nodeName==="LINK"){let c=new URL(n.href);i=n.cloneNode(),i.onload=()=>{n.remove(),a()},i.onerror=()=>{n.remove(),a()},i.href=new URL(`${c.origin}${c.pathname}?${l.toString()}`)}if(n.nodeName==="SCRIPT"){let c=new URL(n.src);i=document.createElement("script"),i.setAttribute("data-merkur-asset-name",s.name),i.onload=()=>{n.remove(),a()},i.onerror=()=>{n.remove(),a()},i.src=new URL(`${c.origin}${c.pathname}?${l.toString()}`)}n.parentNode.insertBefore(i,n.nextSibling)}))),!t.some(s=>s.name.endsWith(".js")))return;let o=window.__merkur_dev__.widgets;window.__merkur_dev__.widgets=[],o.forEach(async s=>{let{props:a,state:n,$external:i,name:l,version:c,containerSelector:$,container:y,slot:g}=s,E={props:a,state:n,$external:i,name:l,version:c,containerSelector:$,container:y,slot:g},x=await window.__merkur__.create(E);await s.unmount(),await x.mount()})}}var b=Symbol("MERKUR_CREATE_ORIGINAL"),{__merkur_dev__:u}=window,m=new f(u.merkurConfig.socketServer);u.webSocket=m;u.widgets=[];m.init();m.subscribe(w);m.subscribe(k);if(window?.__merkur__?.create){let e=window.__merkur__.create;window.__merkur__.create=async function(...t){let o=await e(...t);return u.widgets.push(o),o}}function O(){if(window?.__merkur__?.create&&!window.__merkur__.create[b]){let e=window.__merkur__.create;window.__merkur__.create=async function(...t){let o=await e(...t);return u.widgets.push(o),o},window.__merkur__.create[b]=e}}h();O();})();
|
package/lib/index.cjs
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
"use strict";var $=Object.create;var m=Object.defineProperty;var Y=Object.getOwnPropertyDescriptor;var D=Object.getOwnPropertyNames;var U=Object.getPrototypeOf,V=Object.prototype.hasOwnProperty;var K=(t,e)=>{for(var r in e)m(t,r,{get:e[r],enumerable:!0})},v=(t,e,r,o)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of D(e))!V.call(t,n)&&n!==r&&m(t,n,{get:()=>e[n],enumerable:!(o=Y(e,n))||o.enumerable});return t};var
|
|
1
|
+
"use strict";var $=Object.create;var m=Object.defineProperty;var Y=Object.getOwnPropertyDescriptor;var D=Object.getOwnPropertyNames;var U=Object.getPrototypeOf,V=Object.prototype.hasOwnProperty;var K=(t,e)=>{for(var r in e)m(t,r,{get:e[r],enumerable:!0})},v=(t,e,r,o)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of D(e))!V.call(t,n)&&n!==r&&m(t,n,{get:()=>e[n],enumerable:!(o=Y(e,n))||o.enumerable});return t};var C=(t,e,r)=>(r=t!=null?$(U(t)):{},v(e||!t||!t.__esModule?m(r,"default",{value:t,enumerable:!0}):r,t)),W=t=>v(m({},"__esModule",{value:!0}),t);var se={};K(se,{createLogger:()=>G});module.exports=W(se);var B=(t=0)=>e=>`\x1B[${e+t}m`,M=(t=0)=>e=>`\x1B[${38+t};5;${e}m`,I=(t=0)=>(e,r,o)=>`\x1B[${38+t};2;${e};${r};${o}m`,l={modifier:{reset:[0,0],bold:[1,22],dim:[2,22],italic:[3,23],underline:[4,24],overline:[53,55],inverse:[7,27],hidden:[8,28],strikethrough:[9,29]},color:{black:[30,39],red:[31,39],green:[32,39],yellow:[33,39],blue:[34,39],magenta:[35,39],cyan:[36,39],white:[37,39],blackBright:[90,39],gray:[90,39],grey:[90,39],redBright:[91,39],greenBright:[92,39],yellowBright:[93,39],blueBright:[94,39],magentaBright:[95,39],cyanBright:[96,39],whiteBright:[97,39]},bgColor:{bgBlack:[40,49],bgRed:[41,49],bgGreen:[42,49],bgYellow:[43,49],bgBlue:[44,49],bgMagenta:[45,49],bgCyan:[46,49],bgWhite:[47,49],bgBlackBright:[100,49],bgGray:[100,49],bgGrey:[100,49],bgRedBright:[101,49],bgGreenBright:[102,49],bgYellowBright:[103,49],bgBlueBright:[104,49],bgMagentaBright:[105,49],bgCyanBright:[106,49],bgWhiteBright:[107,49]}},ue=Object.keys(l.modifier),z=Object.keys(l.color),H=Object.keys(l.bgColor),ae=[...z,...H];function q(){let t=new Map;for(let[e,r]of Object.entries(l)){for(let[o,n]of Object.entries(r))l[o]={open:`\x1B[${n[0]}m`,close:`\x1B[${n[1]}m`},r[o]=l[o],t.set(n[0],n[1]);Object.defineProperty(l,e,{value:r,enumerable:!1})}return Object.defineProperty(l,"codes",{value:t,enumerable:!1}),l.color.close="\x1B[39m",l.bgColor.close="\x1B[49m",l.color.ansi=B(),l.color.ansi256=M(),l.color.ansi16m=I(),l.bgColor.ansi=B(10),l.bgColor.ansi256=M(10),l.bgColor.ansi16m=I(10),Object.defineProperties(l,{rgbToAnsi256:{value(e,r,o){return e===r&&r===o?e<8?16:e>248?231:Math.round((e-8)/247*24)+232:16+36*Math.round(e/255*5)+6*Math.round(r/255*5)+Math.round(o/255*5)},enumerable:!1},hexToRgb:{value(e){let r=/[a-f\d]{6}|[a-f\d]{3}/i.exec(e.toString(16));if(!r)return[0,0,0];let[o]=r;o.length===3&&(o=[...o].map(s=>s+s).join(""));let n=Number.parseInt(o,16);return[n>>16&255,n>>8&255,n&255]},enumerable:!1},hexToAnsi256:{value:e=>l.rgbToAnsi256(...l.hexToRgb(e)),enumerable:!1},ansi256ToAnsi:{value(e){if(e<8)return 30+e;if(e<16)return 90+(e-8);let r,o,n;if(e>=232)r=((e-232)*10+8)/255,o=r,n=r;else{e-=16;let N=e%36;r=Math.floor(e/36)/5,o=Math.floor(N/6)/5,n=N%6/5}let s=Math.max(r,o,n)*2;if(s===0)return 30;let c=30+(Math.round(n)<<2|Math.round(o)<<1|Math.round(r));return s===2&&(c+=60),c},enumerable:!1},rgbToAnsi:{value:(e,r,o)=>l.ansi256ToAnsi(l.rgbToAnsi256(e,r,o)),enumerable:!1},hexToAnsi:{value:e=>l.ansi256ToAnsi(l.hexToAnsi256(e)),enumerable:!1}}),l}var J=q(),a=J;var O=C(require("node:process"),1),F=C(require("node:os"),1),R=C(require("node:tty"),1);function u(t,e=globalThis.Deno?globalThis.Deno.args:O.default.argv){let r=t.startsWith("-")?"":t.length===1?"-":"--",o=e.indexOf(r+t),n=e.indexOf("--");return o!==-1&&(n===-1||o<n)}var{env:i}=O.default,g;u("no-color")||u("no-colors")||u("color=false")||u("color=never")?g=0:(u("color")||u("colors")||u("color=true")||u("color=always"))&&(g=1);function Q(){if("FORCE_COLOR"in i)return i.FORCE_COLOR==="true"?1:i.FORCE_COLOR==="false"?0:i.FORCE_COLOR.length===0?1:Math.min(Number.parseInt(i.FORCE_COLOR,10),3)}function X(t){return t===0?!1:{level:t,hasBasic:!0,has256:t>=2,has16m:t>=3}}function Z(t,{streamIsTTY:e,sniffFlags:r=!0}={}){let o=Q();o!==void 0&&(g=o);let n=r?g:o;if(n===0)return 0;if(r){if(u("color=16m")||u("color=full")||u("color=truecolor"))return 3;if(u("color=256"))return 2}if("TF_BUILD"in i&&"AGENT_NAME"in i)return 1;if(t&&!e&&n===void 0)return 0;let s=n||0;if(i.TERM==="dumb")return s;if(O.default.platform==="win32"){let c=F.default.release().split(".");return Number(c[0])>=10&&Number(c[2])>=10586?Number(c[2])>=14931?3:2:1}if("CI"in i)return["GITHUB_ACTIONS","GITEA_ACTIONS","CIRCLECI"].some(c=>c in i)?3:["TRAVIS","APPVEYOR","GITLAB_CI","BUILDKITE","DRONE"].some(c=>c in i)||i.CI_NAME==="codeship"?1:s;if("TEAMCITY_VERSION"in i)return/^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(i.TEAMCITY_VERSION)?1:0;if(i.COLORTERM==="truecolor"||i.TERM==="xterm-kitty"||i.TERM==="xterm-ghostty"||i.TERM==="wezterm")return 3;if("TERM_PROGRAM"in i){let c=Number.parseInt((i.TERM_PROGRAM_VERSION||"").split(".")[0],10);switch(i.TERM_PROGRAM){case"iTerm.app":return c>=3?3:2;case"Apple_Terminal":return 2}}return/-256(color)?$/i.test(i.TERM)?2:/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(i.TERM)||"COLORTERM"in i?1:s}function S(t,e={}){let r=Z(t,{streamIsTTY:t&&t.isTTY,...e});return X(r)}var ee={stdout:S({isTTY:R.default.isatty(1)}),stderr:S({isTTY:R.default.isatty(2)})},w=ee;function _(t,e,r){let o=t.indexOf(e);if(o===-1)return t;let n=e.length,s=0,c="";do c+=t.slice(s,o)+e+r,s=o+n,o=t.indexOf(e,s);while(o!==-1);return c+=t.slice(s),c}function j(t,e,r,o){let n=0,s="";do{let c=t[o-1]==="\r";s+=t.slice(n,c?o-1:o)+e+(c?`\r
|
|
2
2
|
`:`
|
|
3
3
|
`)+r,n=o+1,o=t.indexOf(`
|
|
4
|
-
`,n)}while(o!==-1);return s+=t.slice(n),s}var{stdout:k,stderr:L}=w,y=Symbol("GENERATOR"),b=Symbol("STYLER"),d=Symbol("IS_EMPTY"),P=["ansi","ansi","ansi256","ansi16m"],h=Object.create(null),re=(t,e={})=>{if(e.level&&!(Number.isInteger(e.level)&&e.level>=0&&e.level<=3))throw new Error("The `level` option should be an integer from 0 to 3");let r=k?k.level:0;t.level=e.level===void 0?r:e.level};var te=t=>{let e=(...r)=>r.join(" ");return re(e,t),Object.setPrototypeOf(e,p.prototype),e};function p(t){return te(t)}Object.setPrototypeOf(p.prototype,Function.prototype);for(let[t,e]of Object.entries(a))h[t]={get(){let r=
|
|
4
|
+
`,n)}while(o!==-1);return s+=t.slice(n),s}var{stdout:k,stderr:L}=w,y=Symbol("GENERATOR"),b=Symbol("STYLER"),d=Symbol("IS_EMPTY"),P=["ansi","ansi","ansi256","ansi16m"],h=Object.create(null),re=(t,e={})=>{if(e.level&&!(Number.isInteger(e.level)&&e.level>=0&&e.level<=3))throw new Error("The `level` option should be an integer from 0 to 3");let r=k?k.level:0;t.level=e.level===void 0?r:e.level};var te=t=>{let e=(...r)=>r.join(" ");return re(e,t),Object.setPrototypeOf(e,p.prototype),e};function p(t){return te(t)}Object.setPrototypeOf(p.prototype,Function.prototype);for(let[t,e]of Object.entries(a))h[t]={get(){let r=T(this,E(e.open,e.close,this[b]),this[d]);return Object.defineProperty(this,t,{value:r}),r}};h.visible={get(){let t=T(this,this[b],!0);return Object.defineProperty(this,"visible",{value:t}),t}};var A=(t,e,r,...o)=>t==="rgb"?e==="ansi16m"?a[r].ansi16m(...o):e==="ansi256"?a[r].ansi256(a.rgbToAnsi256(...o)):a[r].ansi(a.rgbToAnsi(...o)):t==="hex"?A("rgb",e,r,...a.hexToRgb(...o)):a[r][t](...o),oe=["rgb","hex","ansi256"];for(let t of oe){h[t]={get(){let{level:r}=this;return function(...o){let n=E(A(t,P[r],"color",...o),a.color.close,this[b]);return T(this,n,this[d])}}};let e="bg"+t[0].toUpperCase()+t.slice(1);h[e]={get(){let{level:r}=this;return function(...o){let n=E(A(t,P[r],"bgColor",...o),a.bgColor.close,this[b]);return T(this,n,this[d])}}}}var ne=Object.defineProperties(()=>{},{...h,level:{enumerable:!0,get(){return this[y].level},set(t){this[y].level=t}}}),E=(t,e,r)=>{let o,n;return r===void 0?(o=t,n=e):(o=r.openAll+t,n=e+r.closeAll),{open:t,close:e,openAll:o,closeAll:n,parent:r}},T=(t,e,r)=>{let o=(...n)=>le(o,n.length===1?""+n[0]:n.join(" "));return Object.setPrototypeOf(o,ne),o[y]=t,o[b]=e,o[d]=r,o},le=(t,e)=>{if(t.level<=0||!e)return t[d]?"":e;let r=t[b];if(r===void 0)return e;let{openAll:o,closeAll:n}=r;if(e.includes("\x1B"))for(;r!==void 0;)e=_(e,r.close,r.open),r=r.parent;let s=e.indexOf(`
|
|
5
5
|
`);return s!==-1&&(e=j(e,n,o,s)),o+e+n};Object.defineProperties(p.prototype,h);var ie=p(),ge=p({level:L?L.level:0});var f=ie;var x=class{#r=null;#t=null;constructor(e,r){this.#r=e,this.#t=r}#e(e,r,o){e&&process.stdout.write(r(`${e}: ${this.#r?`(${this.#r}) `:""}`));try{o=o??typeof o,process.stdout.write(o)}catch(n){console.error(n)}process.stdout.write(`
|
|
6
6
|
`)}info(e,r){this.#e("info",f.bold.cyan,e,r)}log(e,r){this.#e(null,f.bold.cyan,e,r)}debug(e,r){this.#t?.verbose&&this.#e("debug",f.bold.cyan,e,r)}warn(e,r){this.#e("warn",f.bold.yellow,e,r)}error(e,r){if(e instanceof Error){let[o,...n]=e.stack?.split(`
|
|
7
7
|
`)??"";this.#e("error",f.bold.red,`${f.underline(e.name)}: ${e.message.trim()}`,r),process.stdout.write(`
|
package/lib/index.mjs
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
var E=(t=0)=>e=>`\x1B[${e+t}m`,x=(t=0)=>e=>`\x1B[${38+t};5;${e}m`,N=(t=0)=>(e,r,o)=>`\x1B[${38+t};2;${e};${r};${o}m`,l={modifier:{reset:[0,0],bold:[1,22],dim:[2,22],italic:[3,23],underline:[4,24],overline:[53,55],inverse:[7,27],hidden:[8,28],strikethrough:[9,29]},color:{black:[30,39],red:[31,39],green:[32,39],yellow:[33,39],blue:[34,39],magenta:[35,39],cyan:[36,39],white:[37,39],blackBright:[90,39],gray:[90,39],grey:[90,39],redBright:[91,39],greenBright:[92,39],yellowBright:[93,39],blueBright:[94,39],magentaBright:[95,39],cyanBright:[96,39],whiteBright:[97,39]},bgColor:{bgBlack:[40,49],bgRed:[41,49],bgGreen:[42,49],bgYellow:[43,49],bgBlue:[44,49],bgMagenta:[45,49],bgCyan:[46,49],bgWhite:[47,49],bgBlackBright:[100,49],bgGray:[100,49],bgGrey:[100,49],bgRedBright:[101,49],bgGreenBright:[102,49],bgYellowBright:[103,49],bgBlueBright:[104,49],bgMagentaBright:[105,49],bgCyanBright:[106,49],bgWhiteBright:[107,49]}},Q=Object.keys(l.modifier),j=Object.keys(l.color),k=Object.keys(l.bgColor),X=[...j,...k];function L(){let t=new Map;for(let[e,r]of Object.entries(l)){for(let[o,n]of Object.entries(r))l[o]={open:`\x1B[${n[0]}m`,close:`\x1B[${n[1]}m`},r[o]=l[o],t.set(n[0],n[1]);Object.defineProperty(l,e,{value:r,enumerable:!1})}return Object.defineProperty(l,"codes",{value:t,enumerable:!1}),l.color.close="\x1B[39m",l.bgColor.close="\x1B[49m",l.color.ansi=E(),l.color.ansi256=x(),l.color.ansi16m=N(),l.bgColor.ansi=E(10),l.bgColor.ansi256=x(10),l.bgColor.ansi16m=N(10),Object.defineProperties(l,{rgbToAnsi256:{value(e,r,o){return e===r&&r===o?e<8?16:e>248?231:Math.round((e-8)/247*24)+232:16+36*Math.round(e/255*5)+6*Math.round(r/255*5)+Math.round(o/255*5)},enumerable:!1},hexToRgb:{value(e){let r=/[a-f\d]{6}|[a-f\d]{3}/i.exec(e.toString(16));if(!r)return[0,0,0];let[o]=r;o.length===3&&(o=[...o].map(s=>s+s).join(""));let n=Number.parseInt(o,16);return[n>>16&255,n>>8&255,n&255]},enumerable:!1},hexToAnsi256:{value:e=>l.rgbToAnsi256(...l.hexToRgb(e)),enumerable:!1},ansi256ToAnsi:{value(e){if(e<8)return 30+e;if(e<16)return 90+(e-8);let r,o,n;if(e>=232)r=((e-232)*10+8)/255,o=r,n=r;else{e-=16;let A=e%36;r=Math.floor(e/36)/5,o=Math.floor(A/6)/5,n=A%6/5}let s=Math.max(r,o,n)*2;if(s===0)return 30;let c=30+(Math.round(n)<<2|Math.round(o)<<1|Math.round(r));return s===2&&(c+=60),c},enumerable:!1},rgbToAnsi:{value:(e,r,o)=>l.ansi256ToAnsi(l.rgbToAnsi256(e,r,o)),enumerable:!1},hexToAnsi:{value:e=>l.ansi256ToAnsi(l.hexToAnsi256(e)),enumerable:!1}}),l}var P=L(),a=P;import O from"node:process";import G from"node:os";import v from"node:tty";function u(t,e=globalThis.Deno?globalThis.Deno.args:O.argv){let r=t.startsWith("-")?"":t.length===1?"-":"--",o=e.indexOf(r+t),n=e.indexOf("--");return o!==-1&&(n===-1||o<n)}var{env:i}=O,m;u("no-color")||u("no-colors")||u("color=false")||u("color=never")?m=0:(u("color")||u("colors")||u("color=true")||u("color=always"))&&(m=1);function $(){if("FORCE_COLOR"in i)return i.FORCE_COLOR==="true"?1:i.FORCE_COLOR==="false"?0:i.FORCE_COLOR.length===0?1:Math.min(Number.parseInt(i.FORCE_COLOR,10),3)}function Y(t){return t===0?!1:{level:t,hasBasic:!0,has256:t>=2,has16m:t>=3}}function D(t,{streamIsTTY:e,sniffFlags:r=!0}={}){let o=$();o!==void 0&&(m=o);let n=r?m:o;if(n===0)return 0;if(r){if(u("color=16m")||u("color=full")||u("color=truecolor"))return 3;if(u("color=256"))return 2}if("TF_BUILD"in i&&"AGENT_NAME"in i)return 1;if(t&&!e&&n===void 0)return 0;let s=n||0;if(i.TERM==="dumb")return s;if(O.platform==="win32"){let c=G.release().split(".");return Number(c[0])>=10&&Number(c[2])>=10586?Number(c[2])>=14931?3:2:1}if("CI"in i)return["GITHUB_ACTIONS","GITEA_ACTIONS","CIRCLECI"].some(c=>c in i)?3:["TRAVIS","APPVEYOR","GITLAB_CI","BUILDKITE","DRONE"].some(c=>c in i)||i.CI_NAME==="codeship"?1:s;if("TEAMCITY_VERSION"in i)return/^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(i.TEAMCITY_VERSION)?1:0;if(i.COLORTERM==="truecolor"||i.TERM==="xterm-kitty")return 3;if("TERM_PROGRAM"in i){let c=Number.parseInt((i.TERM_PROGRAM_VERSION||"").split(".")[0],10);switch(i.TERM_PROGRAM){case"iTerm.app":return c>=3?3:2;case"Apple_Terminal":return 2}}return/-256(color)?$/i.test(i.TERM)?2:/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(i.TERM)||"COLORTERM"in i?1:s}function B(t,e={}){let r=D(t,{streamIsTTY:t&&t.isTTY,...e});return Y(r)}var U={stdout:B({isTTY:v.isatty(1)}),stderr:B({isTTY:v.isatty(2)})},M=U;function I(t,e,r){let o=t.indexOf(e);if(o===-1)return t;let n=e.length,s=0,c="";do c+=t.slice(s,o)+e+r,s=o+n,o=t.indexOf(e,s);while(o!==-1);return c+=t.slice(s),c}function S(t,e,r,o){let n=0,s="";do{let c=t[o-1]==="\r";s+=t.slice(n,c?o-1:o)+e+(c?`\r
|
|
1
|
+
var E=(t=0)=>e=>`\x1B[${e+t}m`,x=(t=0)=>e=>`\x1B[${38+t};5;${e}m`,N=(t=0)=>(e,r,o)=>`\x1B[${38+t};2;${e};${r};${o}m`,l={modifier:{reset:[0,0],bold:[1,22],dim:[2,22],italic:[3,23],underline:[4,24],overline:[53,55],inverse:[7,27],hidden:[8,28],strikethrough:[9,29]},color:{black:[30,39],red:[31,39],green:[32,39],yellow:[33,39],blue:[34,39],magenta:[35,39],cyan:[36,39],white:[37,39],blackBright:[90,39],gray:[90,39],grey:[90,39],redBright:[91,39],greenBright:[92,39],yellowBright:[93,39],blueBright:[94,39],magentaBright:[95,39],cyanBright:[96,39],whiteBright:[97,39]},bgColor:{bgBlack:[40,49],bgRed:[41,49],bgGreen:[42,49],bgYellow:[43,49],bgBlue:[44,49],bgMagenta:[45,49],bgCyan:[46,49],bgWhite:[47,49],bgBlackBright:[100,49],bgGray:[100,49],bgGrey:[100,49],bgRedBright:[101,49],bgGreenBright:[102,49],bgYellowBright:[103,49],bgBlueBright:[104,49],bgMagentaBright:[105,49],bgCyanBright:[106,49],bgWhiteBright:[107,49]}},Q=Object.keys(l.modifier),j=Object.keys(l.color),k=Object.keys(l.bgColor),X=[...j,...k];function L(){let t=new Map;for(let[e,r]of Object.entries(l)){for(let[o,n]of Object.entries(r))l[o]={open:`\x1B[${n[0]}m`,close:`\x1B[${n[1]}m`},r[o]=l[o],t.set(n[0],n[1]);Object.defineProperty(l,e,{value:r,enumerable:!1})}return Object.defineProperty(l,"codes",{value:t,enumerable:!1}),l.color.close="\x1B[39m",l.bgColor.close="\x1B[49m",l.color.ansi=E(),l.color.ansi256=x(),l.color.ansi16m=N(),l.bgColor.ansi=E(10),l.bgColor.ansi256=x(10),l.bgColor.ansi16m=N(10),Object.defineProperties(l,{rgbToAnsi256:{value(e,r,o){return e===r&&r===o?e<8?16:e>248?231:Math.round((e-8)/247*24)+232:16+36*Math.round(e/255*5)+6*Math.round(r/255*5)+Math.round(o/255*5)},enumerable:!1},hexToRgb:{value(e){let r=/[a-f\d]{6}|[a-f\d]{3}/i.exec(e.toString(16));if(!r)return[0,0,0];let[o]=r;o.length===3&&(o=[...o].map(s=>s+s).join(""));let n=Number.parseInt(o,16);return[n>>16&255,n>>8&255,n&255]},enumerable:!1},hexToAnsi256:{value:e=>l.rgbToAnsi256(...l.hexToRgb(e)),enumerable:!1},ansi256ToAnsi:{value(e){if(e<8)return 30+e;if(e<16)return 90+(e-8);let r,o,n;if(e>=232)r=((e-232)*10+8)/255,o=r,n=r;else{e-=16;let A=e%36;r=Math.floor(e/36)/5,o=Math.floor(A/6)/5,n=A%6/5}let s=Math.max(r,o,n)*2;if(s===0)return 30;let c=30+(Math.round(n)<<2|Math.round(o)<<1|Math.round(r));return s===2&&(c+=60),c},enumerable:!1},rgbToAnsi:{value:(e,r,o)=>l.ansi256ToAnsi(l.rgbToAnsi256(e,r,o)),enumerable:!1},hexToAnsi:{value:e=>l.ansi256ToAnsi(l.hexToAnsi256(e)),enumerable:!1}}),l}var P=L(),a=P;import O from"node:process";import G from"node:os";import v from"node:tty";function u(t,e=globalThis.Deno?globalThis.Deno.args:O.argv){let r=t.startsWith("-")?"":t.length===1?"-":"--",o=e.indexOf(r+t),n=e.indexOf("--");return o!==-1&&(n===-1||o<n)}var{env:i}=O,m;u("no-color")||u("no-colors")||u("color=false")||u("color=never")?m=0:(u("color")||u("colors")||u("color=true")||u("color=always"))&&(m=1);function $(){if("FORCE_COLOR"in i)return i.FORCE_COLOR==="true"?1:i.FORCE_COLOR==="false"?0:i.FORCE_COLOR.length===0?1:Math.min(Number.parseInt(i.FORCE_COLOR,10),3)}function Y(t){return t===0?!1:{level:t,hasBasic:!0,has256:t>=2,has16m:t>=3}}function D(t,{streamIsTTY:e,sniffFlags:r=!0}={}){let o=$();o!==void 0&&(m=o);let n=r?m:o;if(n===0)return 0;if(r){if(u("color=16m")||u("color=full")||u("color=truecolor"))return 3;if(u("color=256"))return 2}if("TF_BUILD"in i&&"AGENT_NAME"in i)return 1;if(t&&!e&&n===void 0)return 0;let s=n||0;if(i.TERM==="dumb")return s;if(O.platform==="win32"){let c=G.release().split(".");return Number(c[0])>=10&&Number(c[2])>=10586?Number(c[2])>=14931?3:2:1}if("CI"in i)return["GITHUB_ACTIONS","GITEA_ACTIONS","CIRCLECI"].some(c=>c in i)?3:["TRAVIS","APPVEYOR","GITLAB_CI","BUILDKITE","DRONE"].some(c=>c in i)||i.CI_NAME==="codeship"?1:s;if("TEAMCITY_VERSION"in i)return/^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(i.TEAMCITY_VERSION)?1:0;if(i.COLORTERM==="truecolor"||i.TERM==="xterm-kitty"||i.TERM==="xterm-ghostty"||i.TERM==="wezterm")return 3;if("TERM_PROGRAM"in i){let c=Number.parseInt((i.TERM_PROGRAM_VERSION||"").split(".")[0],10);switch(i.TERM_PROGRAM){case"iTerm.app":return c>=3?3:2;case"Apple_Terminal":return 2}}return/-256(color)?$/i.test(i.TERM)?2:/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(i.TERM)||"COLORTERM"in i?1:s}function B(t,e={}){let r=D(t,{streamIsTTY:t&&t.isTTY,...e});return Y(r)}var U={stdout:B({isTTY:v.isatty(1)}),stderr:B({isTTY:v.isatty(2)})},M=U;function I(t,e,r){let o=t.indexOf(e);if(o===-1)return t;let n=e.length,s=0,c="";do c+=t.slice(s,o)+e+r,s=o+n,o=t.indexOf(e,s);while(o!==-1);return c+=t.slice(s),c}function S(t,e,r,o){let n=0,s="";do{let c=t[o-1]==="\r";s+=t.slice(n,c?o-1:o)+e+(c?`\r
|
|
2
2
|
`:`
|
|
3
3
|
`)+r,n=o+1,o=t.indexOf(`
|
|
4
|
-
`,n)}while(o!==-1);return s+=t.slice(n),s}var{stdout:F,stderr:w}=M,
|
|
5
|
-
`);return s!==-1&&(e=S(e,n,o,s)),o+e+n};Object.defineProperties(p.prototype,h);var
|
|
4
|
+
`,n)}while(o!==-1);return s+=t.slice(n),s}var{stdout:F,stderr:w}=M,T=Symbol("GENERATOR"),b=Symbol("STYLER"),d=Symbol("IS_EMPTY"),_=["ansi","ansi","ansi256","ansi16m"],h=Object.create(null),V=(t,e={})=>{if(e.level&&!(Number.isInteger(e.level)&&e.level>=0&&e.level<=3))throw new Error("The `level` option should be an integer from 0 to 3");let r=F?F.level:0;t.level=e.level===void 0?r:e.level};var K=t=>{let e=(...r)=>r.join(" ");return V(e,t),Object.setPrototypeOf(e,p.prototype),e};function p(t){return K(t)}Object.setPrototypeOf(p.prototype,Function.prototype);for(let[t,e]of Object.entries(a))h[t]={get(){let r=g(this,R(e.open,e.close,this[b]),this[d]);return Object.defineProperty(this,t,{value:r}),r}};h.visible={get(){let t=g(this,this[b],!0);return Object.defineProperty(this,"visible",{value:t}),t}};var C=(t,e,r,...o)=>t==="rgb"?e==="ansi16m"?a[r].ansi16m(...o):e==="ansi256"?a[r].ansi256(a.rgbToAnsi256(...o)):a[r].ansi(a.rgbToAnsi(...o)):t==="hex"?C("rgb",e,r,...a.hexToRgb(...o)):a[r][t](...o),W=["rgb","hex","ansi256"];for(let t of W){h[t]={get(){let{level:r}=this;return function(...o){let n=R(C(t,_[r],"color",...o),a.color.close,this[b]);return g(this,n,this[d])}}};let e="bg"+t[0].toUpperCase()+t.slice(1);h[e]={get(){let{level:r}=this;return function(...o){let n=R(C(t,_[r],"bgColor",...o),a.bgColor.close,this[b]);return g(this,n,this[d])}}}}var z=Object.defineProperties(()=>{},{...h,level:{enumerable:!0,get(){return this[T].level},set(t){this[T].level=t}}}),R=(t,e,r)=>{let o,n;return r===void 0?(o=t,n=e):(o=r.openAll+t,n=e+r.closeAll),{open:t,close:e,openAll:o,closeAll:n,parent:r}},g=(t,e,r)=>{let o=(...n)=>H(o,n.length===1?""+n[0]:n.join(" "));return Object.setPrototypeOf(o,z),o[T]=t,o[b]=e,o[d]=r,o},H=(t,e)=>{if(t.level<=0||!e)return t[d]?"":e;let r=t[b];if(r===void 0)return e;let{openAll:o,closeAll:n}=r;if(e.includes("\x1B"))for(;r!==void 0;)e=I(e,r.close,r.open),r=r.parent;let s=e.indexOf(`
|
|
5
|
+
`);return s!==-1&&(e=S(e,n,o,s)),o+e+n};Object.defineProperties(p.prototype,h);var q=p(),ce=p({level:w?w.level:0});var f=q;var y=class{#r=null;#t=null;constructor(e,r){this.#r=e,this.#t=r}#e(e,r,o){e&&process.stdout.write(r(`${e}: ${this.#r?`(${this.#r}) `:""}`));try{o=o??typeof o,process.stdout.write(o)}catch(n){console.error(n)}process.stdout.write(`
|
|
6
6
|
`)}info(e,r){this.#e("info",f.bold.cyan,e,r)}log(e,r){this.#e(null,f.bold.cyan,e,r)}debug(e,r){this.#t?.verbose&&this.#e("debug",f.bold.cyan,e,r)}warn(e,r){this.#e("warn",f.bold.yellow,e,r)}error(e,r){if(e instanceof Error){let[o,...n]=e.stack?.split(`
|
|
7
7
|
`)??"";this.#e("error",f.bold.red,`${f.underline(e.name)}: ${e.message.trim()}`,r),process.stdout.write(`
|
|
8
8
|
${f.gray(n.join(`
|
package/lib/server.cjs
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
"use strict";var tr=Object.create;var se=Object.defineProperty;var rr=Object.getOwnPropertyDescriptor;var sr=Object.getOwnPropertyNames;var ir=Object.getPrototypeOf,nr=Object.prototype.hasOwnProperty;var S=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports),or=(t,e)=>{for(var r in e)se(t,r,{get:e[r],enumerable:!0})},Ve=(t,e,r,s)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of sr(e))!nr.call(t,i)&&i!==r&&se(t,i,{get:()=>e[i],enumerable:!(s=rr(e,i))||s.enumerable});return t};var W=(t,e,r)=>(r=t!=null?tr(ir(t)):{},Ve(e||!t||!t.__esModule?se(r,"default",{value:t,enumerable:!0}):r,t)),ar=t=>Ve(se({},"__esModule",{value:!0}),t);var k=S((Rs,Ye)=>{"use strict";var ze=["nodebuffer","arraybuffer","fragments"],He=typeof Blob<"u";He&&ze.push("blob");Ye.exports={BINARY_TYPES:ze,EMPTY_BUFFER:Buffer.alloc(0),GUID:"258EAFA5-E914-47DA-95CA-C5AB0DC85B11",hasBlob:He,kForOnEventAttribute:Symbol("kIsForOnEventAttribute"),kListener:Symbol("kListener"),kStatusCode:Symbol("status-code"),kWebSocket:Symbol("websocket"),NOOP:()=>{}}});var K=S((Is,ie)=>{"use strict";var{EMPTY_BUFFER:fr}=k(),Se=Buffer[Symbol.species];function lr(t,e){if(t.length===0)return fr;if(t.length===1)return t[0];let r=Buffer.allocUnsafe(e),s=0;for(let i=0;i<t.length;i++){let n=t[i];r.set(n,s),s+=n.length}return s<e?new Se(r.buffer,r.byteOffset,s):r}function Ke(t,e,r,s,i){for(let n=0;n<i;n++)r[s+n]=t[n]^e[n&3]}function Xe(t,e){for(let r=0;r<t.length;r++)t[r]^=e[r&3]}function cr(t){return t.length===t.buffer.byteLength?t.buffer:t.buffer.slice(t.byteOffset,t.byteOffset+t.length)}function xe(t){if(xe.readOnly=!0,Buffer.isBuffer(t))return t;let e;return t instanceof ArrayBuffer?e=new Se(t):ArrayBuffer.isView(t)?e=new Se(t.buffer,t.byteOffset,t.byteLength):(e=Buffer.from(t),xe.readOnly=!1),e}ie.exports={concat:lr,mask:Ke,toArrayBuffer:cr,toBuffer:xe,unmask:Xe};if(!process.env.WS_NO_BUFFER_UTIL)try{let t=require("bufferutil");ie.exports.mask=function(e,r,s,i,n){n<48?Ke(e,r,s,i,n):t.mask(e,r,s,i,n)},ie.exports.unmask=function(e,r){e.length<32?Xe(e,r):t.unmask(e,r)}}catch{}});var Qe=S((Us,Je)=>{"use strict";var Ze=Symbol("kDone"),Ee=Symbol("kRun"),ve=class{constructor(e){this[Ze]=()=>{this.pending--,this[Ee]()},this.concurrency=e||1/0,this.jobs=[],this.pending=0}add(e){this.jobs.push(e),this[Ee]()}[Ee](){if(this.pending!==this.concurrency&&this.jobs.length){let e=this.jobs.shift();this.pending++,e(this[Ze])}}};Je.exports=ve});var Z=S((Ds,st)=>{"use strict";var X=require("zlib"),et=K(),hr=Qe(),{kStatusCode:tt}=k(),ur=Buffer[Symbol.species],dr=Buffer.from([0,0,255,255]),oe=Symbol("permessage-deflate"),T=Symbol("total-length"),F=Symbol("callback"),L=Symbol("buffers"),G=Symbol("error"),ne,be=class{constructor(e,r,s){if(this._maxPayload=s|0,this._options=e||{},this._threshold=this._options.threshold!==void 0?this._options.threshold:1024,this._isServer=!!r,this._deflate=null,this._inflate=null,this.params=null,!ne){let i=this._options.concurrencyLimit!==void 0?this._options.concurrencyLimit:10;ne=new hr(i)}}static get extensionName(){return"permessage-deflate"}offer(){let e={};return this._options.serverNoContextTakeover&&(e.server_no_context_takeover=!0),this._options.clientNoContextTakeover&&(e.client_no_context_takeover=!0),this._options.serverMaxWindowBits&&(e.server_max_window_bits=this._options.serverMaxWindowBits),this._options.clientMaxWindowBits?e.client_max_window_bits=this._options.clientMaxWindowBits:this._options.clientMaxWindowBits==null&&(e.client_max_window_bits=!0),e}accept(e){return e=this.normalizeParams(e),this.params=this._isServer?this.acceptAsServer(e):this.acceptAsClient(e),this.params}cleanup(){if(this._inflate&&(this._inflate.close(),this._inflate=null),this._deflate){let e=this._deflate[F];this._deflate.close(),this._deflate=null,e&&e(new Error("The deflate stream was closed while data was being processed"))}}acceptAsServer(e){let r=this._options,s=e.find(i=>!(r.serverNoContextTakeover===!1&&i.server_no_context_takeover||i.server_max_window_bits&&(r.serverMaxWindowBits===!1||typeof r.serverMaxWindowBits=="number"&&r.serverMaxWindowBits>i.server_max_window_bits)||typeof r.clientMaxWindowBits=="number"&&!i.client_max_window_bits));if(!s)throw new Error("None of the extension offers can be accepted");return r.serverNoContextTakeover&&(s.server_no_context_takeover=!0),r.clientNoContextTakeover&&(s.client_no_context_takeover=!0),typeof r.serverMaxWindowBits=="number"&&(s.server_max_window_bits=r.serverMaxWindowBits),typeof r.clientMaxWindowBits=="number"?s.client_max_window_bits=r.clientMaxWindowBits:(s.client_max_window_bits===!0||r.clientMaxWindowBits===!1)&&delete s.client_max_window_bits,s}acceptAsClient(e){let r=e[0];if(this._options.clientNoContextTakeover===!1&&r.client_no_context_takeover)throw new Error('Unexpected parameter "client_no_context_takeover"');if(!r.client_max_window_bits)typeof this._options.clientMaxWindowBits=="number"&&(r.client_max_window_bits=this._options.clientMaxWindowBits);else if(this._options.clientMaxWindowBits===!1||typeof this._options.clientMaxWindowBits=="number"&&r.client_max_window_bits>this._options.clientMaxWindowBits)throw new Error('Unexpected or invalid parameter "client_max_window_bits"');return r}normalizeParams(e){return e.forEach(r=>{Object.keys(r).forEach(s=>{let i=r[s];if(i.length>1)throw new Error(`Parameter "${s}" must have only a single value`);if(i=i[0],s==="client_max_window_bits"){if(i!==!0){let n=+i;if(!Number.isInteger(n)||n<8||n>15)throw new TypeError(`Invalid value for parameter "${s}": ${i}`);i=n}else if(!this._isServer)throw new TypeError(`Invalid value for parameter "${s}": ${i}`)}else if(s==="server_max_window_bits"){let n=+i;if(!Number.isInteger(n)||n<8||n>15)throw new TypeError(`Invalid value for parameter "${s}": ${i}`);i=n}else if(s==="client_no_context_takeover"||s==="server_no_context_takeover"){if(i!==!0)throw new TypeError(`Invalid value for parameter "${s}": ${i}`)}else throw new Error(`Unknown parameter "${s}"`);r[s]=i})}),e}decompress(e,r,s){ne.add(i=>{this._decompress(e,r,(n,o)=>{i(),s(n,o)})})}compress(e,r,s){ne.add(i=>{this._compress(e,r,(n,o)=>{i(),s(n,o)})})}_decompress(e,r,s){let i=this._isServer?"client":"server";if(!this._inflate){let n=`${i}_max_window_bits`,o=typeof this.params[n]!="number"?X.Z_DEFAULT_WINDOWBITS:this.params[n];this._inflate=X.createInflateRaw({...this._options.zlibInflateOptions,windowBits:o}),this._inflate[oe]=this,this._inflate[T]=0,this._inflate[L]=[],this._inflate.on("error",pr),this._inflate.on("data",rt)}this._inflate[F]=s,this._inflate.write(e),r&&this._inflate.write(dr),this._inflate.flush(()=>{let n=this._inflate[G];if(n){this._inflate.close(),this._inflate=null,s(n);return}let o=et.concat(this._inflate[L],this._inflate[T]);this._inflate._readableState.endEmitted?(this._inflate.close(),this._inflate=null):(this._inflate[T]=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"?X.Z_DEFAULT_WINDOWBITS:this.params[n];this._deflate=X.createDeflateRaw({...this._options.zlibDeflateOptions,windowBits:o}),this._deflate[T]=0,this._deflate[L]=[],this._deflate.on("data",_r)}this._deflate[F]=s,this._deflate.write(e),this._deflate.flush(X.Z_SYNC_FLUSH,()=>{if(!this._deflate)return;let n=et.concat(this._deflate[L],this._deflate[T]);r&&(n=new ur(n.buffer,n.byteOffset,n.length-4)),this._deflate[F]=null,this._deflate[T]=0,this._deflate[L]=[],r&&this.params[`${i}_no_context_takeover`]&&this._deflate.reset(),s(null,n)})}};st.exports=be;function _r(t){this[L].push(t),this[T]+=t.length}function rt(t){if(this[T]+=t.length,this[oe]._maxPayload<1||this[T]<=this[oe]._maxPayload){this[L].push(t);return}this[G]=new RangeError("Max payload size exceeded"),this[G].code="WS_ERR_UNSUPPORTED_MESSAGE_LENGTH",this[G][tt]=1009,this.removeListener("data",rt),this.reset()}function pr(t){if(this[oe]._inflate=null,this[G]){this[F](this[G]);return}t[tt]=1007,this[F](t)}});var q=S((Ms,ae)=>{"use strict";var{isUtf8:it}=require("buffer"),{hasBlob:mr}=k(),gr=[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 yr(t){return t>=1e3&&t<=1014&&t!==1004&&t!==1005&&t!==1006||t>=3e3&&t<=4999}function we(t){let e=t.length,r=0;for(;r<e;)if((t[r]&128)===0)r++;else if((t[r]&224)===192){if(r+1===e||(t[r+1]&192)!==128||(t[r]&254)===192)return!1;r+=2}else if((t[r]&240)===224){if(r+2>=e||(t[r+1]&192)!==128||(t[r+2]&192)!==128||t[r]===224&&(t[r+1]&224)===128||t[r]===237&&(t[r+1]&224)===160)return!1;r+=3}else if((t[r]&248)===240){if(r+3>=e||(t[r+1]&192)!==128||(t[r+2]&192)!==128||(t[r+3]&192)!==128||t[r]===240&&(t[r+1]&240)===128||t[r]===244&&t[r+1]>143||t[r]>244)return!1;r+=4}else return!1;return!0}function Sr(t){return mr&&typeof t=="object"&&typeof t.arrayBuffer=="function"&&typeof t.type=="string"&&typeof t.stream=="function"&&(t[Symbol.toStringTag]==="Blob"||t[Symbol.toStringTag]==="File")}ae.exports={isBlob:Sr,isValidStatusCode:yr,isValidUTF8:we,tokenChars:gr};if(it)ae.exports.isValidUTF8=function(t){return t.length<24?we(t):it(t)};else if(!process.env.WS_NO_UTF_8_VALIDATE)try{let t=require("utf-8-validate");ae.exports.isValidUTF8=function(e){return e.length<32?we(e):t(e)}}catch{}});var Ne=S((As,ht)=>{"use strict";var{Writable:xr}=require("stream"),nt=Z(),{BINARY_TYPES:Er,EMPTY_BUFFER:ot,kStatusCode:vr,kWebSocket:br}=k(),{concat:Oe,toArrayBuffer:wr,unmask:Or}=K(),{isValidStatusCode:kr,isValidUTF8:at}=q(),fe=Buffer[Symbol.species],E=0,ft=1,lt=2,ct=3,ke=4,Te=5,le=6,Ce=class extends xr{constructor(e={}){super(),this._allowSynchronousEvents=e.allowSynchronousEvents!==void 0?e.allowSynchronousEvents:!0,this._binaryType=e.binaryType||Er[0],this._extensions=e.extensions||{},this._isServer=!!e.isServer,this._maxPayload=e.maxPayload|0,this._skipUTF8Validation=!!e.skipUTF8Validation,this[br]=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 fe(s.buffer,s.byteOffset+e,s.length-e),new fe(s.buffer,s.byteOffset,e)}let r=Buffer.allocUnsafe(e);do{let s=this._buffers[0],i=r.length-e;e>=s.length?r.set(this._buffers.shift(),i):(r.set(new Uint8Array(s.buffer,s.byteOffset,e),i),this._buffers[0]=new fe(s.buffer,s.byteOffset+e,s.length-e)),e-=s.length}while(e>0);return r}startLoop(e){this._loop=!0;do switch(this._state){case E:this.getInfo(e);break;case ft:this.getPayloadLength16(e);break;case lt:this.getPayloadLength64(e);break;case ct:this.getMask();break;case ke:this.getData(e);break;case Te:case le:this._loop=!1;return}while(this._loop);this._errored||e()}getInfo(e){if(this._bufferedBytes<2){this._loop=!1;return}let r=this.consume(2);if((r[0]&48)!==0){let i=this.createError(RangeError,"RSV2 and RSV3 must be clear",!0,1002,"WS_ERR_UNEXPECTED_RSV_2_3");e(i);return}let s=(r[0]&64)===64;if(s&&!this._extensions[nt.extensionName]){let i=this.createError(RangeError,"RSV1 must be clear",!0,1002,"WS_ERR_UNEXPECTED_RSV_1");e(i);return}if(this._fin=(r[0]&128)===128,this._opcode=r[0]&15,this._payloadLength=r[1]&127,this._opcode===0){if(s){let i=this.createError(RangeError,"RSV1 must be clear",!0,1002,"WS_ERR_UNEXPECTED_RSV_1");e(i);return}if(!this._fragmented){let i=this.createError(RangeError,"invalid opcode 0",!0,1002,"WS_ERR_INVALID_OPCODE");e(i);return}this._opcode=this._fragmented}else if(this._opcode===1||this._opcode===2){if(this._fragmented){let i=this.createError(RangeError,`invalid opcode ${this._opcode}`,!0,1002,"WS_ERR_INVALID_OPCODE");e(i);return}this._compressed=s}else if(this._opcode>7&&this._opcode<11){if(!this._fin){let i=this.createError(RangeError,"FIN must be set",!0,1002,"WS_ERR_EXPECTED_FIN");e(i);return}if(s){let i=this.createError(RangeError,"RSV1 must be clear",!0,1002,"WS_ERR_UNEXPECTED_RSV_1");e(i);return}if(this._payloadLength>125||this._opcode===8&&this._payloadLength===1){let i=this.createError(RangeError,`invalid payload length ${this._payloadLength}`,!0,1002,"WS_ERR_INVALID_CONTROL_PAYLOAD_LENGTH");e(i);return}}else{let i=this.createError(RangeError,`invalid opcode ${this._opcode}`,!0,1002,"WS_ERR_INVALID_OPCODE");e(i);return}if(!this._fin&&!this._fragmented&&(this._fragmented=this._opcode),this._masked=(r[1]&128)===128,this._isServer){if(!this._masked){let i=this.createError(RangeError,"MASK must be set",!0,1002,"WS_ERR_EXPECTED_MASK");e(i);return}}else if(this._masked){let i=this.createError(RangeError,"MASK must be clear",!0,1002,"WS_ERR_UNEXPECTED_MASK");e(i);return}this._payloadLength===126?this._state=ft:this._payloadLength===127?this._state=lt:this.haveLength(e)}getPayloadLength16(e){if(this._bufferedBytes<2){this._loop=!1;return}this._payloadLength=this.consume(2).readUInt16BE(0),this.haveLength(e)}getPayloadLength64(e){if(this._bufferedBytes<8){this._loop=!1;return}let r=this.consume(8),s=r.readUInt32BE(0);if(s>Math.pow(2,21)-1){let i=this.createError(RangeError,"Unsupported WebSocket frame: payload length > 2^53 - 1",!1,1009,"WS_ERR_UNSUPPORTED_DATA_PAYLOAD_LENGTH");e(i);return}this._payloadLength=s*Math.pow(2,32)+r.readUInt32BE(4),this.haveLength(e)}haveLength(e){if(this._payloadLength&&this._opcode<8&&(this._totalPayloadLength+=this._payloadLength,this._totalPayloadLength>this._maxPayload&&this._maxPayload>0)){let r=this.createError(RangeError,"Max payload size exceeded",!1,1009,"WS_ERR_UNSUPPORTED_MESSAGE_LENGTH");e(r);return}this._masked?this._state=ct:this._state=ke}getMask(){if(this._bufferedBytes<4){this._loop=!1;return}this._mask=this.consume(4),this._state=ke}getData(e){let r=ot;if(this._payloadLength){if(this._bufferedBytes<this._payloadLength){this._loop=!1;return}r=this.consume(this._payloadLength),this._masked&&(this._mask[0]|this._mask[1]|this._mask[2]|this._mask[3])!==0&&Or(r,this._mask)}if(this._opcode>7){this.controlMessage(r,e);return}if(this._compressed){this._state=Te,this.decompress(r,e);return}r.length&&(this._messageLength=this._totalPayloadLength,this._fragments.push(r)),this.dataMessage(e)}decompress(e,r){this._extensions[nt.extensionName].decompress(e,this._fin,(i,n)=>{if(i)return r(i);if(n.length){if(this._messageLength+=n.length,this._messageLength>this._maxPayload&&this._maxPayload>0){let o=this.createError(RangeError,"Max payload size exceeded",!1,1009,"WS_ERR_UNSUPPORTED_MESSAGE_LENGTH");r(o);return}this._fragments.push(n)}this.dataMessage(r),this._state===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=Oe(s,r):this._binaryType==="arraybuffer"?i=wr(Oe(s,r)):this._binaryType==="blob"?i=new Blob(s):i=s,this._allowSynchronousEvents?(this.emit("message",i,!0),this._state=E):(this._state=le,setImmediate(()=>{this.emit("message",i,!0),this._state=E,this.startLoop(e)}))}else{let i=Oe(s,r);if(!this._skipUTF8Validation&&!at(i)){let n=this.createError(Error,"invalid UTF-8 sequence",!0,1007,"WS_ERR_INVALID_UTF8");e(n);return}this._state===Te||this._allowSynchronousEvents?(this.emit("message",i,!1),this._state=E):(this._state=le,setImmediate(()=>{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,ot),this.end();else{let s=e.readUInt16BE(0);if(!kr(s)){let n=this.createError(RangeError,`invalid status code ${s}`,!0,1002,"WS_ERR_INVALID_CLOSE_CODE");r(n);return}let i=new fe(e.buffer,e.byteOffset+2,e.length-2);if(!this._skipUTF8Validation&&!at(i)){let n=this.createError(Error,"invalid UTF-8 sequence",!0,1007,"WS_ERR_INVALID_UTF8");r(n);return}this._loop=!1,this.emit("conclude",s,i),this.end()}this._state=E;return}this._allowSynchronousEvents?(this.emit(this._opcode===9?"ping":"pong",e),this._state=E):(this._state=le,setImmediate(()=>{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[vr]=i,o}};ht.exports=Ce});var Be=S((Fs,_t)=>{"use strict";var{Duplex:Ws}=require("stream"),{randomFillSync:Tr}=require("crypto"),ut=Z(),{EMPTY_BUFFER:Cr,kWebSocket:Nr,NOOP:Lr}=k(),{isBlob:$,isValidStatusCode:Pr}=q(),{mask:dt,toBuffer:B}=K(),v=Symbol("kByteLength"),Br=Buffer.alloc(4),ce=8*1024,R,j=ce,b=0,Rr=1,Ir=2,Le=class t{constructor(e,r,s){this._extensions=r||{},s&&(this._generateMask=s,this._maskBuffer=Buffer.alloc(4)),this._socket=e,this._firstFragment=!0,this._compress=!1,this._bufferedBytes=0,this._queue=[],this._state=b,this.onerror=Lr,this[Nr]=void 0}static frame(e,r){let s,i=!1,n=2,o=!1;r.mask&&(s=r.maskBuffer||Br,r.generateMask?r.generateMask(s):(j===ce&&(R===void 0&&(R=Buffer.alloc(ce)),Tr(R,0,ce),j=0),s[0]=R[j++],s[1]=R[j++],s[2]=R[j++],s[3]=R[j++]),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?(dt(e,s,a,n,f),[a]):(dt(e,s,e,0,f),[a,e])):[a,e]}close(e,r,s,i){let n;if(e===void 0)n=Cr;else{if(typeof e!="number"||!Pr(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._state!==b?this.enqueue([this.dispatch,n,!1,o,i]):this.sendFrame(t.frame(n,o),i)}ping(e,r,s){let i,n;if(typeof e=="string"?(i=Buffer.byteLength(e),n=!1):$(e)?(i=e.size,n=!1):(e=B(e),i=e.length,n=B.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};$(e)?this._state!==b?this.enqueue([this.getBlobData,e,!1,o,s]):this.getBlobData(e,!1,o,s):this._state!==b?this.enqueue([this.dispatch,e,!1,o,s]):this.sendFrame(t.frame(e,o),s)}pong(e,r,s){let i,n;if(typeof e=="string"?(i=Buffer.byteLength(e),n=!1):$(e)?(i=e.size,n=!1):(e=B(e),i=e.length,n=B.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};$(e)?this._state!==b?this.enqueue([this.getBlobData,e,!1,o,s]):this.getBlobData(e,!1,o,s):this._state!==b?this.enqueue([this.dispatch,e,!1,o,s]):this.sendFrame(t.frame(e,o),s)}send(e,r,s){let i=this._extensions[ut.extensionName],n=r.binary?2:1,o=r.compress,f,l;typeof e=="string"?(f=Buffer.byteLength(e),l=!1):$(e)?(f=e.size,l=!1):(e=B(e),f=e.length,l=B.readOnly),this._firstFragment?(this._firstFragment=!1,o&&i&&i.params[i._isServer?"server_no_context_takeover":"client_no_context_takeover"]&&(o=f>=i._threshold),this._compress=o):(o=!1,n=0),r.fin&&(this._firstFragment=!0);let a={[v]:f,fin:r.fin,generateMask:this._generateMask,mask:r.mask,maskBuffer:this._maskBuffer,opcode:n,readOnly:l,rsv1:o};$(e)?this._state!==b?this.enqueue([this.getBlobData,e,this._compress,a,s]):this.getBlobData(e,this._compress,a,s):this._state!==b?this.enqueue([this.dispatch,e,this._compress,a,s]):this.dispatch(e,this._compress,a,s)}getBlobData(e,r,s,i){this._bufferedBytes+=s[v],this._state=Ir,e.arrayBuffer().then(n=>{if(this._socket.destroyed){let f=new Error("The socket was closed while the blob was being read");process.nextTick(Pe,this,f,i);return}this._bufferedBytes-=s[v];let o=B(n);r?this.dispatch(o,r,s,i):(this._state=b,this.sendFrame(t.frame(o,s),i),this.dequeue())}).catch(n=>{process.nextTick(Ur,this,n,i)})}dispatch(e,r,s,i){if(!r){this.sendFrame(t.frame(e,s),i);return}let n=this._extensions[ut.extensionName];this._bufferedBytes+=s[v],this._state=Rr,n.compress(e,s.fin,(o,f)=>{if(this._socket.destroyed){let l=new Error("The socket was closed while data was being compressed");Pe(this,l,i);return}this._bufferedBytes-=s[v],this._state=b,s.readOnly=!1,this.sendFrame(t.frame(f,s),i),this.dequeue()})}dequeue(){for(;this._state===b&&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)}};_t.exports=Le;function Pe(t,e,r){typeof r=="function"&&r(e);for(let s=0;s<t._queue.length;s++){let i=t._queue[s],n=i[i.length-1];typeof n=="function"&&n(e)}}function Ur(t,e,r){Pe(t,e,r),t.onerror(e)}});var bt=S((Gs,vt)=>{"use strict";var{kForOnEventAttribute:J,kListener:Re}=k(),pt=Symbol("kCode"),mt=Symbol("kData"),gt=Symbol("kError"),yt=Symbol("kMessage"),St=Symbol("kReason"),V=Symbol("kTarget"),xt=Symbol("kType"),Et=Symbol("kWasClean"),C=class{constructor(e){this[V]=null,this[xt]=e}get target(){return this[V]}get type(){return this[xt]}};Object.defineProperty(C.prototype,"target",{enumerable:!0});Object.defineProperty(C.prototype,"type",{enumerable:!0});var I=class extends C{constructor(e,r={}){super(e),this[pt]=r.code===void 0?0:r.code,this[St]=r.reason===void 0?"":r.reason,this[Et]=r.wasClean===void 0?!1:r.wasClean}get code(){return this[pt]}get reason(){return this[St]}get wasClean(){return this[Et]}};Object.defineProperty(I.prototype,"code",{enumerable:!0});Object.defineProperty(I.prototype,"reason",{enumerable:!0});Object.defineProperty(I.prototype,"wasClean",{enumerable:!0});var z=class extends C{constructor(e,r={}){super(e),this[gt]=r.error===void 0?null:r.error,this[yt]=r.message===void 0?"":r.message}get error(){return this[gt]}get message(){return this[yt]}};Object.defineProperty(z.prototype,"error",{enumerable:!0});Object.defineProperty(z.prototype,"message",{enumerable:!0});var Q=class extends C{constructor(e,r={}){super(e),this[mt]=r.data===void 0?null:r.data}get data(){return this[mt]}};Object.defineProperty(Q.prototype,"data",{enumerable:!0});var Dr={addEventListener(t,e,r={}){for(let i of this.listeners(t))if(!r[J]&&i[Re]===e&&!i[J])return;let s;if(t==="message")s=function(n,o){let f=new Q("message",{data:o?n:n.toString()});f[V]=this,he(e,this,f)};else if(t==="close")s=function(n,o){let f=new I("close",{code:n,reason:o.toString(),wasClean:this._closeFrameReceived&&this._closeFrameSent});f[V]=this,he(e,this,f)};else if(t==="error")s=function(n){let o=new z("error",{error:n,message:n.message});o[V]=this,he(e,this,o)};else if(t==="open")s=function(){let n=new C("open");n[V]=this,he(e,this,n)};else return;s[J]=!!r[J],s[Re]=e,r.once?this.once(t,s):this.on(t,s)},removeEventListener(t,e){for(let r of this.listeners(t))if(r[Re]===e&&!r[J]){this.removeListener(t,r);break}}};vt.exports={CloseEvent:I,ErrorEvent:z,Event:C,EventTarget:Dr,MessageEvent:Q};function he(t,e,r){typeof t=="object"&&t.handleEvent?t.handleEvent.call(t,r):t.call(e,r)}});var Ie=S((qs,wt)=>{"use strict";var{tokenChars:ee}=q();function O(t,e,r){t[e]===void 0?t[e]=[r]:t[e].push(r)}function Mr(t){let e=Object.create(null),r=Object.create(null),s=!1,i=!1,n=!1,o,f,l=-1,a=-1,c=-1,h=0;for(;h<t.length;h++)if(a=t.charCodeAt(h),o===void 0)if(c===-1&&ee[a]===1)l===-1&&(l=h);else if(h!==0&&(a===32||a===9))c===-1&&l!==-1&&(c=h);else if(a===59||a===44){if(l===-1)throw new SyntaxError(`Unexpected character at index ${h}`);c===-1&&(c=h);let m=t.slice(l,c);a===44?(O(e,m,r),r=Object.create(null)):o=m,l=c=-1}else throw new SyntaxError(`Unexpected character at index ${h}`);else if(f===void 0)if(c===-1&&ee[a]===1)l===-1&&(l=h);else if(a===32||a===9)c===-1&&l!==-1&&(c=h);else if(a===59||a===44){if(l===-1)throw new SyntaxError(`Unexpected character at index ${h}`);c===-1&&(c=h),O(r,t.slice(l,c),!0),a===44&&(O(e,o,r),r=Object.create(null),o=void 0),l=c=-1}else if(a===61&&l!==-1&&c===-1)f=t.slice(l,h),l=c=-1;else throw new SyntaxError(`Unexpected character at index ${h}`);else if(i){if(ee[a]!==1)throw new SyntaxError(`Unexpected character at index ${h}`);l===-1?l=h:s||(s=!0),i=!1}else if(n)if(ee[a]===1)l===-1&&(l=h);else if(a===34&&l!==-1)n=!1,c=h;else if(a===92)i=!0;else throw new SyntaxError(`Unexpected character at index ${h}`);else if(a===34&&t.charCodeAt(h-1)===61)n=!0;else if(c===-1&&ee[a]===1)l===-1&&(l=h);else if(l!==-1&&(a===32||a===9))c===-1&&(c=h);else if(a===59||a===44){if(l===-1)throw new SyntaxError(`Unexpected character at index ${h}`);c===-1&&(c=h);let m=t.slice(l,c);s&&(m=m.replace(/\\/g,""),s=!1),O(r,f,m),a===44&&(O(e,o,r),r=Object.create(null),o=void 0),f=void 0,l=c=-1}else throw new SyntaxError(`Unexpected character at index ${h}`);if(l===-1||n||a===32||a===9)throw new SyntaxError("Unexpected end of input");c===-1&&(c=h);let _=t.slice(l,c);return o===void 0?O(e,_,r):(f===void 0?O(r,_,!0):s?O(r,f,_.replace(/\\/g,"")):O(r,f,_),O(e,o,r)),e}function Ar(t){return Object.keys(t).map(e=>{let r=t[e];return Array.isArray(r)||(r=[r]),r.map(s=>[e].concat(Object.keys(s).map(i=>{let n=s[i];return Array.isArray(n)||(n=[n]),n.map(o=>o===!0?i:`${i}=${o}`).join("; ")})).join("; ")).join(", ")}).join(", ")}wt.exports={format:Ar,parse:Mr}});var pe=S((Vs,Dt)=>{"use strict";var Wr=require("events"),Fr=require("https"),Gr=require("http"),Tt=require("net"),qr=require("tls"),{randomBytes:$r,createHash:jr}=require("crypto"),{Duplex:$s,Readable:js}=require("stream"),{URL:Ue}=require("url"),P=Z(),Vr=Ne(),zr=Be(),{isBlob:Hr}=q(),{BINARY_TYPES:Ot,EMPTY_BUFFER:ue,GUID:Yr,kForOnEventAttribute:De,kListener:Kr,kStatusCode:Xr,kWebSocket:g,NOOP:Ct}=k(),{EventTarget:{addEventListener:Zr,removeEventListener:Jr}}=bt(),{format:Qr,parse:es}=Ie(),{toBuffer:ts}=K(),rs=30*1e3,Nt=Symbol("kAborted"),Me=[8,13],N=["CONNECTING","OPEN","CLOSING","CLOSED"],ss=/^[!#$%&'*+\-.0-9A-Z^_`|a-z~]+$/,d=class t extends Wr{constructor(e,r,s){super(),this._binaryType=Ot[0],this._closeCode=1006,this._closeFrameReceived=!1,this._closeFrameSent=!1,this._closeMessage=ue,this._closeTimer=null,this._errorEmitted=!1,this._extensions={},this._paused=!1,this._protocol="",this._readyState=t.CONNECTING,this._receiver=null,this._sender=null,this._socket=null,e!==null?(this._bufferedAmount=0,this._isServer=!1,this._redirects=0,r===void 0?r=[]:Array.isArray(r)||(typeof r=="object"&&r!==null?(s=r,r=[]):r=[r]),Lt(this,e,r,s)):(this._autoPong=s.autoPong,this._isServer=!0)}get binaryType(){return this._binaryType}set binaryType(e){Ot.includes(e)&&(this._binaryType=e,this._receiver&&(this._receiver._binaryType=e))}get bufferedAmount(){return this._socket?this._socket._writableState.length+this._sender._bufferedBytes:this._bufferedAmount}get extensions(){return Object.keys(this._extensions).join()}get isPaused(){return this._paused}get onclose(){return null}get onerror(){return null}get onopen(){return null}get onmessage(){return null}get protocol(){return this._protocol}get readyState(){return this._readyState}get url(){return this._url}setSocket(e,r,s){let i=new Vr({allowSynchronousEvents:s.allowSynchronousEvents,binaryType:this.binaryType,extensions:this._extensions,isServer:this._isServer,maxPayload:s.maxPayload,skipUTF8Validation:s.skipUTF8Validation}),n=new zr(e,this._extensions,s.generateMask);this._receiver=i,this._sender=n,this._socket=e,i[g]=this,n[g]=this,e[g]=this,i.on("conclude",os),i.on("drain",as),i.on("error",fs),i.on("message",ls),i.on("ping",cs),i.on("pong",hs),n.onerror=us,e.setTimeout&&e.setTimeout(0),e.setNoDelay&&e.setNoDelay(),r.length>0&&e.unshift(r),e.on("close",Rt),e.on("data",_e),e.on("end",It),e.on("error",Ut),this._readyState=t.OPEN,this.emit("open")}emitClose(){if(!this._socket){this._readyState=t.CLOSED,this.emit("close",this._closeCode,this._closeMessage);return}this._extensions[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){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())}),Bt(this)}}pause(){this.readyState===t.CONNECTING||this.readyState===t.CLOSED||(this._paused=!0,this._socket.pause())}ping(e,r,s){if(this.readyState===t.CONNECTING)throw new Error("WebSocket is not open: readyState 0 (CONNECTING)");if(typeof e=="function"?(s=e,e=r=void 0):typeof r=="function"&&(s=r,r=void 0),typeof e=="number"&&(e=e.toString()),this.readyState!==t.OPEN){Ae(this,e,s);return}r===void 0&&(r=!this._isServer),this._sender.ping(e||ue,r,s)}pong(e,r,s){if(this.readyState===t.CONNECTING)throw new Error("WebSocket is not open: readyState 0 (CONNECTING)");if(typeof e=="function"?(s=e,e=r=void 0):typeof r=="function"&&(s=r,r=void 0),typeof e=="number"&&(e=e.toString()),this.readyState!==t.OPEN){Ae(this,e,s);return}r===void 0&&(r=!this._isServer),this._sender.pong(e||ue,r,s)}resume(){this.readyState===t.CONNECTING||this.readyState===t.CLOSED||(this._paused=!1,this._receiver._writableState.needDrain||this._socket.resume())}send(e,r,s){if(this.readyState===t.CONNECTING)throw new Error("WebSocket is not open: readyState 0 (CONNECTING)");if(typeof r=="function"&&(s=r,r={}),typeof e=="number"&&(e=e.toString()),this.readyState!==t.OPEN){Ae(this,e,s);return}let i={binary:typeof e!="string",mask:!this._isServer,compress:!0,fin:!0,...r};this._extensions[P.extensionName]||(i.compress=!1),this._sender.send(e||ue,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:N.indexOf("CONNECTING")});Object.defineProperty(d.prototype,"CONNECTING",{enumerable:!0,value:N.indexOf("CONNECTING")});Object.defineProperty(d,"OPEN",{enumerable:!0,value:N.indexOf("OPEN")});Object.defineProperty(d.prototype,"OPEN",{enumerable:!0,value:N.indexOf("OPEN")});Object.defineProperty(d,"CLOSING",{enumerable:!0,value:N.indexOf("CLOSING")});Object.defineProperty(d.prototype,"CLOSING",{enumerable:!0,value:N.indexOf("CLOSING")});Object.defineProperty(d,"CLOSED",{enumerable:!0,value:N.indexOf("CLOSED")});Object.defineProperty(d.prototype,"CLOSED",{enumerable:!0,value:N.indexOf("CLOSED")});["binaryType","bufferedAmount","extensions","isPaused","protocol","readyState","url"].forEach(t=>{Object.defineProperty(d.prototype,t,{enumerable:!0})});["open","error","close","message"].forEach(t=>{Object.defineProperty(d.prototype,`on${t}`,{enumerable:!0,get(){for(let e of this.listeners(t))if(e[De])return e[Kr];return null},set(e){for(let r of this.listeners(t))if(r[De]){this.removeListener(t,r);break}typeof e=="function"&&this.addEventListener(t,e,{[De]:!0})}})});d.prototype.addEventListener=Zr;d.prototype.removeEventListener=Jr;Dt.exports=d;function Lt(t,e,r,s){let i={allowSynchronousEvents:!0,autoPong:!0,protocolVersion:Me[1],maxPayload:104857600,skipUTF8Validation:!1,perMessageDeflate:!0,followRedirects:!1,maxRedirects:10,...s,socketPath:void 0,hostname:void 0,protocol:void 0,timeout:void 0,method:"GET",host:void 0,path:void 0,port:void 0};if(t._autoPong=i.autoPong,!Me.includes(i.protocolVersion))throw new RangeError(`Unsupported protocol version: ${i.protocolVersion} (supported versions: ${Me.join(", ")})`);let n;if(e instanceof Ue)n=e;else try{n=new Ue(e)}catch{throw new SyntaxError(`Invalid URL: ${e}`)}n.protocol==="http:"?n.protocol="ws:":n.protocol==="https:"&&(n.protocol="wss:"),t._url=n.href;let o=n.protocol==="wss:",f=n.protocol==="ws+unix:",l;if(n.protocol!=="ws:"&&!o&&!f?l=`The URL's protocol must be one of "ws:", "wss:", "http:", "https:", or "ws+unix:"`:f&&!n.pathname?l="The URL's pathname is empty":n.hash&&(l="The URL contains a fragment identifier"),l){let u=new SyntaxError(l);if(t._redirects===0)throw u;de(t,u);return}let a=o?443:80,c=$r(16).toString("base64"),h=o?Fr.request:Gr.request,_=new Set,m;if(i.createConnection=i.createConnection||(o?ns:is),i.defaultPort=i.defaultPort||a,i.port=n.port||a,i.host=n.hostname.startsWith("[")?n.hostname.slice(1,-1):n.hostname,i.headers={...i.headers,"Sec-WebSocket-Version":i.protocolVersion,"Sec-WebSocket-Key":c,Connection:"Upgrade",Upgrade:"websocket"},i.path=n.pathname+n.search,i.timeout=i.handshakeTimeout,i.perMessageDeflate&&(m=new P(i.perMessageDeflate!==!0?i.perMessageDeflate:{},!1,i.maxPayload),i.headers["Sec-WebSocket-Extensions"]=Qr({[P.extensionName]:m.offer()})),r.length){for(let u of r){if(typeof u!="string"||!ss.test(u)||_.has(u))throw new SyntaxError("An invalid or duplicated subprotocol was specified");_.add(u)}i.headers["Sec-WebSocket-Protocol"]=r.join(",")}if(i.origin&&(i.protocolVersion<13?i.headers["Sec-WebSocket-Origin"]=i.origin:i.headers.Origin=i.origin),(n.username||n.password)&&(i.auth=`${n.username}:${n.password}`),f){let u=i.path.split(":");i.socketPath=u[0],i.path=u[1]}let p;if(i.followRedirects){if(t._redirects===0){t._originalIpc=f,t._originalSecure=o,t._originalHostOrSocketPath=f?i.socketPath:n.host;let u=s&&s.headers;if(s={...s,headers:{}},u)for(let[y,M]of Object.entries(u))s.headers[y.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")),p=t._req=h(i),t._redirects&&t.emit("redirect",t.url,p)}else p=t._req=h(i);i.timeout&&p.on("timeout",()=>{x(t,p,"Opening handshake has timed out")}),p.on("error",u=>{p===null||p[Nt]||(p=t._req=null,de(t,u))}),p.on("response",u=>{let y=u.headers.location,M=u.statusCode;if(y&&i.followRedirects&&M>=300&&M<400){if(++t._redirects>i.maxRedirects){x(t,p,"Maximum redirects exceeded");return}p.abort();let H;try{H=new Ue(y,e)}catch{let A=new SyntaxError(`Invalid URL: ${y}`);de(t,A);return}Lt(t,H,r,s)}else t.emit("unexpected-response",p,u)||x(t,p,`Unexpected server response: ${u.statusCode}`)}),p.on("upgrade",(u,y,M)=>{if(t.emit("upgrade",u),t.readyState!==d.CONNECTING)return;p=t._req=null;let H=u.headers.upgrade;if(H===void 0||H.toLowerCase()!=="websocket"){x(t,y,"Invalid Upgrade header");return}let qe=jr("sha1").update(c+Yr).digest("base64");if(u.headers["sec-websocket-accept"]!==qe){x(t,y,"Invalid Sec-WebSocket-Accept header");return}let A=u.headers["sec-websocket-protocol"],Y;if(A!==void 0?_.size?_.has(A)||(Y="Server sent an invalid subprotocol"):Y="Server sent a subprotocol but none was requested":_.size&&(Y="Server sent no subprotocol"),Y){x(t,y,Y);return}A&&(t._protocol=A);let $e=u.headers["sec-websocket-extensions"];if($e!==void 0){if(!m){x(t,y,"Server sent a Sec-WebSocket-Extensions header but no extension was requested");return}let ge;try{ge=es($e)}catch{x(t,y,"Invalid Sec-WebSocket-Extensions header");return}let je=Object.keys(ge);if(je.length!==1||je[0]!==P.extensionName){x(t,y,"Server indicated an extension that was not requested");return}try{m.accept(ge[P.extensionName])}catch{x(t,y,"Invalid Sec-WebSocket-Extensions header");return}t._extensions[P.extensionName]=m}t.setSocket(y,M,{allowSynchronousEvents:i.allowSynchronousEvents,generateMask:i.generateMask,maxPayload:i.maxPayload,skipUTF8Validation:i.skipUTF8Validation})}),i.finishRequest?i.finishRequest(p,t):p.end()}function de(t,e){t._readyState=d.CLOSING,t._errorEmitted=!0,t.emit("error",e),t.emitClose()}function is(t){return t.path=t.socketPath,Tt.connect(t)}function ns(t){return t.path=void 0,!t.servername&&t.servername!==""&&(t.servername=Tt.isIP(t.host)?"":t.host),qr.connect(t)}function x(t,e,r){t._readyState=d.CLOSING;let s=new Error(r);Error.captureStackTrace(s,x),e.setHeader?(e[Nt]=!0,e.abort(),e.socket&&!e.socket.destroyed&&e.socket.destroy(),process.nextTick(de,t,s)):(e.destroy(s),e.once("error",t.emit.bind(t,"error")),e.once("close",t.emitClose.bind(t)))}function Ae(t,e,r){if(e){let s=Hr(e)?e.size:ts(e).length;t._socket?t._sender._bufferedBytes+=s:t._bufferedAmount+=s}if(r){let s=new Error(`WebSocket is not open: readyState ${t.readyState} (${N[t.readyState]})`);process.nextTick(r,s)}}function os(t,e){let r=this[g];r._closeFrameReceived=!0,r._closeMessage=e,r._closeCode=t,r._socket[g]!==void 0&&(r._socket.removeListener("data",_e),process.nextTick(Pt,r._socket),t===1005?r.close():r.close(t,e))}function as(){let t=this[g];t.isPaused||t._socket.resume()}function fs(t){let e=this[g];e._socket[g]!==void 0&&(e._socket.removeListener("data",_e),process.nextTick(Pt,e._socket),e.close(t[Xr])),e._errorEmitted||(e._errorEmitted=!0,e.emit("error",t))}function kt(){this[g].emitClose()}function ls(t,e){this[g].emit("message",t,e)}function cs(t){let e=this[g];e._autoPong&&e.pong(t,!this._isServer,Ct),e.emit("ping",t)}function hs(t){this[g].emit("pong",t)}function Pt(t){t.resume()}function us(t){let e=this[g];e.readyState!==d.CLOSED&&(e.readyState===d.OPEN&&(e._readyState=d.CLOSING,Bt(e)),this._socket.end(),e._errorEmitted||(e._errorEmitted=!0,e.emit("error",t)))}function Bt(t){t._closeTimer=setTimeout(t._socket.destroy.bind(t._socket),rs)}function Rt(){let t=this[g];this.removeListener("close",Rt),this.removeListener("data",_e),this.removeListener("end",It),t._readyState=d.CLOSING;let e;!this._readableState.endEmitted&&!t._closeFrameReceived&&!t._receiver._writableState.errorEmitted&&(e=t._socket.read())!==null&&t._receiver.write(e),t._receiver.end(),this[g]=void 0,clearTimeout(t._closeTimer),t._receiver._writableState.finished||t._receiver._writableState.errorEmitted?t.emitClose():(t._receiver.on("error",kt),t._receiver.on("finish",kt))}function _e(t){this[g]._receiver.write(t)||this.pause()}function It(){let t=this[g];t._readyState=d.CLOSING,t._receiver.end(),this.end()}function Ut(){let t=this[g];this.removeListener("error",Ut),this.on("error",Ct),t&&(t._readyState=d.CLOSING,this.destroy())}});var Ft=S((Hs,Wt)=>{"use strict";var zs=pe(),{Duplex:ds}=require("stream");function Mt(t){t.emit("close")}function _s(){!this.destroyed&&this._writableState.finished&&this.destroy()}function At(t){this.removeListener("error",At),this.destroy(),this.listenerCount("error")===0&&this.emit("error",t)}function ps(t,e){let r=!0,s=new ds({...e,autoDestroy:!1,emitClose:!1,objectMode:!1,writableObjectMode:!1});return t.on("message",function(n,o){let f=!o&&s._readableState.objectMode?n.toString():n;s.push(f)||t.pause()}),t.once("error",function(n){s.destroyed||(r=!1,s.destroy(n))}),t.once("close",function(){s.destroyed||s.push(null)}),s._destroy=function(i,n){if(t.readyState===t.CLOSED){n(i),process.nextTick(Mt,s);return}let o=!1;t.once("error",function(l){o=!0,n(l)}),t.once("close",function(){o||n(i),process.nextTick(Mt,s)}),r&&t.terminate()},s._final=function(i){if(t.readyState===t.CONNECTING){t.once("open",function(){s._final(i)});return}t._socket!==null&&(t._socket._writableState.finished?(i(),s._readableState.endEmitted&&s.destroy()):(t._socket.once("finish",function(){i()}),t.close()))},s._read=function(){t.isPaused&&t.resume()},s._write=function(i,n,o){if(t.readyState===t.CONNECTING){t.once("open",function(){s._write(i,n,o)});return}t.send(i,o)},s.on("end",_s),s.on("error",At),s}Wt.exports=ps});var qt=S((Ys,Gt)=>{"use strict";var{tokenChars:ms}=q();function gs(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&&ms[o]===1)r===-1&&(r=i);else if(i!==0&&(o===32||o===9))s===-1&&r!==-1&&(s=i);else if(o===44){if(r===-1)throw new SyntaxError(`Unexpected character at index ${i}`);s===-1&&(s=i);let f=t.slice(r,s);if(e.has(f))throw new SyntaxError(`The "${f}" subprotocol is duplicated`);e.add(f),r=s=-1}else throw new SyntaxError(`Unexpected character at index ${i}`)}if(r===-1||s!==-1)throw new SyntaxError("Unexpected end of input");let n=t.slice(r,i);if(e.has(n))throw new SyntaxError(`The "${n}" subprotocol is duplicated`);return e.add(n),e}Gt.exports={parse:gs}});var Kt=S((Xs,Yt)=>{"use strict";var ys=require("events"),me=require("http"),{Duplex:Ks}=require("stream"),{createHash:Ss}=require("crypto"),$t=Ie(),U=Z(),xs=qt(),Es=pe(),{GUID:vs,kWebSocket:bs}=k(),ws=/^[+/0-9A-Za-z]{22}==$/,jt=0,Vt=1,Ht=2,We=class extends ys{constructor(e,r){if(super(),e={allowSynchronousEvents:!0,autoPong:!0,maxPayload:100*1024*1024,skipUTF8Validation:!1,perMessageDeflate:!1,handleProtocols:null,clientTracking:!0,verifyClient:null,noServer:!1,backlog:null,server:null,host:null,path:null,port:null,WebSocket:Es,...e},e.port==null&&!e.server&&!e.noServer||e.port!=null&&(e.server||e.noServer)||e.server&&e.noServer)throw new TypeError('One and only one of the "port", "server", or "noServer" options must be specified');if(e.port!=null?(this._server=me.createServer((s,i)=>{let n=me.STATUS_CODES[426];i.writeHead(426,{"Content-Length":n.length,"Content-Type":"text/plain"}),i.end(n)}),this._server.listen(e.port,e.host,e.backlog,r)):e.server&&(this._server=e.server),this._server){let s=this.emit.bind(this,"connection");this._removeListeners=Os(this._server,{listening:this.emit.bind(this,"listening"),error:this.emit.bind(this,"error"),upgrade:(i,n,o)=>{this.handleUpgrade(i,n,o,s)}})}e.perMessageDeflate===!0&&(e.perMessageDeflate={}),e.clientTracking&&(this.clients=new Set,this._shouldEmitClose=!1),this.options=e,this._state=jt}address(){if(this.options.noServer)throw new Error('The server is operating in "noServer" mode');return this._server?this._server.address():null}close(e){if(this._state===Ht){e&&this.once("close",()=>{e(new Error("The server is not running"))}),process.nextTick(te,this);return}if(e&&this.once("close",e),this._state!==Vt)if(this._state=Vt,this.options.noServer||this.options.server)this._server&&(this._removeListeners(),this._removeListeners=this._server=null),this.clients?this.clients.size?this._shouldEmitClose=!0:process.nextTick(te,this):process.nextTick(te,this);else{let r=this._server;this._removeListeners(),this._removeListeners=this._server=null,r.close(()=>{te(this)})}}shouldHandle(e){if(this.options.path){let r=e.url.indexOf("?");if((r!==-1?e.url.slice(0,r):e.url)!==this.options.path)return!1}return!0}handleUpgrade(e,r,s,i){r.on("error",zt);let n=e.headers["sec-websocket-key"],o=e.headers.upgrade,f=+e.headers["sec-websocket-version"];if(e.method!=="GET"){D(this,e,r,405,"Invalid HTTP method");return}if(o===void 0||o.toLowerCase()!=="websocket"){D(this,e,r,400,"Invalid Upgrade header");return}if(n===void 0||!ws.test(n)){D(this,e,r,400,"Missing or invalid Sec-WebSocket-Key header");return}if(f!==8&&f!==13){D(this,e,r,400,"Missing or invalid Sec-WebSocket-Version header");return}if(!this.shouldHandle(e)){re(r,400);return}let l=e.headers["sec-websocket-protocol"],a=new Set;if(l!==void 0)try{a=xs.parse(l)}catch{D(this,e,r,400,"Invalid Sec-WebSocket-Protocol header");return}let c=e.headers["sec-websocket-extensions"],h={};if(this.options.perMessageDeflate&&c!==void 0){let _=new U(this.options.perMessageDeflate,!0,this.options.maxPayload);try{let m=$t.parse(c);m[U.extensionName]&&(_.accept(m[U.extensionName]),h[U.extensionName]=_)}catch{D(this,e,r,400,"Invalid or unacceptable Sec-WebSocket-Extensions header");return}}if(this.options.verifyClient){let _={origin:e.headers[`${f===8?"sec-websocket-origin":"origin"}`],secure:!!(e.socket.authorized||e.socket.encrypted),req:e};if(this.options.verifyClient.length===2){this.options.verifyClient(_,(m,p,u,y)=>{if(!m)return re(r,p||401,u,y);this.completeUpgrade(h,n,a,e,r,s,i)});return}if(!this.options.verifyClient(_))return re(r,401)}this.completeUpgrade(h,n,a,e,r,s,i)}completeUpgrade(e,r,s,i,n,o,f){if(!n.readable||!n.writable)return n.destroy();if(n[bs])throw new Error("server.handleUpgrade() was called more than once with the same socket, possibly due to a misconfiguration");if(this._state>jt)return re(n,503);let a=["HTTP/1.1 101 Switching Protocols","Upgrade: websocket","Connection: Upgrade",`Sec-WebSocket-Accept: ${Ss("sha1").update(r+vs).digest("base64")}`],c=new this.options.WebSocket(null,void 0,this.options);if(s.size){let h=this.options.handleProtocols?this.options.handleProtocols(s,i):s.values().next().value;h&&(a.push(`Sec-WebSocket-Protocol: ${h}`),c._protocol=h)}if(e[U.extensionName]){let h=e[U.extensionName].params,_=$t.format({[U.extensionName]:[h]});a.push(`Sec-WebSocket-Extensions: ${_}`),c._extensions=e}this.emit("headers",a,i),n.write(a.concat(`\r
|
|
1
|
+
"use strict";var tr=Object.create;var se=Object.defineProperty;var rr=Object.getOwnPropertyDescriptor;var sr=Object.getOwnPropertyNames;var ir=Object.getPrototypeOf,nr=Object.prototype.hasOwnProperty;var S=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports),or=(t,e)=>{for(var r in e)se(t,r,{get:e[r],enumerable:!0})},Ve=(t,e,r,s)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of sr(e))!nr.call(t,i)&&i!==r&&se(t,i,{get:()=>e[i],enumerable:!(s=rr(e,i))||s.enumerable});return t};var W=(t,e,r)=>(r=t!=null?tr(ir(t)):{},Ve(e||!t||!t.__esModule?se(r,"default",{value:t,enumerable:!0}):r,t)),ar=t=>Ve(se({},"__esModule",{value:!0}),t);var k=S((Rs,Ye)=>{"use strict";var ze=["nodebuffer","arraybuffer","fragments"],He=typeof Blob<"u";He&&ze.push("blob");Ye.exports={BINARY_TYPES:ze,EMPTY_BUFFER:Buffer.alloc(0),GUID:"258EAFA5-E914-47DA-95CA-C5AB0DC85B11",hasBlob:He,kForOnEventAttribute:Symbol("kIsForOnEventAttribute"),kListener:Symbol("kListener"),kStatusCode:Symbol("status-code"),kWebSocket:Symbol("websocket"),NOOP:()=>{}}});var K=S((Is,ie)=>{"use strict";var{EMPTY_BUFFER:fr}=k(),Se=Buffer[Symbol.species];function lr(t,e){if(t.length===0)return fr;if(t.length===1)return t[0];let r=Buffer.allocUnsafe(e),s=0;for(let i=0;i<t.length;i++){let n=t[i];r.set(n,s),s+=n.length}return s<e?new Se(r.buffer,r.byteOffset,s):r}function Ke(t,e,r,s,i){for(let n=0;n<i;n++)r[s+n]=t[n]^e[n&3]}function Xe(t,e){for(let r=0;r<t.length;r++)t[r]^=e[r&3]}function cr(t){return t.length===t.buffer.byteLength?t.buffer:t.buffer.slice(t.byteOffset,t.byteOffset+t.length)}function xe(t){if(xe.readOnly=!0,Buffer.isBuffer(t))return t;let e;return t instanceof ArrayBuffer?e=new Se(t):ArrayBuffer.isView(t)?e=new Se(t.buffer,t.byteOffset,t.byteLength):(e=Buffer.from(t),xe.readOnly=!1),e}ie.exports={concat:lr,mask:Ke,toArrayBuffer:cr,toBuffer:xe,unmask:Xe};if(!process.env.WS_NO_BUFFER_UTIL)try{let t=require("bufferutil");ie.exports.mask=function(e,r,s,i,n){n<48?Ke(e,r,s,i,n):t.mask(e,r,s,i,n)},ie.exports.unmask=function(e,r){e.length<32?Xe(e,r):t.unmask(e,r)}}catch{}});var Qe=S((Us,Je)=>{"use strict";var Ze=Symbol("kDone"),Ee=Symbol("kRun"),ve=class{constructor(e){this[Ze]=()=>{this.pending--,this[Ee]()},this.concurrency=e||1/0,this.jobs=[],this.pending=0}add(e){this.jobs.push(e),this[Ee]()}[Ee](){if(this.pending!==this.concurrency&&this.jobs.length){let e=this.jobs.shift();this.pending++,e(this[Ze])}}};Je.exports=ve});var Z=S((Ds,st)=>{"use strict";var X=require("zlib"),et=K(),hr=Qe(),{kStatusCode:tt}=k(),ur=Buffer[Symbol.species],dr=Buffer.from([0,0,255,255]),oe=Symbol("permessage-deflate"),T=Symbol("total-length"),F=Symbol("callback"),L=Symbol("buffers"),G=Symbol("error"),ne,be=class{constructor(e,r,s){if(this._maxPayload=s|0,this._options=e||{},this._threshold=this._options.threshold!==void 0?this._options.threshold:1024,this._isServer=!!r,this._deflate=null,this._inflate=null,this.params=null,!ne){let i=this._options.concurrencyLimit!==void 0?this._options.concurrencyLimit:10;ne=new hr(i)}}static get extensionName(){return"permessage-deflate"}offer(){let e={};return this._options.serverNoContextTakeover&&(e.server_no_context_takeover=!0),this._options.clientNoContextTakeover&&(e.client_no_context_takeover=!0),this._options.serverMaxWindowBits&&(e.server_max_window_bits=this._options.serverMaxWindowBits),this._options.clientMaxWindowBits?e.client_max_window_bits=this._options.clientMaxWindowBits:this._options.clientMaxWindowBits==null&&(e.client_max_window_bits=!0),e}accept(e){return e=this.normalizeParams(e),this.params=this._isServer?this.acceptAsServer(e):this.acceptAsClient(e),this.params}cleanup(){if(this._inflate&&(this._inflate.close(),this._inflate=null),this._deflate){let e=this._deflate[F];this._deflate.close(),this._deflate=null,e&&e(new Error("The deflate stream was closed while data was being processed"))}}acceptAsServer(e){let r=this._options,s=e.find(i=>!(r.serverNoContextTakeover===!1&&i.server_no_context_takeover||i.server_max_window_bits&&(r.serverMaxWindowBits===!1||typeof r.serverMaxWindowBits=="number"&&r.serverMaxWindowBits>i.server_max_window_bits)||typeof r.clientMaxWindowBits=="number"&&!i.client_max_window_bits));if(!s)throw new Error("None of the extension offers can be accepted");return r.serverNoContextTakeover&&(s.server_no_context_takeover=!0),r.clientNoContextTakeover&&(s.client_no_context_takeover=!0),typeof r.serverMaxWindowBits=="number"&&(s.server_max_window_bits=r.serverMaxWindowBits),typeof r.clientMaxWindowBits=="number"?s.client_max_window_bits=r.clientMaxWindowBits:(s.client_max_window_bits===!0||r.clientMaxWindowBits===!1)&&delete s.client_max_window_bits,s}acceptAsClient(e){let r=e[0];if(this._options.clientNoContextTakeover===!1&&r.client_no_context_takeover)throw new Error('Unexpected parameter "client_no_context_takeover"');if(!r.client_max_window_bits)typeof this._options.clientMaxWindowBits=="number"&&(r.client_max_window_bits=this._options.clientMaxWindowBits);else if(this._options.clientMaxWindowBits===!1||typeof this._options.clientMaxWindowBits=="number"&&r.client_max_window_bits>this._options.clientMaxWindowBits)throw new Error('Unexpected or invalid parameter "client_max_window_bits"');return r}normalizeParams(e){return e.forEach(r=>{Object.keys(r).forEach(s=>{let i=r[s];if(i.length>1)throw new Error(`Parameter "${s}" must have only a single value`);if(i=i[0],s==="client_max_window_bits"){if(i!==!0){let n=+i;if(!Number.isInteger(n)||n<8||n>15)throw new TypeError(`Invalid value for parameter "${s}": ${i}`);i=n}else if(!this._isServer)throw new TypeError(`Invalid value for parameter "${s}": ${i}`)}else if(s==="server_max_window_bits"){let n=+i;if(!Number.isInteger(n)||n<8||n>15)throw new TypeError(`Invalid value for parameter "${s}": ${i}`);i=n}else if(s==="client_no_context_takeover"||s==="server_no_context_takeover"){if(i!==!0)throw new TypeError(`Invalid value for parameter "${s}": ${i}`)}else throw new Error(`Unknown parameter "${s}"`);r[s]=i})}),e}decompress(e,r,s){ne.add(i=>{this._decompress(e,r,(n,o)=>{i(),s(n,o)})})}compress(e,r,s){ne.add(i=>{this._compress(e,r,(n,o)=>{i(),s(n,o)})})}_decompress(e,r,s){let i=this._isServer?"client":"server";if(!this._inflate){let n=`${i}_max_window_bits`,o=typeof this.params[n]!="number"?X.Z_DEFAULT_WINDOWBITS:this.params[n];this._inflate=X.createInflateRaw({...this._options.zlibInflateOptions,windowBits:o}),this._inflate[oe]=this,this._inflate[T]=0,this._inflate[L]=[],this._inflate.on("error",pr),this._inflate.on("data",rt)}this._inflate[F]=s,this._inflate.write(e),r&&this._inflate.write(dr),this._inflate.flush(()=>{let n=this._inflate[G];if(n){this._inflate.close(),this._inflate=null,s(n);return}let o=et.concat(this._inflate[L],this._inflate[T]);this._inflate._readableState.endEmitted?(this._inflate.close(),this._inflate=null):(this._inflate[T]=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"?X.Z_DEFAULT_WINDOWBITS:this.params[n];this._deflate=X.createDeflateRaw({...this._options.zlibDeflateOptions,windowBits:o}),this._deflate[T]=0,this._deflate[L]=[],this._deflate.on("data",_r)}this._deflate[F]=s,this._deflate.write(e),this._deflate.flush(X.Z_SYNC_FLUSH,()=>{if(!this._deflate)return;let n=et.concat(this._deflate[L],this._deflate[T]);r&&(n=new ur(n.buffer,n.byteOffset,n.length-4)),this._deflate[F]=null,this._deflate[T]=0,this._deflate[L]=[],r&&this.params[`${i}_no_context_takeover`]&&this._deflate.reset(),s(null,n)})}};st.exports=be;function _r(t){this[L].push(t),this[T]+=t.length}function rt(t){if(this[T]+=t.length,this[oe]._maxPayload<1||this[T]<=this[oe]._maxPayload){this[L].push(t);return}this[G]=new RangeError("Max payload size exceeded"),this[G].code="WS_ERR_UNSUPPORTED_MESSAGE_LENGTH",this[G][tt]=1009,this.removeListener("data",rt),this.reset()}function pr(t){if(this[oe]._inflate=null,this[G]){this[F](this[G]);return}t[tt]=1007,this[F](t)}});var q=S((Ms,ae)=>{"use strict";var{isUtf8:it}=require("buffer"),{hasBlob:mr}=k(),gr=[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 yr(t){return t>=1e3&&t<=1014&&t!==1004&&t!==1005&&t!==1006||t>=3e3&&t<=4999}function we(t){let e=t.length,r=0;for(;r<e;)if((t[r]&128)===0)r++;else if((t[r]&224)===192){if(r+1===e||(t[r+1]&192)!==128||(t[r]&254)===192)return!1;r+=2}else if((t[r]&240)===224){if(r+2>=e||(t[r+1]&192)!==128||(t[r+2]&192)!==128||t[r]===224&&(t[r+1]&224)===128||t[r]===237&&(t[r+1]&224)===160)return!1;r+=3}else if((t[r]&248)===240){if(r+3>=e||(t[r+1]&192)!==128||(t[r+2]&192)!==128||(t[r+3]&192)!==128||t[r]===240&&(t[r+1]&240)===128||t[r]===244&&t[r+1]>143||t[r]>244)return!1;r+=4}else return!1;return!0}function Sr(t){return mr&&typeof t=="object"&&typeof t.arrayBuffer=="function"&&typeof t.type=="string"&&typeof t.stream=="function"&&(t[Symbol.toStringTag]==="Blob"||t[Symbol.toStringTag]==="File")}ae.exports={isBlob:Sr,isValidStatusCode:yr,isValidUTF8:we,tokenChars:gr};if(it)ae.exports.isValidUTF8=function(t){return t.length<24?we(t):it(t)};else if(!process.env.WS_NO_UTF_8_VALIDATE)try{let t=require("utf-8-validate");ae.exports.isValidUTF8=function(e){return e.length<32?we(e):t(e)}}catch{}});var Ne=S((As,ht)=>{"use strict";var{Writable:xr}=require("stream"),nt=Z(),{BINARY_TYPES:Er,EMPTY_BUFFER:ot,kStatusCode:vr,kWebSocket:br}=k(),{concat:Oe,toArrayBuffer:wr,unmask:Or}=K(),{isValidStatusCode:kr,isValidUTF8:at}=q(),fe=Buffer[Symbol.species],E=0,ft=1,lt=2,ct=3,ke=4,Te=5,le=6,Ce=class extends xr{constructor(e={}){super(),this._allowSynchronousEvents=e.allowSynchronousEvents!==void 0?e.allowSynchronousEvents:!0,this._binaryType=e.binaryType||Er[0],this._extensions=e.extensions||{},this._isServer=!!e.isServer,this._maxPayload=e.maxPayload|0,this._skipUTF8Validation=!!e.skipUTF8Validation,this[br]=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 fe(s.buffer,s.byteOffset+e,s.length-e),new fe(s.buffer,s.byteOffset,e)}let r=Buffer.allocUnsafe(e);do{let s=this._buffers[0],i=r.length-e;e>=s.length?r.set(this._buffers.shift(),i):(r.set(new Uint8Array(s.buffer,s.byteOffset,e),i),this._buffers[0]=new fe(s.buffer,s.byteOffset+e,s.length-e)),e-=s.length}while(e>0);return r}startLoop(e){this._loop=!0;do switch(this._state){case E:this.getInfo(e);break;case ft:this.getPayloadLength16(e);break;case lt:this.getPayloadLength64(e);break;case ct:this.getMask();break;case ke:this.getData(e);break;case Te:case le:this._loop=!1;return}while(this._loop);this._errored||e()}getInfo(e){if(this._bufferedBytes<2){this._loop=!1;return}let r=this.consume(2);if((r[0]&48)!==0){let i=this.createError(RangeError,"RSV2 and RSV3 must be clear",!0,1002,"WS_ERR_UNEXPECTED_RSV_2_3");e(i);return}let s=(r[0]&64)===64;if(s&&!this._extensions[nt.extensionName]){let i=this.createError(RangeError,"RSV1 must be clear",!0,1002,"WS_ERR_UNEXPECTED_RSV_1");e(i);return}if(this._fin=(r[0]&128)===128,this._opcode=r[0]&15,this._payloadLength=r[1]&127,this._opcode===0){if(s){let i=this.createError(RangeError,"RSV1 must be clear",!0,1002,"WS_ERR_UNEXPECTED_RSV_1");e(i);return}if(!this._fragmented){let i=this.createError(RangeError,"invalid opcode 0",!0,1002,"WS_ERR_INVALID_OPCODE");e(i);return}this._opcode=this._fragmented}else if(this._opcode===1||this._opcode===2){if(this._fragmented){let i=this.createError(RangeError,`invalid opcode ${this._opcode}`,!0,1002,"WS_ERR_INVALID_OPCODE");e(i);return}this._compressed=s}else if(this._opcode>7&&this._opcode<11){if(!this._fin){let i=this.createError(RangeError,"FIN must be set",!0,1002,"WS_ERR_EXPECTED_FIN");e(i);return}if(s){let i=this.createError(RangeError,"RSV1 must be clear",!0,1002,"WS_ERR_UNEXPECTED_RSV_1");e(i);return}if(this._payloadLength>125||this._opcode===8&&this._payloadLength===1){let i=this.createError(RangeError,`invalid payload length ${this._payloadLength}`,!0,1002,"WS_ERR_INVALID_CONTROL_PAYLOAD_LENGTH");e(i);return}}else{let i=this.createError(RangeError,`invalid opcode ${this._opcode}`,!0,1002,"WS_ERR_INVALID_OPCODE");e(i);return}if(!this._fin&&!this._fragmented&&(this._fragmented=this._opcode),this._masked=(r[1]&128)===128,this._isServer){if(!this._masked){let i=this.createError(RangeError,"MASK must be set",!0,1002,"WS_ERR_EXPECTED_MASK");e(i);return}}else if(this._masked){let i=this.createError(RangeError,"MASK must be clear",!0,1002,"WS_ERR_UNEXPECTED_MASK");e(i);return}this._payloadLength===126?this._state=ft:this._payloadLength===127?this._state=lt:this.haveLength(e)}getPayloadLength16(e){if(this._bufferedBytes<2){this._loop=!1;return}this._payloadLength=this.consume(2).readUInt16BE(0),this.haveLength(e)}getPayloadLength64(e){if(this._bufferedBytes<8){this._loop=!1;return}let r=this.consume(8),s=r.readUInt32BE(0);if(s>Math.pow(2,21)-1){let i=this.createError(RangeError,"Unsupported WebSocket frame: payload length > 2^53 - 1",!1,1009,"WS_ERR_UNSUPPORTED_DATA_PAYLOAD_LENGTH");e(i);return}this._payloadLength=s*Math.pow(2,32)+r.readUInt32BE(4),this.haveLength(e)}haveLength(e){if(this._payloadLength&&this._opcode<8&&(this._totalPayloadLength+=this._payloadLength,this._totalPayloadLength>this._maxPayload&&this._maxPayload>0)){let r=this.createError(RangeError,"Max payload size exceeded",!1,1009,"WS_ERR_UNSUPPORTED_MESSAGE_LENGTH");e(r);return}this._masked?this._state=ct:this._state=ke}getMask(){if(this._bufferedBytes<4){this._loop=!1;return}this._mask=this.consume(4),this._state=ke}getData(e){let r=ot;if(this._payloadLength){if(this._bufferedBytes<this._payloadLength){this._loop=!1;return}r=this.consume(this._payloadLength),this._masked&&(this._mask[0]|this._mask[1]|this._mask[2]|this._mask[3])!==0&&Or(r,this._mask)}if(this._opcode>7){this.controlMessage(r,e);return}if(this._compressed){this._state=Te,this.decompress(r,e);return}r.length&&(this._messageLength=this._totalPayloadLength,this._fragments.push(r)),this.dataMessage(e)}decompress(e,r){this._extensions[nt.extensionName].decompress(e,this._fin,(i,n)=>{if(i)return r(i);if(n.length){if(this._messageLength+=n.length,this._messageLength>this._maxPayload&&this._maxPayload>0){let o=this.createError(RangeError,"Max payload size exceeded",!1,1009,"WS_ERR_UNSUPPORTED_MESSAGE_LENGTH");r(o);return}this._fragments.push(n)}this.dataMessage(r),this._state===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=Oe(s,r):this._binaryType==="arraybuffer"?i=wr(Oe(s,r)):this._binaryType==="blob"?i=new Blob(s):i=s,this._allowSynchronousEvents?(this.emit("message",i,!0),this._state=E):(this._state=le,setImmediate(()=>{this.emit("message",i,!0),this._state=E,this.startLoop(e)}))}else{let i=Oe(s,r);if(!this._skipUTF8Validation&&!at(i)){let n=this.createError(Error,"invalid UTF-8 sequence",!0,1007,"WS_ERR_INVALID_UTF8");e(n);return}this._state===Te||this._allowSynchronousEvents?(this.emit("message",i,!1),this._state=E):(this._state=le,setImmediate(()=>{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,ot),this.end();else{let s=e.readUInt16BE(0);if(!kr(s)){let n=this.createError(RangeError,`invalid status code ${s}`,!0,1002,"WS_ERR_INVALID_CLOSE_CODE");r(n);return}let i=new fe(e.buffer,e.byteOffset+2,e.length-2);if(!this._skipUTF8Validation&&!at(i)){let n=this.createError(Error,"invalid UTF-8 sequence",!0,1007,"WS_ERR_INVALID_UTF8");r(n);return}this._loop=!1,this.emit("conclude",s,i),this.end()}this._state=E;return}this._allowSynchronousEvents?(this.emit(this._opcode===9?"ping":"pong",e),this._state=E):(this._state=le,setImmediate(()=>{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[vr]=i,o}};ht.exports=Ce});var Be=S((Fs,_t)=>{"use strict";var{Duplex:Ws}=require("stream"),{randomFillSync:Tr}=require("crypto"),ut=Z(),{EMPTY_BUFFER:Cr,kWebSocket:Nr,NOOP:Lr}=k(),{isBlob:$,isValidStatusCode:Pr}=q(),{mask:dt,toBuffer:B}=K(),v=Symbol("kByteLength"),Br=Buffer.alloc(4),ce=8*1024,R,j=ce,b=0,Rr=1,Ir=2,Le=class t{constructor(e,r,s){this._extensions=r||{},s&&(this._generateMask=s,this._maskBuffer=Buffer.alloc(4)),this._socket=e,this._firstFragment=!0,this._compress=!1,this._bufferedBytes=0,this._queue=[],this._state=b,this.onerror=Lr,this[Nr]=void 0}static frame(e,r){let s,i=!1,n=2,o=!1;r.mask&&(s=r.maskBuffer||Br,r.generateMask?r.generateMask(s):(j===ce&&(R===void 0&&(R=Buffer.alloc(ce)),Tr(R,0,ce),j=0),s[0]=R[j++],s[1]=R[j++],s[2]=R[j++],s[3]=R[j++]),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?(dt(e,s,a,n,f),[a]):(dt(e,s,e,0,f),[a,e])):[a,e]}close(e,r,s,i){let n;if(e===void 0)n=Cr;else{if(typeof e!="number"||!Pr(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._state!==b?this.enqueue([this.dispatch,n,!1,o,i]):this.sendFrame(t.frame(n,o),i)}ping(e,r,s){let i,n;if(typeof e=="string"?(i=Buffer.byteLength(e),n=!1):$(e)?(i=e.size,n=!1):(e=B(e),i=e.length,n=B.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};$(e)?this._state!==b?this.enqueue([this.getBlobData,e,!1,o,s]):this.getBlobData(e,!1,o,s):this._state!==b?this.enqueue([this.dispatch,e,!1,o,s]):this.sendFrame(t.frame(e,o),s)}pong(e,r,s){let i,n;if(typeof e=="string"?(i=Buffer.byteLength(e),n=!1):$(e)?(i=e.size,n=!1):(e=B(e),i=e.length,n=B.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};$(e)?this._state!==b?this.enqueue([this.getBlobData,e,!1,o,s]):this.getBlobData(e,!1,o,s):this._state!==b?this.enqueue([this.dispatch,e,!1,o,s]):this.sendFrame(t.frame(e,o),s)}send(e,r,s){let i=this._extensions[ut.extensionName],n=r.binary?2:1,o=r.compress,f,l;typeof e=="string"?(f=Buffer.byteLength(e),l=!1):$(e)?(f=e.size,l=!1):(e=B(e),f=e.length,l=B.readOnly),this._firstFragment?(this._firstFragment=!1,o&&i&&i.params[i._isServer?"server_no_context_takeover":"client_no_context_takeover"]&&(o=f>=i._threshold),this._compress=o):(o=!1,n=0),r.fin&&(this._firstFragment=!0);let a={[v]:f,fin:r.fin,generateMask:this._generateMask,mask:r.mask,maskBuffer:this._maskBuffer,opcode:n,readOnly:l,rsv1:o};$(e)?this._state!==b?this.enqueue([this.getBlobData,e,this._compress,a,s]):this.getBlobData(e,this._compress,a,s):this._state!==b?this.enqueue([this.dispatch,e,this._compress,a,s]):this.dispatch(e,this._compress,a,s)}getBlobData(e,r,s,i){this._bufferedBytes+=s[v],this._state=Ir,e.arrayBuffer().then(n=>{if(this._socket.destroyed){let f=new Error("The socket was closed while the blob was being read");process.nextTick(Pe,this,f,i);return}this._bufferedBytes-=s[v];let o=B(n);r?this.dispatch(o,r,s,i):(this._state=b,this.sendFrame(t.frame(o,s),i),this.dequeue())}).catch(n=>{process.nextTick(Ur,this,n,i)})}dispatch(e,r,s,i){if(!r){this.sendFrame(t.frame(e,s),i);return}let n=this._extensions[ut.extensionName];this._bufferedBytes+=s[v],this._state=Rr,n.compress(e,s.fin,(o,f)=>{if(this._socket.destroyed){let l=new Error("The socket was closed while data was being compressed");Pe(this,l,i);return}this._bufferedBytes-=s[v],this._state=b,s.readOnly=!1,this.sendFrame(t.frame(f,s),i),this.dequeue()})}dequeue(){for(;this._state===b&&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)}};_t.exports=Le;function Pe(t,e,r){typeof r=="function"&&r(e);for(let s=0;s<t._queue.length;s++){let i=t._queue[s],n=i[i.length-1];typeof n=="function"&&n(e)}}function Ur(t,e,r){Pe(t,e,r),t.onerror(e)}});var bt=S((Gs,vt)=>{"use strict";var{kForOnEventAttribute:J,kListener:Re}=k(),pt=Symbol("kCode"),mt=Symbol("kData"),gt=Symbol("kError"),yt=Symbol("kMessage"),St=Symbol("kReason"),V=Symbol("kTarget"),xt=Symbol("kType"),Et=Symbol("kWasClean"),C=class{constructor(e){this[V]=null,this[xt]=e}get target(){return this[V]}get type(){return this[xt]}};Object.defineProperty(C.prototype,"target",{enumerable:!0});Object.defineProperty(C.prototype,"type",{enumerable:!0});var I=class extends C{constructor(e,r={}){super(e),this[pt]=r.code===void 0?0:r.code,this[St]=r.reason===void 0?"":r.reason,this[Et]=r.wasClean===void 0?!1:r.wasClean}get code(){return this[pt]}get reason(){return this[St]}get wasClean(){return this[Et]}};Object.defineProperty(I.prototype,"code",{enumerable:!0});Object.defineProperty(I.prototype,"reason",{enumerable:!0});Object.defineProperty(I.prototype,"wasClean",{enumerable:!0});var z=class extends C{constructor(e,r={}){super(e),this[gt]=r.error===void 0?null:r.error,this[yt]=r.message===void 0?"":r.message}get error(){return this[gt]}get message(){return this[yt]}};Object.defineProperty(z.prototype,"error",{enumerable:!0});Object.defineProperty(z.prototype,"message",{enumerable:!0});var Q=class extends C{constructor(e,r={}){super(e),this[mt]=r.data===void 0?null:r.data}get data(){return this[mt]}};Object.defineProperty(Q.prototype,"data",{enumerable:!0});var Dr={addEventListener(t,e,r={}){for(let i of this.listeners(t))if(!r[J]&&i[Re]===e&&!i[J])return;let s;if(t==="message")s=function(n,o){let f=new Q("message",{data:o?n:n.toString()});f[V]=this,he(e,this,f)};else if(t==="close")s=function(n,o){let f=new I("close",{code:n,reason:o.toString(),wasClean:this._closeFrameReceived&&this._closeFrameSent});f[V]=this,he(e,this,f)};else if(t==="error")s=function(n){let o=new z("error",{error:n,message:n.message});o[V]=this,he(e,this,o)};else if(t==="open")s=function(){let n=new C("open");n[V]=this,he(e,this,n)};else return;s[J]=!!r[J],s[Re]=e,r.once?this.once(t,s):this.on(t,s)},removeEventListener(t,e){for(let r of this.listeners(t))if(r[Re]===e&&!r[J]){this.removeListener(t,r);break}}};vt.exports={CloseEvent:I,ErrorEvent:z,Event:C,EventTarget:Dr,MessageEvent:Q};function he(t,e,r){typeof t=="object"&&t.handleEvent?t.handleEvent.call(t,r):t.call(e,r)}});var Ie=S((qs,wt)=>{"use strict";var{tokenChars:ee}=q();function O(t,e,r){t[e]===void 0?t[e]=[r]:t[e].push(r)}function Mr(t){let e=Object.create(null),r=Object.create(null),s=!1,i=!1,n=!1,o,f,l=-1,a=-1,c=-1,h=0;for(;h<t.length;h++)if(a=t.charCodeAt(h),o===void 0)if(c===-1&&ee[a]===1)l===-1&&(l=h);else if(h!==0&&(a===32||a===9))c===-1&&l!==-1&&(c=h);else if(a===59||a===44){if(l===-1)throw new SyntaxError(`Unexpected character at index ${h}`);c===-1&&(c=h);let m=t.slice(l,c);a===44?(O(e,m,r),r=Object.create(null)):o=m,l=c=-1}else throw new SyntaxError(`Unexpected character at index ${h}`);else if(f===void 0)if(c===-1&&ee[a]===1)l===-1&&(l=h);else if(a===32||a===9)c===-1&&l!==-1&&(c=h);else if(a===59||a===44){if(l===-1)throw new SyntaxError(`Unexpected character at index ${h}`);c===-1&&(c=h),O(r,t.slice(l,c),!0),a===44&&(O(e,o,r),r=Object.create(null),o=void 0),l=c=-1}else if(a===61&&l!==-1&&c===-1)f=t.slice(l,h),l=c=-1;else throw new SyntaxError(`Unexpected character at index ${h}`);else if(i){if(ee[a]!==1)throw new SyntaxError(`Unexpected character at index ${h}`);l===-1?l=h:s||(s=!0),i=!1}else if(n)if(ee[a]===1)l===-1&&(l=h);else if(a===34&&l!==-1)n=!1,c=h;else if(a===92)i=!0;else throw new SyntaxError(`Unexpected character at index ${h}`);else if(a===34&&t.charCodeAt(h-1)===61)n=!0;else if(c===-1&&ee[a]===1)l===-1&&(l=h);else if(l!==-1&&(a===32||a===9))c===-1&&(c=h);else if(a===59||a===44){if(l===-1)throw new SyntaxError(`Unexpected character at index ${h}`);c===-1&&(c=h);let m=t.slice(l,c);s&&(m=m.replace(/\\/g,""),s=!1),O(r,f,m),a===44&&(O(e,o,r),r=Object.create(null),o=void 0),f=void 0,l=c=-1}else throw new SyntaxError(`Unexpected character at index ${h}`);if(l===-1||n||a===32||a===9)throw new SyntaxError("Unexpected end of input");c===-1&&(c=h);let _=t.slice(l,c);return o===void 0?O(e,_,r):(f===void 0?O(r,_,!0):s?O(r,f,_.replace(/\\/g,"")):O(r,f,_),O(e,o,r)),e}function Ar(t){return Object.keys(t).map(e=>{let r=t[e];return Array.isArray(r)||(r=[r]),r.map(s=>[e].concat(Object.keys(s).map(i=>{let n=s[i];return Array.isArray(n)||(n=[n]),n.map(o=>o===!0?i:`${i}=${o}`).join("; ")})).join("; ")).join(", ")}).join(", ")}wt.exports={format:Ar,parse:Mr}});var pe=S((Vs,Dt)=>{"use strict";var Wr=require("events"),Fr=require("https"),Gr=require("http"),Tt=require("net"),qr=require("tls"),{randomBytes:$r,createHash:jr}=require("crypto"),{Duplex:$s,Readable:js}=require("stream"),{URL:Ue}=require("url"),P=Z(),Vr=Ne(),zr=Be(),{isBlob:Hr}=q(),{BINARY_TYPES:Ot,EMPTY_BUFFER:ue,GUID:Yr,kForOnEventAttribute:De,kListener:Kr,kStatusCode:Xr,kWebSocket:g,NOOP:Ct}=k(),{EventTarget:{addEventListener:Zr,removeEventListener:Jr}}=bt(),{format:Qr,parse:es}=Ie(),{toBuffer:ts}=K(),rs=30*1e3,Nt=Symbol("kAborted"),Me=[8,13],N=["CONNECTING","OPEN","CLOSING","CLOSED"],ss=/^[!#$%&'*+\-.0-9A-Z^_`|a-z~]+$/,d=class t extends Wr{constructor(e,r,s){super(),this._binaryType=Ot[0],this._closeCode=1006,this._closeFrameReceived=!1,this._closeFrameSent=!1,this._closeMessage=ue,this._closeTimer=null,this._errorEmitted=!1,this._extensions={},this._paused=!1,this._protocol="",this._readyState=t.CONNECTING,this._receiver=null,this._sender=null,this._socket=null,e!==null?(this._bufferedAmount=0,this._isServer=!1,this._redirects=0,r===void 0?r=[]:Array.isArray(r)||(typeof r=="object"&&r!==null?(s=r,r=[]):r=[r]),Lt(this,e,r,s)):(this._autoPong=s.autoPong,this._isServer=!0)}get binaryType(){return this._binaryType}set binaryType(e){Ot.includes(e)&&(this._binaryType=e,this._receiver&&(this._receiver._binaryType=e))}get bufferedAmount(){return this._socket?this._socket._writableState.length+this._sender._bufferedBytes:this._bufferedAmount}get extensions(){return Object.keys(this._extensions).join()}get isPaused(){return this._paused}get onclose(){return null}get onerror(){return null}get onopen(){return null}get onmessage(){return null}get protocol(){return this._protocol}get readyState(){return this._readyState}get url(){return this._url}setSocket(e,r,s){let i=new Vr({allowSynchronousEvents:s.allowSynchronousEvents,binaryType:this.binaryType,extensions:this._extensions,isServer:this._isServer,maxPayload:s.maxPayload,skipUTF8Validation:s.skipUTF8Validation}),n=new zr(e,this._extensions,s.generateMask);this._receiver=i,this._sender=n,this._socket=e,i[g]=this,n[g]=this,e[g]=this,i.on("conclude",os),i.on("drain",as),i.on("error",fs),i.on("message",ls),i.on("ping",cs),i.on("pong",hs),n.onerror=us,e.setTimeout&&e.setTimeout(0),e.setNoDelay&&e.setNoDelay(),r.length>0&&e.unshift(r),e.on("close",Rt),e.on("data",_e),e.on("end",It),e.on("error",Ut),this._readyState=t.OPEN,this.emit("open")}emitClose(){if(!this._socket){this._readyState=t.CLOSED,this.emit("close",this._closeCode,this._closeMessage);return}this._extensions[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){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())}),Bt(this)}}pause(){this.readyState===t.CONNECTING||this.readyState===t.CLOSED||(this._paused=!0,this._socket.pause())}ping(e,r,s){if(this.readyState===t.CONNECTING)throw new Error("WebSocket is not open: readyState 0 (CONNECTING)");if(typeof e=="function"?(s=e,e=r=void 0):typeof r=="function"&&(s=r,r=void 0),typeof e=="number"&&(e=e.toString()),this.readyState!==t.OPEN){Ae(this,e,s);return}r===void 0&&(r=!this._isServer),this._sender.ping(e||ue,r,s)}pong(e,r,s){if(this.readyState===t.CONNECTING)throw new Error("WebSocket is not open: readyState 0 (CONNECTING)");if(typeof e=="function"?(s=e,e=r=void 0):typeof r=="function"&&(s=r,r=void 0),typeof e=="number"&&(e=e.toString()),this.readyState!==t.OPEN){Ae(this,e,s);return}r===void 0&&(r=!this._isServer),this._sender.pong(e||ue,r,s)}resume(){this.readyState===t.CONNECTING||this.readyState===t.CLOSED||(this._paused=!1,this._receiver._writableState.needDrain||this._socket.resume())}send(e,r,s){if(this.readyState===t.CONNECTING)throw new Error("WebSocket is not open: readyState 0 (CONNECTING)");if(typeof r=="function"&&(s=r,r={}),typeof e=="number"&&(e=e.toString()),this.readyState!==t.OPEN){Ae(this,e,s);return}let i={binary:typeof e!="string",mask:!this._isServer,compress:!0,fin:!0,...r};this._extensions[P.extensionName]||(i.compress=!1),this._sender.send(e||ue,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:N.indexOf("CONNECTING")});Object.defineProperty(d.prototype,"CONNECTING",{enumerable:!0,value:N.indexOf("CONNECTING")});Object.defineProperty(d,"OPEN",{enumerable:!0,value:N.indexOf("OPEN")});Object.defineProperty(d.prototype,"OPEN",{enumerable:!0,value:N.indexOf("OPEN")});Object.defineProperty(d,"CLOSING",{enumerable:!0,value:N.indexOf("CLOSING")});Object.defineProperty(d.prototype,"CLOSING",{enumerable:!0,value:N.indexOf("CLOSING")});Object.defineProperty(d,"CLOSED",{enumerable:!0,value:N.indexOf("CLOSED")});Object.defineProperty(d.prototype,"CLOSED",{enumerable:!0,value:N.indexOf("CLOSED")});["binaryType","bufferedAmount","extensions","isPaused","protocol","readyState","url"].forEach(t=>{Object.defineProperty(d.prototype,t,{enumerable:!0})});["open","error","close","message"].forEach(t=>{Object.defineProperty(d.prototype,`on${t}`,{enumerable:!0,get(){for(let e of this.listeners(t))if(e[De])return e[Kr];return null},set(e){for(let r of this.listeners(t))if(r[De]){this.removeListener(t,r);break}typeof e=="function"&&this.addEventListener(t,e,{[De]:!0})}})});d.prototype.addEventListener=Zr;d.prototype.removeEventListener=Jr;Dt.exports=d;function Lt(t,e,r,s){let i={allowSynchronousEvents:!0,autoPong:!0,protocolVersion:Me[1],maxPayload:104857600,skipUTF8Validation:!1,perMessageDeflate:!0,followRedirects:!1,maxRedirects:10,...s,socketPath:void 0,hostname:void 0,protocol:void 0,timeout:void 0,method:"GET",host:void 0,path:void 0,port:void 0};if(t._autoPong=i.autoPong,!Me.includes(i.protocolVersion))throw new RangeError(`Unsupported protocol version: ${i.protocolVersion} (supported versions: ${Me.join(", ")})`);let n;if(e instanceof Ue)n=e;else try{n=new Ue(e)}catch{throw new SyntaxError(`Invalid URL: ${e}`)}n.protocol==="http:"?n.protocol="ws:":n.protocol==="https:"&&(n.protocol="wss:"),t._url=n.href;let o=n.protocol==="wss:",f=n.protocol==="ws+unix:",l;if(n.protocol!=="ws:"&&!o&&!f?l=`The URL's protocol must be one of "ws:", "wss:", "http:", "https:", or "ws+unix:"`:f&&!n.pathname?l="The URL's pathname is empty":n.hash&&(l="The URL contains a fragment identifier"),l){let u=new SyntaxError(l);if(t._redirects===0)throw u;de(t,u);return}let a=o?443:80,c=$r(16).toString("base64"),h=o?Fr.request:Gr.request,_=new Set,m;if(i.createConnection=i.createConnection||(o?ns:is),i.defaultPort=i.defaultPort||a,i.port=n.port||a,i.host=n.hostname.startsWith("[")?n.hostname.slice(1,-1):n.hostname,i.headers={...i.headers,"Sec-WebSocket-Version":i.protocolVersion,"Sec-WebSocket-Key":c,Connection:"Upgrade",Upgrade:"websocket"},i.path=n.pathname+n.search,i.timeout=i.handshakeTimeout,i.perMessageDeflate&&(m=new P(i.perMessageDeflate!==!0?i.perMessageDeflate:{},!1,i.maxPayload),i.headers["Sec-WebSocket-Extensions"]=Qr({[P.extensionName]:m.offer()})),r.length){for(let u of r){if(typeof u!="string"||!ss.test(u)||_.has(u))throw new SyntaxError("An invalid or duplicated subprotocol was specified");_.add(u)}i.headers["Sec-WebSocket-Protocol"]=r.join(",")}if(i.origin&&(i.protocolVersion<13?i.headers["Sec-WebSocket-Origin"]=i.origin:i.headers.Origin=i.origin),(n.username||n.password)&&(i.auth=`${n.username}:${n.password}`),f){let u=i.path.split(":");i.socketPath=u[0],i.path=u[1]}let p;if(i.followRedirects){if(t._redirects===0){t._originalIpc=f,t._originalSecure=o,t._originalHostOrSocketPath=f?i.socketPath:n.host;let u=s&&s.headers;if(s={...s,headers:{}},u)for(let[y,M]of Object.entries(u))s.headers[y.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")),p=t._req=h(i),t._redirects&&t.emit("redirect",t.url,p)}else p=t._req=h(i);i.timeout&&p.on("timeout",()=>{x(t,p,"Opening handshake has timed out")}),p.on("error",u=>{p===null||p[Nt]||(p=t._req=null,de(t,u))}),p.on("response",u=>{let y=u.headers.location,M=u.statusCode;if(y&&i.followRedirects&&M>=300&&M<400){if(++t._redirects>i.maxRedirects){x(t,p,"Maximum redirects exceeded");return}p.abort();let H;try{H=new Ue(y,e)}catch{let A=new SyntaxError(`Invalid URL: ${y}`);de(t,A);return}Lt(t,H,r,s)}else t.emit("unexpected-response",p,u)||x(t,p,`Unexpected server response: ${u.statusCode}`)}),p.on("upgrade",(u,y,M)=>{if(t.emit("upgrade",u),t.readyState!==d.CONNECTING)return;p=t._req=null;let H=u.headers.upgrade;if(H===void 0||H.toLowerCase()!=="websocket"){x(t,y,"Invalid Upgrade header");return}let qe=jr("sha1").update(c+Yr).digest("base64");if(u.headers["sec-websocket-accept"]!==qe){x(t,y,"Invalid Sec-WebSocket-Accept header");return}let A=u.headers["sec-websocket-protocol"],Y;if(A!==void 0?_.size?_.has(A)||(Y="Server sent an invalid subprotocol"):Y="Server sent a subprotocol but none was requested":_.size&&(Y="Server sent no subprotocol"),Y){x(t,y,Y);return}A&&(t._protocol=A);let $e=u.headers["sec-websocket-extensions"];if($e!==void 0){if(!m){x(t,y,"Server sent a Sec-WebSocket-Extensions header but no extension was requested");return}let ge;try{ge=es($e)}catch{x(t,y,"Invalid Sec-WebSocket-Extensions header");return}let je=Object.keys(ge);if(je.length!==1||je[0]!==P.extensionName){x(t,y,"Server indicated an extension that was not requested");return}try{m.accept(ge[P.extensionName])}catch{x(t,y,"Invalid Sec-WebSocket-Extensions header");return}t._extensions[P.extensionName]=m}t.setSocket(y,M,{allowSynchronousEvents:i.allowSynchronousEvents,generateMask:i.generateMask,maxPayload:i.maxPayload,skipUTF8Validation:i.skipUTF8Validation})}),i.finishRequest?i.finishRequest(p,t):p.end()}function de(t,e){t._readyState=d.CLOSING,t._errorEmitted=!0,t.emit("error",e),t.emitClose()}function is(t){return t.path=t.socketPath,Tt.connect(t)}function ns(t){return t.path=void 0,!t.servername&&t.servername!==""&&(t.servername=Tt.isIP(t.host)?"":t.host),qr.connect(t)}function x(t,e,r){t._readyState=d.CLOSING;let s=new Error(r);Error.captureStackTrace(s,x),e.setHeader?(e[Nt]=!0,e.abort(),e.socket&&!e.socket.destroyed&&e.socket.destroy(),process.nextTick(de,t,s)):(e.destroy(s),e.once("error",t.emit.bind(t,"error")),e.once("close",t.emitClose.bind(t)))}function Ae(t,e,r){if(e){let s=Hr(e)?e.size:ts(e).length;t._socket?t._sender._bufferedBytes+=s:t._bufferedAmount+=s}if(r){let s=new Error(`WebSocket is not open: readyState ${t.readyState} (${N[t.readyState]})`);process.nextTick(r,s)}}function os(t,e){let r=this[g];r._closeFrameReceived=!0,r._closeMessage=e,r._closeCode=t,r._socket[g]!==void 0&&(r._socket.removeListener("data",_e),process.nextTick(Pt,r._socket),t===1005?r.close():r.close(t,e))}function as(){let t=this[g];t.isPaused||t._socket.resume()}function fs(t){let e=this[g];e._socket[g]!==void 0&&(e._socket.removeListener("data",_e),process.nextTick(Pt,e._socket),e.close(t[Xr])),e._errorEmitted||(e._errorEmitted=!0,e.emit("error",t))}function kt(){this[g].emitClose()}function ls(t,e){this[g].emit("message",t,e)}function cs(t){let e=this[g];e._autoPong&&e.pong(t,!this._isServer,Ct),e.emit("ping",t)}function hs(t){this[g].emit("pong",t)}function Pt(t){t.resume()}function us(t){let e=this[g];e.readyState!==d.CLOSED&&(e.readyState===d.OPEN&&(e._readyState=d.CLOSING,Bt(e)),this._socket.end(),e._errorEmitted||(e._errorEmitted=!0,e.emit("error",t)))}function Bt(t){t._closeTimer=setTimeout(t._socket.destroy.bind(t._socket),rs)}function Rt(){let t=this[g];this.removeListener("close",Rt),this.removeListener("data",_e),this.removeListener("end",It),t._readyState=d.CLOSING;let e;!this._readableState.endEmitted&&!t._closeFrameReceived&&!t._receiver._writableState.errorEmitted&&(e=t._socket.read())!==null&&t._receiver.write(e),t._receiver.end(),this[g]=void 0,clearTimeout(t._closeTimer),t._receiver._writableState.finished||t._receiver._writableState.errorEmitted?t.emitClose():(t._receiver.on("error",kt),t._receiver.on("finish",kt))}function _e(t){this[g]._receiver.write(t)||this.pause()}function It(){let t=this[g];t._readyState=d.CLOSING,t._receiver.end(),this.end()}function Ut(){let t=this[g];this.removeListener("error",Ut),this.on("error",Ct),t&&(t._readyState=d.CLOSING,this.destroy())}});var Ft=S((Hs,Wt)=>{"use strict";var zs=pe(),{Duplex:ds}=require("stream");function Mt(t){t.emit("close")}function _s(){!this.destroyed&&this._writableState.finished&&this.destroy()}function At(t){this.removeListener("error",At),this.destroy(),this.listenerCount("error")===0&&this.emit("error",t)}function ps(t,e){let r=!0,s=new ds({...e,autoDestroy:!1,emitClose:!1,objectMode:!1,writableObjectMode:!1});return t.on("message",function(n,o){let f=!o&&s._readableState.objectMode?n.toString():n;s.push(f)||t.pause()}),t.once("error",function(n){s.destroyed||(r=!1,s.destroy(n))}),t.once("close",function(){s.destroyed||s.push(null)}),s._destroy=function(i,n){if(t.readyState===t.CLOSED){n(i),process.nextTick(Mt,s);return}let o=!1;t.once("error",function(l){o=!0,n(l)}),t.once("close",function(){o||n(i),process.nextTick(Mt,s)}),r&&t.terminate()},s._final=function(i){if(t.readyState===t.CONNECTING){t.once("open",function(){s._final(i)});return}t._socket!==null&&(t._socket._writableState.finished?(i(),s._readableState.endEmitted&&s.destroy()):(t._socket.once("finish",function(){i()}),t.close()))},s._read=function(){t.isPaused&&t.resume()},s._write=function(i,n,o){if(t.readyState===t.CONNECTING){t.once("open",function(){s._write(i,n,o)});return}t.send(i,o)},s.on("end",_s),s.on("error",At),s}Wt.exports=ps});var qt=S((Ys,Gt)=>{"use strict";var{tokenChars:ms}=q();function gs(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&&ms[o]===1)r===-1&&(r=i);else if(i!==0&&(o===32||o===9))s===-1&&r!==-1&&(s=i);else if(o===44){if(r===-1)throw new SyntaxError(`Unexpected character at index ${i}`);s===-1&&(s=i);let f=t.slice(r,s);if(e.has(f))throw new SyntaxError(`The "${f}" subprotocol is duplicated`);e.add(f),r=s=-1}else throw new SyntaxError(`Unexpected character at index ${i}`)}if(r===-1||s!==-1)throw new SyntaxError("Unexpected end of input");let n=t.slice(r,i);if(e.has(n))throw new SyntaxError(`The "${n}" subprotocol is duplicated`);return e.add(n),e}Gt.exports={parse:gs}});var Kt=S((Xs,Yt)=>{"use strict";var ys=require("events"),me=require("http"),{Duplex:Ks}=require("stream"),{createHash:Ss}=require("crypto"),$t=Ie(),U=Z(),xs=qt(),Es=pe(),{GUID:vs,kWebSocket:bs}=k(),ws=/^[+/0-9A-Za-z]{22}==$/,jt=0,Vt=1,Ht=2,We=class extends ys{constructor(e,r){if(super(),e={allowSynchronousEvents:!0,autoPong:!0,maxPayload:100*1024*1024,skipUTF8Validation:!1,perMessageDeflate:!1,handleProtocols:null,clientTracking:!0,verifyClient:null,noServer:!1,backlog:null,server:null,host:null,path:null,port:null,WebSocket:Es,...e},e.port==null&&!e.server&&!e.noServer||e.port!=null&&(e.server||e.noServer)||e.server&&e.noServer)throw new TypeError('One and only one of the "port", "server", or "noServer" options must be specified');if(e.port!=null?(this._server=me.createServer((s,i)=>{let n=me.STATUS_CODES[426];i.writeHead(426,{"Content-Length":n.length,"Content-Type":"text/plain"}),i.end(n)}),this._server.listen(e.port,e.host,e.backlog,r)):e.server&&(this._server=e.server),this._server){let s=this.emit.bind(this,"connection");this._removeListeners=Os(this._server,{listening:this.emit.bind(this,"listening"),error:this.emit.bind(this,"error"),upgrade:(i,n,o)=>{this.handleUpgrade(i,n,o,s)}})}e.perMessageDeflate===!0&&(e.perMessageDeflate={}),e.clientTracking&&(this.clients=new Set,this._shouldEmitClose=!1),this.options=e,this._state=jt}address(){if(this.options.noServer)throw new Error('The server is operating in "noServer" mode');return this._server?this._server.address():null}close(e){if(this._state===Ht){e&&this.once("close",()=>{e(new Error("The server is not running"))}),process.nextTick(te,this);return}if(e&&this.once("close",e),this._state!==Vt)if(this._state=Vt,this.options.noServer||this.options.server)this._server&&(this._removeListeners(),this._removeListeners=this._server=null),this.clients?this.clients.size?this._shouldEmitClose=!0:process.nextTick(te,this):process.nextTick(te,this);else{let r=this._server;this._removeListeners(),this._removeListeners=this._server=null,r.close(()=>{te(this)})}}shouldHandle(e){if(this.options.path){let r=e.url.indexOf("?");if((r!==-1?e.url.slice(0,r):e.url)!==this.options.path)return!1}return!0}handleUpgrade(e,r,s,i){r.on("error",zt);let n=e.headers["sec-websocket-key"],o=e.headers.upgrade,f=+e.headers["sec-websocket-version"];if(e.method!=="GET"){D(this,e,r,405,"Invalid HTTP method");return}if(o===void 0||o.toLowerCase()!=="websocket"){D(this,e,r,400,"Invalid Upgrade header");return}if(n===void 0||!ws.test(n)){D(this,e,r,400,"Missing or invalid Sec-WebSocket-Key header");return}if(f!==13&&f!==8){D(this,e,r,400,"Missing or invalid Sec-WebSocket-Version header",{"Sec-WebSocket-Version":"13, 8"});return}if(!this.shouldHandle(e)){re(r,400);return}let l=e.headers["sec-websocket-protocol"],a=new Set;if(l!==void 0)try{a=xs.parse(l)}catch{D(this,e,r,400,"Invalid Sec-WebSocket-Protocol header");return}let c=e.headers["sec-websocket-extensions"],h={};if(this.options.perMessageDeflate&&c!==void 0){let _=new U(this.options.perMessageDeflate,!0,this.options.maxPayload);try{let m=$t.parse(c);m[U.extensionName]&&(_.accept(m[U.extensionName]),h[U.extensionName]=_)}catch{D(this,e,r,400,"Invalid or unacceptable Sec-WebSocket-Extensions header");return}}if(this.options.verifyClient){let _={origin:e.headers[`${f===8?"sec-websocket-origin":"origin"}`],secure:!!(e.socket.authorized||e.socket.encrypted),req:e};if(this.options.verifyClient.length===2){this.options.verifyClient(_,(m,p,u,y)=>{if(!m)return re(r,p||401,u,y);this.completeUpgrade(h,n,a,e,r,s,i)});return}if(!this.options.verifyClient(_))return re(r,401)}this.completeUpgrade(h,n,a,e,r,s,i)}completeUpgrade(e,r,s,i,n,o,f){if(!n.readable||!n.writable)return n.destroy();if(n[bs])throw new Error("server.handleUpgrade() was called more than once with the same socket, possibly due to a misconfiguration");if(this._state>jt)return re(n,503);let a=["HTTP/1.1 101 Switching Protocols","Upgrade: websocket","Connection: Upgrade",`Sec-WebSocket-Accept: ${Ss("sha1").update(r+vs).digest("base64")}`],c=new this.options.WebSocket(null,void 0,this.options);if(s.size){let h=this.options.handleProtocols?this.options.handleProtocols(s,i):s.values().next().value;h&&(a.push(`Sec-WebSocket-Protocol: ${h}`),c._protocol=h)}if(e[U.extensionName]){let h=e[U.extensionName].params,_=$t.format({[U.extensionName]:[h]});a.push(`Sec-WebSocket-Extensions: ${_}`),c._extensions=e}this.emit("headers",a,i),n.write(a.concat(`\r
|
|
2
2
|
`).join(`\r
|
|
3
3
|
`)),n.removeListener("error",zt),c.setSocket(n,o,{allowSynchronousEvents:this.options.allowSynchronousEvents,maxPayload:this.options.maxPayload,skipUTF8Validation:this.options.skipUTF8Validation}),this.clients&&(this.clients.add(c),c.on("close",()=>{this.clients.delete(c),this._shouldEmitClose&&!this.clients.size&&process.nextTick(te,this)})),f(c,i)}};Yt.exports=We;function Os(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 te(t){t._state=Ht,t.emit("close")}function zt(){this.destroy()}function re(t,e,r,s){r=r||me.STATUS_CODES[e],s={Connection:"close","Content-Type":"text/html","Content-Length":Buffer.byteLength(r),...s},t.once("finish",t.destroy),t.end(`HTTP/1.1 ${e} ${me.STATUS_CODES[e]}\r
|
|
4
4
|
`+Object.keys(s).map(i=>`${i}: ${s[i]}`).join(`\r
|
|
5
5
|
`)+`\r
|
|
6
6
|
\r
|
|
7
|
-
`+r)}function D(t,e,r,s,i){if(t.listenerCount("wsClientError")){let
|
|
7
|
+
`+r)}function D(t,e,r,s,i,n){if(t.listenerCount("wsClientError")){let o=new Error(i);Error.captureStackTrace(o,D),t.emit("wsClientError",o,r,e)}else re(r,s,i,n)}});var Ps={};or(Ps,{autoReload:()=>Ls,resolveConfig:()=>Ns});module.exports=ar(Ps);var w=W(require("node:process"),1);var ks=W(Ft(),1),Ts=W(Ne(),1),Cs=W(Be(),1),Xt=W(pe(),1),Zt=W(Kt(),1);var Jt=Xt.default;function Qt({merkurConfig:t}){let{protocol:e,host:r}=t.socketServer;return new Jt(`${e}//${r}`)}var Fe,Ge;function Ns(){return w.default.env.CLI_CONFIG&&!Fe&&(Fe=JSON.parse(w.default.env.CLI_CONFIG)),w.default.env.MERKUR_CONFIG&&!Ge&&(Ge=JSON.parse(w.default.env.MERKUR_CONFIG)),{merkurConfig:Ge,cliConfig:Fe}}function Ls({merkurConfig:t,cliConfig:e}){function r(){let s=Qt({merkurConfig:t});s.on("error",i=>{console.error(i),s.terminate()}),s.on("open",function(){setTimeout(()=>{s.send(JSON.stringify({to:"browser",command:"reload",changed:[],errors:[]})),s.terminate()},50)})}if(e.watch){r();let s=()=>w.default.exit(0);w.default.on("SIGINT",s),w.default.on("SIGQUIT",s),w.default.on("SIGTERM",s),w.default.on("uncaughtException",()=>{r()}),w.default.on("unhandledRejection",()=>{r()})}}0&&(module.exports={autoReload,resolveConfig});
|
package/lib/server.mjs
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
var tr=Object.create;var Ve=Object.defineProperty;var rr=Object.getOwnPropertyDescriptor;var sr=Object.getOwnPropertyNames;var ir=Object.getPrototypeOf,nr=Object.prototype.hasOwnProperty;var m=(t=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(t,{get:(e,r)=>(typeof require<"u"?require:e)[r]}):t)(function(t){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+t+'" is not supported')});var x=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports);var or=(t,e,r,s)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of sr(e))!nr.call(t,i)&&i!==r&&Ve(t,i,{get:()=>e[i],enumerable:!(s=rr(e,i))||s.enumerable});return t};var K=(t,e,r)=>(r=t!=null?tr(ir(t)):{},or(e||!t||!t.__esModule?Ve(r,"default",{value:t,enumerable:!0}):r,t));var T=x((Ns,Ye)=>{"use strict";var ze=["nodebuffer","arraybuffer","fragments"],He=typeof Blob<"u";He&&ze.push("blob");Ye.exports={BINARY_TYPES:ze,EMPTY_BUFFER:Buffer.alloc(0),GUID:"258EAFA5-E914-47DA-95CA-C5AB0DC85B11",hasBlob:He,kForOnEventAttribute:Symbol("kIsForOnEventAttribute"),kListener:Symbol("kListener"),kStatusCode:Symbol("status-code"),kWebSocket:Symbol("websocket"),NOOP:()=>{}}});var X=x((Ls,ie)=>{"use strict";var{EMPTY_BUFFER:ar}=T(),Se=Buffer[Symbol.species];function fr(t,e){if(t.length===0)return ar;if(t.length===1)return t[0];let r=Buffer.allocUnsafe(e),s=0;for(let i=0;i<t.length;i++){let n=t[i];r.set(n,s),s+=n.length}return s<e?new Se(r.buffer,r.byteOffset,s):r}function Ke(t,e,r,s,i){for(let n=0;n<i;n++)r[s+n]=t[n]^e[n&3]}function Xe(t,e){for(let r=0;r<t.length;r++)t[r]^=e[r&3]}function lr(t){return t.length===t.buffer.byteLength?t.buffer:t.buffer.slice(t.byteOffset,t.byteOffset+t.length)}function xe(t){if(xe.readOnly=!0,Buffer.isBuffer(t))return t;let e;return t instanceof ArrayBuffer?e=new Se(t):ArrayBuffer.isView(t)?e=new Se(t.buffer,t.byteOffset,t.byteLength):(e=Buffer.from(t),xe.readOnly=!1),e}ie.exports={concat:fr,mask:Ke,toArrayBuffer:lr,toBuffer:xe,unmask:Xe};if(!process.env.WS_NO_BUFFER_UTIL)try{let t=m("bufferutil");ie.exports.mask=function(e,r,s,i,n){n<48?Ke(e,r,s,i,n):t.mask(e,r,s,i,n)},ie.exports.unmask=function(e,r){e.length<32?Xe(e,r):t.unmask(e,r)}}catch{}});var Qe=x((Ps,Je)=>{"use strict";var Ze=Symbol("kDone"),Ee=Symbol("kRun"),ve=class{constructor(e){this[Ze]=()=>{this.pending--,this[Ee]()},this.concurrency=e||1/0,this.jobs=[],this.pending=0}add(e){this.jobs.push(e),this[Ee]()}[Ee](){if(this.pending!==this.concurrency&&this.jobs.length){let e=this.jobs.shift();this.pending++,e(this[Ze])}}};Je.exports=ve});var J=x((Bs,st)=>{"use strict";var Z=m("zlib"),et=X(),cr=Qe(),{kStatusCode:tt}=T(),hr=Buffer[Symbol.species],ur=Buffer.from([0,0,255,255]),oe=Symbol("permessage-deflate"),C=Symbol("total-length"),F=Symbol("callback"),P=Symbol("buffers"),G=Symbol("error"),ne,be=class{constructor(e,r,s){if(this._maxPayload=s|0,this._options=e||{},this._threshold=this._options.threshold!==void 0?this._options.threshold:1024,this._isServer=!!r,this._deflate=null,this._inflate=null,this.params=null,!ne){let i=this._options.concurrencyLimit!==void 0?this._options.concurrencyLimit:10;ne=new cr(i)}}static get extensionName(){return"permessage-deflate"}offer(){let e={};return this._options.serverNoContextTakeover&&(e.server_no_context_takeover=!0),this._options.clientNoContextTakeover&&(e.client_no_context_takeover=!0),this._options.serverMaxWindowBits&&(e.server_max_window_bits=this._options.serverMaxWindowBits),this._options.clientMaxWindowBits?e.client_max_window_bits=this._options.clientMaxWindowBits:this._options.clientMaxWindowBits==null&&(e.client_max_window_bits=!0),e}accept(e){return e=this.normalizeParams(e),this.params=this._isServer?this.acceptAsServer(e):this.acceptAsClient(e),this.params}cleanup(){if(this._inflate&&(this._inflate.close(),this._inflate=null),this._deflate){let e=this._deflate[F];this._deflate.close(),this._deflate=null,e&&e(new Error("The deflate stream was closed while data was being processed"))}}acceptAsServer(e){let r=this._options,s=e.find(i=>!(r.serverNoContextTakeover===!1&&i.server_no_context_takeover||i.server_max_window_bits&&(r.serverMaxWindowBits===!1||typeof r.serverMaxWindowBits=="number"&&r.serverMaxWindowBits>i.server_max_window_bits)||typeof r.clientMaxWindowBits=="number"&&!i.client_max_window_bits));if(!s)throw new Error("None of the extension offers can be accepted");return r.serverNoContextTakeover&&(s.server_no_context_takeover=!0),r.clientNoContextTakeover&&(s.client_no_context_takeover=!0),typeof r.serverMaxWindowBits=="number"&&(s.server_max_window_bits=r.serverMaxWindowBits),typeof r.clientMaxWindowBits=="number"?s.client_max_window_bits=r.clientMaxWindowBits:(s.client_max_window_bits===!0||r.clientMaxWindowBits===!1)&&delete s.client_max_window_bits,s}acceptAsClient(e){let r=e[0];if(this._options.clientNoContextTakeover===!1&&r.client_no_context_takeover)throw new Error('Unexpected parameter "client_no_context_takeover"');if(!r.client_max_window_bits)typeof this._options.clientMaxWindowBits=="number"&&(r.client_max_window_bits=this._options.clientMaxWindowBits);else if(this._options.clientMaxWindowBits===!1||typeof this._options.clientMaxWindowBits=="number"&&r.client_max_window_bits>this._options.clientMaxWindowBits)throw new Error('Unexpected or invalid parameter "client_max_window_bits"');return r}normalizeParams(e){return e.forEach(r=>{Object.keys(r).forEach(s=>{let i=r[s];if(i.length>1)throw new Error(`Parameter "${s}" must have only a single value`);if(i=i[0],s==="client_max_window_bits"){if(i!==!0){let n=+i;if(!Number.isInteger(n)||n<8||n>15)throw new TypeError(`Invalid value for parameter "${s}": ${i}`);i=n}else if(!this._isServer)throw new TypeError(`Invalid value for parameter "${s}": ${i}`)}else if(s==="server_max_window_bits"){let n=+i;if(!Number.isInteger(n)||n<8||n>15)throw new TypeError(`Invalid value for parameter "${s}": ${i}`);i=n}else if(s==="client_no_context_takeover"||s==="server_no_context_takeover"){if(i!==!0)throw new TypeError(`Invalid value for parameter "${s}": ${i}`)}else throw new Error(`Unknown parameter "${s}"`);r[s]=i})}),e}decompress(e,r,s){ne.add(i=>{this._decompress(e,r,(n,o)=>{i(),s(n,o)})})}compress(e,r,s){ne.add(i=>{this._compress(e,r,(n,o)=>{i(),s(n,o)})})}_decompress(e,r,s){let i=this._isServer?"client":"server";if(!this._inflate){let n=`${i}_max_window_bits`,o=typeof this.params[n]!="number"?Z.Z_DEFAULT_WINDOWBITS:this.params[n];this._inflate=Z.createInflateRaw({...this._options.zlibInflateOptions,windowBits:o}),this._inflate[oe]=this,this._inflate[C]=0,this._inflate[P]=[],this._inflate.on("error",_r),this._inflate.on("data",rt)}this._inflate[F]=s,this._inflate.write(e),r&&this._inflate.write(ur),this._inflate.flush(()=>{let n=this._inflate[G];if(n){this._inflate.close(),this._inflate=null,s(n);return}let o=et.concat(this._inflate[P],this._inflate[C]);this._inflate._readableState.endEmitted?(this._inflate.close(),this._inflate=null):(this._inflate[C]=0,this._inflate[P]=[],r&&this.params[`${i}_no_context_takeover`]&&this._inflate.reset()),s(null,o)})}_compress(e,r,s){let i=this._isServer?"server":"client";if(!this._deflate){let n=`${i}_max_window_bits`,o=typeof this.params[n]!="number"?Z.Z_DEFAULT_WINDOWBITS:this.params[n];this._deflate=Z.createDeflateRaw({...this._options.zlibDeflateOptions,windowBits:o}),this._deflate[C]=0,this._deflate[P]=[],this._deflate.on("data",dr)}this._deflate[F]=s,this._deflate.write(e),this._deflate.flush(Z.Z_SYNC_FLUSH,()=>{if(!this._deflate)return;let n=et.concat(this._deflate[P],this._deflate[C]);r&&(n=new hr(n.buffer,n.byteOffset,n.length-4)),this._deflate[F]=null,this._deflate[C]=0,this._deflate[P]=[],r&&this.params[`${i}_no_context_takeover`]&&this._deflate.reset(),s(null,n)})}};st.exports=be;function dr(t){this[P].push(t),this[C]+=t.length}function rt(t){if(this[C]+=t.length,this[oe]._maxPayload<1||this[C]<=this[oe]._maxPayload){this[P].push(t);return}this[G]=new RangeError("Max payload size exceeded"),this[G].code="WS_ERR_UNSUPPORTED_MESSAGE_LENGTH",this[G][tt]=1009,this.removeListener("data",rt),this.reset()}function _r(t){if(this[oe]._inflate=null,this[G]){this[F](this[G]);return}t[tt]=1007,this[F](t)}});var q=x((Rs,ae)=>{"use strict";var{isUtf8:it}=m("buffer"),{hasBlob:pr}=T(),mr=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,1,1,1,1,0,0,1,1,0,1,1,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0,1,0];function gr(t){return t>=1e3&&t<=1014&&t!==1004&&t!==1005&&t!==1006||t>=3e3&&t<=4999}function we(t){let e=t.length,r=0;for(;r<e;)if((t[r]&128)===0)r++;else if((t[r]&224)===192){if(r+1===e||(t[r+1]&192)!==128||(t[r]&254)===192)return!1;r+=2}else if((t[r]&240)===224){if(r+2>=e||(t[r+1]&192)!==128||(t[r+2]&192)!==128||t[r]===224&&(t[r+1]&224)===128||t[r]===237&&(t[r+1]&224)===160)return!1;r+=3}else if((t[r]&248)===240){if(r+3>=e||(t[r+1]&192)!==128||(t[r+2]&192)!==128||(t[r+3]&192)!==128||t[r]===240&&(t[r+1]&240)===128||t[r]===244&&t[r+1]>143||t[r]>244)return!1;r+=4}else return!1;return!0}function yr(t){return pr&&typeof t=="object"&&typeof t.arrayBuffer=="function"&&typeof t.type=="string"&&typeof t.stream=="function"&&(t[Symbol.toStringTag]==="Blob"||t[Symbol.toStringTag]==="File")}ae.exports={isBlob:yr,isValidStatusCode:gr,isValidUTF8:we,tokenChars:mr};if(it)ae.exports.isValidUTF8=function(t){return t.length<24?we(t):it(t)};else if(!process.env.WS_NO_UTF_8_VALIDATE)try{let t=m("utf-8-validate");ae.exports.isValidUTF8=function(e){return e.length<32?we(e):t(e)}}catch{}});var Ne=x((Is,ht)=>{"use strict";var{Writable:Sr}=m("stream"),nt=J(),{BINARY_TYPES:xr,EMPTY_BUFFER:ot,kStatusCode:Er,kWebSocket:vr}=T(),{concat:Oe,toArrayBuffer:br,unmask:wr}=X(),{isValidStatusCode:Or,isValidUTF8:at}=q(),fe=Buffer[Symbol.species],v=0,ft=1,lt=2,ct=3,ke=4,Te=5,le=6,Ce=class extends Sr{constructor(e={}){super(),this._allowSynchronousEvents=e.allowSynchronousEvents!==void 0?e.allowSynchronousEvents:!0,this._binaryType=e.binaryType||xr[0],this._extensions=e.extensions||{},this._isServer=!!e.isServer,this._maxPayload=e.maxPayload|0,this._skipUTF8Validation=!!e.skipUTF8Validation,this[vr]=void 0,this._bufferedBytes=0,this._buffers=[],this._compressed=!1,this._payloadLength=0,this._mask=void 0,this._fragmented=0,this._masked=!1,this._fin=!1,this._opcode=0,this._totalPayloadLength=0,this._messageLength=0,this._fragments=[],this._errored=!1,this._loop=!1,this._state=v}_write(e,r,s){if(this._opcode===8&&this._state==v)return s();this._bufferedBytes+=e.length,this._buffers.push(e),this.startLoop(s)}consume(e){if(this._bufferedBytes-=e,e===this._buffers[0].length)return this._buffers.shift();if(e<this._buffers[0].length){let s=this._buffers[0];return this._buffers[0]=new fe(s.buffer,s.byteOffset+e,s.length-e),new fe(s.buffer,s.byteOffset,e)}let r=Buffer.allocUnsafe(e);do{let s=this._buffers[0],i=r.length-e;e>=s.length?r.set(this._buffers.shift(),i):(r.set(new Uint8Array(s.buffer,s.byteOffset,e),i),this._buffers[0]=new fe(s.buffer,s.byteOffset+e,s.length-e)),e-=s.length}while(e>0);return r}startLoop(e){this._loop=!0;do switch(this._state){case v:this.getInfo(e);break;case ft:this.getPayloadLength16(e);break;case lt:this.getPayloadLength64(e);break;case ct:this.getMask();break;case ke:this.getData(e);break;case Te:case le:this._loop=!1;return}while(this._loop);this._errored||e()}getInfo(e){if(this._bufferedBytes<2){this._loop=!1;return}let r=this.consume(2);if((r[0]&48)!==0){let i=this.createError(RangeError,"RSV2 and RSV3 must be clear",!0,1002,"WS_ERR_UNEXPECTED_RSV_2_3");e(i);return}let s=(r[0]&64)===64;if(s&&!this._extensions[nt.extensionName]){let i=this.createError(RangeError,"RSV1 must be clear",!0,1002,"WS_ERR_UNEXPECTED_RSV_1");e(i);return}if(this._fin=(r[0]&128)===128,this._opcode=r[0]&15,this._payloadLength=r[1]&127,this._opcode===0){if(s){let i=this.createError(RangeError,"RSV1 must be clear",!0,1002,"WS_ERR_UNEXPECTED_RSV_1");e(i);return}if(!this._fragmented){let i=this.createError(RangeError,"invalid opcode 0",!0,1002,"WS_ERR_INVALID_OPCODE");e(i);return}this._opcode=this._fragmented}else if(this._opcode===1||this._opcode===2){if(this._fragmented){let i=this.createError(RangeError,`invalid opcode ${this._opcode}`,!0,1002,"WS_ERR_INVALID_OPCODE");e(i);return}this._compressed=s}else if(this._opcode>7&&this._opcode<11){if(!this._fin){let i=this.createError(RangeError,"FIN must be set",!0,1002,"WS_ERR_EXPECTED_FIN");e(i);return}if(s){let i=this.createError(RangeError,"RSV1 must be clear",!0,1002,"WS_ERR_UNEXPECTED_RSV_1");e(i);return}if(this._payloadLength>125||this._opcode===8&&this._payloadLength===1){let i=this.createError(RangeError,`invalid payload length ${this._payloadLength}`,!0,1002,"WS_ERR_INVALID_CONTROL_PAYLOAD_LENGTH");e(i);return}}else{let i=this.createError(RangeError,`invalid opcode ${this._opcode}`,!0,1002,"WS_ERR_INVALID_OPCODE");e(i);return}if(!this._fin&&!this._fragmented&&(this._fragmented=this._opcode),this._masked=(r[1]&128)===128,this._isServer){if(!this._masked){let i=this.createError(RangeError,"MASK must be set",!0,1002,"WS_ERR_EXPECTED_MASK");e(i);return}}else if(this._masked){let i=this.createError(RangeError,"MASK must be clear",!0,1002,"WS_ERR_UNEXPECTED_MASK");e(i);return}this._payloadLength===126?this._state=ft:this._payloadLength===127?this._state=lt:this.haveLength(e)}getPayloadLength16(e){if(this._bufferedBytes<2){this._loop=!1;return}this._payloadLength=this.consume(2).readUInt16BE(0),this.haveLength(e)}getPayloadLength64(e){if(this._bufferedBytes<8){this._loop=!1;return}let r=this.consume(8),s=r.readUInt32BE(0);if(s>Math.pow(2,21)-1){let i=this.createError(RangeError,"Unsupported WebSocket frame: payload length > 2^53 - 1",!1,1009,"WS_ERR_UNSUPPORTED_DATA_PAYLOAD_LENGTH");e(i);return}this._payloadLength=s*Math.pow(2,32)+r.readUInt32BE(4),this.haveLength(e)}haveLength(e){if(this._payloadLength&&this._opcode<8&&(this._totalPayloadLength+=this._payloadLength,this._totalPayloadLength>this._maxPayload&&this._maxPayload>0)){let r=this.createError(RangeError,"Max payload size exceeded",!1,1009,"WS_ERR_UNSUPPORTED_MESSAGE_LENGTH");e(r);return}this._masked?this._state=ct:this._state=ke}getMask(){if(this._bufferedBytes<4){this._loop=!1;return}this._mask=this.consume(4),this._state=ke}getData(e){let r=ot;if(this._payloadLength){if(this._bufferedBytes<this._payloadLength){this._loop=!1;return}r=this.consume(this._payloadLength),this._masked&&(this._mask[0]|this._mask[1]|this._mask[2]|this._mask[3])!==0&&wr(r,this._mask)}if(this._opcode>7){this.controlMessage(r,e);return}if(this._compressed){this._state=Te,this.decompress(r,e);return}r.length&&(this._messageLength=this._totalPayloadLength,this._fragments.push(r)),this.dataMessage(e)}decompress(e,r){this._extensions[nt.extensionName].decompress(e,this._fin,(i,n)=>{if(i)return r(i);if(n.length){if(this._messageLength+=n.length,this._messageLength>this._maxPayload&&this._maxPayload>0){let o=this.createError(RangeError,"Max payload size exceeded",!1,1009,"WS_ERR_UNSUPPORTED_MESSAGE_LENGTH");r(o);return}this._fragments.push(n)}this.dataMessage(r),this._state===v&&this.startLoop(r)})}dataMessage(e){if(!this._fin){this._state=v;return}let r=this._messageLength,s=this._fragments;if(this._totalPayloadLength=0,this._messageLength=0,this._fragmented=0,this._fragments=[],this._opcode===2){let i;this._binaryType==="nodebuffer"?i=Oe(s,r):this._binaryType==="arraybuffer"?i=br(Oe(s,r)):this._binaryType==="blob"?i=new Blob(s):i=s,this._allowSynchronousEvents?(this.emit("message",i,!0),this._state=v):(this._state=le,setImmediate(()=>{this.emit("message",i,!0),this._state=v,this.startLoop(e)}))}else{let i=Oe(s,r);if(!this._skipUTF8Validation&&!at(i)){let n=this.createError(Error,"invalid UTF-8 sequence",!0,1007,"WS_ERR_INVALID_UTF8");e(n);return}this._state===Te||this._allowSynchronousEvents?(this.emit("message",i,!1),this._state=v):(this._state=le,setImmediate(()=>{this.emit("message",i,!1),this._state=v,this.startLoop(e)}))}}controlMessage(e,r){if(this._opcode===8){if(e.length===0)this._loop=!1,this.emit("conclude",1005,ot),this.end();else{let s=e.readUInt16BE(0);if(!Or(s)){let n=this.createError(RangeError,`invalid status code ${s}`,!0,1002,"WS_ERR_INVALID_CLOSE_CODE");r(n);return}let i=new fe(e.buffer,e.byteOffset+2,e.length-2);if(!this._skipUTF8Validation&&!at(i)){let n=this.createError(Error,"invalid UTF-8 sequence",!0,1007,"WS_ERR_INVALID_UTF8");r(n);return}this._loop=!1,this.emit("conclude",s,i),this.end()}this._state=v;return}this._allowSynchronousEvents?(this.emit(this._opcode===9?"ping":"pong",e),this._state=v):(this._state=le,setImmediate(()=>{this.emit(this._opcode===9?"ping":"pong",e),this._state=v,this.startLoop(r)}))}createError(e,r,s,i,n){this._loop=!1,this._errored=!0;let o=new e(s?`Invalid WebSocket frame: ${r}`:r);return Error.captureStackTrace(o,this.createError),o.code=n,o[Er]=i,o}};ht.exports=Ce});var Be=x((Ds,_t)=>{"use strict";var{Duplex:Us}=m("stream"),{randomFillSync:kr}=m("crypto"),ut=J(),{EMPTY_BUFFER:Tr,kWebSocket:Cr,NOOP:Nr}=T(),{isBlob:$,isValidStatusCode:Lr}=q(),{mask:dt,toBuffer:R}=X(),b=Symbol("kByteLength"),Pr=Buffer.alloc(4),ce=8*1024,I,j=ce,w=0,Br=1,Rr=2,Le=class t{constructor(e,r,s){this._extensions=r||{},s&&(this._generateMask=s,this._maskBuffer=Buffer.alloc(4)),this._socket=e,this._firstFragment=!0,this._compress=!1,this._bufferedBytes=0,this._queue=[],this._state=w,this.onerror=Nr,this[Cr]=void 0}static frame(e,r){let s,i=!1,n=2,o=!1;r.mask&&(s=r.maskBuffer||Pr,r.generateMask?r.generateMask(s):(j===ce&&(I===void 0&&(I=Buffer.alloc(ce)),kr(I,0,ce),j=0),s[0]=I[j++],s[1]=I[j++],s[2]=I[j++],s[3]=I[j++]),o=(s[0]|s[1]|s[2]|s[3])===0,n=6);let f;typeof e=="string"?(!r.mask||o)&&r[b]!==void 0?f=r[b]:(e=Buffer.from(e),f=e.length):(f=e.length,i=r.mask&&r.readOnly&&!o);let l=f;f>=65536?(n+=8,l=127):f>125&&(n+=2,l=126);let a=Buffer.allocUnsafe(i?f+n:n);return a[0]=r.fin?r.opcode|128:r.opcode,r.rsv1&&(a[0]|=64),a[1]=l,l===126?a.writeUInt16BE(f,2):l===127&&(a[2]=a[3]=0,a.writeUIntBE(f,4,6)),r.mask?(a[1]|=128,a[n-4]=s[0],a[n-3]=s[1],a[n-2]=s[2],a[n-1]=s[3],o?[a,e]:i?(dt(e,s,a,n,f),[a]):(dt(e,s,e,0,f),[a,e])):[a,e]}close(e,r,s,i){let n;if(e===void 0)n=Tr;else{if(typeof e!="number"||!Lr(e))throw new TypeError("First argument must be a valid error code number");if(r===void 0||!r.length)n=Buffer.allocUnsafe(2),n.writeUInt16BE(e,0);else{let f=Buffer.byteLength(r);if(f>123)throw new RangeError("The message must not be greater than 123 bytes");n=Buffer.allocUnsafe(2+f),n.writeUInt16BE(e,0),typeof r=="string"?n.write(r,2):n.set(r,2)}}let o={[b]:n.length,fin:!0,generateMask:this._generateMask,mask:s,maskBuffer:this._maskBuffer,opcode:8,readOnly:!1,rsv1:!1};this._state!==w?this.enqueue([this.dispatch,n,!1,o,i]):this.sendFrame(t.frame(n,o),i)}ping(e,r,s){let i,n;if(typeof e=="string"?(i=Buffer.byteLength(e),n=!1):$(e)?(i=e.size,n=!1):(e=R(e),i=e.length,n=R.readOnly),i>125)throw new RangeError("The data size must not be greater than 125 bytes");let o={[b]:i,fin:!0,generateMask:this._generateMask,mask:r,maskBuffer:this._maskBuffer,opcode:9,readOnly:n,rsv1:!1};$(e)?this._state!==w?this.enqueue([this.getBlobData,e,!1,o,s]):this.getBlobData(e,!1,o,s):this._state!==w?this.enqueue([this.dispatch,e,!1,o,s]):this.sendFrame(t.frame(e,o),s)}pong(e,r,s){let i,n;if(typeof e=="string"?(i=Buffer.byteLength(e),n=!1):$(e)?(i=e.size,n=!1):(e=R(e),i=e.length,n=R.readOnly),i>125)throw new RangeError("The data size must not be greater than 125 bytes");let o={[b]:i,fin:!0,generateMask:this._generateMask,mask:r,maskBuffer:this._maskBuffer,opcode:10,readOnly:n,rsv1:!1};$(e)?this._state!==w?this.enqueue([this.getBlobData,e,!1,o,s]):this.getBlobData(e,!1,o,s):this._state!==w?this.enqueue([this.dispatch,e,!1,o,s]):this.sendFrame(t.frame(e,o),s)}send(e,r,s){let i=this._extensions[ut.extensionName],n=r.binary?2:1,o=r.compress,f,l;typeof e=="string"?(f=Buffer.byteLength(e),l=!1):$(e)?(f=e.size,l=!1):(e=R(e),f=e.length,l=R.readOnly),this._firstFragment?(this._firstFragment=!1,o&&i&&i.params[i._isServer?"server_no_context_takeover":"client_no_context_takeover"]&&(o=f>=i._threshold),this._compress=o):(o=!1,n=0),r.fin&&(this._firstFragment=!0);let a={[b]:f,fin:r.fin,generateMask:this._generateMask,mask:r.mask,maskBuffer:this._maskBuffer,opcode:n,readOnly:l,rsv1:o};$(e)?this._state!==w?this.enqueue([this.getBlobData,e,this._compress,a,s]):this.getBlobData(e,this._compress,a,s):this._state!==w?this.enqueue([this.dispatch,e,this._compress,a,s]):this.dispatch(e,this._compress,a,s)}getBlobData(e,r,s,i){this._bufferedBytes+=s[b],this._state=Rr,e.arrayBuffer().then(n=>{if(this._socket.destroyed){let f=new Error("The socket was closed while the blob was being read");process.nextTick(Pe,this,f,i);return}this._bufferedBytes-=s[b];let o=R(n);r?this.dispatch(o,r,s,i):(this._state=w,this.sendFrame(t.frame(o,s),i),this.dequeue())}).catch(n=>{process.nextTick(Ir,this,n,i)})}dispatch(e,r,s,i){if(!r){this.sendFrame(t.frame(e,s),i);return}let n=this._extensions[ut.extensionName];this._bufferedBytes+=s[b],this._state=Br,n.compress(e,s.fin,(o,f)=>{if(this._socket.destroyed){let l=new Error("The socket was closed while data was being compressed");Pe(this,l,i);return}this._bufferedBytes-=s[b],this._state=w,s.readOnly=!1,this.sendFrame(t.frame(f,s),i),this.dequeue()})}dequeue(){for(;this._state===w&&this._queue.length;){let e=this._queue.shift();this._bufferedBytes-=e[3][b],Reflect.apply(e[0],this,e.slice(1))}}enqueue(e){this._bufferedBytes+=e[3][b],this._queue.push(e)}sendFrame(e,r){e.length===2?(this._socket.cork(),this._socket.write(e[0]),this._socket.write(e[1],r),this._socket.uncork()):this._socket.write(e[0],r)}};_t.exports=Le;function Pe(t,e,r){typeof r=="function"&&r(e);for(let s=0;s<t._queue.length;s++){let i=t._queue[s],n=i[i.length-1];typeof n=="function"&&n(e)}}function Ir(t,e,r){Pe(t,e,r),t.onerror(e)}});var bt=x((Ms,vt)=>{"use strict";var{kForOnEventAttribute:Q,kListener:Re}=T(),pt=Symbol("kCode"),mt=Symbol("kData"),gt=Symbol("kError"),yt=Symbol("kMessage"),St=Symbol("kReason"),V=Symbol("kTarget"),xt=Symbol("kType"),Et=Symbol("kWasClean"),N=class{constructor(e){this[V]=null,this[xt]=e}get target(){return this[V]}get type(){return this[xt]}};Object.defineProperty(N.prototype,"target",{enumerable:!0});Object.defineProperty(N.prototype,"type",{enumerable:!0});var U=class extends N{constructor(e,r={}){super(e),this[pt]=r.code===void 0?0:r.code,this[St]=r.reason===void 0?"":r.reason,this[Et]=r.wasClean===void 0?!1:r.wasClean}get code(){return this[pt]}get reason(){return this[St]}get wasClean(){return this[Et]}};Object.defineProperty(U.prototype,"code",{enumerable:!0});Object.defineProperty(U.prototype,"reason",{enumerable:!0});Object.defineProperty(U.prototype,"wasClean",{enumerable:!0});var z=class extends N{constructor(e,r={}){super(e),this[gt]=r.error===void 0?null:r.error,this[yt]=r.message===void 0?"":r.message}get error(){return this[gt]}get message(){return this[yt]}};Object.defineProperty(z.prototype,"error",{enumerable:!0});Object.defineProperty(z.prototype,"message",{enumerable:!0});var ee=class extends N{constructor(e,r={}){super(e),this[mt]=r.data===void 0?null:r.data}get data(){return this[mt]}};Object.defineProperty(ee.prototype,"data",{enumerable:!0});var Ur={addEventListener(t,e,r={}){for(let i of this.listeners(t))if(!r[Q]&&i[Re]===e&&!i[Q])return;let s;if(t==="message")s=function(n,o){let f=new ee("message",{data:o?n:n.toString()});f[V]=this,he(e,this,f)};else if(t==="close")s=function(n,o){let f=new U("close",{code:n,reason:o.toString(),wasClean:this._closeFrameReceived&&this._closeFrameSent});f[V]=this,he(e,this,f)};else if(t==="error")s=function(n){let o=new z("error",{error:n,message:n.message});o[V]=this,he(e,this,o)};else if(t==="open")s=function(){let n=new N("open");n[V]=this,he(e,this,n)};else return;s[Q]=!!r[Q],s[Re]=e,r.once?this.once(t,s):this.on(t,s)},removeEventListener(t,e){for(let r of this.listeners(t))if(r[Re]===e&&!r[Q]){this.removeListener(t,r);break}}};vt.exports={CloseEvent:U,ErrorEvent:z,Event:N,EventTarget:Ur,MessageEvent:ee};function he(t,e,r){typeof t=="object"&&t.handleEvent?t.handleEvent.call(t,r):t.call(e,r)}});var Ie=x((As,wt)=>{"use strict";var{tokenChars:te}=q();function O(t,e,r){t[e]===void 0?t[e]=[r]:t[e].push(r)}function Dr(t){let e=Object.create(null),r=Object.create(null),s=!1,i=!1,n=!1,o,f,l=-1,a=-1,c=-1,h=0;for(;h<t.length;h++)if(a=t.charCodeAt(h),o===void 0)if(c===-1&&te[a]===1)l===-1&&(l=h);else if(h!==0&&(a===32||a===9))c===-1&&l!==-1&&(c=h);else if(a===59||a===44){if(l===-1)throw new SyntaxError(`Unexpected character at index ${h}`);c===-1&&(c=h);let g=t.slice(l,c);a===44?(O(e,g,r),r=Object.create(null)):o=g,l=c=-1}else throw new SyntaxError(`Unexpected character at index ${h}`);else if(f===void 0)if(c===-1&&te[a]===1)l===-1&&(l=h);else if(a===32||a===9)c===-1&&l!==-1&&(c=h);else if(a===59||a===44){if(l===-1)throw new SyntaxError(`Unexpected character at index ${h}`);c===-1&&(c=h),O(r,t.slice(l,c),!0),a===44&&(O(e,o,r),r=Object.create(null),o=void 0),l=c=-1}else if(a===61&&l!==-1&&c===-1)f=t.slice(l,h),l=c=-1;else throw new SyntaxError(`Unexpected character at index ${h}`);else if(i){if(te[a]!==1)throw new SyntaxError(`Unexpected character at index ${h}`);l===-1?l=h:s||(s=!0),i=!1}else if(n)if(te[a]===1)l===-1&&(l=h);else if(a===34&&l!==-1)n=!1,c=h;else if(a===92)i=!0;else throw new SyntaxError(`Unexpected character at index ${h}`);else if(a===34&&t.charCodeAt(h-1)===61)n=!0;else if(c===-1&&te[a]===1)l===-1&&(l=h);else if(l!==-1&&(a===32||a===9))c===-1&&(c=h);else if(a===59||a===44){if(l===-1)throw new SyntaxError(`Unexpected character at index ${h}`);c===-1&&(c=h);let g=t.slice(l,c);s&&(g=g.replace(/\\/g,""),s=!1),O(r,f,g),a===44&&(O(e,o,r),r=Object.create(null),o=void 0),f=void 0,l=c=-1}else throw new SyntaxError(`Unexpected character at index ${h}`);if(l===-1||n||a===32||a===9)throw new SyntaxError("Unexpected end of input");c===-1&&(c=h);let _=t.slice(l,c);return o===void 0?O(e,_,r):(f===void 0?O(r,_,!0):s?O(r,f,_.replace(/\\/g,"")):O(r,f,_),O(e,o,r)),e}function Mr(t){return Object.keys(t).map(e=>{let r=t[e];return Array.isArray(r)||(r=[r]),r.map(s=>[e].concat(Object.keys(s).map(i=>{let n=s[i];return Array.isArray(n)||(n=[n]),n.map(o=>o===!0?i:`${i}=${o}`).join("; ")})).join("; ")).join(", ")}).join(", ")}wt.exports={format:Mr,parse:Dr}});var pe=x((Gs,Dt)=>{"use strict";var Ar=m("events"),Wr=m("https"),Fr=m("http"),Tt=m("net"),Gr=m("tls"),{randomBytes:qr,createHash:$r}=m("crypto"),{Duplex:Ws,Readable:Fs}=m("stream"),{URL:Ue}=m("url"),B=J(),jr=Ne(),Vr=Be(),{isBlob:zr}=q(),{BINARY_TYPES:Ot,EMPTY_BUFFER:ue,GUID:Hr,kForOnEventAttribute:De,kListener:Yr,kStatusCode:Kr,kWebSocket:y,NOOP:Ct}=T(),{EventTarget:{addEventListener:Xr,removeEventListener:Zr}}=bt(),{format:Jr,parse:Qr}=Ie(),{toBuffer:es}=X(),ts=30*1e3,Nt=Symbol("kAborted"),Me=[8,13],L=["CONNECTING","OPEN","CLOSING","CLOSED"],rs=/^[!#$%&'*+\-.0-9A-Z^_`|a-z~]+$/,d=class t extends Ar{constructor(e,r,s){super(),this._binaryType=Ot[0],this._closeCode=1006,this._closeFrameReceived=!1,this._closeFrameSent=!1,this._closeMessage=ue,this._closeTimer=null,this._errorEmitted=!1,this._extensions={},this._paused=!1,this._protocol="",this._readyState=t.CONNECTING,this._receiver=null,this._sender=null,this._socket=null,e!==null?(this._bufferedAmount=0,this._isServer=!1,this._redirects=0,r===void 0?r=[]:Array.isArray(r)||(typeof r=="object"&&r!==null?(s=r,r=[]):r=[r]),Lt(this,e,r,s)):(this._autoPong=s.autoPong,this._isServer=!0)}get binaryType(){return this._binaryType}set binaryType(e){Ot.includes(e)&&(this._binaryType=e,this._receiver&&(this._receiver._binaryType=e))}get bufferedAmount(){return this._socket?this._socket._writableState.length+this._sender._bufferedBytes:this._bufferedAmount}get extensions(){return Object.keys(this._extensions).join()}get isPaused(){return this._paused}get onclose(){return null}get onerror(){return null}get onopen(){return null}get onmessage(){return null}get protocol(){return this._protocol}get readyState(){return this._readyState}get url(){return this._url}setSocket(e,r,s){let i=new jr({allowSynchronousEvents:s.allowSynchronousEvents,binaryType:this.binaryType,extensions:this._extensions,isServer:this._isServer,maxPayload:s.maxPayload,skipUTF8Validation:s.skipUTF8Validation}),n=new Vr(e,this._extensions,s.generateMask);this._receiver=i,this._sender=n,this._socket=e,i[y]=this,n[y]=this,e[y]=this,i.on("conclude",ns),i.on("drain",os),i.on("error",as),i.on("message",fs),i.on("ping",ls),i.on("pong",cs),n.onerror=hs,e.setTimeout&&e.setTimeout(0),e.setNoDelay&&e.setNoDelay(),r.length>0&&e.unshift(r),e.on("close",Rt),e.on("data",_e),e.on("end",It),e.on("error",Ut),this._readyState=t.OPEN,this.emit("open")}emitClose(){if(!this._socket){this._readyState=t.CLOSED,this.emit("close",this._closeCode,this._closeMessage);return}this._extensions[B.extensionName]&&this._extensions[B.extensionName].cleanup(),this._receiver.removeAllListeners(),this._readyState=t.CLOSED,this.emit("close",this._closeCode,this._closeMessage)}close(e,r){if(this.readyState!==t.CLOSED){if(this.readyState===t.CONNECTING){E(this,this._req,"WebSocket was closed before the connection was established");return}if(this.readyState===t.CLOSING){this._closeFrameSent&&(this._closeFrameReceived||this._receiver._writableState.errorEmitted)&&this._socket.end();return}this._readyState=t.CLOSING,this._sender.close(e,r,!this._isServer,s=>{s||(this._closeFrameSent=!0,(this._closeFrameReceived||this._receiver._writableState.errorEmitted)&&this._socket.end())}),Bt(this)}}pause(){this.readyState===t.CONNECTING||this.readyState===t.CLOSED||(this._paused=!0,this._socket.pause())}ping(e,r,s){if(this.readyState===t.CONNECTING)throw new Error("WebSocket is not open: readyState 0 (CONNECTING)");if(typeof e=="function"?(s=e,e=r=void 0):typeof r=="function"&&(s=r,r=void 0),typeof e=="number"&&(e=e.toString()),this.readyState!==t.OPEN){Ae(this,e,s);return}r===void 0&&(r=!this._isServer),this._sender.ping(e||ue,r,s)}pong(e,r,s){if(this.readyState===t.CONNECTING)throw new Error("WebSocket is not open: readyState 0 (CONNECTING)");if(typeof e=="function"?(s=e,e=r=void 0):typeof r=="function"&&(s=r,r=void 0),typeof e=="number"&&(e=e.toString()),this.readyState!==t.OPEN){Ae(this,e,s);return}r===void 0&&(r=!this._isServer),this._sender.pong(e||ue,r,s)}resume(){this.readyState===t.CONNECTING||this.readyState===t.CLOSED||(this._paused=!1,this._receiver._writableState.needDrain||this._socket.resume())}send(e,r,s){if(this.readyState===t.CONNECTING)throw new Error("WebSocket is not open: readyState 0 (CONNECTING)");if(typeof r=="function"&&(s=r,r={}),typeof e=="number"&&(e=e.toString()),this.readyState!==t.OPEN){Ae(this,e,s);return}let i={binary:typeof e!="string",mask:!this._isServer,compress:!0,fin:!0,...r};this._extensions[B.extensionName]||(i.compress=!1),this._sender.send(e||ue,i,s)}terminate(){if(this.readyState!==t.CLOSED){if(this.readyState===t.CONNECTING){E(this,this._req,"WebSocket was closed before the connection was established");return}this._socket&&(this._readyState=t.CLOSING,this._socket.destroy())}}};Object.defineProperty(d,"CONNECTING",{enumerable:!0,value:L.indexOf("CONNECTING")});Object.defineProperty(d.prototype,"CONNECTING",{enumerable:!0,value:L.indexOf("CONNECTING")});Object.defineProperty(d,"OPEN",{enumerable:!0,value:L.indexOf("OPEN")});Object.defineProperty(d.prototype,"OPEN",{enumerable:!0,value:L.indexOf("OPEN")});Object.defineProperty(d,"CLOSING",{enumerable:!0,value:L.indexOf("CLOSING")});Object.defineProperty(d.prototype,"CLOSING",{enumerable:!0,value:L.indexOf("CLOSING")});Object.defineProperty(d,"CLOSED",{enumerable:!0,value:L.indexOf("CLOSED")});Object.defineProperty(d.prototype,"CLOSED",{enumerable:!0,value:L.indexOf("CLOSED")});["binaryType","bufferedAmount","extensions","isPaused","protocol","readyState","url"].forEach(t=>{Object.defineProperty(d.prototype,t,{enumerable:!0})});["open","error","close","message"].forEach(t=>{Object.defineProperty(d.prototype,`on${t}`,{enumerable:!0,get(){for(let e of this.listeners(t))if(e[De])return e[Yr];return null},set(e){for(let r of this.listeners(t))if(r[De]){this.removeListener(t,r);break}typeof e=="function"&&this.addEventListener(t,e,{[De]:!0})}})});d.prototype.addEventListener=Xr;d.prototype.removeEventListener=Zr;Dt.exports=d;function Lt(t,e,r,s){let i={allowSynchronousEvents:!0,autoPong:!0,protocolVersion:Me[1],maxPayload:104857600,skipUTF8Validation:!1,perMessageDeflate:!0,followRedirects:!1,maxRedirects:10,...s,socketPath:void 0,hostname:void 0,protocol:void 0,timeout:void 0,method:"GET",host:void 0,path:void 0,port:void 0};if(t._autoPong=i.autoPong,!Me.includes(i.protocolVersion))throw new RangeError(`Unsupported protocol version: ${i.protocolVersion} (supported versions: ${Me.join(", ")})`);let n;if(e instanceof Ue)n=e;else try{n=new Ue(e)}catch{throw new SyntaxError(`Invalid URL: ${e}`)}n.protocol==="http:"?n.protocol="ws:":n.protocol==="https:"&&(n.protocol="wss:"),t._url=n.href;let o=n.protocol==="wss:",f=n.protocol==="ws+unix:",l;if(n.protocol!=="ws:"&&!o&&!f?l=`The URL's protocol must be one of "ws:", "wss:", "http:", "https:", or "ws+unix:"`:f&&!n.pathname?l="The URL's pathname is empty":n.hash&&(l="The URL contains a fragment identifier"),l){let u=new SyntaxError(l);if(t._redirects===0)throw u;de(t,u);return}let a=o?443:80,c=qr(16).toString("base64"),h=o?Wr.request:Fr.request,_=new Set,g;if(i.createConnection=i.createConnection||(o?is:ss),i.defaultPort=i.defaultPort||a,i.port=n.port||a,i.host=n.hostname.startsWith("[")?n.hostname.slice(1,-1):n.hostname,i.headers={...i.headers,"Sec-WebSocket-Version":i.protocolVersion,"Sec-WebSocket-Key":c,Connection:"Upgrade",Upgrade:"websocket"},i.path=n.pathname+n.search,i.timeout=i.handshakeTimeout,i.perMessageDeflate&&(g=new B(i.perMessageDeflate!==!0?i.perMessageDeflate:{},!1,i.maxPayload),i.headers["Sec-WebSocket-Extensions"]=Jr({[B.extensionName]:g.offer()})),r.length){for(let u of r){if(typeof u!="string"||!rs.test(u)||_.has(u))throw new SyntaxError("An invalid or duplicated subprotocol was specified");_.add(u)}i.headers["Sec-WebSocket-Protocol"]=r.join(",")}if(i.origin&&(i.protocolVersion<13?i.headers["Sec-WebSocket-Origin"]=i.origin:i.headers.Origin=i.origin),(n.username||n.password)&&(i.auth=`${n.username}:${n.password}`),f){let u=i.path.split(":");i.socketPath=u[0],i.path=u[1]}let p;if(i.followRedirects){if(t._redirects===0){t._originalIpc=f,t._originalSecure=o,t._originalHostOrSocketPath=f?i.socketPath:n.host;let u=s&&s.headers;if(s={...s,headers:{}},u)for(let[S,A]of Object.entries(u))s.headers[S.toLowerCase()]=A}else if(t.listenerCount("redirect")===0){let u=f?t._originalIpc?i.socketPath===t._originalHostOrSocketPath:!1:t._originalIpc?!1:n.host===t._originalHostOrSocketPath;(!u||t._originalSecure&&!o)&&(delete i.headers.authorization,delete i.headers.cookie,u||delete i.headers.host,i.auth=void 0)}i.auth&&!s.headers.authorization&&(s.headers.authorization="Basic "+Buffer.from(i.auth).toString("base64")),p=t._req=h(i),t._redirects&&t.emit("redirect",t.url,p)}else p=t._req=h(i);i.timeout&&p.on("timeout",()=>{E(t,p,"Opening handshake has timed out")}),p.on("error",u=>{p===null||p[Nt]||(p=t._req=null,de(t,u))}),p.on("response",u=>{let S=u.headers.location,A=u.statusCode;if(S&&i.followRedirects&&A>=300&&A<400){if(++t._redirects>i.maxRedirects){E(t,p,"Maximum redirects exceeded");return}p.abort();let H;try{H=new Ue(S,e)}catch{let W=new SyntaxError(`Invalid URL: ${S}`);de(t,W);return}Lt(t,H,r,s)}else t.emit("unexpected-response",p,u)||E(t,p,`Unexpected server response: ${u.statusCode}`)}),p.on("upgrade",(u,S,A)=>{if(t.emit("upgrade",u),t.readyState!==d.CONNECTING)return;p=t._req=null;let H=u.headers.upgrade;if(H===void 0||H.toLowerCase()!=="websocket"){E(t,S,"Invalid Upgrade header");return}let qe=$r("sha1").update(c+Hr).digest("base64");if(u.headers["sec-websocket-accept"]!==qe){E(t,S,"Invalid Sec-WebSocket-Accept header");return}let W=u.headers["sec-websocket-protocol"],Y;if(W!==void 0?_.size?_.has(W)||(Y="Server sent an invalid subprotocol"):Y="Server sent a subprotocol but none was requested":_.size&&(Y="Server sent no subprotocol"),Y){E(t,S,Y);return}W&&(t._protocol=W);let $e=u.headers["sec-websocket-extensions"];if($e!==void 0){if(!g){E(t,S,"Server sent a Sec-WebSocket-Extensions header but no extension was requested");return}let ge;try{ge=Qr($e)}catch{E(t,S,"Invalid Sec-WebSocket-Extensions header");return}let je=Object.keys(ge);if(je.length!==1||je[0]!==B.extensionName){E(t,S,"Server indicated an extension that was not requested");return}try{g.accept(ge[B.extensionName])}catch{E(t,S,"Invalid Sec-WebSocket-Extensions header");return}t._extensions[B.extensionName]=g}t.setSocket(S,A,{allowSynchronousEvents:i.allowSynchronousEvents,generateMask:i.generateMask,maxPayload:i.maxPayload,skipUTF8Validation:i.skipUTF8Validation})}),i.finishRequest?i.finishRequest(p,t):p.end()}function de(t,e){t._readyState=d.CLOSING,t._errorEmitted=!0,t.emit("error",e),t.emitClose()}function ss(t){return t.path=t.socketPath,Tt.connect(t)}function is(t){return t.path=void 0,!t.servername&&t.servername!==""&&(t.servername=Tt.isIP(t.host)?"":t.host),Gr.connect(t)}function E(t,e,r){t._readyState=d.CLOSING;let s=new Error(r);Error.captureStackTrace(s,E),e.setHeader?(e[Nt]=!0,e.abort(),e.socket&&!e.socket.destroyed&&e.socket.destroy(),process.nextTick(de,t,s)):(e.destroy(s),e.once("error",t.emit.bind(t,"error")),e.once("close",t.emitClose.bind(t)))}function Ae(t,e,r){if(e){let s=zr(e)?e.size:es(e).length;t._socket?t._sender._bufferedBytes+=s:t._bufferedAmount+=s}if(r){let s=new Error(`WebSocket is not open: readyState ${t.readyState} (${L[t.readyState]})`);process.nextTick(r,s)}}function ns(t,e){let r=this[y];r._closeFrameReceived=!0,r._closeMessage=e,r._closeCode=t,r._socket[y]!==void 0&&(r._socket.removeListener("data",_e),process.nextTick(Pt,r._socket),t===1005?r.close():r.close(t,e))}function os(){let t=this[y];t.isPaused||t._socket.resume()}function as(t){let e=this[y];e._socket[y]!==void 0&&(e._socket.removeListener("data",_e),process.nextTick(Pt,e._socket),e.close(t[Kr])),e._errorEmitted||(e._errorEmitted=!0,e.emit("error",t))}function kt(){this[y].emitClose()}function fs(t,e){this[y].emit("message",t,e)}function ls(t){let e=this[y];e._autoPong&&e.pong(t,!this._isServer,Ct),e.emit("ping",t)}function cs(t){this[y].emit("pong",t)}function Pt(t){t.resume()}function hs(t){let e=this[y];e.readyState!==d.CLOSED&&(e.readyState===d.OPEN&&(e._readyState=d.CLOSING,Bt(e)),this._socket.end(),e._errorEmitted||(e._errorEmitted=!0,e.emit("error",t)))}function Bt(t){t._closeTimer=setTimeout(t._socket.destroy.bind(t._socket),ts)}function Rt(){let t=this[y];this.removeListener("close",Rt),this.removeListener("data",_e),this.removeListener("end",It),t._readyState=d.CLOSING;let e;!this._readableState.endEmitted&&!t._closeFrameReceived&&!t._receiver._writableState.errorEmitted&&(e=t._socket.read())!==null&&t._receiver.write(e),t._receiver.end(),this[y]=void 0,clearTimeout(t._closeTimer),t._receiver._writableState.finished||t._receiver._writableState.errorEmitted?t.emitClose():(t._receiver.on("error",kt),t._receiver.on("finish",kt))}function _e(t){this[y]._receiver.write(t)||this.pause()}function It(){let t=this[y];t._readyState=d.CLOSING,t._receiver.end(),this.end()}function Ut(){let t=this[y];this.removeListener("error",Ut),this.on("error",Ct),t&&(t._readyState=d.CLOSING,this.destroy())}});var Ft=x(($s,Wt)=>{"use strict";var qs=pe(),{Duplex:us}=m("stream");function Mt(t){t.emit("close")}function ds(){!this.destroyed&&this._writableState.finished&&this.destroy()}function At(t){this.removeListener("error",At),this.destroy(),this.listenerCount("error")===0&&this.emit("error",t)}function _s(t,e){let r=!0,s=new us({...e,autoDestroy:!1,emitClose:!1,objectMode:!1,writableObjectMode:!1});return t.on("message",function(n,o){let f=!o&&s._readableState.objectMode?n.toString():n;s.push(f)||t.pause()}),t.once("error",function(n){s.destroyed||(r=!1,s.destroy(n))}),t.once("close",function(){s.destroyed||s.push(null)}),s._destroy=function(i,n){if(t.readyState===t.CLOSED){n(i),process.nextTick(Mt,s);return}let o=!1;t.once("error",function(l){o=!0,n(l)}),t.once("close",function(){o||n(i),process.nextTick(Mt,s)}),r&&t.terminate()},s._final=function(i){if(t.readyState===t.CONNECTING){t.once("open",function(){s._final(i)});return}t._socket!==null&&(t._socket._writableState.finished?(i(),s._readableState.endEmitted&&s.destroy()):(t._socket.once("finish",function(){i()}),t.close()))},s._read=function(){t.isPaused&&t.resume()},s._write=function(i,n,o){if(t.readyState===t.CONNECTING){t.once("open",function(){s._write(i,n,o)});return}t.send(i,o)},s.on("end",ds),s.on("error",At),s}Wt.exports=_s});var qt=x((js,Gt)=>{"use strict";var{tokenChars:ps}=q();function ms(t){let e=new Set,r=-1,s=-1,i=0;for(i;i<t.length;i++){let o=t.charCodeAt(i);if(s===-1&&ps[o]===1)r===-1&&(r=i);else if(i!==0&&(o===32||o===9))s===-1&&r!==-1&&(s=i);else if(o===44){if(r===-1)throw new SyntaxError(`Unexpected character at index ${i}`);s===-1&&(s=i);let f=t.slice(r,s);if(e.has(f))throw new SyntaxError(`The "${f}" subprotocol is duplicated`);e.add(f),r=s=-1}else throw new SyntaxError(`Unexpected character at index ${i}`)}if(r===-1||s!==-1)throw new SyntaxError("Unexpected end of input");let n=t.slice(r,i);if(e.has(n))throw new SyntaxError(`The "${n}" subprotocol is duplicated`);return e.add(n),e}Gt.exports={parse:ms}});var Kt=x((zs,Yt)=>{"use strict";var gs=m("events"),me=m("http"),{Duplex:Vs}=m("stream"),{createHash:ys}=m("crypto"),$t=Ie(),D=J(),Ss=qt(),xs=pe(),{GUID:Es,kWebSocket:vs}=T(),bs=/^[+/0-9A-Za-z]{22}==$/,jt=0,Vt=1,Ht=2,We=class extends gs{constructor(e,r){if(super(),e={allowSynchronousEvents:!0,autoPong:!0,maxPayload:100*1024*1024,skipUTF8Validation:!1,perMessageDeflate:!1,handleProtocols:null,clientTracking:!0,verifyClient:null,noServer:!1,backlog:null,server:null,host:null,path:null,port:null,WebSocket:xs,...e},e.port==null&&!e.server&&!e.noServer||e.port!=null&&(e.server||e.noServer)||e.server&&e.noServer)throw new TypeError('One and only one of the "port", "server", or "noServer" options must be specified');if(e.port!=null?(this._server=me.createServer((s,i)=>{let n=me.STATUS_CODES[426];i.writeHead(426,{"Content-Length":n.length,"Content-Type":"text/plain"}),i.end(n)}),this._server.listen(e.port,e.host,e.backlog,r)):e.server&&(this._server=e.server),this._server){let s=this.emit.bind(this,"connection");this._removeListeners=ws(this._server,{listening:this.emit.bind(this,"listening"),error:this.emit.bind(this,"error"),upgrade:(i,n,o)=>{this.handleUpgrade(i,n,o,s)}})}e.perMessageDeflate===!0&&(e.perMessageDeflate={}),e.clientTracking&&(this.clients=new Set,this._shouldEmitClose=!1),this.options=e,this._state=jt}address(){if(this.options.noServer)throw new Error('The server is operating in "noServer" mode');return this._server?this._server.address():null}close(e){if(this._state===Ht){e&&this.once("close",()=>{e(new Error("The server is not running"))}),process.nextTick(re,this);return}if(e&&this.once("close",e),this._state!==Vt)if(this._state=Vt,this.options.noServer||this.options.server)this._server&&(this._removeListeners(),this._removeListeners=this._server=null),this.clients?this.clients.size?this._shouldEmitClose=!0:process.nextTick(re,this):process.nextTick(re,this);else{let r=this._server;this._removeListeners(),this._removeListeners=this._server=null,r.close(()=>{re(this)})}}shouldHandle(e){if(this.options.path){let r=e.url.indexOf("?");if((r!==-1?e.url.slice(0,r):e.url)!==this.options.path)return!1}return!0}handleUpgrade(e,r,s,i){r.on("error",zt);let n=e.headers["sec-websocket-key"],o=e.headers.upgrade,f=+e.headers["sec-websocket-version"];if(e.method!=="GET"){M(this,e,r,405,"Invalid HTTP method");return}if(o===void 0||o.toLowerCase()!=="websocket"){M(this,e,r,400,"Invalid Upgrade header");return}if(n===void 0||!bs.test(n)){M(this,e,r,400,"Missing or invalid Sec-WebSocket-Key header");return}if(f!==8&&f!==13){M(this,e,r,400,"Missing or invalid Sec-WebSocket-Version header");return}if(!this.shouldHandle(e)){se(r,400);return}let l=e.headers["sec-websocket-protocol"],a=new Set;if(l!==void 0)try{a=Ss.parse(l)}catch{M(this,e,r,400,"Invalid Sec-WebSocket-Protocol header");return}let c=e.headers["sec-websocket-extensions"],h={};if(this.options.perMessageDeflate&&c!==void 0){let _=new D(this.options.perMessageDeflate,!0,this.options.maxPayload);try{let g=$t.parse(c);g[D.extensionName]&&(_.accept(g[D.extensionName]),h[D.extensionName]=_)}catch{M(this,e,r,400,"Invalid or unacceptable Sec-WebSocket-Extensions header");return}}if(this.options.verifyClient){let _={origin:e.headers[`${f===8?"sec-websocket-origin":"origin"}`],secure:!!(e.socket.authorized||e.socket.encrypted),req:e};if(this.options.verifyClient.length===2){this.options.verifyClient(_,(g,p,u,S)=>{if(!g)return se(r,p||401,u,S);this.completeUpgrade(h,n,a,e,r,s,i)});return}if(!this.options.verifyClient(_))return se(r,401)}this.completeUpgrade(h,n,a,e,r,s,i)}completeUpgrade(e,r,s,i,n,o,f){if(!n.readable||!n.writable)return n.destroy();if(n[vs])throw new Error("server.handleUpgrade() was called more than once with the same socket, possibly due to a misconfiguration");if(this._state>jt)return se(n,503);let a=["HTTP/1.1 101 Switching Protocols","Upgrade: websocket","Connection: Upgrade",`Sec-WebSocket-Accept: ${ys("sha1").update(r+Es).digest("base64")}`],c=new this.options.WebSocket(null,void 0,this.options);if(s.size){let h=this.options.handleProtocols?this.options.handleProtocols(s,i):s.values().next().value;h&&(a.push(`Sec-WebSocket-Protocol: ${h}`),c._protocol=h)}if(e[D.extensionName]){let h=e[D.extensionName].params,_=$t.format({[D.extensionName]:[h]});a.push(`Sec-WebSocket-Extensions: ${_}`),c._extensions=e}this.emit("headers",a,i),n.write(a.concat(`\r
|
|
1
|
+
var tr=Object.create;var Ve=Object.defineProperty;var rr=Object.getOwnPropertyDescriptor;var sr=Object.getOwnPropertyNames;var ir=Object.getPrototypeOf,nr=Object.prototype.hasOwnProperty;var m=(t=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(t,{get:(e,r)=>(typeof require<"u"?require:e)[r]}):t)(function(t){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+t+'" is not supported')});var x=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports);var or=(t,e,r,s)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of sr(e))!nr.call(t,i)&&i!==r&&Ve(t,i,{get:()=>e[i],enumerable:!(s=rr(e,i))||s.enumerable});return t};var K=(t,e,r)=>(r=t!=null?tr(ir(t)):{},or(e||!t||!t.__esModule?Ve(r,"default",{value:t,enumerable:!0}):r,t));var T=x((Ns,Ye)=>{"use strict";var ze=["nodebuffer","arraybuffer","fragments"],He=typeof Blob<"u";He&&ze.push("blob");Ye.exports={BINARY_TYPES:ze,EMPTY_BUFFER:Buffer.alloc(0),GUID:"258EAFA5-E914-47DA-95CA-C5AB0DC85B11",hasBlob:He,kForOnEventAttribute:Symbol("kIsForOnEventAttribute"),kListener:Symbol("kListener"),kStatusCode:Symbol("status-code"),kWebSocket:Symbol("websocket"),NOOP:()=>{}}});var X=x((Ls,ie)=>{"use strict";var{EMPTY_BUFFER:ar}=T(),Se=Buffer[Symbol.species];function fr(t,e){if(t.length===0)return ar;if(t.length===1)return t[0];let r=Buffer.allocUnsafe(e),s=0;for(let i=0;i<t.length;i++){let n=t[i];r.set(n,s),s+=n.length}return s<e?new Se(r.buffer,r.byteOffset,s):r}function Ke(t,e,r,s,i){for(let n=0;n<i;n++)r[s+n]=t[n]^e[n&3]}function Xe(t,e){for(let r=0;r<t.length;r++)t[r]^=e[r&3]}function lr(t){return t.length===t.buffer.byteLength?t.buffer:t.buffer.slice(t.byteOffset,t.byteOffset+t.length)}function xe(t){if(xe.readOnly=!0,Buffer.isBuffer(t))return t;let e;return t instanceof ArrayBuffer?e=new Se(t):ArrayBuffer.isView(t)?e=new Se(t.buffer,t.byteOffset,t.byteLength):(e=Buffer.from(t),xe.readOnly=!1),e}ie.exports={concat:fr,mask:Ke,toArrayBuffer:lr,toBuffer:xe,unmask:Xe};if(!process.env.WS_NO_BUFFER_UTIL)try{let t=m("bufferutil");ie.exports.mask=function(e,r,s,i,n){n<48?Ke(e,r,s,i,n):t.mask(e,r,s,i,n)},ie.exports.unmask=function(e,r){e.length<32?Xe(e,r):t.unmask(e,r)}}catch{}});var Qe=x((Ps,Je)=>{"use strict";var Ze=Symbol("kDone"),Ee=Symbol("kRun"),ve=class{constructor(e){this[Ze]=()=>{this.pending--,this[Ee]()},this.concurrency=e||1/0,this.jobs=[],this.pending=0}add(e){this.jobs.push(e),this[Ee]()}[Ee](){if(this.pending!==this.concurrency&&this.jobs.length){let e=this.jobs.shift();this.pending++,e(this[Ze])}}};Je.exports=ve});var J=x((Bs,st)=>{"use strict";var Z=m("zlib"),et=X(),cr=Qe(),{kStatusCode:tt}=T(),hr=Buffer[Symbol.species],ur=Buffer.from([0,0,255,255]),oe=Symbol("permessage-deflate"),C=Symbol("total-length"),F=Symbol("callback"),P=Symbol("buffers"),G=Symbol("error"),ne,be=class{constructor(e,r,s){if(this._maxPayload=s|0,this._options=e||{},this._threshold=this._options.threshold!==void 0?this._options.threshold:1024,this._isServer=!!r,this._deflate=null,this._inflate=null,this.params=null,!ne){let i=this._options.concurrencyLimit!==void 0?this._options.concurrencyLimit:10;ne=new cr(i)}}static get extensionName(){return"permessage-deflate"}offer(){let e={};return this._options.serverNoContextTakeover&&(e.server_no_context_takeover=!0),this._options.clientNoContextTakeover&&(e.client_no_context_takeover=!0),this._options.serverMaxWindowBits&&(e.server_max_window_bits=this._options.serverMaxWindowBits),this._options.clientMaxWindowBits?e.client_max_window_bits=this._options.clientMaxWindowBits:this._options.clientMaxWindowBits==null&&(e.client_max_window_bits=!0),e}accept(e){return e=this.normalizeParams(e),this.params=this._isServer?this.acceptAsServer(e):this.acceptAsClient(e),this.params}cleanup(){if(this._inflate&&(this._inflate.close(),this._inflate=null),this._deflate){let e=this._deflate[F];this._deflate.close(),this._deflate=null,e&&e(new Error("The deflate stream was closed while data was being processed"))}}acceptAsServer(e){let r=this._options,s=e.find(i=>!(r.serverNoContextTakeover===!1&&i.server_no_context_takeover||i.server_max_window_bits&&(r.serverMaxWindowBits===!1||typeof r.serverMaxWindowBits=="number"&&r.serverMaxWindowBits>i.server_max_window_bits)||typeof r.clientMaxWindowBits=="number"&&!i.client_max_window_bits));if(!s)throw new Error("None of the extension offers can be accepted");return r.serverNoContextTakeover&&(s.server_no_context_takeover=!0),r.clientNoContextTakeover&&(s.client_no_context_takeover=!0),typeof r.serverMaxWindowBits=="number"&&(s.server_max_window_bits=r.serverMaxWindowBits),typeof r.clientMaxWindowBits=="number"?s.client_max_window_bits=r.clientMaxWindowBits:(s.client_max_window_bits===!0||r.clientMaxWindowBits===!1)&&delete s.client_max_window_bits,s}acceptAsClient(e){let r=e[0];if(this._options.clientNoContextTakeover===!1&&r.client_no_context_takeover)throw new Error('Unexpected parameter "client_no_context_takeover"');if(!r.client_max_window_bits)typeof this._options.clientMaxWindowBits=="number"&&(r.client_max_window_bits=this._options.clientMaxWindowBits);else if(this._options.clientMaxWindowBits===!1||typeof this._options.clientMaxWindowBits=="number"&&r.client_max_window_bits>this._options.clientMaxWindowBits)throw new Error('Unexpected or invalid parameter "client_max_window_bits"');return r}normalizeParams(e){return e.forEach(r=>{Object.keys(r).forEach(s=>{let i=r[s];if(i.length>1)throw new Error(`Parameter "${s}" must have only a single value`);if(i=i[0],s==="client_max_window_bits"){if(i!==!0){let n=+i;if(!Number.isInteger(n)||n<8||n>15)throw new TypeError(`Invalid value for parameter "${s}": ${i}`);i=n}else if(!this._isServer)throw new TypeError(`Invalid value for parameter "${s}": ${i}`)}else if(s==="server_max_window_bits"){let n=+i;if(!Number.isInteger(n)||n<8||n>15)throw new TypeError(`Invalid value for parameter "${s}": ${i}`);i=n}else if(s==="client_no_context_takeover"||s==="server_no_context_takeover"){if(i!==!0)throw new TypeError(`Invalid value for parameter "${s}": ${i}`)}else throw new Error(`Unknown parameter "${s}"`);r[s]=i})}),e}decompress(e,r,s){ne.add(i=>{this._decompress(e,r,(n,o)=>{i(),s(n,o)})})}compress(e,r,s){ne.add(i=>{this._compress(e,r,(n,o)=>{i(),s(n,o)})})}_decompress(e,r,s){let i=this._isServer?"client":"server";if(!this._inflate){let n=`${i}_max_window_bits`,o=typeof this.params[n]!="number"?Z.Z_DEFAULT_WINDOWBITS:this.params[n];this._inflate=Z.createInflateRaw({...this._options.zlibInflateOptions,windowBits:o}),this._inflate[oe]=this,this._inflate[C]=0,this._inflate[P]=[],this._inflate.on("error",_r),this._inflate.on("data",rt)}this._inflate[F]=s,this._inflate.write(e),r&&this._inflate.write(ur),this._inflate.flush(()=>{let n=this._inflate[G];if(n){this._inflate.close(),this._inflate=null,s(n);return}let o=et.concat(this._inflate[P],this._inflate[C]);this._inflate._readableState.endEmitted?(this._inflate.close(),this._inflate=null):(this._inflate[C]=0,this._inflate[P]=[],r&&this.params[`${i}_no_context_takeover`]&&this._inflate.reset()),s(null,o)})}_compress(e,r,s){let i=this._isServer?"server":"client";if(!this._deflate){let n=`${i}_max_window_bits`,o=typeof this.params[n]!="number"?Z.Z_DEFAULT_WINDOWBITS:this.params[n];this._deflate=Z.createDeflateRaw({...this._options.zlibDeflateOptions,windowBits:o}),this._deflate[C]=0,this._deflate[P]=[],this._deflate.on("data",dr)}this._deflate[F]=s,this._deflate.write(e),this._deflate.flush(Z.Z_SYNC_FLUSH,()=>{if(!this._deflate)return;let n=et.concat(this._deflate[P],this._deflate[C]);r&&(n=new hr(n.buffer,n.byteOffset,n.length-4)),this._deflate[F]=null,this._deflate[C]=0,this._deflate[P]=[],r&&this.params[`${i}_no_context_takeover`]&&this._deflate.reset(),s(null,n)})}};st.exports=be;function dr(t){this[P].push(t),this[C]+=t.length}function rt(t){if(this[C]+=t.length,this[oe]._maxPayload<1||this[C]<=this[oe]._maxPayload){this[P].push(t);return}this[G]=new RangeError("Max payload size exceeded"),this[G].code="WS_ERR_UNSUPPORTED_MESSAGE_LENGTH",this[G][tt]=1009,this.removeListener("data",rt),this.reset()}function _r(t){if(this[oe]._inflate=null,this[G]){this[F](this[G]);return}t[tt]=1007,this[F](t)}});var q=x((Rs,ae)=>{"use strict";var{isUtf8:it}=m("buffer"),{hasBlob:pr}=T(),mr=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,1,1,1,1,0,0,1,1,0,1,1,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0,1,0];function gr(t){return t>=1e3&&t<=1014&&t!==1004&&t!==1005&&t!==1006||t>=3e3&&t<=4999}function we(t){let e=t.length,r=0;for(;r<e;)if((t[r]&128)===0)r++;else if((t[r]&224)===192){if(r+1===e||(t[r+1]&192)!==128||(t[r]&254)===192)return!1;r+=2}else if((t[r]&240)===224){if(r+2>=e||(t[r+1]&192)!==128||(t[r+2]&192)!==128||t[r]===224&&(t[r+1]&224)===128||t[r]===237&&(t[r+1]&224)===160)return!1;r+=3}else if((t[r]&248)===240){if(r+3>=e||(t[r+1]&192)!==128||(t[r+2]&192)!==128||(t[r+3]&192)!==128||t[r]===240&&(t[r+1]&240)===128||t[r]===244&&t[r+1]>143||t[r]>244)return!1;r+=4}else return!1;return!0}function yr(t){return pr&&typeof t=="object"&&typeof t.arrayBuffer=="function"&&typeof t.type=="string"&&typeof t.stream=="function"&&(t[Symbol.toStringTag]==="Blob"||t[Symbol.toStringTag]==="File")}ae.exports={isBlob:yr,isValidStatusCode:gr,isValidUTF8:we,tokenChars:mr};if(it)ae.exports.isValidUTF8=function(t){return t.length<24?we(t):it(t)};else if(!process.env.WS_NO_UTF_8_VALIDATE)try{let t=m("utf-8-validate");ae.exports.isValidUTF8=function(e){return e.length<32?we(e):t(e)}}catch{}});var Ne=x((Is,ht)=>{"use strict";var{Writable:Sr}=m("stream"),nt=J(),{BINARY_TYPES:xr,EMPTY_BUFFER:ot,kStatusCode:Er,kWebSocket:vr}=T(),{concat:Oe,toArrayBuffer:br,unmask:wr}=X(),{isValidStatusCode:Or,isValidUTF8:at}=q(),fe=Buffer[Symbol.species],v=0,ft=1,lt=2,ct=3,ke=4,Te=5,le=6,Ce=class extends Sr{constructor(e={}){super(),this._allowSynchronousEvents=e.allowSynchronousEvents!==void 0?e.allowSynchronousEvents:!0,this._binaryType=e.binaryType||xr[0],this._extensions=e.extensions||{},this._isServer=!!e.isServer,this._maxPayload=e.maxPayload|0,this._skipUTF8Validation=!!e.skipUTF8Validation,this[vr]=void 0,this._bufferedBytes=0,this._buffers=[],this._compressed=!1,this._payloadLength=0,this._mask=void 0,this._fragmented=0,this._masked=!1,this._fin=!1,this._opcode=0,this._totalPayloadLength=0,this._messageLength=0,this._fragments=[],this._errored=!1,this._loop=!1,this._state=v}_write(e,r,s){if(this._opcode===8&&this._state==v)return s();this._bufferedBytes+=e.length,this._buffers.push(e),this.startLoop(s)}consume(e){if(this._bufferedBytes-=e,e===this._buffers[0].length)return this._buffers.shift();if(e<this._buffers[0].length){let s=this._buffers[0];return this._buffers[0]=new fe(s.buffer,s.byteOffset+e,s.length-e),new fe(s.buffer,s.byteOffset,e)}let r=Buffer.allocUnsafe(e);do{let s=this._buffers[0],i=r.length-e;e>=s.length?r.set(this._buffers.shift(),i):(r.set(new Uint8Array(s.buffer,s.byteOffset,e),i),this._buffers[0]=new fe(s.buffer,s.byteOffset+e,s.length-e)),e-=s.length}while(e>0);return r}startLoop(e){this._loop=!0;do switch(this._state){case v:this.getInfo(e);break;case ft:this.getPayloadLength16(e);break;case lt:this.getPayloadLength64(e);break;case ct:this.getMask();break;case ke:this.getData(e);break;case Te:case le:this._loop=!1;return}while(this._loop);this._errored||e()}getInfo(e){if(this._bufferedBytes<2){this._loop=!1;return}let r=this.consume(2);if((r[0]&48)!==0){let i=this.createError(RangeError,"RSV2 and RSV3 must be clear",!0,1002,"WS_ERR_UNEXPECTED_RSV_2_3");e(i);return}let s=(r[0]&64)===64;if(s&&!this._extensions[nt.extensionName]){let i=this.createError(RangeError,"RSV1 must be clear",!0,1002,"WS_ERR_UNEXPECTED_RSV_1");e(i);return}if(this._fin=(r[0]&128)===128,this._opcode=r[0]&15,this._payloadLength=r[1]&127,this._opcode===0){if(s){let i=this.createError(RangeError,"RSV1 must be clear",!0,1002,"WS_ERR_UNEXPECTED_RSV_1");e(i);return}if(!this._fragmented){let i=this.createError(RangeError,"invalid opcode 0",!0,1002,"WS_ERR_INVALID_OPCODE");e(i);return}this._opcode=this._fragmented}else if(this._opcode===1||this._opcode===2){if(this._fragmented){let i=this.createError(RangeError,`invalid opcode ${this._opcode}`,!0,1002,"WS_ERR_INVALID_OPCODE");e(i);return}this._compressed=s}else if(this._opcode>7&&this._opcode<11){if(!this._fin){let i=this.createError(RangeError,"FIN must be set",!0,1002,"WS_ERR_EXPECTED_FIN");e(i);return}if(s){let i=this.createError(RangeError,"RSV1 must be clear",!0,1002,"WS_ERR_UNEXPECTED_RSV_1");e(i);return}if(this._payloadLength>125||this._opcode===8&&this._payloadLength===1){let i=this.createError(RangeError,`invalid payload length ${this._payloadLength}`,!0,1002,"WS_ERR_INVALID_CONTROL_PAYLOAD_LENGTH");e(i);return}}else{let i=this.createError(RangeError,`invalid opcode ${this._opcode}`,!0,1002,"WS_ERR_INVALID_OPCODE");e(i);return}if(!this._fin&&!this._fragmented&&(this._fragmented=this._opcode),this._masked=(r[1]&128)===128,this._isServer){if(!this._masked){let i=this.createError(RangeError,"MASK must be set",!0,1002,"WS_ERR_EXPECTED_MASK");e(i);return}}else if(this._masked){let i=this.createError(RangeError,"MASK must be clear",!0,1002,"WS_ERR_UNEXPECTED_MASK");e(i);return}this._payloadLength===126?this._state=ft:this._payloadLength===127?this._state=lt:this.haveLength(e)}getPayloadLength16(e){if(this._bufferedBytes<2){this._loop=!1;return}this._payloadLength=this.consume(2).readUInt16BE(0),this.haveLength(e)}getPayloadLength64(e){if(this._bufferedBytes<8){this._loop=!1;return}let r=this.consume(8),s=r.readUInt32BE(0);if(s>Math.pow(2,21)-1){let i=this.createError(RangeError,"Unsupported WebSocket frame: payload length > 2^53 - 1",!1,1009,"WS_ERR_UNSUPPORTED_DATA_PAYLOAD_LENGTH");e(i);return}this._payloadLength=s*Math.pow(2,32)+r.readUInt32BE(4),this.haveLength(e)}haveLength(e){if(this._payloadLength&&this._opcode<8&&(this._totalPayloadLength+=this._payloadLength,this._totalPayloadLength>this._maxPayload&&this._maxPayload>0)){let r=this.createError(RangeError,"Max payload size exceeded",!1,1009,"WS_ERR_UNSUPPORTED_MESSAGE_LENGTH");e(r);return}this._masked?this._state=ct:this._state=ke}getMask(){if(this._bufferedBytes<4){this._loop=!1;return}this._mask=this.consume(4),this._state=ke}getData(e){let r=ot;if(this._payloadLength){if(this._bufferedBytes<this._payloadLength){this._loop=!1;return}r=this.consume(this._payloadLength),this._masked&&(this._mask[0]|this._mask[1]|this._mask[2]|this._mask[3])!==0&&wr(r,this._mask)}if(this._opcode>7){this.controlMessage(r,e);return}if(this._compressed){this._state=Te,this.decompress(r,e);return}r.length&&(this._messageLength=this._totalPayloadLength,this._fragments.push(r)),this.dataMessage(e)}decompress(e,r){this._extensions[nt.extensionName].decompress(e,this._fin,(i,n)=>{if(i)return r(i);if(n.length){if(this._messageLength+=n.length,this._messageLength>this._maxPayload&&this._maxPayload>0){let o=this.createError(RangeError,"Max payload size exceeded",!1,1009,"WS_ERR_UNSUPPORTED_MESSAGE_LENGTH");r(o);return}this._fragments.push(n)}this.dataMessage(r),this._state===v&&this.startLoop(r)})}dataMessage(e){if(!this._fin){this._state=v;return}let r=this._messageLength,s=this._fragments;if(this._totalPayloadLength=0,this._messageLength=0,this._fragmented=0,this._fragments=[],this._opcode===2){let i;this._binaryType==="nodebuffer"?i=Oe(s,r):this._binaryType==="arraybuffer"?i=br(Oe(s,r)):this._binaryType==="blob"?i=new Blob(s):i=s,this._allowSynchronousEvents?(this.emit("message",i,!0),this._state=v):(this._state=le,setImmediate(()=>{this.emit("message",i,!0),this._state=v,this.startLoop(e)}))}else{let i=Oe(s,r);if(!this._skipUTF8Validation&&!at(i)){let n=this.createError(Error,"invalid UTF-8 sequence",!0,1007,"WS_ERR_INVALID_UTF8");e(n);return}this._state===Te||this._allowSynchronousEvents?(this.emit("message",i,!1),this._state=v):(this._state=le,setImmediate(()=>{this.emit("message",i,!1),this._state=v,this.startLoop(e)}))}}controlMessage(e,r){if(this._opcode===8){if(e.length===0)this._loop=!1,this.emit("conclude",1005,ot),this.end();else{let s=e.readUInt16BE(0);if(!Or(s)){let n=this.createError(RangeError,`invalid status code ${s}`,!0,1002,"WS_ERR_INVALID_CLOSE_CODE");r(n);return}let i=new fe(e.buffer,e.byteOffset+2,e.length-2);if(!this._skipUTF8Validation&&!at(i)){let n=this.createError(Error,"invalid UTF-8 sequence",!0,1007,"WS_ERR_INVALID_UTF8");r(n);return}this._loop=!1,this.emit("conclude",s,i),this.end()}this._state=v;return}this._allowSynchronousEvents?(this.emit(this._opcode===9?"ping":"pong",e),this._state=v):(this._state=le,setImmediate(()=>{this.emit(this._opcode===9?"ping":"pong",e),this._state=v,this.startLoop(r)}))}createError(e,r,s,i,n){this._loop=!1,this._errored=!0;let o=new e(s?`Invalid WebSocket frame: ${r}`:r);return Error.captureStackTrace(o,this.createError),o.code=n,o[Er]=i,o}};ht.exports=Ce});var Be=x((Ds,_t)=>{"use strict";var{Duplex:Us}=m("stream"),{randomFillSync:kr}=m("crypto"),ut=J(),{EMPTY_BUFFER:Tr,kWebSocket:Cr,NOOP:Nr}=T(),{isBlob:$,isValidStatusCode:Lr}=q(),{mask:dt,toBuffer:R}=X(),b=Symbol("kByteLength"),Pr=Buffer.alloc(4),ce=8*1024,I,j=ce,w=0,Br=1,Rr=2,Le=class t{constructor(e,r,s){this._extensions=r||{},s&&(this._generateMask=s,this._maskBuffer=Buffer.alloc(4)),this._socket=e,this._firstFragment=!0,this._compress=!1,this._bufferedBytes=0,this._queue=[],this._state=w,this.onerror=Nr,this[Cr]=void 0}static frame(e,r){let s,i=!1,n=2,o=!1;r.mask&&(s=r.maskBuffer||Pr,r.generateMask?r.generateMask(s):(j===ce&&(I===void 0&&(I=Buffer.alloc(ce)),kr(I,0,ce),j=0),s[0]=I[j++],s[1]=I[j++],s[2]=I[j++],s[3]=I[j++]),o=(s[0]|s[1]|s[2]|s[3])===0,n=6);let f;typeof e=="string"?(!r.mask||o)&&r[b]!==void 0?f=r[b]:(e=Buffer.from(e),f=e.length):(f=e.length,i=r.mask&&r.readOnly&&!o);let l=f;f>=65536?(n+=8,l=127):f>125&&(n+=2,l=126);let a=Buffer.allocUnsafe(i?f+n:n);return a[0]=r.fin?r.opcode|128:r.opcode,r.rsv1&&(a[0]|=64),a[1]=l,l===126?a.writeUInt16BE(f,2):l===127&&(a[2]=a[3]=0,a.writeUIntBE(f,4,6)),r.mask?(a[1]|=128,a[n-4]=s[0],a[n-3]=s[1],a[n-2]=s[2],a[n-1]=s[3],o?[a,e]:i?(dt(e,s,a,n,f),[a]):(dt(e,s,e,0,f),[a,e])):[a,e]}close(e,r,s,i){let n;if(e===void 0)n=Tr;else{if(typeof e!="number"||!Lr(e))throw new TypeError("First argument must be a valid error code number");if(r===void 0||!r.length)n=Buffer.allocUnsafe(2),n.writeUInt16BE(e,0);else{let f=Buffer.byteLength(r);if(f>123)throw new RangeError("The message must not be greater than 123 bytes");n=Buffer.allocUnsafe(2+f),n.writeUInt16BE(e,0),typeof r=="string"?n.write(r,2):n.set(r,2)}}let o={[b]:n.length,fin:!0,generateMask:this._generateMask,mask:s,maskBuffer:this._maskBuffer,opcode:8,readOnly:!1,rsv1:!1};this._state!==w?this.enqueue([this.dispatch,n,!1,o,i]):this.sendFrame(t.frame(n,o),i)}ping(e,r,s){let i,n;if(typeof e=="string"?(i=Buffer.byteLength(e),n=!1):$(e)?(i=e.size,n=!1):(e=R(e),i=e.length,n=R.readOnly),i>125)throw new RangeError("The data size must not be greater than 125 bytes");let o={[b]:i,fin:!0,generateMask:this._generateMask,mask:r,maskBuffer:this._maskBuffer,opcode:9,readOnly:n,rsv1:!1};$(e)?this._state!==w?this.enqueue([this.getBlobData,e,!1,o,s]):this.getBlobData(e,!1,o,s):this._state!==w?this.enqueue([this.dispatch,e,!1,o,s]):this.sendFrame(t.frame(e,o),s)}pong(e,r,s){let i,n;if(typeof e=="string"?(i=Buffer.byteLength(e),n=!1):$(e)?(i=e.size,n=!1):(e=R(e),i=e.length,n=R.readOnly),i>125)throw new RangeError("The data size must not be greater than 125 bytes");let o={[b]:i,fin:!0,generateMask:this._generateMask,mask:r,maskBuffer:this._maskBuffer,opcode:10,readOnly:n,rsv1:!1};$(e)?this._state!==w?this.enqueue([this.getBlobData,e,!1,o,s]):this.getBlobData(e,!1,o,s):this._state!==w?this.enqueue([this.dispatch,e,!1,o,s]):this.sendFrame(t.frame(e,o),s)}send(e,r,s){let i=this._extensions[ut.extensionName],n=r.binary?2:1,o=r.compress,f,l;typeof e=="string"?(f=Buffer.byteLength(e),l=!1):$(e)?(f=e.size,l=!1):(e=R(e),f=e.length,l=R.readOnly),this._firstFragment?(this._firstFragment=!1,o&&i&&i.params[i._isServer?"server_no_context_takeover":"client_no_context_takeover"]&&(o=f>=i._threshold),this._compress=o):(o=!1,n=0),r.fin&&(this._firstFragment=!0);let a={[b]:f,fin:r.fin,generateMask:this._generateMask,mask:r.mask,maskBuffer:this._maskBuffer,opcode:n,readOnly:l,rsv1:o};$(e)?this._state!==w?this.enqueue([this.getBlobData,e,this._compress,a,s]):this.getBlobData(e,this._compress,a,s):this._state!==w?this.enqueue([this.dispatch,e,this._compress,a,s]):this.dispatch(e,this._compress,a,s)}getBlobData(e,r,s,i){this._bufferedBytes+=s[b],this._state=Rr,e.arrayBuffer().then(n=>{if(this._socket.destroyed){let f=new Error("The socket was closed while the blob was being read");process.nextTick(Pe,this,f,i);return}this._bufferedBytes-=s[b];let o=R(n);r?this.dispatch(o,r,s,i):(this._state=w,this.sendFrame(t.frame(o,s),i),this.dequeue())}).catch(n=>{process.nextTick(Ir,this,n,i)})}dispatch(e,r,s,i){if(!r){this.sendFrame(t.frame(e,s),i);return}let n=this._extensions[ut.extensionName];this._bufferedBytes+=s[b],this._state=Br,n.compress(e,s.fin,(o,f)=>{if(this._socket.destroyed){let l=new Error("The socket was closed while data was being compressed");Pe(this,l,i);return}this._bufferedBytes-=s[b],this._state=w,s.readOnly=!1,this.sendFrame(t.frame(f,s),i),this.dequeue()})}dequeue(){for(;this._state===w&&this._queue.length;){let e=this._queue.shift();this._bufferedBytes-=e[3][b],Reflect.apply(e[0],this,e.slice(1))}}enqueue(e){this._bufferedBytes+=e[3][b],this._queue.push(e)}sendFrame(e,r){e.length===2?(this._socket.cork(),this._socket.write(e[0]),this._socket.write(e[1],r),this._socket.uncork()):this._socket.write(e[0],r)}};_t.exports=Le;function Pe(t,e,r){typeof r=="function"&&r(e);for(let s=0;s<t._queue.length;s++){let i=t._queue[s],n=i[i.length-1];typeof n=="function"&&n(e)}}function Ir(t,e,r){Pe(t,e,r),t.onerror(e)}});var bt=x((Ms,vt)=>{"use strict";var{kForOnEventAttribute:Q,kListener:Re}=T(),pt=Symbol("kCode"),mt=Symbol("kData"),gt=Symbol("kError"),yt=Symbol("kMessage"),St=Symbol("kReason"),V=Symbol("kTarget"),xt=Symbol("kType"),Et=Symbol("kWasClean"),N=class{constructor(e){this[V]=null,this[xt]=e}get target(){return this[V]}get type(){return this[xt]}};Object.defineProperty(N.prototype,"target",{enumerable:!0});Object.defineProperty(N.prototype,"type",{enumerable:!0});var U=class extends N{constructor(e,r={}){super(e),this[pt]=r.code===void 0?0:r.code,this[St]=r.reason===void 0?"":r.reason,this[Et]=r.wasClean===void 0?!1:r.wasClean}get code(){return this[pt]}get reason(){return this[St]}get wasClean(){return this[Et]}};Object.defineProperty(U.prototype,"code",{enumerable:!0});Object.defineProperty(U.prototype,"reason",{enumerable:!0});Object.defineProperty(U.prototype,"wasClean",{enumerable:!0});var z=class extends N{constructor(e,r={}){super(e),this[gt]=r.error===void 0?null:r.error,this[yt]=r.message===void 0?"":r.message}get error(){return this[gt]}get message(){return this[yt]}};Object.defineProperty(z.prototype,"error",{enumerable:!0});Object.defineProperty(z.prototype,"message",{enumerable:!0});var ee=class extends N{constructor(e,r={}){super(e),this[mt]=r.data===void 0?null:r.data}get data(){return this[mt]}};Object.defineProperty(ee.prototype,"data",{enumerable:!0});var Ur={addEventListener(t,e,r={}){for(let i of this.listeners(t))if(!r[Q]&&i[Re]===e&&!i[Q])return;let s;if(t==="message")s=function(n,o){let f=new ee("message",{data:o?n:n.toString()});f[V]=this,he(e,this,f)};else if(t==="close")s=function(n,o){let f=new U("close",{code:n,reason:o.toString(),wasClean:this._closeFrameReceived&&this._closeFrameSent});f[V]=this,he(e,this,f)};else if(t==="error")s=function(n){let o=new z("error",{error:n,message:n.message});o[V]=this,he(e,this,o)};else if(t==="open")s=function(){let n=new N("open");n[V]=this,he(e,this,n)};else return;s[Q]=!!r[Q],s[Re]=e,r.once?this.once(t,s):this.on(t,s)},removeEventListener(t,e){for(let r of this.listeners(t))if(r[Re]===e&&!r[Q]){this.removeListener(t,r);break}}};vt.exports={CloseEvent:U,ErrorEvent:z,Event:N,EventTarget:Ur,MessageEvent:ee};function he(t,e,r){typeof t=="object"&&t.handleEvent?t.handleEvent.call(t,r):t.call(e,r)}});var Ie=x((As,wt)=>{"use strict";var{tokenChars:te}=q();function O(t,e,r){t[e]===void 0?t[e]=[r]:t[e].push(r)}function Dr(t){let e=Object.create(null),r=Object.create(null),s=!1,i=!1,n=!1,o,f,l=-1,a=-1,c=-1,h=0;for(;h<t.length;h++)if(a=t.charCodeAt(h),o===void 0)if(c===-1&&te[a]===1)l===-1&&(l=h);else if(h!==0&&(a===32||a===9))c===-1&&l!==-1&&(c=h);else if(a===59||a===44){if(l===-1)throw new SyntaxError(`Unexpected character at index ${h}`);c===-1&&(c=h);let g=t.slice(l,c);a===44?(O(e,g,r),r=Object.create(null)):o=g,l=c=-1}else throw new SyntaxError(`Unexpected character at index ${h}`);else if(f===void 0)if(c===-1&&te[a]===1)l===-1&&(l=h);else if(a===32||a===9)c===-1&&l!==-1&&(c=h);else if(a===59||a===44){if(l===-1)throw new SyntaxError(`Unexpected character at index ${h}`);c===-1&&(c=h),O(r,t.slice(l,c),!0),a===44&&(O(e,o,r),r=Object.create(null),o=void 0),l=c=-1}else if(a===61&&l!==-1&&c===-1)f=t.slice(l,h),l=c=-1;else throw new SyntaxError(`Unexpected character at index ${h}`);else if(i){if(te[a]!==1)throw new SyntaxError(`Unexpected character at index ${h}`);l===-1?l=h:s||(s=!0),i=!1}else if(n)if(te[a]===1)l===-1&&(l=h);else if(a===34&&l!==-1)n=!1,c=h;else if(a===92)i=!0;else throw new SyntaxError(`Unexpected character at index ${h}`);else if(a===34&&t.charCodeAt(h-1)===61)n=!0;else if(c===-1&&te[a]===1)l===-1&&(l=h);else if(l!==-1&&(a===32||a===9))c===-1&&(c=h);else if(a===59||a===44){if(l===-1)throw new SyntaxError(`Unexpected character at index ${h}`);c===-1&&(c=h);let g=t.slice(l,c);s&&(g=g.replace(/\\/g,""),s=!1),O(r,f,g),a===44&&(O(e,o,r),r=Object.create(null),o=void 0),f=void 0,l=c=-1}else throw new SyntaxError(`Unexpected character at index ${h}`);if(l===-1||n||a===32||a===9)throw new SyntaxError("Unexpected end of input");c===-1&&(c=h);let _=t.slice(l,c);return o===void 0?O(e,_,r):(f===void 0?O(r,_,!0):s?O(r,f,_.replace(/\\/g,"")):O(r,f,_),O(e,o,r)),e}function Mr(t){return Object.keys(t).map(e=>{let r=t[e];return Array.isArray(r)||(r=[r]),r.map(s=>[e].concat(Object.keys(s).map(i=>{let n=s[i];return Array.isArray(n)||(n=[n]),n.map(o=>o===!0?i:`${i}=${o}`).join("; ")})).join("; ")).join(", ")}).join(", ")}wt.exports={format:Mr,parse:Dr}});var pe=x((Gs,Dt)=>{"use strict";var Ar=m("events"),Wr=m("https"),Fr=m("http"),Tt=m("net"),Gr=m("tls"),{randomBytes:qr,createHash:$r}=m("crypto"),{Duplex:Ws,Readable:Fs}=m("stream"),{URL:Ue}=m("url"),B=J(),jr=Ne(),Vr=Be(),{isBlob:zr}=q(),{BINARY_TYPES:Ot,EMPTY_BUFFER:ue,GUID:Hr,kForOnEventAttribute:De,kListener:Yr,kStatusCode:Kr,kWebSocket:y,NOOP:Ct}=T(),{EventTarget:{addEventListener:Xr,removeEventListener:Zr}}=bt(),{format:Jr,parse:Qr}=Ie(),{toBuffer:es}=X(),ts=30*1e3,Nt=Symbol("kAborted"),Me=[8,13],L=["CONNECTING","OPEN","CLOSING","CLOSED"],rs=/^[!#$%&'*+\-.0-9A-Z^_`|a-z~]+$/,d=class t extends Ar{constructor(e,r,s){super(),this._binaryType=Ot[0],this._closeCode=1006,this._closeFrameReceived=!1,this._closeFrameSent=!1,this._closeMessage=ue,this._closeTimer=null,this._errorEmitted=!1,this._extensions={},this._paused=!1,this._protocol="",this._readyState=t.CONNECTING,this._receiver=null,this._sender=null,this._socket=null,e!==null?(this._bufferedAmount=0,this._isServer=!1,this._redirects=0,r===void 0?r=[]:Array.isArray(r)||(typeof r=="object"&&r!==null?(s=r,r=[]):r=[r]),Lt(this,e,r,s)):(this._autoPong=s.autoPong,this._isServer=!0)}get binaryType(){return this._binaryType}set binaryType(e){Ot.includes(e)&&(this._binaryType=e,this._receiver&&(this._receiver._binaryType=e))}get bufferedAmount(){return this._socket?this._socket._writableState.length+this._sender._bufferedBytes:this._bufferedAmount}get extensions(){return Object.keys(this._extensions).join()}get isPaused(){return this._paused}get onclose(){return null}get onerror(){return null}get onopen(){return null}get onmessage(){return null}get protocol(){return this._protocol}get readyState(){return this._readyState}get url(){return this._url}setSocket(e,r,s){let i=new jr({allowSynchronousEvents:s.allowSynchronousEvents,binaryType:this.binaryType,extensions:this._extensions,isServer:this._isServer,maxPayload:s.maxPayload,skipUTF8Validation:s.skipUTF8Validation}),n=new Vr(e,this._extensions,s.generateMask);this._receiver=i,this._sender=n,this._socket=e,i[y]=this,n[y]=this,e[y]=this,i.on("conclude",ns),i.on("drain",os),i.on("error",as),i.on("message",fs),i.on("ping",ls),i.on("pong",cs),n.onerror=hs,e.setTimeout&&e.setTimeout(0),e.setNoDelay&&e.setNoDelay(),r.length>0&&e.unshift(r),e.on("close",Rt),e.on("data",_e),e.on("end",It),e.on("error",Ut),this._readyState=t.OPEN,this.emit("open")}emitClose(){if(!this._socket){this._readyState=t.CLOSED,this.emit("close",this._closeCode,this._closeMessage);return}this._extensions[B.extensionName]&&this._extensions[B.extensionName].cleanup(),this._receiver.removeAllListeners(),this._readyState=t.CLOSED,this.emit("close",this._closeCode,this._closeMessage)}close(e,r){if(this.readyState!==t.CLOSED){if(this.readyState===t.CONNECTING){E(this,this._req,"WebSocket was closed before the connection was established");return}if(this.readyState===t.CLOSING){this._closeFrameSent&&(this._closeFrameReceived||this._receiver._writableState.errorEmitted)&&this._socket.end();return}this._readyState=t.CLOSING,this._sender.close(e,r,!this._isServer,s=>{s||(this._closeFrameSent=!0,(this._closeFrameReceived||this._receiver._writableState.errorEmitted)&&this._socket.end())}),Bt(this)}}pause(){this.readyState===t.CONNECTING||this.readyState===t.CLOSED||(this._paused=!0,this._socket.pause())}ping(e,r,s){if(this.readyState===t.CONNECTING)throw new Error("WebSocket is not open: readyState 0 (CONNECTING)");if(typeof e=="function"?(s=e,e=r=void 0):typeof r=="function"&&(s=r,r=void 0),typeof e=="number"&&(e=e.toString()),this.readyState!==t.OPEN){Ae(this,e,s);return}r===void 0&&(r=!this._isServer),this._sender.ping(e||ue,r,s)}pong(e,r,s){if(this.readyState===t.CONNECTING)throw new Error("WebSocket is not open: readyState 0 (CONNECTING)");if(typeof e=="function"?(s=e,e=r=void 0):typeof r=="function"&&(s=r,r=void 0),typeof e=="number"&&(e=e.toString()),this.readyState!==t.OPEN){Ae(this,e,s);return}r===void 0&&(r=!this._isServer),this._sender.pong(e||ue,r,s)}resume(){this.readyState===t.CONNECTING||this.readyState===t.CLOSED||(this._paused=!1,this._receiver._writableState.needDrain||this._socket.resume())}send(e,r,s){if(this.readyState===t.CONNECTING)throw new Error("WebSocket is not open: readyState 0 (CONNECTING)");if(typeof r=="function"&&(s=r,r={}),typeof e=="number"&&(e=e.toString()),this.readyState!==t.OPEN){Ae(this,e,s);return}let i={binary:typeof e!="string",mask:!this._isServer,compress:!0,fin:!0,...r};this._extensions[B.extensionName]||(i.compress=!1),this._sender.send(e||ue,i,s)}terminate(){if(this.readyState!==t.CLOSED){if(this.readyState===t.CONNECTING){E(this,this._req,"WebSocket was closed before the connection was established");return}this._socket&&(this._readyState=t.CLOSING,this._socket.destroy())}}};Object.defineProperty(d,"CONNECTING",{enumerable:!0,value:L.indexOf("CONNECTING")});Object.defineProperty(d.prototype,"CONNECTING",{enumerable:!0,value:L.indexOf("CONNECTING")});Object.defineProperty(d,"OPEN",{enumerable:!0,value:L.indexOf("OPEN")});Object.defineProperty(d.prototype,"OPEN",{enumerable:!0,value:L.indexOf("OPEN")});Object.defineProperty(d,"CLOSING",{enumerable:!0,value:L.indexOf("CLOSING")});Object.defineProperty(d.prototype,"CLOSING",{enumerable:!0,value:L.indexOf("CLOSING")});Object.defineProperty(d,"CLOSED",{enumerable:!0,value:L.indexOf("CLOSED")});Object.defineProperty(d.prototype,"CLOSED",{enumerable:!0,value:L.indexOf("CLOSED")});["binaryType","bufferedAmount","extensions","isPaused","protocol","readyState","url"].forEach(t=>{Object.defineProperty(d.prototype,t,{enumerable:!0})});["open","error","close","message"].forEach(t=>{Object.defineProperty(d.prototype,`on${t}`,{enumerable:!0,get(){for(let e of this.listeners(t))if(e[De])return e[Yr];return null},set(e){for(let r of this.listeners(t))if(r[De]){this.removeListener(t,r);break}typeof e=="function"&&this.addEventListener(t,e,{[De]:!0})}})});d.prototype.addEventListener=Xr;d.prototype.removeEventListener=Zr;Dt.exports=d;function Lt(t,e,r,s){let i={allowSynchronousEvents:!0,autoPong:!0,protocolVersion:Me[1],maxPayload:104857600,skipUTF8Validation:!1,perMessageDeflate:!0,followRedirects:!1,maxRedirects:10,...s,socketPath:void 0,hostname:void 0,protocol:void 0,timeout:void 0,method:"GET",host:void 0,path:void 0,port:void 0};if(t._autoPong=i.autoPong,!Me.includes(i.protocolVersion))throw new RangeError(`Unsupported protocol version: ${i.protocolVersion} (supported versions: ${Me.join(", ")})`);let n;if(e instanceof Ue)n=e;else try{n=new Ue(e)}catch{throw new SyntaxError(`Invalid URL: ${e}`)}n.protocol==="http:"?n.protocol="ws:":n.protocol==="https:"&&(n.protocol="wss:"),t._url=n.href;let o=n.protocol==="wss:",f=n.protocol==="ws+unix:",l;if(n.protocol!=="ws:"&&!o&&!f?l=`The URL's protocol must be one of "ws:", "wss:", "http:", "https:", or "ws+unix:"`:f&&!n.pathname?l="The URL's pathname is empty":n.hash&&(l="The URL contains a fragment identifier"),l){let u=new SyntaxError(l);if(t._redirects===0)throw u;de(t,u);return}let a=o?443:80,c=qr(16).toString("base64"),h=o?Wr.request:Fr.request,_=new Set,g;if(i.createConnection=i.createConnection||(o?is:ss),i.defaultPort=i.defaultPort||a,i.port=n.port||a,i.host=n.hostname.startsWith("[")?n.hostname.slice(1,-1):n.hostname,i.headers={...i.headers,"Sec-WebSocket-Version":i.protocolVersion,"Sec-WebSocket-Key":c,Connection:"Upgrade",Upgrade:"websocket"},i.path=n.pathname+n.search,i.timeout=i.handshakeTimeout,i.perMessageDeflate&&(g=new B(i.perMessageDeflate!==!0?i.perMessageDeflate:{},!1,i.maxPayload),i.headers["Sec-WebSocket-Extensions"]=Jr({[B.extensionName]:g.offer()})),r.length){for(let u of r){if(typeof u!="string"||!rs.test(u)||_.has(u))throw new SyntaxError("An invalid or duplicated subprotocol was specified");_.add(u)}i.headers["Sec-WebSocket-Protocol"]=r.join(",")}if(i.origin&&(i.protocolVersion<13?i.headers["Sec-WebSocket-Origin"]=i.origin:i.headers.Origin=i.origin),(n.username||n.password)&&(i.auth=`${n.username}:${n.password}`),f){let u=i.path.split(":");i.socketPath=u[0],i.path=u[1]}let p;if(i.followRedirects){if(t._redirects===0){t._originalIpc=f,t._originalSecure=o,t._originalHostOrSocketPath=f?i.socketPath:n.host;let u=s&&s.headers;if(s={...s,headers:{}},u)for(let[S,A]of Object.entries(u))s.headers[S.toLowerCase()]=A}else if(t.listenerCount("redirect")===0){let u=f?t._originalIpc?i.socketPath===t._originalHostOrSocketPath:!1:t._originalIpc?!1:n.host===t._originalHostOrSocketPath;(!u||t._originalSecure&&!o)&&(delete i.headers.authorization,delete i.headers.cookie,u||delete i.headers.host,i.auth=void 0)}i.auth&&!s.headers.authorization&&(s.headers.authorization="Basic "+Buffer.from(i.auth).toString("base64")),p=t._req=h(i),t._redirects&&t.emit("redirect",t.url,p)}else p=t._req=h(i);i.timeout&&p.on("timeout",()=>{E(t,p,"Opening handshake has timed out")}),p.on("error",u=>{p===null||p[Nt]||(p=t._req=null,de(t,u))}),p.on("response",u=>{let S=u.headers.location,A=u.statusCode;if(S&&i.followRedirects&&A>=300&&A<400){if(++t._redirects>i.maxRedirects){E(t,p,"Maximum redirects exceeded");return}p.abort();let H;try{H=new Ue(S,e)}catch{let W=new SyntaxError(`Invalid URL: ${S}`);de(t,W);return}Lt(t,H,r,s)}else t.emit("unexpected-response",p,u)||E(t,p,`Unexpected server response: ${u.statusCode}`)}),p.on("upgrade",(u,S,A)=>{if(t.emit("upgrade",u),t.readyState!==d.CONNECTING)return;p=t._req=null;let H=u.headers.upgrade;if(H===void 0||H.toLowerCase()!=="websocket"){E(t,S,"Invalid Upgrade header");return}let qe=$r("sha1").update(c+Hr).digest("base64");if(u.headers["sec-websocket-accept"]!==qe){E(t,S,"Invalid Sec-WebSocket-Accept header");return}let W=u.headers["sec-websocket-protocol"],Y;if(W!==void 0?_.size?_.has(W)||(Y="Server sent an invalid subprotocol"):Y="Server sent a subprotocol but none was requested":_.size&&(Y="Server sent no subprotocol"),Y){E(t,S,Y);return}W&&(t._protocol=W);let $e=u.headers["sec-websocket-extensions"];if($e!==void 0){if(!g){E(t,S,"Server sent a Sec-WebSocket-Extensions header but no extension was requested");return}let ge;try{ge=Qr($e)}catch{E(t,S,"Invalid Sec-WebSocket-Extensions header");return}let je=Object.keys(ge);if(je.length!==1||je[0]!==B.extensionName){E(t,S,"Server indicated an extension that was not requested");return}try{g.accept(ge[B.extensionName])}catch{E(t,S,"Invalid Sec-WebSocket-Extensions header");return}t._extensions[B.extensionName]=g}t.setSocket(S,A,{allowSynchronousEvents:i.allowSynchronousEvents,generateMask:i.generateMask,maxPayload:i.maxPayload,skipUTF8Validation:i.skipUTF8Validation})}),i.finishRequest?i.finishRequest(p,t):p.end()}function de(t,e){t._readyState=d.CLOSING,t._errorEmitted=!0,t.emit("error",e),t.emitClose()}function ss(t){return t.path=t.socketPath,Tt.connect(t)}function is(t){return t.path=void 0,!t.servername&&t.servername!==""&&(t.servername=Tt.isIP(t.host)?"":t.host),Gr.connect(t)}function E(t,e,r){t._readyState=d.CLOSING;let s=new Error(r);Error.captureStackTrace(s,E),e.setHeader?(e[Nt]=!0,e.abort(),e.socket&&!e.socket.destroyed&&e.socket.destroy(),process.nextTick(de,t,s)):(e.destroy(s),e.once("error",t.emit.bind(t,"error")),e.once("close",t.emitClose.bind(t)))}function Ae(t,e,r){if(e){let s=zr(e)?e.size:es(e).length;t._socket?t._sender._bufferedBytes+=s:t._bufferedAmount+=s}if(r){let s=new Error(`WebSocket is not open: readyState ${t.readyState} (${L[t.readyState]})`);process.nextTick(r,s)}}function ns(t,e){let r=this[y];r._closeFrameReceived=!0,r._closeMessage=e,r._closeCode=t,r._socket[y]!==void 0&&(r._socket.removeListener("data",_e),process.nextTick(Pt,r._socket),t===1005?r.close():r.close(t,e))}function os(){let t=this[y];t.isPaused||t._socket.resume()}function as(t){let e=this[y];e._socket[y]!==void 0&&(e._socket.removeListener("data",_e),process.nextTick(Pt,e._socket),e.close(t[Kr])),e._errorEmitted||(e._errorEmitted=!0,e.emit("error",t))}function kt(){this[y].emitClose()}function fs(t,e){this[y].emit("message",t,e)}function ls(t){let e=this[y];e._autoPong&&e.pong(t,!this._isServer,Ct),e.emit("ping",t)}function cs(t){this[y].emit("pong",t)}function Pt(t){t.resume()}function hs(t){let e=this[y];e.readyState!==d.CLOSED&&(e.readyState===d.OPEN&&(e._readyState=d.CLOSING,Bt(e)),this._socket.end(),e._errorEmitted||(e._errorEmitted=!0,e.emit("error",t)))}function Bt(t){t._closeTimer=setTimeout(t._socket.destroy.bind(t._socket),ts)}function Rt(){let t=this[y];this.removeListener("close",Rt),this.removeListener("data",_e),this.removeListener("end",It),t._readyState=d.CLOSING;let e;!this._readableState.endEmitted&&!t._closeFrameReceived&&!t._receiver._writableState.errorEmitted&&(e=t._socket.read())!==null&&t._receiver.write(e),t._receiver.end(),this[y]=void 0,clearTimeout(t._closeTimer),t._receiver._writableState.finished||t._receiver._writableState.errorEmitted?t.emitClose():(t._receiver.on("error",kt),t._receiver.on("finish",kt))}function _e(t){this[y]._receiver.write(t)||this.pause()}function It(){let t=this[y];t._readyState=d.CLOSING,t._receiver.end(),this.end()}function Ut(){let t=this[y];this.removeListener("error",Ut),this.on("error",Ct),t&&(t._readyState=d.CLOSING,this.destroy())}});var Ft=x(($s,Wt)=>{"use strict";var qs=pe(),{Duplex:us}=m("stream");function Mt(t){t.emit("close")}function ds(){!this.destroyed&&this._writableState.finished&&this.destroy()}function At(t){this.removeListener("error",At),this.destroy(),this.listenerCount("error")===0&&this.emit("error",t)}function _s(t,e){let r=!0,s=new us({...e,autoDestroy:!1,emitClose:!1,objectMode:!1,writableObjectMode:!1});return t.on("message",function(n,o){let f=!o&&s._readableState.objectMode?n.toString():n;s.push(f)||t.pause()}),t.once("error",function(n){s.destroyed||(r=!1,s.destroy(n))}),t.once("close",function(){s.destroyed||s.push(null)}),s._destroy=function(i,n){if(t.readyState===t.CLOSED){n(i),process.nextTick(Mt,s);return}let o=!1;t.once("error",function(l){o=!0,n(l)}),t.once("close",function(){o||n(i),process.nextTick(Mt,s)}),r&&t.terminate()},s._final=function(i){if(t.readyState===t.CONNECTING){t.once("open",function(){s._final(i)});return}t._socket!==null&&(t._socket._writableState.finished?(i(),s._readableState.endEmitted&&s.destroy()):(t._socket.once("finish",function(){i()}),t.close()))},s._read=function(){t.isPaused&&t.resume()},s._write=function(i,n,o){if(t.readyState===t.CONNECTING){t.once("open",function(){s._write(i,n,o)});return}t.send(i,o)},s.on("end",ds),s.on("error",At),s}Wt.exports=_s});var qt=x((js,Gt)=>{"use strict";var{tokenChars:ps}=q();function ms(t){let e=new Set,r=-1,s=-1,i=0;for(i;i<t.length;i++){let o=t.charCodeAt(i);if(s===-1&&ps[o]===1)r===-1&&(r=i);else if(i!==0&&(o===32||o===9))s===-1&&r!==-1&&(s=i);else if(o===44){if(r===-1)throw new SyntaxError(`Unexpected character at index ${i}`);s===-1&&(s=i);let f=t.slice(r,s);if(e.has(f))throw new SyntaxError(`The "${f}" subprotocol is duplicated`);e.add(f),r=s=-1}else throw new SyntaxError(`Unexpected character at index ${i}`)}if(r===-1||s!==-1)throw new SyntaxError("Unexpected end of input");let n=t.slice(r,i);if(e.has(n))throw new SyntaxError(`The "${n}" subprotocol is duplicated`);return e.add(n),e}Gt.exports={parse:ms}});var Kt=x((zs,Yt)=>{"use strict";var gs=m("events"),me=m("http"),{Duplex:Vs}=m("stream"),{createHash:ys}=m("crypto"),$t=Ie(),D=J(),Ss=qt(),xs=pe(),{GUID:Es,kWebSocket:vs}=T(),bs=/^[+/0-9A-Za-z]{22}==$/,jt=0,Vt=1,Ht=2,We=class extends gs{constructor(e,r){if(super(),e={allowSynchronousEvents:!0,autoPong:!0,maxPayload:100*1024*1024,skipUTF8Validation:!1,perMessageDeflate:!1,handleProtocols:null,clientTracking:!0,verifyClient:null,noServer:!1,backlog:null,server:null,host:null,path:null,port:null,WebSocket:xs,...e},e.port==null&&!e.server&&!e.noServer||e.port!=null&&(e.server||e.noServer)||e.server&&e.noServer)throw new TypeError('One and only one of the "port", "server", or "noServer" options must be specified');if(e.port!=null?(this._server=me.createServer((s,i)=>{let n=me.STATUS_CODES[426];i.writeHead(426,{"Content-Length":n.length,"Content-Type":"text/plain"}),i.end(n)}),this._server.listen(e.port,e.host,e.backlog,r)):e.server&&(this._server=e.server),this._server){let s=this.emit.bind(this,"connection");this._removeListeners=ws(this._server,{listening:this.emit.bind(this,"listening"),error:this.emit.bind(this,"error"),upgrade:(i,n,o)=>{this.handleUpgrade(i,n,o,s)}})}e.perMessageDeflate===!0&&(e.perMessageDeflate={}),e.clientTracking&&(this.clients=new Set,this._shouldEmitClose=!1),this.options=e,this._state=jt}address(){if(this.options.noServer)throw new Error('The server is operating in "noServer" mode');return this._server?this._server.address():null}close(e){if(this._state===Ht){e&&this.once("close",()=>{e(new Error("The server is not running"))}),process.nextTick(re,this);return}if(e&&this.once("close",e),this._state!==Vt)if(this._state=Vt,this.options.noServer||this.options.server)this._server&&(this._removeListeners(),this._removeListeners=this._server=null),this.clients?this.clients.size?this._shouldEmitClose=!0:process.nextTick(re,this):process.nextTick(re,this);else{let r=this._server;this._removeListeners(),this._removeListeners=this._server=null,r.close(()=>{re(this)})}}shouldHandle(e){if(this.options.path){let r=e.url.indexOf("?");if((r!==-1?e.url.slice(0,r):e.url)!==this.options.path)return!1}return!0}handleUpgrade(e,r,s,i){r.on("error",zt);let n=e.headers["sec-websocket-key"],o=e.headers.upgrade,f=+e.headers["sec-websocket-version"];if(e.method!=="GET"){M(this,e,r,405,"Invalid HTTP method");return}if(o===void 0||o.toLowerCase()!=="websocket"){M(this,e,r,400,"Invalid Upgrade header");return}if(n===void 0||!bs.test(n)){M(this,e,r,400,"Missing or invalid Sec-WebSocket-Key header");return}if(f!==13&&f!==8){M(this,e,r,400,"Missing or invalid Sec-WebSocket-Version header",{"Sec-WebSocket-Version":"13, 8"});return}if(!this.shouldHandle(e)){se(r,400);return}let l=e.headers["sec-websocket-protocol"],a=new Set;if(l!==void 0)try{a=Ss.parse(l)}catch{M(this,e,r,400,"Invalid Sec-WebSocket-Protocol header");return}let c=e.headers["sec-websocket-extensions"],h={};if(this.options.perMessageDeflate&&c!==void 0){let _=new D(this.options.perMessageDeflate,!0,this.options.maxPayload);try{let g=$t.parse(c);g[D.extensionName]&&(_.accept(g[D.extensionName]),h[D.extensionName]=_)}catch{M(this,e,r,400,"Invalid or unacceptable Sec-WebSocket-Extensions header");return}}if(this.options.verifyClient){let _={origin:e.headers[`${f===8?"sec-websocket-origin":"origin"}`],secure:!!(e.socket.authorized||e.socket.encrypted),req:e};if(this.options.verifyClient.length===2){this.options.verifyClient(_,(g,p,u,S)=>{if(!g)return se(r,p||401,u,S);this.completeUpgrade(h,n,a,e,r,s,i)});return}if(!this.options.verifyClient(_))return se(r,401)}this.completeUpgrade(h,n,a,e,r,s,i)}completeUpgrade(e,r,s,i,n,o,f){if(!n.readable||!n.writable)return n.destroy();if(n[vs])throw new Error("server.handleUpgrade() was called more than once with the same socket, possibly due to a misconfiguration");if(this._state>jt)return se(n,503);let a=["HTTP/1.1 101 Switching Protocols","Upgrade: websocket","Connection: Upgrade",`Sec-WebSocket-Accept: ${ys("sha1").update(r+Es).digest("base64")}`],c=new this.options.WebSocket(null,void 0,this.options);if(s.size){let h=this.options.handleProtocols?this.options.handleProtocols(s,i):s.values().next().value;h&&(a.push(`Sec-WebSocket-Protocol: ${h}`),c._protocol=h)}if(e[D.extensionName]){let h=e[D.extensionName].params,_=$t.format({[D.extensionName]:[h]});a.push(`Sec-WebSocket-Extensions: ${_}`),c._extensions=e}this.emit("headers",a,i),n.write(a.concat(`\r
|
|
2
2
|
`).join(`\r
|
|
3
3
|
`)),n.removeListener("error",zt),c.setSocket(n,o,{allowSynchronousEvents:this.options.allowSynchronousEvents,maxPayload:this.options.maxPayload,skipUTF8Validation:this.options.skipUTF8Validation}),this.clients&&(this.clients.add(c),c.on("close",()=>{this.clients.delete(c),this._shouldEmitClose&&!this.clients.size&&process.nextTick(re,this)})),f(c,i)}};Yt.exports=We;function ws(t,e){for(let r of Object.keys(e))t.on(r,e[r]);return function(){for(let s of Object.keys(e))t.removeListener(s,e[s])}}function re(t){t._state=Ht,t.emit("close")}function zt(){this.destroy()}function se(t,e,r,s){r=r||me.STATUS_CODES[e],s={Connection:"close","Content-Type":"text/html","Content-Length":Buffer.byteLength(r),...s},t.once("finish",t.destroy),t.end(`HTTP/1.1 ${e} ${me.STATUS_CODES[e]}\r
|
|
4
4
|
`+Object.keys(s).map(i=>`${i}: ${s[i]}`).join(`\r
|
|
5
5
|
`)+`\r
|
|
6
6
|
\r
|
|
7
|
-
`+r)}function M(t,e,r,s,i){if(t.listenerCount("wsClientError")){let
|
|
7
|
+
`+r)}function M(t,e,r,s,i,n){if(t.listenerCount("wsClientError")){let o=new Error(i);Error.captureStackTrace(o,M),t.emit("wsClientError",o,r,e)}else se(r,s,i,n)}});import k from"node:process";var Os=K(Ft(),1),ks=K(Ne(),1),Ts=K(Be(),1),Xt=K(pe(),1),Zt=K(Kt(),1);var Jt=Xt.default;function Qt({merkurConfig:t}){let{protocol:e,host:r}=t.socketServer;return new Jt(`${e}//${r}`)}var Fe,Ge;function Js(){return k.env.CLI_CONFIG&&!Fe&&(Fe=JSON.parse(k.env.CLI_CONFIG)),k.env.MERKUR_CONFIG&&!Ge&&(Ge=JSON.parse(k.env.MERKUR_CONFIG)),{merkurConfig:Ge,cliConfig:Fe}}function Qs({merkurConfig:t,cliConfig:e}){function r(){let s=Qt({merkurConfig:t});s.on("error",i=>{console.error(i),s.terminate()}),s.on("open",function(){setTimeout(()=>{s.send(JSON.stringify({to:"browser",command:"reload",changed:[],errors:[]})),s.terminate()},50)})}if(e.watch){r();let s=()=>k.exit(0);k.on("SIGINT",s),k.on("SIGQUIT",s),k.on("SIGTERM",s),k.on("uncaughtException",()=>{r()}),k.on("unhandledRejection",()=>{r()})}}export{Qs as autoReload,Js as resolveConfig};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@merkur/cli",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.40.0",
|
|
4
4
|
"description": "Merkur is tiny and extensible library for creating front-end microservices.",
|
|
5
5
|
"bin": {
|
|
6
6
|
"merkur": "./bin/merkur.mjs"
|
|
@@ -19,7 +19,6 @@
|
|
|
19
19
|
},
|
|
20
20
|
"scripts": {
|
|
21
21
|
"build": "node ./scripts/build.mjs",
|
|
22
|
-
"prepare": "npm run build",
|
|
23
22
|
"dev": "node ./scripts/build.mjs --watch"
|
|
24
23
|
},
|
|
25
24
|
"repository": {
|
|
@@ -48,24 +47,22 @@
|
|
|
48
47
|
"@esmj/emitter": "^0.4.3",
|
|
49
48
|
"@esmj/observable": "^0.2.1",
|
|
50
49
|
"@types/cors": "^2.8.19",
|
|
51
|
-
"chalk": "^5.
|
|
52
|
-
"commander": "^14.0.
|
|
53
|
-
"compression": "^1.8.
|
|
50
|
+
"chalk": "^5.6.2",
|
|
51
|
+
"commander": "^14.0.2",
|
|
52
|
+
"compression": "^1.8.1",
|
|
54
53
|
"ejs": "^3.1.10",
|
|
55
|
-
"esbuild": "^0.25.
|
|
54
|
+
"esbuild": "^0.25.11",
|
|
56
55
|
"esbuild-plugin-manifest": "^1.0.5",
|
|
57
56
|
"express": "^5.1.0",
|
|
58
57
|
"npm-run-path": "^6.0.0",
|
|
59
|
-
"ws": "^8.18.
|
|
58
|
+
"ws": "^8.18.3"
|
|
60
59
|
},
|
|
61
60
|
"devDependencies": {
|
|
62
|
-
"@
|
|
63
|
-
|
|
64
|
-
"peerDependencies": {
|
|
65
|
-
"@merkur/tools": "*"
|
|
61
|
+
"@merkur/core": "^0.40.0",
|
|
62
|
+
"@types/express": "^5.0.4"
|
|
66
63
|
},
|
|
67
64
|
"engines": {
|
|
68
65
|
"node": ">=20"
|
|
69
66
|
},
|
|
70
|
-
"gitHead": "
|
|
67
|
+
"gitHead": "a7bf45d46a5c0fca7130ae6a86e1cd94e5894ca2"
|
|
71
68
|
}
|
package/src/devClient/hmr.mjs
CHANGED
|
@@ -3,7 +3,9 @@ export async function hmr({ to, command, changed }) {
|
|
|
3
3
|
await Promise.all(
|
|
4
4
|
changed.map(async (asset) => {
|
|
5
5
|
return new Promise((resolve) => {
|
|
6
|
-
const element = document.querySelector(
|
|
6
|
+
const element = document.querySelector(
|
|
7
|
+
`[data-merkur-asset-name="${asset.name}"]`,
|
|
8
|
+
);
|
|
7
9
|
|
|
8
10
|
if (!element || element.nodeName === 'STYLE') {
|
|
9
11
|
location.reload();
|
|
@@ -33,7 +35,7 @@ export async function hmr({ to, command, changed }) {
|
|
|
33
35
|
if (element.nodeName === 'SCRIPT') {
|
|
34
36
|
const url = new URL(element.src);
|
|
35
37
|
newElement = document.createElement('script');
|
|
36
|
-
newElement.setAttribute('data-name', asset.name);
|
|
38
|
+
newElement.setAttribute('data-merkur-asset-name', asset.name);
|
|
37
39
|
newElement.onload = () => {
|
|
38
40
|
element.remove();
|
|
39
41
|
resolve();
|
package/src/devClient/index.mjs
CHANGED
|
@@ -1,8 +1,11 @@
|
|
|
1
|
+
import { createMerkur } from '@merkur/core';
|
|
2
|
+
|
|
1
3
|
import { WebSocketClient } from './WebSocketClient.mjs';
|
|
2
4
|
|
|
3
5
|
import { reload } from './reload.mjs';
|
|
4
6
|
import { hmr } from './hmr.mjs';
|
|
5
7
|
|
|
8
|
+
const MERKUR_CREATE_ORIGINAL = Symbol('MERKUR_CREATE_ORIGINAL');
|
|
6
9
|
const { __merkur_dev__ } = window;
|
|
7
10
|
|
|
8
11
|
const webSocket = new WebSocketClient(__merkur_dev__.merkurConfig.socketServer);
|
|
@@ -14,9 +17,24 @@ webSocket.init();
|
|
|
14
17
|
webSocket.subscribe(reload);
|
|
15
18
|
webSocket.subscribe(hmr);
|
|
16
19
|
|
|
17
|
-
|
|
18
|
-
|
|
20
|
+
if (window?.__merkur__?.create) {
|
|
21
|
+
const originalMerkurCreate = window.__merkur__.create;
|
|
22
|
+
window.__merkur__.create = async function devClientHook(...rest) {
|
|
23
|
+
const widget = await originalMerkurCreate(...rest);
|
|
24
|
+
|
|
25
|
+
__merkur_dev__.widgets.push(widget);
|
|
26
|
+
|
|
27
|
+
return widget;
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
function hookMerkurCreate() {
|
|
32
|
+
if (
|
|
33
|
+
window?.__merkur__?.create &&
|
|
34
|
+
!window.__merkur__.create[MERKUR_CREATE_ORIGINAL]
|
|
35
|
+
) {
|
|
19
36
|
const originalMerkurCreate = window.__merkur__.create;
|
|
37
|
+
|
|
20
38
|
window.__merkur__.create = async function devClientHook(...rest) {
|
|
21
39
|
const widget = await originalMerkurCreate(...rest);
|
|
22
40
|
|
|
@@ -24,5 +42,9 @@ addEventListener('load', function hookMerkurCreate() {
|
|
|
24
42
|
|
|
25
43
|
return widget;
|
|
26
44
|
};
|
|
45
|
+
|
|
46
|
+
window.__merkur__.create[MERKUR_CREATE_ORIGINAL] = originalMerkurCreate;
|
|
27
47
|
}
|
|
28
|
-
}
|
|
48
|
+
}
|
|
49
|
+
createMerkur();
|
|
50
|
+
hookMerkurCreate();
|
package/src/devServer.mjs
CHANGED
|
@@ -48,6 +48,26 @@ export async function runDevServer({ context, merkurConfig, cliConfig }) {
|
|
|
48
48
|
next();
|
|
49
49
|
})
|
|
50
50
|
.use(compression())
|
|
51
|
+
.get('/__dev__/js/merkurDevClient.js', (req, res) => {
|
|
52
|
+
const script = fs.readFileSync(
|
|
53
|
+
path.resolve(`${cliFolder}/../lib/devClient.mjs`),
|
|
54
|
+
'utf8',
|
|
55
|
+
);
|
|
56
|
+
const globalDevEnv = `
|
|
57
|
+
window.__merkur_dev__ = window.__merkur_dev__ || {};
|
|
58
|
+
window.__merkur_dev__.merkurConfig = {};
|
|
59
|
+
window.__merkur_dev__.merkurConfig.socketServer = ${escapeToJSON(merkurConfig.socketServer)};
|
|
60
|
+
window.__merkur_dev__.assets = [];
|
|
61
|
+
window.__merkur_dev__.widgetProperties = {};
|
|
62
|
+
`;
|
|
63
|
+
|
|
64
|
+
if (script && command === COMMAND_NAME.DEV) {
|
|
65
|
+
res.set('Content-Type', 'application/javascript');
|
|
66
|
+
res.status(200).send(globalDevEnv + script);
|
|
67
|
+
} else {
|
|
68
|
+
res.status(404).send('MerkurDevClient not found.');
|
|
69
|
+
}
|
|
70
|
+
})
|
|
51
71
|
.get(
|
|
52
72
|
playgroundPath,
|
|
53
73
|
asyncMiddleware(async (req, res) => {
|
package/src/merkurConfig.mjs
CHANGED
|
@@ -104,13 +104,22 @@ emitter.on(
|
|
|
104
104
|
metafile: false,
|
|
105
105
|
},
|
|
106
106
|
},
|
|
107
|
+
es15: {
|
|
108
|
+
name: 'es15',
|
|
109
|
+
folder: 'es15',
|
|
110
|
+
build: {
|
|
111
|
+
platform: 'browser',
|
|
112
|
+
outdir: path.resolve(`${staticFolder}/es15`),
|
|
113
|
+
plugins: [devPlugin],
|
|
114
|
+
},
|
|
115
|
+
},
|
|
107
116
|
es13: {
|
|
108
117
|
name: 'es13',
|
|
109
118
|
folder: 'es13',
|
|
110
119
|
build: {
|
|
111
120
|
platform: 'browser',
|
|
112
121
|
outdir: path.resolve(`${staticFolder}/es13`),
|
|
113
|
-
|
|
122
|
+
target: 'es2022',
|
|
114
123
|
},
|
|
115
124
|
},
|
|
116
125
|
es9: {
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import crypto from 'node:crypto';
|
|
1
2
|
import fs from 'node:fs';
|
|
2
3
|
|
|
3
4
|
import chalk from 'chalk';
|
|
@@ -7,6 +8,12 @@ import { createClient } from '../websocket.mjs';
|
|
|
7
8
|
import { createLogger } from '../logger.mjs';
|
|
8
9
|
import { COMMAND_NAME } from '../commands/constant.mjs';
|
|
9
10
|
|
|
11
|
+
function getFileHash(filePath) {
|
|
12
|
+
const fileContent = fs.readFileSync(filePath, 'utf-8');
|
|
13
|
+
|
|
14
|
+
return crypto.createHash('md5').update(fileContent).digest('hex');
|
|
15
|
+
}
|
|
16
|
+
|
|
10
17
|
export function devPlugin({ definition, merkurConfig, cliConfig }) {
|
|
11
18
|
const logger = createLogger('devPlugin', cliConfig);
|
|
12
19
|
const { projectFolder, buildFolder } = cliConfig;
|
|
@@ -44,8 +51,15 @@ export function devPlugin({ definition, merkurConfig, cliConfig }) {
|
|
|
44
51
|
};
|
|
45
52
|
});
|
|
46
53
|
|
|
54
|
+
const outputFiles =
|
|
55
|
+
result?.outputFiles ??
|
|
56
|
+
Object.keys(result?.metafile?.outputs || {}).map((key) => ({
|
|
57
|
+
path: key,
|
|
58
|
+
hash: getFileHash(key),
|
|
59
|
+
}));
|
|
60
|
+
|
|
47
61
|
changed =
|
|
48
|
-
|
|
62
|
+
outputFiles?.reduce((changed, file) => {
|
|
49
63
|
const name = file.path
|
|
50
64
|
.replace(projectFolder, '')
|
|
51
65
|
.replace(buildFolder, '')
|
package/src/runBuild.mjs
CHANGED
|
@@ -7,7 +7,7 @@ export async function runBuild({ cliConfig, build, config }) {
|
|
|
7
7
|
const logger = createLogger(undefined, cliConfig);
|
|
8
8
|
const { watch } = cliConfig;
|
|
9
9
|
|
|
10
|
-
//es6 === es2015, es9 === es2018, es11 === es2020 es13 ===es2022
|
|
10
|
+
//es6 === es2015, es9 === es2018, es11 === es2020, es13 ===es2022, es15 === es2024
|
|
11
11
|
try {
|
|
12
12
|
const result = await (watch
|
|
13
13
|
? esbuild.context(build)
|
package/src/templates/head.ejs
CHANGED
|
@@ -7,33 +7,33 @@
|
|
|
7
7
|
</script>
|
|
8
8
|
<% assets.forEach((asset)=> { %>
|
|
9
9
|
<%if (asset.type==='stylesheet' ) { %>
|
|
10
|
-
<link rel='stylesheet' href='<%= asset.source %>' data-name="<%= asset.name %>" />
|
|
10
|
+
<link rel='stylesheet' href='<%= asset.source %>' data-merkur-asset-name="<%= asset.name %>" />
|
|
11
11
|
<% } %>
|
|
12
12
|
<%if (asset.type==='inlineStyle' ) { %>
|
|
13
|
-
<style data-name="<%= asset.name %>">
|
|
13
|
+
<style data-merkur-asset-name="<%= asset.name %>">
|
|
14
14
|
<%- asset.source %>
|
|
15
15
|
</style>
|
|
16
16
|
<% } %>
|
|
17
17
|
|
|
18
18
|
<%if (asset.type==='script' ) { %>
|
|
19
19
|
<%if (typeof asset.source==='string' ) { %>
|
|
20
|
-
<script src='<%= asset.source %>' defer=
|
|
20
|
+
<script src='<%= asset.source %>' <%- asset.module ? 'type="module"' : 'defer="true"' %> data-merkur-asset-name="<%= asset.name %>"></script>
|
|
21
21
|
<% } %>
|
|
22
22
|
<%if (typeof asset.source==='object' ) { %>
|
|
23
|
-
<script src='<%= asset.source.
|
|
23
|
+
<script src='<%= asset.source.es15 %>' <%- asset.module ? 'type="module"' : 'defer="true"' %> data-merkur-asset-name="<%= asset.name %>"></script>
|
|
24
24
|
<% } %>
|
|
25
25
|
<% } %>
|
|
26
26
|
|
|
27
27
|
<%if (asset.type==='inlineScript' ) { %>
|
|
28
28
|
<%if (typeof asset.source==='string' ) { %>
|
|
29
|
-
<script data-name="<%= asset.name %>">
|
|
29
|
+
<script data-merkur-asset-name="<%= asset.name %>">
|
|
30
30
|
<%- asset.source %>
|
|
31
31
|
</script>
|
|
32
32
|
<% } %>
|
|
33
33
|
<%if (typeof asset.source==='object' ) { %>
|
|
34
|
-
<script data-name="<%= asset.name %>">
|
|
34
|
+
<script data-merkur-asset-name="<%= asset.name %>">
|
|
35
35
|
<%- asset.source %>
|
|
36
36
|
</script>
|
|
37
37
|
<% } %>
|
|
38
38
|
<% } %>
|
|
39
|
-
<% }); %>
|
|
39
|
+
<% }); %>
|
package/types.d.ts
CHANGED
|
@@ -30,8 +30,8 @@ export type Extend =
|
|
|
30
30
|
| undefined;
|
|
31
31
|
|
|
32
32
|
export interface Task {
|
|
33
|
-
name: 'es13' | 'es9' | 'node' | string;
|
|
34
|
-
folder: 'es13' | 'es9' | string;
|
|
33
|
+
name: 'es15' | 'es13' | 'es9' | 'node' | string;
|
|
34
|
+
folder: 'es15' | 'es13' | 'es9' | string;
|
|
35
35
|
build: BuildOptions;
|
|
36
36
|
[key: string]: any;
|
|
37
37
|
}
|