eve 0.27.0 → 0.27.2
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/CHANGELOG.md +31 -0
- package/dist/src/channel/resolve-active-session.d.ts +4 -0
- package/dist/src/channel/resolve-active-session.js +1 -0
- package/dist/src/channel/routes.d.ts +11 -0
- package/dist/src/chunks/{use-eve-agent-PMY2WkAt.js → use-eve-agent-CbF0l_Fp.js} +66 -27
- package/dist/src/chunks/{use-eve-agent-AeQLLhu9.js → use-eve-agent-CgxB9WQv.js} +66 -27
- package/dist/src/cli/dev/tui/vercel-trusted-sources-policy.d.ts +1 -1
- package/dist/src/cli/dev/tui/vercel-trusted-sources.js +1 -1
- package/dist/src/client/index.d.ts +1 -1
- package/dist/src/client/open-stream.d.ts +15 -2
- package/dist/src/client/open-stream.js +1 -1
- package/dist/src/client/session.d.ts +3 -2
- package/dist/src/client/session.js +1 -1
- package/dist/src/client/types.d.ts +32 -0
- package/dist/src/compiled/.vendor-stamp.json +16 -16
- package/dist/src/compiled/@ai-sdk/anthropic/index.js +2 -2
- package/dist/src/compiled/@ai-sdk/google/index.d.ts +9 -2
- package/dist/src/compiled/@ai-sdk/google/index.js +6 -6
- package/dist/src/compiled/@ai-sdk/mcp/index.d.ts +18 -3
- package/dist/src/compiled/@ai-sdk/mcp/index.js +1 -1
- package/dist/src/compiled/@ai-sdk/openai/index.d.ts +285 -24
- package/dist/src/compiled/@ai-sdk/openai/index.js +2 -2
- package/dist/src/compiled/@ai-sdk/otel/index.js +1 -1
- package/dist/src/compiled/@ai-sdk/provider-utils/index.d.ts +7 -3
- package/dist/src/compiled/@vercel/oidc/index.js +28 -2
- package/dist/src/compiled/@vercel/sandbox/api-client/api-client.d.ts +11 -0
- package/dist/src/compiled/@vercel/sandbox/api-client/validators.d.ts +7 -0
- package/dist/src/compiled/@vercel/sandbox/command.d.ts +8 -0
- package/dist/src/compiled/@vercel/sandbox/execution-context.d.ts +116 -0
- package/dist/src/compiled/@vercel/sandbox/index.d.ts +3 -1
- package/dist/src/compiled/@vercel/sandbox/index.js +20 -19
- package/dist/src/compiled/@vercel/sandbox/network-policy.d.ts +13 -5
- package/dist/src/compiled/@vercel/sandbox/sandbox-user.d.ts +212 -0
- package/dist/src/compiled/@vercel/sandbox/sandbox.d.ts +133 -2
- package/dist/src/compiled/@vercel/sandbox/session.d.ts +2 -1
- package/dist/src/compiled/@vercel/sandbox/snapshot.d.ts +1 -1
- package/dist/src/compiled/@workflow/core/create-hook.d.ts +41 -22
- package/dist/src/compiled/@workflow/core/flushable-stream.d.ts +29 -0
- package/dist/src/compiled/@workflow/core/global.d.ts +2 -0
- package/dist/src/compiled/@workflow/core/index.js +2 -2
- package/dist/src/compiled/@workflow/core/private.d.ts +6 -17
- package/dist/src/compiled/@workflow/core/private.js +1 -1
- package/dist/src/compiled/@workflow/core/replay-payload-cache.d.ts +56 -0
- package/dist/src/compiled/@workflow/core/runtime/constants.d.ts +11 -0
- package/dist/src/compiled/@workflow/core/runtime/helpers.d.ts +6 -4
- package/dist/src/compiled/@workflow/core/runtime/resume-hook.d.ts +4 -1
- package/dist/src/compiled/@workflow/core/runtime/step-executor.d.ts +39 -0
- package/dist/src/compiled/@workflow/core/runtime.js +3 -3
- package/dist/src/compiled/@workflow/core/serialization.d.ts +44 -4
- package/dist/src/compiled/@workflow/core/symbols.d.ts +13 -0
- package/dist/src/compiled/@workflow/core/version.d.ts +1 -1
- package/dist/src/compiled/@workflow/core/workflow.js +1 -1
- package/dist/src/compiled/@workflow/errors/error-codes.d.ts +2 -0
- package/dist/src/compiled/@workflow/errors/index.d.ts +14 -0
- package/dist/src/compiled/@workflow/errors/index.js +1 -1
- package/dist/src/compiled/@workflow/world/events.d.ts +15 -0
- package/dist/src/compiled/@workflow/world/hooks.d.ts +2 -1
- package/dist/src/compiled/@workflow/world/interfaces.d.ts +77 -4
- package/dist/src/compiled/@workflow/world-local/index.js +4 -4
- package/dist/src/compiled/@workflow/world-vercel/index.js +16 -16
- package/dist/src/compiled/_chunks/node/{auth-BuQkq4Gr.js → auth-l7F2PF2b.js} +2 -2
- package/dist/src/compiled/_chunks/node/{version-DD-FX9rK.js → version-CjHTLx2a.js} +1 -1
- package/dist/src/compiled/_chunks/node/virtual-loader-Cwgujv7l.js +1 -0
- package/dist/src/compiled/_chunks/workflow/attribute-changes-Dk1fP6vt.js +20 -0
- package/dist/src/compiled/_chunks/workflow/{chunk-BHKSVoKr.js → chunk-BTyA9uPd.js} +1 -1
- package/dist/src/compiled/_chunks/workflow/dist-B3qkUnLJ.js +3 -0
- package/dist/src/compiled/_chunks/workflow/{dist-CSfKNxQW.js → dist-BX517Nmz.js} +2 -2
- package/dist/src/compiled/_chunks/workflow/{dist-zLevmMyU.js → dist-C_VDTghO.js} +10 -10
- package/dist/src/compiled/_chunks/workflow/{dist-CttsoN4D.js → dist-CrxV2rsR.js} +1 -1
- package/dist/src/compiled/_chunks/workflow/{functions-PT9ri9Hu.js → functions-Dv8dc_-I.js} +1 -1
- package/dist/src/compiled/_chunks/workflow/resume-hook-czpG5xnP.js +1 -0
- package/dist/src/compiled/_chunks/workflow/run-6zaMjFY6.js +1 -0
- package/dist/src/compiled/_chunks/workflow/sleep-B2u06FWc.js +1 -0
- package/dist/src/compiled/_chunks/workflow/{src-CQuMexnO.js → src-D1EltLDA.js} +1 -1
- package/dist/src/compiled/_chunks/workflow/{token-CaY0nA5J.js → token-Cz223z3C.js} +1 -1
- package/dist/src/compiled/_chunks/workflow/token-DWqA5-DA.js +1 -0
- package/dist/src/compiled/_chunks/workflow/token-util-B6qBs3-0.js +27 -0
- package/dist/src/compiled/_chunks/workflow/{undici-fb54XL8i.js → undici-C2ZhYnV9.js} +1 -1
- package/dist/src/compiled/_chunks/workflow/wrapper-Cc2otuUR.js +6 -0
- package/dist/src/compiled/env-runner/index.js +1 -1
- package/dist/src/compiled/env-runner/node-worker.js +1 -1
- package/dist/src/compiled/eventsource-parser/stream/index.d.ts +16 -3
- package/dist/src/compiled/jose/index.js +1 -1
- package/dist/src/compiler/compile-from-memory.d.ts +5 -0
- package/dist/src/compiler/compile-from-memory.js +1 -1
- package/dist/src/compiler/extension-compatibility.d.ts +10 -10
- package/dist/src/compiler/extension-compatibility.js +1 -1
- package/dist/src/execution/deliver-payloads.d.ts +1 -1
- package/dist/src/execution/deliver-payloads.js +1 -1
- package/dist/src/execution/workflow-entry.js +1 -1
- package/dist/src/execution/workflow-steps.js +1 -1
- package/dist/src/harness/session-limit-continuation.d.ts +8 -0
- package/dist/src/harness/session-limit-continuation.js +1 -1
- package/dist/src/harness/session-limit-enforcement.d.ts +9 -6
- package/dist/src/harness/session-limit-enforcement.js +1 -1
- package/dist/src/harness/stale-input-responses.d.ts +21 -3
- package/dist/src/harness/stale-input-responses.js +2 -2
- package/dist/src/harness/tool-loop.js +2 -2
- package/dist/src/harness/turn-cancellation.d.ts +13 -0
- package/dist/src/harness/turn-cancellation.js +1 -1
- package/dist/src/internal/application/package.js +1 -1
- package/dist/src/internal/authored-module-evaluation-error.d.ts +2 -0
- package/dist/src/internal/authored-module-evaluation-error.js +4 -0
- package/dist/src/internal/authored-module-loader.js +2 -2
- package/dist/src/internal/nitro/routes/channel-dispatch.js +1 -1
- package/dist/src/internal/workflow-bundle/vercel-workflow-output.js +1 -1
- package/dist/src/node_modules/.pnpm/@vercel_sdk@1.28.8/node_modules/@vercel/sdk/esm/models/updateprojectblock.js +1 -0
- package/dist/src/node_modules/.pnpm/@vercel_sdk@1.28.8/node_modules/@vercel/sdk/esm/models/updateprojectprojectsbranchmatcher.js +1 -0
- package/dist/src/packages/eve-catalog/src/index.js +1 -1
- package/dist/src/public/channels/discord/defaults.js +1 -1
- package/dist/src/public/channels/eve.js +2 -1
- package/dist/src/public/channels/linear/api.d.ts +2 -0
- package/dist/src/public/channels/linear/api.js +3 -1
- package/dist/src/public/channels/linear/defaults.js +2 -2
- package/dist/src/public/channels/linear/hitl.d.ts +8 -13
- package/dist/src/public/channels/linear/hitl.js +3 -3
- package/dist/src/public/channels/linear/index.d.ts +1 -1
- package/dist/src/public/channels/linear/index.js +1 -1
- package/dist/src/public/channels/linear/linearChannel.js +1 -1
- package/dist/src/public/channels/slack/api.d.ts +46 -2
- package/dist/src/public/channels/slack/api.js +1 -1
- package/dist/src/public/channels/slack/attachments.d.ts +6 -5
- package/dist/src/public/channels/slack/defaults.js +1 -1
- package/dist/src/public/channels/slack/inbound.d.ts +31 -0
- package/dist/src/public/channels/slack/inbound.js +1 -1
- package/dist/src/public/channels/slack/index.d.ts +2 -2
- package/dist/src/public/channels/slack/interactions.d.ts +2 -1
- package/dist/src/public/channels/slack/interactions.js +1 -1
- package/dist/src/public/channels/slack/slackChannel.d.ts +118 -13
- package/dist/src/public/channels/slack/slackChannel.js +1 -1
- package/dist/src/public/channels/slack/thread.d.ts +4 -3
- package/dist/src/public/channels/slack/thread.js +1 -1
- package/dist/src/public/channels/teams/defaults.js +2 -2
- package/dist/src/public/channels/teams/index.d.ts +1 -1
- package/dist/src/public/channels/teams/teamsChannel.d.ts +7 -2
- package/dist/src/public/channels/teams/teamsChannel.js +1 -1
- package/dist/src/public/channels/telegram/defaults.js +1 -1
- package/dist/src/public/definitions/channel.d.ts +1 -1
- package/dist/src/runtime/framework-tools/connection-search-dynamic.js +2 -1
- package/dist/src/setup/scaffold/create/add-to-project.js +1 -1
- package/dist/src/setup/scaffold/create/project.js +2 -2
- package/dist/src/setup/scaffold/create/web-template.d.ts +1 -1
- package/dist/src/setup/scaffold/create/web-template.js +90 -5
- package/dist/src/setup/scaffold/update/channels.js +2 -2
- package/dist/src/setup/scaffold/update/connections.js +1 -1
- package/dist/src/svelte/index.js +1 -1
- package/dist/src/svelte/use-eve-agent.js +1 -1
- package/dist/src/vue/index.js +1 -1
- package/dist/src/vue/use-eve-agent.js +1 -1
- package/docs/agent-config.md +10 -5
- package/docs/channels/slack.mdx +115 -12
- package/docs/channels/teams.mdx +10 -3
- package/docs/guides/client/streaming.mdx +15 -0
- package/docs/guides/deployment/vercel.mdx +1 -1
- package/docs/guides/frontend/overview.mdx +2 -0
- package/package.json +22 -22
- package/dist/src/compiled/@workflow/core/step-hydration-cache.d.ts +0 -148
- package/dist/src/compiled/_chunks/node/virtual-loader-B8K8w9cr.js +0 -1
- package/dist/src/compiled/_chunks/workflow/attribute-changes-CXiYB8h9.js +0 -20
- package/dist/src/compiled/_chunks/workflow/dist-BYo8Gno2.js +0 -3
- package/dist/src/compiled/_chunks/workflow/resume-hook-CHXbXuRZ.js +0 -1
- package/dist/src/compiled/_chunks/workflow/run-BjtAGa3_.js +0 -1
- package/dist/src/compiled/_chunks/workflow/sleep-BJAv0MFP.js +0 -1
- package/dist/src/compiled/_chunks/workflow/token-D4VIwGlD.js +0 -1
- package/dist/src/compiled/_chunks/workflow/wrapper-ulTvoTdW.js +0 -6
- package/dist/src/node_modules/.pnpm/@vercel_sdk@1.28.1/node_modules/@vercel/sdk/esm/models/updateprojectprojectsaction.js +0 -1
- package/dist/src/node_modules/.pnpm/@vercel_sdk@1.28.1/node_modules/@vercel/sdk/esm/models/updateprojectprojectsoptionsallowlist.js +0 -1
- /package/dist/src/node_modules/.pnpm/{@vercel_sdk@1.28.1 → @vercel_sdk@1.28.8}/node_modules/@vercel/sdk/esm/lib/primitives.js +0 -0
- /package/dist/src/node_modules/.pnpm/{@vercel_sdk@1.28.1 → @vercel_sdk@1.28.8}/node_modules/@vercel/sdk/esm/lib/schemas.js +0 -0
- /package/dist/src/node_modules/.pnpm/{@vercel_sdk@1.28.1 → @vercel_sdk@1.28.8}/node_modules/@vercel/sdk/esm/models/aclaction.js +0 -0
- /package/dist/src/node_modules/.pnpm/{@vercel_sdk@1.28.1 → @vercel_sdk@1.28.8}/node_modules/@vercel/sdk/esm/models/sdkvalidationerror.js +0 -0
- /package/dist/src/node_modules/.pnpm/{@vercel_sdk@1.28.1 → @vercel_sdk@1.28.8}/node_modules/@vercel/sdk/esm/types/defaultToZeroValue.js +0 -0
- /package/dist/src/node_modules/.pnpm/{@vercel_sdk@1.28.1 → @vercel_sdk@1.28.8}/node_modules/@vercel/sdk/esm/types/fp.js +0 -0
- /package/dist/src/node_modules/.pnpm/{@vercel_sdk@1.28.1 → @vercel_sdk@1.28.8}/node_modules/@vercel/sdk/esm/types/primitives.js +0 -0
- /package/dist/src/node_modules/.pnpm/{@vercel_sdk@1.28.1 → @vercel_sdk@1.28.8}/node_modules/@vercel/sdk/esm/types/rfcdate.js +0 -0
- /package/dist/src/node_modules/.pnpm/{@vercel_sdk@1.28.1 → @vercel_sdk@1.28.8}/node_modules/@vercel/sdk/esm/types/smartUnion.js +0 -0
- /package/dist/src/node_modules/.pnpm/{@vercel_sdk@1.28.1 → @vercel_sdk@1.28.8}/node_modules/@vercel/sdk/esm/types/unrecognized.js +0 -0
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import{i as e,n as t,o as n,t as r}from"./chunk-BTyA9uPd.js";var i=r(((e,t)=>{let n=[`nodebuffer`,`arraybuffer`,`fragments`],r=typeof Blob<`u`;r&&n.push(`blob`),t.exports={BINARY_TYPES:n,CLOSE_TIMEOUT:3e4,EMPTY_BUFFER:Buffer.alloc(0),GUID:`258EAFA5-E914-47DA-95CA-C5AB0DC85B11`,hasBlob:r,kForOnEventAttribute:Symbol(`kIsForOnEventAttribute`),kListener:Symbol(`kListener`),kStatusCode:Symbol(`status-code`),kWebSocket:Symbol(`websocket`),NOOP:()=>{}}})),a=r(((t,n)=>{let{EMPTY_BUFFER:r}=i(),a=Buffer[Symbol.species];function o(e,t){if(e.length===0)return r;if(e.length===1)return e[0];let n=Buffer.allocUnsafe(t),i=0;for(let t=0;t<e.length;t++){let r=e[t];n.set(r,i),i+=r.length}return i<t?new a(n.buffer,n.byteOffset,i):n}function s(e,t,n,r,i){for(let a=0;a<i;a++)n[r+a]=e[a]^t[a&3]}function c(e,t){for(let n=0;n<e.length;n++)e[n]^=t[n&3]}function l(e){return e.length===e.buffer.byteLength?e.buffer:e.buffer.slice(e.byteOffset,e.byteOffset+e.length)}function u(e){if(u.readOnly=!0,Buffer.isBuffer(e))return e;let t;return e instanceof ArrayBuffer?t=new a(e):ArrayBuffer.isView(e)?t=new a(e.buffer,e.byteOffset,e.byteLength):(t=Buffer.from(e),u.readOnly=!1),t}if(n.exports={concat:o,mask:s,toArrayBuffer:l,toBuffer:u,unmask:c},!process.env.WS_NO_BUFFER_UTIL)try{let t=e(`bufferutil`);n.exports.mask=function(e,n,r,i,a){a<48?s(e,n,r,i,a):t.mask(e,n,r,i,a)},n.exports.unmask=function(e,n){e.length<32?c(e,n):t.unmask(e,n)}}catch{}})),o=r(((e,t)=>{let n=Symbol(`kDone`),r=Symbol(`kRun`);t.exports=class{constructor(e){this[n]=()=>{this.pending--,this[r]()},this.concurrency=e||1/0,this.jobs=[],this.pending=0}add(e){this.jobs.push(e),this[r]()}[r](){if(this.pending!==this.concurrency&&this.jobs.length){let e=this.jobs.shift();this.pending++,e(this[n])}}}})),s=r(((t,n)=>{let r=e(`zlib`),s=a(),c=o(),{kStatusCode:l}=i(),u=Buffer[Symbol.species],d=Buffer.from([0,0,255,255]),f=Symbol(`permessage-deflate`),p=Symbol(`total-length`),m=Symbol(`callback`),h=Symbol(`buffers`),g=Symbol(`error`),_;n.exports=class{constructor(e){this._options=e||{},this._threshold=this._options.threshold===void 0?1024:this._options.threshold,this._maxPayload=this._options.maxPayload|0,this._isServer=!!this._options.isServer,this._deflate=null,this._inflate=null,this.params=null,_||=new c(this._options.concurrencyLimit===void 0?10:this._options.concurrencyLimit)}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??(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(),null),this._deflate){let e=this._deflate[m];this._deflate.close(),this._deflate=null,e&&e(Error(`The deflate stream was closed while data was being processed`))}}acceptAsServer(e){let t=this._options,n=e.find(e=>!(t.serverNoContextTakeover===!1&&e.server_no_context_takeover||e.server_max_window_bits&&(t.serverMaxWindowBits===!1||typeof t.serverMaxWindowBits==`number`&&t.serverMaxWindowBits>e.server_max_window_bits)||typeof t.clientMaxWindowBits==`number`&&!e.client_max_window_bits));if(!n)throw Error(`None of the extension offers can be accepted`);return t.serverNoContextTakeover&&(n.server_no_context_takeover=!0),t.clientNoContextTakeover&&(n.client_no_context_takeover=!0),typeof t.serverMaxWindowBits==`number`&&(n.server_max_window_bits=t.serverMaxWindowBits),typeof t.clientMaxWindowBits==`number`?n.client_max_window_bits=t.clientMaxWindowBits:(n.client_max_window_bits===!0||t.clientMaxWindowBits===!1)&&delete n.client_max_window_bits,n}acceptAsClient(e){let t=e[0];if(this._options.clientNoContextTakeover===!1&&t.client_no_context_takeover)throw Error(`Unexpected parameter "client_no_context_takeover"`);if(!t.client_max_window_bits)typeof this._options.clientMaxWindowBits==`number`&&(t.client_max_window_bits=this._options.clientMaxWindowBits);else if(this._options.clientMaxWindowBits===!1||typeof this._options.clientMaxWindowBits==`number`&&t.client_max_window_bits>this._options.clientMaxWindowBits)throw Error(`Unexpected or invalid parameter "client_max_window_bits"`);return t}normalizeParams(e){return e.forEach(e=>{Object.keys(e).forEach(t=>{let n=e[t];if(n.length>1)throw Error(`Parameter "${t}" must have only a single value`);if(n=n[0],t===`client_max_window_bits`){if(n!==!0){let e=+n;if(!Number.isInteger(e)||e<8||e>15)throw TypeError(`Invalid value for parameter "${t}": ${n}`);n=e}else if(!this._isServer)throw TypeError(`Invalid value for parameter "${t}": ${n}`)}else if(t===`server_max_window_bits`){let e=+n;if(!Number.isInteger(e)||e<8||e>15)throw TypeError(`Invalid value for parameter "${t}": ${n}`);n=e}else if(t===`client_no_context_takeover`||t===`server_no_context_takeover`){if(n!==!0)throw TypeError(`Invalid value for parameter "${t}": ${n}`)}else throw Error(`Unknown parameter "${t}"`);e[t]=n})}),e}decompress(e,t,n){_.add(r=>{this._decompress(e,t,(e,t)=>{r(),n(e,t)})})}compress(e,t,n){_.add(r=>{this._compress(e,t,(e,t)=>{r(),n(e,t)})})}_decompress(e,t,n){let i=this._isServer?`client`:`server`;if(!this._inflate){let e=`${i}_max_window_bits`,t=typeof this.params[e]==`number`?this.params[e]:r.Z_DEFAULT_WINDOWBITS;this._inflate=r.createInflateRaw({...this._options.zlibInflateOptions,windowBits:t}),this._inflate[f]=this,this._inflate[p]=0,this._inflate[h]=[],this._inflate.on(`error`,b),this._inflate.on(`data`,y)}this._inflate[m]=n,this._inflate.write(e),t&&this._inflate.write(d),this._inflate.flush(()=>{let e=this._inflate[g];if(e){this._inflate.close(),this._inflate=null,n(e);return}let r=s.concat(this._inflate[h],this._inflate[p]);this._inflate._readableState.endEmitted?(this._inflate.close(),this._inflate=null):(this._inflate[p]=0,this._inflate[h]=[],t&&this.params[`${i}_no_context_takeover`]&&this._inflate.reset()),n(null,r)})}_compress(e,t,n){let i=this._isServer?`server`:`client`;if(!this._deflate){let e=`${i}_max_window_bits`,t=typeof this.params[e]==`number`?this.params[e]:r.Z_DEFAULT_WINDOWBITS;this._deflate=r.createDeflateRaw({...this._options.zlibDeflateOptions,windowBits:t}),this._deflate[p]=0,this._deflate[h]=[],this._deflate.on(`data`,v)}this._deflate[m]=n,this._deflate.write(e),this._deflate.flush(r.Z_SYNC_FLUSH,()=>{if(!this._deflate)return;let e=s.concat(this._deflate[h],this._deflate[p]);t&&(e=new u(e.buffer,e.byteOffset,e.length-4)),this._deflate[m]=null,this._deflate[p]=0,this._deflate[h]=[],t&&this.params[`${i}_no_context_takeover`]&&this._deflate.reset(),n(null,e)})}};function v(e){this[h].push(e),this[p]+=e.length}function y(e){if(this[p]+=e.length,this[f]._maxPayload<1||this[p]<=this[f]._maxPayload){this[h].push(e);return}this[g]=RangeError(`Max payload size exceeded`),this[g].code=`WS_ERR_UNSUPPORTED_MESSAGE_LENGTH`,this[g][l]=1009,this.removeListener(`data`,y),this.reset()}function b(e){if(this[f]._inflate=null,this[g]){this[m](this[g]);return}e[l]=1007,this[m](e)}})),c=r(((t,n)=>{let{isUtf8:r}=e(`buffer`),{hasBlob:a}=i(),o=[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 s(e){return e>=1e3&&e<=1014&&e!==1004&&e!==1005&&e!==1006||e>=3e3&&e<=4999}function c(e){let t=e.length,n=0;for(;n<t;)if(!(e[n]&128))n++;else if((e[n]&224)==192){if(n+1===t||(e[n+1]&192)!=128||(e[n]&254)==192)return!1;n+=2}else if((e[n]&240)==224){if(n+2>=t||(e[n+1]&192)!=128||(e[n+2]&192)!=128||e[n]===224&&(e[n+1]&224)==128||e[n]===237&&(e[n+1]&224)==160)return!1;n+=3}else if((e[n]&248)==240){if(n+3>=t||(e[n+1]&192)!=128||(e[n+2]&192)!=128||(e[n+3]&192)!=128||e[n]===240&&(e[n+1]&240)==128||e[n]===244&&e[n+1]>143||e[n]>244)return!1;n+=4}else return!1;return!0}function l(e){return a&&typeof e==`object`&&typeof e.arrayBuffer==`function`&&typeof e.type==`string`&&typeof e.stream==`function`&&(e[Symbol.toStringTag]===`Blob`||e[Symbol.toStringTag]===`File`)}if(n.exports={isBlob:l,isValidStatusCode:s,isValidUTF8:c,tokenChars:o},r)n.exports.isValidUTF8=function(e){return e.length<24?c(e):r(e)};else if(!process.env.WS_NO_UTF_8_VALIDATE)try{let t=e(`utf-8-validate`);n.exports.isValidUTF8=function(e){return e.length<32?c(e):t(e)}}catch{}})),l=r(((t,n)=>{let{Writable:r}=e(`stream`),o=s(),{BINARY_TYPES:l,EMPTY_BUFFER:u,kStatusCode:d,kWebSocket:f}=i(),{concat:p,toArrayBuffer:m,unmask:h}=a(),{isValidStatusCode:g,isValidUTF8:_}=c(),v=Buffer[Symbol.species];n.exports=class extends r{constructor(e={}){super(),this._allowSynchronousEvents=e.allowSynchronousEvents===void 0?!0:e.allowSynchronousEvents,this._binaryType=e.binaryType||l[0],this._extensions=e.extensions||{},this._isServer=!!e.isServer,this._maxBufferedChunks=e.maxBufferedChunks|0,this._maxFragments=e.maxFragments|0,this._maxPayload=e.maxPayload|0,this._skipUTF8Validation=!!e.skipUTF8Validation,this[f]=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._numFragments=0,this._fragments=[],this._errored=!1,this._loop=!1,this._state=0}_write(e,t,n){if(this._opcode===8&&this._state==0)return n();if(this._maxBufferedChunks>0&&this._buffers.length>=this._maxBufferedChunks){n(this.createError(RangeError,`Too many buffered chunks`,!1,1008,`WS_ERR_TOO_MANY_BUFFERED_PARTS`));return}this._bufferedBytes+=e.length,this._buffers.push(e),this.startLoop(n)}consume(e){if(this._bufferedBytes-=e,e===this._buffers[0].length)return this._buffers.shift();if(e<this._buffers[0].length){let t=this._buffers[0];return this._buffers[0]=new v(t.buffer,t.byteOffset+e,t.length-e),new v(t.buffer,t.byteOffset,e)}let t=Buffer.allocUnsafe(e);do{let n=this._buffers[0],r=t.length-e;e>=n.length?t.set(this._buffers.shift(),r):(t.set(new Uint8Array(n.buffer,n.byteOffset,e),r),this._buffers[0]=new v(n.buffer,n.byteOffset+e,n.length-e)),e-=n.length}while(e>0);return t}startLoop(e){this._loop=!0;do switch(this._state){case 0:this.getInfo(e);break;case 1:this.getPayloadLength16(e);break;case 2:this.getPayloadLength64(e);break;case 3:this.getMask();break;case 4:this.getData(e);break;case 5:case 6:this._loop=!1;return}while(this._loop);this._errored||e()}getInfo(e){if(this._bufferedBytes<2){this._loop=!1;return}let t=this.consume(2);if(t[0]&48){e(this.createError(RangeError,`RSV2 and RSV3 must be clear`,!0,1002,`WS_ERR_UNEXPECTED_RSV_2_3`));return}let n=(t[0]&64)==64;if(n&&!this._extensions[o.extensionName]){e(this.createError(RangeError,`RSV1 must be clear`,!0,1002,`WS_ERR_UNEXPECTED_RSV_1`));return}if(this._fin=(t[0]&128)==128,this._opcode=t[0]&15,this._payloadLength=t[1]&127,this._opcode===0){if(n){e(this.createError(RangeError,`RSV1 must be clear`,!0,1002,`WS_ERR_UNEXPECTED_RSV_1`));return}if(!this._fragmented){e(this.createError(RangeError,`invalid opcode 0`,!0,1002,`WS_ERR_INVALID_OPCODE`));return}this._opcode=this._fragmented}else if(this._opcode===1||this._opcode===2){if(this._fragmented){e(this.createError(RangeError,`invalid opcode ${this._opcode}`,!0,1002,`WS_ERR_INVALID_OPCODE`));return}this._compressed=n}else if(this._opcode>7&&this._opcode<11){if(!this._fin){e(this.createError(RangeError,`FIN must be set`,!0,1002,`WS_ERR_EXPECTED_FIN`));return}if(n){e(this.createError(RangeError,`RSV1 must be clear`,!0,1002,`WS_ERR_UNEXPECTED_RSV_1`));return}if(this._payloadLength>125||this._opcode===8&&this._payloadLength===1){e(this.createError(RangeError,`invalid payload length ${this._payloadLength}`,!0,1002,`WS_ERR_INVALID_CONTROL_PAYLOAD_LENGTH`));return}}else{e(this.createError(RangeError,`invalid opcode ${this._opcode}`,!0,1002,`WS_ERR_INVALID_OPCODE`));return}if(!this._fin&&!this._fragmented&&(this._fragmented=this._opcode),this._masked=(t[1]&128)==128,this._isServer){if(!this._masked){e(this.createError(RangeError,`MASK must be set`,!0,1002,`WS_ERR_EXPECTED_MASK`));return}}else if(this._masked){e(this.createError(RangeError,`MASK must be clear`,!0,1002,`WS_ERR_UNEXPECTED_MASK`));return}this._payloadLength===126?this._state=1:this._payloadLength===127?this._state=2: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 t=this.consume(8),n=t.readUInt32BE(0);if(n>2**21-1){e(this.createError(RangeError,`Unsupported WebSocket frame: payload length > 2^53 - 1`,!1,1009,`WS_ERR_UNSUPPORTED_DATA_PAYLOAD_LENGTH`));return}this._payloadLength=n*2**32+t.readUInt32BE(4),this.haveLength(e)}haveLength(e){if(this._payloadLength&&this._opcode<8&&(this._totalPayloadLength+=this._payloadLength,this._totalPayloadLength>this._maxPayload&&this._maxPayload>0)){e(this.createError(RangeError,`Max payload size exceeded`,!1,1009,`WS_ERR_UNSUPPORTED_MESSAGE_LENGTH`));return}this._masked?this._state=3:this._state=4}getMask(){if(this._bufferedBytes<4){this._loop=!1;return}this._mask=this.consume(4),this._state=4}getData(e){let t=u;if(this._payloadLength){if(this._bufferedBytes<this._payloadLength){this._loop=!1;return}t=this.consume(this._payloadLength),this._masked&&(this._mask[0]|this._mask[1]|this._mask[2]|this._mask[3])!==0&&h(t,this._mask)}if(this._opcode>7){this.controlMessage(t,e);return}if(this._maxFragments>0&&++this._numFragments>this._maxFragments){e(this.createError(RangeError,`Too many message fragments`,!1,1008,`WS_ERR_TOO_MANY_BUFFERED_PARTS`));return}if(this._compressed){this._state=5,this.decompress(t,e);return}t.length&&(this._messageLength=this._totalPayloadLength,this._fragments.push(t)),this.dataMessage(e)}decompress(e,t){this._extensions[o.extensionName].decompress(e,this._fin,(e,n)=>{if(e)return t(e);if(n.length){if(this._messageLength+=n.length,this._messageLength>this._maxPayload&&this._maxPayload>0){t(this.createError(RangeError,`Max payload size exceeded`,!1,1009,`WS_ERR_UNSUPPORTED_MESSAGE_LENGTH`));return}this._fragments.push(n)}this.dataMessage(t),this._state===0&&this.startLoop(t)})}dataMessage(e){if(!this._fin){this._state=0;return}let t=this._messageLength,n=this._fragments;if(this._totalPayloadLength=0,this._messageLength=0,this._fragmented=0,this._numFragments=0,this._fragments=[],this._opcode===2){let r;r=this._binaryType===`nodebuffer`?p(n,t):this._binaryType===`arraybuffer`?m(p(n,t)):this._binaryType===`blob`?new Blob(n):n,this._allowSynchronousEvents?(this.emit(`message`,r,!0),this._state=0):(this._state=6,setImmediate(()=>{this.emit(`message`,r,!0),this._state=0,this.startLoop(e)}))}else{let r=p(n,t);if(!this._skipUTF8Validation&&!_(r)){e(this.createError(Error,`invalid UTF-8 sequence`,!0,1007,`WS_ERR_INVALID_UTF8`));return}this._state===5||this._allowSynchronousEvents?(this.emit(`message`,r,!1),this._state=0):(this._state=6,setImmediate(()=>{this.emit(`message`,r,!1),this._state=0,this.startLoop(e)}))}}controlMessage(e,t){if(this._opcode===8){if(e.length===0)this._loop=!1,this.emit(`conclude`,1005,u),this.end();else{let n=e.readUInt16BE(0);if(!g(n)){t(this.createError(RangeError,`invalid status code ${n}`,!0,1002,`WS_ERR_INVALID_CLOSE_CODE`));return}let r=new v(e.buffer,e.byteOffset+2,e.length-2);if(!this._skipUTF8Validation&&!_(r)){t(this.createError(Error,`invalid UTF-8 sequence`,!0,1007,`WS_ERR_INVALID_UTF8`));return}this._loop=!1,this.emit(`conclude`,n,r),this.end()}this._state=0;return}this._allowSynchronousEvents?(this.emit(this._opcode===9?`ping`:`pong`,e),this._state=0):(this._state=6,setImmediate(()=>{this.emit(this._opcode===9?`ping`:`pong`,e),this._state=0,this.startLoop(t)}))}createError(e,t,n,r,i){this._loop=!1,this._errored=!0;let a=new e(n?`Invalid WebSocket frame: ${t}`:t);return Error.captureStackTrace(a,this.createError),a.code=i,a[d]=r,a}}})),u=r(((t,n)=>{let{Duplex:r}=e(`stream`),{randomFillSync:o}=e(`crypto`),{types:{isUint8Array:l}}=e(`util`),u=s(),{EMPTY_BUFFER:d,kWebSocket:f,NOOP:p}=i(),{isBlob:m,isValidStatusCode:h}=c(),{mask:g,toBuffer:_}=a(),v=Symbol(`kByteLength`),y=Buffer.alloc(4),b=8*1024,x,S=b;n.exports=class e{constructor(e,t,n){this._extensions=t||{},n&&(this._generateMask=n,this._maskBuffer=Buffer.alloc(4)),this._socket=e,this._firstFragment=!0,this._compress=!1,this._bufferedBytes=0,this._queue=[],this._state=0,this.onerror=p,this[f]=void 0}static frame(e,t){let n,r=!1,i=2,a=!1;t.mask&&(n=t.maskBuffer||y,t.generateMask?t.generateMask(n):(S===b&&(x===void 0&&(x=Buffer.alloc(b)),o(x,0,b),S=0),n[0]=x[S++],n[1]=x[S++],n[2]=x[S++],n[3]=x[S++]),a=(n[0]|n[1]|n[2]|n[3])===0,i=6);let s;typeof e==`string`?(!t.mask||a)&&t[v]!==void 0?s=t[v]:(e=Buffer.from(e),s=e.length):(s=e.length,r=t.mask&&t.readOnly&&!a);let c=s;s>=65536?(i+=8,c=127):s>125&&(i+=2,c=126);let l=Buffer.allocUnsafe(r?s+i:i);return l[0]=t.fin?t.opcode|128:t.opcode,t.rsv1&&(l[0]|=64),l[1]=c,c===126?l.writeUInt16BE(s,2):c===127&&(l[2]=l[3]=0,l.writeUIntBE(s,4,6)),!t.mask||(l[1]|=128,l[i-4]=n[0],l[i-3]=n[1],l[i-2]=n[2],l[i-1]=n[3],a)?[l,e]:r?(g(e,n,l,i,s),[l]):(g(e,n,e,0,s),[l,e])}close(t,n,r,i){let a;if(t===void 0)a=d;else if(typeof t!=`number`||!h(t))throw TypeError(`First argument must be a valid error code number`);else if(n===void 0||!n.length)a=Buffer.allocUnsafe(2),a.writeUInt16BE(t,0);else{let e=Buffer.byteLength(n);if(e>123)throw RangeError(`The message must not be greater than 123 bytes`);if(a=Buffer.allocUnsafe(2+e),a.writeUInt16BE(t,0),typeof n==`string`)a.write(n,2);else if(l(n))a.set(n,2);else throw TypeError(`Second argument must be a string or a Uint8Array`)}let o={[v]:a.length,fin:!0,generateMask:this._generateMask,mask:r,maskBuffer:this._maskBuffer,opcode:8,readOnly:!1,rsv1:!1};this._state===0?this.sendFrame(e.frame(a,o),i):this.enqueue([this.dispatch,a,!1,o,i])}ping(t,n,r){let i,a;if(typeof t==`string`?(i=Buffer.byteLength(t),a=!1):m(t)?(i=t.size,a=!1):(t=_(t),i=t.length,a=_.readOnly),i>125)throw RangeError(`The data size must not be greater than 125 bytes`);let o={[v]:i,fin:!0,generateMask:this._generateMask,mask:n,maskBuffer:this._maskBuffer,opcode:9,readOnly:a,rsv1:!1};m(t)?this._state===0?this.getBlobData(t,!1,o,r):this.enqueue([this.getBlobData,t,!1,o,r]):this._state===0?this.sendFrame(e.frame(t,o),r):this.enqueue([this.dispatch,t,!1,o,r])}pong(t,n,r){let i,a;if(typeof t==`string`?(i=Buffer.byteLength(t),a=!1):m(t)?(i=t.size,a=!1):(t=_(t),i=t.length,a=_.readOnly),i>125)throw RangeError(`The data size must not be greater than 125 bytes`);let o={[v]:i,fin:!0,generateMask:this._generateMask,mask:n,maskBuffer:this._maskBuffer,opcode:10,readOnly:a,rsv1:!1};m(t)?this._state===0?this.getBlobData(t,!1,o,r):this.enqueue([this.getBlobData,t,!1,o,r]):this._state===0?this.sendFrame(e.frame(t,o),r):this.enqueue([this.dispatch,t,!1,o,r])}send(e,t,n){let r=this._extensions[u.extensionName],i=t.binary?2:1,a=t.compress,o,s;typeof e==`string`?(o=Buffer.byteLength(e),s=!1):m(e)?(o=e.size,s=!1):(e=_(e),o=e.length,s=_.readOnly),this._firstFragment?(this._firstFragment=!1,a&&r&&r.params[r._isServer?`server_no_context_takeover`:`client_no_context_takeover`]&&(a=o>=r._threshold),this._compress=a):(a=!1,i=0),t.fin&&(this._firstFragment=!0);let c={[v]:o,fin:t.fin,generateMask:this._generateMask,mask:t.mask,maskBuffer:this._maskBuffer,opcode:i,readOnly:s,rsv1:a};m(e)?this._state===0?this.getBlobData(e,this._compress,c,n):this.enqueue([this.getBlobData,e,this._compress,c,n]):this._state===0?this.dispatch(e,this._compress,c,n):this.enqueue([this.dispatch,e,this._compress,c,n])}getBlobData(t,n,r,i){this._bufferedBytes+=r[v],this._state=2,t.arrayBuffer().then(t=>{if(this._socket.destroyed){let e=Error(`The socket was closed while the blob was being read`);process.nextTick(C,this,e,i);return}this._bufferedBytes-=r[v];let a=_(t);n?this.dispatch(a,n,r,i):(this._state=0,this.sendFrame(e.frame(a,r),i),this.dequeue())}).catch(e=>{process.nextTick(w,this,e,i)})}dispatch(t,n,r,i){if(!n){this.sendFrame(e.frame(t,r),i);return}let a=this._extensions[u.extensionName];this._bufferedBytes+=r[v],this._state=1,a.compress(t,r.fin,(t,n)=>{if(this._socket.destroyed){let e=Error(`The socket was closed while data was being compressed`);C(this,e,i);return}this._bufferedBytes-=r[v],this._state=0,r.readOnly=!1,this.sendFrame(e.frame(n,r),i),this.dequeue()})}dequeue(){for(;this._state===0&&this._queue.length;){let e=this._queue.shift();this._bufferedBytes-=e[3][v],Reflect.apply(e[0],this,e.slice(1))}}enqueue(e){this._bufferedBytes+=e[3][v],this._queue.push(e)}sendFrame(e,t){e.length===2?(this._socket.cork(),this._socket.write(e[0]),this._socket.write(e[1],t),this._socket.uncork()):this._socket.write(e[0],t)}};function C(e,t,n){typeof n==`function`&&n(t);for(let n=0;n<e._queue.length;n++){let r=e._queue[n],i=r[r.length-1];typeof i==`function`&&i(t)}}function w(e,t,n){C(e,t,n),e.onerror(t)}})),d=r(((e,t)=>{let{kForOnEventAttribute:n,kListener:r}=i(),a=Symbol(`kCode`),o=Symbol(`kData`),s=Symbol(`kError`),c=Symbol(`kMessage`),l=Symbol(`kReason`),u=Symbol(`kTarget`),d=Symbol(`kType`),f=Symbol(`kWasClean`);var p=class{constructor(e){this[u]=null,this[d]=e}get target(){return this[u]}get type(){return this[d]}};Object.defineProperty(p.prototype,"target",{enumerable:!0}),Object.defineProperty(p.prototype,"type",{enumerable:!0});var m=class extends p{constructor(e,t={}){super(e),this[a]=t.code===void 0?0:t.code,this[l]=t.reason===void 0?``:t.reason,this[f]=t.wasClean===void 0?!1:t.wasClean}get code(){return this[a]}get reason(){return this[l]}get wasClean(){return this[f]}};Object.defineProperty(m.prototype,"code",{enumerable:!0}),Object.defineProperty(m.prototype,"reason",{enumerable:!0}),Object.defineProperty(m.prototype,"wasClean",{enumerable:!0});var h=class extends p{constructor(e,t={}){super(e),this[s]=t.error===void 0?null:t.error,this[c]=t.message===void 0?``:t.message}get error(){return this[s]}get message(){return this[c]}};Object.defineProperty(h.prototype,"error",{enumerable:!0}),Object.defineProperty(h.prototype,"message",{enumerable:!0});var g=class extends p{constructor(e,t={}){super(e),this[o]=t.data===void 0?null:t.data}get data(){return this[o]}};Object.defineProperty(g.prototype,"data",{enumerable:!0}),t.exports={CloseEvent:m,ErrorEvent:h,Event:p,EventTarget:{addEventListener(e,t,i={}){for(let a of this.listeners(e))if(!i[n]&&a[r]===t&&!a[n])return;let a;if(e===`message`)a=function(e,n){let r=new g(`message`,{data:n?e:e.toString()});r[u]=this,_(t,this,r)};else if(e===`close`)a=function(e,n){let r=new m(`close`,{code:e,reason:n.toString(),wasClean:this._closeFrameReceived&&this._closeFrameSent});r[u]=this,_(t,this,r)};else if(e===`error`)a=function(e){let n=new h(`error`,{error:e,message:e.message});n[u]=this,_(t,this,n)};else if(e===`open`)a=function(){let e=new p(`open`);e[u]=this,_(t,this,e)};else return;a[n]=!!i[n],a[r]=t,i.once?this.once(e,a):this.on(e,a)},removeEventListener(e,t){for(let i of this.listeners(e))if(i[r]===t&&!i[n]){this.removeListener(e,i);break}}},MessageEvent:g};function _(e,t,n){typeof e==`object`&&e.handleEvent?e.handleEvent.call(e,n):e.call(t,n)}})),f=r(((e,t)=>{let{tokenChars:n}=c();function r(e,t,n){e[t]===void 0?e[t]=[n]:e[t].push(n)}function i(e){let t=Object.create(null),i=Object.create(null),a=!1,o=!1,s=!1,c,l,u=-1,d=-1,f=-1,p=0;for(;p<e.length;p++)if(d=e.charCodeAt(p),c===void 0)if(f===-1&&n[d]===1)u===-1&&(u=p);else if(p!==0&&(d===32||d===9))f===-1&&u!==-1&&(f=p);else if(d===59||d===44){if(u===-1)throw SyntaxError(`Unexpected character at index ${p}`);f===-1&&(f=p);let n=e.slice(u,f);d===44?(r(t,n,i),i=Object.create(null)):c=n,u=f=-1}else throw SyntaxError(`Unexpected character at index ${p}`);else if(l===void 0)if(f===-1&&n[d]===1)u===-1&&(u=p);else if(d===32||d===9)f===-1&&u!==-1&&(f=p);else if(d===59||d===44){if(u===-1)throw SyntaxError(`Unexpected character at index ${p}`);f===-1&&(f=p),r(i,e.slice(u,f),!0),d===44&&(r(t,c,i),i=Object.create(null),c=void 0),u=f=-1}else if(d===61&&u!==-1&&f===-1)l=e.slice(u,p),u=f=-1;else throw SyntaxError(`Unexpected character at index ${p}`);else if(o){if(n[d]!==1)throw SyntaxError(`Unexpected character at index ${p}`);u===-1?u=p:a||=!0,o=!1}else if(s)if(n[d]===1)u===-1&&(u=p);else if(d===34&&u!==-1)s=!1,f=p;else if(d===92)o=!0;else throw SyntaxError(`Unexpected character at index ${p}`);else if(d===34&&e.charCodeAt(p-1)===61)s=!0;else if(f===-1&&n[d]===1)u===-1&&(u=p);else if(u!==-1&&(d===32||d===9))f===-1&&(f=p);else if(d===59||d===44){if(u===-1)throw SyntaxError(`Unexpected character at index ${p}`);f===-1&&(f=p);let n=e.slice(u,f);a&&=(n=n.replace(/\\/g,``),!1),r(i,l,n),d===44&&(r(t,c,i),i=Object.create(null),c=void 0),l=void 0,u=f=-1}else throw SyntaxError(`Unexpected character at index ${p}`);if(u===-1||s||d===32||d===9)throw SyntaxError(`Unexpected end of input`);f===-1&&(f=p);let m=e.slice(u,f);return c===void 0?r(t,m,i):(l===void 0?r(i,m,!0):a?r(i,l,m.replace(/\\/g,``)):r(i,l,m),r(t,c,i)),t}function a(e){return Object.keys(e).map(t=>{let n=e[t];return Array.isArray(n)||(n=[n]),n.map(e=>[t].concat(Object.keys(e).map(t=>{let n=e[t];return Array.isArray(n)||(n=[n]),n.map(e=>e===!0?t:`${t}=${e}`).join(`; `)})).join(`; `)).join(`, `)}).join(`, `)}t.exports={format:a,parse:i}})),p=r(((t,n)=>{let r=e(`events`),o=e(`https`),p=e(`http`),m=e(`net`),h=e(`tls`),{randomBytes:g,createHash:_}=e(`crypto`),{Duplex:v,Readable:y}=e(`stream`),{URL:b}=e(`url`),x=s(),S=l(),C=u(),{isBlob:w}=c(),{BINARY_TYPES:T,CLOSE_TIMEOUT:E,EMPTY_BUFFER:D,GUID:O,kForOnEventAttribute:k,kListener:A,kStatusCode:j,kWebSocket:M,NOOP:N}=i(),{EventTarget:{addEventListener:ee,removeEventListener:te}}=d(),{format:P,parse:F}=f(),{toBuffer:I}=a(),L=Symbol(`kAborted`),R=[8,13],z=[`CONNECTING`,`OPEN`,`CLOSING`,`CLOSED`],B=/^[!#$%&'*+\-.0-9A-Z^_`|a-z~]+$/;var V=class e extends r{constructor(t,n,r){super(),this._binaryType=T[0],this._closeCode=1006,this._closeFrameReceived=!1,this._closeFrameSent=!1,this._closeMessage=D,this._closeTimer=null,this._errorEmitted=!1,this._extensions={},this._paused=!1,this._protocol=``,this._readyState=e.CONNECTING,this._receiver=null,this._sender=null,this._socket=null,t===null?(this._autoPong=r.autoPong,this._closeTimeout=r.closeTimeout,this._isServer=!0):(this._bufferedAmount=0,this._isServer=!1,this._redirects=0,n===void 0?n=[]:Array.isArray(n)||(typeof n==`object`&&n?(r=n,n=[]):n=[n]),H(this,t,n,r))}get binaryType(){return this._binaryType}set binaryType(e){T.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(t,n,r){let i=new S({allowSynchronousEvents:r.allowSynchronousEvents,binaryType:this.binaryType,extensions:this._extensions,isServer:this._isServer,maxBufferedChunks:r.maxBufferedChunks,maxFragments:r.maxFragments,maxPayload:r.maxPayload,skipUTF8Validation:r.skipUTF8Validation}),a=new C(t,this._extensions,r.generateMask);this._receiver=i,this._sender=a,this._socket=t,i[M]=this,a[M]=this,t[M]=this,i.on(`conclude`,re),i.on(`drain`,ie),i.on(`error`,ae),i.on(`message`,oe),i.on(`ping`,se),i.on(`pong`,ce),a.onerror=le,t.setTimeout&&t.setTimeout(0),t.setNoDelay&&t.setNoDelay(),n.length>0&&t.unshift(n),t.on(`close`,X),t.on(`data`,Z),t.on(`end`,Q),t.on(`error`,$),this._readyState=e.OPEN,this.emit(`open`)}emitClose(){if(!this._socket){this._readyState=e.CLOSED,this.emit(`close`,this._closeCode,this._closeMessage);return}this._extensions[x.extensionName]&&this._extensions[x.extensionName].cleanup(),this._receiver.removeAllListeners(),this._readyState=e.CLOSED,this.emit(`close`,this._closeCode,this._closeMessage)}close(t,n){if(this.readyState!==e.CLOSED){if(this.readyState===e.CONNECTING){G(this,this._req,`WebSocket was closed before the connection was established`);return}if(this.readyState===e.CLOSING){this._closeFrameSent&&(this._closeFrameReceived||this._receiver._writableState.errorEmitted)&&this._socket.end();return}this._readyState=e.CLOSING,this._sender.close(t,n,!this._isServer,e=>{e||(this._closeFrameSent=!0,(this._closeFrameReceived||this._receiver._writableState.errorEmitted)&&this._socket.end())}),Y(this)}}pause(){this.readyState===e.CONNECTING||this.readyState===e.CLOSED||(this._paused=!0,this._socket.pause())}ping(t,n,r){if(this.readyState===e.CONNECTING)throw Error(`WebSocket is not open: readyState 0 (CONNECTING)`);if(typeof t==`function`?(r=t,t=n=void 0):typeof n==`function`&&(r=n,n=void 0),typeof t==`number`&&(t=t.toString()),this.readyState!==e.OPEN){K(this,t,r);return}n===void 0&&(n=!this._isServer),this._sender.ping(t||D,n,r)}pong(t,n,r){if(this.readyState===e.CONNECTING)throw Error(`WebSocket is not open: readyState 0 (CONNECTING)`);if(typeof t==`function`?(r=t,t=n=void 0):typeof n==`function`&&(r=n,n=void 0),typeof t==`number`&&(t=t.toString()),this.readyState!==e.OPEN){K(this,t,r);return}n===void 0&&(n=!this._isServer),this._sender.pong(t||D,n,r)}resume(){this.readyState===e.CONNECTING||this.readyState===e.CLOSED||(this._paused=!1,this._receiver._writableState.needDrain||this._socket.resume())}send(t,n,r){if(this.readyState===e.CONNECTING)throw Error(`WebSocket is not open: readyState 0 (CONNECTING)`);if(typeof n==`function`&&(r=n,n={}),typeof t==`number`&&(t=t.toString()),this.readyState!==e.OPEN){K(this,t,r);return}let i={binary:typeof t!=`string`,mask:!this._isServer,compress:!0,fin:!0,...n};this._extensions[x.extensionName]||(i.compress=!1),this._sender.send(t||D,i,r)}terminate(){if(this.readyState!==e.CLOSED){if(this.readyState===e.CONNECTING){G(this,this._req,`WebSocket was closed before the connection was established`);return}this._socket&&(this._readyState=e.CLOSING,this._socket.destroy())}}};Object.defineProperty(V,"CONNECTING",{enumerable:!0,value:z.indexOf(`CONNECTING`)}),Object.defineProperty(V.prototype,"CONNECTING",{enumerable:!0,value:z.indexOf(`CONNECTING`)}),Object.defineProperty(V,"OPEN",{enumerable:!0,value:z.indexOf(`OPEN`)}),Object.defineProperty(V.prototype,"OPEN",{enumerable:!0,value:z.indexOf(`OPEN`)}),Object.defineProperty(V,"CLOSING",{enumerable:!0,value:z.indexOf(`CLOSING`)}),Object.defineProperty(V.prototype,"CLOSING",{enumerable:!0,value:z.indexOf(`CLOSING`)}),Object.defineProperty(V,"CLOSED",{enumerable:!0,value:z.indexOf(`CLOSED`)}),Object.defineProperty(V.prototype,"CLOSED",{enumerable:!0,value:z.indexOf(`CLOSED`)}),[`binaryType`,`bufferedAmount`,`extensions`,`isPaused`,`protocol`,`readyState`,`url`].forEach(e=>{Object.defineProperty(V.prototype,e,{enumerable:!0})}),[`open`,`error`,`close`,`message`].forEach(e=>{Object.defineProperty(V.prototype,`on${e}`,{enumerable:!0,get(){for(let t of this.listeners(e))if(t[k])return t[A];return null},set(t){for(let t of this.listeners(e))if(t[k]){this.removeListener(e,t);break}typeof t==`function`&&this.addEventListener(e,t,{[k]:!0})}})}),V.prototype.addEventListener=ee,V.prototype.removeEventListener=te,n.exports=V;function H(e,t,n,r){let i={allowSynchronousEvents:!0,autoPong:!0,closeTimeout:E,protocolVersion:R[1],maxBufferedChunks:256*1024,maxFragments:16*1024,maxPayload:100*1024*1024,skipUTF8Validation:!1,perMessageDeflate:!0,followRedirects:!1,maxRedirects:10,...r,socketPath:void 0,hostname:void 0,protocol:void 0,timeout:void 0,method:`GET`,host:void 0,path:void 0,port:void 0};if(e._autoPong=i.autoPong,e._closeTimeout=i.closeTimeout,!R.includes(i.protocolVersion))throw RangeError(`Unsupported protocol version: ${i.protocolVersion} (supported versions: ${R.join(`, `)})`);let a;if(t instanceof b)a=t;else try{a=new b(t)}catch{throw SyntaxError(`Invalid URL: ${t}`)}a.protocol===`http:`?a.protocol=`ws:`:a.protocol===`https:`&&(a.protocol=`wss:`),e._url=a.href;let s=a.protocol===`wss:`,c=a.protocol===`ws+unix:`,l;if(a.protocol!==`ws:`&&!s&&!c?l=`The URL's protocol must be one of "ws:", "wss:", "http:", "https:", or "ws+unix:"`:c&&!a.pathname?l=`The URL's pathname is empty`:a.hash&&(l=`The URL contains a fragment identifier`),l){let t=SyntaxError(l);if(e._redirects===0)throw t;U(e,t);return}let u=s?443:80,d=g(16).toString(`base64`),f=s?o.request:p.request,m=new Set,h;if(i.createConnection=i.createConnection||(s?ne:W),i.defaultPort=i.defaultPort||u,i.port=a.port||u,i.host=a.hostname.startsWith(`[`)?a.hostname.slice(1,-1):a.hostname,i.headers={...i.headers,"Sec-WebSocket-Version":i.protocolVersion,"Sec-WebSocket-Key":d,Connection:`Upgrade`,Upgrade:`websocket`},i.path=a.pathname+a.search,i.timeout=i.handshakeTimeout,i.perMessageDeflate&&(h=new x({...i.perMessageDeflate,isServer:!1,maxPayload:i.maxPayload}),i.headers[`Sec-WebSocket-Extensions`]=P({[x.extensionName]:h.offer()})),n.length){for(let e of n){if(typeof e!=`string`||!B.test(e)||m.has(e))throw SyntaxError(`An invalid or duplicated subprotocol was specified`);m.add(e)}i.headers[`Sec-WebSocket-Protocol`]=n.join(`,`)}if(i.origin&&(i.protocolVersion<13?i.headers[`Sec-WebSocket-Origin`]=i.origin:i.headers.Origin=i.origin),(a.username||a.password)&&(i.auth=`${a.username}:${a.password}`),c){let e=i.path.split(`:`);i.socketPath=e[0],i.path=e[1]}let v;if(i.followRedirects){if(e._redirects===0){e._originalIpc=c,e._originalSecure=s,e._originalHostOrSocketPath=c?i.socketPath:a.host;let t=r&&r.headers;if(r={...r,headers:{}},t)for(let[e,n]of Object.entries(t))r.headers[e.toLowerCase()]=n}else if(e.listenerCount(`redirect`)===0){let t=c?e._originalIpc?i.socketPath===e._originalHostOrSocketPath:!1:e._originalIpc?!1:a.host===e._originalHostOrSocketPath;(!t||e._originalSecure&&!s)&&(delete i.headers.authorization,delete i.headers.cookie,t||delete i.headers.host,i.auth=void 0)}i.auth&&!r.headers.authorization&&(r.headers.authorization=`Basic `+Buffer.from(i.auth).toString(`base64`)),v=e._req=f(i),e._redirects&&e.emit(`redirect`,e.url,v)}else v=e._req=f(i);i.timeout&&v.on(`timeout`,()=>{G(e,v,`Opening handshake has timed out`)}),v.on(`error`,t=>{v===null||v[L]||(v=e._req=null,U(e,t))}),v.on(`response`,a=>{let o=a.headers.location,s=a.statusCode;if(o&&i.followRedirects&&s>=300&&s<400){if(++e._redirects>i.maxRedirects){G(e,v,`Maximum redirects exceeded`);return}v.abort();let a;try{a=new b(o,t)}catch{U(e,SyntaxError(`Invalid URL: ${o}`));return}H(e,a,n,r)}else e.emit(`unexpected-response`,v,a)||G(e,v,`Unexpected server response: ${a.statusCode}`)}),v.on(`upgrade`,(t,n,r)=>{if(e.emit(`upgrade`,t),e.readyState!==V.CONNECTING)return;v=e._req=null;let a=t.headers.upgrade;if(a===void 0||a.toLowerCase()!==`websocket`){G(e,n,`Invalid Upgrade header`);return}let o=_(`sha1`).update(d+O).digest(`base64`);if(t.headers[`sec-websocket-accept`]!==o){G(e,n,`Invalid Sec-WebSocket-Accept header`);return}let s=t.headers[`sec-websocket-protocol`],c;if(s===void 0?m.size&&(c=`Server sent no subprotocol`):m.size?m.has(s)||(c=`Server sent an invalid subprotocol`):c=`Server sent a subprotocol but none was requested`,c){G(e,n,c);return}s&&(e._protocol=s);let l=t.headers[`sec-websocket-extensions`];if(l!==void 0){if(!h){G(e,n,`Server sent a Sec-WebSocket-Extensions header but no extension was requested`);return}let t;try{t=F(l)}catch{G(e,n,`Invalid Sec-WebSocket-Extensions header`);return}let r=Object.keys(t);if(r.length!==1||r[0]!==x.extensionName){G(e,n,`Server indicated an extension that was not requested`);return}try{h.accept(t[x.extensionName])}catch{G(e,n,`Invalid Sec-WebSocket-Extensions header`);return}e._extensions[x.extensionName]=h}e.setSocket(n,r,{allowSynchronousEvents:i.allowSynchronousEvents,generateMask:i.generateMask,maxBufferedChunks:i.maxBufferedChunks,maxFragments:i.maxFragments,maxPayload:i.maxPayload,skipUTF8Validation:i.skipUTF8Validation})}),i.finishRequest?i.finishRequest(v,e):v.end()}function U(e,t){e._readyState=V.CLOSING,e._errorEmitted=!0,e.emit(`error`,t),e.emitClose()}function W(e){return e.path=e.socketPath,m.connect(e)}function ne(e){return e.path=void 0,!e.servername&&e.servername!==``&&(e.servername=m.isIP(e.host)?``:e.host),h.connect(e)}function G(e,t,n){e._readyState=V.CLOSING;let r=Error(n);Error.captureStackTrace(r,G),t.setHeader?(t[L]=!0,t.abort(),t.socket&&!t.socket.destroyed&&t.socket.destroy(),process.nextTick(U,e,r)):(t.destroy(r),t.once(`error`,e.emit.bind(e,`error`)),t.once(`close`,e.emitClose.bind(e)))}function K(e,t,n){if(t){let n=w(t)?t.size:I(t).length;e._socket?e._sender._bufferedBytes+=n:e._bufferedAmount+=n}if(n){let t=Error(`WebSocket is not open: readyState ${e.readyState} (${z[e.readyState]})`);process.nextTick(n,t)}}function re(e,t){let n=this[M];n._closeFrameReceived=!0,n._closeMessage=t,n._closeCode=e,n._socket[M]!==void 0&&(n._socket.removeListener(`data`,Z),process.nextTick(J,n._socket),e===1005?n.close():n.close(e,t))}function ie(){let e=this[M];e.isPaused||e._socket.resume()}function ae(e){let t=this[M];t._socket[M]!==void 0&&(t._socket.removeListener(`data`,Z),process.nextTick(J,t._socket),t.close(e[j])),t._errorEmitted||(t._errorEmitted=!0,t.emit(`error`,e))}function q(){this[M].emitClose()}function oe(e,t){this[M].emit(`message`,e,t)}function se(e){let t=this[M];t._autoPong&&t.pong(e,!this._isServer,N),t.emit(`ping`,e)}function ce(e){this[M].emit(`pong`,e)}function J(e){e.resume()}function le(e){let t=this[M];t.readyState!==V.CLOSED&&(t.readyState===V.OPEN&&(t._readyState=V.CLOSING,Y(t)),this._socket.end(),t._errorEmitted||(t._errorEmitted=!0,t.emit(`error`,e)))}function Y(e){e._closeTimer=setTimeout(e._socket.destroy.bind(e._socket),e._closeTimeout)}function X(){let e=this[M];if(this.removeListener(`close`,X),this.removeListener(`data`,Z),this.removeListener(`end`,Q),e._readyState=V.CLOSING,!this._readableState.endEmitted&&!e._closeFrameReceived&&!e._receiver._writableState.errorEmitted&&this._readableState.length!==0){let t=this.read(this._readableState.length);e._receiver.write(t)}e._receiver.end(),this[M]=void 0,clearTimeout(e._closeTimer),e._receiver._writableState.finished||e._receiver._writableState.errorEmitted?e.emitClose():(e._receiver.on(`error`,q),e._receiver.on(`finish`,q))}function Z(e){this[M]._receiver.write(e)||this.pause()}function Q(){let e=this[M];e._readyState=V.CLOSING,e._receiver.end(),this.end()}function $(){let e=this[M];this.removeListener(`error`,$),this.on(`error`,N),e&&(e._readyState=V.CLOSING,this.destroy())}})),m=r(((t,n)=>{p();let{Duplex:r}=e(`stream`);function i(e){e.emit(`close`)}function a(){!this.destroyed&&this._writableState.finished&&this.destroy()}function o(e){this.removeListener(`error`,o),this.destroy(),this.listenerCount(`error`)===0&&this.emit(`error`,e)}function s(e,t){let n=!0,s=new r({...t,autoDestroy:!1,emitClose:!1,objectMode:!1,writableObjectMode:!1});return e.on(`message`,function(t,n){let r=!n&&s._readableState.objectMode?t.toString():t;s.push(r)||e.pause()}),e.once(`error`,function(e){s.destroyed||(n=!1,s.destroy(e))}),e.once(`close`,function(){s.destroyed||s.push(null)}),s._destroy=function(t,r){if(e.readyState===e.CLOSED){r(t),process.nextTick(i,s);return}let a=!1;e.once(`error`,function(e){a=!0,r(e)}),e.once(`close`,function(){a||r(t),process.nextTick(i,s)}),n&&e.terminate()},s._final=function(t){if(e.readyState===e.CONNECTING){e.once(`open`,function(){s._final(t)});return}e._socket!==null&&(e._socket._writableState.finished?(t(),s._readableState.endEmitted&&s.destroy()):(e._socket.once(`finish`,function(){t()}),e.close()))},s._read=function(){e.isPaused&&e.resume()},s._write=function(t,n,r){if(e.readyState===e.CONNECTING){e.once(`open`,function(){s._write(t,n,r)});return}e.send(t,r)},s.on(`end`,a),s.on(`error`,o),s}n.exports=s})),h=r(((e,t)=>{let{tokenChars:n}=c();function r(e){let t=new Set,r=-1,i=-1,a=0;for(;a<e.length;a++){let o=e.charCodeAt(a);if(i===-1&&n[o]===1)r===-1&&(r=a);else if(a!==0&&(o===32||o===9))i===-1&&r!==-1&&(i=a);else if(o===44){if(r===-1)throw SyntaxError(`Unexpected character at index ${a}`);i===-1&&(i=a);let n=e.slice(r,i);if(t.has(n))throw SyntaxError(`The "${n}" subprotocol is duplicated`);t.add(n),r=i=-1}else throw SyntaxError(`Unexpected character at index ${a}`)}if(r===-1||i!==-1)throw SyntaxError(`Unexpected end of input`);let o=e.slice(r,a);if(t.has(o))throw SyntaxError(`The "${o}" subprotocol is duplicated`);return t.add(o),t}t.exports={parse:r}})),g=r(((t,n)=>{let r=e(`events`),a=e(`http`),{Duplex:o}=e(`stream`),{createHash:c}=e(`crypto`),l=f(),u=s(),d=h(),m=p(),{CLOSE_TIMEOUT:g,GUID:_,kWebSocket:v}=i(),y=/^[+/0-9A-Za-z]{22}==$/;n.exports=class extends r{constructor(e,t){if(super(),e={allowSynchronousEvents:!0,autoPong:!0,maxBufferedChunks:256*1024,maxFragments:16*1024,maxPayload:100*1024*1024,skipUTF8Validation:!1,perMessageDeflate:!1,handleProtocols:null,clientTracking:!0,closeTimeout:g,verifyClient:null,noServer:!1,backlog:null,server:null,host:null,path:null,port:null,WebSocket:m,...e},e.port==null&&!e.server&&!e.noServer||e.port!=null&&(e.server||e.noServer)||e.server&&e.noServer)throw TypeError(`One and only one of the "port", "server", or "noServer" options must be specified`);if(e.port==null?e.server&&(this._server=e.server):(this._server=a.createServer((e,t)=>{let n=a.STATUS_CODES[426];t.writeHead(426,{"Content-Length":n.length,"Content-Type":`text/plain`}),t.end(n)}),this._server.listen(e.port,e.host,e.backlog,t)),this._server){let e=this.emit.bind(this,`connection`);this._removeListeners=b(this._server,{listening:this.emit.bind(this,`listening`),error:this.emit.bind(this,`error`),upgrade:(t,n,r)=>{this.handleUpgrade(t,n,r,e)}})}e.perMessageDeflate===!0&&(e.perMessageDeflate={}),e.clientTracking&&(this.clients=new Set,this._shouldEmitClose=!1),this.options=e,this._state=0}address(){if(this.options.noServer)throw Error(`The server is operating in "noServer" mode`);return this._server?this._server.address():null}close(e){if(this._state===2){e&&this.once(`close`,()=>{e(Error(`The server is not running`))}),process.nextTick(x,this);return}if(e&&this.once(`close`,e),this._state!==1)if(this._state=1,this.options.noServer||this.options.server)this._server&&(this._removeListeners(),this._removeListeners=this._server=null),this.clients&&this.clients.size?this._shouldEmitClose=!0:process.nextTick(x,this);else{let e=this._server;this._removeListeners(),this._removeListeners=this._server=null,e.close(()=>{x(this)})}}shouldHandle(e){if(this.options.path){let t=e.url.indexOf(`?`);if((t===-1?e.url:e.url.slice(0,t))!==this.options.path)return!1}return!0}handleUpgrade(e,t,n,r){t.on(`error`,S);let i=e.headers[`sec-websocket-key`],a=e.headers.upgrade,o=+e.headers[`sec-websocket-version`];if(e.method!==`GET`){w(this,e,t,405,`Invalid HTTP method`);return}if(a===void 0||a.toLowerCase()!==`websocket`){w(this,e,t,400,`Invalid Upgrade header`);return}if(i===void 0||!y.test(i)){w(this,e,t,400,`Missing or invalid Sec-WebSocket-Key header`);return}if(o!==13&&o!==8){w(this,e,t,400,`Missing or invalid Sec-WebSocket-Version header`,{"Sec-WebSocket-Version":`13, 8`});return}if(!this.shouldHandle(e)){C(t,400);return}let s=e.headers[`sec-websocket-protocol`],c=new Set;if(s!==void 0)try{c=d.parse(s)}catch{w(this,e,t,400,`Invalid Sec-WebSocket-Protocol header`);return}let f=e.headers[`sec-websocket-extensions`],p={};if(this.options.perMessageDeflate&&f!==void 0){let n=new u({...this.options.perMessageDeflate,isServer:!0,maxPayload:this.options.maxPayload});try{let e=l.parse(f);e[u.extensionName]&&(n.accept(e[u.extensionName]),p[u.extensionName]=n)}catch{w(this,e,t,400,`Invalid or unacceptable Sec-WebSocket-Extensions header`);return}}if(this.options.verifyClient){let a={origin:e.headers[`${o===8?`sec-websocket-origin`:`origin`}`],secure:!!(e.socket.authorized||e.socket.encrypted),req:e};if(this.options.verifyClient.length===2){this.options.verifyClient(a,(a,o,s,l)=>{if(!a)return C(t,o||401,s,l);this.completeUpgrade(p,i,c,e,t,n,r)});return}if(!this.options.verifyClient(a))return C(t,401)}this.completeUpgrade(p,i,c,e,t,n,r)}completeUpgrade(e,t,n,r,i,a,o){if(!i.readable||!i.writable)return i.destroy();if(i[v])throw Error(`server.handleUpgrade() was called more than once with the same socket, possibly due to a misconfiguration`);if(this._state>0)return C(i,503);let s=[`HTTP/1.1 101 Switching Protocols`,`Upgrade: websocket`,`Connection: Upgrade`,`Sec-WebSocket-Accept: ${c(`sha1`).update(t+_).digest(`base64`)}`],d=new this.options.WebSocket(null,void 0,this.options);if(n.size){let e=this.options.handleProtocols?this.options.handleProtocols(n,r):n.values().next().value;e&&(s.push(`Sec-WebSocket-Protocol: ${e}`),d._protocol=e)}if(e[u.extensionName]){let t=e[u.extensionName].params,n=l.format({[u.extensionName]:[t]});s.push(`Sec-WebSocket-Extensions: ${n}`),d._extensions=e}this.emit(`headers`,s,r),i.write(s.concat(`\r
|
|
2
|
+
`).join(`\r
|
|
3
|
+
`)),i.removeListener(`error`,S),d.setSocket(i,a,{allowSynchronousEvents:this.options.allowSynchronousEvents,maxBufferedChunks:this.options.maxBufferedChunks,maxFragments:this.options.maxFragments,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(x,this)})),o(d,r)}};function b(e,t){for(let n of Object.keys(t))e.on(n,t[n]);return function(){for(let n of Object.keys(t))e.removeListener(n,t[n])}}function x(e){e._state=2,e.emit(`close`)}function S(){this.destroy()}function C(e,t,n,r){n||=a.STATUS_CODES[t],r={Connection:`close`,"Content-Type":`text/html`,"Content-Length":Buffer.byteLength(n),...r},e.once(`finish`,e.destroy),e.end(`HTTP/1.1 ${t} ${a.STATUS_CODES[t]}\r\n`+Object.keys(r).map(e=>`${e}: ${r[e]}`).join(`\r
|
|
4
|
+
`)+`\r
|
|
5
|
+
\r
|
|
6
|
+
`+n)}function w(e,t,n,r,i,a){if(e.listenerCount(`wsClientError`)){let r=Error(i);Error.captureStackTrace(r,w),e.emit(`wsClientError`,r,n,t)}else C(n,r,i,a)}})),_;t((()=>{m(),f(),s(),l(),u(),h(),p(),_=n(g(),1)}))();var v=_.default;export{v as WebSocketServer};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{r as e}from"../_chunks/node/virtual-loader-B8K8w9cr.js";import{Readable as t}from"node:stream";import{rm as n}from"node:fs/promises";import r,{request as i}from"node:http";import a,{request as o}from"node:https";import"node:http2";const s=/(^|,)\s*upgrade\s*($|,)/i,c=/(^|,)\s*transfer-encoding\s*($|,)/i,l={http:new r.Agent({keepAlive:!0,maxSockets:256,maxFreeSockets:64}),https:new a.Agent({keepAlive:!0,maxSockets:256,maxFreeSockets:64})},u=/^https|wss/;function d(e){let t=!1;for(let n in e)if(e[n]!==void 0&&n.toLowerCase()===`transfer-encoding`){t=!0;break}let n=e.connection,r=typeof n==`string`&&c.test(n);(t||r)&&(e.connection=`close`)}const f=[`:method`,`:path`,`:scheme`,`:authority`];function p(e,t,n,r){e.port=t[r||`target`].port||(u.test(t[r||`target`].protocol??`http`)?443:80);for(let n of[`host`,`hostname`,`socketPath`,`pfx`,`key`,`passphrase`,`cert`,`ca`,`ciphers`,`secureProtocol`]){let i=t[r||`target`][n];i!==void 0&&(e[n]=i)}if(e.host===void 0&&typeof e.hostname==`string`){let t=e.hostname.includes(`:`)&&!e.hostname.startsWith(`[`)?`[${e.hostname}]`:e.hostname;e.host=e.port?`${t}:${e.port}`:t}if(e.method=t.method||n.method,e.headers={...n.headers},n.headers?.[`:authority`]&&(e.headers.host=n.headers[`:authority`]),t.headers)for(let n of Object.keys(t.headers))e.headers[n]=t.headers[n];if(n.httpVersionMajor>1)for(let t of f)delete e.headers[t];if(t.auth&&(e.auth=t.auth),t.ca&&(e.ca=t.ca),u.test(t[r||`target`].protocol??`http`)&&(e.rejectUnauthorized=t.secure===void 0?!0:t.secure),t.agent!==void 0)e.agent=t.agent||!1;else if(n.httpVersionMajor>1||s.test(n.headers.connection||``))e.agent=!1;else{let n=t[r||`target`].protocol??`http`;e.agent=u.test(n)?l.https:l.http}e.localAddress=t.localAddress,e.agent||(e.headers=e.headers||{},(typeof e.headers.connection!=`string`||!s.test(e.headers.connection))&&(e.headers.connection=`close`)),e.headers=e.headers||{},d(e.headers);let i=t[r||`target`],a=i&&t.prependPath!==!1&&i.pathname||``,o=i instanceof URL&&t.prependPath!==!1&&i.search||``,c=n.url||``,p=c.indexOf(`?`),h=p===-1?c:c.slice(0,p),g=p===-1?``:c.slice(p),_=h?h[0]===`/`?h:`/`+h:`/`,v=t.toProxy?`/`+c:_+g;v=t.ignorePath?``:v;let y=m(a,v);return o&&(y=y.includes(`?`)?y.replace(`?`,o+`&`):y+o),e.path=y,t.changeOrigin&&(e.headers.host=x(e.port,t[r||`target`].protocol)&&!b(e.host)?e.host+`:`+e.port:e.host??void 0),e}function m(e,t){if(!e||e===`/`)return t||`/`;if(!t||t===`/`)return e||`/`;let n=e[e.length-1]===`/`,r=t[0]===`/`;return n&&r?e+t.slice(1):!n&&!r?e+`/`+t:e+t}function h(e){return e.setTimeout(0),e.setNoDelay(!0),e.setKeepAlive(!0,0),e}function g(e){let t=e.headers[`:authority`]||e.headers.host,n=t?t.match(/:(\d+)/):``;return n?n[1]:_(e)?`443`:`80`}function _(e){let t=e.socket;return!!t&&`encrypted`in t&&t.encrypted}function v(e,t,n){return Array.isArray(e)?e.map(function(e){return v(e,t,n)}):e.replace(RegExp(String.raw`(;\s*`+n+`=)([^;]+)`,`i`),function(e,n,r){let i;if(r in t)i=t[r];else if(`*`in t)i=t[`*`];else return e;return i?n+i:``})}function y(e){if(typeof e==`string`){if(e.startsWith(`unix:`))return{socketPath:e.slice(5)};let t=new URL(e);return{host:t.hostname,port:Number(t.port)||(u.test(t.protocol)?443:80)}}if(!e.socketPath&&!e.port)throw Error("ProxyAddr must have either `port` or `socketPath`");return e}function b(e){return e?!!~e.indexOf(`:`):!1}function x(e,t){let n=t?.split(`:`)[0],r=+e;if(!r)return!1;switch(n){case`http`:case`ws`:return r!==80;case`https`:case`wss`:return r!==443;case`ftp`:return r!==21;case`gopher`:return r!==70;case`file`:return!1}return r!==0}async function S(e,n,r,a){let s=y(e),c=!1,d=``;if(typeof e==`string`&&!e.startsWith(`unix:`)){let t=new URL(e);c=u.test(t.protocol),t.pathname&&t.pathname!==`/`&&(d=t.pathname)}let f,p;n instanceof Request?(f=new URL(n.url),p={...C(n),...C(r)}):(f=new URL(n),p=C(r)),p={redirect:`manual`,...p},p.body&&(p.duplex=`half`);let h=f.pathname+f.search,g=d?m(d,h):h,_={};if(p.headers)if(!(p.headers instanceof Headers)&&!Array.isArray(p.headers))Object.assign(_,p.headers);else for(let[e,t]of p.headers){let n=_[e];n===void 0?_[e]=t:_[e]=Array.isArray(n)?[...n,t]:[n,t]}if(a?.xfwd&&(_[`x-forwarded-for`]||=f.hostname,_[`x-forwarded-port`]||=f.port||(f.protocol===`https:`?`443`:`80`),_[`x-forwarded-proto`]||=f.protocol.replace(`:`,``),_[`x-forwarded-host`]||=f.host),a?.changeOrigin)if(s.socketPath)_.host=`localhost`;else{let e=s.host||`localhost`,t=s.port;_.host=t&&t!==(c?443:80)?`${e}:${t}`:e}let v=typeof a?.followRedirects==`number`?a.followRedirects:a?.followRedirects?5:0,b=v>0?await T(p.body):w(p.body),x=a?.agent===void 0?c?l.https:l.http:a.agent||!1,S=await D(c?o:i,p.method||`GET`,g,_,s,b,{signal:p.signal||void 0,agent:x,timeout:a?.timeout,ssl:a?.ssl,maxRedirects:v,redirectCount:0,originalHeaders:_}),E=[],O=S.rawHeaders;for(let e=0;e<O.length;e+=2){let t=O[e],n=t.toLowerCase();n===`transfer-encoding`||n===`keep-alive`||n===`connection`||E.push([t,O[e+1]])}let k=S.statusCode!==204&&S.statusCode!==304;return new Response(k?t.toWeb(S):null,{status:S.statusCode,statusText:S.statusMessage,headers:E})}function C(e){if(e)return e instanceof Request?{method:e.method,headers:e.headers,body:e.body,duplex:e.body?`half`:void 0}:e}function w(e){if(e)return typeof e==`string`||e instanceof ArrayBuffer||ArrayBuffer.isView(e)?Buffer.from(e):e instanceof ReadableStream?t.fromWeb(e):e instanceof Blob?t.fromWeb(e.stream()):Buffer.from(String(e))}async function T(e){if(e){if(typeof e==`string`||e instanceof ArrayBuffer||ArrayBuffer.isView(e))return Buffer.from(e);if(e instanceof ReadableStream){let n=t.fromWeb(e),r=[];for await(let e of n)r.push(typeof e==`string`?Buffer.from(e):e);return Buffer.concat(r)}return e instanceof Blob?Buffer.from(await e.arrayBuffer()):Buffer.from(String(e))}}const E=new Set([301,302,303,307,308]);function D(e,n,r,a,s,c,l){return d(a),new Promise((d,f)=>{let p={method:n,path:r,headers:a,agent:l.agent};s.socketPath?p.socketPath=s.socketPath:(p.hostname=s.host||`localhost`,p.port=s.port),l.signal&&(p.signal=l.signal),l.ssl&&Object.assign(p,l.ssl);let m=e(p,e=>{let t=e.statusCode;if(l.maxRedirects>0&&E.has(t)&&l.redirectCount<l.maxRedirects&&e.headers.location){e.resume();let a=new URL(r,`http://${s.host||`localhost`}:${s.port||80}`),p=new URL(e.headers.location,a),m=u.test(p.protocol),h=t===307||t===308,g=h?n:`GET`,_={...l.originalHeaders};_.host=p.host,p.host!==a.host&&(delete _.authorization,delete _.cookie),h||(delete _[`content-length`],delete _[`content-type`],delete _[`transfer-encoding`]),D(m?o:i,g,p.pathname+p.search,_,{host:p.hostname,port:Number(p.port)||(m?443:80)},h?c:void 0,{...l,redirectCount:l.redirectCount+1}).then(d,f);return}d(e)});m.on(`error`,f),l.timeout&&m.setTimeout(l.timeout,()=>{m.destroy(Error(`Proxy request timed out`))}),c instanceof t?(c.on(`error`,e=>{m.destroy(e),f(e)}),c.pipe(m)):c?m.end(c):m.end()})}function O(e,t,n,r,a){let s=y(e),c=!1;if(typeof e==`string`&&!e.startsWith(`unix:`)&&(c=u.test(new URL(e).protocol)),t.method!==`GET`||t.headers.upgrade?.toLowerCase()!==`websocket`)return n.destroy(),Promise.reject(Error(`Not a valid WebSocket upgrade request`));if(a?.xfwd!==!1){let e=t.headers[`x-forwarded-for`],n=t.headers[`x-forwarded-port`],r=t.headers[`x-forwarded-proto`];t.headers[`x-forwarded-for`]=`${e?`${e},`:``}${t.socket?.remoteAddress}`,t.headers[`x-forwarded-port`]=`${n?`${n},`:``}${g(t)}`,t.headers[`x-forwarded-proto`]=`${r?`${r},`:``}${_(t)?`wss`:`ws`}`}let l=k(s,c),d={...a,target:l,prependPath:a?.prependPath!==!1},f=p(d.ssl||{},d,t),m=n;return new Promise((e,t)=>{let n=!1;h(m),r&&r.length>0&&m.unshift(r),m.once(`error`,s);let a=(u.test(l.protocol)?o:i)(f);a.once(`error`,c),a.once(`response`,e=>{e.upgrade||(!m.destroyed&&m.writable?(m.write(A(`HTTP/${e.httpVersion} ${e.statusCode} ${e.statusMessage}`,e.headers)),e.on(`error`,c),e.pipe(m)):e.resume(),n||(n=!0,t(Error(`Upstream server did not upgrade the connection`))))}),a.once(`upgrade`,(t,r,i)=>{r.once(`error`,c),m.removeListener(`error`,s),m.once(`error`,()=>{r.end()}),h(r),i&&i.length>0&&r.unshift(i),m.write(A(`HTTP/1.1 101 Switching Protocols`,t.headers)),r.pipe(m).pipe(r),n=!0,e(r)}),a.end();function s(e){a.destroy(),n||(n=!0,t(e))}function c(e){m.end(),n||(n=!0,t(e))}})}function k(e,t=!1){let n=t?`https`:`http`;if(e.socketPath){let t=new URL(`${n}://unix`);return t.socketPath=e.socketPath,t}return new URL(`${n}://${e.host||`localhost`}${e.port?`:${e.port}`:``}`)}function A(e,t){let n=e;for(let e of Object.keys(t)){let r=t[e];if(r!==void 0)if(Array.isArray(r))for(let t of r)n+=`\r\n${e}: ${t}`;else n+=`\r\n${e}: ${r}`}return`${n}\r\n\r\n`}var j=class{closed=!1;_name;_workerEntry;_data;_virtualSources;_hooks;_address;_messageListeners;_pendingRequests;_virtualResolved;constructor(e){this._name=e.name,this._workerEntry=e.workerEntry,this._data=e.data,this._hooks=e.hooks||{},this._messageListeners=new Set,this._pendingRequests=new Set}get ready(){return!!(!this.closed&&this._address&&this._hasRuntime())}async fetch(e,t){for(let e=0;e<5&&!this._address&&!this.closed;e++)await new Promise(t=>setTimeout(t,100*2**e));return this._address?S(this._address,this._resolveFetchInput(e),t):new Response(`${this._runtimeType()} env runner is unavailable`,{status:503})}async upgrade(e){!this.ready||!this._address||await O(this._address,e.node.req,e.node.socket,e.node.head)}onMessage(e){this._messageListeners.add(e)}offMessage(e){this._messageListeners.delete(e)}waitForReady(e=5e3){return this.ready?Promise.resolve():this.closed?Promise.reject(Error(`Runner closed before becoming ready`)):new Promise((t,n)=>{let r=setTimeout(()=>{this._messageListeners.delete(i),n(Error(`Runner did not become ready in time`))},e),i=()=>{this.ready?(clearTimeout(r),this._messageListeners.delete(i),t()):this.closed&&(clearTimeout(r),this._messageListeners.delete(i),n(Error(`Runner closed before becoming ready`)))};this._messageListeners.add(i)})}rpc(e,t,n){let r=Math.random().toString(36).slice(2);return this._request({__rpc:e,__rpc_id:r,data:t},{match:e=>e?.__rpc_id===r,timeout:n?.timeout??3e3,timeoutError:`RPC "${e}" timed out`}).then(e=>e.data)}async reloadModule(e=5e3){await this._request({event:`reload-module`},{match:e=>e?.event===`module-reloaded`,timeout:e,timeoutError:`Module reload timed out`})}async invalidateModule(e,t=5e3){let n=await this._refreshVirtualSource(e);await this._request({event:`invalidate-module`,specifier:e,source:n},{match:t=>t?.event===`module-invalidated`&&t.specifier===e,timeout:t,timeoutError:`Module invalidation timed out for "${e}"`})}async close(e){if(this.closed)return;this.closed=!0;for(let t of this._pendingRequests)t(e);this._pendingRequests.clear(),this._hooks.onClose?.(this,e),this._hooks={};let t=e=>console.error(e);await this._closeRuntime().catch(t),await this._closeSocket().catch(t)}async[Symbol.asyncDispose](){await this.close()}[Symbol.for(`nodejs.util.inspect.custom`)](){let e=this.closed?`closed`:this.ready?`ready`:`pending`;return`${this.constructor.name}#${this._name}(${e})`}_resolveFetchInput(e){return typeof e==`string`&&!URL.canParse(e)?new URL(e,`http://localhost`):e}_handleMessage(e){e?.address&&(this._address=e.address,this._hooks.onReady?.(this,this._address)),e?.event===`init-error`&&!this.ready&&!this.closed&&this.close(Error(String(e.error||`Worker initialization failed`)));for(let t of this._messageListeners)t(e)}_request(e,t){return this.closed?Promise.reject(Error(`Runner is closed`)):new Promise((n,r)=>{let i=setTimeout(()=>{s(),r(Error(t.timeoutError))},t.timeout),a=e=>{t.match(e)&&(s(),e.error?r(typeof e.error==`string`?Error(e.error):e.error):n(e))},o=e=>{s(),r(Error(`Runner closed before responding`,e?{cause:e}:void 0))},s=()=>{clearTimeout(i),this.offMessage(a),this._pendingRequests.delete(o)};this.onMessage(a),this._pendingRequests.add(o);try{(t.send??(e=>this.sendMessage(e)))(e)}catch(e){s(),r(e)}})}_resolveVirtualData(){let t=this._data?.virtual;if(this._virtualSources=t,!(!t||!Object.values(t).some(e=>typeof e==`function`)))return this._virtualResolved=e(t).then(e=>{this._data={...this._data,virtual:e}}),this._virtualResolved}async _refreshVirtualSource(e){await this._virtualResolved?.catch(()=>{});let t=this._virtualSources?.[e];if(typeof t!=`function`)return;let n=await t(),r=this._data?.virtual;return r&&(r[e]=n),n}_initWithVirtualData(e){let t=this._resolveVirtualData();t?t.then(()=>{this.closed||e()},e=>this.close(e)):e()}async _closeSocket(){let e=this._address?.socketPath;e&&e[0]!==`\0`&&!e.startsWith(String.raw`\\.\\pipe`)&&await n(e).catch(()=>{}),this._address=void 0}};export{j as BaseEnvRunner};
|
|
1
|
+
import{r as e}from"../_chunks/node/virtual-loader-Cwgujv7l.js";import{Readable as t}from"node:stream";import{rm as n}from"node:fs/promises";import r,{request as i}from"node:http";import a,{request as o}from"node:https";import"node:http2";const s=/(^|,)\s*upgrade\s*($|,)/i,c=/(^|,)\s*transfer-encoding\s*($|,)/i,l={http:new r.Agent({keepAlive:!0,maxSockets:256,maxFreeSockets:64}),https:new a.Agent({keepAlive:!0,maxSockets:256,maxFreeSockets:64})},u=/^https|wss/;function d(e){let t=!1;for(let n in e)if(e[n]!==void 0&&n.toLowerCase()===`transfer-encoding`){t=!0;break}let n=e.connection,r=typeof n==`string`&&c.test(n);(t||r)&&(e.connection=`close`)}const f=[`:method`,`:path`,`:scheme`,`:authority`];function p(e,t,n,r){e.port=t[r||`target`].port||(u.test(t[r||`target`].protocol??`http`)?443:80);for(let n of[`host`,`hostname`,`socketPath`,`pfx`,`key`,`passphrase`,`cert`,`ca`,`ciphers`,`secureProtocol`]){let i=t[r||`target`][n];i!==void 0&&(e[n]=i)}if(e.host===void 0&&typeof e.hostname==`string`){let t=e.hostname.includes(`:`)&&!e.hostname.startsWith(`[`)?`[${e.hostname}]`:e.hostname;e.host=e.port?`${t}:${e.port}`:t}if(e.method=t.method||n.method,e.headers={...n.headers},n.headers?.[`:authority`]&&(e.headers.host=n.headers[`:authority`]),t.headers)for(let n of Object.keys(t.headers))e.headers[n]=t.headers[n];if(n.httpVersionMajor>1)for(let t of f)delete e.headers[t];if(t.auth&&(e.auth=t.auth),t.ca&&(e.ca=t.ca),u.test(t[r||`target`].protocol??`http`)&&(e.rejectUnauthorized=t.secure===void 0?!0:t.secure),t.agent!==void 0)e.agent=t.agent||!1;else if(n.httpVersionMajor>1||s.test(n.headers.connection||``))e.agent=!1;else{let n=t[r||`target`].protocol??`http`;e.agent=u.test(n)?l.https:l.http}e.localAddress=t.localAddress,e.agent||(e.headers=e.headers||{},(typeof e.headers.connection!=`string`||!s.test(e.headers.connection))&&(e.headers.connection=`close`)),e.headers=e.headers||{},d(e.headers);let i=t[r||`target`],a=i&&t.prependPath!==!1&&i.pathname||``,o=i instanceof URL&&t.prependPath!==!1&&i.search||``,c=n.url||``,p=c.indexOf(`?`),h=p===-1?c:c.slice(0,p),g=p===-1?``:c.slice(p),_=h?h[0]===`/`?h:`/`+h:`/`,v=t.toProxy?`/`+c:_+g;v=t.ignorePath?``:v;let y=m(a,v);return o&&(y=y.includes(`?`)?y.replace(`?`,o+`&`):y+o),e.path=y,t.changeOrigin&&(e.headers.host=x(e.port,t[r||`target`].protocol)&&!b(e.host)?e.host+`:`+e.port:e.host??void 0),e}function m(e,t){if(!e||e===`/`)return t||`/`;if(!t||t===`/`)return e||`/`;let n=e[e.length-1]===`/`,r=t[0]===`/`;return n&&r?e+t.slice(1):!n&&!r?e+`/`+t:e+t}function h(e){return e.setTimeout(0),e.setNoDelay(!0),e.setKeepAlive(!0,0),e}function g(e){let t=e.headers[`:authority`]||e.headers.host,n=t?t.match(/:(\d+)/):``;return n?n[1]:_(e)?`443`:`80`}function _(e){let t=e.socket;return!!t&&`encrypted`in t&&t.encrypted}function v(e,t,n){return Array.isArray(e)?e.map(function(e){return v(e,t,n)}):e.replace(RegExp(String.raw`(;\s*`+n+`=)([^;]+)`,`i`),function(e,n,r){let i;if(r in t)i=t[r];else if(`*`in t)i=t[`*`];else return e;return i?n+i:``})}function y(e){if(typeof e==`string`){if(e.startsWith(`unix:`))return{socketPath:e.slice(5)};let t=new URL(e);return{host:t.hostname,port:Number(t.port)||(u.test(t.protocol)?443:80)}}if(!e.socketPath&&!e.port)throw Error("ProxyAddr must have either `port` or `socketPath`");return e}function b(e){return e?!!~e.indexOf(`:`):!1}function x(e,t){let n=t?.split(`:`)[0],r=+e;if(!r)return!1;switch(n){case`http`:case`ws`:return r!==80;case`https`:case`wss`:return r!==443;case`ftp`:return r!==21;case`gopher`:return r!==70;case`file`:return!1}return r!==0}async function S(e,n,r,a){let s=y(e),c=!1,d=``;if(typeof e==`string`&&!e.startsWith(`unix:`)){let t=new URL(e);c=u.test(t.protocol),t.pathname&&t.pathname!==`/`&&(d=t.pathname)}let f,p;n instanceof Request?(f=new URL(n.url),p={...C(n),...C(r)}):(f=new URL(n),p=C(r)),p={redirect:`manual`,...p},p.body&&(p.duplex=`half`);let h=f.pathname+f.search,g=d?m(d,h):h,_={};if(p.headers)if(!(p.headers instanceof Headers)&&!Array.isArray(p.headers))Object.assign(_,p.headers);else for(let[e,t]of p.headers){let n=_[e];n===void 0?_[e]=t:_[e]=Array.isArray(n)?[...n,t]:[n,t]}if(a?.xfwd&&(_[`x-forwarded-for`]||=f.hostname,_[`x-forwarded-port`]||=f.port||(f.protocol===`https:`?`443`:`80`),_[`x-forwarded-proto`]||=f.protocol.replace(`:`,``),_[`x-forwarded-host`]||=f.host),a?.changeOrigin)if(s.socketPath)_.host=`localhost`;else{let e=s.host||`localhost`,t=s.port;_.host=t&&t!==(c?443:80)?`${e}:${t}`:e}let v=typeof a?.followRedirects==`number`?a.followRedirects:a?.followRedirects?5:0,b=v>0?await T(p.body):w(p.body),x=a?.agent===void 0?c?l.https:l.http:a.agent||!1,S=await D(c?o:i,p.method||`GET`,g,_,s,b,{signal:p.signal||void 0,agent:x,timeout:a?.timeout,ssl:a?.ssl,maxRedirects:v,redirectCount:0,originalHeaders:_}),E=[],O=S.rawHeaders;for(let e=0;e<O.length;e+=2){let t=O[e],n=t.toLowerCase();n===`transfer-encoding`||n===`keep-alive`||n===`connection`||E.push([t,O[e+1]])}let k=S.statusCode!==204&&S.statusCode!==304;return new Response(k?t.toWeb(S):null,{status:S.statusCode,statusText:S.statusMessage,headers:E})}function C(e){if(e)return e instanceof Request?{method:e.method,headers:e.headers,body:e.body,duplex:e.body?`half`:void 0}:e}function w(e){if(e)return typeof e==`string`||e instanceof ArrayBuffer||ArrayBuffer.isView(e)?Buffer.from(e):e instanceof ReadableStream?t.fromWeb(e):e instanceof Blob?t.fromWeb(e.stream()):Buffer.from(String(e))}async function T(e){if(e){if(typeof e==`string`||e instanceof ArrayBuffer||ArrayBuffer.isView(e))return Buffer.from(e);if(e instanceof ReadableStream){let n=t.fromWeb(e),r=[];for await(let e of n)r.push(typeof e==`string`?Buffer.from(e):e);return Buffer.concat(r)}return e instanceof Blob?Buffer.from(await e.arrayBuffer()):Buffer.from(String(e))}}const E=new Set([301,302,303,307,308]);function D(e,n,r,a,s,c,l){return d(a),new Promise((d,f)=>{let p={method:n,path:r,headers:a,agent:l.agent};s.socketPath?p.socketPath=s.socketPath:(p.hostname=s.host||`localhost`,p.port=s.port),l.signal&&(p.signal=l.signal),l.ssl&&Object.assign(p,l.ssl);let m=e(p,e=>{let t=e.statusCode;if(l.maxRedirects>0&&E.has(t)&&l.redirectCount<l.maxRedirects&&e.headers.location){e.resume();let a=new URL(r,`http://${s.host||`localhost`}:${s.port||80}`),p=new URL(e.headers.location,a),m=u.test(p.protocol),h=t===307||t===308,g=h?n:`GET`,_={...l.originalHeaders};_.host=p.host,p.host!==a.host&&(delete _.authorization,delete _.cookie),h||(delete _[`content-length`],delete _[`content-type`],delete _[`transfer-encoding`]),D(m?o:i,g,p.pathname+p.search,_,{host:p.hostname,port:Number(p.port)||(m?443:80)},h?c:void 0,{...l,redirectCount:l.redirectCount+1}).then(d,f);return}d(e)});m.on(`error`,f),l.timeout&&m.setTimeout(l.timeout,()=>{m.destroy(Error(`Proxy request timed out`))}),c instanceof t?(c.on(`error`,e=>{m.destroy(e),f(e)}),c.pipe(m)):c?m.end(c):m.end()})}function O(e,t,n,r,a){let s=y(e),c=!1;if(typeof e==`string`&&!e.startsWith(`unix:`)&&(c=u.test(new URL(e).protocol)),t.method!==`GET`||t.headers.upgrade?.toLowerCase()!==`websocket`)return n.destroy(),Promise.reject(Error(`Not a valid WebSocket upgrade request`));if(a?.xfwd!==!1){let e=t.headers[`x-forwarded-for`],n=t.headers[`x-forwarded-port`],r=t.headers[`x-forwarded-proto`];t.headers[`x-forwarded-for`]=`${e?`${e},`:``}${t.socket?.remoteAddress}`,t.headers[`x-forwarded-port`]=`${n?`${n},`:``}${g(t)}`,t.headers[`x-forwarded-proto`]=`${r?`${r},`:``}${_(t)?`wss`:`ws`}`}let l=k(s,c),d={...a,target:l,prependPath:a?.prependPath!==!1},f=p(d.ssl||{},d,t),m=n;return new Promise((e,t)=>{let n=!1;h(m),r&&r.length>0&&m.unshift(r),m.once(`error`,s);let a=(u.test(l.protocol)?o:i)(f);a.once(`error`,c),a.once(`response`,e=>{e.upgrade||(!m.destroyed&&m.writable?(m.write(A(`HTTP/${e.httpVersion} ${e.statusCode} ${e.statusMessage}`,e.headers)),e.on(`error`,c),e.pipe(m)):e.resume(),n||(n=!0,t(Error(`Upstream server did not upgrade the connection`))))}),a.once(`upgrade`,(t,r,i)=>{r.once(`error`,c),m.removeListener(`error`,s),m.once(`error`,()=>{r.end()}),h(r),i&&i.length>0&&r.unshift(i),m.write(A(`HTTP/1.1 101 Switching Protocols`,t.headers)),r.pipe(m).pipe(r),n=!0,e(r)}),a.end();function s(e){a.destroy(),n||(n=!0,t(e))}function c(e){m.end(),n||(n=!0,t(e))}})}function k(e,t=!1){let n=t?`https`:`http`;if(e.socketPath){let t=new URL(`${n}://unix`);return t.socketPath=e.socketPath,t}return new URL(`${n}://${e.host||`localhost`}${e.port?`:${e.port}`:``}`)}function A(e,t){let n=e;for(let e of Object.keys(t)){let r=t[e];if(r!==void 0)if(Array.isArray(r))for(let t of r)n+=`\r\n${e}: ${t}`;else n+=`\r\n${e}: ${r}`}return`${n}\r\n\r\n`}var j=class{closed=!1;_name;_workerEntry;_data;_virtualSources;_hooks;_address;_messageListeners;_pendingRequests;_virtualResolved;constructor(e){this._name=e.name,this._workerEntry=e.workerEntry,this._data=e.data,this._hooks=e.hooks||{},this._messageListeners=new Set,this._pendingRequests=new Set}get ready(){return!!(!this.closed&&this._address&&this._hasRuntime())}get address(){return this._address}async fetch(e,t){for(let e=0;e<5&&!this._address&&!this.closed;e++)await new Promise(t=>setTimeout(t,100*2**e));return this._address?S(this._address,this._resolveFetchInput(e),t):new Response(`${this._runtimeType()} env runner is unavailable`,{status:503})}async upgrade(e){if(this.ready||await this.waitForReady().catch(()=>{}),!this.ready||!this._address){e.node.socket.destroy();return}try{await O(this._address,e.node.req,e.node.socket,e.node.head)}catch{}}onMessage(e){this._messageListeners.add(e)}offMessage(e){this._messageListeners.delete(e)}waitForReady(e=15e3){return this.ready?Promise.resolve():this.closed?Promise.reject(Error(`Runner closed before becoming ready`)):new Promise((t,n)=>{let r=setTimeout(()=>{this._messageListeners.delete(i),n(Error(`Runner did not become ready in time`))},e),i=()=>{this.ready?(clearTimeout(r),this._messageListeners.delete(i),t()):this.closed&&(clearTimeout(r),this._messageListeners.delete(i),n(Error(`Runner closed before becoming ready`)))};this._messageListeners.add(i)})}rpc(e,t,n){let r=Math.random().toString(36).slice(2);return this._request({__rpc:e,__rpc_id:r,data:t},{match:e=>e?.__rpc_id===r,timeout:n?.timeout??3e3,timeoutError:`RPC "${e}" timed out`}).then(e=>e.data)}async reloadModule(e=5e3){await this._request({event:`reload-module`},{match:e=>e?.event===`module-reloaded`,timeout:e,timeoutError:`Module reload timed out`})}async invalidateModule(e,t=5e3){let n=await this._refreshVirtualSource(e);await this._request({event:`invalidate-module`,specifier:e,source:n},{match:t=>t?.event===`module-invalidated`&&t.specifier===e,timeout:t,timeoutError:`Module invalidation timed out for "${e}"`})}async close(e){if(this.closed)return;this.closed=!0;for(let t of this._pendingRequests)t(e);this._pendingRequests.clear(),this._hooks.onClose?.(this,e),this._hooks={};let t=e=>console.error(e);await this._closeRuntime().catch(t),await this._closeSocket().catch(t)}async[Symbol.asyncDispose](){await this.close()}[Symbol.for(`nodejs.util.inspect.custom`)](){let e=this.closed?`closed`:this.ready?`ready`:`pending`;return`${this.constructor.name}#${this._name}(${e})`}_resolveFetchInput(e){return typeof e==`string`&&!URL.canParse(e)?new URL(e,`http://localhost`):e}_handleMessage(e){e?.address&&(this._address=e.address,this._hooks.onReady?.(this,this._address)),e?.event===`init-error`&&!this.ready&&!this.closed&&this.close(Error(String(e.error||`Worker initialization failed`)));for(let t of this._messageListeners)t(e)}_request(e,t){return this.closed?Promise.reject(Error(`Runner is closed`)):new Promise((n,r)=>{let i=setTimeout(()=>{s(),r(Error(t.timeoutError))},t.timeout),a=e=>{t.match(e)&&(s(),e.error?r(typeof e.error==`string`?Error(e.error):e.error):n(e))},o=e=>{s(),r(Error(`Runner closed before responding`,e?{cause:e}:void 0))},s=()=>{clearTimeout(i),this.offMessage(a),this._pendingRequests.delete(o)};this.onMessage(a),this._pendingRequests.add(o);try{(t.send??(e=>this.sendMessage(e)))(e)}catch(e){s(),r(e)}})}_resolveVirtualData(){let t=this._data?.virtual;if(this._virtualSources=t,!(!t||!Object.values(t).some(e=>typeof e==`function`)))return this._virtualResolved=e(t).then(e=>{this._data={...this._data,virtual:e}}),this._virtualResolved}async _refreshVirtualSource(e){await this._virtualResolved?.catch(()=>{});let t=this._virtualSources?.[e];if(typeof t!=`function`)return;let n=await t(),r=this._data?.virtual;return r&&(r[e]=n),n}_initWithVirtualData(e){let t=this._resolveVirtualData();t?t.then(()=>{this.closed||e()},e=>this.close(e)):e()}async _closeSocket(){let e=this._address?.socketPath;e&&e[0]!==`\0`&&!e.startsWith(String.raw`\\.\\pipe`)&&await n(e).catch(()=>{}),this._address=void 0}};export{j as BaseEnvRunner};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{a as e,i as t,n,t as r}from"../_chunks/node/virtual-loader-
|
|
1
|
+
import{a as e,i as t,n,t as r}from"../_chunks/node/virtual-loader-Cwgujv7l.js";import{createRequire as i}from"node:module";import{isAbsolute as a}from"node:path";import{pathToFileURL as o}from"node:url";import{existsSync as s,readFileSync as c}from"node:fs";import{Readable as l}from"node:stream";import u from"node:http";import d from"node:https";import f from"node:http2";import{parentPort as p,workerData as m}from"node:worker_threads";import{pipeline as h}from"node:stream/promises";async function g(e){if(!e||Object.keys(e).length===0)return C;let{registerHooks:t,stripTypeScriptTypes:n}=await import(`node:module`);if(typeof t==`function`){let i=`Deno`in globalThis,a;if(i){a=(e,t)=>S(e,t,n);let t={};for(let[n,r]of Object.entries(e))t[n]=a(n,r);e=t}let o={virtual:e,versions:new Map,transformSource:a},s=t(r(e,o.versions,void 0,i));return y.unshift(o),w(()=>{let e=y.indexOf(o);e!==-1&&y.splice(e,1),s.deregister()})}return typeof globalThis.Bun?.plugin==`function`?(b=e,x(Object.keys(e)),w(()=>{b===e&&(b=void 0)})):(console.warn("[env-runner] virtual modules require `module.registerHooks` (Node.js >= 22.15 / Deno >= 2.x) or `Bun.plugin`; skipping registration."),C)}function _(e){return b?.[e]===void 0?!1:(x([e]),!0)}function v(e,t){for(let r of y){if(!Object.hasOwn(r.virtual,e))continue;let{virtual:i,versions:a,transformSource:o}=r;t!==void 0&&(i[e]=o?o(e,t):t);for(let t of n(i,e))a.set(t,(a.get(t)??0)+1);return!0}return b&&Object.hasOwn(b,e)?(t!==void 0&&(b[e]=t),x(n(b,e)),!0):!1}function ee(e,t){let n=v(e.specifier,e.source);t({event:`module-invalidated`,specifier:e.specifier,error:n?void 0:`Cannot invalidate "${e.specifier}" (not a registered virtual module)`})}const y=[];let b;function x(t){globalThis.Bun.plugin({name:`env-runner-virtual`,setup(n){for(let r of t)n.module(r,()=>{let t=b?.[r];if(t===void 0)throw Error(`Cannot find virtual module "${r}" (unregistered)`);let n=e(r);return n===`json`?{exports:{default:JSON.parse(t)},loader:`object`}:{contents:t,loader:n===`module-typescript`?`ts`:`js`}})}})}function S(n,r,i){let a=e(n);return a===`module-typescript`?t(n,r,i,{requirement:`(custom load hooks bypass Deno's native type stripping)`,remedy:`upgrade Deno`}):a===`json`?`export default JSON.parse(${JSON.stringify(r)});`:r}const C=()=>{};function w(e){let t=!1;return()=>{t||(t=!0,e())}}function te(e,t){return!!(e&&t&&Object.hasOwn(t,e))}async function ne(e,t){let n=await(t?import(e):import(ae(e))),r=n.default||n;if(typeof r.fetch!=`function`)throw Error(`[env-runner] Entry module "${e}" must export a \`fetch\` handler (export default { fetch(req) { ... } }).`);return r}function re(e){let t=new URL(e.url);return{host:t.hostname,port:Number(t.port)}}async function ie(e,t,n,r){await t.ipc?.onClose?.();let i=await E(e,r);return await i.ipc?.onOpen?.({sendMessage:n}),i}function ae(e){let t=e.indexOf(`?`),n=t===-1?e:e.slice(0,t),r=t===-1?``:e.slice(t);return a(n)?o(n).href+r:e}let T=0;async function E(e,t){let n=e.indexOf(`?`),r=n===-1?e:e.slice(0,n),i;if(!t&&s(r)){let e=c(r,`utf8`);i=await import(`data:text/javascript;base64,`+Buffer.from(e).toString(`base64`))}else i=t&&_(r)?await import(r):await import(e+(n===-1?`?`:`&`)+`__envRunnerReload=`+ T++);let a=i.default||i;if(typeof a.fetch!=`function`)throw Error(`[env-runner] Entry module "${e}" must export a \`fetch\` handler (export default { fetch(req) { ... } }).`);return a}function D(e,t,n){for(let r of[...Object.getOwnPropertyNames(t),...Object.getOwnPropertySymbols(t)]){if(r===`constructor`)continue;let i=Object.getOwnPropertyDescriptor(e,r),a=Object.getOwnPropertyDescriptor(t,r),o=!1;a.get&&=(o=!0,i?.get||function(){return this[n][r]}),a.set&&=(o=!0,i?.set||function(e){this[n][r]=e}),!i?.value&&typeof a.value==`function`&&(o=!0,a.value=function(...e){return this[n][r](...e)}),o&&Object.defineProperty(e,r,a)}}const O=/(?:(?:^|\/)(?:\.|\.\.|%2e|%2e\.|\.%2e|%2e%2e)(?:\/|$))|[\\^#"<>{}`\x80-\uffff]/i,k=/[#"'<>]/,A=(()=>{let e=globalThis.URL,t=class{#e;#t;#n;#r;#i;#a;#o;#s;constructor(t){if(typeof t==`string`){let n=t[0]===`/`;n&&!k.test(t)?this.#t=t:this.#e=new e(n?`http://localhost${t}`:t)}else O.test(t.pathname)||t.search&&k.test(t.search)?this.#e=new e(`${t.protocol||`http:`}//${t.host||`localhost`}${t.pathname}${t.search||``}`):(this.#n=t.protocol,this.#r=t.host,this.#i=t.pathname,this.#a=t.search)}static[Symbol.hasInstance](t){return t instanceof e}get _url(){return this.#e?this.#e:(this.#e=new e(this.href),this.#t=void 0,this.#n=void 0,this.#r=void 0,this.#i=void 0,this.#a=void 0,this.#o=void 0,this.#s=void 0,this.#e)}get href(){return this.#e?this.#e.href:(this.#t||=`${this.#n||`http:`}//${this.#r||`localhost`}${this.#i||`/`}${this.#a||``}`,this.#t)}#c(){if(!this.#s){let e=this.href,t=e.indexOf(`://`),n=t===-1?-1:e.indexOf(`/`,t+4),r=n===-1?-1:e.indexOf(`?`,n);this.#s=[t,n,r]}return this.#s}get pathname(){if(this.#e)return this.#e.pathname;if(this.#i===void 0){let[,e,t]=this.#c();if(e===-1)return this._url.pathname;this.#i=this.href.slice(e,t===-1?void 0:t)}return this.#i}get search(){if(this.#e)return this.#e.search;if(this.#a===void 0){let[,e,t]=this.#c();if(e===-1)return this._url.search;let n=this.href;this.#a=t===-1||t===n.length-1?``:n.slice(t)}return this.#a}get searchParams(){return this.#e?this.#e.searchParams:(this.#o||=new URLSearchParams(this.search),this.#o)}get protocol(){if(this.#e)return this.#e.protocol;if(this.#n===void 0){let[e]=this.#c();if(e===-1)return this._url.protocol;let t=this.href;this.#n=t.slice(0,e+1)}return this.#n}toString(){return this.href}toJSON(){return this.href}};return D(t.prototype,e.prototype,`_url`),Object.setPrototypeOf(t.prototype,e.prototype),Object.setPrototypeOf(t,e),t})();function oe(e){let t=e.port??globalThis.process?.env.PORT??3e3,n=typeof t==`number`?t:Number.parseInt(t,10);if(n<0||n>65535)throw RangeError(`Port must be between 0 and 65535 (got "${n}").`);return{port:n,hostname:e.hostname??globalThis.process?.env.HOST}}function se(e,t,n){if(!(!e||!t))return e.includes(`:`)&&(e=`[${e}]`),`http${n?`s`:``}://${e}:${t}/`}function j(e,t){if(!t||(e.silent??globalThis.process?.env?.TEST))return;let n=``;try{let e=new URL(t);(e.hostname===`[::]`||e.hostname===`0.0.0.0`)&&(e.hostname=`localhost`,t=e.href,n=` (all interfaces)`)}catch{}let r=`➜ Listening on:`;globalThis.process.stdout?.isTTY&&(r=`\u001B[32m${r}\u001B[0m`,t=`\u001B[36m${t}\u001B[0m`,n=`\u001B[2m${n}\u001B[0m`),console.log(`${r} ${t}${n}`)}function M(e){if(!e.tls||e.protocol===`http`)return;let t=N(e.tls.cert),n=N(e.tls.key);if(!t&&!n){if(e.protocol===`https`)throw TypeError("TLS `cert` and `key` must be provided for `https` protocol.");return}if(!t||!n)throw TypeError("TLS `cert` and `key` must be provided together.");return{cert:t,key:n,passphrase:e.tls.passphrase}}function N(e){if(!e)return;if(typeof e!=`string`)throw TypeError(`TLS certificate and key must be strings in PEM format or file paths.`);if(e.startsWith(`-----BEGIN `))return e;let{readFileSync:t}=process.getBuiltinModule(`node:fs`);return t(e,`utf8`)}function ce(){let e=new Set;return{waitUntil:t=>{typeof t?.then==`function`&&e.add(Promise.resolve(t).catch(console.error).finally(()=>{e.delete(t)}))},wait:()=>Promise.all(e)}}const le=(()=>{let e=globalThis.process?.env??{};return e.NO_COLOR===`1`||e.TERM===`dumb`})(),P=(e,t=39)=>n=>le?n:`\u001B[${e}m${n}\u001B[${t}m`,ue=P(1,22),de=P(31),fe=P(32),F=P(90);function pe(e){let t=e.options.fetch,n=e.options.middleware||[];return n.length===0?t:e=>I(e,t,n,0)}function I(e,t,n,r){return r===n.length?t(e):n[r](e,()=>I(e,t,n,r+1))}const L=e=>{let t=e.options.error;t&&e.options.middleware.unshift((e,n)=>{try{let e=n();return e instanceof Promise?e.catch(e=>t(e)):e}catch(e){return t(e)}})},R=e=>{let t=e.options?.gracefulShutdown;if(!globalThis.process?.on||t===!1||t===void 0&&(process.env.CI||process.env.TEST))return;let n=t===!0||!t?.gracefulTimeout?Number.parseInt(process.env.SERVER_SHUTDOWN_TIMEOUT||``)||5:t.gracefulTimeout,r=!1,i=!1,a=e.options.silent?()=>{}:process.stderr.write.bind(process.stderr),o=async()=>{i||(a(de(`\x1B[2K\rForcibly closing connections...
|
|
2
2
|
`)),i=!0,await e.close(!0))},s=async()=>{if(r||i)return;setTimeout(()=>{globalThis.process.once(`SIGINT`,o)},100),r=!0;let t=e.close();for(let e=n;e>0;e--)if(a(F(`\rStopping server gracefully (${e}s)... Press ${ue(`Ctrl+C`)} again to force close.`)),await Promise.race([t.then(()=>!0),new Promise(e=>setTimeout(()=>e(!1),1e3))])){a(`\x1B[2K\r`+fe(`Server closed successfully.
|
|
3
3
|
`)),i=!0;return}a(`\x1B[2K\rGraceful shutdown timed out.
|
|
4
4
|
`),await o()};for(let e of[`SIGINT`,`SIGTERM`])globalThis.process.on(e,s)};function z(e,t){if(e===void 0||e===!1)return!1;if(e===!0)return!0;if(e===`loopback`)return me(t);if(t===void 0)return!1;if(e.includes(t))return!0;let n=B(t);return n!==void 0&&e.includes(n)}function B(e){return e.startsWith(`::ffff:`)&&e.includes(`.`)?e.slice(7):void 0}function me(e){return!!e&&(e===`::1`||e.startsWith(`127.`)||e.startsWith(`::ffff:127.`))}const he=/^(\[(?:[A-Fa-f0-9:.]+)\]|(?:[A-Za-z0-9_-]+\.)*[A-Za-z0-9_-]+|(?:\d{1,3}\.){3}\d{1,3})(:\d{1,5})?$/;function V(e){if(e)return(Array.isArray(e)?e[0]:e).split(`,`)[0].trim()||void 0}function ge(e){return Object.assign(Error(`Request body exceeds the maximum allowed size of ${e} bytes.`),{code:`ERR_BODY_TOO_LARGE`,statusCode:413,status:413})}function _e(e,t){let n=e.getReader(),r=0;return new ReadableStream({async pull(e){let{done:i,value:a}=await n.read();if(i){e.close();return}if(r+=a.byteLength,r>t){let r=ge(t);n.cancel(r).catch(()=>{}),e.error(r);return}e.enqueue(a)},cancel(e){return n.cancel(e)}})}function ve(e,t){try{return be(e,t,!0)}catch(t){ye(e,t)}}function ye(e,t){e.headersSent?e.destroy():(e.statusCode=500,e.end())}function be(e,t,n){if(!t)return e.statusCode=500,U(e,n);if(t._toNodeResponse){let r=t._toNodeResponse();if(r.body){if(r.body instanceof ReadableStream)return H(e,r.status,r.statusText,r.headers),Se(r.body,e);if(typeof r.body?.pipe==`function`)return xe(r.body,e,r.status,r.statusText,r.headers);H(e,r.status,r.statusText,r.headers),e.write(r.body)}else H(e,r.status,r.statusText,r.headers);return U(e,n)}let r=[];for(let[e,n]of t.headers)r.push(e,n);return H(e,t.status,t.statusText,r),t.body?Se(t.body,e):U(e,n)}function H(e,t,n,r){e.headersSent||(e.req?.httpVersion===`2.0`?e.writeHead(t,r):e.writeHead(t,n,r))}function U(e,t){if(t){e.end();return}return new Promise(t=>e.end(t))}function xe(e,t,n,r,i){if(t.destroyed){e.destroy?.();return}return typeof e.on!=`function`||typeof e.destroy!=`function`?(H(t,n,r,i),e.pipe(t),new Promise(e=>t.on(`close`,e))):e.destroyed?(H(t,500,`Internal Server Error`,[]),U(t)):new Promise(a=>{function o(){e.off(`readable`,s),e.destroy(),H(t,500,`Internal Server Error`,[]),U(t).then(a)}function s(){if(e.off(`error`,o),t.destroyed)return e.destroy(),a();H(t,n,r,i),h(e,t).catch(()=>{}).then(()=>a())}e.once(`error`,o),e.once(`readable`,s)})}function Se(e,t){if(t.destroyed){e.cancel();return}let n=e.getReader();function r(e){n.cancel(e).catch(()=>{}),e&&t.destroy(e)}function i({done:e,value:a}){try{e?t.end():t.write(a)?n.read().then(i,r):t.once(`drain`,()=>n.read().then(i,r))}catch(e){r(e instanceof Error?e:void 0)}}return t.on(`close`,r),t.on(`error`,r),n.read().then(i,r),n.closed.catch(r).finally(()=>{t.off(`close`,r),t.off(`error`,r)})}var Ce=class extends A{constructor({req:e,trusted:t=!1}){let n=e.url||`/`,r=t?V(e.headers[`x-forwarded-host`]):void 0,i=(r&&he.test(r)?r:void 0)||e.headers.host||e.headers[`:authority`];i&&!he.test(i)?i=`_invalid_`:i||=e.socket?`${e.socket.localFamily===`IPv6`?`[`+e.socket.localAddress+`]`:e.socket.localAddress}:${e.socket?.localPort||`80`}`:`localhost`;let a=t?V(e.headers[`x-forwarded-proto`]):void 0,o=e.socket?.encrypted||a===`https`||t&&e.headers[`:scheme`]===`https`?`https:`:`http:`;if(n[0]===`/`){let e=n.indexOf(`?`);super({protocol:o,host:i,pathname:e===-1?n:n.slice(0,e)||`/`,search:e===-1?``:n.slice(e)||``})}else super(n===`*`?{protocol:o,host:i,pathname:`/*`,search:``}:n)}};const we=new Set([`age`,`authorization`,`content-length`,`content-type`,`etag`,`expires`,`from`,`host`,`if-modified-since`,`if-unmodified-since`,`last-modified`,`location`,`max-forwards`,`proxy-authorization`,`referer`,`retry-after`,`server`,`user-agent`]),Te=/^[!#$%&'*+\-.^_`|~\dA-Za-z]+$/;function Ee(e,t){let n=!1;for(let r=0;r<e.length;r+=2){let i=e[r];if(i.length===t.length&&i.toLowerCase()===t){if(n)return!0;n=!0}}return!1}const De=(()=>{let e=globalThis.Headers;class t{#e;#t;constructor(e){this.#e=e}static[Symbol.hasInstance](t){return t instanceof e}get _headers(){if(!this.#t){let t=new e,n=this.#e.rawHeaders,r=n.length;for(let e=0;e<r;e+=2){let r=n[e];if(r.charCodeAt(0)===58)continue;let i=n[e+1];t.append(r,i)}this.#t=t}return this.#t}get(e){if(this.#t)return this.#t.get(e);let t=e.toLowerCase();if(t.charCodeAt(0)===58)return this._headers.get(e);let n=this.#e.headers[t];return typeof n==`string`?we.has(t)&&Ee(this.#e.rawHeaders,t)?this._headers.get(e):n:Array.isArray(n)?n.join(`, `):t!==`__proto__`&&Te.test(e)?null:this._headers.get(e)}has(e){if(this.#t)return this.#t.has(e);let t=e.toLowerCase();return t.charCodeAt(0)===58?this._headers.has(e):Object.hasOwn(this.#e.headers,t)?!0:t!==`__proto__`&&Te.test(e)?!1:this._headers.has(e)}getSetCookie(){if(this.#t)return this.#t.getSetCookie();let e=this.#e.headers[`set-cookie`];return Array.isArray(e)?e.slice():e?[e]:[]}entries(){return this._headers.entries()}[Symbol.iterator](){return this.entries()}}return D(t.prototype,e.prototype,`_headers`),Object.setPrototypeOf(t,e),Object.setPrototypeOf(t.prototype,e.prototype),t})(),Oe=Symbol.for(`srvx.nativeRequest`),ke=(()=>{let e=je();class t{runtime;waitUntil;#e;#t;#n;#r;#i;#a;#o;#s;#c;#l=!1;#u;#d;constructor(e){this.#e=e.req,this.#o=e.maxRequestBodySize,this.#s=e.trustProxy,this.runtime={name:`node`,node:e}}static[Symbol.hasInstance](t){return t instanceof e}#f(){return this.#d===void 0&&(this.#u=this.#e.socket?.remoteAddress,this.#d=z(this.#s,this.#u)),this.#d}get ip(){if(this.#l)return this.#c;if(this.#l=!0,this.#f()){let e=V(this.#e.headers[`x-forwarded-for`]);if(e)return this.#c=e}return this.#c=this.#u}get method(){return this.#r?this.#r.method:this.#e.method||`GET`}get _url(){return this.#t||=new Ce({req:this.#e,trusted:this.#f()})}set _url(e){this.#t=e}get url(){return this.#r?this.#r.url:this._url.href}get headers(){return this.#r?this.#r.headers:this.#i||=new De(this.#e)}get _abortController(){if(!this.#a){this.#a=new AbortController;let{req:e,res:t}=this.runtime.node,n=this.#a,r=e=>n.abort?.(e);t?t.once(`close`,()=>{let n=e.errored;n?r(n):t.writableEnded||r()}):e.once(`close`,()=>{e.complete||r()})}return this.#a}get signal(){return this.#r?this.#r.signal:this._abortController.signal}get body(){if(this.#r)return this.#r.body;if(this.#n===void 0){let e=this.method,t=e===`GET`||e===`HEAD`?null:l.toWeb(this.#e);t&&this.#o!==void 0&&(t=_e(t,this.#o)),this.#n=t}return this.#n}#p(){return Ae(this.#e,this.#o)}text(){return this.#r?this.#r.text():this.#n===void 0?this.#p().then(e=>e.toString()):this.#n?new Response(this.#n).text():Promise.resolve(``)}json(){return this.#r?this.#r.json():this.#n===void 0?this.#p().then(e=>JSON.parse(e.toString())):this.text().then(e=>JSON.parse(e))}get _request(){if(!this.#r){let t=this.body;this.#r=new e(this.url,{method:this.method,headers:this.headers,signal:this._abortController.signal,body:t,duplex:t?`half`:void 0}),this.#i=void 0,this.#n=void 0}return this.#r}}return D(t.prototype,e.prototype,`_request`),Object.setPrototypeOf(t.prototype,e.prototype),t})();function Ae(e,t){return`rawBody`in e&&Buffer.isBuffer(e.rawBody)?t!==void 0&&e.rawBody.length>t?Promise.reject(ge(t)):Promise.resolve(e.rawBody):new Promise((n,r)=>{let i=[],a=0,o=()=>{e.off(`data`,s),e.off(`end`,l),e.off(`error`,c)},s=n=>{if(t!==void 0&&(a+=n.length,a>t)){o(),e.pause?.(),r(ge(t));return}i.push(n)},c=e=>{o(),r(e)},l=()=>{o(),n(i.length===1?i[0]:Buffer.concat(i))};e.on(`data`,s).once(`end`,l).once(`error`,c)})}function je(){let e=globalThis[Oe]||globalThis.Request;for(;e?._srvx;)e=Object.getPrototypeOf(e);return globalThis[Oe]??=e}function Me(e){return new Ne(e)}var Ne=class{runtime=`node`;options;node;serveOptions;fetch;waitUntil;#e;#t;#n;#r;constructor(e){this.options={...e,middleware:[...e.middleware||[]]};for(let t of e.plugins||[])t(this);L(this);let t=this.fetch=pe(this),n=(e,n)=>{let r=e.url;if(r&&r[0]!==`/`&&r!==`*`&&!URL.canParse(r)){n.statusCode=400,n.end();return}let i=new ke({req:e,res:n,maxRequestBodySize:this.options.maxRequestBodySize,trustProxy:this.options.trustProxy});i.waitUntil=this.#r?.waitUntil;let a=t(i);return a instanceof Promise?a.then(e=>ve(n,e)):ve(n,a)};this.node={handler:n,server:void 0};let r=globalThis.__srvxLoader__;if(r){r({server:this});return}R(this),this.#r=ce(),this.waitUntil=this.#r.waitUntil;let i=M(this.options),{port:a,hostname:o}=oe(this.options);this.serveOptions={port:a,host:o,exclusive:!this.options.reusePort,...i,...this.options.node};let s;if(this.#e=!!this.serveOptions.cert&&this.options.protocol!==`http`,this.options.node?.http2??this.#e)if(this.#e)s=f.createSecureServer({allowHTTP1:!0,...this.serveOptions},n);else throw Error(`node.http2 option requires tls certificate!`);else s=this.#e?d.createServer(this.serveOptions,n):u.createServer(this.serveOptions,n);this.node.server=s,e.manual||this.serve().catch(()=>{})}serve(){if(this.#t)return this.#t.then(()=>this);let e=this.node?.server;return e?(this.#n=void 0,this.#t=new Promise((t,n)=>{let r=t=>{e.off(`listening`,i),this.#n=t,this.#t=void 0,n(t)},i=()=>{e.off(`error`,r),j(this.options,this.url),t()};e.once(`error`,r),e.once(`listening`,i),e.listen(this.serveOptions)}),this.#t.then(()=>this)):Promise.reject(Error(`Server not initialized`))}get url(){let e=this.node?.server?.address();if(e)return typeof e==`string`?e:se(e.address,e.port,this.#e)}ready(){return this.#n?Promise.reject(this.#n):Promise.resolve(this.#t).then(()=>this)}async close(e){await Promise.all([this.#r?.wait(),new Promise((t,n)=>{let r=this.node?.server;if(r&&e&&`closeAllConnections`in r&&r.closeAllConnections(),!r||!r.listening)return t();r.close(e=>e?n(e):t())})])}},Pe=Object.create,Fe=Object.defineProperty,Ie=Object.getOwnPropertyDescriptor,Le=Object.getOwnPropertyNames,Re=Object.getPrototypeOf,ze=Object.prototype.hasOwnProperty,W=(e,t)=>()=>(t||(e((t={exports:{}}).exports,t),e=null),t.exports),Be=(e,t,n,r)=>{if(t&&typeof t==`object`||typeof t==`function`)for(var i=Le(t),a=0,o=i.length,s;a<o;a++)s=i[a],!ze.call(e,s)&&s!==n&&Fe(e,s,{get:(e=>t[e]).bind(null,s),enumerable:!(r=Ie(t,s))||r.enumerable});return e},Ve=(e,t,n)=>(n=e==null?{}:Pe(Re(e)),Be(t||!e||!e.__esModule?Fe(n,`default`,{value:e,enumerable:!0}):n,e)),G=i(import.meta.url),K=W(((e,t)=>{let n=[`nodebuffer`,`arraybuffer`,`fragments`],r=typeof Blob<`u`;r&&n.push(`blob`),t.exports={BINARY_TYPES:n,CLOSE_TIMEOUT:3e4,EMPTY_BUFFER:Buffer.alloc(0),GUID:`258EAFA5-E914-47DA-95CA-C5AB0DC85B11`,hasBlob:r,kForOnEventAttribute:Symbol(`kIsForOnEventAttribute`),kListener:Symbol(`kListener`),kStatusCode:Symbol(`status-code`),kWebSocket:Symbol(`websocket`),NOOP:()=>{}}})),q=W(((e,t)=>{let{EMPTY_BUFFER:n}=K(),r=Buffer[Symbol.species];function i(e,t){if(e.length===0)return n;if(e.length===1)return e[0];let i=Buffer.allocUnsafe(t),a=0;for(let t=0;t<e.length;t++){let n=e[t];i.set(n,a),a+=n.length}return a<t?new r(i.buffer,i.byteOffset,a):i}function a(e,t,n,r,i){for(let a=0;a<i;a++)n[r+a]=e[a]^t[a&3]}function o(e,t){for(let n=0;n<e.length;n++)e[n]^=t[n&3]}function s(e){return e.length===e.buffer.byteLength?e.buffer:e.buffer.slice(e.byteOffset,e.byteOffset+e.length)}function c(e){if(c.readOnly=!0,Buffer.isBuffer(e))return e;let t;return e instanceof ArrayBuffer?t=new r(e):ArrayBuffer.isView(e)?t=new r(e.buffer,e.byteOffset,e.byteLength):(t=Buffer.from(e),c.readOnly=!1),t}if(t.exports={concat:i,mask:a,toArrayBuffer:s,toBuffer:c,unmask:o},!process.env.WS_NO_BUFFER_UTIL)try{let e=G(`bufferutil`);t.exports.mask=function(t,n,r,i,o){o<48?a(t,n,r,i,o):e.mask(t,n,r,i,o)},t.exports.unmask=function(t,n){t.length<32?o(t,n):e.unmask(t,n)}}catch{}})),He=W(((e,t)=>{let n=Symbol(`kDone`),r=Symbol(`kRun`);t.exports=class{constructor(e){this[n]=()=>{this.pending--,this[r]()},this.concurrency=e||1/0,this.jobs=[],this.pending=0}add(e){this.jobs.push(e),this[r]()}[r](){if(this.pending!==this.concurrency&&this.jobs.length){let e=this.jobs.shift();this.pending++,e(this[n])}}}})),J=W(((e,t)=>{let n=G(`zlib`),r=q(),i=He(),{kStatusCode:a}=K(),o=Buffer[Symbol.species],s=Buffer.from([0,0,255,255]),c=Symbol(`permessage-deflate`),l=Symbol(`total-length`),u=Symbol(`callback`),d=Symbol(`buffers`),f=Symbol(`error`),p;t.exports=class{constructor(e){this._options=e||{},this._threshold=this._options.threshold===void 0?1024:this._options.threshold,this._maxPayload=this._options.maxPayload|0,this._isServer=!!this._options.isServer,this._deflate=null,this._inflate=null,this.params=null,p||=new i(this._options.concurrencyLimit===void 0?10:this._options.concurrencyLimit)}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??(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(),null),this._deflate){let e=this._deflate[u];this._deflate.close(),this._deflate=null,e&&e(Error(`The deflate stream was closed while data was being processed`))}}acceptAsServer(e){let t=this._options,n=e.find(e=>!(t.serverNoContextTakeover===!1&&e.server_no_context_takeover||e.server_max_window_bits&&(t.serverMaxWindowBits===!1||typeof t.serverMaxWindowBits==`number`&&t.serverMaxWindowBits>e.server_max_window_bits)||typeof t.clientMaxWindowBits==`number`&&!e.client_max_window_bits));if(!n)throw Error(`None of the extension offers can be accepted`);return t.serverNoContextTakeover&&(n.server_no_context_takeover=!0),t.clientNoContextTakeover&&(n.client_no_context_takeover=!0),typeof t.serverMaxWindowBits==`number`&&(n.server_max_window_bits=t.serverMaxWindowBits),typeof t.clientMaxWindowBits==`number`?n.client_max_window_bits=t.clientMaxWindowBits:(n.client_max_window_bits===!0||t.clientMaxWindowBits===!1)&&delete n.client_max_window_bits,n}acceptAsClient(e){let t=e[0];if(this._options.clientNoContextTakeover===!1&&t.client_no_context_takeover)throw Error(`Unexpected parameter "client_no_context_takeover"`);if(!t.client_max_window_bits)typeof this._options.clientMaxWindowBits==`number`&&(t.client_max_window_bits=this._options.clientMaxWindowBits);else if(this._options.clientMaxWindowBits===!1||typeof this._options.clientMaxWindowBits==`number`&&t.client_max_window_bits>this._options.clientMaxWindowBits)throw Error(`Unexpected or invalid parameter "client_max_window_bits"`);return t}normalizeParams(e){return e.forEach(e=>{Object.keys(e).forEach(t=>{let n=e[t];if(n.length>1)throw Error(`Parameter "${t}" must have only a single value`);if(n=n[0],t===`client_max_window_bits`){if(n!==!0){let e=+n;if(!Number.isInteger(e)||e<8||e>15)throw TypeError(`Invalid value for parameter "${t}": ${n}`);n=e}else if(!this._isServer)throw TypeError(`Invalid value for parameter "${t}": ${n}`)}else if(t===`server_max_window_bits`){let e=+n;if(!Number.isInteger(e)||e<8||e>15)throw TypeError(`Invalid value for parameter "${t}": ${n}`);n=e}else if(t===`client_no_context_takeover`||t===`server_no_context_takeover`){if(n!==!0)throw TypeError(`Invalid value for parameter "${t}": ${n}`)}else throw Error(`Unknown parameter "${t}"`);e[t]=n})}),e}decompress(e,t,n){p.add(r=>{this._decompress(e,t,(e,t)=>{r(),n(e,t)})})}compress(e,t,n){p.add(r=>{this._compress(e,t,(e,t)=>{r(),n(e,t)})})}_decompress(e,t,i){let a=this._isServer?`client`:`server`;if(!this._inflate){let e=`${a}_max_window_bits`,t=typeof this.params[e]==`number`?this.params[e]:n.Z_DEFAULT_WINDOWBITS;this._inflate=n.createInflateRaw({...this._options.zlibInflateOptions,windowBits:t}),this._inflate[c]=this,this._inflate[l]=0,this._inflate[d]=[],this._inflate.on(`error`,g),this._inflate.on(`data`,h)}this._inflate[u]=i,this._inflate.write(e),t&&this._inflate.write(s),this._inflate.flush(()=>{let e=this._inflate[f];if(e){this._inflate.close(),this._inflate=null,i(e);return}let n=r.concat(this._inflate[d],this._inflate[l]);this._inflate._readableState.endEmitted?(this._inflate.close(),this._inflate=null):(this._inflate[l]=0,this._inflate[d]=[],t&&this.params[`${a}_no_context_takeover`]&&this._inflate.reset()),i(null,n)})}_compress(e,t,i){let a=this._isServer?`server`:`client`;if(!this._deflate){let e=`${a}_max_window_bits`,t=typeof this.params[e]==`number`?this.params[e]:n.Z_DEFAULT_WINDOWBITS;this._deflate=n.createDeflateRaw({...this._options.zlibDeflateOptions,windowBits:t}),this._deflate[l]=0,this._deflate[d]=[],this._deflate.on(`data`,m)}this._deflate[u]=i,this._deflate.write(e),this._deflate.flush(n.Z_SYNC_FLUSH,()=>{if(!this._deflate)return;let e=r.concat(this._deflate[d],this._deflate[l]);t&&(e=new o(e.buffer,e.byteOffset,e.length-4)),this._deflate[u]=null,this._deflate[l]=0,this._deflate[d]=[],t&&this.params[`${a}_no_context_takeover`]&&this._deflate.reset(),i(null,e)})}};function m(e){this[d].push(e),this[l]+=e.length}function h(e){if(this[l]+=e.length,this[c]._maxPayload<1||this[l]<=this[c]._maxPayload){this[d].push(e);return}this[f]=RangeError(`Max payload size exceeded`),this[f].code=`WS_ERR_UNSUPPORTED_MESSAGE_LENGTH`,this[f][a]=1009,this.removeListener(`data`,h),this.reset()}function g(e){if(this[c]._inflate=null,this[f]){this[u](this[f]);return}e[a]=1007,this[u](e)}})),Y=W(((e,t)=>{let{isUtf8:n}=G(`buffer`),{hasBlob:r}=K(),i=[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 a(e){return e>=1e3&&e<=1014&&e!==1004&&e!==1005&&e!==1006||e>=3e3&&e<=4999}function o(e){let t=e.length,n=0;for(;n<t;)if(!(e[n]&128))n++;else if((e[n]&224)==192){if(n+1===t||(e[n+1]&192)!=128||(e[n]&254)==192)return!1;n+=2}else if((e[n]&240)==224){if(n+2>=t||(e[n+1]&192)!=128||(e[n+2]&192)!=128||e[n]===224&&(e[n+1]&224)==128||e[n]===237&&(e[n+1]&224)==160)return!1;n+=3}else if((e[n]&248)==240){if(n+3>=t||(e[n+1]&192)!=128||(e[n+2]&192)!=128||(e[n+3]&192)!=128||e[n]===240&&(e[n+1]&240)==128||e[n]===244&&e[n+1]>143||e[n]>244)return!1;n+=4}else return!1;return!0}function s(e){return r&&typeof e==`object`&&typeof e.arrayBuffer==`function`&&typeof e.type==`string`&&typeof e.stream==`function`&&(e[Symbol.toStringTag]===`Blob`||e[Symbol.toStringTag]===`File`)}if(t.exports={isBlob:s,isValidStatusCode:a,isValidUTF8:o,tokenChars:i},n)t.exports.isValidUTF8=function(e){return e.length<24?o(e):n(e)};else if(!process.env.WS_NO_UTF_8_VALIDATE)try{let e=G(`utf-8-validate`);t.exports.isValidUTF8=function(t){return t.length<32?o(t):e(t)}}catch{}})),Ue=W(((e,t)=>{let{Writable:n}=G(`stream`),r=J(),{BINARY_TYPES:i,EMPTY_BUFFER:a,kStatusCode:o,kWebSocket:s}=K(),{concat:c,toArrayBuffer:l,unmask:u}=q(),{isValidStatusCode:d,isValidUTF8:f}=Y(),p=Buffer[Symbol.species];t.exports=class extends n{constructor(e={}){super(),this._allowSynchronousEvents=e.allowSynchronousEvents===void 0?!0:e.allowSynchronousEvents,this._binaryType=e.binaryType||i[0],this._extensions=e.extensions||{},this._isServer=!!e.isServer,this._maxBufferedChunks=e.maxBufferedChunks|0,this._maxFragments=e.maxFragments|0,this._maxPayload=e.maxPayload|0,this._skipUTF8Validation=!!e.skipUTF8Validation,this[s]=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=0}_write(e,t,n){if(this._opcode===8&&this._state==0)return n();if(this._maxBufferedChunks>0&&this._buffers.length>=this._maxBufferedChunks){n(this.createError(RangeError,`Too many buffered chunks`,!1,1008,`WS_ERR_TOO_MANY_BUFFERED_PARTS`));return}this._bufferedBytes+=e.length,this._buffers.push(e),this.startLoop(n)}consume(e){if(this._bufferedBytes-=e,e===this._buffers[0].length)return this._buffers.shift();if(e<this._buffers[0].length){let t=this._buffers[0];return this._buffers[0]=new p(t.buffer,t.byteOffset+e,t.length-e),new p(t.buffer,t.byteOffset,e)}let t=Buffer.allocUnsafe(e);do{let n=this._buffers[0],r=t.length-e;e>=n.length?t.set(this._buffers.shift(),r):(t.set(new Uint8Array(n.buffer,n.byteOffset,e),r),this._buffers[0]=new p(n.buffer,n.byteOffset+e,n.length-e)),e-=n.length}while(e>0);return t}startLoop(e){this._loop=!0;do switch(this._state){case 0:this.getInfo(e);break;case 1:this.getPayloadLength16(e);break;case 2:this.getPayloadLength64(e);break;case 3:this.getMask();break;case 4:this.getData(e);break;case 5:case 6:this._loop=!1;return}while(this._loop);this._errored||e()}getInfo(e){if(this._bufferedBytes<2){this._loop=!1;return}let t=this.consume(2);if(t[0]&48){e(this.createError(RangeError,`RSV2 and RSV3 must be clear`,!0,1002,`WS_ERR_UNEXPECTED_RSV_2_3`));return}let n=(t[0]&64)==64;if(n&&!this._extensions[r.extensionName]){e(this.createError(RangeError,`RSV1 must be clear`,!0,1002,`WS_ERR_UNEXPECTED_RSV_1`));return}if(this._fin=(t[0]&128)==128,this._opcode=t[0]&15,this._payloadLength=t[1]&127,this._opcode===0){if(n){e(this.createError(RangeError,`RSV1 must be clear`,!0,1002,`WS_ERR_UNEXPECTED_RSV_1`));return}if(!this._fragmented){e(this.createError(RangeError,`invalid opcode 0`,!0,1002,`WS_ERR_INVALID_OPCODE`));return}this._opcode=this._fragmented}else if(this._opcode===1||this._opcode===2){if(this._fragmented){e(this.createError(RangeError,`invalid opcode ${this._opcode}`,!0,1002,`WS_ERR_INVALID_OPCODE`));return}this._compressed=n}else if(this._opcode>7&&this._opcode<11){if(!this._fin){e(this.createError(RangeError,`FIN must be set`,!0,1002,`WS_ERR_EXPECTED_FIN`));return}if(n){e(this.createError(RangeError,`RSV1 must be clear`,!0,1002,`WS_ERR_UNEXPECTED_RSV_1`));return}if(this._payloadLength>125||this._opcode===8&&this._payloadLength===1){e(this.createError(RangeError,`invalid payload length ${this._payloadLength}`,!0,1002,`WS_ERR_INVALID_CONTROL_PAYLOAD_LENGTH`));return}}else{e(this.createError(RangeError,`invalid opcode ${this._opcode}`,!0,1002,`WS_ERR_INVALID_OPCODE`));return}if(!this._fin&&!this._fragmented&&(this._fragmented=this._opcode),this._masked=(t[1]&128)==128,this._isServer){if(!this._masked){e(this.createError(RangeError,`MASK must be set`,!0,1002,`WS_ERR_EXPECTED_MASK`));return}}else if(this._masked){e(this.createError(RangeError,`MASK must be clear`,!0,1002,`WS_ERR_UNEXPECTED_MASK`));return}this._payloadLength===126?this._state=1:this._payloadLength===127?this._state=2: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 t=this.consume(8),n=t.readUInt32BE(0);if(n>2**21-1){e(this.createError(RangeError,`Unsupported WebSocket frame: payload length > 2^53 - 1`,!1,1009,`WS_ERR_UNSUPPORTED_DATA_PAYLOAD_LENGTH`));return}this._payloadLength=n*2**32+t.readUInt32BE(4),this.haveLength(e)}haveLength(e){if(this._payloadLength&&this._opcode<8&&(this._totalPayloadLength+=this._payloadLength,this._totalPayloadLength>this._maxPayload&&this._maxPayload>0)){e(this.createError(RangeError,`Max payload size exceeded`,!1,1009,`WS_ERR_UNSUPPORTED_MESSAGE_LENGTH`));return}this._masked?this._state=3:this._state=4}getMask(){if(this._bufferedBytes<4){this._loop=!1;return}this._mask=this.consume(4),this._state=4}getData(e){let t=a;if(this._payloadLength){if(this._bufferedBytes<this._payloadLength){this._loop=!1;return}t=this.consume(this._payloadLength),this._masked&&(this._mask[0]|this._mask[1]|this._mask[2]|this._mask[3])!==0&&u(t,this._mask)}if(this._opcode>7){this.controlMessage(t,e);return}if(this._compressed){this._state=5,this.decompress(t,e);return}if(t.length){if(this._maxFragments>0&&this._fragments.length>=this._maxFragments){e(this.createError(RangeError,`Too many message fragments`,!1,1008,`WS_ERR_TOO_MANY_BUFFERED_PARTS`));return}this._messageLength=this._totalPayloadLength,this._fragments.push(t)}this.dataMessage(e)}decompress(e,t){this._extensions[r.extensionName].decompress(e,this._fin,(e,n)=>{if(e)return t(e);if(n.length){if(this._messageLength+=n.length,this._messageLength>this._maxPayload&&this._maxPayload>0){t(this.createError(RangeError,`Max payload size exceeded`,!1,1009,`WS_ERR_UNSUPPORTED_MESSAGE_LENGTH`));return}if(this._maxFragments>0&&this._fragments.length>=this._maxFragments){t(this.createError(RangeError,`Too many message fragments`,!1,1008,`WS_ERR_TOO_MANY_BUFFERED_PARTS`));return}this._fragments.push(n)}this.dataMessage(t),this._state===0&&this.startLoop(t)})}dataMessage(e){if(!this._fin){this._state=0;return}let t=this._messageLength,n=this._fragments;if(this._totalPayloadLength=0,this._messageLength=0,this._fragmented=0,this._fragments=[],this._opcode===2){let r;r=this._binaryType===`nodebuffer`?c(n,t):this._binaryType===`arraybuffer`?l(c(n,t)):this._binaryType===`blob`?new Blob(n):n,this._allowSynchronousEvents?(this.emit(`message`,r,!0),this._state=0):(this._state=6,setImmediate(()=>{this.emit(`message`,r,!0),this._state=0,this.startLoop(e)}))}else{let r=c(n,t);if(!this._skipUTF8Validation&&!f(r)){e(this.createError(Error,`invalid UTF-8 sequence`,!0,1007,`WS_ERR_INVALID_UTF8`));return}this._state===5||this._allowSynchronousEvents?(this.emit(`message`,r,!1),this._state=0):(this._state=6,setImmediate(()=>{this.emit(`message`,r,!1),this._state=0,this.startLoop(e)}))}}controlMessage(e,t){if(this._opcode===8){if(e.length===0)this._loop=!1,this.emit(`conclude`,1005,a),this.end();else{let n=e.readUInt16BE(0);if(!d(n)){t(this.createError(RangeError,`invalid status code ${n}`,!0,1002,`WS_ERR_INVALID_CLOSE_CODE`));return}let r=new p(e.buffer,e.byteOffset+2,e.length-2);if(!this._skipUTF8Validation&&!f(r)){t(this.createError(Error,`invalid UTF-8 sequence`,!0,1007,`WS_ERR_INVALID_UTF8`));return}this._loop=!1,this.emit(`conclude`,n,r),this.end()}this._state=0;return}this._allowSynchronousEvents?(this.emit(this._opcode===9?`ping`:`pong`,e),this._state=0):(this._state=6,setImmediate(()=>{this.emit(this._opcode===9?`ping`:`pong`,e),this._state=0,this.startLoop(t)}))}createError(e,t,n,r,i){this._loop=!1,this._errored=!0;let a=new e(n?`Invalid WebSocket frame: ${t}`:t);return Error.captureStackTrace(a,this.createError),a.code=i,a[o]=r,a}}})),We=W(((e,t)=>{let{Duplex:n}=G(`stream`),{randomFillSync:r}=G(`crypto`),{types:{isUint8Array:i}}=G(`util`),a=J(),{EMPTY_BUFFER:o,kWebSocket:s,NOOP:c}=K(),{isBlob:l,isValidStatusCode:u}=Y(),{mask:d,toBuffer:f}=q(),p=Symbol(`kByteLength`),m=Buffer.alloc(4),h=8*1024,g,_=h;t.exports=class e{constructor(e,t,n){this._extensions=t||{},n&&(this._generateMask=n,this._maskBuffer=Buffer.alloc(4)),this._socket=e,this._firstFragment=!0,this._compress=!1,this._bufferedBytes=0,this._queue=[],this._state=0,this.onerror=c,this[s]=void 0}static frame(e,t){let n,i=!1,a=2,o=!1;t.mask&&(n=t.maskBuffer||m,t.generateMask?t.generateMask(n):(_===h&&(g===void 0&&(g=Buffer.alloc(h)),r(g,0,h),_=0),n[0]=g[_++],n[1]=g[_++],n[2]=g[_++],n[3]=g[_++]),o=(n[0]|n[1]|n[2]|n[3])===0,a=6);let s;typeof e==`string`?(!t.mask||o)&&t[p]!==void 0?s=t[p]:(e=Buffer.from(e),s=e.length):(s=e.length,i=t.mask&&t.readOnly&&!o);let c=s;s>=65536?(a+=8,c=127):s>125&&(a+=2,c=126);let l=Buffer.allocUnsafe(i?s+a:a);return l[0]=t.fin?t.opcode|128:t.opcode,t.rsv1&&(l[0]|=64),l[1]=c,c===126?l.writeUInt16BE(s,2):c===127&&(l[2]=l[3]=0,l.writeUIntBE(s,4,6)),!t.mask||(l[1]|=128,l[a-4]=n[0],l[a-3]=n[1],l[a-2]=n[2],l[a-1]=n[3],o)?[l,e]:i?(d(e,n,l,a,s),[l]):(d(e,n,e,0,s),[l,e])}close(t,n,r,a){let s;if(t===void 0)s=o;else if(typeof t!=`number`||!u(t))throw TypeError(`First argument must be a valid error code number`);else if(n===void 0||!n.length)s=Buffer.allocUnsafe(2),s.writeUInt16BE(t,0);else{let e=Buffer.byteLength(n);if(e>123)throw RangeError(`The message must not be greater than 123 bytes`);if(s=Buffer.allocUnsafe(2+e),s.writeUInt16BE(t,0),typeof n==`string`)s.write(n,2);else if(i(n))s.set(n,2);else throw TypeError(`Second argument must be a string or a Uint8Array`)}let c={[p]:s.length,fin:!0,generateMask:this._generateMask,mask:r,maskBuffer:this._maskBuffer,opcode:8,readOnly:!1,rsv1:!1};this._state===0?this.sendFrame(e.frame(s,c),a):this.enqueue([this.dispatch,s,!1,c,a])}ping(t,n,r){let i,a;if(typeof t==`string`?(i=Buffer.byteLength(t),a=!1):l(t)?(i=t.size,a=!1):(t=f(t),i=t.length,a=f.readOnly),i>125)throw RangeError(`The data size must not be greater than 125 bytes`);let o={[p]:i,fin:!0,generateMask:this._generateMask,mask:n,maskBuffer:this._maskBuffer,opcode:9,readOnly:a,rsv1:!1};l(t)?this._state===0?this.getBlobData(t,!1,o,r):this.enqueue([this.getBlobData,t,!1,o,r]):this._state===0?this.sendFrame(e.frame(t,o),r):this.enqueue([this.dispatch,t,!1,o,r])}pong(t,n,r){let i,a;if(typeof t==`string`?(i=Buffer.byteLength(t),a=!1):l(t)?(i=t.size,a=!1):(t=f(t),i=t.length,a=f.readOnly),i>125)throw RangeError(`The data size must not be greater than 125 bytes`);let o={[p]:i,fin:!0,generateMask:this._generateMask,mask:n,maskBuffer:this._maskBuffer,opcode:10,readOnly:a,rsv1:!1};l(t)?this._state===0?this.getBlobData(t,!1,o,r):this.enqueue([this.getBlobData,t,!1,o,r]):this._state===0?this.sendFrame(e.frame(t,o),r):this.enqueue([this.dispatch,t,!1,o,r])}send(e,t,n){let r=this._extensions[a.extensionName],i=t.binary?2:1,o=t.compress,s,c;typeof e==`string`?(s=Buffer.byteLength(e),c=!1):l(e)?(s=e.size,c=!1):(e=f(e),s=e.length,c=f.readOnly),this._firstFragment?(this._firstFragment=!1,o&&r&&r.params[r._isServer?`server_no_context_takeover`:`client_no_context_takeover`]&&(o=s>=r._threshold),this._compress=o):(o=!1,i=0),t.fin&&(this._firstFragment=!0);let u={[p]:s,fin:t.fin,generateMask:this._generateMask,mask:t.mask,maskBuffer:this._maskBuffer,opcode:i,readOnly:c,rsv1:o};l(e)?this._state===0?this.getBlobData(e,this._compress,u,n):this.enqueue([this.getBlobData,e,this._compress,u,n]):this._state===0?this.dispatch(e,this._compress,u,n):this.enqueue([this.dispatch,e,this._compress,u,n])}getBlobData(t,n,r,i){this._bufferedBytes+=r[p],this._state=2,t.arrayBuffer().then(t=>{if(this._socket.destroyed){let e=Error(`The socket was closed while the blob was being read`);process.nextTick(v,this,e,i);return}this._bufferedBytes-=r[p];let a=f(t);n?this.dispatch(a,n,r,i):(this._state=0,this.sendFrame(e.frame(a,r),i),this.dequeue())}).catch(e=>{process.nextTick(ee,this,e,i)})}dispatch(t,n,r,i){if(!n){this.sendFrame(e.frame(t,r),i);return}let o=this._extensions[a.extensionName];this._bufferedBytes+=r[p],this._state=1,o.compress(t,r.fin,(t,n)=>{if(this._socket.destroyed){let e=Error(`The socket was closed while data was being compressed`);v(this,e,i);return}this._bufferedBytes-=r[p],this._state=0,r.readOnly=!1,this.sendFrame(e.frame(n,r),i),this.dequeue()})}dequeue(){for(;this._state===0&&this._queue.length;){let e=this._queue.shift();this._bufferedBytes-=e[3][p],Reflect.apply(e[0],this,e.slice(1))}}enqueue(e){this._bufferedBytes+=e[3][p],this._queue.push(e)}sendFrame(e,t){e.length===2?(this._socket.cork(),this._socket.write(e[0]),this._socket.write(e[1],t),this._socket.uncork()):this._socket.write(e[0],t)}};function v(e,t,n){typeof n==`function`&&n(t);for(let n=0;n<e._queue.length;n++){let r=e._queue[n],i=r[r.length-1];typeof i==`function`&&i(t)}}function ee(e,t,n){v(e,t,n),e.onerror(t)}})),Ge=W(((e,t)=>{let{kForOnEventAttribute:n,kListener:r}=K(),i=Symbol(`kCode`),a=Symbol(`kData`),o=Symbol(`kError`),s=Symbol(`kMessage`),c=Symbol(`kReason`),l=Symbol(`kTarget`),u=Symbol(`kType`),d=Symbol(`kWasClean`);var f=class{constructor(e){this[l]=null,this[u]=e}get target(){return this[l]}get type(){return this[u]}};Object.defineProperty(f.prototype,"target",{enumerable:!0}),Object.defineProperty(f.prototype,"type",{enumerable:!0});var p=class extends f{constructor(e,t={}){super(e),this[i]=t.code===void 0?0:t.code,this[c]=t.reason===void 0?``:t.reason,this[d]=t.wasClean===void 0?!1:t.wasClean}get code(){return this[i]}get reason(){return this[c]}get wasClean(){return this[d]}};Object.defineProperty(p.prototype,"code",{enumerable:!0}),Object.defineProperty(p.prototype,"reason",{enumerable:!0}),Object.defineProperty(p.prototype,"wasClean",{enumerable:!0});var m=class extends f{constructor(e,t={}){super(e),this[o]=t.error===void 0?null:t.error,this[s]=t.message===void 0?``:t.message}get error(){return this[o]}get message(){return this[s]}};Object.defineProperty(m.prototype,"error",{enumerable:!0}),Object.defineProperty(m.prototype,"message",{enumerable:!0});var h=class extends f{constructor(e,t={}){super(e),this[a]=t.data===void 0?null:t.data}get data(){return this[a]}};Object.defineProperty(h.prototype,"data",{enumerable:!0}),t.exports={CloseEvent:p,ErrorEvent:m,Event:f,EventTarget:{addEventListener(e,t,i={}){for(let a of this.listeners(e))if(!i[n]&&a[r]===t&&!a[n])return;let a;if(e===`message`)a=function(e,n){let r=new h(`message`,{data:n?e:e.toString()});r[l]=this,g(t,this,r)};else if(e===`close`)a=function(e,n){let r=new p(`close`,{code:e,reason:n.toString(),wasClean:this._closeFrameReceived&&this._closeFrameSent});r[l]=this,g(t,this,r)};else if(e===`error`)a=function(e){let n=new m(`error`,{error:e,message:e.message});n[l]=this,g(t,this,n)};else if(e===`open`)a=function(){let e=new f(`open`);e[l]=this,g(t,this,e)};else return;a[n]=!!i[n],a[r]=t,i.once?this.once(e,a):this.on(e,a)},removeEventListener(e,t){for(let i of this.listeners(e))if(i[r]===t&&!i[n]){this.removeListener(e,i);break}}},MessageEvent:h};function g(e,t,n){typeof e==`object`&&e.handleEvent?e.handleEvent.call(e,n):e.call(t,n)}})),Ke=W(((e,t)=>{let{tokenChars:n}=Y();function r(e,t,n){e[t]===void 0?e[t]=[n]:e[t].push(n)}function i(e){let t=Object.create(null),i=Object.create(null),a=!1,o=!1,s=!1,c,l,u=-1,d=-1,f=-1,p=0;for(;p<e.length;p++)if(d=e.charCodeAt(p),c===void 0)if(f===-1&&n[d]===1)u===-1&&(u=p);else if(p!==0&&(d===32||d===9))f===-1&&u!==-1&&(f=p);else if(d===59||d===44){if(u===-1)throw SyntaxError(`Unexpected character at index ${p}`);f===-1&&(f=p);let n=e.slice(u,f);d===44?(r(t,n,i),i=Object.create(null)):c=n,u=f=-1}else throw SyntaxError(`Unexpected character at index ${p}`);else if(l===void 0)if(f===-1&&n[d]===1)u===-1&&(u=p);else if(d===32||d===9)f===-1&&u!==-1&&(f=p);else if(d===59||d===44){if(u===-1)throw SyntaxError(`Unexpected character at index ${p}`);f===-1&&(f=p),r(i,e.slice(u,f),!0),d===44&&(r(t,c,i),i=Object.create(null),c=void 0),u=f=-1}else if(d===61&&u!==-1&&f===-1)l=e.slice(u,p),u=f=-1;else throw SyntaxError(`Unexpected character at index ${p}`);else if(o){if(n[d]!==1)throw SyntaxError(`Unexpected character at index ${p}`);u===-1?u=p:a||=!0,o=!1}else if(s)if(n[d]===1)u===-1&&(u=p);else if(d===34&&u!==-1)s=!1,f=p;else if(d===92)o=!0;else throw SyntaxError(`Unexpected character at index ${p}`);else if(d===34&&e.charCodeAt(p-1)===61)s=!0;else if(f===-1&&n[d]===1)u===-1&&(u=p);else if(u!==-1&&(d===32||d===9))f===-1&&(f=p);else if(d===59||d===44){if(u===-1)throw SyntaxError(`Unexpected character at index ${p}`);f===-1&&(f=p);let n=e.slice(u,f);a&&=(n=n.replace(/\\/g,``),!1),r(i,l,n),d===44&&(r(t,c,i),i=Object.create(null),c=void 0),l=void 0,u=f=-1}else throw SyntaxError(`Unexpected character at index ${p}`);if(u===-1||s||d===32||d===9)throw SyntaxError(`Unexpected end of input`);f===-1&&(f=p);let m=e.slice(u,f);return c===void 0?r(t,m,i):(l===void 0?r(i,m,!0):a?r(i,l,m.replace(/\\/g,``)):r(i,l,m),r(t,c,i)),t}function a(e){return Object.keys(e).map(t=>{let n=e[t];return Array.isArray(n)||(n=[n]),n.map(e=>[t].concat(Object.keys(e).map(t=>{let n=e[t];return Array.isArray(n)||(n=[n]),n.map(e=>e===!0?t:`${t}=${e}`).join(`; `)})).join(`; `)).join(`, `)}).join(`, `)}t.exports={format:a,parse:i}})),qe=W(((e,t)=>{let n=G(`events`),r=G(`https`),i=G(`http`),a=G(`net`),o=G(`tls`),{randomBytes:s,createHash:c}=G(`crypto`),{Duplex:l,Readable:u}=G(`stream`),{URL:d}=G(`url`),f=J(),p=Ue(),m=We(),{isBlob:h}=Y(),{BINARY_TYPES:g,CLOSE_TIMEOUT:_,EMPTY_BUFFER:v,GUID:ee,kForOnEventAttribute:y,kListener:b,kStatusCode:x,kWebSocket:S,NOOP:C}=K(),{EventTarget:{addEventListener:w,removeEventListener:te}}=Ge(),{format:ne,parse:re}=Ke(),{toBuffer:ie}=q(),ae=Symbol(`kAborted`),T=[8,13],E=[`CONNECTING`,`OPEN`,`CLOSING`,`CLOSED`],D=/^[!#$%&'*+\-.0-9A-Z^_`|a-z~]+$/;var O=class e extends n{constructor(t,n,r){super(),this._binaryType=g[0],this._closeCode=1006,this._closeFrameReceived=!1,this._closeFrameSent=!1,this._closeMessage=v,this._closeTimer=null,this._errorEmitted=!1,this._extensions={},this._paused=!1,this._protocol=``,this._readyState=e.CONNECTING,this._receiver=null,this._sender=null,this._socket=null,t===null?(this._autoPong=r.autoPong,this._closeTimeout=r.closeTimeout,this._isServer=!0):(this._bufferedAmount=0,this._isServer=!1,this._redirects=0,n===void 0?n=[]:Array.isArray(n)||(typeof n==`object`&&n?(r=n,n=[]):n=[n]),k(this,t,n,r))}get binaryType(){return this._binaryType}set binaryType(e){g.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(t,n,r){let i=new p({allowSynchronousEvents:r.allowSynchronousEvents,binaryType:this.binaryType,extensions:this._extensions,isServer:this._isServer,maxBufferedChunks:r.maxBufferedChunks,maxFragments:r.maxFragments,maxPayload:r.maxPayload,skipUTF8Validation:r.skipUTF8Validation}),a=new m(t,this._extensions,r.generateMask);this._receiver=i,this._sender=a,this._socket=t,i[S]=this,a[S]=this,t[S]=this,i.on(`conclude`,N),i.on(`drain`,ce),i.on(`error`,le),i.on(`message`,ue),i.on(`ping`,de),i.on(`pong`,fe),a.onerror=pe,t.setTimeout&&t.setTimeout(0),t.setNoDelay&&t.setNoDelay(),n.length>0&&t.unshift(n),t.on(`close`,L),t.on(`data`,R),t.on(`end`,z),t.on(`error`,B),this._readyState=e.OPEN,this.emit(`open`)}emitClose(){if(!this._socket){this._readyState=e.CLOSED,this.emit(`close`,this._closeCode,this._closeMessage);return}this._extensions[f.extensionName]&&this._extensions[f.extensionName].cleanup(),this._receiver.removeAllListeners(),this._readyState=e.CLOSED,this.emit(`close`,this._closeCode,this._closeMessage)}close(t,n){if(this.readyState!==e.CLOSED){if(this.readyState===e.CONNECTING){j(this,this._req,`WebSocket was closed before the connection was established`);return}if(this.readyState===e.CLOSING){this._closeFrameSent&&(this._closeFrameReceived||this._receiver._writableState.errorEmitted)&&this._socket.end();return}this._readyState=e.CLOSING,this._sender.close(t,n,!this._isServer,e=>{e||(this._closeFrameSent=!0,(this._closeFrameReceived||this._receiver._writableState.errorEmitted)&&this._socket.end())}),I(this)}}pause(){this.readyState===e.CONNECTING||this.readyState===e.CLOSED||(this._paused=!0,this._socket.pause())}ping(t,n,r){if(this.readyState===e.CONNECTING)throw Error(`WebSocket is not open: readyState 0 (CONNECTING)`);if(typeof t==`function`?(r=t,t=n=void 0):typeof n==`function`&&(r=n,n=void 0),typeof t==`number`&&(t=t.toString()),this.readyState!==e.OPEN){M(this,t,r);return}n===void 0&&(n=!this._isServer),this._sender.ping(t||v,n,r)}pong(t,n,r){if(this.readyState===e.CONNECTING)throw Error(`WebSocket is not open: readyState 0 (CONNECTING)`);if(typeof t==`function`?(r=t,t=n=void 0):typeof n==`function`&&(r=n,n=void 0),typeof t==`number`&&(t=t.toString()),this.readyState!==e.OPEN){M(this,t,r);return}n===void 0&&(n=!this._isServer),this._sender.pong(t||v,n,r)}resume(){this.readyState===e.CONNECTING||this.readyState===e.CLOSED||(this._paused=!1,this._receiver._writableState.needDrain||this._socket.resume())}send(t,n,r){if(this.readyState===e.CONNECTING)throw Error(`WebSocket is not open: readyState 0 (CONNECTING)`);if(typeof n==`function`&&(r=n,n={}),typeof t==`number`&&(t=t.toString()),this.readyState!==e.OPEN){M(this,t,r);return}let i={binary:typeof t!=`string`,mask:!this._isServer,compress:!0,fin:!0,...n};this._extensions[f.extensionName]||(i.compress=!1),this._sender.send(t||v,i,r)}terminate(){if(this.readyState!==e.CLOSED){if(this.readyState===e.CONNECTING){j(this,this._req,`WebSocket was closed before the connection was established`);return}this._socket&&(this._readyState=e.CLOSING,this._socket.destroy())}}};Object.defineProperty(O,"CONNECTING",{enumerable:!0,value:E.indexOf(`CONNECTING`)}),Object.defineProperty(O.prototype,"CONNECTING",{enumerable:!0,value:E.indexOf(`CONNECTING`)}),Object.defineProperty(O,"OPEN",{enumerable:!0,value:E.indexOf(`OPEN`)}),Object.defineProperty(O.prototype,"OPEN",{enumerable:!0,value:E.indexOf(`OPEN`)}),Object.defineProperty(O,"CLOSING",{enumerable:!0,value:E.indexOf(`CLOSING`)}),Object.defineProperty(O.prototype,"CLOSING",{enumerable:!0,value:E.indexOf(`CLOSING`)}),Object.defineProperty(O,"CLOSED",{enumerable:!0,value:E.indexOf(`CLOSED`)}),Object.defineProperty(O.prototype,"CLOSED",{enumerable:!0,value:E.indexOf(`CLOSED`)}),[`binaryType`,`bufferedAmount`,`extensions`,`isPaused`,`protocol`,`readyState`,`url`].forEach(e=>{Object.defineProperty(O.prototype,e,{enumerable:!0})}),[`open`,`error`,`close`,`message`].forEach(e=>{Object.defineProperty(O.prototype,`on${e}`,{enumerable:!0,get(){for(let t of this.listeners(e))if(t[y])return t[b];return null},set(t){for(let t of this.listeners(e))if(t[y]){this.removeListener(e,t);break}typeof t==`function`&&this.addEventListener(e,t,{[y]:!0})}})}),O.prototype.addEventListener=w,O.prototype.removeEventListener=te,t.exports=O;function k(e,t,n,a){let o={allowSynchronousEvents:!0,autoPong:!0,closeTimeout:_,protocolVersion:T[1],maxBufferedChunks:1024*1024,maxFragments:128*1024,maxPayload:100*1024*1024,skipUTF8Validation:!1,perMessageDeflate:!0,followRedirects:!1,maxRedirects:10,...a,socketPath:void 0,hostname:void 0,protocol:void 0,timeout:void 0,method:`GET`,host:void 0,path:void 0,port:void 0};if(e._autoPong=o.autoPong,e._closeTimeout=o.closeTimeout,!T.includes(o.protocolVersion))throw RangeError(`Unsupported protocol version: ${o.protocolVersion} (supported versions: ${T.join(`, `)})`);let l;if(t instanceof d)l=t;else try{l=new d(t)}catch{throw SyntaxError(`Invalid URL: ${t}`)}l.protocol===`http:`?l.protocol=`ws:`:l.protocol===`https:`&&(l.protocol=`wss:`),e._url=l.href;let u=l.protocol===`wss:`,p=l.protocol===`ws+unix:`,m;if(l.protocol!==`ws:`&&!u&&!p?m=`The URL's protocol must be one of "ws:", "wss:", "http:", "https:", or "ws+unix:"`:p&&!l.pathname?m=`The URL's pathname is empty`:l.hash&&(m=`The URL contains a fragment identifier`),m){let t=SyntaxError(m);if(e._redirects===0)throw t;A(e,t);return}let h=u?443:80,g=s(16).toString(`base64`),v=u?r.request:i.request,y=new Set,b;if(o.createConnection=o.createConnection||(u?se:oe),o.defaultPort=o.defaultPort||h,o.port=l.port||h,o.host=l.hostname.startsWith(`[`)?l.hostname.slice(1,-1):l.hostname,o.headers={...o.headers,"Sec-WebSocket-Version":o.protocolVersion,"Sec-WebSocket-Key":g,Connection:`Upgrade`,Upgrade:`websocket`},o.path=l.pathname+l.search,o.timeout=o.handshakeTimeout,o.perMessageDeflate&&(b=new f({...o.perMessageDeflate,isServer:!1,maxPayload:o.maxPayload}),o.headers[`Sec-WebSocket-Extensions`]=ne({[f.extensionName]:b.offer()})),n.length){for(let e of n){if(typeof e!=`string`||!D.test(e)||y.has(e))throw SyntaxError(`An invalid or duplicated subprotocol was specified`);y.add(e)}o.headers[`Sec-WebSocket-Protocol`]=n.join(`,`)}if(o.origin&&(o.protocolVersion<13?o.headers[`Sec-WebSocket-Origin`]=o.origin:o.headers.Origin=o.origin),(l.username||l.password)&&(o.auth=`${l.username}:${l.password}`),p){let e=o.path.split(`:`);o.socketPath=e[0],o.path=e[1]}let x;if(o.followRedirects){if(e._redirects===0){e._originalIpc=p,e._originalSecure=u,e._originalHostOrSocketPath=p?o.socketPath:l.host;let t=a&&a.headers;if(a={...a,headers:{}},t)for(let[e,n]of Object.entries(t))a.headers[e.toLowerCase()]=n}else if(e.listenerCount(`redirect`)===0){let t=p?e._originalIpc?o.socketPath===e._originalHostOrSocketPath:!1:e._originalIpc?!1:l.host===e._originalHostOrSocketPath;(!t||e._originalSecure&&!u)&&(delete o.headers.authorization,delete o.headers.cookie,t||delete o.headers.host,o.auth=void 0)}o.auth&&!a.headers.authorization&&(a.headers.authorization=`Basic `+Buffer.from(o.auth).toString(`base64`)),x=e._req=v(o),e._redirects&&e.emit(`redirect`,e.url,x)}else x=e._req=v(o);o.timeout&&x.on(`timeout`,()=>{j(e,x,`Opening handshake has timed out`)}),x.on(`error`,t=>{x===null||x[ae]||(x=e._req=null,A(e,t))}),x.on(`response`,r=>{let i=r.headers.location,s=r.statusCode;if(i&&o.followRedirects&&s>=300&&s<400){if(++e._redirects>o.maxRedirects){j(e,x,`Maximum redirects exceeded`);return}x.abort();let r;try{r=new d(i,t)}catch{A(e,SyntaxError(`Invalid URL: ${i}`));return}k(e,r,n,a)}else e.emit(`unexpected-response`,x,r)||j(e,x,`Unexpected server response: ${r.statusCode}`)}),x.on(`upgrade`,(t,n,r)=>{if(e.emit(`upgrade`,t),e.readyState!==O.CONNECTING)return;x=e._req=null;let i=t.headers.upgrade;if(i===void 0||i.toLowerCase()!==`websocket`){j(e,n,`Invalid Upgrade header`);return}let a=c(`sha1`).update(g+ee).digest(`base64`);if(t.headers[`sec-websocket-accept`]!==a){j(e,n,`Invalid Sec-WebSocket-Accept header`);return}let s=t.headers[`sec-websocket-protocol`],l;if(s===void 0?y.size&&(l=`Server sent no subprotocol`):y.size?y.has(s)||(l=`Server sent an invalid subprotocol`):l=`Server sent a subprotocol but none was requested`,l){j(e,n,l);return}s&&(e._protocol=s);let u=t.headers[`sec-websocket-extensions`];if(u!==void 0){if(!b){j(e,n,`Server sent a Sec-WebSocket-Extensions header but no extension was requested`);return}let t;try{t=re(u)}catch{j(e,n,`Invalid Sec-WebSocket-Extensions header`);return}let r=Object.keys(t);if(r.length!==1||r[0]!==f.extensionName){j(e,n,`Server indicated an extension that was not requested`);return}try{b.accept(t[f.extensionName])}catch{j(e,n,`Invalid Sec-WebSocket-Extensions header`);return}e._extensions[f.extensionName]=b}e.setSocket(n,r,{allowSynchronousEvents:o.allowSynchronousEvents,generateMask:o.generateMask,maxBufferedChunks:o.maxBufferedChunks,maxFragments:o.maxFragments,maxPayload:o.maxPayload,skipUTF8Validation:o.skipUTF8Validation})}),o.finishRequest?o.finishRequest(x,e):x.end()}function A(e,t){e._readyState=O.CLOSING,e._errorEmitted=!0,e.emit(`error`,t),e.emitClose()}function oe(e){return e.path=e.socketPath,a.connect(e)}function se(e){return e.path=void 0,!e.servername&&e.servername!==``&&(e.servername=a.isIP(e.host)?``:e.host),o.connect(e)}function j(e,t,n){e._readyState=O.CLOSING;let r=Error(n);Error.captureStackTrace(r,j),t.setHeader?(t[ae]=!0,t.abort(),t.socket&&!t.socket.destroyed&&t.socket.destroy(),process.nextTick(A,e,r)):(t.destroy(r),t.once(`error`,e.emit.bind(e,`error`)),t.once(`close`,e.emitClose.bind(e)))}function M(e,t,n){if(t){let n=h(t)?t.size:ie(t).length;e._socket?e._sender._bufferedBytes+=n:e._bufferedAmount+=n}if(n){let t=Error(`WebSocket is not open: readyState ${e.readyState} (${E[e.readyState]})`);process.nextTick(n,t)}}function N(e,t){let n=this[S];n._closeFrameReceived=!0,n._closeMessage=t,n._closeCode=e,n._socket[S]!==void 0&&(n._socket.removeListener(`data`,R),process.nextTick(F,n._socket),e===1005?n.close():n.close(e,t))}function ce(){let e=this[S];e.isPaused||e._socket.resume()}function le(e){let t=this[S];t._socket[S]!==void 0&&(t._socket.removeListener(`data`,R),process.nextTick(F,t._socket),t.close(e[x])),t._errorEmitted||(t._errorEmitted=!0,t.emit(`error`,e))}function P(){this[S].emitClose()}function ue(e,t){this[S].emit(`message`,e,t)}function de(e){let t=this[S];t._autoPong&&t.pong(e,!this._isServer,C),t.emit(`ping`,e)}function fe(e){this[S].emit(`pong`,e)}function F(e){e.resume()}function pe(e){let t=this[S];t.readyState!==O.CLOSED&&(t.readyState===O.OPEN&&(t._readyState=O.CLOSING,I(t)),this._socket.end(),t._errorEmitted||(t._errorEmitted=!0,t.emit(`error`,e)))}function I(e){e._closeTimer=setTimeout(e._socket.destroy.bind(e._socket),e._closeTimeout)}function L(){let e=this[S];if(this.removeListener(`close`,L),this.removeListener(`data`,R),this.removeListener(`end`,z),e._readyState=O.CLOSING,!this._readableState.endEmitted&&!e._closeFrameReceived&&!e._receiver._writableState.errorEmitted&&this._readableState.length!==0){let t=this.read(this._readableState.length);e._receiver.write(t)}e._receiver.end(),this[S]=void 0,clearTimeout(e._closeTimer),e._receiver._writableState.finished||e._receiver._writableState.errorEmitted?e.emitClose():(e._receiver.on(`error`,P),e._receiver.on(`finish`,P))}function R(e){this[S]._receiver.write(e)||this.pause()}function z(){let e=this[S];e._readyState=O.CLOSING,e._receiver.end(),this.end()}function B(){let e=this[S];this.removeListener(`error`,B),this.on(`error`,C),e&&(e._readyState=O.CLOSING,this.destroy())}})),Je=W(((e,t)=>{qe();let{Duplex:n}=G(`stream`);function r(e){e.emit(`close`)}function i(){!this.destroyed&&this._writableState.finished&&this.destroy()}function a(e){this.removeListener(`error`,a),this.destroy(),this.listenerCount(`error`)===0&&this.emit(`error`,e)}function o(e,t){let o=!0,s=new n({...t,autoDestroy:!1,emitClose:!1,objectMode:!1,writableObjectMode:!1});return e.on(`message`,function(t,n){let r=!n&&s._readableState.objectMode?t.toString():t;s.push(r)||e.pause()}),e.once(`error`,function(e){s.destroyed||(o=!1,s.destroy(e))}),e.once(`close`,function(){s.destroyed||s.push(null)}),s._destroy=function(t,n){if(e.readyState===e.CLOSED){n(t),process.nextTick(r,s);return}let i=!1;e.once(`error`,function(e){i=!0,n(e)}),e.once(`close`,function(){i||n(t),process.nextTick(r,s)}),o&&e.terminate()},s._final=function(t){if(e.readyState===e.CONNECTING){e.once(`open`,function(){s._final(t)});return}e._socket!==null&&(e._socket._writableState.finished?(t(),s._readableState.endEmitted&&s.destroy()):(e._socket.once(`finish`,function(){t()}),e.close()))},s._read=function(){e.isPaused&&e.resume()},s._write=function(t,n,r){if(e.readyState===e.CONNECTING){e.once(`open`,function(){s._write(t,n,r)});return}e.send(t,r)},s.on(`end`,i),s.on(`error`,a),s}t.exports=o})),Ye=W(((e,t)=>{let{tokenChars:n}=Y();function r(e){let t=new Set,r=-1,i=-1,a=0;for(;a<e.length;a++){let o=e.charCodeAt(a);if(i===-1&&n[o]===1)r===-1&&(r=a);else if(a!==0&&(o===32||o===9))i===-1&&r!==-1&&(i=a);else if(o===44){if(r===-1)throw SyntaxError(`Unexpected character at index ${a}`);i===-1&&(i=a);let n=e.slice(r,i);if(t.has(n))throw SyntaxError(`The "${n}" subprotocol is duplicated`);t.add(n),r=i=-1}else throw SyntaxError(`Unexpected character at index ${a}`)}if(r===-1||i!==-1)throw SyntaxError(`Unexpected end of input`);let o=e.slice(r,a);if(t.has(o))throw SyntaxError(`The "${o}" subprotocol is duplicated`);return t.add(o),t}t.exports={parse:r}})),Xe=W(((e,t)=>{let n=G(`events`),r=G(`http`),{Duplex:i}=G(`stream`),{createHash:a}=G(`crypto`),o=Ke(),s=J(),c=Ye(),l=qe(),{CLOSE_TIMEOUT:u,GUID:d,kWebSocket:f}=K(),p=/^[+/0-9A-Za-z]{22}==$/;t.exports=class extends n{constructor(e,t){if(super(),e={allowSynchronousEvents:!0,autoPong:!0,maxBufferedChunks:1024*1024,maxFragments:128*1024,maxPayload:100*1024*1024,skipUTF8Validation:!1,perMessageDeflate:!1,handleProtocols:null,clientTracking:!0,closeTimeout:u,verifyClient:null,noServer:!1,backlog:null,server:null,host:null,path:null,port:null,WebSocket:l,...e},e.port==null&&!e.server&&!e.noServer||e.port!=null&&(e.server||e.noServer)||e.server&&e.noServer)throw TypeError(`One and only one of the "port", "server", or "noServer" options must be specified`);if(e.port==null?e.server&&(this._server=e.server):(this._server=r.createServer((e,t)=>{let n=r.STATUS_CODES[426];t.writeHead(426,{"Content-Length":n.length,"Content-Type":`text/plain`}),t.end(n)}),this._server.listen(e.port,e.host,e.backlog,t)),this._server){let e=this.emit.bind(this,`connection`);this._removeListeners=m(this._server,{listening:this.emit.bind(this,`listening`),error:this.emit.bind(this,`error`),upgrade:(t,n,r)=>{this.handleUpgrade(t,n,r,e)}})}e.perMessageDeflate===!0&&(e.perMessageDeflate={}),e.clientTracking&&(this.clients=new Set,this._shouldEmitClose=!1),this.options=e,this._state=0}address(){if(this.options.noServer)throw Error(`The server is operating in "noServer" mode`);return this._server?this._server.address():null}close(e){if(this._state===2){e&&this.once(`close`,()=>{e(Error(`The server is not running`))}),process.nextTick(h,this);return}if(e&&this.once(`close`,e),this._state!==1)if(this._state=1,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(h,this);else{let e=this._server;this._removeListeners(),this._removeListeners=this._server=null,e.close(()=>{h(this)})}}shouldHandle(e){if(this.options.path){let t=e.url.indexOf(`?`);if((t===-1?e.url:e.url.slice(0,t))!==this.options.path)return!1}return!0}handleUpgrade(e,t,n,r){t.on(`error`,g);let i=e.headers[`sec-websocket-key`],a=e.headers.upgrade,l=+e.headers[`sec-websocket-version`];if(e.method!==`GET`){v(this,e,t,405,`Invalid HTTP method`);return}if(a===void 0||a.toLowerCase()!==`websocket`){v(this,e,t,400,`Invalid Upgrade header`);return}if(i===void 0||!p.test(i)){v(this,e,t,400,`Missing or invalid Sec-WebSocket-Key header`);return}if(l!==13&&l!==8){v(this,e,t,400,`Missing or invalid Sec-WebSocket-Version header`,{"Sec-WebSocket-Version":`13, 8`});return}if(!this.shouldHandle(e)){_(t,400);return}let u=e.headers[`sec-websocket-protocol`],d=new Set;if(u!==void 0)try{d=c.parse(u)}catch{v(this,e,t,400,`Invalid Sec-WebSocket-Protocol header`);return}let f=e.headers[`sec-websocket-extensions`],m={};if(this.options.perMessageDeflate&&f!==void 0){let n=new s({...this.options.perMessageDeflate,isServer:!0,maxPayload:this.options.maxPayload});try{let e=o.parse(f);e[s.extensionName]&&(n.accept(e[s.extensionName]),m[s.extensionName]=n)}catch{v(this,e,t,400,`Invalid or unacceptable Sec-WebSocket-Extensions header`);return}}if(this.options.verifyClient){let a={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(a,(a,o,s,c)=>{if(!a)return _(t,o||401,s,c);this.completeUpgrade(m,i,d,e,t,n,r)});return}if(!this.options.verifyClient(a))return _(t,401)}this.completeUpgrade(m,i,d,e,t,n,r)}completeUpgrade(e,t,n,r,i,c,l){if(!i.readable||!i.writable)return i.destroy();if(i[f])throw Error(`server.handleUpgrade() was called more than once with the same socket, possibly due to a misconfiguration`);if(this._state>0)return _(i,503);let u=[`HTTP/1.1 101 Switching Protocols`,`Upgrade: websocket`,`Connection: Upgrade`,`Sec-WebSocket-Accept: ${a(`sha1`).update(t+d).digest(`base64`)}`],p=new this.options.WebSocket(null,void 0,this.options);if(n.size){let e=this.options.handleProtocols?this.options.handleProtocols(n,r):n.values().next().value;e&&(u.push(`Sec-WebSocket-Protocol: ${e}`),p._protocol=e)}if(e[s.extensionName]){let t=e[s.extensionName].params,n=o.format({[s.extensionName]:[t]});u.push(`Sec-WebSocket-Extensions: ${n}`),p._extensions=e}this.emit(`headers`,u,r),i.write(u.concat(`\r
|
|
@@ -2,7 +2,10 @@
|
|
|
2
2
|
* The type of error that occurred.
|
|
3
3
|
* @public
|
|
4
4
|
*/
|
|
5
|
-
export declare type ErrorType =
|
|
5
|
+
export declare type ErrorType =
|
|
6
|
+
| "invalid-retry"
|
|
7
|
+
| "unknown-field"
|
|
8
|
+
| "max-buffer-size-exceeded";
|
|
6
9
|
|
|
7
10
|
/**
|
|
8
11
|
* A parsed EventSource message event
|
|
@@ -43,7 +46,7 @@ export declare interface EventSourceMessage {
|
|
|
43
46
|
* const eventStream =
|
|
44
47
|
* response.body
|
|
45
48
|
* .pipeThrough(new TextDecoderStream())
|
|
46
|
-
* .pipeThrough(new EventSourceParserStream({
|
|
49
|
+
* .pipeThrough(new EventSourceParserStream({onError: 'terminate'}))
|
|
47
50
|
* ```
|
|
48
51
|
*
|
|
49
52
|
* @public
|
|
@@ -52,7 +55,7 @@ export declare class EventSourceParserStream extends TransformStream<
|
|
|
52
55
|
string,
|
|
53
56
|
EventSourceMessage
|
|
54
57
|
> {
|
|
55
|
-
constructor({ onError, onRetry, onComment }?: StreamOptions);
|
|
58
|
+
constructor({ onError, onRetry, onComment, maxBufferSize }?: StreamOptions);
|
|
56
59
|
}
|
|
57
60
|
|
|
58
61
|
/**
|
|
@@ -116,6 +119,16 @@ export declare interface StreamOptions {
|
|
|
116
119
|
* @param comment - The comment encountered in the stream.
|
|
117
120
|
*/
|
|
118
121
|
onComment?: ((comment: string) => void) | undefined;
|
|
122
|
+
/**
|
|
123
|
+
* Maximum number of characters the parser is allowed to buffer across calls to `feed()`.
|
|
124
|
+
* See {@link ParserConfig.maxBufferSize} for details.
|
|
125
|
+
*
|
|
126
|
+
* When the limit is exceeded, the stream is always errored (regardless of the `onError`
|
|
127
|
+
* setting) since the underlying parser is unrecoverable without a `reset()`.
|
|
128
|
+
*
|
|
129
|
+
* @defaultValue `undefined` (unbounded)
|
|
130
|
+
*/
|
|
131
|
+
maxBufferSize?: number | undefined;
|
|
119
132
|
}
|
|
120
133
|
|
|
121
134
|
export {};
|