@lehnihon/bit-form 2.2.14 → 2.2.15

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 CHANGED
@@ -183,6 +183,7 @@ The complete documentation is available in the `/docs` folder. Explore the guide
183
183
 
184
184
  - **[React](./docs/frameworks/react.md)**: Using hooks and Context Provider.
185
185
  - **[Next.js](./docs/frameworks/next.md)**: Using Bit-Form in App Router/Pages Router with client boundaries (`"use client"`).
186
+ - **[React + native HTML](./docs/frameworks/react-html.md)**: Generate form wrappers with `bit-form add html` (Input, Textarea, Select, Checkbox, RadioGroup).
186
187
  - **[React + shadcn/ui](./docs/frameworks/react-shadcn.md)**: Generate form wrappers with `bit-form add shadcn` (Input, Textarea, Select, Checkbox, Switch, RadioGroup).
187
188
  - **[React Native](./docs/frameworks/react-native.md)**: Mobile specifics and `onChangeText` mapping.
188
189
  - **[Vue](./docs/frameworks/vue.md)**: Using composables and InjectionKeys.
@@ -227,7 +228,7 @@ The complete documentation is available in the `/docs` folder. Explore the guide
227
228
  - **[DevTools Overview](./docs/devtools/index.md)**: Configuration (`devTools: true` or `{ mode: "remote" }`).
228
229
  - **[Floating Panel](./docs/devtools/floating-panel.md)**: In-app inspector (local mode).
229
230
  - **[CLI & Remote Dashboard](./docs/devtools/cli-remote-dashboard.md)**: `bit-form devtools` + WebSocket for React Native / remote debugging.
230
- - **CLI `add`**: Generate Bit-Form + shadcn/ui wrappers with `bit-form add shadcn [input|textarea|select|checkbox|switch|radio-group]` — see [React + shadcn](./docs/frameworks/react-shadcn.md).
231
+ - **CLI `add`**: Generate Bit-Form wrappers with `bit-form add shadcn [input|textarea|select|checkbox|switch|radio-group]` or `bit-form add html [input|textarea|select|checkbox|radio-group]` — see [React + shadcn](./docs/frameworks/react-shadcn.md) and [React + native HTML](./docs/frameworks/react-html.md).
231
232
 
232
233
  ### 📑 Reference
233
234
 
@@ -1,97 +1,303 @@
1
1
  #!/usr/bin/env node
2
- "use strict";var yr=Object.create;var Ke=Object.defineProperty;var xr=Object.getOwnPropertyDescriptor;var vr=Object.getOwnPropertyNames;var Sr=Object.getPrototypeOf,br=Object.prototype.hasOwnProperty;var x=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports);var Er=(t,e,r,s)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of vr(e))!br.call(t,i)&&i!==r&&Ke(t,i,{get:()=>e[i],enumerable:!(s=xr(e,i))||s.enumerable});return t};var w=(t,e,r)=>(r=t!=null?yr(Sr(t)):{},Er(e||!t||!t.__esModule?Ke(r,"default",{value:t,enumerable:!0}):r,t));var k=x((Qs,Qe)=>{"use strict";var Ze=["nodebuffer","arraybuffer","fragments"],Je=typeof Blob<"u";Je&&Ze.push("blob");Qe.exports={BINARY_TYPES:Ze,CLOSE_TIMEOUT:3e4,EMPTY_BUFFER:Buffer.alloc(0),GUID:"258EAFA5-E914-47DA-95CA-C5AB0DC85B11",hasBlob:Je,kForOnEventAttribute:Symbol("kIsForOnEventAttribute"),kListener:Symbol("kListener"),kStatusCode:Symbol("status-code"),kWebSocket:Symbol("websocket"),NOOP:()=>{}}});var Z=x((ei,oe)=>{"use strict";var{EMPTY_BUFFER:wr}=k(),Se=Buffer[Symbol.species];function Tr(t,e){if(t.length===0)return wr;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 et(t,e,r,s,i){for(let n=0;n<i;n++)r[s+n]=t[n]^e[n&3]}function tt(t,e){for(let r=0;r<t.length;r++)t[r]^=e[r&3]}function kr(t){return t.length===t.buffer.byteLength?t.buffer:t.buffer.slice(t.byteOffset,t.byteOffset+t.length)}function be(t){if(be.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),be.readOnly=!1),e}oe.exports={concat:Tr,mask:et,toArrayBuffer:kr,toBuffer:be,unmask:tt};if(!process.env.WS_NO_BUFFER_UTIL)try{let t=require("bufferutil");oe.exports.mask=function(e,r,s,i,n){n<48?et(e,r,s,i,n):t.mask(e,r,s,i,n)},oe.exports.unmask=function(e,r){e.length<32?tt(e,r):t.unmask(e,r)}}catch{}});var it=x((ti,st)=>{"use strict";var rt=Symbol("kDone"),Ee=Symbol("kRun"),we=class{constructor(e){this[rt]=()=>{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[rt])}}};st.exports=we});var Q=x((ri,lt)=>{"use strict";var J=require("zlib"),nt=Z(),Nr=it(),{kStatusCode:ot}=k(),Or=Buffer[Symbol.species],Cr=Buffer.from([0,0,255,255]),le=Symbol("permessage-deflate"),N=Symbol("total-length"),W=Symbol("callback"),P=Symbol("buffers"),q=Symbol("error"),ae,Te=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,!ae){let i=this._options.concurrencyLimit!==void 0?this._options.concurrencyLimit:10;ae=new Nr(i)}}static get extensionName(){return"permessage-deflate"}offer(){let e={};return this._options.serverNoContextTakeover&&(e.server_no_context_takeover=!0),this._options.clientNoContextTakeover&&(e.client_no_context_takeover=!0),this._options.serverMaxWindowBits&&(e.server_max_window_bits=this._options.serverMaxWindowBits),this._options.clientMaxWindowBits?e.client_max_window_bits=this._options.clientMaxWindowBits:this._options.clientMaxWindowBits==null&&(e.client_max_window_bits=!0),e}accept(e){return e=this.normalizeParams(e),this.params=this._isServer?this.acceptAsServer(e):this.acceptAsClient(e),this.params}cleanup(){if(this._inflate&&(this._inflate.close(),this._inflate=null),this._deflate){let e=this._deflate[W];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){ae.add(i=>{this._decompress(e,r,(n,o)=>{i(),s(n,o)})})}compress(e,r,s){ae.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"?J.Z_DEFAULT_WINDOWBITS:this.params[n];this._inflate=J.createInflateRaw({...this._options.zlibInflateOptions,windowBits:o}),this._inflate[le]=this,this._inflate[N]=0,this._inflate[P]=[],this._inflate.on("error",Br),this._inflate.on("data",at)}this._inflate[W]=s,this._inflate.write(e),r&&this._inflate.write(Cr),this._inflate.flush(()=>{let n=this._inflate[q];if(n){this._inflate.close(),this._inflate=null,s(n);return}let o=nt.concat(this._inflate[P],this._inflate[N]);this._inflate._readableState.endEmitted?(this._inflate.close(),this._inflate=null):(this._inflate[N]=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"?J.Z_DEFAULT_WINDOWBITS:this.params[n];this._deflate=J.createDeflateRaw({...this._options.zlibDeflateOptions,windowBits:o}),this._deflate[N]=0,this._deflate[P]=[],this._deflate.on("data",Pr)}this._deflate[W]=s,this._deflate.write(e),this._deflate.flush(J.Z_SYNC_FLUSH,()=>{if(!this._deflate)return;let n=nt.concat(this._deflate[P],this._deflate[N]);r&&(n=new Or(n.buffer,n.byteOffset,n.length-4)),this._deflate[W]=null,this._deflate[N]=0,this._deflate[P]=[],r&&this.params[`${i}_no_context_takeover`]&&this._deflate.reset(),s(null,n)})}};lt.exports=Te;function Pr(t){this[P].push(t),this[N]+=t.length}function at(t){if(this[N]+=t.length,this[le]._maxPayload<1||this[N]<=this[le]._maxPayload){this[P].push(t);return}this[q]=new RangeError("Max payload size exceeded"),this[q].code="WS_ERR_UNSUPPORTED_MESSAGE_LENGTH",this[q][ot]=1009,this.removeListener("data",at),this.reset()}function Br(t){if(this[le]._inflate=null,this[q]){this[W](this[q]);return}t[ot]=1007,this[W](t)}});var V=x((si,ce)=>{"use strict";var{isUtf8:ct}=require("buffer"),{hasBlob:Lr}=k(),Rr=[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 Dr(t){return t>=1e3&&t<=1014&&t!==1004&&t!==1005&&t!==1006||t>=3e3&&t<=4999}function ke(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 Ir(t){return Lr&&typeof t=="object"&&typeof t.arrayBuffer=="function"&&typeof t.type=="string"&&typeof t.stream=="function"&&(t[Symbol.toStringTag]==="Blob"||t[Symbol.toStringTag]==="File")}ce.exports={isBlob:Ir,isValidStatusCode:Dr,isValidUTF8:ke,tokenChars:Rr};if(ct)ce.exports.isValidUTF8=function(t){return t.length<24?ke(t):ct(t)};else if(!process.env.WS_NO_UTF_8_VALIDATE)try{let t=require("utf-8-validate");ce.exports.isValidUTF8=function(e){return e.length<32?ke(e):t(e)}}catch{}});var Be=x((ii,_t)=>{"use strict";var{Writable:Fr}=require("stream"),dt=Q(),{BINARY_TYPES:Ur,EMPTY_BUFFER:ft,kStatusCode:Ar,kWebSocket:Mr}=k(),{concat:Ne,toArrayBuffer:Wr,unmask:qr}=Z(),{isValidStatusCode:Vr,isValidUTF8:ht}=V(),de=Buffer[Symbol.species],S=0,ut=1,pt=2,mt=3,Oe=4,Ce=5,fe=6,Pe=class extends Fr{constructor(e={}){super(),this._allowSynchronousEvents=e.allowSynchronousEvents!==void 0?e.allowSynchronousEvents:!0,this._binaryType=e.binaryType||Ur[0],this._extensions=e.extensions||{},this._isServer=!!e.isServer,this._maxPayload=e.maxPayload|0,this._skipUTF8Validation=!!e.skipUTF8Validation,this[Mr]=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=S}_write(e,r,s){if(this._opcode===8&&this._state==S)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 de(s.buffer,s.byteOffset+e,s.length-e),new de(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 de(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 S:this.getInfo(e);break;case ut:this.getPayloadLength16(e);break;case pt:this.getPayloadLength64(e);break;case mt:this.getMask();break;case Oe:this.getData(e);break;case Ce:case fe: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[dt.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=ut:this._payloadLength===127?this._state=pt: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=mt:this._state=Oe}getMask(){if(this._bufferedBytes<4){this._loop=!1;return}this._mask=this.consume(4),this._state=Oe}getData(e){let r=ft;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&&qr(r,this._mask)}if(this._opcode>7){this.controlMessage(r,e);return}if(this._compressed){this._state=Ce,this.decompress(r,e);return}r.length&&(this._messageLength=this._totalPayloadLength,this._fragments.push(r)),this.dataMessage(e)}decompress(e,r){this._extensions[dt.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===S&&this.startLoop(r)})}dataMessage(e){if(!this._fin){this._state=S;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=Ne(s,r):this._binaryType==="arraybuffer"?i=Wr(Ne(s,r)):this._binaryType==="blob"?i=new Blob(s):i=s,this._allowSynchronousEvents?(this.emit("message",i,!0),this._state=S):(this._state=fe,setImmediate(()=>{this.emit("message",i,!0),this._state=S,this.startLoop(e)}))}else{let i=Ne(s,r);if(!this._skipUTF8Validation&&!ht(i)){let n=this.createError(Error,"invalid UTF-8 sequence",!0,1007,"WS_ERR_INVALID_UTF8");e(n);return}this._state===Ce||this._allowSynchronousEvents?(this.emit("message",i,!1),this._state=S):(this._state=fe,setImmediate(()=>{this.emit("message",i,!1),this._state=S,this.startLoop(e)}))}}controlMessage(e,r){if(this._opcode===8){if(e.length===0)this._loop=!1,this.emit("conclude",1005,ft),this.end();else{let s=e.readUInt16BE(0);if(!Vr(s)){let n=this.createError(RangeError,`invalid status code ${s}`,!0,1002,"WS_ERR_INVALID_CLOSE_CODE");r(n);return}let i=new de(e.buffer,e.byteOffset+2,e.length-2);if(!this._skipUTF8Validation&&!ht(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=S;return}this._allowSynchronousEvents?(this.emit(this._opcode===9?"ping":"pong",e),this._state=S):(this._state=fe,setImmediate(()=>{this.emit(this._opcode===9?"ping":"pong",e),this._state=S,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[Ar]=i,o}};_t.exports=Pe});var De=x((oi,xt)=>{"use strict";var{Duplex:ni}=require("stream"),{randomFillSync:$r}=require("crypto"),gt=Q(),{EMPTY_BUFFER:Gr,kWebSocket:jr,NOOP:Hr}=k(),{isBlob:$,isValidStatusCode:zr}=V(),{mask:yt,toBuffer:R}=Z(),b=Symbol("kByteLength"),Yr=Buffer.alloc(4),he=8*1024,D,G=he,E=0,Kr=1,Xr=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=E,this.onerror=Hr,this[jr]=void 0}static frame(e,r){let s,i=!1,n=2,o=!1;r.mask&&(s=r.maskBuffer||Yr,r.generateMask?r.generateMask(s):(G===he&&(D===void 0&&(D=Buffer.alloc(he)),$r(D,0,he),G=0),s[0]=D[G++],s[1]=D[G++],s[2]=D[G++],s[3]=D[G++]),o=(s[0]|s[1]|s[2]|s[3])===0,n=6);let l;typeof e=="string"?(!r.mask||o)&&r[b]!==void 0?l=r[b]:(e=Buffer.from(e),l=e.length):(l=e.length,i=r.mask&&r.readOnly&&!o);let c=l;l>=65536?(n+=8,c=127):l>125&&(n+=2,c=126);let a=Buffer.allocUnsafe(i?l+n:n);return a[0]=r.fin?r.opcode|128:r.opcode,r.rsv1&&(a[0]|=64),a[1]=c,c===126?a.writeUInt16BE(l,2):c===127&&(a[2]=a[3]=0,a.writeUIntBE(l,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?(yt(e,s,a,n,l),[a]):(yt(e,s,e,0,l),[a,e])):[a,e]}close(e,r,s,i){let n;if(e===void 0)n=Gr;else{if(typeof e!="number"||!zr(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 l=Buffer.byteLength(r);if(l>123)throw new RangeError("The message must not be greater than 123 bytes");n=Buffer.allocUnsafe(2+l),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!==E?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!==E?this.enqueue([this.getBlobData,e,!1,o,s]):this.getBlobData(e,!1,o,s):this._state!==E?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!==E?this.enqueue([this.getBlobData,e,!1,o,s]):this.getBlobData(e,!1,o,s):this._state!==E?this.enqueue([this.dispatch,e,!1,o,s]):this.sendFrame(t.frame(e,o),s)}send(e,r,s){let i=this._extensions[gt.extensionName],n=r.binary?2:1,o=r.compress,l,c;typeof e=="string"?(l=Buffer.byteLength(e),c=!1):$(e)?(l=e.size,c=!1):(e=R(e),l=e.length,c=R.readOnly),this._firstFragment?(this._firstFragment=!1,o&&i&&i.params[i._isServer?"server_no_context_takeover":"client_no_context_takeover"]&&(o=l>=i._threshold),this._compress=o):(o=!1,n=0),r.fin&&(this._firstFragment=!0);let a={[b]:l,fin:r.fin,generateMask:this._generateMask,mask:r.mask,maskBuffer:this._maskBuffer,opcode:n,readOnly:c,rsv1:o};$(e)?this._state!==E?this.enqueue([this.getBlobData,e,this._compress,a,s]):this.getBlobData(e,this._compress,a,s):this._state!==E?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=Xr,e.arrayBuffer().then(n=>{if(this._socket.destroyed){let l=new Error("The socket was closed while the blob was being read");process.nextTick(Re,this,l,i);return}this._bufferedBytes-=s[b];let o=R(n);r?this.dispatch(o,r,s,i):(this._state=E,this.sendFrame(t.frame(o,s),i),this.dequeue())}).catch(n=>{process.nextTick(Zr,this,n,i)})}dispatch(e,r,s,i){if(!r){this.sendFrame(t.frame(e,s),i);return}let n=this._extensions[gt.extensionName];this._bufferedBytes+=s[b],this._state=Kr,n.compress(e,s.fin,(o,l)=>{if(this._socket.destroyed){let c=new Error("The socket was closed while data was being compressed");Re(this,c,i);return}this._bufferedBytes-=s[b],this._state=E,s.readOnly=!1,this.sendFrame(t.frame(l,s),i),this.dequeue()})}dequeue(){for(;this._state===E&&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)}};xt.exports=Le;function Re(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 Zr(t,e,r){Re(t,e,r),t.onerror(e)}});var Ot=x((ai,Nt)=>{"use strict";var{kForOnEventAttribute:ee,kListener:Ie}=k(),vt=Symbol("kCode"),St=Symbol("kData"),bt=Symbol("kError"),Et=Symbol("kMessage"),wt=Symbol("kReason"),j=Symbol("kTarget"),Tt=Symbol("kType"),kt=Symbol("kWasClean"),O=class{constructor(e){this[j]=null,this[Tt]=e}get target(){return this[j]}get type(){return this[Tt]}};Object.defineProperty(O.prototype,"target",{enumerable:!0});Object.defineProperty(O.prototype,"type",{enumerable:!0});var I=class extends O{constructor(e,r={}){super(e),this[vt]=r.code===void 0?0:r.code,this[wt]=r.reason===void 0?"":r.reason,this[kt]=r.wasClean===void 0?!1:r.wasClean}get code(){return this[vt]}get reason(){return this[wt]}get wasClean(){return this[kt]}};Object.defineProperty(I.prototype,"code",{enumerable:!0});Object.defineProperty(I.prototype,"reason",{enumerable:!0});Object.defineProperty(I.prototype,"wasClean",{enumerable:!0});var H=class extends O{constructor(e,r={}){super(e),this[bt]=r.error===void 0?null:r.error,this[Et]=r.message===void 0?"":r.message}get error(){return this[bt]}get message(){return this[Et]}};Object.defineProperty(H.prototype,"error",{enumerable:!0});Object.defineProperty(H.prototype,"message",{enumerable:!0});var te=class extends O{constructor(e,r={}){super(e),this[St]=r.data===void 0?null:r.data}get data(){return this[St]}};Object.defineProperty(te.prototype,"data",{enumerable:!0});var Jr={addEventListener(t,e,r={}){for(let i of this.listeners(t))if(!r[ee]&&i[Ie]===e&&!i[ee])return;let s;if(t==="message")s=function(n,o){let l=new te("message",{data:o?n:n.toString()});l[j]=this,ue(e,this,l)};else if(t==="close")s=function(n,o){let l=new I("close",{code:n,reason:o.toString(),wasClean:this._closeFrameReceived&&this._closeFrameSent});l[j]=this,ue(e,this,l)};else if(t==="error")s=function(n){let o=new H("error",{error:n,message:n.message});o[j]=this,ue(e,this,o)};else if(t==="open")s=function(){let n=new O("open");n[j]=this,ue(e,this,n)};else return;s[ee]=!!r[ee],s[Ie]=e,r.once?this.once(t,s):this.on(t,s)},removeEventListener(t,e){for(let r of this.listeners(t))if(r[Ie]===e&&!r[ee]){this.removeListener(t,r);break}}};Nt.exports={CloseEvent:I,ErrorEvent:H,Event:O,EventTarget:Jr,MessageEvent:te};function ue(t,e,r){typeof t=="object"&&t.handleEvent?t.handleEvent.call(t,r):t.call(e,r)}});var Fe=x((li,Ct)=>{"use strict";var{tokenChars:re}=V();function T(t,e,r){t[e]===void 0?t[e]=[r]:t[e].push(r)}function Qr(t){let e=Object.create(null),r=Object.create(null),s=!1,i=!1,n=!1,o,l,c=-1,a=-1,d=-1,f=0;for(;f<t.length;f++)if(a=t.charCodeAt(f),o===void 0)if(d===-1&&re[a]===1)c===-1&&(c=f);else if(f!==0&&(a===32||a===9))d===-1&&c!==-1&&(d=f);else if(a===59||a===44){if(c===-1)throw new SyntaxError(`Unexpected character at index ${f}`);d===-1&&(d=f);let _=t.slice(c,d);a===44?(T(e,_,r),r=Object.create(null)):o=_,c=d=-1}else throw new SyntaxError(`Unexpected character at index ${f}`);else if(l===void 0)if(d===-1&&re[a]===1)c===-1&&(c=f);else if(a===32||a===9)d===-1&&c!==-1&&(d=f);else if(a===59||a===44){if(c===-1)throw new SyntaxError(`Unexpected character at index ${f}`);d===-1&&(d=f),T(r,t.slice(c,d),!0),a===44&&(T(e,o,r),r=Object.create(null),o=void 0),c=d=-1}else if(a===61&&c!==-1&&d===-1)l=t.slice(c,f),c=d=-1;else throw new SyntaxError(`Unexpected character at index ${f}`);else if(i){if(re[a]!==1)throw new SyntaxError(`Unexpected character at index ${f}`);c===-1?c=f:s||(s=!0),i=!1}else if(n)if(re[a]===1)c===-1&&(c=f);else if(a===34&&c!==-1)n=!1,d=f;else if(a===92)i=!0;else throw new SyntaxError(`Unexpected character at index ${f}`);else if(a===34&&t.charCodeAt(f-1)===61)n=!0;else if(d===-1&&re[a]===1)c===-1&&(c=f);else if(c!==-1&&(a===32||a===9))d===-1&&(d=f);else if(a===59||a===44){if(c===-1)throw new SyntaxError(`Unexpected character at index ${f}`);d===-1&&(d=f);let _=t.slice(c,d);s&&(_=_.replace(/\\/g,""),s=!1),T(r,l,_),a===44&&(T(e,o,r),r=Object.create(null),o=void 0),l=void 0,c=d=-1}else throw new SyntaxError(`Unexpected character at index ${f}`);if(c===-1||n||a===32||a===9)throw new SyntaxError("Unexpected end of input");d===-1&&(d=f);let u=t.slice(c,d);return o===void 0?T(e,u,r):(l===void 0?T(r,u,!0):s?T(r,l,u.replace(/\\/g,"")):T(r,l,u),T(e,o,r)),e}function es(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(", ")}Ct.exports={format:es,parse:Qr}});var ge=x((fi,qt)=>{"use strict";var ts=require("events"),rs=require("https"),ss=require("http"),Lt=require("net"),is=require("tls"),{randomBytes:ns,createHash:os}=require("crypto"),{Duplex:ci,Readable:di}=require("stream"),{URL:Ue}=require("url"),B=Q(),as=Be(),ls=De(),{isBlob:cs}=V(),{BINARY_TYPES:Pt,CLOSE_TIMEOUT:ds,EMPTY_BUFFER:pe,GUID:fs,kForOnEventAttribute:Ae,kListener:hs,kStatusCode:us,kWebSocket:g,NOOP:Rt}=k(),{EventTarget:{addEventListener:ps,removeEventListener:ms}}=Ot(),{format:_s,parse:gs}=Fe(),{toBuffer:ys}=Z(),Dt=Symbol("kAborted"),Me=[8,13],C=["CONNECTING","OPEN","CLOSING","CLOSED"],xs=/^[!#$%&'*+\-.0-9A-Z^_`|a-z~]+$/,p=class t extends ts{constructor(e,r,s){super(),this._binaryType=Pt[0],this._closeCode=1006,this._closeFrameReceived=!1,this._closeFrameSent=!1,this._closeMessage=pe,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]),It(this,e,r,s)):(this._autoPong=s.autoPong,this._closeTimeout=s.closeTimeout,this._isServer=!0)}get binaryType(){return this._binaryType}set binaryType(e){Pt.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 as({allowSynchronousEvents:s.allowSynchronousEvents,binaryType:this.binaryType,extensions:this._extensions,isServer:this._isServer,maxPayload:s.maxPayload,skipUTF8Validation:s.skipUTF8Validation}),n=new ls(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",bs),i.on("drain",Es),i.on("error",ws),i.on("message",Ts),i.on("ping",ks),i.on("pong",Ns),n.onerror=Os,e.setTimeout&&e.setTimeout(0),e.setNoDelay&&e.setNoDelay(),r.length>0&&e.unshift(r),e.on("close",At),e.on("data",_e),e.on("end",Mt),e.on("error",Wt),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){v(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())}),Ut(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){We(this,e,s);return}r===void 0&&(r=!this._isServer),this._sender.ping(e||pe,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){We(this,e,s);return}r===void 0&&(r=!this._isServer),this._sender.pong(e||pe,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){We(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||pe,i,s)}terminate(){if(this.readyState!==t.CLOSED){if(this.readyState===t.CONNECTING){v(this,this._req,"WebSocket was closed before the connection was established");return}this._socket&&(this._readyState=t.CLOSING,this._socket.destroy())}}};Object.defineProperty(p,"CONNECTING",{enumerable:!0,value:C.indexOf("CONNECTING")});Object.defineProperty(p.prototype,"CONNECTING",{enumerable:!0,value:C.indexOf("CONNECTING")});Object.defineProperty(p,"OPEN",{enumerable:!0,value:C.indexOf("OPEN")});Object.defineProperty(p.prototype,"OPEN",{enumerable:!0,value:C.indexOf("OPEN")});Object.defineProperty(p,"CLOSING",{enumerable:!0,value:C.indexOf("CLOSING")});Object.defineProperty(p.prototype,"CLOSING",{enumerable:!0,value:C.indexOf("CLOSING")});Object.defineProperty(p,"CLOSED",{enumerable:!0,value:C.indexOf("CLOSED")});Object.defineProperty(p.prototype,"CLOSED",{enumerable:!0,value:C.indexOf("CLOSED")});["binaryType","bufferedAmount","extensions","isPaused","protocol","readyState","url"].forEach(t=>{Object.defineProperty(p.prototype,t,{enumerable:!0})});["open","error","close","message"].forEach(t=>{Object.defineProperty(p.prototype,`on${t}`,{enumerable:!0,get(){for(let e of this.listeners(t))if(e[Ae])return e[hs];return null},set(e){for(let r of this.listeners(t))if(r[Ae]){this.removeListener(t,r);break}typeof e=="function"&&this.addEventListener(t,e,{[Ae]:!0})}})});p.prototype.addEventListener=ps;p.prototype.removeEventListener=ms;qt.exports=p;function It(t,e,r,s){let i={allowSynchronousEvents:!0,autoPong:!0,closeTimeout:ds,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,t._closeTimeout=i.closeTimeout,!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:",l=n.protocol==="ws+unix:",c;if(n.protocol!=="ws:"&&!o&&!l?c=`The URL's protocol must be one of "ws:", "wss:", "http:", "https:", or "ws+unix:"`:l&&!n.pathname?c="The URL's pathname is empty":n.hash&&(c="The URL contains a fragment identifier"),c){let h=new SyntaxError(c);if(t._redirects===0)throw h;me(t,h);return}let a=o?443:80,d=ns(16).toString("base64"),f=o?rs.request:ss.request,u=new Set,_;if(i.createConnection=i.createConnection||(o?Ss:vs),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":d,Connection:"Upgrade",Upgrade:"websocket"},i.path=n.pathname+n.search,i.timeout=i.handshakeTimeout,i.perMessageDeflate&&(_=new B(i.perMessageDeflate!==!0?i.perMessageDeflate:{},!1,i.maxPayload),i.headers["Sec-WebSocket-Extensions"]=_s({[B.extensionName]:_.offer()})),r.length){for(let h of r){if(typeof h!="string"||!xs.test(h)||u.has(h))throw new SyntaxError("An invalid or duplicated subprotocol was specified");u.add(h)}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}`),l){let h=i.path.split(":");i.socketPath=h[0],i.path=h[1]}let m;if(i.followRedirects){if(t._redirects===0){t._originalIpc=l,t._originalSecure=o,t._originalHostOrSocketPath=l?i.socketPath:n.host;let h=s&&s.headers;if(s={...s,headers:{}},h)for(let[y,A]of Object.entries(h))s.headers[y.toLowerCase()]=A}else if(t.listenerCount("redirect")===0){let h=l?t._originalIpc?i.socketPath===t._originalHostOrSocketPath:!1:t._originalIpc?!1:n.host===t._originalHostOrSocketPath;(!h||t._originalSecure&&!o)&&(delete i.headers.authorization,delete i.headers.cookie,h||delete i.headers.host,i.auth=void 0)}i.auth&&!s.headers.authorization&&(s.headers.authorization="Basic "+Buffer.from(i.auth).toString("base64")),m=t._req=f(i),t._redirects&&t.emit("redirect",t.url,m)}else m=t._req=f(i);i.timeout&&m.on("timeout",()=>{v(t,m,"Opening handshake has timed out")}),m.on("error",h=>{m===null||m[Dt]||(m=t._req=null,me(t,h))}),m.on("response",h=>{let y=h.headers.location,A=h.statusCode;if(y&&i.followRedirects&&A>=300&&A<400){if(++t._redirects>i.maxRedirects){v(t,m,"Maximum redirects exceeded");return}m.abort();let K;try{K=new Ue(y,e)}catch{let M=new SyntaxError(`Invalid URL: ${y}`);me(t,M);return}It(t,K,r,s)}else t.emit("unexpected-response",m,h)||v(t,m,`Unexpected server response: ${h.statusCode}`)}),m.on("upgrade",(h,y,A)=>{if(t.emit("upgrade",h),t.readyState!==p.CONNECTING)return;m=t._req=null;let K=h.headers.upgrade;if(K===void 0||K.toLowerCase()!=="websocket"){v(t,y,"Invalid Upgrade header");return}let He=os("sha1").update(d+fs).digest("base64");if(h.headers["sec-websocket-accept"]!==He){v(t,y,"Invalid Sec-WebSocket-Accept header");return}let M=h.headers["sec-websocket-protocol"],X;if(M!==void 0?u.size?u.has(M)||(X="Server sent an invalid subprotocol"):X="Server sent a subprotocol but none was requested":u.size&&(X="Server sent no subprotocol"),X){v(t,y,X);return}M&&(t._protocol=M);let ze=h.headers["sec-websocket-extensions"];if(ze!==void 0){if(!_){v(t,y,"Server sent a Sec-WebSocket-Extensions header but no extension was requested");return}let xe;try{xe=gs(ze)}catch{v(t,y,"Invalid Sec-WebSocket-Extensions header");return}let Ye=Object.keys(xe);if(Ye.length!==1||Ye[0]!==B.extensionName){v(t,y,"Server indicated an extension that was not requested");return}try{_.accept(xe[B.extensionName])}catch{v(t,y,"Invalid Sec-WebSocket-Extensions header");return}t._extensions[B.extensionName]=_}t.setSocket(y,A,{allowSynchronousEvents:i.allowSynchronousEvents,generateMask:i.generateMask,maxPayload:i.maxPayload,skipUTF8Validation:i.skipUTF8Validation})}),i.finishRequest?i.finishRequest(m,t):m.end()}function me(t,e){t._readyState=p.CLOSING,t._errorEmitted=!0,t.emit("error",e),t.emitClose()}function vs(t){return t.path=t.socketPath,Lt.connect(t)}function Ss(t){return t.path=void 0,!t.servername&&t.servername!==""&&(t.servername=Lt.isIP(t.host)?"":t.host),is.connect(t)}function v(t,e,r){t._readyState=p.CLOSING;let s=new Error(r);Error.captureStackTrace(s,v),e.setHeader?(e[Dt]=!0,e.abort(),e.socket&&!e.socket.destroyed&&e.socket.destroy(),process.nextTick(me,t,s)):(e.destroy(s),e.once("error",t.emit.bind(t,"error")),e.once("close",t.emitClose.bind(t)))}function We(t,e,r){if(e){let s=cs(e)?e.size:ys(e).length;t._socket?t._sender._bufferedBytes+=s:t._bufferedAmount+=s}if(r){let s=new Error(`WebSocket is not open: readyState ${t.readyState} (${C[t.readyState]})`);process.nextTick(r,s)}}function bs(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(Ft,r._socket),t===1005?r.close():r.close(t,e))}function Es(){let t=this[g];t.isPaused||t._socket.resume()}function ws(t){let e=this[g];e._socket[g]!==void 0&&(e._socket.removeListener("data",_e),process.nextTick(Ft,e._socket),e.close(t[us])),e._errorEmitted||(e._errorEmitted=!0,e.emit("error",t))}function Bt(){this[g].emitClose()}function Ts(t,e){this[g].emit("message",t,e)}function ks(t){let e=this[g];e._autoPong&&e.pong(t,!this._isServer,Rt),e.emit("ping",t)}function Ns(t){this[g].emit("pong",t)}function Ft(t){t.resume()}function Os(t){let e=this[g];e.readyState!==p.CLOSED&&(e.readyState===p.OPEN&&(e._readyState=p.CLOSING,Ut(e)),this._socket.end(),e._errorEmitted||(e._errorEmitted=!0,e.emit("error",t)))}function Ut(t){t._closeTimer=setTimeout(t._socket.destroy.bind(t._socket),t._closeTimeout)}function At(){let t=this[g];if(this.removeListener("close",At),this.removeListener("data",_e),this.removeListener("end",Mt),t._readyState=p.CLOSING,!this._readableState.endEmitted&&!t._closeFrameReceived&&!t._receiver._writableState.errorEmitted&&this._readableState.length!==0){let e=this.read(this._readableState.length);t._receiver.write(e)}t._receiver.end(),this[g]=void 0,clearTimeout(t._closeTimer),t._receiver._writableState.finished||t._receiver._writableState.errorEmitted?t.emitClose():(t._receiver.on("error",Bt),t._receiver.on("finish",Bt))}function _e(t){this[g]._receiver.write(t)||this.pause()}function Mt(){let t=this[g];t._readyState=p.CLOSING,t._receiver.end(),this.end()}function Wt(){let t=this[g];this.removeListener("error",Wt),this.on("error",Rt),t&&(t._readyState=p.CLOSING,this.destroy())}});var jt=x((ui,Gt)=>{"use strict";var hi=ge(),{Duplex:Cs}=require("stream");function Vt(t){t.emit("close")}function Ps(){!this.destroyed&&this._writableState.finished&&this.destroy()}function $t(t){this.removeListener("error",$t),this.destroy(),this.listenerCount("error")===0&&this.emit("error",t)}function Bs(t,e){let r=!0,s=new Cs({...e,autoDestroy:!1,emitClose:!1,objectMode:!1,writableObjectMode:!1});return t.on("message",function(n,o){let l=!o&&s._readableState.objectMode?n.toString():n;s.push(l)||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(Vt,s);return}let o=!1;t.once("error",function(c){o=!0,n(c)}),t.once("close",function(){o||n(i),process.nextTick(Vt,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",Ps),s.on("error",$t),s}Gt.exports=Bs});var zt=x((pi,Ht)=>{"use strict";var{tokenChars:Ls}=V();function Rs(t){let e=new Set,r=-1,s=-1,i=0;for(i;i<t.length;i++){let o=t.charCodeAt(i);if(s===-1&&Ls[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 l=t.slice(r,s);if(e.has(l))throw new SyntaxError(`The "${l}" subprotocol is duplicated`);e.add(l),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}Ht.exports={parse:Rs}});var er=x((_i,Qt)=>{"use strict";var Ds=require("events"),ye=require("http"),{Duplex:mi}=require("stream"),{createHash:Is}=require("crypto"),Yt=Fe(),F=Q(),Fs=zt(),Us=ge(),{CLOSE_TIMEOUT:As,GUID:Ms,kWebSocket:Ws}=k(),qs=/^[+/0-9A-Za-z]{22}==$/,Kt=0,Xt=1,Jt=2,qe=class extends Ds{constructor(e,r){if(super(),e={allowSynchronousEvents:!0,autoPong:!0,maxPayload:100*1024*1024,skipUTF8Validation:!1,perMessageDeflate:!1,handleProtocols:null,clientTracking:!0,closeTimeout:As,verifyClient:null,noServer:!1,backlog:null,server:null,host:null,path:null,port:null,WebSocket:Us,...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=ye.createServer((s,i)=>{let n=ye.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=Vs(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=Kt}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===Jt){e&&this.once("close",()=>{e(new Error("The server is not running"))}),process.nextTick(se,this);return}if(e&&this.once("close",e),this._state!==Xt)if(this._state=Xt,this.options.noServer||this.options.server)this._server&&(this._removeListeners(),this._removeListeners=this._server=null),this.clients?this.clients.size?this._shouldEmitClose=!0:process.nextTick(se,this):process.nextTick(se,this);else{let r=this._server;this._removeListeners(),this._removeListeners=this._server=null,r.close(()=>{se(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,l=+e.headers["sec-websocket-version"];if(e.method!=="GET"){U(this,e,r,405,"Invalid HTTP method");return}if(o===void 0||o.toLowerCase()!=="websocket"){U(this,e,r,400,"Invalid Upgrade header");return}if(n===void 0||!qs.test(n)){U(this,e,r,400,"Missing or invalid Sec-WebSocket-Key header");return}if(l!==13&&l!==8){U(this,e,r,400,"Missing or invalid Sec-WebSocket-Version header",{"Sec-WebSocket-Version":"13, 8"});return}if(!this.shouldHandle(e)){ie(r,400);return}let c=e.headers["sec-websocket-protocol"],a=new Set;if(c!==void 0)try{a=Fs.parse(c)}catch{U(this,e,r,400,"Invalid Sec-WebSocket-Protocol header");return}let d=e.headers["sec-websocket-extensions"],f={};if(this.options.perMessageDeflate&&d!==void 0){let u=new F(this.options.perMessageDeflate,!0,this.options.maxPayload);try{let _=Yt.parse(d);_[F.extensionName]&&(u.accept(_[F.extensionName]),f[F.extensionName]=u)}catch{U(this,e,r,400,"Invalid or unacceptable Sec-WebSocket-Extensions header");return}}if(this.options.verifyClient){let u={origin:e.headers[`${l===8?"sec-websocket-origin":"origin"}`],secure:!!(e.socket.authorized||e.socket.encrypted),req:e};if(this.options.verifyClient.length===2){this.options.verifyClient(u,(_,m,h,y)=>{if(!_)return ie(r,m||401,h,y);this.completeUpgrade(f,n,a,e,r,s,i)});return}if(!this.options.verifyClient(u))return ie(r,401)}this.completeUpgrade(f,n,a,e,r,s,i)}completeUpgrade(e,r,s,i,n,o,l){if(!n.readable||!n.writable)return n.destroy();if(n[Ws])throw new Error("server.handleUpgrade() was called more than once with the same socket, possibly due to a misconfiguration");if(this._state>Kt)return ie(n,503);let a=["HTTP/1.1 101 Switching Protocols","Upgrade: websocket","Connection: Upgrade",`Sec-WebSocket-Accept: ${Is("sha1").update(r+Ms).digest("base64")}`],d=new this.options.WebSocket(null,void 0,this.options);if(s.size){let f=this.options.handleProtocols?this.options.handleProtocols(s,i):s.values().next().value;f&&(a.push(`Sec-WebSocket-Protocol: ${f}`),d._protocol=f)}if(e[F.extensionName]){let f=e[F.extensionName].params,u=Yt.format({[F.extensionName]:[f]});a.push(`Sec-WebSocket-Extensions: ${u}`),d._extensions=e}this.emit("headers",a,i),n.write(a.concat(`\r
2
+ "use strict";var Or=Object.create;var Ze=Object.defineProperty;var Cr=Object.getOwnPropertyDescriptor;var Br=Object.getOwnPropertyNames;var Pr=Object.getPrototypeOf,Rr=Object.prototype.hasOwnProperty;var y=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports);var Fr=(t,e,r,s)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of Br(e))!Rr.call(t,i)&&i!==r&&Ze(t,i,{get:()=>e[i],enumerable:!(s=Cr(e,i))||s.enumerable});return t};var w=(t,e,r)=>(r=t!=null?Or(Pr(t)):{},Fr(e||!t||!t.__esModule?Ze(r,"default",{value:t,enumerable:!0}):r,t));var N=y((Wi,xt)=>{"use strict";var _t=["nodebuffer","arraybuffer","fragments"],gt=typeof Blob<"u";gt&&_t.push("blob");xt.exports={BINARY_TYPES:_t,CLOSE_TIMEOUT:3e4,EMPTY_BUFFER:Buffer.alloc(0),GUID:"258EAFA5-E914-47DA-95CA-C5AB0DC85B11",hasBlob:gt,kForOnEventAttribute:Symbol("kIsForOnEventAttribute"),kListener:Symbol("kListener"),kStatusCode:Symbol("status-code"),kWebSocket:Symbol("websocket"),NOOP:()=>{}}});var J=y(($i,oe)=>{"use strict";var{EMPTY_BUFFER:Ar}=N(),Te=Buffer[Symbol.species];function Ur(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 Te(r.buffer,r.byteOffset,s):r}function yt(t,e,r,s,i){for(let n=0;n<i;n++)r[s+n]=t[n]^e[n&3]}function vt(t,e){for(let r=0;r<t.length;r++)t[r]^=e[r&3]}function Mr(t){return t.length===t.buffer.byteLength?t.buffer:t.buffer.slice(t.byteOffset,t.byteOffset+t.length)}function Ne(t){if(Ne.readOnly=!0,Buffer.isBuffer(t))return t;let e;return t instanceof ArrayBuffer?e=new Te(t):ArrayBuffer.isView(t)?e=new Te(t.buffer,t.byteOffset,t.byteLength):(e=Buffer.from(t),Ne.readOnly=!1),e}oe.exports={concat:Ur,mask:yt,toArrayBuffer:Mr,toBuffer:Ne,unmask:vt};if(!process.env.WS_NO_BUFFER_UTIL)try{let t=require("bufferutil");oe.exports.mask=function(e,r,s,i,n){n<48?yt(e,r,s,i,n):t.mask(e,r,s,i,n)},oe.exports.unmask=function(e,r){e.length<32?vt(e,r):t.unmask(e,r)}}catch{}});var Et=y((Vi,St)=>{"use strict";var bt=Symbol("kDone"),ke=Symbol("kRun"),Oe=class{constructor(e){this[bt]=()=>{this.pending--,this[ke]()},this.concurrency=e||1/0,this.jobs=[],this.pending=0}add(e){this.jobs.push(e),this[ke]()}[ke](){if(this.pending!==this.concurrency&&this.jobs.length){let e=this.jobs.shift();this.pending++,e(this[bt])}}};St.exports=Oe});var ee=y((Gi,kt)=>{"use strict";var Q=require("zlib"),wt=J(),qr=Et(),{kStatusCode:Tt}=N(),Wr=Buffer[Symbol.species],$r=Buffer.from([0,0,255,255]),le=Symbol("permessage-deflate"),k=Symbol("total-length"),q=Symbol("callback"),P=Symbol("buffers"),W=Symbol("error"),ae,Ce=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,!ae){let i=this._options.concurrencyLimit!==void 0?this._options.concurrencyLimit:10;ae=new qr(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[q];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){ae.add(i=>{this._decompress(e,r,(n,o)=>{i(),s(n,o)})})}compress(e,r,s){ae.add(i=>{this._compress(e,r,(n,o)=>{i(),s(n,o)})})}_decompress(e,r,s){let i=this._isServer?"client":"server";if(!this._inflate){let n=`${i}_max_window_bits`,o=typeof this.params[n]!="number"?Q.Z_DEFAULT_WINDOWBITS:this.params[n];this._inflate=Q.createInflateRaw({...this._options.zlibInflateOptions,windowBits:o}),this._inflate[le]=this,this._inflate[k]=0,this._inflate[P]=[],this._inflate.on("error",Gr),this._inflate.on("data",Nt)}this._inflate[q]=s,this._inflate.write(e),r&&this._inflate.write($r),this._inflate.flush(()=>{let n=this._inflate[W];if(n){this._inflate.close(),this._inflate=null,s(n);return}let o=wt.concat(this._inflate[P],this._inflate[k]);this._inflate._readableState.endEmitted?(this._inflate.close(),this._inflate=null):(this._inflate[k]=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"?Q.Z_DEFAULT_WINDOWBITS:this.params[n];this._deflate=Q.createDeflateRaw({...this._options.zlibDeflateOptions,windowBits:o}),this._deflate[k]=0,this._deflate[P]=[],this._deflate.on("data",Vr)}this._deflate[q]=s,this._deflate.write(e),this._deflate.flush(Q.Z_SYNC_FLUSH,()=>{if(!this._deflate)return;let n=wt.concat(this._deflate[P],this._deflate[k]);r&&(n=new Wr(n.buffer,n.byteOffset,n.length-4)),this._deflate[q]=null,this._deflate[k]=0,this._deflate[P]=[],r&&this.params[`${i}_no_context_takeover`]&&this._deflate.reset(),s(null,n)})}};kt.exports=Ce;function Vr(t){this[P].push(t),this[k]+=t.length}function Nt(t){if(this[k]+=t.length,this[le]._maxPayload<1||this[k]<=this[le]._maxPayload){this[P].push(t);return}this[W]=new RangeError("Max payload size exceeded"),this[W].code="WS_ERR_UNSUPPORTED_MESSAGE_LENGTH",this[W][Tt]=1009,this.removeListener("data",Nt),this.reset()}function Gr(t){if(this[le]._inflate=null,this[W]){this[q](this[W]);return}t[Tt]=1007,this[q](t)}});var $=y((ji,ce)=>{"use strict";var{isUtf8:Ot}=require("buffer"),{hasBlob:jr}=N(),Hr=[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 zr(t){return t>=1e3&&t<=1014&&t!==1004&&t!==1005&&t!==1006||t>=3e3&&t<=4999}function Be(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 jr&&typeof t=="object"&&typeof t.arrayBuffer=="function"&&typeof t.type=="string"&&typeof t.stream=="function"&&(t[Symbol.toStringTag]==="Blob"||t[Symbol.toStringTag]==="File")}ce.exports={isBlob:Yr,isValidStatusCode:zr,isValidUTF8:Be,tokenChars:Hr};if(Ot)ce.exports.isValidUTF8=function(t){return t.length<24?Be(t):Ot(t)};else if(!process.env.WS_NO_UTF_8_VALIDATE)try{let t=require("utf-8-validate");ce.exports.isValidUTF8=function(e){return e.length<32?Be(e):t(e)}}catch{}});var Le=y((Hi,Lt)=>{"use strict";var{Writable:Kr}=require("stream"),Ct=ee(),{BINARY_TYPES:Xr,EMPTY_BUFFER:Bt,kStatusCode:Zr,kWebSocket:Jr}=N(),{concat:Pe,toArrayBuffer:Qr,unmask:es}=J(),{isValidStatusCode:ts,isValidUTF8:Pt}=$(),de=Buffer[Symbol.species],b=0,Rt=1,Ft=2,It=3,Re=4,Fe=5,fe=6,Ie=class extends Kr{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[Jr]=void 0,this._bufferedBytes=0,this._buffers=[],this._compressed=!1,this._payloadLength=0,this._mask=void 0,this._fragmented=0,this._masked=!1,this._fin=!1,this._opcode=0,this._totalPayloadLength=0,this._messageLength=0,this._fragments=[],this._errored=!1,this._loop=!1,this._state=b}_write(e,r,s){if(this._opcode===8&&this._state==b)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 de(s.buffer,s.byteOffset+e,s.length-e),new de(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 de(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 b:this.getInfo(e);break;case Rt:this.getPayloadLength16(e);break;case Ft:this.getPayloadLength64(e);break;case It:this.getMask();break;case Re:this.getData(e);break;case Fe:case fe: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[Ct.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=Rt:this._payloadLength===127?this._state=Ft: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=It:this._state=Re}getMask(){if(this._bufferedBytes<4){this._loop=!1;return}this._mask=this.consume(4),this._state=Re}getData(e){let r=Bt;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&&es(r,this._mask)}if(this._opcode>7){this.controlMessage(r,e);return}if(this._compressed){this._state=Fe,this.decompress(r,e);return}r.length&&(this._messageLength=this._totalPayloadLength,this._fragments.push(r)),this.dataMessage(e)}decompress(e,r){this._extensions[Ct.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===b&&this.startLoop(r)})}dataMessage(e){if(!this._fin){this._state=b;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=Pe(s,r):this._binaryType==="arraybuffer"?i=Qr(Pe(s,r)):this._binaryType==="blob"?i=new Blob(s):i=s,this._allowSynchronousEvents?(this.emit("message",i,!0),this._state=b):(this._state=fe,setImmediate(()=>{this.emit("message",i,!0),this._state=b,this.startLoop(e)}))}else{let i=Pe(s,r);if(!this._skipUTF8Validation&&!Pt(i)){let n=this.createError(Error,"invalid UTF-8 sequence",!0,1007,"WS_ERR_INVALID_UTF8");e(n);return}this._state===Fe||this._allowSynchronousEvents?(this.emit("message",i,!1),this._state=b):(this._state=fe,setImmediate(()=>{this.emit("message",i,!1),this._state=b,this.startLoop(e)}))}}controlMessage(e,r){if(this._opcode===8){if(e.length===0)this._loop=!1,this.emit("conclude",1005,Bt),this.end();else{let s=e.readUInt16BE(0);if(!ts(s)){let n=this.createError(RangeError,`invalid status code ${s}`,!0,1002,"WS_ERR_INVALID_CLOSE_CODE");r(n);return}let i=new de(e.buffer,e.byteOffset+2,e.length-2);if(!this._skipUTF8Validation&&!Pt(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=b;return}this._allowSynchronousEvents?(this.emit(this._opcode===9?"ping":"pong",e),this._state=b):(this._state=fe,setImmediate(()=>{this.emit(this._opcode===9?"ping":"pong",e),this._state=b,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[Zr]=i,o}};Lt.exports=Ie});var Ue=y((Yi,Ut)=>{"use strict";var{Duplex:zi}=require("stream"),{randomFillSync:rs}=require("crypto"),Dt=ee(),{EMPTY_BUFFER:ss,kWebSocket:is,NOOP:ns}=N(),{isBlob:V,isValidStatusCode:os}=$(),{mask:At,toBuffer:F}=J(),S=Symbol("kByteLength"),as=Buffer.alloc(4),ue=8*1024,I,G=ue,E=0,ls=1,cs=2,De=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=E,this.onerror=ns,this[is]=void 0}static frame(e,r){let s,i=!1,n=2,o=!1;r.mask&&(s=r.maskBuffer||as,r.generateMask?r.generateMask(s):(G===ue&&(I===void 0&&(I=Buffer.alloc(ue)),rs(I,0,ue),G=0),s[0]=I[G++],s[1]=I[G++],s[2]=I[G++],s[3]=I[G++]),o=(s[0]|s[1]|s[2]|s[3])===0,n=6);let l;typeof e=="string"?(!r.mask||o)&&r[S]!==void 0?l=r[S]:(e=Buffer.from(e),l=e.length):(l=e.length,i=r.mask&&r.readOnly&&!o);let c=l;l>=65536?(n+=8,c=127):l>125&&(n+=2,c=126);let a=Buffer.allocUnsafe(i?l+n:n);return a[0]=r.fin?r.opcode|128:r.opcode,r.rsv1&&(a[0]|=64),a[1]=c,c===126?a.writeUInt16BE(l,2):c===127&&(a[2]=a[3]=0,a.writeUIntBE(l,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?(At(e,s,a,n,l),[a]):(At(e,s,e,0,l),[a,e])):[a,e]}close(e,r,s,i){let n;if(e===void 0)n=ss;else{if(typeof e!="number"||!os(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 l=Buffer.byteLength(r);if(l>123)throw new RangeError("The message must not be greater than 123 bytes");n=Buffer.allocUnsafe(2+l),n.writeUInt16BE(e,0),typeof r=="string"?n.write(r,2):n.set(r,2)}}let o={[S]:n.length,fin:!0,generateMask:this._generateMask,mask:s,maskBuffer:this._maskBuffer,opcode:8,readOnly:!1,rsv1:!1};this._state!==E?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):V(e)?(i=e.size,n=!1):(e=F(e),i=e.length,n=F.readOnly),i>125)throw new RangeError("The data size must not be greater than 125 bytes");let o={[S]:i,fin:!0,generateMask:this._generateMask,mask:r,maskBuffer:this._maskBuffer,opcode:9,readOnly:n,rsv1:!1};V(e)?this._state!==E?this.enqueue([this.getBlobData,e,!1,o,s]):this.getBlobData(e,!1,o,s):this._state!==E?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):V(e)?(i=e.size,n=!1):(e=F(e),i=e.length,n=F.readOnly),i>125)throw new RangeError("The data size must not be greater than 125 bytes");let o={[S]:i,fin:!0,generateMask:this._generateMask,mask:r,maskBuffer:this._maskBuffer,opcode:10,readOnly:n,rsv1:!1};V(e)?this._state!==E?this.enqueue([this.getBlobData,e,!1,o,s]):this.getBlobData(e,!1,o,s):this._state!==E?this.enqueue([this.dispatch,e,!1,o,s]):this.sendFrame(t.frame(e,o),s)}send(e,r,s){let i=this._extensions[Dt.extensionName],n=r.binary?2:1,o=r.compress,l,c;typeof e=="string"?(l=Buffer.byteLength(e),c=!1):V(e)?(l=e.size,c=!1):(e=F(e),l=e.length,c=F.readOnly),this._firstFragment?(this._firstFragment=!1,o&&i&&i.params[i._isServer?"server_no_context_takeover":"client_no_context_takeover"]&&(o=l>=i._threshold),this._compress=o):(o=!1,n=0),r.fin&&(this._firstFragment=!0);let a={[S]:l,fin:r.fin,generateMask:this._generateMask,mask:r.mask,maskBuffer:this._maskBuffer,opcode:n,readOnly:c,rsv1:o};V(e)?this._state!==E?this.enqueue([this.getBlobData,e,this._compress,a,s]):this.getBlobData(e,this._compress,a,s):this._state!==E?this.enqueue([this.dispatch,e,this._compress,a,s]):this.dispatch(e,this._compress,a,s)}getBlobData(e,r,s,i){this._bufferedBytes+=s[S],this._state=cs,e.arrayBuffer().then(n=>{if(this._socket.destroyed){let l=new Error("The socket was closed while the blob was being read");process.nextTick(Ae,this,l,i);return}this._bufferedBytes-=s[S];let o=F(n);r?this.dispatch(o,r,s,i):(this._state=E,this.sendFrame(t.frame(o,s),i),this.dequeue())}).catch(n=>{process.nextTick(ds,this,n,i)})}dispatch(e,r,s,i){if(!r){this.sendFrame(t.frame(e,s),i);return}let n=this._extensions[Dt.extensionName];this._bufferedBytes+=s[S],this._state=ls,n.compress(e,s.fin,(o,l)=>{if(this._socket.destroyed){let c=new Error("The socket was closed while data was being compressed");Ae(this,c,i);return}this._bufferedBytes-=s[S],this._state=E,s.readOnly=!1,this.sendFrame(t.frame(l,s),i),this.dequeue()})}dequeue(){for(;this._state===E&&this._queue.length;){let e=this._queue.shift();this._bufferedBytes-=e[3][S],Reflect.apply(e[0],this,e.slice(1))}}enqueue(e){this._bufferedBytes+=e[3][S],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)}};Ut.exports=De;function Ae(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 ds(t,e,r){Ae(t,e,r),t.onerror(e)}});var zt=y((Ki,Ht)=>{"use strict";var{kForOnEventAttribute:te,kListener:Me}=N(),Mt=Symbol("kCode"),qt=Symbol("kData"),Wt=Symbol("kError"),$t=Symbol("kMessage"),Vt=Symbol("kReason"),j=Symbol("kTarget"),Gt=Symbol("kType"),jt=Symbol("kWasClean"),O=class{constructor(e){this[j]=null,this[Gt]=e}get target(){return this[j]}get type(){return this[Gt]}};Object.defineProperty(O.prototype,"target",{enumerable:!0});Object.defineProperty(O.prototype,"type",{enumerable:!0});var L=class extends O{constructor(e,r={}){super(e),this[Mt]=r.code===void 0?0:r.code,this[Vt]=r.reason===void 0?"":r.reason,this[jt]=r.wasClean===void 0?!1:r.wasClean}get code(){return this[Mt]}get reason(){return this[Vt]}get wasClean(){return this[jt]}};Object.defineProperty(L.prototype,"code",{enumerable:!0});Object.defineProperty(L.prototype,"reason",{enumerable:!0});Object.defineProperty(L.prototype,"wasClean",{enumerable:!0});var H=class extends O{constructor(e,r={}){super(e),this[Wt]=r.error===void 0?null:r.error,this[$t]=r.message===void 0?"":r.message}get error(){return this[Wt]}get message(){return this[$t]}};Object.defineProperty(H.prototype,"error",{enumerable:!0});Object.defineProperty(H.prototype,"message",{enumerable:!0});var re=class extends O{constructor(e,r={}){super(e),this[qt]=r.data===void 0?null:r.data}get data(){return this[qt]}};Object.defineProperty(re.prototype,"data",{enumerable:!0});var fs={addEventListener(t,e,r={}){for(let i of this.listeners(t))if(!r[te]&&i[Me]===e&&!i[te])return;let s;if(t==="message")s=function(n,o){let l=new re("message",{data:o?n:n.toString()});l[j]=this,he(e,this,l)};else if(t==="close")s=function(n,o){let l=new L("close",{code:n,reason:o.toString(),wasClean:this._closeFrameReceived&&this._closeFrameSent});l[j]=this,he(e,this,l)};else if(t==="error")s=function(n){let o=new H("error",{error:n,message:n.message});o[j]=this,he(e,this,o)};else if(t==="open")s=function(){let n=new O("open");n[j]=this,he(e,this,n)};else return;s[te]=!!r[te],s[Me]=e,r.once?this.once(t,s):this.on(t,s)},removeEventListener(t,e){for(let r of this.listeners(t))if(r[Me]===e&&!r[te]){this.removeListener(t,r);break}}};Ht.exports={CloseEvent:L,ErrorEvent:H,Event:O,EventTarget:fs,MessageEvent:re};function he(t,e,r){typeof t=="object"&&t.handleEvent?t.handleEvent.call(t,r):t.call(e,r)}});var qe=y((Xi,Yt)=>{"use strict";var{tokenChars:se}=$();function T(t,e,r){t[e]===void 0?t[e]=[r]:t[e].push(r)}function us(t){let e=Object.create(null),r=Object.create(null),s=!1,i=!1,n=!1,o,l,c=-1,a=-1,d=-1,f=0;for(;f<t.length;f++)if(a=t.charCodeAt(f),o===void 0)if(d===-1&&se[a]===1)c===-1&&(c=f);else if(f!==0&&(a===32||a===9))d===-1&&c!==-1&&(d=f);else if(a===59||a===44){if(c===-1)throw new SyntaxError(`Unexpected character at index ${f}`);d===-1&&(d=f);let _=t.slice(c,d);a===44?(T(e,_,r),r=Object.create(null)):o=_,c=d=-1}else throw new SyntaxError(`Unexpected character at index ${f}`);else if(l===void 0)if(d===-1&&se[a]===1)c===-1&&(c=f);else if(a===32||a===9)d===-1&&c!==-1&&(d=f);else if(a===59||a===44){if(c===-1)throw new SyntaxError(`Unexpected character at index ${f}`);d===-1&&(d=f),T(r,t.slice(c,d),!0),a===44&&(T(e,o,r),r=Object.create(null),o=void 0),c=d=-1}else if(a===61&&c!==-1&&d===-1)l=t.slice(c,f),c=d=-1;else throw new SyntaxError(`Unexpected character at index ${f}`);else if(i){if(se[a]!==1)throw new SyntaxError(`Unexpected character at index ${f}`);c===-1?c=f:s||(s=!0),i=!1}else if(n)if(se[a]===1)c===-1&&(c=f);else if(a===34&&c!==-1)n=!1,d=f;else if(a===92)i=!0;else throw new SyntaxError(`Unexpected character at index ${f}`);else if(a===34&&t.charCodeAt(f-1)===61)n=!0;else if(d===-1&&se[a]===1)c===-1&&(c=f);else if(c!==-1&&(a===32||a===9))d===-1&&(d=f);else if(a===59||a===44){if(c===-1)throw new SyntaxError(`Unexpected character at index ${f}`);d===-1&&(d=f);let _=t.slice(c,d);s&&(_=_.replace(/\\/g,""),s=!1),T(r,l,_),a===44&&(T(e,o,r),r=Object.create(null),o=void 0),l=void 0,c=d=-1}else throw new SyntaxError(`Unexpected character at index ${f}`);if(c===-1||n||a===32||a===9)throw new SyntaxError("Unexpected end of input");d===-1&&(d=f);let h=t.slice(c,d);return o===void 0?T(e,h,r):(l===void 0?T(r,h,!0):s?T(r,l,h.replace(/\\/g,"")):T(r,l,h),T(e,o,r)),e}function hs(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(", ")}Yt.exports={format:hs,parse:us}});var ge=y((Qi,or)=>{"use strict";var ps=require("events"),ms=require("https"),_s=require("http"),Zt=require("net"),gs=require("tls"),{randomBytes:xs,createHash:ys}=require("crypto"),{Duplex:Zi,Readable:Ji}=require("stream"),{URL:We}=require("url"),R=ee(),vs=Le(),bs=Ue(),{isBlob:Ss}=$(),{BINARY_TYPES:Kt,CLOSE_TIMEOUT:Es,EMPTY_BUFFER:pe,GUID:ws,kForOnEventAttribute:$e,kListener:Ts,kStatusCode:Ns,kWebSocket:g,NOOP:Jt}=N(),{EventTarget:{addEventListener:ks,removeEventListener:Os}}=zt(),{format:Cs,parse:Bs}=qe(),{toBuffer:Ps}=J(),Qt=Symbol("kAborted"),Ve=[8,13],C=["CONNECTING","OPEN","CLOSING","CLOSED"],Rs=/^[!#$%&'*+\-.0-9A-Z^_`|a-z~]+$/,p=class t extends ps{constructor(e,r,s){super(),this._binaryType=Kt[0],this._closeCode=1006,this._closeFrameReceived=!1,this._closeFrameSent=!1,this._closeMessage=pe,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]),er(this,e,r,s)):(this._autoPong=s.autoPong,this._closeTimeout=s.closeTimeout,this._isServer=!0)}get binaryType(){return this._binaryType}set binaryType(e){Kt.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 vs({allowSynchronousEvents:s.allowSynchronousEvents,binaryType:this.binaryType,extensions:this._extensions,isServer:this._isServer,maxPayload:s.maxPayload,skipUTF8Validation:s.skipUTF8Validation}),n=new bs(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",Ls),i.on("drain",Ds),i.on("error",As),i.on("message",Us),i.on("ping",Ms),i.on("pong",qs),n.onerror=Ws,e.setTimeout&&e.setTimeout(0),e.setNoDelay&&e.setNoDelay(),r.length>0&&e.unshift(r),e.on("close",sr),e.on("data",_e),e.on("end",ir),e.on("error",nr),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[R.extensionName]&&this._extensions[R.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){v(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())}),rr(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){Ge(this,e,s);return}r===void 0&&(r=!this._isServer),this._sender.ping(e||pe,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){Ge(this,e,s);return}r===void 0&&(r=!this._isServer),this._sender.pong(e||pe,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){Ge(this,e,s);return}let i={binary:typeof e!="string",mask:!this._isServer,compress:!0,fin:!0,...r};this._extensions[R.extensionName]||(i.compress=!1),this._sender.send(e||pe,i,s)}terminate(){if(this.readyState!==t.CLOSED){if(this.readyState===t.CONNECTING){v(this,this._req,"WebSocket was closed before the connection was established");return}this._socket&&(this._readyState=t.CLOSING,this._socket.destroy())}}};Object.defineProperty(p,"CONNECTING",{enumerable:!0,value:C.indexOf("CONNECTING")});Object.defineProperty(p.prototype,"CONNECTING",{enumerable:!0,value:C.indexOf("CONNECTING")});Object.defineProperty(p,"OPEN",{enumerable:!0,value:C.indexOf("OPEN")});Object.defineProperty(p.prototype,"OPEN",{enumerable:!0,value:C.indexOf("OPEN")});Object.defineProperty(p,"CLOSING",{enumerable:!0,value:C.indexOf("CLOSING")});Object.defineProperty(p.prototype,"CLOSING",{enumerable:!0,value:C.indexOf("CLOSING")});Object.defineProperty(p,"CLOSED",{enumerable:!0,value:C.indexOf("CLOSED")});Object.defineProperty(p.prototype,"CLOSED",{enumerable:!0,value:C.indexOf("CLOSED")});["binaryType","bufferedAmount","extensions","isPaused","protocol","readyState","url"].forEach(t=>{Object.defineProperty(p.prototype,t,{enumerable:!0})});["open","error","close","message"].forEach(t=>{Object.defineProperty(p.prototype,`on${t}`,{enumerable:!0,get(){for(let e of this.listeners(t))if(e[$e])return e[Ts];return null},set(e){for(let r of this.listeners(t))if(r[$e]){this.removeListener(t,r);break}typeof e=="function"&&this.addEventListener(t,e,{[$e]:!0})}})});p.prototype.addEventListener=ks;p.prototype.removeEventListener=Os;or.exports=p;function er(t,e,r,s){let i={allowSynchronousEvents:!0,autoPong:!0,closeTimeout:Es,protocolVersion:Ve[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,t._closeTimeout=i.closeTimeout,!Ve.includes(i.protocolVersion))throw new RangeError(`Unsupported protocol version: ${i.protocolVersion} (supported versions: ${Ve.join(", ")})`);let n;if(e instanceof We)n=e;else try{n=new We(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:",l=n.protocol==="ws+unix:",c;if(n.protocol!=="ws:"&&!o&&!l?c=`The URL's protocol must be one of "ws:", "wss:", "http:", "https:", or "ws+unix:"`:l&&!n.pathname?c="The URL's pathname is empty":n.hash&&(c="The URL contains a fragment identifier"),c){let u=new SyntaxError(c);if(t._redirects===0)throw u;me(t,u);return}let a=o?443:80,d=xs(16).toString("base64"),f=o?ms.request:_s.request,h=new Set,_;if(i.createConnection=i.createConnection||(o?Is:Fs),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":d,Connection:"Upgrade",Upgrade:"websocket"},i.path=n.pathname+n.search,i.timeout=i.handshakeTimeout,i.perMessageDeflate&&(_=new R(i.perMessageDeflate!==!0?i.perMessageDeflate:{},!1,i.maxPayload),i.headers["Sec-WebSocket-Extensions"]=Cs({[R.extensionName]:_.offer()})),r.length){for(let u of r){if(typeof u!="string"||!Rs.test(u)||h.has(u))throw new SyntaxError("An invalid or duplicated subprotocol was specified");h.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}`),l){let u=i.path.split(":");i.socketPath=u[0],i.path=u[1]}let m;if(i.followRedirects){if(t._redirects===0){t._originalIpc=l,t._originalSecure=o,t._originalHostOrSocketPath=l?i.socketPath:n.host;let u=s&&s.headers;if(s={...s,headers:{}},u)for(let[x,U]of Object.entries(u))s.headers[x.toLowerCase()]=U}else if(t.listenerCount("redirect")===0){let u=l?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")),m=t._req=f(i),t._redirects&&t.emit("redirect",t.url,m)}else m=t._req=f(i);i.timeout&&m.on("timeout",()=>{v(t,m,"Opening handshake has timed out")}),m.on("error",u=>{m===null||m[Qt]||(m=t._req=null,me(t,u))}),m.on("response",u=>{let x=u.headers.location,U=u.statusCode;if(x&&i.followRedirects&&U>=300&&U<400){if(++t._redirects>i.maxRedirects){v(t,m,"Maximum redirects exceeded");return}m.abort();let K;try{K=new We(x,e)}catch{let M=new SyntaxError(`Invalid URL: ${x}`);me(t,M);return}er(t,K,r,s)}else t.emit("unexpected-response",m,u)||v(t,m,`Unexpected server response: ${u.statusCode}`)}),m.on("upgrade",(u,x,U)=>{if(t.emit("upgrade",u),t.readyState!==p.CONNECTING)return;m=t._req=null;let K=u.headers.upgrade;if(K===void 0||K.toLowerCase()!=="websocket"){v(t,x,"Invalid Upgrade header");return}let Ye=ys("sha1").update(d+ws).digest("base64");if(u.headers["sec-websocket-accept"]!==Ye){v(t,x,"Invalid Sec-WebSocket-Accept header");return}let M=u.headers["sec-websocket-protocol"],X;if(M!==void 0?h.size?h.has(M)||(X="Server sent an invalid subprotocol"):X="Server sent a subprotocol but none was requested":h.size&&(X="Server sent no subprotocol"),X){v(t,x,X);return}M&&(t._protocol=M);let Ke=u.headers["sec-websocket-extensions"];if(Ke!==void 0){if(!_){v(t,x,"Server sent a Sec-WebSocket-Extensions header but no extension was requested");return}let ye;try{ye=Bs(Ke)}catch{v(t,x,"Invalid Sec-WebSocket-Extensions header");return}let Xe=Object.keys(ye);if(Xe.length!==1||Xe[0]!==R.extensionName){v(t,x,"Server indicated an extension that was not requested");return}try{_.accept(ye[R.extensionName])}catch{v(t,x,"Invalid Sec-WebSocket-Extensions header");return}t._extensions[R.extensionName]=_}t.setSocket(x,U,{allowSynchronousEvents:i.allowSynchronousEvents,generateMask:i.generateMask,maxPayload:i.maxPayload,skipUTF8Validation:i.skipUTF8Validation})}),i.finishRequest?i.finishRequest(m,t):m.end()}function me(t,e){t._readyState=p.CLOSING,t._errorEmitted=!0,t.emit("error",e),t.emitClose()}function Fs(t){return t.path=t.socketPath,Zt.connect(t)}function Is(t){return t.path=void 0,!t.servername&&t.servername!==""&&(t.servername=Zt.isIP(t.host)?"":t.host),gs.connect(t)}function v(t,e,r){t._readyState=p.CLOSING;let s=new Error(r);Error.captureStackTrace(s,v),e.setHeader?(e[Qt]=!0,e.abort(),e.socket&&!e.socket.destroyed&&e.socket.destroy(),process.nextTick(me,t,s)):(e.destroy(s),e.once("error",t.emit.bind(t,"error")),e.once("close",t.emitClose.bind(t)))}function Ge(t,e,r){if(e){let s=Ss(e)?e.size:Ps(e).length;t._socket?t._sender._bufferedBytes+=s:t._bufferedAmount+=s}if(r){let s=new Error(`WebSocket is not open: readyState ${t.readyState} (${C[t.readyState]})`);process.nextTick(r,s)}}function Ls(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(tr,r._socket),t===1005?r.close():r.close(t,e))}function Ds(){let t=this[g];t.isPaused||t._socket.resume()}function As(t){let e=this[g];e._socket[g]!==void 0&&(e._socket.removeListener("data",_e),process.nextTick(tr,e._socket),e.close(t[Ns])),e._errorEmitted||(e._errorEmitted=!0,e.emit("error",t))}function Xt(){this[g].emitClose()}function Us(t,e){this[g].emit("message",t,e)}function Ms(t){let e=this[g];e._autoPong&&e.pong(t,!this._isServer,Jt),e.emit("ping",t)}function qs(t){this[g].emit("pong",t)}function tr(t){t.resume()}function Ws(t){let e=this[g];e.readyState!==p.CLOSED&&(e.readyState===p.OPEN&&(e._readyState=p.CLOSING,rr(e)),this._socket.end(),e._errorEmitted||(e._errorEmitted=!0,e.emit("error",t)))}function rr(t){t._closeTimer=setTimeout(t._socket.destroy.bind(t._socket),t._closeTimeout)}function sr(){let t=this[g];if(this.removeListener("close",sr),this.removeListener("data",_e),this.removeListener("end",ir),t._readyState=p.CLOSING,!this._readableState.endEmitted&&!t._closeFrameReceived&&!t._receiver._writableState.errorEmitted&&this._readableState.length!==0){let e=this.read(this._readableState.length);t._receiver.write(e)}t._receiver.end(),this[g]=void 0,clearTimeout(t._closeTimer),t._receiver._writableState.finished||t._receiver._writableState.errorEmitted?t.emitClose():(t._receiver.on("error",Xt),t._receiver.on("finish",Xt))}function _e(t){this[g]._receiver.write(t)||this.pause()}function ir(){let t=this[g];t._readyState=p.CLOSING,t._receiver.end(),this.end()}function nr(){let t=this[g];this.removeListener("error",nr),this.on("error",Jt),t&&(t._readyState=p.CLOSING,this.destroy())}});var dr=y((tn,cr)=>{"use strict";var en=ge(),{Duplex:$s}=require("stream");function ar(t){t.emit("close")}function Vs(){!this.destroyed&&this._writableState.finished&&this.destroy()}function lr(t){this.removeListener("error",lr),this.destroy(),this.listenerCount("error")===0&&this.emit("error",t)}function Gs(t,e){let r=!0,s=new $s({...e,autoDestroy:!1,emitClose:!1,objectMode:!1,writableObjectMode:!1});return t.on("message",function(n,o){let l=!o&&s._readableState.objectMode?n.toString():n;s.push(l)||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(ar,s);return}let o=!1;t.once("error",function(c){o=!0,n(c)}),t.once("close",function(){o||n(i),process.nextTick(ar,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",Vs),s.on("error",lr),s}cr.exports=Gs});var ur=y((rn,fr)=>{"use strict";var{tokenChars:js}=$();function Hs(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&&js[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 l=t.slice(r,s);if(e.has(l))throw new SyntaxError(`The "${l}" subprotocol is duplicated`);e.add(l),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}fr.exports={parse:Hs}});var yr=y((nn,xr)=>{"use strict";var zs=require("events"),xe=require("http"),{Duplex:sn}=require("stream"),{createHash:Ys}=require("crypto"),hr=qe(),D=ee(),Ks=ur(),Xs=ge(),{CLOSE_TIMEOUT:Zs,GUID:Js,kWebSocket:Qs}=N(),ei=/^[+/0-9A-Za-z]{22}==$/,pr=0,mr=1,gr=2,je=class extends zs{constructor(e,r){if(super(),e={allowSynchronousEvents:!0,autoPong:!0,maxPayload:100*1024*1024,skipUTF8Validation:!1,perMessageDeflate:!1,handleProtocols:null,clientTracking:!0,closeTimeout:Zs,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=xe.createServer((s,i)=>{let n=xe.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=ti(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=pr}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===gr){e&&this.once("close",()=>{e(new Error("The server is not running"))}),process.nextTick(ie,this);return}if(e&&this.once("close",e),this._state!==mr)if(this._state=mr,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(ie,this):process.nextTick(ie,this);else{let r=this._server;this._removeListeners(),this._removeListeners=this._server=null,r.close(()=>{ie(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",_r);let n=e.headers["sec-websocket-key"],o=e.headers.upgrade,l=+e.headers["sec-websocket-version"];if(e.method!=="GET"){A(this,e,r,405,"Invalid HTTP method");return}if(o===void 0||o.toLowerCase()!=="websocket"){A(this,e,r,400,"Invalid Upgrade header");return}if(n===void 0||!ei.test(n)){A(this,e,r,400,"Missing or invalid Sec-WebSocket-Key header");return}if(l!==13&&l!==8){A(this,e,r,400,"Missing or invalid Sec-WebSocket-Version header",{"Sec-WebSocket-Version":"13, 8"});return}if(!this.shouldHandle(e)){ne(r,400);return}let c=e.headers["sec-websocket-protocol"],a=new Set;if(c!==void 0)try{a=Ks.parse(c)}catch{A(this,e,r,400,"Invalid Sec-WebSocket-Protocol header");return}let d=e.headers["sec-websocket-extensions"],f={};if(this.options.perMessageDeflate&&d!==void 0){let h=new D(this.options.perMessageDeflate,!0,this.options.maxPayload);try{let _=hr.parse(d);_[D.extensionName]&&(h.accept(_[D.extensionName]),f[D.extensionName]=h)}catch{A(this,e,r,400,"Invalid or unacceptable Sec-WebSocket-Extensions header");return}}if(this.options.verifyClient){let h={origin:e.headers[`${l===8?"sec-websocket-origin":"origin"}`],secure:!!(e.socket.authorized||e.socket.encrypted),req:e};if(this.options.verifyClient.length===2){this.options.verifyClient(h,(_,m,u,x)=>{if(!_)return ne(r,m||401,u,x);this.completeUpgrade(f,n,a,e,r,s,i)});return}if(!this.options.verifyClient(h))return ne(r,401)}this.completeUpgrade(f,n,a,e,r,s,i)}completeUpgrade(e,r,s,i,n,o,l){if(!n.readable||!n.writable)return n.destroy();if(n[Qs])throw new Error("server.handleUpgrade() was called more than once with the same socket, possibly due to a misconfiguration");if(this._state>pr)return ne(n,503);let a=["HTTP/1.1 101 Switching Protocols","Upgrade: websocket","Connection: Upgrade",`Sec-WebSocket-Accept: ${Ys("sha1").update(r+Js).digest("base64")}`],d=new this.options.WebSocket(null,void 0,this.options);if(s.size){let f=this.options.handleProtocols?this.options.handleProtocols(s,i):s.values().next().value;f&&(a.push(`Sec-WebSocket-Protocol: ${f}`),d._protocol=f)}if(e[D.extensionName]){let f=e[D.extensionName].params,h=hr.format({[D.extensionName]:[f]});a.push(`Sec-WebSocket-Extensions: ${h}`),d._extensions=e}this.emit("headers",a,i),n.write(a.concat(`\r
3
3
  `).join(`\r
4
- `)),n.removeListener("error",Zt),d.setSocket(n,o,{allowSynchronousEvents:this.options.allowSynchronousEvents,maxPayload:this.options.maxPayload,skipUTF8Validation:this.options.skipUTF8Validation}),this.clients&&(this.clients.add(d),d.on("close",()=>{this.clients.delete(d),this._shouldEmitClose&&!this.clients.size&&process.nextTick(se,this)})),l(d,i)}};Qt.exports=qe;function Vs(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 se(t){t._state=Jt,t.emit("close")}function Zt(){this.destroy()}function ie(t,e,r,s){r=r||ye.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} ${ye.STATUS_CODES[e]}\r
4
+ `)),n.removeListener("error",_r),d.setSocket(n,o,{allowSynchronousEvents:this.options.allowSynchronousEvents,maxPayload:this.options.maxPayload,skipUTF8Validation:this.options.skipUTF8Validation}),this.clients&&(this.clients.add(d),d.on("close",()=>{this.clients.delete(d),this._shouldEmitClose&&!this.clients.size&&process.nextTick(ie,this)})),l(d,i)}};xr.exports=je;function ti(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 ie(t){t._state=gr,t.emit("close")}function _r(){this.destroy()}function ne(t,e,r,s){r=r||xe.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} ${xe.STATUS_CODES[e]}\r
5
5
  `+Object.keys(s).map(i=>`${i}: ${s[i]}`).join(`\r
6
6
  `)+`\r
7
7
  \r
8
- `+r)}function U(t,e,r,s,i,n){if(t.listenerCount("wsClientError")){let o=new Error(i);Error.captureStackTrace(o,U),t.emit("wsClientError",o,r,e)}else ie(r,s,i,n)}});var $e=w(require("fs"),1),nr=w(require("http"),1),z=w(require("path"),1);function Xe(t){return`
9
- <!DOCTYPE html>
10
- <html lang="pt-BR">
11
- <head>
12
- <meta charset="UTF-8">
13
- <title>\u{1F6E0} Bit-Form Remote Inspector</title>
14
- <style>
15
- *, *::before, *::after {
16
- box-sizing: border-box;
17
- }
8
+ `+r)}function A(t,e,r,s,i,n){if(t.listenerCount("wsClientError")){let o=new Error(i);Error.captureStackTrace(o,A),t.emit("wsClientError",o,r,e)}else ne(r,s,i,n)}});var B=w(require("fs"),1),Z=w(require("path"),1);function Je(){return`"use client";
18
9
 
19
- html, body {
20
- background: #0f172a;
21
- margin: 0;
22
- padding: 0;
23
- width: 100%;
24
- height: 100%;
25
- overflow-x: hidden;
26
- font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
27
- }
10
+ import { useBitField } from "@lehnihon/bit-form/react";
28
11
 
29
- .status-container {
30
- position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%);
31
- text-align: center; color: #64748b; z-index: 1;
32
- }
12
+ export interface BitFormCheckboxProps {
13
+ path: string;
14
+ label?: string;
15
+ description?: string;
16
+ className?: string;
17
+ id?: string;
18
+ }
33
19
 
34
- body.has-panel .bit-devtools-panel {
35
- display: flex !important;
36
- flex-direction: column !important;
37
- position: fixed !important;
38
- inset: 0 !important;
39
- width: 100% !important;
40
- height: 100% !important;
41
- max-width: 100% !important;
42
- max-height: 100% !important;
43
- margin: 0 !important;
44
- border-radius: 0 !important;
45
- border: none !important;
46
- box-shadow: none !important;
47
- background: #0f172a !important;
48
- z-index: 9999 !important;
49
- }
20
+ export function BitFormCheckbox({
21
+ path,
22
+ label,
23
+ description,
24
+ className,
25
+ id,
26
+ }: BitFormCheckboxProps) {
27
+ const field = useBitField(path);
28
+ const { meta } = field;
50
29
 
51
- body.has-panel .bit-store-block {
52
- border-bottom: 1px solid #1e293b !important;
53
- padding: 20px !important;
54
- width: 100%;
55
- }
30
+ if (meta.isHidden) return null;
56
31
 
57
- .bit-devtools-trigger {
58
- display: none !important;
59
- }
32
+ const inputId = id ?? path;
60
33
 
61
- body.has-panel .status-container { opacity: 0; visibility: hidden; }
62
- </style>
63
- </head>
64
- <body>
65
- <div class="status-container">
66
- <div style="font-size: 3rem; margin-bottom: 10px;">\u{1F4E1}</div>
67
- <div id="status">Aguardando dados do projeto <strong>bit-form</strong>...</div>
68
- </div>
34
+ return (
35
+ <div className="space-y-2" data-invalid={meta.invalid || undefined}>
36
+ <div className="flex items-center gap-2">
37
+ <input
38
+ id={inputId}
39
+ type="checkbox"
40
+ checked={Boolean(field.value)}
41
+ onChange={(event) => field.setValue(event.target.checked)}
42
+ onBlur={field.setBlur}
43
+ className={className}
44
+ aria-invalid={meta.invalid || undefined}
45
+ aria-required={meta.isRequired || undefined}
46
+ />
47
+ {label && (
48
+ <label htmlFor={inputId} className="text-sm font-medium leading-none">
49
+ {label}
50
+ {meta.isRequired && <span className="ml-1 text-red-600">*</span>}
51
+ </label>
52
+ )}
53
+ </div>
54
+ {description && <p className="text-sm text-slate-600">{description}</p>}
55
+ {meta.error && <p className="text-sm text-red-600">{meta.error}</p>}
56
+ </div>
57
+ );
58
+ }
59
+ `}function Qe(){return`"use client";
69
60
 
70
- <script type="module">
71
- import { initDevTools } from "/dist/devtools/index.js";
61
+ import { useBitField } from "@lehnihon/bit-form/react";
72
62
 
73
- document.body.classList.add('connected');
63
+ export interface BitFormInputProps {
64
+ path: string;
65
+ label?: string;
66
+ description?: string;
67
+ placeholder?: string;
68
+ type?: string;
69
+ className?: string;
70
+ id?: string;
71
+ }
74
72
 
75
- initDevTools({
76
- mode: "remote",
77
- url: "ws://localhost:${t}",
78
- container: document.body
79
- });
73
+ export function BitFormInput({
74
+ path,
75
+ label,
76
+ description,
77
+ placeholder,
78
+ type = "text",
79
+ className,
80
+ id,
81
+ }: BitFormInputProps) {
82
+ const field = useBitField(path);
83
+ const { meta } = field;
80
84
 
81
- const observer = new MutationObserver(() => {
82
- const panel = document.querySelector('.bit-devtools-panel');
83
- const btn = document.querySelector('.bit-devtools-trigger');
85
+ if (meta.isHidden) return null;
84
86
 
85
- if (btn && !panel) {
86
- btn.click();
87
- document.body.classList.add('has-panel');
88
- }
89
- });
87
+ const inputId = id ?? path;
90
88
 
91
- observer.observe(document.body, { childList: true, subtree: true });
92
- </script>
93
- </body>
94
- </html>`}var $s=w(jt(),1),Gs=w(Be(),1),js=w(De(),1),Hs=w(ge(),1),Ve=w(er(),1);function tr(t){return t.protocolVersion===1}function rr(t){if(!t||typeof t!="object")return!1;let e=t;return e.type==="PING"&&tr(e)}function sr(t){if(!t||typeof t!="object")return!1;let e=t;if(e.type!=="HELLO"||!e.payload||!tr(e))return!1;let r=e.payload;return(r.role==="client"||r.role==="server")&&r.protocolVersion===1}function ir(t){let e=new Ve.default({server:t});return e.on("connection",r=>{r.on("message",s=>{let i=s.toString();try{let n=JSON.parse(i);if(rr(n)||sr(n))return}catch{}e.clients.forEach(n=>{n!==r&&n.readyState===1&&n.send(i)})})}),e}function or(t=3e3){let e=nr.default.createServer((r,s)=>{let i=r.url?.split("?")[0]??"";if(i==="/"||i==="/index.html"){s.writeHead(200,{"Content-Type":"text/html; charset=utf-8"}),s.end(Xe(t));return}if(i.startsWith("/dist/")){let n=z.default.resolve(__dirname,"..","..","dist"),o=i.slice(6),l;try{l=decodeURIComponent(o)}catch{s.writeHead(400),s.end("Bad Request");return}let c=z.default.resolve(n,l),a=z.default.relative(n,c);if(a.startsWith("..")||z.default.isAbsolute(a)){s.writeHead(403),s.end("Forbidden");return}try{if($e.default.existsSync(c)){let d=$e.default.readFileSync(c),f=z.default.extname(c),u={".js":"application/javascript",".css":"text/css"};s.writeHead(200,{"Content-Type":u[f]||"text/plain"}),s.end(d)}else s.writeHead(404),s.end("Not Found")}catch{s.writeHead(500),s.end("Internal Error")}return}s.writeHead(404),s.end("Not Found")});ir(e),e.listen(t,()=>{console.log(`\u{1F680} BitForm DevServer rodando em http://localhost:${t}`)})}var L=w(require("fs"),1),ne=w(require("path"),1);function ar(t){return`"use client";
89
+ return (
90
+ <div className="space-y-2" data-invalid={meta.invalid || undefined}>
91
+ {label && (
92
+ <label htmlFor={inputId} className="block text-sm font-medium leading-none">
93
+ {label}
94
+ {meta.isRequired && <span className="ml-1 text-red-600">*</span>}
95
+ </label>
96
+ )}
97
+ <input
98
+ id={inputId}
99
+ type={type}
100
+ value={field.props.value}
101
+ onChange={field.props.onChange}
102
+ onBlur={field.props.onBlur}
103
+ placeholder={placeholder}
104
+ className={className}
105
+ aria-invalid={meta.invalid || undefined}
106
+ aria-required={meta.isRequired || undefined}
107
+ />
108
+ {description && <p className="text-sm text-slate-600">{description}</p>}
109
+ {meta.error && <p className="text-sm text-red-600">{meta.error}</p>}
110
+ </div>
111
+ );
112
+ }
113
+ `}function et(){return`"use client";
114
+
115
+ import { useBitField } from "@lehnihon/bit-form/react";
116
+
117
+ export interface BitFormRadioOption {
118
+ value: string;
119
+ label: string;
120
+ }
121
+
122
+ export interface BitFormRadioGroupProps {
123
+ path: string;
124
+ label?: string;
125
+ description?: string;
126
+ options: BitFormRadioOption[];
127
+ className?: string;
128
+ id?: string;
129
+ }
130
+
131
+ export function BitFormRadioGroup({
132
+ path,
133
+ label,
134
+ description,
135
+ options,
136
+ className,
137
+ id,
138
+ }: BitFormRadioGroupProps) {
139
+ const field = useBitField(path);
140
+ const { meta } = field;
141
+
142
+ if (meta.isHidden) return null;
143
+
144
+ const inputId = id ?? path;
145
+
146
+ return (
147
+ <fieldset className="space-y-2" data-invalid={meta.invalid || undefined}>
148
+ {label && (
149
+ <legend className="text-sm font-medium leading-none">
150
+ {label}
151
+ {meta.isRequired && <span className="ml-1 text-red-600">*</span>}
152
+ </legend>
153
+ )}
154
+ <div className={className} aria-invalid={meta.invalid || undefined}>
155
+ {options.map((option) => {
156
+ const optionId = \`\${inputId}-\${option.value}\`;
157
+
158
+ return (
159
+ <label key={option.value} htmlFor={optionId} className="flex items-center gap-2 text-sm">
160
+ <input
161
+ id={optionId}
162
+ type="radio"
163
+ name={inputId}
164
+ value={option.value}
165
+ checked={field.value === option.value}
166
+ onChange={(event) => field.setValue(event.target.value)}
167
+ onBlur={field.setBlur}
168
+ aria-required={meta.isRequired || undefined}
169
+ />
170
+ <span>{option.label}</span>
171
+ </label>
172
+ );
173
+ })}
174
+ </div>
175
+ {description && <p className="text-sm text-slate-600">{description}</p>}
176
+ {meta.error && <p className="text-sm text-red-600">{meta.error}</p>}
177
+ </fieldset>
178
+ );
179
+ }
180
+ `}function tt(){return`"use client";
181
+
182
+ import { useBitField } from "@lehnihon/bit-form/react";
183
+
184
+ export interface BitFormSelectOption {
185
+ value: string;
186
+ label: string;
187
+ }
188
+
189
+ export interface BitFormSelectProps {
190
+ path: string;
191
+ label?: string;
192
+ description?: string;
193
+ placeholder?: string;
194
+ options: BitFormSelectOption[];
195
+ className?: string;
196
+ id?: string;
197
+ }
198
+
199
+ export function BitFormSelect({
200
+ path,
201
+ label,
202
+ description,
203
+ placeholder = "Select...",
204
+ options,
205
+ className,
206
+ id,
207
+ }: BitFormSelectProps) {
208
+ const field = useBitField(path);
209
+ const { meta } = field;
210
+
211
+ if (meta.isHidden) return null;
212
+
213
+ const inputId = id ?? path;
214
+
215
+ return (
216
+ <div className="space-y-2" data-invalid={meta.invalid || undefined}>
217
+ {label && (
218
+ <label htmlFor={inputId} className="block text-sm font-medium leading-none">
219
+ {label}
220
+ {meta.isRequired && <span className="ml-1 text-red-600">*</span>}
221
+ </label>
222
+ )}
223
+ <select
224
+ id={inputId}
225
+ value={field.props.value}
226
+ onChange={field.props.onChange}
227
+ onBlur={field.props.onBlur}
228
+ className={className}
229
+ aria-invalid={meta.invalid || undefined}
230
+ aria-required={meta.isRequired || undefined}
231
+ >
232
+ <option value="" disabled={meta.isRequired}>
233
+ {placeholder}
234
+ </option>
235
+ {options.map((option) => (
236
+ <option key={option.value} value={option.value}>
237
+ {option.label}
238
+ </option>
239
+ ))}
240
+ </select>
241
+ {description && <p className="text-sm text-slate-600">{description}</p>}
242
+ {meta.error && <p className="text-sm text-red-600">{meta.error}</p>}
243
+ </div>
244
+ );
245
+ }
246
+ `}function rt(){return`"use client";
247
+
248
+ import { useBitField } from "@lehnihon/bit-form/react";
249
+
250
+ export interface BitFormTextareaProps {
251
+ path: string;
252
+ label?: string;
253
+ description?: string;
254
+ placeholder?: string;
255
+ rows?: number;
256
+ className?: string;
257
+ id?: string;
258
+ }
259
+
260
+ export function BitFormTextarea({
261
+ path,
262
+ label,
263
+ description,
264
+ placeholder,
265
+ rows = 3,
266
+ className,
267
+ id,
268
+ }: BitFormTextareaProps) {
269
+ const field = useBitField(path);
270
+ const { meta } = field;
271
+
272
+ if (meta.isHidden) return null;
273
+
274
+ const inputId = id ?? path;
275
+
276
+ return (
277
+ <div className="space-y-2" data-invalid={meta.invalid || undefined}>
278
+ {label && (
279
+ <label htmlFor={inputId} className="block text-sm font-medium leading-none">
280
+ {label}
281
+ {meta.isRequired && <span className="ml-1 text-red-600">*</span>}
282
+ </label>
283
+ )}
284
+ <textarea
285
+ id={inputId}
286
+ value={field.props.value}
287
+ onChange={field.props.onChange}
288
+ onBlur={field.props.onBlur}
289
+ placeholder={placeholder}
290
+ rows={rows}
291
+ className={className}
292
+ aria-invalid={meta.invalid || undefined}
293
+ aria-required={meta.isRequired || undefined}
294
+ />
295
+ {description && <p className="text-sm text-slate-600">{description}</p>}
296
+ {meta.error && <p className="text-sm text-red-600">{meta.error}</p>}
297
+ </div>
298
+ );
299
+ }
300
+ `}var be={input:Qe,textarea:rt,select:tt,checkbox:Je,"radio-group":et},Se=Object.keys(be);var st={name:"html",framework:"react",components:Se,renderComponent(t,e){let r=t.toLowerCase().replace(/\s+/g,"-"),s=be[r];if(!s)throw new Error(`Unknown html component: ${t}. Available: ${Se.join(", ")}`);return{filename:`bit-form-${r}.tsx`,contents:s()}}};function it(t){return`"use client";
95
301
 
96
302
  import { Input } from "${t}/input";
97
303
  import { useBitField } from "@lehnihon/bit-form/react";
@@ -153,7 +359,7 @@ export function BitFormInput({
153
359
  </div>
154
360
  );
155
361
  }
156
- `}function lr(t){return`"use client";
362
+ `}function nt(t){return`"use client";
157
363
 
158
364
  import { Textarea } from "${t}/textarea";
159
365
  import { useBitField } from "@lehnihon/bit-form/react";
@@ -215,7 +421,7 @@ export function BitFormTextarea({
215
421
  </div>
216
422
  );
217
423
  }
218
- `}function cr(t){return`"use client";
424
+ `}function ot(t){return`"use client";
219
425
 
220
426
  import {
221
427
  Select,
@@ -297,7 +503,7 @@ export function BitFormSelect({
297
503
  </div>
298
504
  );
299
505
  }
300
- `}function dr(t){return`"use client";
506
+ `}function at(t){return`"use client";
301
507
 
302
508
  import { Checkbox } from "${t}/checkbox";
303
509
  import { useBitField } from "@lehnihon/bit-form/react";
@@ -356,7 +562,7 @@ export function BitFormCheckbox({
356
562
  </div>
357
563
  );
358
564
  }
359
- `}function fr(t){return`"use client";
565
+ `}function lt(t){return`"use client";
360
566
 
361
567
  import { Switch } from "${t}/switch";
362
568
  import { useBitField } from "@lehnihon/bit-form/react";
@@ -414,7 +620,7 @@ export function BitFormSwitch({
414
620
  </div>
415
621
  );
416
622
  }
417
- `}function hr(t){return`"use client";
623
+ `}function ct(t){return`"use client";
418
624
 
419
625
  import { RadioGroup, RadioGroupItem } from "${t}/radio-group";
420
626
  import { useBitField } from "@lehnihon/bit-form/react";
@@ -486,7 +692,93 @@ export function BitFormRadioGroup({
486
692
  </div>
487
693
  );
488
694
  }
489
- `}var Ge={input:ar,textarea:lr,select:cr,checkbox:dr,switch:fr,"radio-group":hr},je=Object.keys(Ge);var ur={name:"shadcn",framework:"react",components:je,renderComponent(t,e){let r=t.toLowerCase().replace(/\s+/g,"-"),s=Ge[r];if(!s)throw new Error(`Unknown shadcn component: ${t}. Available: ${je.join(", ")}`);let i=s(e.uiPath);return{filename:r==="radio-group"?"bit-form-radio-group.tsx":`bit-form-${r}.tsx`,contents:i}}};var zs={shadcn:ur};function pr(t){return zs[t.toLowerCase()]}var Ys="@/components/ui";function Ks(t){let e=t[0]??"",r=t.slice(1),s=".",i=Ys,n=!1,o=!1,l=[];for(let c=0;c<r.length;c++){let a=r[c];a==="--path"&&r[c+1]?s=r[++c]:a==="--ui-path"&&r[c+1]?i=r[++c]:a==="--overwrite"?n=!0:a==="--yes"||a==="-y"?o=!0:a.startsWith("--")||l.push(a)}return{adapter:e,components:l,flags:{path:s,uiPath:i,overwrite:n,yes:o}}}function Xs(t){let e=ne.join(t,"components.json");try{return L.accessSync(e),!0}catch{return!1}}function mr(t){let{adapter:e,components:r,flags:s}=Ks(t);if(!e)throw new Error("bit-form add: missing adapter name. Example: bit-form add shadcn input");let i=pr(e);if(!i)throw new Error(`bit-form add: unknown adapter "${e}". Available: shadcn`);let n=r.length>0?r:i.components;if(n.length===0)throw new Error("bit-form add: specify at least one component or use no arguments to add all.");let o=process.cwd(),l=ne.resolve(o,s.path);i.name==="shadcn"&&!Xs(o)&&console.warn("Warning: components.json not found in project root. Make sure shadcn/ui is initialized (e.g. npx shadcn@latest init) or pass --ui-path to match your setup.");try{L.mkdirSync(l,{recursive:!0})}catch(a){let d=a instanceof Error?a.message:String(a);throw new Error(`bit-form add: could not create output directory: ${d}`,{cause:a})}let c={cwd:o,path:l,uiPath:s.uiPath,overwrite:s.overwrite,yes:s.yes};for(let a of n){let{filename:d,contents:f}=i.renderComponent(a,c),u=ne.join(l,d);if(!s.overwrite&&L.existsSync(u)){console.log(`Skip ${d} (exists; use --overwrite to replace)`);continue}L.writeFileSync(u,f,"utf-8"),console.log(`Created ${d}`)}}var Y=process.argv.slice(2),_r=Y[0];if(_r==="devtools"){let t=Y.indexOf("-p")!==-1?Y.indexOf("-p"):Y.indexOf("--port"),e=t!==-1?Number(Y[t+1]):3e3;or(e)}else if(_r==="add")try{mr(Y.slice(1))}catch(t){console.error(t.message),process.exit(1)}else console.log(`
695
+ `}var Ee={input:it,textarea:nt,select:ot,checkbox:at,switch:lt,"radio-group":ct},we=Object.keys(Ee);var dt={name:"shadcn",framework:"react",components:we,renderComponent(t,e){let r=t.toLowerCase().replace(/\s+/g,"-"),s=Ee[r];if(!s)throw new Error(`Unknown shadcn component: ${t}. Available: ${we.join(", ")}`);let i=s(e.uiPath);return{filename:r==="radio-group"?"bit-form-radio-group.tsx":`bit-form-${r}.tsx`,contents:i}}};var ft={shadcn:dt,html:st};function ut(t){return ft[t.toLowerCase()]}function ht(){return Object.keys(ft)}var Ir="@/components/ui";function Lr(t){let e=t[0]??"",r=t.slice(1),s=".",i=Ir,n=!1,o=!1,l=[];for(let c=0;c<r.length;c++){let a=r[c];a==="--path"&&r[c+1]?s=r[++c]:a==="--ui-path"&&r[c+1]?i=r[++c]:a==="--overwrite"?n=!0:a==="--yes"||a==="-y"?o=!0:a.startsWith("--")||l.push(a)}return{adapter:e,components:l,flags:{path:s,uiPath:i,overwrite:n,yes:o}}}function Dr(t){let e=Z.join(t,"components.json");try{return B.accessSync(e),!0}catch{return!1}}function pt(t){let{adapter:e,components:r,flags:s}=Lr(t);if(!e)throw new Error("bit-form add: missing adapter name. Example: bit-form add shadcn input");let i=ut(e);if(!i)throw new Error(`bit-form add: unknown adapter "${e}". Available: ${ht().join(", ")}`);let n=r.length>0?r:i.components;if(n.length===0)throw new Error("bit-form add: specify at least one component or use no arguments to add all.");let o=process.cwd(),l=Z.resolve(o,s.path);i.name==="shadcn"&&!Dr(o)&&console.warn("Warning: components.json not found in project root. Make sure shadcn/ui is initialized (e.g. npx shadcn@latest init) or pass --ui-path to match your setup.");try{B.mkdirSync(l,{recursive:!0})}catch(a){let d=a instanceof Error?a.message:String(a);throw new Error(`bit-form add: could not create output directory: ${d}`,{cause:a})}let c={cwd:o,path:l,uiPath:s.uiPath,overwrite:s.overwrite,yes:s.yes};for(let a of n){let{filename:d,contents:f}=i.renderComponent(a,c),h=Z.join(l,d);if(!s.overwrite&&B.existsSync(h)){console.log(`Skip ${d} (exists; use --overwrite to replace)`);continue}B.writeFileSync(h,f,"utf-8"),console.log(`Created ${d}`)}}var ze=w(require("fs"),1),wr=w(require("http"),1),z=w(require("path"),1);function mt(t){return`
696
+ <!DOCTYPE html>
697
+ <html lang="pt-BR">
698
+ <head>
699
+ <meta charset="UTF-8">
700
+ <title>\u{1F6E0} Bit-Form Remote Inspector</title>
701
+ <style>
702
+ *, *::before, *::after {
703
+ box-sizing: border-box;
704
+ }
705
+
706
+ html, body {
707
+ background: #0f172a;
708
+ margin: 0;
709
+ padding: 0;
710
+ width: 100%;
711
+ height: 100%;
712
+ overflow-x: hidden;
713
+ font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
714
+ }
715
+
716
+ .status-container {
717
+ position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%);
718
+ text-align: center; color: #64748b; z-index: 1;
719
+ }
720
+
721
+ body.has-panel .bit-devtools-panel {
722
+ display: flex !important;
723
+ flex-direction: column !important;
724
+ position: fixed !important;
725
+ inset: 0 !important;
726
+ width: 100% !important;
727
+ height: 100% !important;
728
+ max-width: 100% !important;
729
+ max-height: 100% !important;
730
+ margin: 0 !important;
731
+ border-radius: 0 !important;
732
+ border: none !important;
733
+ box-shadow: none !important;
734
+ background: #0f172a !important;
735
+ z-index: 9999 !important;
736
+ }
737
+
738
+ body.has-panel .bit-store-block {
739
+ border-bottom: 1px solid #1e293b !important;
740
+ padding: 20px !important;
741
+ width: 100%;
742
+ }
743
+
744
+ .bit-devtools-trigger {
745
+ display: none !important;
746
+ }
747
+
748
+ body.has-panel .status-container { opacity: 0; visibility: hidden; }
749
+ </style>
750
+ </head>
751
+ <body>
752
+ <div class="status-container">
753
+ <div style="font-size: 3rem; margin-bottom: 10px;">\u{1F4E1}</div>
754
+ <div id="status">Aguardando dados do projeto <strong>bit-form</strong>...</div>
755
+ </div>
756
+
757
+ <script type="module">
758
+ import { initDevTools } from "/dist/devtools/index.js";
759
+
760
+ document.body.classList.add('connected');
761
+
762
+ initDevTools({
763
+ mode: "remote",
764
+ url: "ws://localhost:${t}",
765
+ container: document.body
766
+ });
767
+
768
+ const observer = new MutationObserver(() => {
769
+ const panel = document.querySelector('.bit-devtools-panel');
770
+ const btn = document.querySelector('.bit-devtools-trigger');
771
+
772
+ if (btn && !panel) {
773
+ btn.click();
774
+ document.body.classList.add('has-panel');
775
+ }
776
+ });
777
+
778
+ observer.observe(document.body, { childList: true, subtree: true });
779
+ </script>
780
+ </body>
781
+ </html>`}var ri=w(dr(),1),si=w(Le(),1),ii=w(Ue(),1),ni=w(ge(),1),He=w(yr(),1);function vr(t){return t.protocolVersion===1}function br(t){if(!t||typeof t!="object")return!1;let e=t;return e.type==="PING"&&vr(e)}function Sr(t){if(!t||typeof t!="object")return!1;let e=t;if(e.type!=="HELLO"||!e.payload||!vr(e))return!1;let r=e.payload;return(r.role==="client"||r.role==="server")&&r.protocolVersion===1}function Er(t){let e=new He.default({server:t});return e.on("connection",r=>{r.on("message",s=>{let i=s.toString();try{let n=JSON.parse(i);if(br(n)||Sr(n))return}catch{}e.clients.forEach(n=>{n!==r&&n.readyState===1&&n.send(i)})})}),e}function Tr(t=3e3){let e=wr.default.createServer((r,s)=>{let i=r.url?.split("?")[0]??"";if(i==="/"||i==="/index.html"){s.writeHead(200,{"Content-Type":"text/html; charset=utf-8"}),s.end(mt(t));return}if(i.startsWith("/dist/")){let n=z.default.resolve(__dirname,"..","..","dist"),o=i.slice(6),l;try{l=decodeURIComponent(o)}catch{s.writeHead(400),s.end("Bad Request");return}let c=z.default.resolve(n,l),a=z.default.relative(n,c);if(a.startsWith("..")||z.default.isAbsolute(a)){s.writeHead(403),s.end("Forbidden");return}try{if(ze.default.existsSync(c)){let d=ze.default.readFileSync(c),f=z.default.extname(c),h={".js":"application/javascript",".css":"text/css"};s.writeHead(200,{"Content-Type":h[f]||"text/plain"}),s.end(d)}else s.writeHead(404),s.end("Not Found")}catch{s.writeHead(500),s.end("Internal Error")}return}s.writeHead(404),s.end("Not Found")});Er(e),e.listen(t,()=>{console.log(`\u{1F680} BitForm DevServer rodando em http://localhost:${t}`)})}var Y=process.argv.slice(2),Nr=Y[0];if(Nr==="devtools"){let t=Y.indexOf("-p")!==-1?Y.indexOf("-p"):Y.indexOf("--port"),e=t!==-1?Number(Y[t+1]):3e3;Tr(e)}else if(Nr==="add")try{pt(Y.slice(1))}catch(t){console.error(t.message),process.exit(1)}else console.log(`
490
782
  \u{1F6E0} Bit-Form CLI
491
783
 
492
784
  Uso:
@@ -494,11 +786,13 @@ export function BitFormRadioGroup({
494
786
 
495
787
  Comandos dispon\xEDveis:
496
788
  devtools Inicia o servidor local do Remote Inspector
497
- add Gera wrappers Bit-Form para UI (ex.: shadcn)
789
+ add Gera wrappers Bit-Form para UI (ex.: shadcn, html)
498
790
 
499
791
  Exemplo add:
500
792
  bit-form add shadcn input textarea select
793
+ bit-form add html input textarea select checkbox radio-group
501
794
  bit-form add shadcn --path ./components --ui-path @/components/ui --overwrite
795
+ bit-form add html --path ./components/forms --overwrite
502
796
 
503
797
  Op\xE7\xF5es do devtools:
504
798
  -p, --port Define a porta do servidor (padr\xE3o: 3000)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lehnihon/bit-form",
3
- "version": "2.2.14",
3
+ "version": "2.2.15",
4
4
  "description": "Gerenciamento de estado de formulários agnóstico e performático",
5
5
  "publishConfig": {
6
6
  "access": "public"