@rindo/core 3.3.0 → 4.0.0-beta.1

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.
Files changed (46) hide show
  1. package/cli/index.cjs +1 -1
  2. package/cli/index.js +1 -1
  3. package/cli/package.json +1 -1
  4. package/compiler/package.json +1 -1
  5. package/compiler/rindo.js +20 -84
  6. package/compiler/rindo.min.js +2 -2
  7. package/dev-server/client/index.js +1 -1
  8. package/dev-server/client/package.json +1 -1
  9. package/dev-server/connector.html +2 -2
  10. package/dev-server/index.js +1 -1
  11. package/dev-server/package.json +1 -1
  12. package/dev-server/server-process.js +2 -2
  13. package/dev-server/ws.js +1 -1
  14. package/internal/app-data/index.cjs +1 -7
  15. package/internal/app-data/index.js +1 -7
  16. package/internal/app-data/package.json +1 -1
  17. package/internal/client/index.js +13 -44
  18. package/internal/client/package.json +1 -1
  19. package/internal/client/patch-browser.js +4 -102
  20. package/internal/client/shadow-css.js +1 -1
  21. package/internal/hydrate/index.js +18 -23
  22. package/internal/hydrate/package.json +1 -1
  23. package/internal/package.json +1 -1
  24. package/internal/rindo-private.d.ts +0 -13
  25. package/internal/rindo-public-compiler.d.ts +0 -34
  26. package/internal/testing/index.js +18 -24
  27. package/internal/testing/package.json +1 -1
  28. package/mock-doc/index.cjs +2 -2
  29. package/mock-doc/index.js +2 -2
  30. package/mock-doc/package.json +1 -1
  31. package/package.json +2 -2
  32. package/screenshot/package.json +1 -1
  33. package/sys/node/713.node-fetch.js +451 -0
  34. package/sys/node/autoprefixer.js +2 -2
  35. package/sys/node/glob.js +1 -1
  36. package/sys/node/graceful-fs.js +1 -1
  37. package/sys/node/index.js +1 -1
  38. package/sys/node/node-fetch.js +4 -1
  39. package/sys/node/package.json +1 -1
  40. package/sys/node/worker.js +1 -1
  41. package/testing/index.js +8 -8
  42. package/testing/package.json +1 -1
  43. package/internal/client/css-shim.js +0 -4
  44. package/internal/client/dom.js +0 -73
  45. package/internal/client/patch-esm.js +0 -25
  46. package/internal/client/polyfills/css-shim.js +0 -1
package/dev-server/ws.js CHANGED
@@ -1 +1 @@
1
- (()=>{var e={777:(e,t,s)=>{"use strict";const r=s(762);r.createWebSocketStream=s(30),r.Server=s(284),r.Receiver=s(957),r.Sender=s(330),r.WebSocket=r,r.WebSocketServer=r.Server,e.exports=r},977:(e,t,s)=>{"use strict";const{EMPTY_BUFFER:r}=s(872),i=Buffer[Symbol.species];function o(e,t,s,r,i){for(let o=0;o<i;o++)s[r+o]=e[o]^t[3&o]}function n(e,t){for(let s=0;s<e.length;s++)e[s]^=t[3&s]}if(e.exports={concat:function(e,t){if(0===e.length)return r;if(1===e.length)return e[0];const s=Buffer.allocUnsafe(t);let o=0;for(let t=0;t<e.length;t++){const r=e[t];s.set(r,o),o+=r.length}return o<t?new i(s.buffer,s.byteOffset,o):s},mask:o,toArrayBuffer:function(e){return e.length===e.buffer.byteLength?e.buffer:e.buffer.slice(e.byteOffset,e.byteOffset+e.length)},toBuffer:function e(t){if(e.readOnly=!0,Buffer.isBuffer(t))return t;let s;return t instanceof ArrayBuffer?s=new i(t):ArrayBuffer.isView(t)?s=new i(t.buffer,t.byteOffset,t.byteLength):(s=Buffer.from(t),e.readOnly=!1),s},unmask:n},!process.env.WS_NO_BUFFER_UTIL)try{const t=s(Object(function(){var e=new Error("Cannot find module 'bufferutil'");throw e.code="MODULE_NOT_FOUND",e}()));e.exports.mask=function(e,s,r,i,n){n<48?o(e,s,r,i,n):t.mask(e,s,r,i,n)},e.exports.unmask=function(e,s){e.length<32?n(e,s):t.unmask(e,s)}}catch(e){}},872:e=>{"use strict";e.exports={BINARY_TYPES:["nodebuffer","arraybuffer","fragments"],EMPTY_BUFFER:Buffer.alloc(0),GUID:"258EAFA5-E914-47DA-95CA-C5AB0DC85B11",kForOnEventAttribute:Symbol("kIsForOnEventAttribute"),kListener:Symbol("kListener"),kStatusCode:Symbol("status-code"),kWebSocket:Symbol("websocket"),NOOP:()=>{}}},62:(e,t,s)=>{"use strict";const{kForOnEventAttribute:r,kListener:i}=s(872),o=Symbol("kCode"),n=Symbol("kData"),a=Symbol("kError"),h=Symbol("kMessage"),c=Symbol("kReason"),l=Symbol("kTarget"),d=Symbol("kType"),f=Symbol("kWasClean");class _{constructor(e){this[l]=null,this[d]=e}get target(){return this[l]}get type(){return this[d]}}Object.defineProperty(_.prototype,"target",{enumerable:!0}),Object.defineProperty(_.prototype,"type",{enumerable:!0});class u extends _{constructor(e,t={}){super(e),this[o]=void 0===t.code?0:t.code,this[c]=void 0===t.reason?"":t.reason,this[f]=void 0!==t.wasClean&&t.wasClean}get code(){return this[o]}get reason(){return this[c]}get wasClean(){return this[f]}}Object.defineProperty(u.prototype,"code",{enumerable:!0}),Object.defineProperty(u.prototype,"reason",{enumerable:!0}),Object.defineProperty(u.prototype,"wasClean",{enumerable:!0});class p extends _{constructor(e,t={}){super(e),this[a]=void 0===t.error?null:t.error,this[h]=void 0===t.message?"":t.message}get error(){return this[a]}get message(){return this[h]}}Object.defineProperty(p.prototype,"error",{enumerable:!0}),Object.defineProperty(p.prototype,"message",{enumerable:!0});class m extends _{constructor(e,t={}){super(e),this[n]=void 0===t.data?null:t.data}get data(){return this[n]}}Object.defineProperty(m.prototype,"data",{enumerable:!0});const y={addEventListener(e,t,s={}){for(const o of this.listeners(e))if(!s[r]&&o[i]===t&&!o[r])return;let o;if("message"===e)o=function(e,s){const r=new m("message",{data:s?e:e.toString()});r[l]=this,g(t,this,r)};else if("close"===e)o=function(e,s){const r=new u("close",{code:e,reason:s.toString(),wasClean:this._closeFrameReceived&&this._closeFrameSent});r[l]=this,g(t,this,r)};else if("error"===e)o=function(e){const s=new p("error",{error:e,message:e.message});s[l]=this,g(t,this,s)};else{if("open"!==e)return;o=function(){const e=new _("open");e[l]=this,g(t,this,e)}}o[r]=!!s[r],o[i]=t,s.once?this.once(e,o):this.on(e,o)},removeEventListener(e,t){for(const s of this.listeners(e))if(s[i]===t&&!s[r]){this.removeListener(e,s);break}}};function g(e,t,s){"object"==typeof e&&e.handleEvent?e.handleEvent.call(e,s):e.call(t,s)}e.exports={CloseEvent:u,ErrorEvent:p,Event:_,EventTarget:y,MessageEvent:m}},503:(e,t,s)=>{"use strict";const{tokenChars:r}=s(746);function i(e,t,s){void 0===e[t]?e[t]=[s]:e[t].push(s)}e.exports={format:function(e){return Object.keys(e).map((t=>{let s=e[t];return Array.isArray(s)||(s=[s]),s.map((e=>[t].concat(Object.keys(e).map((t=>{let s=e[t];return Array.isArray(s)||(s=[s]),s.map((e=>!0===e?t:`${t}=${e}`)).join("; ")}))).join("; "))).join(", ")})).join(", ")},parse:function(e){const t=Object.create(null);let s,o,n=Object.create(null),a=!1,h=!1,c=!1,l=-1,d=-1,f=-1,_=0;for(;_<e.length;_++)if(d=e.charCodeAt(_),void 0===s)if(-1===f&&1===r[d])-1===l&&(l=_);else if(0===_||32!==d&&9!==d){if(59!==d&&44!==d)throw new SyntaxError(`Unexpected character at index ${_}`);{if(-1===l)throw new SyntaxError(`Unexpected character at index ${_}`);-1===f&&(f=_);const r=e.slice(l,f);44===d?(i(t,r,n),n=Object.create(null)):s=r,l=f=-1}}else-1===f&&-1!==l&&(f=_);else if(void 0===o)if(-1===f&&1===r[d])-1===l&&(l=_);else if(32===d||9===d)-1===f&&-1!==l&&(f=_);else if(59===d||44===d){if(-1===l)throw new SyntaxError(`Unexpected character at index ${_}`);-1===f&&(f=_),i(n,e.slice(l,f),!0),44===d&&(i(t,s,n),n=Object.create(null),s=void 0),l=f=-1}else{if(61!==d||-1===l||-1!==f)throw new SyntaxError(`Unexpected character at index ${_}`);o=e.slice(l,_),l=f=-1}else if(h){if(1!==r[d])throw new SyntaxError(`Unexpected character at index ${_}`);-1===l?l=_:a||(a=!0),h=!1}else if(c)if(1===r[d])-1===l&&(l=_);else if(34===d&&-1!==l)c=!1,f=_;else{if(92!==d)throw new SyntaxError(`Unexpected character at index ${_}`);h=!0}else if(34===d&&61===e.charCodeAt(_-1))c=!0;else if(-1===f&&1===r[d])-1===l&&(l=_);else if(-1===l||32!==d&&9!==d){if(59!==d&&44!==d)throw new SyntaxError(`Unexpected character at index ${_}`);{if(-1===l)throw new SyntaxError(`Unexpected character at index ${_}`);-1===f&&(f=_);let r=e.slice(l,f);a&&(r=r.replace(/\\/g,""),a=!1),i(n,o,r),44===d&&(i(t,s,n),n=Object.create(null),s=void 0),o=void 0,l=f=-1}}else-1===f&&(f=_);if(-1===l||c||32===d||9===d)throw new SyntaxError("Unexpected end of input");-1===f&&(f=_);const u=e.slice(l,f);return void 0===s?i(t,u,n):(void 0===o?i(n,u,!0):i(n,o,a?u.replace(/\\/g,""):u),i(t,s,n)),t}}},305:e=>{"use strict";const t=Symbol("kDone"),s=Symbol("kRun");e.exports=class{constructor(e){this[t]=()=>{this.pending--,this[s]()},this.concurrency=e||1/0,this.jobs=[],this.pending=0}add(e){this.jobs.push(e),this[s]()}[s](){if(this.pending!==this.concurrency&&this.jobs.length){const e=this.jobs.shift();this.pending++,e(this[t])}}}},196:(e,t,s)=>{"use strict";const r=s(796),i=s(977),o=s(305),{kStatusCode:n}=s(872),a=Buffer[Symbol.species],h=Buffer.from([0,0,255,255]),c=Symbol("permessage-deflate"),l=Symbol("total-length"),d=Symbol("callback"),f=Symbol("buffers"),_=Symbol("error");let u;function p(e){this[f].push(e),this[l]+=e.length}function m(e){this[l]+=e.length,this[c]._maxPayload<1||this[l]<=this[c]._maxPayload?this[f].push(e):(this[_]=new RangeError("Max payload size exceeded"),this[_].code="WS_ERR_UNSUPPORTED_MESSAGE_LENGTH",this[_][n]=1009,this.removeListener("data",m),this.reset())}function y(e){this[c]._inflate=null,e[n]=1007,this[d](e)}e.exports=class{constructor(e,t,s){if(this._maxPayload=0|s,this._options=e||{},this._threshold=void 0!==this._options.threshold?this._options.threshold:1024,this._isServer=!!t,this._deflate=null,this._inflate=null,this.params=null,!u){const e=void 0!==this._options.concurrencyLimit?this._options.concurrencyLimit:10;u=new o(e)}}static get extensionName(){return"permessage-deflate"}offer(){const 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:null==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(),this._inflate=null),this._deflate){const e=this._deflate[d];this._deflate.close(),this._deflate=null,e&&e(new Error("The deflate stream was closed while data was being processed"))}}acceptAsServer(e){const t=this._options,s=e.find((e=>!(!1===t.serverNoContextTakeover&&e.server_no_context_takeover||e.server_max_window_bits&&(!1===t.serverMaxWindowBits||"number"==typeof t.serverMaxWindowBits&&t.serverMaxWindowBits>e.server_max_window_bits)||"number"==typeof t.clientMaxWindowBits&&!e.client_max_window_bits)));if(!s)throw new Error("None of the extension offers can be accepted");return t.serverNoContextTakeover&&(s.server_no_context_takeover=!0),t.clientNoContextTakeover&&(s.client_no_context_takeover=!0),"number"==typeof t.serverMaxWindowBits&&(s.server_max_window_bits=t.serverMaxWindowBits),"number"==typeof t.clientMaxWindowBits?s.client_max_window_bits=t.clientMaxWindowBits:!0!==s.client_max_window_bits&&!1!==t.clientMaxWindowBits||delete s.client_max_window_bits,s}acceptAsClient(e){const t=e[0];if(!1===this._options.clientNoContextTakeover&&t.client_no_context_takeover)throw new Error('Unexpected parameter "client_no_context_takeover"');if(t.client_max_window_bits){if(!1===this._options.clientMaxWindowBits||"number"==typeof this._options.clientMaxWindowBits&&t.client_max_window_bits>this._options.clientMaxWindowBits)throw new Error('Unexpected or invalid parameter "client_max_window_bits"')}else"number"==typeof this._options.clientMaxWindowBits&&(t.client_max_window_bits=this._options.clientMaxWindowBits);return t}normalizeParams(e){return e.forEach((e=>{Object.keys(e).forEach((t=>{let s=e[t];if(s.length>1)throw new Error(`Parameter "${t}" must have only a single value`);if(s=s[0],"client_max_window_bits"===t){if(!0!==s){const e=+s;if(!Number.isInteger(e)||e<8||e>15)throw new TypeError(`Invalid value for parameter "${t}": ${s}`);s=e}else if(!this._isServer)throw new TypeError(`Invalid value for parameter "${t}": ${s}`)}else if("server_max_window_bits"===t){const e=+s;if(!Number.isInteger(e)||e<8||e>15)throw new TypeError(`Invalid value for parameter "${t}": ${s}`);s=e}else{if("client_no_context_takeover"!==t&&"server_no_context_takeover"!==t)throw new Error(`Unknown parameter "${t}"`);if(!0!==s)throw new TypeError(`Invalid value for parameter "${t}": ${s}`)}e[t]=s}))})),e}decompress(e,t,s){u.add((r=>{this._decompress(e,t,((e,t)=>{r(),s(e,t)}))}))}compress(e,t,s){u.add((r=>{this._compress(e,t,((e,t)=>{r(),s(e,t)}))}))}_decompress(e,t,s){const o=this._isServer?"client":"server";if(!this._inflate){const e=`${o}_max_window_bits`,t="number"!=typeof this.params[e]?r.Z_DEFAULT_WINDOWBITS:this.params[e];this._inflate=r.createInflateRaw({...this._options.zlibInflateOptions,windowBits:t}),this._inflate[c]=this,this._inflate[l]=0,this._inflate[f]=[],this._inflate.on("error",y),this._inflate.on("data",m)}this._inflate[d]=s,this._inflate.write(e),t&&this._inflate.write(h),this._inflate.flush((()=>{const e=this._inflate[_];if(e)return this._inflate.close(),this._inflate=null,void s(e);const r=i.concat(this._inflate[f],this._inflate[l]);this._inflate._readableState.endEmitted?(this._inflate.close(),this._inflate=null):(this._inflate[l]=0,this._inflate[f]=[],t&&this.params[`${o}_no_context_takeover`]&&this._inflate.reset()),s(null,r)}))}_compress(e,t,s){const o=this._isServer?"server":"client";if(!this._deflate){const e=`${o}_max_window_bits`,t="number"!=typeof this.params[e]?r.Z_DEFAULT_WINDOWBITS:this.params[e];this._deflate=r.createDeflateRaw({...this._options.zlibDeflateOptions,windowBits:t}),this._deflate[l]=0,this._deflate[f]=[],this._deflate.on("data",p)}this._deflate[d]=s,this._deflate.write(e),this._deflate.flush(r.Z_SYNC_FLUSH,(()=>{if(!this._deflate)return;let e=i.concat(this._deflate[f],this._deflate[l]);t&&(e=new a(e.buffer,e.byteOffset,e.length-4)),this._deflate[d]=null,this._deflate[l]=0,this._deflate[f]=[],t&&this.params[`${o}_no_context_takeover`]&&this._deflate.reset(),s(null,e)}))}}},957:(e,t,s)=>{"use strict";const{Writable:r}=s(781),i=s(196),{BINARY_TYPES:o,EMPTY_BUFFER:n,kStatusCode:a,kWebSocket:h}=s(872),{concat:c,toArrayBuffer:l,unmask:d}=s(977),{isValidStatusCode:f,isValidUTF8:_}=s(746),u=Buffer[Symbol.species];function p(e,t,s,r,i){const o=new e(s?`Invalid WebSocket frame: ${t}`:t);return Error.captureStackTrace(o,p),o.code=i,o[a]=r,o}e.exports=class extends r{constructor(e={}){super(),this._binaryType=e.binaryType||o[0],this._extensions=e.extensions||{},this._isServer=!!e.isServer,this._maxPayload=0|e.maxPayload,this._skipUTF8Validation=!!e.skipUTF8Validation,this[h]=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._state=0,this._loop=!1}_write(e,t,s){if(8===this._opcode&&0==this._state)return s();this._bufferedBytes+=e.length,this._buffers.push(e),this.startLoop(s)}consume(e){if(this._bufferedBytes-=e,e===this._buffers[0].length)return this._buffers.shift();if(e<this._buffers[0].length){const t=this._buffers[0];return this._buffers[0]=new u(t.buffer,t.byteOffset+e,t.length-e),new u(t.buffer,t.byteOffset,e)}const t=Buffer.allocUnsafe(e);do{const s=this._buffers[0],r=t.length-e;e>=s.length?t.set(this._buffers.shift(),r):(t.set(new Uint8Array(s.buffer,s.byteOffset,e),r),this._buffers[0]=new u(s.buffer,s.byteOffset+e,s.length-e)),e-=s.length}while(e>0);return t}startLoop(e){let t;this._loop=!0;do{switch(this._state){case 0:t=this.getInfo();break;case 1:t=this.getPayloadLength16();break;case 2:t=this.getPayloadLength64();break;case 3:this.getMask();break;case 4:t=this.getData(e);break;default:return void(this._loop=!1)}}while(this._loop);e(t)}getInfo(){if(this._bufferedBytes<2)return void(this._loop=!1);const e=this.consume(2);if(0!=(48&e[0]))return this._loop=!1,p(RangeError,"RSV2 and RSV3 must be clear",!0,1002,"WS_ERR_UNEXPECTED_RSV_2_3");const t=64==(64&e[0]);if(t&&!this._extensions[i.extensionName])return this._loop=!1,p(RangeError,"RSV1 must be clear",!0,1002,"WS_ERR_UNEXPECTED_RSV_1");if(this._fin=128==(128&e[0]),this._opcode=15&e[0],this._payloadLength=127&e[1],0===this._opcode){if(t)return this._loop=!1,p(RangeError,"RSV1 must be clear",!0,1002,"WS_ERR_UNEXPECTED_RSV_1");if(!this._fragmented)return this._loop=!1,p(RangeError,"invalid opcode 0",!0,1002,"WS_ERR_INVALID_OPCODE");this._opcode=this._fragmented}else if(1===this._opcode||2===this._opcode){if(this._fragmented)return this._loop=!1,p(RangeError,`invalid opcode ${this._opcode}`,!0,1002,"WS_ERR_INVALID_OPCODE");this._compressed=t}else{if(!(this._opcode>7&&this._opcode<11))return this._loop=!1,p(RangeError,`invalid opcode ${this._opcode}`,!0,1002,"WS_ERR_INVALID_OPCODE");if(!this._fin)return this._loop=!1,p(RangeError,"FIN must be set",!0,1002,"WS_ERR_EXPECTED_FIN");if(t)return this._loop=!1,p(RangeError,"RSV1 must be clear",!0,1002,"WS_ERR_UNEXPECTED_RSV_1");if(this._payloadLength>125||8===this._opcode&&1===this._payloadLength)return this._loop=!1,p(RangeError,`invalid payload length ${this._payloadLength}`,!0,1002,"WS_ERR_INVALID_CONTROL_PAYLOAD_LENGTH")}if(this._fin||this._fragmented||(this._fragmented=this._opcode),this._masked=128==(128&e[1]),this._isServer){if(!this._masked)return this._loop=!1,p(RangeError,"MASK must be set",!0,1002,"WS_ERR_EXPECTED_MASK")}else if(this._masked)return this._loop=!1,p(RangeError,"MASK must be clear",!0,1002,"WS_ERR_UNEXPECTED_MASK");if(126===this._payloadLength)this._state=1;else{if(127!==this._payloadLength)return this.haveLength();this._state=2}}getPayloadLength16(){if(!(this._bufferedBytes<2))return this._payloadLength=this.consume(2).readUInt16BE(0),this.haveLength();this._loop=!1}getPayloadLength64(){if(this._bufferedBytes<8)return void(this._loop=!1);const e=this.consume(8),t=e.readUInt32BE(0);return t>Math.pow(2,21)-1?(this._loop=!1,p(RangeError,"Unsupported WebSocket frame: payload length > 2^53 - 1",!1,1009,"WS_ERR_UNSUPPORTED_DATA_PAYLOAD_LENGTH")):(this._payloadLength=t*Math.pow(2,32)+e.readUInt32BE(4),this.haveLength())}haveLength(){if(this._payloadLength&&this._opcode<8&&(this._totalPayloadLength+=this._payloadLength,this._totalPayloadLength>this._maxPayload&&this._maxPayload>0))return this._loop=!1,p(RangeError,"Max payload size exceeded",!1,1009,"WS_ERR_UNSUPPORTED_MESSAGE_LENGTH");this._masked?this._state=3:this._state=4}getMask(){this._bufferedBytes<4?this._loop=!1:(this._mask=this.consume(4),this._state=4)}getData(e){let t=n;if(this._payloadLength){if(this._bufferedBytes<this._payloadLength)return void(this._loop=!1);t=this.consume(this._payloadLength),this._masked&&0!=(this._mask[0]|this._mask[1]|this._mask[2]|this._mask[3])&&d(t,this._mask)}return this._opcode>7?this.controlMessage(t):this._compressed?(this._state=5,void this.decompress(t,e)):(t.length&&(this._messageLength=this._totalPayloadLength,this._fragments.push(t)),this.dataMessage())}decompress(e,t){this._extensions[i.extensionName].decompress(e,this._fin,((e,s)=>{if(e)return t(e);if(s.length){if(this._messageLength+=s.length,this._messageLength>this._maxPayload&&this._maxPayload>0)return t(p(RangeError,"Max payload size exceeded",!1,1009,"WS_ERR_UNSUPPORTED_MESSAGE_LENGTH"));this._fragments.push(s)}const r=this.dataMessage();if(r)return t(r);this.startLoop(t)}))}dataMessage(){if(this._fin){const e=this._messageLength,t=this._fragments;if(this._totalPayloadLength=0,this._messageLength=0,this._fragmented=0,this._fragments=[],2===this._opcode){let s;s="nodebuffer"===this._binaryType?c(t,e):"arraybuffer"===this._binaryType?l(c(t,e)):t,this.emit("message",s,!0)}else{const s=c(t,e);if(!this._skipUTF8Validation&&!_(s))return this._loop=!1,p(Error,"invalid UTF-8 sequence",!0,1007,"WS_ERR_INVALID_UTF8");this.emit("message",s,!1)}}this._state=0}controlMessage(e){if(8===this._opcode)if(this._loop=!1,0===e.length)this.emit("conclude",1005,n),this.end();else{const t=e.readUInt16BE(0);if(!f(t))return p(RangeError,`invalid status code ${t}`,!0,1002,"WS_ERR_INVALID_CLOSE_CODE");const s=new u(e.buffer,e.byteOffset+2,e.length-2);if(!this._skipUTF8Validation&&!_(s))return p(Error,"invalid UTF-8 sequence",!0,1007,"WS_ERR_INVALID_UTF8");this.emit("conclude",t,s),this.end()}else 9===this._opcode?this.emit("ping",e):this.emit("pong",e);this._state=0}}},330:(e,t,s)=>{"use strict";s(808),s(404);const{randomFillSync:r}=s(113),i=s(196),{EMPTY_BUFFER:o}=s(872),{isValidStatusCode:n}=s(746),{mask:a,toBuffer:h}=s(977),c=Symbol("kByteLength"),l=Buffer.alloc(4);class d{constructor(e,t,s){this._extensions=t||{},s&&(this._generateMask=s,this._maskBuffer=Buffer.alloc(4)),this._socket=e,this._firstFragment=!0,this._compress=!1,this._bufferedBytes=0,this._deflating=!1,this._queue=[]}static frame(e,t){let s,i,o=!1,n=2,h=!1;t.mask&&(s=t.maskBuffer||l,t.generateMask?t.generateMask(s):r(s,0,4),h=0==(s[0]|s[1]|s[2]|s[3]),n=6),"string"==typeof e?i=t.mask&&!h||void 0===t[c]?(e=Buffer.from(e)).length:t[c]:(i=e.length,o=t.mask&&t.readOnly&&!h);let d=i;i>=65536?(n+=8,d=127):i>125&&(n+=2,d=126);const f=Buffer.allocUnsafe(o?i+n:n);return f[0]=t.fin?128|t.opcode:t.opcode,t.rsv1&&(f[0]|=64),f[1]=d,126===d?f.writeUInt16BE(i,2):127===d&&(f[2]=f[3]=0,f.writeUIntBE(i,4,6)),t.mask?(f[1]|=128,f[n-4]=s[0],f[n-3]=s[1],f[n-2]=s[2],f[n-1]=s[3],h?[f,e]:o?(a(e,s,f,n,i),[f]):(a(e,s,e,0,i),[f,e])):[f,e]}close(e,t,s,r){let i;if(void 0===e)i=o;else{if("number"!=typeof e||!n(e))throw new TypeError("First argument must be a valid error code number");if(void 0!==t&&t.length){const s=Buffer.byteLength(t);if(s>123)throw new RangeError("The message must not be greater than 123 bytes");i=Buffer.allocUnsafe(2+s),i.writeUInt16BE(e,0),"string"==typeof t?i.write(t,2):i.set(t,2)}else i=Buffer.allocUnsafe(2),i.writeUInt16BE(e,0)}const a={[c]:i.length,fin:!0,generateMask:this._generateMask,mask:s,maskBuffer:this._maskBuffer,opcode:8,readOnly:!1,rsv1:!1};this._deflating?this.enqueue([this.dispatch,i,!1,a,r]):this.sendFrame(d.frame(i,a),r)}ping(e,t,s){let r,i;if("string"==typeof e?(r=Buffer.byteLength(e),i=!1):(r=(e=h(e)).length,i=h.readOnly),r>125)throw new RangeError("The data size must not be greater than 125 bytes");const o={[c]:r,fin:!0,generateMask:this._generateMask,mask:t,maskBuffer:this._maskBuffer,opcode:9,readOnly:i,rsv1:!1};this._deflating?this.enqueue([this.dispatch,e,!1,o,s]):this.sendFrame(d.frame(e,o),s)}pong(e,t,s){let r,i;if("string"==typeof e?(r=Buffer.byteLength(e),i=!1):(r=(e=h(e)).length,i=h.readOnly),r>125)throw new RangeError("The data size must not be greater than 125 bytes");const o={[c]:r,fin:!0,generateMask:this._generateMask,mask:t,maskBuffer:this._maskBuffer,opcode:10,readOnly:i,rsv1:!1};this._deflating?this.enqueue([this.dispatch,e,!1,o,s]):this.sendFrame(d.frame(e,o),s)}send(e,t,s){const r=this._extensions[i.extensionName];let o,n,a=t.binary?2:1,l=t.compress;if("string"==typeof e?(o=Buffer.byteLength(e),n=!1):(o=(e=h(e)).length,n=h.readOnly),this._firstFragment?(this._firstFragment=!1,l&&r&&r.params[r._isServer?"server_no_context_takeover":"client_no_context_takeover"]&&(l=o>=r._threshold),this._compress=l):(l=!1,a=0),t.fin&&(this._firstFragment=!0),r){const r={[c]:o,fin:t.fin,generateMask:this._generateMask,mask:t.mask,maskBuffer:this._maskBuffer,opcode:a,readOnly:n,rsv1:l};this._deflating?this.enqueue([this.dispatch,e,this._compress,r,s]):this.dispatch(e,this._compress,r,s)}else this.sendFrame(d.frame(e,{[c]:o,fin:t.fin,generateMask:this._generateMask,mask:t.mask,maskBuffer:this._maskBuffer,opcode:a,readOnly:n,rsv1:!1}),s)}dispatch(e,t,s,r){if(!t)return void this.sendFrame(d.frame(e,s),r);const o=this._extensions[i.extensionName];this._bufferedBytes+=s[c],this._deflating=!0,o.compress(e,s.fin,((e,t)=>{if(this._socket.destroyed){const e=new Error("The socket was closed while data was being compressed");"function"==typeof r&&r(e);for(let t=0;t<this._queue.length;t++){const s=this._queue[t],r=s[s.length-1];"function"==typeof r&&r(e)}}else this._bufferedBytes-=s[c],this._deflating=!1,s.readOnly=!1,this.sendFrame(d.frame(t,s),r),this.dequeue()}))}dequeue(){for(;!this._deflating&&this._queue.length;){const e=this._queue.shift();this._bufferedBytes-=e[3][c],Reflect.apply(e[0],this,e.slice(1))}}enqueue(e){this._bufferedBytes+=e[3][c],this._queue.push(e)}sendFrame(e,t){2===e.length?(this._socket.cork(),this._socket.write(e[0]),this._socket.write(e[1],t),this._socket.uncork()):this._socket.write(e[0],t)}}e.exports=d},30:(e,t,s)=>{"use strict";const{Duplex:r}=s(781);function i(e){e.emit("close")}function o(){!this.destroyed&&this._writableState.finished&&this.destroy()}function n(e){this.removeListener("error",n),this.destroy(),0===this.listenerCount("error")&&this.emit("error",e)}e.exports=function(e,t){let s=!0;const a=new r({...t,autoDestroy:!1,emitClose:!1,objectMode:!1,writableObjectMode:!1});return e.on("message",(function(t,s){const r=!s&&a._readableState.objectMode?t.toString():t;a.push(r)||e.pause()})),e.once("error",(function(e){a.destroyed||(s=!1,a.destroy(e))})),e.once("close",(function(){a.destroyed||a.push(null)})),a._destroy=function(t,r){if(e.readyState===e.CLOSED)return r(t),void process.nextTick(i,a);let o=!1;e.once("error",(function(e){o=!0,r(e)})),e.once("close",(function(){o||r(t),process.nextTick(i,a)})),s&&e.terminate()},a._final=function(t){e.readyState!==e.CONNECTING?null!==e._socket&&(e._socket._writableState.finished?(t(),a._readableState.endEmitted&&a.destroy()):(e._socket.once("finish",(function(){t()})),e.close())):e.once("open",(function(){a._final(t)}))},a._read=function(){e.isPaused&&e.resume()},a._write=function(t,s,r){e.readyState!==e.CONNECTING?e.send(t,r):e.once("open",(function(){a._write(t,s,r)}))},a.on("end",o),a.on("error",n),a}},640:(e,t,s)=>{"use strict";const{tokenChars:r}=s(746);e.exports={parse:function(e){const t=new Set;let s=-1,i=-1,o=0;for(;o<e.length;o++){const n=e.charCodeAt(o);if(-1===i&&1===r[n])-1===s&&(s=o);else if(0===o||32!==n&&9!==n){if(44!==n)throw new SyntaxError(`Unexpected character at index ${o}`);{if(-1===s)throw new SyntaxError(`Unexpected character at index ${o}`);-1===i&&(i=o);const r=e.slice(s,i);if(t.has(r))throw new SyntaxError(`The "${r}" subprotocol is duplicated`);t.add(r),s=i=-1}}else-1===i&&-1!==s&&(i=o)}if(-1===s||-1!==i)throw new SyntaxError("Unexpected end of input");const n=e.slice(s,o);if(t.has(n))throw new SyntaxError(`The "${n}" subprotocol is duplicated`);return t.add(n),t}}},746:(e,t,s)=>{"use strict";const{isUtf8:r}=s(300);function i(e){const t=e.length;let s=0;for(;s<t;)if(0==(128&e[s]))s++;else if(192==(224&e[s])){if(s+1===t||128!=(192&e[s+1])||192==(254&e[s]))return!1;s+=2}else if(224==(240&e[s])){if(s+2>=t||128!=(192&e[s+1])||128!=(192&e[s+2])||224===e[s]&&128==(224&e[s+1])||237===e[s]&&160==(224&e[s+1]))return!1;s+=3}else{if(240!=(248&e[s]))return!1;if(s+3>=t||128!=(192&e[s+1])||128!=(192&e[s+2])||128!=(192&e[s+3])||240===e[s]&&128==(240&e[s+1])||244===e[s]&&e[s+1]>143||e[s]>244)return!1;s+=4}return!0}if(e.exports={isValidStatusCode:function(e){return e>=1e3&&e<=1014&&1004!==e&&1005!==e&&1006!==e||e>=3e3&&e<=4999},isValidUTF8:i,tokenChars:[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]},r)e.exports.isValidUTF8=function(e){return e.length<24?i(e):r(e)};else if(!process.env.WS_NO_UTF_8_VALIDATE)try{const t=s(Object(function(){var e=new Error("Cannot find module 'utf-8-validate'");throw e.code="MODULE_NOT_FOUND",e}()));e.exports.isValidUTF8=function(e){return e.length<32?i(e):t(e)}}catch(e){}},284:(e,t,s)=>{"use strict";const r=s(361),i=s(685),{createHash:o}=(s(687),s(808),s(404),s(113)),n=s(503),a=s(196),h=s(640),c=s(762),{GUID:l,kWebSocket:d}=s(872),f=/^[+/0-9A-Za-z]{22}==$/;function _(e){e._state=2,e.emit("close")}function u(){this.destroy()}function p(e,t,s,r){s=s||i.STATUS_CODES[t],r={Connection:"close","Content-Type":"text/html","Content-Length":Buffer.byteLength(s),...r},e.once("finish",e.destroy),e.end(`HTTP/1.1 ${t} ${i.STATUS_CODES[t]}\r\n`+Object.keys(r).map((e=>`${e}: ${r[e]}`)).join("\r\n")+"\r\n\r\n"+s)}function m(e,t,s,r,i){if(e.listenerCount("wsClientError")){const r=new Error(i);Error.captureStackTrace(r,m),e.emit("wsClientError",r,s,t)}else p(s,r,i)}e.exports=class extends r{constructor(e,t){if(super(),null==(e={maxPayload:104857600,skipUTF8Validation:!1,perMessageDeflate:!1,handleProtocols:null,clientTracking:!0,verifyClient:null,noServer:!1,backlog:null,server:null,host:null,path:null,port:null,WebSocket:c,...e}).port&&!e.server&&!e.noServer||null!=e.port&&(e.server||e.noServer)||e.server&&e.noServer)throw new TypeError('One and only one of the "port", "server", or "noServer" options must be specified');if(null!=e.port?(this._server=i.createServer(((e,t)=>{const s=i.STATUS_CODES[426];t.writeHead(426,{"Content-Length":s.length,"Content-Type":"text/plain"}),t.end(s)})),this._server.listen(e.port,e.host,e.backlog,t)):e.server&&(this._server=e.server),this._server){const e=this.emit.bind(this,"connection");this._removeListeners=function(e,t){for(const s of Object.keys(t))e.on(s,t[s]);return function(){for(const s of Object.keys(t))e.removeListener(s,t[s])}}(this._server,{listening:this.emit.bind(this,"listening"),error:this.emit.bind(this,"error"),upgrade:(t,s,r)=>{this.handleUpgrade(t,s,r,e)}})}!0===e.perMessageDeflate&&(e.perMessageDeflate={}),e.clientTracking&&(this.clients=new Set,this._shouldEmitClose=!1),this.options=e,this._state=0}address(){if(this.options.noServer)throw new Error('The server is operating in "noServer" mode');return this._server?this._server.address():null}close(e){if(2===this._state)return e&&this.once("close",(()=>{e(new Error("The server is not running"))})),void process.nextTick(_,this);if(e&&this.once("close",e),1!==this._state)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(_,this);else{const e=this._server;this._removeListeners(),this._removeListeners=this._server=null,e.close((()=>{_(this)}))}}shouldHandle(e){if(this.options.path){const t=e.url.indexOf("?");if((-1!==t?e.url.slice(0,t):e.url)!==this.options.path)return!1}return!0}handleUpgrade(e,t,s,r){t.on("error",u);const i=e.headers["sec-websocket-key"],o=+e.headers["sec-websocket-version"];if("GET"!==e.method){return void m(this,e,t,405,"Invalid HTTP method")}if("websocket"!==e.headers.upgrade.toLowerCase()){return void m(this,e,t,400,"Invalid Upgrade header")}if(!i||!f.test(i)){return void m(this,e,t,400,"Missing or invalid Sec-WebSocket-Key header")}if(8!==o&&13!==o){return void m(this,e,t,400,"Missing or invalid Sec-WebSocket-Version header")}if(!this.shouldHandle(e))return void p(t,400);const c=e.headers["sec-websocket-protocol"];let l=new Set;if(void 0!==c)try{l=h.parse(c)}catch(s){return void m(this,e,t,400,"Invalid Sec-WebSocket-Protocol header")}const d=e.headers["sec-websocket-extensions"],_={};if(this.options.perMessageDeflate&&void 0!==d){const s=new a(this.options.perMessageDeflate,!0,this.options.maxPayload);try{const e=n.parse(d);e[a.extensionName]&&(s.accept(e[a.extensionName]),_[a.extensionName]=s)}catch(s){return void m(this,e,t,400,"Invalid or unacceptable Sec-WebSocket-Extensions header")}}if(this.options.verifyClient){const n={origin:e.headers[""+(8===o?"sec-websocket-origin":"origin")],secure:!(!e.socket.authorized&&!e.socket.encrypted),req:e};if(2===this.options.verifyClient.length)return void this.options.verifyClient(n,((o,n,a,h)=>{if(!o)return p(t,n||401,a,h);this.completeUpgrade(_,i,l,e,t,s,r)}));if(!this.options.verifyClient(n))return p(t,401)}this.completeUpgrade(_,i,l,e,t,s,r)}completeUpgrade(e,t,s,r,i,h,c){if(!i.readable||!i.writable)return i.destroy();if(i[d])throw new Error("server.handleUpgrade() was called more than once with the same socket, possibly due to a misconfiguration");if(this._state>0)return p(i,503);const f=["HTTP/1.1 101 Switching Protocols","Upgrade: websocket","Connection: Upgrade",`Sec-WebSocket-Accept: ${o("sha1").update(t+l).digest("base64")}`],m=new this.options.WebSocket(null);if(s.size){const e=this.options.handleProtocols?this.options.handleProtocols(s,r):s.values().next().value;e&&(f.push(`Sec-WebSocket-Protocol: ${e}`),m._protocol=e)}if(e[a.extensionName]){const t=e[a.extensionName].params,s=n.format({[a.extensionName]:[t]});f.push(`Sec-WebSocket-Extensions: ${s}`),m._extensions=e}this.emit("headers",f,r),i.write(f.concat("\r\n").join("\r\n")),i.removeListener("error",u),m.setSocket(i,h,{maxPayload:this.options.maxPayload,skipUTF8Validation:this.options.skipUTF8Validation}),this.clients&&(this.clients.add(m),m.on("close",(()=>{this.clients.delete(m),this._shouldEmitClose&&!this.clients.size&&process.nextTick(_,this)}))),c(m,r)}}},762:(e,t,s)=>{"use strict";const r=s(361),i=s(687),o=s(685),n=s(808),a=s(404),{randomBytes:h,createHash:c}=s(113),{Readable:l}=s(781),{URL:d}=s(310),f=s(196),_=s(957),u=s(330),{BINARY_TYPES:p,EMPTY_BUFFER:m,GUID:y,kForOnEventAttribute:g,kListener:b,kStatusCode:v,kWebSocket:S,NOOP:w}=s(872),{EventTarget:{addEventListener:k,removeEventListener:E}}=s(62),{format:x,parse:O}=s(503),{toBuffer:T}=s(977),C=Symbol("kAborted"),N=[8,13],L=["CONNECTING","OPEN","CLOSING","CLOSED"],P=/^[!#$%&'*+\-.0-9A-Z^_`|a-z~]+$/;class U extends r{constructor(e,t,s){super(),this._binaryType=p[0],this._closeCode=1006,this._closeFrameReceived=!1,this._closeFrameSent=!1,this._closeMessage=m,this._closeTimer=null,this._extensions={},this._paused=!1,this._protocol="",this._readyState=U.CONNECTING,this._receiver=null,this._sender=null,this._socket=null,null!==e?(this._bufferedAmount=0,this._isServer=!1,this._redirects=0,void 0===t?t=[]:Array.isArray(t)||("object"==typeof t&&null!==t?(s=t,t=[]):t=[t]),R(this,e,t,s)):this._isServer=!0}get binaryType(){return this._binaryType}set binaryType(e){p.includes(e)&&(this._binaryType=e,this._receiver&&(this._receiver._binaryType=e))}get bufferedAmount(){return this._socket?this._socket._writableState.length+this._sender._bufferedBytes:this._bufferedAmount}get extensions(){return Object.keys(this._extensions).join()}get isPaused(){return this._paused}get onclose(){return null}get onerror(){return null}get onopen(){return null}get onmessage(){return null}get protocol(){return this._protocol}get readyState(){return this._readyState}get url(){return this._url}setSocket(e,t,s){const r=new _({binaryType:this.binaryType,extensions:this._extensions,isServer:this._isServer,maxPayload:s.maxPayload,skipUTF8Validation:s.skipUTF8Validation});this._sender=new u(e,this._extensions,s.generateMask),this._receiver=r,this._socket=e,r[S]=this,e[S]=this,r.on("conclude",A),r.on("drain",F),r.on("error",j),r.on("message",G),r.on("ping",V),r.on("pong",q),e.setTimeout(0),e.setNoDelay(),t.length>0&&e.unshift(t),e.on("close",H),e.on("data",Y),e.on("end",X),e.on("error",K),this._readyState=U.OPEN,this.emit("open")}emitClose(){if(!this._socket)return this._readyState=U.CLOSED,void this.emit("close",this._closeCode,this._closeMessage);this._extensions[f.extensionName]&&this._extensions[f.extensionName].cleanup(),this._receiver.removeAllListeners(),this._readyState=U.CLOSED,this.emit("close",this._closeCode,this._closeMessage)}close(e,t){if(this.readyState!==U.CLOSED)if(this.readyState!==U.CONNECTING)this.readyState!==U.CLOSING?(this._readyState=U.CLOSING,this._sender.close(e,t,!this._isServer,(e=>{e||(this._closeFrameSent=!0,(this._closeFrameReceived||this._receiver._writableState.errorEmitted)&&this._socket.end())})),this._closeTimer=setTimeout(this._socket.destroy.bind(this._socket),3e4)):this._closeFrameSent&&(this._closeFrameReceived||this._receiver._writableState.errorEmitted)&&this._socket.end();else{const e="WebSocket was closed before the connection was established";W(this,this._req,e)}}pause(){this.readyState!==U.CONNECTING&&this.readyState!==U.CLOSED&&(this._paused=!0,this._socket.pause())}ping(e,t,s){if(this.readyState===U.CONNECTING)throw new Error("WebSocket is not open: readyState 0 (CONNECTING)");"function"==typeof e?(s=e,e=t=void 0):"function"==typeof t&&(s=t,t=void 0),"number"==typeof e&&(e=e.toString()),this.readyState===U.OPEN?(void 0===t&&(t=!this._isServer),this._sender.ping(e||m,t,s)):D(this,e,s)}pong(e,t,s){if(this.readyState===U.CONNECTING)throw new Error("WebSocket is not open: readyState 0 (CONNECTING)");"function"==typeof e?(s=e,e=t=void 0):"function"==typeof t&&(s=t,t=void 0),"number"==typeof e&&(e=e.toString()),this.readyState===U.OPEN?(void 0===t&&(t=!this._isServer),this._sender.pong(e||m,t,s)):D(this,e,s)}resume(){this.readyState!==U.CONNECTING&&this.readyState!==U.CLOSED&&(this._paused=!1,this._receiver._writableState.needDrain||this._socket.resume())}send(e,t,s){if(this.readyState===U.CONNECTING)throw new Error("WebSocket is not open: readyState 0 (CONNECTING)");if("function"==typeof t&&(s=t,t={}),"number"==typeof e&&(e=e.toString()),this.readyState!==U.OPEN)return void D(this,e,s);const r={binary:"string"!=typeof e,mask:!this._isServer,compress:!0,fin:!0,...t};this._extensions[f.extensionName]||(r.compress=!1),this._sender.send(e||m,r,s)}terminate(){if(this.readyState!==U.CLOSED)if(this.readyState!==U.CONNECTING)this._socket&&(this._readyState=U.CLOSING,this._socket.destroy());else{const e="WebSocket was closed before the connection was established";W(this,this._req,e)}}}function R(e,t,s,r){const n={protocolVersion:N[1],maxPayload:104857600,skipUTF8Validation:!1,perMessageDeflate:!0,followRedirects:!1,maxRedirects:10,...r,createConnection:void 0,socketPath:void 0,hostname:void 0,protocol:void 0,timeout:void 0,method:"GET",host:void 0,path:void 0,port:void 0};if(!N.includes(n.protocolVersion))throw new RangeError(`Unsupported protocol version: ${n.protocolVersion} (supported versions: ${N.join(", ")})`);let a;if(t instanceof d)a=t,e._url=t.href;else{try{a=new d(t)}catch(e){throw new SyntaxError(`Invalid URL: ${t}`)}e._url=t}const l="wss:"===a.protocol,_="ws+unix:"===a.protocol;let u;if("ws:"===a.protocol||l||_?_&&!a.pathname?u="The URL's pathname is empty":a.hash&&(u="The URL contains a fragment identifier"):u='The URL\'s protocol must be one of "ws:", "wss:", or "ws+unix:"',u){const t=new SyntaxError(u);if(0===e._redirects)throw t;return void B(e,t)}const p=l?443:80,m=h(16).toString("base64"),g=l?i.request:o.request,b=new Set;let v,S;if(n.createConnection=l?M:I,n.defaultPort=n.defaultPort||p,n.port=a.port||p,n.host=a.hostname.startsWith("[")?a.hostname.slice(1,-1):a.hostname,n.headers={...n.headers,"Sec-WebSocket-Version":n.protocolVersion,"Sec-WebSocket-Key":m,Connection:"Upgrade",Upgrade:"websocket"},n.path=a.pathname+a.search,n.timeout=n.handshakeTimeout,n.perMessageDeflate&&(v=new f(!0!==n.perMessageDeflate?n.perMessageDeflate:{},!1,n.maxPayload),n.headers["Sec-WebSocket-Extensions"]=x({[f.extensionName]:v.offer()})),s.length){for(const e of s){if("string"!=typeof e||!P.test(e)||b.has(e))throw new SyntaxError("An invalid or duplicated subprotocol was specified");b.add(e)}n.headers["Sec-WebSocket-Protocol"]=s.join(",")}if(n.origin&&(n.protocolVersion<13?n.headers["Sec-WebSocket-Origin"]=n.origin:n.headers.Origin=n.origin),(a.username||a.password)&&(n.auth=`${a.username}:${a.password}`),_){const e=n.path.split(":");n.socketPath=e[0],n.path=e[1]}if(n.followRedirects){if(0===e._redirects){e._originalIpc=_,e._originalSecure=l,e._originalHostOrSocketPath=_?n.socketPath:a.host;const t=r&&r.headers;if(r={...r,headers:{}},t)for(const[e,s]of Object.entries(t))r.headers[e.toLowerCase()]=s}else if(0===e.listenerCount("redirect")){const t=_?!!e._originalIpc&&n.socketPath===e._originalHostOrSocketPath:!e._originalIpc&&a.host===e._originalHostOrSocketPath;(!t||e._originalSecure&&!l)&&(delete n.headers.authorization,delete n.headers.cookie,t||delete n.headers.host,n.auth=void 0)}n.auth&&!r.headers.authorization&&(r.headers.authorization="Basic "+Buffer.from(n.auth).toString("base64")),S=e._req=g(n),e._redirects&&e.emit("redirect",e.url,S)}else S=e._req=g(n);n.timeout&&S.on("timeout",(()=>{W(e,S,"Opening handshake has timed out")})),S.on("error",(t=>{null===S||S[C]||(S=e._req=null,B(e,t))})),S.on("response",(i=>{const o=i.headers.location,a=i.statusCode;if(o&&n.followRedirects&&a>=300&&a<400){if(++e._redirects>n.maxRedirects)return void W(e,S,"Maximum redirects exceeded");let i;S.abort();try{i=new d(o,t)}catch(t){const s=new SyntaxError(`Invalid URL: ${o}`);return void B(e,s)}R(e,i,s,r)}else e.emit("unexpected-response",S,i)||W(e,S,`Unexpected server response: ${i.statusCode}`)})),S.on("upgrade",((t,s,r)=>{if(e.emit("upgrade",t),e.readyState!==U.CONNECTING)return;if(S=e._req=null,"websocket"!==t.headers.upgrade.toLowerCase())return void W(e,s,"Invalid Upgrade header");const i=c("sha1").update(m+y).digest("base64");if(t.headers["sec-websocket-accept"]!==i)return void W(e,s,"Invalid Sec-WebSocket-Accept header");const o=t.headers["sec-websocket-protocol"];let a;if(void 0!==o?b.size?b.has(o)||(a="Server sent an invalid subprotocol"):a="Server sent a subprotocol but none was requested":b.size&&(a="Server sent no subprotocol"),a)return void W(e,s,a);o&&(e._protocol=o);const h=t.headers["sec-websocket-extensions"];if(void 0!==h){if(!v){return void W(e,s,"Server sent a Sec-WebSocket-Extensions header but no extension was requested")}let t;try{t=O(h)}catch(t){return void W(e,s,"Invalid Sec-WebSocket-Extensions header")}const r=Object.keys(t);if(1!==r.length||r[0]!==f.extensionName){return void W(e,s,"Server indicated an extension that was not requested")}try{v.accept(t[f.extensionName])}catch(t){return void W(e,s,"Invalid Sec-WebSocket-Extensions header")}e._extensions[f.extensionName]=v}e.setSocket(s,r,{generateMask:n.generateMask,maxPayload:n.maxPayload,skipUTF8Validation:n.skipUTF8Validation})})),S.end()}function B(e,t){e._readyState=U.CLOSING,e.emit("error",t),e.emitClose()}function I(e){return e.path=e.socketPath,n.connect(e)}function M(e){return e.path=void 0,e.servername||""===e.servername||(e.servername=n.isIP(e.host)?"":e.host),a.connect(e)}function W(e,t,s){e._readyState=U.CLOSING;const r=new Error(s);Error.captureStackTrace(r,W),t.setHeader?(t[C]=!0,t.abort(),t.socket&&!t.socket.destroyed&&t.socket.destroy(),process.nextTick(B,e,r)):(t.destroy(r),t.once("error",e.emit.bind(e,"error")),t.once("close",e.emitClose.bind(e)))}function D(e,t,s){if(t){const s=T(t).length;e._socket?e._sender._bufferedBytes+=s:e._bufferedAmount+=s}if(s){const t=new Error(`WebSocket is not open: readyState ${e.readyState} (${L[e.readyState]})`);process.nextTick(s,t)}}function A(e,t){const s=this[S];s._closeFrameReceived=!0,s._closeMessage=t,s._closeCode=e,void 0!==s._socket[S]&&(s._socket.removeListener("data",Y),process.nextTick(z,s._socket),1005===e?s.close():s.close(e,t))}function F(){const e=this[S];e.isPaused||e._socket.resume()}function j(e){const t=this[S];void 0!==t._socket[S]&&(t._socket.removeListener("data",Y),process.nextTick(z,t._socket),t.close(e[v])),t.emit("error",e)}function $(){this[S].emitClose()}function G(e,t){this[S].emit("message",e,t)}function V(e){const t=this[S];t.pong(e,!t._isServer,w),t.emit("ping",e)}function q(e){this[S].emit("pong",e)}function z(e){e.resume()}function H(){const e=this[S];let t;this.removeListener("close",H),this.removeListener("data",Y),this.removeListener("end",X),e._readyState=U.CLOSING,this._readableState.endEmitted||e._closeFrameReceived||e._receiver._writableState.errorEmitted||null===(t=e._socket.read())||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",$),e._receiver.on("finish",$))}function Y(e){this[S]._receiver.write(e)||this.pause()}function X(){const e=this[S];e._readyState=U.CLOSING,e._receiver.end(),this.end()}function K(){const e=this[S];this.removeListener("error",K),this.on("error",w),e&&(e._readyState=U.CLOSING,this.destroy())}Object.defineProperty(U,"CONNECTING",{enumerable:!0,value:L.indexOf("CONNECTING")}),Object.defineProperty(U.prototype,"CONNECTING",{enumerable:!0,value:L.indexOf("CONNECTING")}),Object.defineProperty(U,"OPEN",{enumerable:!0,value:L.indexOf("OPEN")}),Object.defineProperty(U.prototype,"OPEN",{enumerable:!0,value:L.indexOf("OPEN")}),Object.defineProperty(U,"CLOSING",{enumerable:!0,value:L.indexOf("CLOSING")}),Object.defineProperty(U.prototype,"CLOSING",{enumerable:!0,value:L.indexOf("CLOSING")}),Object.defineProperty(U,"CLOSED",{enumerable:!0,value:L.indexOf("CLOSED")}),Object.defineProperty(U.prototype,"CLOSED",{enumerable:!0,value:L.indexOf("CLOSED")}),["binaryType","bufferedAmount","extensions","isPaused","protocol","readyState","url"].forEach((e=>{Object.defineProperty(U.prototype,e,{enumerable:!0})})),["open","error","close","message"].forEach((e=>{Object.defineProperty(U.prototype,`on${e}`,{enumerable:!0,get(){for(const t of this.listeners(e))if(t[g])return t[b];return null},set(t){for(const t of this.listeners(e))if(t[g]){this.removeListener(e,t);break}"function"==typeof t&&this.addEventListener(e,t,{[g]:!0})}})})),U.prototype.addEventListener=k,U.prototype.removeEventListener=E,e.exports=U},300:e=>{"use strict";e.exports=require("buffer")},113:e=>{"use strict";e.exports=require("crypto")},361:e=>{"use strict";e.exports=require("events")},685:e=>{"use strict";e.exports=require("http")},687:e=>{"use strict";e.exports=require("https")},808:e=>{"use strict";e.exports=require("net")},781:e=>{"use strict";e.exports=require("stream")},404:e=>{"use strict";e.exports=require("tls")},310:e=>{"use strict";e.exports=require("url")},796:e=>{"use strict";e.exports=require("zlib")}},t={};function s(r){var i=t[r];if(void 0!==i)return i.exports;var o=t[r]={exports:{}};return e[r](o,o.exports,s),o.exports}var r={};(()=>{var e=r,t=s(777);e.Server=t.Server,e.on=t.on,e.close=t.close,e.ping=t.ping})();var i=exports;for(var o in r)i[o]=r[o];r.__esModule&&Object.defineProperty(i,"__esModule",{value:!0})})();
1
+ (()=>{var e={777:(e,t,s)=>{"use strict";const r=s(762);r.createWebSocketStream=s(30),r.Server=s(284),r.Receiver=s(957),r.Sender=s(330),r.WebSocket=r,r.WebSocketServer=r.Server,e.exports=r},977:(e,t,s)=>{"use strict";const{EMPTY_BUFFER:r}=s(872),i=Buffer[Symbol.species];function o(e,t,s,r,i){for(let o=0;o<i;o++)s[r+o]=e[o]^t[3&o]}function n(e,t){for(let s=0;s<e.length;s++)e[s]^=t[3&s]}if(e.exports={concat:function(e,t){if(0===e.length)return r;if(1===e.length)return e[0];const s=Buffer.allocUnsafe(t);let o=0;for(let t=0;t<e.length;t++){const r=e[t];s.set(r,o),o+=r.length}return o<t?new i(s.buffer,s.byteOffset,o):s},mask:o,toArrayBuffer:function(e){return e.length===e.buffer.byteLength?e.buffer:e.buffer.slice(e.byteOffset,e.byteOffset+e.length)},toBuffer:function e(t){if(e.readOnly=!0,Buffer.isBuffer(t))return t;let s;return t instanceof ArrayBuffer?s=new i(t):ArrayBuffer.isView(t)?s=new i(t.buffer,t.byteOffset,t.byteLength):(s=Buffer.from(t),e.readOnly=!1),s},unmask:n},!process.env.WS_NO_BUFFER_UTIL)try{const t=s(Object(function(){var e=new Error("Cannot find module 'bufferutil'");throw e.code="MODULE_NOT_FOUND",e}()));e.exports.mask=function(e,s,r,i,n){n<48?o(e,s,r,i,n):t.mask(e,s,r,i,n)},e.exports.unmask=function(e,s){e.length<32?n(e,s):t.unmask(e,s)}}catch(e){}},872:e=>{"use strict";e.exports={BINARY_TYPES:["nodebuffer","arraybuffer","fragments"],EMPTY_BUFFER:Buffer.alloc(0),GUID:"258EAFA5-E914-47DA-95CA-C5AB0DC85B11",kForOnEventAttribute:Symbol("kIsForOnEventAttribute"),kListener:Symbol("kListener"),kStatusCode:Symbol("status-code"),kWebSocket:Symbol("websocket"),NOOP:()=>{}}},62:(e,t,s)=>{"use strict";const{kForOnEventAttribute:r,kListener:i}=s(872),o=Symbol("kCode"),n=Symbol("kData"),a=Symbol("kError"),h=Symbol("kMessage"),c=Symbol("kReason"),l=Symbol("kTarget"),d=Symbol("kType"),f=Symbol("kWasClean");class _{constructor(e){this[l]=null,this[d]=e}get target(){return this[l]}get type(){return this[d]}}Object.defineProperty(_.prototype,"target",{enumerable:!0}),Object.defineProperty(_.prototype,"type",{enumerable:!0});class u extends _{constructor(e,t={}){super(e),this[o]=void 0===t.code?0:t.code,this[c]=void 0===t.reason?"":t.reason,this[f]=void 0!==t.wasClean&&t.wasClean}get code(){return this[o]}get reason(){return this[c]}get wasClean(){return this[f]}}Object.defineProperty(u.prototype,"code",{enumerable:!0}),Object.defineProperty(u.prototype,"reason",{enumerable:!0}),Object.defineProperty(u.prototype,"wasClean",{enumerable:!0});class p extends _{constructor(e,t={}){super(e),this[a]=void 0===t.error?null:t.error,this[h]=void 0===t.message?"":t.message}get error(){return this[a]}get message(){return this[h]}}Object.defineProperty(p.prototype,"error",{enumerable:!0}),Object.defineProperty(p.prototype,"message",{enumerable:!0});class m extends _{constructor(e,t={}){super(e),this[n]=void 0===t.data?null:t.data}get data(){return this[n]}}Object.defineProperty(m.prototype,"data",{enumerable:!0});const y={addEventListener(e,t,s={}){for(const o of this.listeners(e))if(!s[r]&&o[i]===t&&!o[r])return;let o;if("message"===e)o=function(e,s){const r=new m("message",{data:s?e:e.toString()});r[l]=this,g(t,this,r)};else if("close"===e)o=function(e,s){const r=new u("close",{code:e,reason:s.toString(),wasClean:this._closeFrameReceived&&this._closeFrameSent});r[l]=this,g(t,this,r)};else if("error"===e)o=function(e){const s=new p("error",{error:e,message:e.message});s[l]=this,g(t,this,s)};else{if("open"!==e)return;o=function(){const e=new _("open");e[l]=this,g(t,this,e)}}o[r]=!!s[r],o[i]=t,s.once?this.once(e,o):this.on(e,o)},removeEventListener(e,t){for(const s of this.listeners(e))if(s[i]===t&&!s[r]){this.removeListener(e,s);break}}};function g(e,t,s){"object"==typeof e&&e.handleEvent?e.handleEvent.call(e,s):e.call(t,s)}e.exports={CloseEvent:u,ErrorEvent:p,Event:_,EventTarget:y,MessageEvent:m}},503:(e,t,s)=>{"use strict";const{tokenChars:r}=s(746);function i(e,t,s){void 0===e[t]?e[t]=[s]:e[t].push(s)}e.exports={format:function(e){return Object.keys(e).map((t=>{let s=e[t];return Array.isArray(s)||(s=[s]),s.map((e=>[t].concat(Object.keys(e).map((t=>{let s=e[t];return Array.isArray(s)||(s=[s]),s.map((e=>!0===e?t:`${t}=${e}`)).join("; ")}))).join("; "))).join(", ")})).join(", ")},parse:function(e){const t=Object.create(null);let s,o,n=Object.create(null),a=!1,h=!1,c=!1,l=-1,d=-1,f=-1,_=0;for(;_<e.length;_++)if(d=e.charCodeAt(_),void 0===s)if(-1===f&&1===r[d])-1===l&&(l=_);else if(0===_||32!==d&&9!==d){if(59!==d&&44!==d)throw new SyntaxError(`Unexpected character at index ${_}`);{if(-1===l)throw new SyntaxError(`Unexpected character at index ${_}`);-1===f&&(f=_);const r=e.slice(l,f);44===d?(i(t,r,n),n=Object.create(null)):s=r,l=f=-1}}else-1===f&&-1!==l&&(f=_);else if(void 0===o)if(-1===f&&1===r[d])-1===l&&(l=_);else if(32===d||9===d)-1===f&&-1!==l&&(f=_);else if(59===d||44===d){if(-1===l)throw new SyntaxError(`Unexpected character at index ${_}`);-1===f&&(f=_),i(n,e.slice(l,f),!0),44===d&&(i(t,s,n),n=Object.create(null),s=void 0),l=f=-1}else{if(61!==d||-1===l||-1!==f)throw new SyntaxError(`Unexpected character at index ${_}`);o=e.slice(l,_),l=f=-1}else if(h){if(1!==r[d])throw new SyntaxError(`Unexpected character at index ${_}`);-1===l?l=_:a||(a=!0),h=!1}else if(c)if(1===r[d])-1===l&&(l=_);else if(34===d&&-1!==l)c=!1,f=_;else{if(92!==d)throw new SyntaxError(`Unexpected character at index ${_}`);h=!0}else if(34===d&&61===e.charCodeAt(_-1))c=!0;else if(-1===f&&1===r[d])-1===l&&(l=_);else if(-1===l||32!==d&&9!==d){if(59!==d&&44!==d)throw new SyntaxError(`Unexpected character at index ${_}`);{if(-1===l)throw new SyntaxError(`Unexpected character at index ${_}`);-1===f&&(f=_);let r=e.slice(l,f);a&&(r=r.replace(/\\/g,""),a=!1),i(n,o,r),44===d&&(i(t,s,n),n=Object.create(null),s=void 0),o=void 0,l=f=-1}}else-1===f&&(f=_);if(-1===l||c||32===d||9===d)throw new SyntaxError("Unexpected end of input");-1===f&&(f=_);const u=e.slice(l,f);return void 0===s?i(t,u,n):(void 0===o?i(n,u,!0):i(n,o,a?u.replace(/\\/g,""):u),i(t,s,n)),t}}},305:e=>{"use strict";const t=Symbol("kDone"),s=Symbol("kRun");e.exports=class{constructor(e){this[t]=()=>{this.pending--,this[s]()},this.concurrency=e||1/0,this.jobs=[],this.pending=0}add(e){this.jobs.push(e),this[s]()}[s](){if(this.pending!==this.concurrency&&this.jobs.length){const e=this.jobs.shift();this.pending++,e(this[t])}}}},196:(e,t,s)=>{"use strict";const r=s(796),i=s(977),o=s(305),{kStatusCode:n}=s(872),a=Buffer[Symbol.species],h=Buffer.from([0,0,255,255]),c=Symbol("permessage-deflate"),l=Symbol("total-length"),d=Symbol("callback"),f=Symbol("buffers"),_=Symbol("error");let u;function p(e){this[f].push(e),this[l]+=e.length}function m(e){this[l]+=e.length,this[c]._maxPayload<1||this[l]<=this[c]._maxPayload?this[f].push(e):(this[_]=new RangeError("Max payload size exceeded"),this[_].code="WS_ERR_UNSUPPORTED_MESSAGE_LENGTH",this[_][n]=1009,this.removeListener("data",m),this.reset())}function y(e){this[c]._inflate=null,e[n]=1007,this[d](e)}e.exports=class{constructor(e,t,s){if(this._maxPayload=0|s,this._options=e||{},this._threshold=void 0!==this._options.threshold?this._options.threshold:1024,this._isServer=!!t,this._deflate=null,this._inflate=null,this.params=null,!u){const e=void 0!==this._options.concurrencyLimit?this._options.concurrencyLimit:10;u=new o(e)}}static get extensionName(){return"permessage-deflate"}offer(){const 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:null==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(),this._inflate=null),this._deflate){const e=this._deflate[d];this._deflate.close(),this._deflate=null,e&&e(new Error("The deflate stream was closed while data was being processed"))}}acceptAsServer(e){const t=this._options,s=e.find((e=>!(!1===t.serverNoContextTakeover&&e.server_no_context_takeover||e.server_max_window_bits&&(!1===t.serverMaxWindowBits||"number"==typeof t.serverMaxWindowBits&&t.serverMaxWindowBits>e.server_max_window_bits)||"number"==typeof t.clientMaxWindowBits&&!e.client_max_window_bits)));if(!s)throw new Error("None of the extension offers can be accepted");return t.serverNoContextTakeover&&(s.server_no_context_takeover=!0),t.clientNoContextTakeover&&(s.client_no_context_takeover=!0),"number"==typeof t.serverMaxWindowBits&&(s.server_max_window_bits=t.serverMaxWindowBits),"number"==typeof t.clientMaxWindowBits?s.client_max_window_bits=t.clientMaxWindowBits:!0!==s.client_max_window_bits&&!1!==t.clientMaxWindowBits||delete s.client_max_window_bits,s}acceptAsClient(e){const t=e[0];if(!1===this._options.clientNoContextTakeover&&t.client_no_context_takeover)throw new Error('Unexpected parameter "client_no_context_takeover"');if(t.client_max_window_bits){if(!1===this._options.clientMaxWindowBits||"number"==typeof this._options.clientMaxWindowBits&&t.client_max_window_bits>this._options.clientMaxWindowBits)throw new Error('Unexpected or invalid parameter "client_max_window_bits"')}else"number"==typeof this._options.clientMaxWindowBits&&(t.client_max_window_bits=this._options.clientMaxWindowBits);return t}normalizeParams(e){return e.forEach((e=>{Object.keys(e).forEach((t=>{let s=e[t];if(s.length>1)throw new Error(`Parameter "${t}" must have only a single value`);if(s=s[0],"client_max_window_bits"===t){if(!0!==s){const e=+s;if(!Number.isInteger(e)||e<8||e>15)throw new TypeError(`Invalid value for parameter "${t}": ${s}`);s=e}else if(!this._isServer)throw new TypeError(`Invalid value for parameter "${t}": ${s}`)}else if("server_max_window_bits"===t){const e=+s;if(!Number.isInteger(e)||e<8||e>15)throw new TypeError(`Invalid value for parameter "${t}": ${s}`);s=e}else{if("client_no_context_takeover"!==t&&"server_no_context_takeover"!==t)throw new Error(`Unknown parameter "${t}"`);if(!0!==s)throw new TypeError(`Invalid value for parameter "${t}": ${s}`)}e[t]=s}))})),e}decompress(e,t,s){u.add((r=>{this._decompress(e,t,((e,t)=>{r(),s(e,t)}))}))}compress(e,t,s){u.add((r=>{this._compress(e,t,((e,t)=>{r(),s(e,t)}))}))}_decompress(e,t,s){const o=this._isServer?"client":"server";if(!this._inflate){const e=`${o}_max_window_bits`,t="number"!=typeof this.params[e]?r.Z_DEFAULT_WINDOWBITS:this.params[e];this._inflate=r.createInflateRaw({...this._options.zlibInflateOptions,windowBits:t}),this._inflate[c]=this,this._inflate[l]=0,this._inflate[f]=[],this._inflate.on("error",y),this._inflate.on("data",m)}this._inflate[d]=s,this._inflate.write(e),t&&this._inflate.write(h),this._inflate.flush((()=>{const e=this._inflate[_];if(e)return this._inflate.close(),this._inflate=null,void s(e);const r=i.concat(this._inflate[f],this._inflate[l]);this._inflate._readableState.endEmitted?(this._inflate.close(),this._inflate=null):(this._inflate[l]=0,this._inflate[f]=[],t&&this.params[`${o}_no_context_takeover`]&&this._inflate.reset()),s(null,r)}))}_compress(e,t,s){const o=this._isServer?"server":"client";if(!this._deflate){const e=`${o}_max_window_bits`,t="number"!=typeof this.params[e]?r.Z_DEFAULT_WINDOWBITS:this.params[e];this._deflate=r.createDeflateRaw({...this._options.zlibDeflateOptions,windowBits:t}),this._deflate[l]=0,this._deflate[f]=[],this._deflate.on("data",p)}this._deflate[d]=s,this._deflate.write(e),this._deflate.flush(r.Z_SYNC_FLUSH,(()=>{if(!this._deflate)return;let e=i.concat(this._deflate[f],this._deflate[l]);t&&(e=new a(e.buffer,e.byteOffset,e.length-4)),this._deflate[d]=null,this._deflate[l]=0,this._deflate[f]=[],t&&this.params[`${o}_no_context_takeover`]&&this._deflate.reset(),s(null,e)}))}}},957:(e,t,s)=>{"use strict";const{Writable:r}=s(781),i=s(196),{BINARY_TYPES:o,EMPTY_BUFFER:n,kStatusCode:a,kWebSocket:h}=s(872),{concat:c,toArrayBuffer:l,unmask:d}=s(977),{isValidStatusCode:f,isValidUTF8:_}=s(746),u=Buffer[Symbol.species];function p(e,t,s,r,i){const o=new e(s?`Invalid WebSocket frame: ${t}`:t);return Error.captureStackTrace(o,p),o.code=i,o[a]=r,o}e.exports=class extends r{constructor(e={}){super(),this._binaryType=e.binaryType||o[0],this._extensions=e.extensions||{},this._isServer=!!e.isServer,this._maxPayload=0|e.maxPayload,this._skipUTF8Validation=!!e.skipUTF8Validation,this[h]=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._state=0,this._loop=!1}_write(e,t,s){if(8===this._opcode&&0==this._state)return s();this._bufferedBytes+=e.length,this._buffers.push(e),this.startLoop(s)}consume(e){if(this._bufferedBytes-=e,e===this._buffers[0].length)return this._buffers.shift();if(e<this._buffers[0].length){const t=this._buffers[0];return this._buffers[0]=new u(t.buffer,t.byteOffset+e,t.length-e),new u(t.buffer,t.byteOffset,e)}const t=Buffer.allocUnsafe(e);do{const s=this._buffers[0],r=t.length-e;e>=s.length?t.set(this._buffers.shift(),r):(t.set(new Uint8Array(s.buffer,s.byteOffset,e),r),this._buffers[0]=new u(s.buffer,s.byteOffset+e,s.length-e)),e-=s.length}while(e>0);return t}startLoop(e){let t;this._loop=!0;do{switch(this._state){case 0:t=this.getInfo();break;case 1:t=this.getPayloadLength16();break;case 2:t=this.getPayloadLength64();break;case 3:this.getMask();break;case 4:t=this.getData(e);break;default:return void(this._loop=!1)}}while(this._loop);e(t)}getInfo(){if(this._bufferedBytes<2)return void(this._loop=!1);const e=this.consume(2);if(0!=(48&e[0]))return this._loop=!1,p(RangeError,"RSV2 and RSV3 must be clear",!0,1002,"WS_ERR_UNEXPECTED_RSV_2_3");const t=64==(64&e[0]);if(t&&!this._extensions[i.extensionName])return this._loop=!1,p(RangeError,"RSV1 must be clear",!0,1002,"WS_ERR_UNEXPECTED_RSV_1");if(this._fin=128==(128&e[0]),this._opcode=15&e[0],this._payloadLength=127&e[1],0===this._opcode){if(t)return this._loop=!1,p(RangeError,"RSV1 must be clear",!0,1002,"WS_ERR_UNEXPECTED_RSV_1");if(!this._fragmented)return this._loop=!1,p(RangeError,"invalid opcode 0",!0,1002,"WS_ERR_INVALID_OPCODE");this._opcode=this._fragmented}else if(1===this._opcode||2===this._opcode){if(this._fragmented)return this._loop=!1,p(RangeError,`invalid opcode ${this._opcode}`,!0,1002,"WS_ERR_INVALID_OPCODE");this._compressed=t}else{if(!(this._opcode>7&&this._opcode<11))return this._loop=!1,p(RangeError,`invalid opcode ${this._opcode}`,!0,1002,"WS_ERR_INVALID_OPCODE");if(!this._fin)return this._loop=!1,p(RangeError,"FIN must be set",!0,1002,"WS_ERR_EXPECTED_FIN");if(t)return this._loop=!1,p(RangeError,"RSV1 must be clear",!0,1002,"WS_ERR_UNEXPECTED_RSV_1");if(this._payloadLength>125||8===this._opcode&&1===this._payloadLength)return this._loop=!1,p(RangeError,`invalid payload length ${this._payloadLength}`,!0,1002,"WS_ERR_INVALID_CONTROL_PAYLOAD_LENGTH")}if(this._fin||this._fragmented||(this._fragmented=this._opcode),this._masked=128==(128&e[1]),this._isServer){if(!this._masked)return this._loop=!1,p(RangeError,"MASK must be set",!0,1002,"WS_ERR_EXPECTED_MASK")}else if(this._masked)return this._loop=!1,p(RangeError,"MASK must be clear",!0,1002,"WS_ERR_UNEXPECTED_MASK");if(126===this._payloadLength)this._state=1;else{if(127!==this._payloadLength)return this.haveLength();this._state=2}}getPayloadLength16(){if(!(this._bufferedBytes<2))return this._payloadLength=this.consume(2).readUInt16BE(0),this.haveLength();this._loop=!1}getPayloadLength64(){if(this._bufferedBytes<8)return void(this._loop=!1);const e=this.consume(8),t=e.readUInt32BE(0);return t>Math.pow(2,21)-1?(this._loop=!1,p(RangeError,"Unsupported WebSocket frame: payload length > 2^53 - 1",!1,1009,"WS_ERR_UNSUPPORTED_DATA_PAYLOAD_LENGTH")):(this._payloadLength=t*Math.pow(2,32)+e.readUInt32BE(4),this.haveLength())}haveLength(){if(this._payloadLength&&this._opcode<8&&(this._totalPayloadLength+=this._payloadLength,this._totalPayloadLength>this._maxPayload&&this._maxPayload>0))return this._loop=!1,p(RangeError,"Max payload size exceeded",!1,1009,"WS_ERR_UNSUPPORTED_MESSAGE_LENGTH");this._masked?this._state=3:this._state=4}getMask(){this._bufferedBytes<4?this._loop=!1:(this._mask=this.consume(4),this._state=4)}getData(e){let t=n;if(this._payloadLength){if(this._bufferedBytes<this._payloadLength)return void(this._loop=!1);t=this.consume(this._payloadLength),this._masked&&0!=(this._mask[0]|this._mask[1]|this._mask[2]|this._mask[3])&&d(t,this._mask)}return this._opcode>7?this.controlMessage(t):this._compressed?(this._state=5,void this.decompress(t,e)):(t.length&&(this._messageLength=this._totalPayloadLength,this._fragments.push(t)),this.dataMessage())}decompress(e,t){this._extensions[i.extensionName].decompress(e,this._fin,((e,s)=>{if(e)return t(e);if(s.length){if(this._messageLength+=s.length,this._messageLength>this._maxPayload&&this._maxPayload>0)return t(p(RangeError,"Max payload size exceeded",!1,1009,"WS_ERR_UNSUPPORTED_MESSAGE_LENGTH"));this._fragments.push(s)}const r=this.dataMessage();if(r)return t(r);this.startLoop(t)}))}dataMessage(){if(this._fin){const e=this._messageLength,t=this._fragments;if(this._totalPayloadLength=0,this._messageLength=0,this._fragmented=0,this._fragments=[],2===this._opcode){let s;s="nodebuffer"===this._binaryType?c(t,e):"arraybuffer"===this._binaryType?l(c(t,e)):t,this.emit("message",s,!0)}else{const s=c(t,e);if(!this._skipUTF8Validation&&!_(s))return this._loop=!1,p(Error,"invalid UTF-8 sequence",!0,1007,"WS_ERR_INVALID_UTF8");this.emit("message",s,!1)}}this._state=0}controlMessage(e){if(8===this._opcode)if(this._loop=!1,0===e.length)this.emit("conclude",1005,n),this.end();else{const t=e.readUInt16BE(0);if(!f(t))return p(RangeError,`invalid status code ${t}`,!0,1002,"WS_ERR_INVALID_CLOSE_CODE");const s=new u(e.buffer,e.byteOffset+2,e.length-2);if(!this._skipUTF8Validation&&!_(s))return p(Error,"invalid UTF-8 sequence",!0,1007,"WS_ERR_INVALID_UTF8");this.emit("conclude",t,s),this.end()}else 9===this._opcode?this.emit("ping",e):this.emit("pong",e);this._state=0}}},330:(e,t,s)=>{"use strict";s(808),s(404);const{randomFillSync:r}=s(113),i=s(196),{EMPTY_BUFFER:o}=s(872),{isValidStatusCode:n}=s(746),{mask:a,toBuffer:h}=s(977),c=Symbol("kByteLength"),l=Buffer.alloc(4);class d{constructor(e,t,s){this._extensions=t||{},s&&(this._generateMask=s,this._maskBuffer=Buffer.alloc(4)),this._socket=e,this._firstFragment=!0,this._compress=!1,this._bufferedBytes=0,this._deflating=!1,this._queue=[]}static frame(e,t){let s,i,o=!1,n=2,h=!1;t.mask&&(s=t.maskBuffer||l,t.generateMask?t.generateMask(s):r(s,0,4),h=0==(s[0]|s[1]|s[2]|s[3]),n=6),"string"==typeof e?i=t.mask&&!h||void 0===t[c]?(e=Buffer.from(e)).length:t[c]:(i=e.length,o=t.mask&&t.readOnly&&!h);let d=i;i>=65536?(n+=8,d=127):i>125&&(n+=2,d=126);const f=Buffer.allocUnsafe(o?i+n:n);return f[0]=t.fin?128|t.opcode:t.opcode,t.rsv1&&(f[0]|=64),f[1]=d,126===d?f.writeUInt16BE(i,2):127===d&&(f[2]=f[3]=0,f.writeUIntBE(i,4,6)),t.mask?(f[1]|=128,f[n-4]=s[0],f[n-3]=s[1],f[n-2]=s[2],f[n-1]=s[3],h?[f,e]:o?(a(e,s,f,n,i),[f]):(a(e,s,e,0,i),[f,e])):[f,e]}close(e,t,s,r){let i;if(void 0===e)i=o;else{if("number"!=typeof e||!n(e))throw new TypeError("First argument must be a valid error code number");if(void 0!==t&&t.length){const s=Buffer.byteLength(t);if(s>123)throw new RangeError("The message must not be greater than 123 bytes");i=Buffer.allocUnsafe(2+s),i.writeUInt16BE(e,0),"string"==typeof t?i.write(t,2):i.set(t,2)}else i=Buffer.allocUnsafe(2),i.writeUInt16BE(e,0)}const a={[c]:i.length,fin:!0,generateMask:this._generateMask,mask:s,maskBuffer:this._maskBuffer,opcode:8,readOnly:!1,rsv1:!1};this._deflating?this.enqueue([this.dispatch,i,!1,a,r]):this.sendFrame(d.frame(i,a),r)}ping(e,t,s){let r,i;if("string"==typeof e?(r=Buffer.byteLength(e),i=!1):(r=(e=h(e)).length,i=h.readOnly),r>125)throw new RangeError("The data size must not be greater than 125 bytes");const o={[c]:r,fin:!0,generateMask:this._generateMask,mask:t,maskBuffer:this._maskBuffer,opcode:9,readOnly:i,rsv1:!1};this._deflating?this.enqueue([this.dispatch,e,!1,o,s]):this.sendFrame(d.frame(e,o),s)}pong(e,t,s){let r,i;if("string"==typeof e?(r=Buffer.byteLength(e),i=!1):(r=(e=h(e)).length,i=h.readOnly),r>125)throw new RangeError("The data size must not be greater than 125 bytes");const o={[c]:r,fin:!0,generateMask:this._generateMask,mask:t,maskBuffer:this._maskBuffer,opcode:10,readOnly:i,rsv1:!1};this._deflating?this.enqueue([this.dispatch,e,!1,o,s]):this.sendFrame(d.frame(e,o),s)}send(e,t,s){const r=this._extensions[i.extensionName];let o,n,a=t.binary?2:1,l=t.compress;if("string"==typeof e?(o=Buffer.byteLength(e),n=!1):(o=(e=h(e)).length,n=h.readOnly),this._firstFragment?(this._firstFragment=!1,l&&r&&r.params[r._isServer?"server_no_context_takeover":"client_no_context_takeover"]&&(l=o>=r._threshold),this._compress=l):(l=!1,a=0),t.fin&&(this._firstFragment=!0),r){const r={[c]:o,fin:t.fin,generateMask:this._generateMask,mask:t.mask,maskBuffer:this._maskBuffer,opcode:a,readOnly:n,rsv1:l};this._deflating?this.enqueue([this.dispatch,e,this._compress,r,s]):this.dispatch(e,this._compress,r,s)}else this.sendFrame(d.frame(e,{[c]:o,fin:t.fin,generateMask:this._generateMask,mask:t.mask,maskBuffer:this._maskBuffer,opcode:a,readOnly:n,rsv1:!1}),s)}dispatch(e,t,s,r){if(!t)return void this.sendFrame(d.frame(e,s),r);const o=this._extensions[i.extensionName];this._bufferedBytes+=s[c],this._deflating=!0,o.compress(e,s.fin,((e,t)=>{if(this._socket.destroyed){const e=new Error("The socket was closed while data was being compressed");"function"==typeof r&&r(e);for(let t=0;t<this._queue.length;t++){const s=this._queue[t],r=s[s.length-1];"function"==typeof r&&r(e)}}else this._bufferedBytes-=s[c],this._deflating=!1,s.readOnly=!1,this.sendFrame(d.frame(t,s),r),this.dequeue()}))}dequeue(){for(;!this._deflating&&this._queue.length;){const e=this._queue.shift();this._bufferedBytes-=e[3][c],Reflect.apply(e[0],this,e.slice(1))}}enqueue(e){this._bufferedBytes+=e[3][c],this._queue.push(e)}sendFrame(e,t){2===e.length?(this._socket.cork(),this._socket.write(e[0]),this._socket.write(e[1],t),this._socket.uncork()):this._socket.write(e[0],t)}}e.exports=d},30:(e,t,s)=>{"use strict";const{Duplex:r}=s(781);function i(e){e.emit("close")}function o(){!this.destroyed&&this._writableState.finished&&this.destroy()}function n(e){this.removeListener("error",n),this.destroy(),0===this.listenerCount("error")&&this.emit("error",e)}e.exports=function(e,t){let s=!0;const a=new r({...t,autoDestroy:!1,emitClose:!1,objectMode:!1,writableObjectMode:!1});return e.on("message",(function(t,s){const r=!s&&a._readableState.objectMode?t.toString():t;a.push(r)||e.pause()})),e.once("error",(function(e){a.destroyed||(s=!1,a.destroy(e))})),e.once("close",(function(){a.destroyed||a.push(null)})),a._destroy=function(t,r){if(e.readyState===e.CLOSED)return r(t),void process.nextTick(i,a);let o=!1;e.once("error",(function(e){o=!0,r(e)})),e.once("close",(function(){o||r(t),process.nextTick(i,a)})),s&&e.terminate()},a._final=function(t){e.readyState!==e.CONNECTING?null!==e._socket&&(e._socket._writableState.finished?(t(),a._readableState.endEmitted&&a.destroy()):(e._socket.once("finish",(function(){t()})),e.close())):e.once("open",(function(){a._final(t)}))},a._read=function(){e.isPaused&&e.resume()},a._write=function(t,s,r){e.readyState!==e.CONNECTING?e.send(t,r):e.once("open",(function(){a._write(t,s,r)}))},a.on("end",o),a.on("error",n),a}},640:(e,t,s)=>{"use strict";const{tokenChars:r}=s(746);e.exports={parse:function(e){const t=new Set;let s=-1,i=-1,o=0;for(;o<e.length;o++){const n=e.charCodeAt(o);if(-1===i&&1===r[n])-1===s&&(s=o);else if(0===o||32!==n&&9!==n){if(44!==n)throw new SyntaxError(`Unexpected character at index ${o}`);{if(-1===s)throw new SyntaxError(`Unexpected character at index ${o}`);-1===i&&(i=o);const r=e.slice(s,i);if(t.has(r))throw new SyntaxError(`The "${r}" subprotocol is duplicated`);t.add(r),s=i=-1}}else-1===i&&-1!==s&&(i=o)}if(-1===s||-1!==i)throw new SyntaxError("Unexpected end of input");const n=e.slice(s,o);if(t.has(n))throw new SyntaxError(`The "${n}" subprotocol is duplicated`);return t.add(n),t}}},746:(e,t,s)=>{"use strict";const{isUtf8:r}=s(300);function i(e){const t=e.length;let s=0;for(;s<t;)if(0==(128&e[s]))s++;else if(192==(224&e[s])){if(s+1===t||128!=(192&e[s+1])||192==(254&e[s]))return!1;s+=2}else if(224==(240&e[s])){if(s+2>=t||128!=(192&e[s+1])||128!=(192&e[s+2])||224===e[s]&&128==(224&e[s+1])||237===e[s]&&160==(224&e[s+1]))return!1;s+=3}else{if(240!=(248&e[s]))return!1;if(s+3>=t||128!=(192&e[s+1])||128!=(192&e[s+2])||128!=(192&e[s+3])||240===e[s]&&128==(240&e[s+1])||244===e[s]&&e[s+1]>143||e[s]>244)return!1;s+=4}return!0}if(e.exports={isValidStatusCode:function(e){return e>=1e3&&e<=1014&&1004!==e&&1005!==e&&1006!==e||e>=3e3&&e<=4999},isValidUTF8:i,tokenChars:[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]},r)e.exports.isValidUTF8=function(e){return e.length<24?i(e):r(e)};else if(!process.env.WS_NO_UTF_8_VALIDATE)try{const t=s(Object(function(){var e=new Error("Cannot find module 'utf-8-validate'");throw e.code="MODULE_NOT_FOUND",e}()));e.exports.isValidUTF8=function(e){return e.length<32?i(e):t(e)}}catch(e){}},284:(e,t,s)=>{"use strict";const r=s(361),i=s(685),{createHash:o}=(s(687),s(808),s(404),s(113)),n=s(503),a=s(196),h=s(640),c=s(762),{GUID:l,kWebSocket:d}=s(872),f=/^[+/0-9A-Za-z]{22}==$/;function _(e){e._state=2,e.emit("close")}function u(){this.destroy()}function p(e,t,s,r){s=s||i.STATUS_CODES[t],r={Connection:"close","Content-Type":"text/html","Content-Length":Buffer.byteLength(s),...r},e.once("finish",e.destroy),e.end(`HTTP/1.1 ${t} ${i.STATUS_CODES[t]}\r\n`+Object.keys(r).map((e=>`${e}: ${r[e]}`)).join("\r\n")+"\r\n\r\n"+s)}function m(e,t,s,r,i){if(e.listenerCount("wsClientError")){const r=new Error(i);Error.captureStackTrace(r,m),e.emit("wsClientError",r,s,t)}else p(s,r,i)}e.exports=class extends r{constructor(e,t){if(super(),null==(e={maxPayload:104857600,skipUTF8Validation:!1,perMessageDeflate:!1,handleProtocols:null,clientTracking:!0,verifyClient:null,noServer:!1,backlog:null,server:null,host:null,path:null,port:null,WebSocket:c,...e}).port&&!e.server&&!e.noServer||null!=e.port&&(e.server||e.noServer)||e.server&&e.noServer)throw new TypeError('One and only one of the "port", "server", or "noServer" options must be specified');if(null!=e.port?(this._server=i.createServer(((e,t)=>{const s=i.STATUS_CODES[426];t.writeHead(426,{"Content-Length":s.length,"Content-Type":"text/plain"}),t.end(s)})),this._server.listen(e.port,e.host,e.backlog,t)):e.server&&(this._server=e.server),this._server){const e=this.emit.bind(this,"connection");this._removeListeners=function(e,t){for(const s of Object.keys(t))e.on(s,t[s]);return function(){for(const s of Object.keys(t))e.removeListener(s,t[s])}}(this._server,{listening:this.emit.bind(this,"listening"),error:this.emit.bind(this,"error"),upgrade:(t,s,r)=>{this.handleUpgrade(t,s,r,e)}})}!0===e.perMessageDeflate&&(e.perMessageDeflate={}),e.clientTracking&&(this.clients=new Set,this._shouldEmitClose=!1),this.options=e,this._state=0}address(){if(this.options.noServer)throw new Error('The server is operating in "noServer" mode');return this._server?this._server.address():null}close(e){if(2===this._state)return e&&this.once("close",(()=>{e(new Error("The server is not running"))})),void process.nextTick(_,this);if(e&&this.once("close",e),1!==this._state)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(_,this);else{const e=this._server;this._removeListeners(),this._removeListeners=this._server=null,e.close((()=>{_(this)}))}}shouldHandle(e){if(this.options.path){const t=e.url.indexOf("?");if((-1!==t?e.url.slice(0,t):e.url)!==this.options.path)return!1}return!0}handleUpgrade(e,t,s,r){t.on("error",u);const i=e.headers["sec-websocket-key"],o=+e.headers["sec-websocket-version"];if("GET"!==e.method){return void m(this,e,t,405,"Invalid HTTP method")}if("websocket"!==e.headers.upgrade.toLowerCase()){return void m(this,e,t,400,"Invalid Upgrade header")}if(!i||!f.test(i)){return void m(this,e,t,400,"Missing or invalid Sec-WebSocket-Key header")}if(8!==o&&13!==o){return void m(this,e,t,400,"Missing or invalid Sec-WebSocket-Version header")}if(!this.shouldHandle(e))return void p(t,400);const c=e.headers["sec-websocket-protocol"];let l=new Set;if(void 0!==c)try{l=h.parse(c)}catch(s){return void m(this,e,t,400,"Invalid Sec-WebSocket-Protocol header")}const d=e.headers["sec-websocket-extensions"],_={};if(this.options.perMessageDeflate&&void 0!==d){const s=new a(this.options.perMessageDeflate,!0,this.options.maxPayload);try{const e=n.parse(d);e[a.extensionName]&&(s.accept(e[a.extensionName]),_[a.extensionName]=s)}catch(s){return void m(this,e,t,400,"Invalid or unacceptable Sec-WebSocket-Extensions header")}}if(this.options.verifyClient){const n={origin:e.headers[""+(8===o?"sec-websocket-origin":"origin")],secure:!(!e.socket.authorized&&!e.socket.encrypted),req:e};if(2===this.options.verifyClient.length)return void this.options.verifyClient(n,((o,n,a,h)=>{if(!o)return p(t,n||401,a,h);this.completeUpgrade(_,i,l,e,t,s,r)}));if(!this.options.verifyClient(n))return p(t,401)}this.completeUpgrade(_,i,l,e,t,s,r)}completeUpgrade(e,t,s,r,i,h,c){if(!i.readable||!i.writable)return i.destroy();if(i[d])throw new Error("server.handleUpgrade() was called more than once with the same socket, possibly due to a misconfiguration");if(this._state>0)return p(i,503);const f=["HTTP/1.1 101 Switching Protocols","Upgrade: websocket","Connection: Upgrade",`Sec-WebSocket-Accept: ${o("sha1").update(t+l).digest("base64")}`],m=new this.options.WebSocket(null);if(s.size){const e=this.options.handleProtocols?this.options.handleProtocols(s,r):s.values().next().value;e&&(f.push(`Sec-WebSocket-Protocol: ${e}`),m._protocol=e)}if(e[a.extensionName]){const t=e[a.extensionName].params,s=n.format({[a.extensionName]:[t]});f.push(`Sec-WebSocket-Extensions: ${s}`),m._extensions=e}this.emit("headers",f,r),i.write(f.concat("\r\n").join("\r\n")),i.removeListener("error",u),m.setSocket(i,h,{maxPayload:this.options.maxPayload,skipUTF8Validation:this.options.skipUTF8Validation}),this.clients&&(this.clients.add(m),m.on("close",(()=>{this.clients.delete(m),this._shouldEmitClose&&!this.clients.size&&process.nextTick(_,this)}))),c(m,r)}}},762:(e,t,s)=>{"use strict";const r=s(361),i=s(687),o=s(685),n=s(808),a=s(404),{randomBytes:h,createHash:c}=s(113),{Readable:l}=s(781),{URL:d}=s(310),f=s(196),_=s(957),u=s(330),{BINARY_TYPES:p,EMPTY_BUFFER:m,GUID:y,kForOnEventAttribute:g,kListener:b,kStatusCode:v,kWebSocket:S,NOOP:w}=s(872),{EventTarget:{addEventListener:k,removeEventListener:E}}=s(62),{format:x,parse:O}=s(503),{toBuffer:T}=s(977),C=Symbol("kAborted"),N=[8,13],L=["CONNECTING","OPEN","CLOSING","CLOSED"],P=/^[!#$%&'*+\-.0-9A-Z^_`|a-z~]+$/;class R extends r{constructor(e,t,s){super(),this._binaryType=p[0],this._closeCode=1006,this._closeFrameReceived=!1,this._closeFrameSent=!1,this._closeMessage=m,this._closeTimer=null,this._extensions={},this._paused=!1,this._protocol="",this._readyState=R.CONNECTING,this._receiver=null,this._sender=null,this._socket=null,null!==e?(this._bufferedAmount=0,this._isServer=!1,this._redirects=0,void 0===t?t=[]:Array.isArray(t)||("object"==typeof t&&null!==t?(s=t,t=[]):t=[t]),U(this,e,t,s)):this._isServer=!0}get binaryType(){return this._binaryType}set binaryType(e){p.includes(e)&&(this._binaryType=e,this._receiver&&(this._receiver._binaryType=e))}get bufferedAmount(){return this._socket?this._socket._writableState.length+this._sender._bufferedBytes:this._bufferedAmount}get extensions(){return Object.keys(this._extensions).join()}get isPaused(){return this._paused}get onclose(){return null}get onerror(){return null}get onopen(){return null}get onmessage(){return null}get protocol(){return this._protocol}get readyState(){return this._readyState}get url(){return this._url}setSocket(e,t,s){const r=new _({binaryType:this.binaryType,extensions:this._extensions,isServer:this._isServer,maxPayload:s.maxPayload,skipUTF8Validation:s.skipUTF8Validation});this._sender=new u(e,this._extensions,s.generateMask),this._receiver=r,this._socket=e,r[S]=this,e[S]=this,r.on("conclude",A),r.on("drain",F),r.on("error",j),r.on("message",G),r.on("ping",V),r.on("pong",q),e.setTimeout(0),e.setNoDelay(),t.length>0&&e.unshift(t),e.on("close",H),e.on("data",Y),e.on("end",X),e.on("error",K),this._readyState=R.OPEN,this.emit("open")}emitClose(){if(!this._socket)return this._readyState=R.CLOSED,void this.emit("close",this._closeCode,this._closeMessage);this._extensions[f.extensionName]&&this._extensions[f.extensionName].cleanup(),this._receiver.removeAllListeners(),this._readyState=R.CLOSED,this.emit("close",this._closeCode,this._closeMessage)}close(e,t){if(this.readyState!==R.CLOSED)if(this.readyState!==R.CONNECTING)this.readyState!==R.CLOSING?(this._readyState=R.CLOSING,this._sender.close(e,t,!this._isServer,(e=>{e||(this._closeFrameSent=!0,(this._closeFrameReceived||this._receiver._writableState.errorEmitted)&&this._socket.end())})),this._closeTimer=setTimeout(this._socket.destroy.bind(this._socket),3e4)):this._closeFrameSent&&(this._closeFrameReceived||this._receiver._writableState.errorEmitted)&&this._socket.end();else{const e="WebSocket was closed before the connection was established";W(this,this._req,e)}}pause(){this.readyState!==R.CONNECTING&&this.readyState!==R.CLOSED&&(this._paused=!0,this._socket.pause())}ping(e,t,s){if(this.readyState===R.CONNECTING)throw new Error("WebSocket is not open: readyState 0 (CONNECTING)");"function"==typeof e?(s=e,e=t=void 0):"function"==typeof t&&(s=t,t=void 0),"number"==typeof e&&(e=e.toString()),this.readyState===R.OPEN?(void 0===t&&(t=!this._isServer),this._sender.ping(e||m,t,s)):D(this,e,s)}pong(e,t,s){if(this.readyState===R.CONNECTING)throw new Error("WebSocket is not open: readyState 0 (CONNECTING)");"function"==typeof e?(s=e,e=t=void 0):"function"==typeof t&&(s=t,t=void 0),"number"==typeof e&&(e=e.toString()),this.readyState===R.OPEN?(void 0===t&&(t=!this._isServer),this._sender.pong(e||m,t,s)):D(this,e,s)}resume(){this.readyState!==R.CONNECTING&&this.readyState!==R.CLOSED&&(this._paused=!1,this._receiver._writableState.needDrain||this._socket.resume())}send(e,t,s){if(this.readyState===R.CONNECTING)throw new Error("WebSocket is not open: readyState 0 (CONNECTING)");if("function"==typeof t&&(s=t,t={}),"number"==typeof e&&(e=e.toString()),this.readyState!==R.OPEN)return void D(this,e,s);const r={binary:"string"!=typeof e,mask:!this._isServer,compress:!0,fin:!0,...t};this._extensions[f.extensionName]||(r.compress=!1),this._sender.send(e||m,r,s)}terminate(){if(this.readyState!==R.CLOSED)if(this.readyState!==R.CONNECTING)this._socket&&(this._readyState=R.CLOSING,this._socket.destroy());else{const e="WebSocket was closed before the connection was established";W(this,this._req,e)}}}function U(e,t,s,r){const n={protocolVersion:N[1],maxPayload:104857600,skipUTF8Validation:!1,perMessageDeflate:!0,followRedirects:!1,maxRedirects:10,...r,createConnection:void 0,socketPath:void 0,hostname:void 0,protocol:void 0,timeout:void 0,method:"GET",host:void 0,path:void 0,port:void 0};if(!N.includes(n.protocolVersion))throw new RangeError(`Unsupported protocol version: ${n.protocolVersion} (supported versions: ${N.join(", ")})`);let a;if(t instanceof d)a=t,e._url=t.href;else{try{a=new d(t)}catch(e){throw new SyntaxError(`Invalid URL: ${t}`)}e._url=t}const l="wss:"===a.protocol,_="ws+unix:"===a.protocol;let u;if("ws:"===a.protocol||l||_?_&&!a.pathname?u="The URL's pathname is empty":a.hash&&(u="The URL contains a fragment identifier"):u='The URL\'s protocol must be one of "ws:", "wss:", or "ws+unix:"',u){const t=new SyntaxError(u);if(0===e._redirects)throw t;return void B(e,t)}const p=l?443:80,m=h(16).toString("base64"),g=l?i.request:o.request,b=new Set;let v,S;if(n.createConnection=l?M:I,n.defaultPort=n.defaultPort||p,n.port=a.port||p,n.host=a.hostname.startsWith("[")?a.hostname.slice(1,-1):a.hostname,n.headers={...n.headers,"Sec-WebSocket-Version":n.protocolVersion,"Sec-WebSocket-Key":m,Connection:"Upgrade",Upgrade:"websocket"},n.path=a.pathname+a.search,n.timeout=n.handshakeTimeout,n.perMessageDeflate&&(v=new f(!0!==n.perMessageDeflate?n.perMessageDeflate:{},!1,n.maxPayload),n.headers["Sec-WebSocket-Extensions"]=x({[f.extensionName]:v.offer()})),s.length){for(const e of s){if("string"!=typeof e||!P.test(e)||b.has(e))throw new SyntaxError("An invalid or duplicated subprotocol was specified");b.add(e)}n.headers["Sec-WebSocket-Protocol"]=s.join(",")}if(n.origin&&(n.protocolVersion<13?n.headers["Sec-WebSocket-Origin"]=n.origin:n.headers.Origin=n.origin),(a.username||a.password)&&(n.auth=`${a.username}:${a.password}`),_){const e=n.path.split(":");n.socketPath=e[0],n.path=e[1]}if(n.followRedirects){if(0===e._redirects){e._originalIpc=_,e._originalSecure=l,e._originalHostOrSocketPath=_?n.socketPath:a.host;const t=r&&r.headers;if(r={...r,headers:{}},t)for(const[e,s]of Object.entries(t))r.headers[e.toLowerCase()]=s}else if(0===e.listenerCount("redirect")){const t=_?!!e._originalIpc&&n.socketPath===e._originalHostOrSocketPath:!e._originalIpc&&a.host===e._originalHostOrSocketPath;(!t||e._originalSecure&&!l)&&(delete n.headers.authorization,delete n.headers.cookie,t||delete n.headers.host,n.auth=void 0)}n.auth&&!r.headers.authorization&&(r.headers.authorization="Basic "+Buffer.from(n.auth).toString("base64")),S=e._req=g(n),e._redirects&&e.emit("redirect",e.url,S)}else S=e._req=g(n);n.timeout&&S.on("timeout",(()=>{W(e,S,"Opening handshake has timed out")})),S.on("error",(t=>{null===S||S[C]||(S=e._req=null,B(e,t))})),S.on("response",(i=>{const o=i.headers.location,a=i.statusCode;if(o&&n.followRedirects&&a>=300&&a<400){if(++e._redirects>n.maxRedirects)return void W(e,S,"Maximum redirects exceeded");let i;S.abort();try{i=new d(o,t)}catch(t){const s=new SyntaxError(`Invalid URL: ${o}`);return void B(e,s)}U(e,i,s,r)}else e.emit("unexpected-response",S,i)||W(e,S,`Unexpected server response: ${i.statusCode}`)})),S.on("upgrade",((t,s,r)=>{if(e.emit("upgrade",t),e.readyState!==R.CONNECTING)return;if(S=e._req=null,"websocket"!==t.headers.upgrade.toLowerCase())return void W(e,s,"Invalid Upgrade header");const i=c("sha1").update(m+y).digest("base64");if(t.headers["sec-websocket-accept"]!==i)return void W(e,s,"Invalid Sec-WebSocket-Accept header");const o=t.headers["sec-websocket-protocol"];let a;if(void 0!==o?b.size?b.has(o)||(a="Server sent an invalid subprotocol"):a="Server sent a subprotocol but none was requested":b.size&&(a="Server sent no subprotocol"),a)return void W(e,s,a);o&&(e._protocol=o);const h=t.headers["sec-websocket-extensions"];if(void 0!==h){if(!v){return void W(e,s,"Server sent a Sec-WebSocket-Extensions header but no extension was requested")}let t;try{t=O(h)}catch(t){return void W(e,s,"Invalid Sec-WebSocket-Extensions header")}const r=Object.keys(t);if(1!==r.length||r[0]!==f.extensionName){return void W(e,s,"Server indicated an extension that was not requested")}try{v.accept(t[f.extensionName])}catch(t){return void W(e,s,"Invalid Sec-WebSocket-Extensions header")}e._extensions[f.extensionName]=v}e.setSocket(s,r,{generateMask:n.generateMask,maxPayload:n.maxPayload,skipUTF8Validation:n.skipUTF8Validation})})),n.finishRequest?n.finishRequest(S,e):S.end()}function B(e,t){e._readyState=R.CLOSING,e.emit("error",t),e.emitClose()}function I(e){return e.path=e.socketPath,n.connect(e)}function M(e){return e.path=void 0,e.servername||""===e.servername||(e.servername=n.isIP(e.host)?"":e.host),a.connect(e)}function W(e,t,s){e._readyState=R.CLOSING;const r=new Error(s);Error.captureStackTrace(r,W),t.setHeader?(t[C]=!0,t.abort(),t.socket&&!t.socket.destroyed&&t.socket.destroy(),process.nextTick(B,e,r)):(t.destroy(r),t.once("error",e.emit.bind(e,"error")),t.once("close",e.emitClose.bind(e)))}function D(e,t,s){if(t){const s=T(t).length;e._socket?e._sender._bufferedBytes+=s:e._bufferedAmount+=s}if(s){const t=new Error(`WebSocket is not open: readyState ${e.readyState} (${L[e.readyState]})`);process.nextTick(s,t)}}function A(e,t){const s=this[S];s._closeFrameReceived=!0,s._closeMessage=t,s._closeCode=e,void 0!==s._socket[S]&&(s._socket.removeListener("data",Y),process.nextTick(z,s._socket),1005===e?s.close():s.close(e,t))}function F(){const e=this[S];e.isPaused||e._socket.resume()}function j(e){const t=this[S];void 0!==t._socket[S]&&(t._socket.removeListener("data",Y),process.nextTick(z,t._socket),t.close(e[v])),t.emit("error",e)}function $(){this[S].emitClose()}function G(e,t){this[S].emit("message",e,t)}function V(e){const t=this[S];t.pong(e,!t._isServer,w),t.emit("ping",e)}function q(e){this[S].emit("pong",e)}function z(e){e.resume()}function H(){const e=this[S];let t;this.removeListener("close",H),this.removeListener("data",Y),this.removeListener("end",X),e._readyState=R.CLOSING,this._readableState.endEmitted||e._closeFrameReceived||e._receiver._writableState.errorEmitted||null===(t=e._socket.read())||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",$),e._receiver.on("finish",$))}function Y(e){this[S]._receiver.write(e)||this.pause()}function X(){const e=this[S];e._readyState=R.CLOSING,e._receiver.end(),this.end()}function K(){const e=this[S];this.removeListener("error",K),this.on("error",w),e&&(e._readyState=R.CLOSING,this.destroy())}Object.defineProperty(R,"CONNECTING",{enumerable:!0,value:L.indexOf("CONNECTING")}),Object.defineProperty(R.prototype,"CONNECTING",{enumerable:!0,value:L.indexOf("CONNECTING")}),Object.defineProperty(R,"OPEN",{enumerable:!0,value:L.indexOf("OPEN")}),Object.defineProperty(R.prototype,"OPEN",{enumerable:!0,value:L.indexOf("OPEN")}),Object.defineProperty(R,"CLOSING",{enumerable:!0,value:L.indexOf("CLOSING")}),Object.defineProperty(R.prototype,"CLOSING",{enumerable:!0,value:L.indexOf("CLOSING")}),Object.defineProperty(R,"CLOSED",{enumerable:!0,value:L.indexOf("CLOSED")}),Object.defineProperty(R.prototype,"CLOSED",{enumerable:!0,value:L.indexOf("CLOSED")}),["binaryType","bufferedAmount","extensions","isPaused","protocol","readyState","url"].forEach((e=>{Object.defineProperty(R.prototype,e,{enumerable:!0})})),["open","error","close","message"].forEach((e=>{Object.defineProperty(R.prototype,`on${e}`,{enumerable:!0,get(){for(const t of this.listeners(e))if(t[g])return t[b];return null},set(t){for(const t of this.listeners(e))if(t[g]){this.removeListener(e,t);break}"function"==typeof t&&this.addEventListener(e,t,{[g]:!0})}})})),R.prototype.addEventListener=k,R.prototype.removeEventListener=E,e.exports=R},300:e=>{"use strict";e.exports=require("buffer")},113:e=>{"use strict";e.exports=require("crypto")},361:e=>{"use strict";e.exports=require("events")},685:e=>{"use strict";e.exports=require("http")},687:e=>{"use strict";e.exports=require("https")},808:e=>{"use strict";e.exports=require("net")},781:e=>{"use strict";e.exports=require("stream")},404:e=>{"use strict";e.exports=require("tls")},310:e=>{"use strict";e.exports=require("url")},796:e=>{"use strict";e.exports=require("zlib")}},t={};function s(r){var i=t[r];if(void 0!==i)return i.exports;var o=t[r]={exports:{}};return e[r](o,o.exports,s),o.exports}var r={};(()=>{var e=r,t=s(777);e.Server=t.Server,e.on=t.on,e.close=t.close,e.ping=t.ping})();var i=exports;for(var o in r)i[o]=r[o];r.__esModule&&Object.defineProperty(i,"__esModule",{value:!0})})();
@@ -63,24 +63,18 @@ const BUILD = {
63
63
  cloneNodeFix: false,
64
64
  hydratedAttribute: false,
65
65
  hydratedClass: true,
66
- // TODO: Remove code related to deprecated `safari10` field.
67
- safari10: false,
68
66
  scriptDataOpts: false,
69
67
  scopedSlotTextContentFix: false,
70
- // TODO: Remove code related to deprecated shadowDomShim field
68
+ // TODO: Remove code related to legacy shadowDomShim field
71
69
  shadowDomShim: false,
72
70
  slotChildNodesFix: false,
73
71
  invisiblePrehydration: true,
74
72
  propBoolean: true,
75
73
  propNumber: true,
76
74
  propString: true,
77
- // TODO: Remove code implementing the CSS variable shim
78
- cssVarShim: false,
79
75
  constructableCSS: true,
80
76
  cmpShouldUpdate: true,
81
77
  devTools: false,
82
- // TODO: Remove code related to the dynamic import shim
83
- dynamicImportShim: false,
84
78
  shadowDelegatesFocus: true,
85
79
  initializeNextTick: false,
86
80
  asyncLoading: false,
@@ -61,24 +61,18 @@ const BUILD = {
61
61
  cloneNodeFix: false,
62
62
  hydratedAttribute: false,
63
63
  hydratedClass: true,
64
- // TODO: Remove code related to deprecated `safari10` field.
65
- safari10: false,
66
64
  scriptDataOpts: false,
67
65
  scopedSlotTextContentFix: false,
68
- // TODO: Remove code related to deprecated shadowDomShim field
66
+ // TODO: Remove code related to legacy shadowDomShim field
69
67
  shadowDomShim: false,
70
68
  slotChildNodesFix: false,
71
69
  invisiblePrehydration: true,
72
70
  propBoolean: true,
73
71
  propNumber: true,
74
72
  propString: true,
75
- // TODO: Remove code implementing the CSS variable shim
76
- cssVarShim: false,
77
73
  constructableCSS: true,
78
74
  cmpShouldUpdate: true,
79
75
  devTools: false,
80
- // TODO: Remove code related to the dynamic import shim
81
- dynamicImportShim: false,
82
76
  shadowDelegatesFocus: true,
83
77
  initializeNextTick: false,
84
78
  asyncLoading: false,
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rindo/core/internal/app-data",
3
- "version": "3.3.0",
3
+ "version": "4.0.0-beta.1",
4
4
  "description": "Used for default app data and build conditionals within builds.",
5
5
  "main": "./index.cjs",
6
6
  "module": "./index.js",
@@ -19,7 +19,7 @@ let renderingRef = null;
19
19
  let queueCongestion = 0;
20
20
  let queuePending = false;
21
21
  /*
22
- Rindo Client Platform v3.3.0 | MIT Licensed | https://rindojs.web.app
22
+ Rindo Client Platform v4.0.0-beta.1 | MIT Licensed | https://rindojs.web.app
23
23
  */
24
24
  import { BUILD, NAMESPACE } from '@rindo/core/internal/app-data';
25
25
  const Build = {
@@ -667,9 +667,9 @@ const registerStyle = (scopeId, cssText, allowCS) => {
667
667
  }
668
668
  styles.set(scopeId, style);
669
669
  };
670
- const addStyle = (styleContainerNode, cmpMeta, mode, hostElm) => {
670
+ const addStyle = (styleContainerNode, cmpMeta, mode) => {
671
671
  var _a;
672
- let scopeId = getScopeId(cmpMeta, mode);
672
+ const scopeId = getScopeId(cmpMeta, mode);
673
673
  const style = styles.get(scopeId);
674
674
  if (!BUILD.attachStyles) {
675
675
  return scopeId;
@@ -693,25 +693,8 @@ const addStyle = (styleContainerNode, cmpMeta, mode, hostElm) => {
693
693
  styleElm.innerHTML = style;
694
694
  }
695
695
  else {
696
- // TODO: Remove code implementing the CSS variable shim
697
- if (BUILD.cssVarShim && plt.$cssShim$) {
698
- // TODO: Remove code implementing the CSS variable shim
699
- styleElm = plt.$cssShim$.createHostStyle(hostElm, scopeId, style,
700
- // TODO: Remove code related to deprecated shadowDomShim field
701
- !!(cmpMeta.$flags$ & 10 /* CMP_FLAGS.needsScopedEncapsulation */));
702
- const newScopeId = styleElm['s-sc'];
703
- if (newScopeId) {
704
- scopeId = newScopeId;
705
- // we don't want to add this styleID to the appliedStyles Set
706
- // since the cssVarShim might need to apply several different
707
- // stylesheets for the same component
708
- appliedStyles = null;
709
- }
710
- }
711
- else {
712
- styleElm = doc.createElement('style');
713
- styleElm.innerHTML = style;
714
- }
696
+ styleElm = doc.createElement('style');
697
+ styleElm.innerHTML = style;
715
698
  // Apply CSP nonce to the style tag if it exists
716
699
  const nonce = (_a = plt.$nonce$) !== null && _a !== void 0 ? _a : queryNonceMetaTagContent(doc);
717
700
  if (nonce != null) {
@@ -738,8 +721,7 @@ const attachStyles = (hostRef) => {
738
721
  const elm = hostRef.$hostElement$;
739
722
  const flags = cmpMeta.$flags$;
740
723
  const endAttachStyles = createTime('attachStyles', cmpMeta.$tagName$);
741
- const scopeId = addStyle(BUILD.shadowDom && supportsShadow && elm.shadowRoot ? elm.shadowRoot : elm.getRootNode(), cmpMeta, hostRef.$modeName$, elm);
742
- // TODO: Remove code related to deprecated shadowDomShim field
724
+ const scopeId = addStyle(BUILD.shadowDom && supportsShadow && elm.shadowRoot ? elm.shadowRoot : elm.getRootNode(), cmpMeta, hostRef.$modeName$);
743
725
  if ((BUILD.shadowDom || BUILD.scoped) && BUILD.cssAnnotations && flags & 10 /* CMP_FLAGS.needsScopedEncapsulation */) {
744
726
  // only required when we're NOT using native shadow dom (slot)
745
727
  // or this browser doesn't support native shadow dom
@@ -1885,11 +1867,6 @@ const updateComponent = async (hostRef, instance, isInitialLoad) => {
1885
1867
  else {
1886
1868
  callRender(hostRef, instance, elm);
1887
1869
  }
1888
- // TODO: Remove code implementing the CSS variable shim
1889
- if (BUILD.cssVarShim && plt.$cssShim$) {
1890
- // TODO: Remove code implementing the CSS variable shim
1891
- plt.$cssShim$.updateHost(elm);
1892
- }
1893
1870
  if (BUILD.isDev) {
1894
1871
  hostRef.$renderCount$ = hostRef.$renderCount$ === undefined ? 1 : hostRef.$renderCount$ + 1;
1895
1872
  hostRef.$flags$ &= ~1024 /* HOST_FLAGS.devOnRender */;
@@ -2390,7 +2367,7 @@ const initializeComponent = async (elm, hostRef, cmpMeta, hmrVersionId, Cstr) =>
2390
2367
  const endRegisterStyles = createTime('registerStyles', cmpMeta.$tagName$);
2391
2368
  if (!BUILD.hydrateServerSide &&
2392
2369
  BUILD.shadowDom &&
2393
- // TODO: Remove code related to deprecated shadowDomShim field
2370
+ // TODO: Remove code related to legacy shadowDomShim field
2394
2371
  BUILD.shadowDomShim &&
2395
2372
  cmpMeta.$flags$ & 8 /* CMP_FLAGS.needsShadowDomShim */) {
2396
2373
  style = await import('./shadow-css.js').then((m) => m.scopeCss(style, scopeId, false));
@@ -2453,7 +2430,7 @@ const connectedCallback = (elm) => {
2453
2430
  // host element has been connected to the DOM
2454
2431
  if (BUILD.hydrateServerSide ||
2455
2432
  ((BUILD.slot || BUILD.shadowDom) &&
2456
- // TODO: Remove code related to deprecated shadowDomShim field
2433
+ // TODO: Remove code related to legacy shadowDomShim field
2457
2434
  cmpMeta.$flags$ & (4 /* CMP_FLAGS.hasSlotRelocation */ | 8 /* CMP_FLAGS.needsShadowDomShim */))) {
2458
2435
  setContentReference(elm);
2459
2436
  }
@@ -2531,12 +2508,6 @@ const disconnectedCallback = (elm) => {
2531
2508
  hostRef.$rmListeners$ = undefined;
2532
2509
  }
2533
2510
  }
2534
- // clear CSS var-shim tracking
2535
- // TODO: Remove code implementing the CSS variable shim
2536
- if (BUILD.cssVarShim && plt.$cssShim$) {
2537
- // TODO: Remove code implementing the CSS variable shim
2538
- plt.$cssShim$.removeHost(elm);
2539
- }
2540
2511
  if (BUILD.lazyLoad && BUILD.disconnectedCallback) {
2541
2512
  safeCall(instance, 'disconnectedCallback');
2542
2513
  }
@@ -2566,7 +2537,7 @@ const proxyCustomElement = (Cstr, compactMeta) => {
2566
2537
  cmpMeta.$attrsToReflect$ = [];
2567
2538
  }
2568
2539
  if (BUILD.shadowDom && !supportsShadow && cmpMeta.$flags$ & 1 /* CMP_FLAGS.shadowDomEncapsulation */) {
2569
- // TODO: Remove code related to deprecated shadowDomShim field
2540
+ // TODO: Remove code related to legacy shadowDomShim field
2570
2541
  cmpMeta.$flags$ |= 8 /* CMP_FLAGS.needsShadowDomShim */;
2571
2542
  }
2572
2543
  const originalConnectedCallback = Cstr.prototype.connectedCallback;
@@ -2747,7 +2718,7 @@ const patchChildSlotNodes = (elm, cmpMeta) => {
2747
2718
  return this[n];
2748
2719
  }
2749
2720
  }
2750
- // TODO: Remove code related to deprecated shadowDomShim field
2721
+ // TODO: Remove code related to legacy shadowDomShim field
2751
2722
  if (cmpMeta.$flags$ & 8 /* CMP_FLAGS.needsShadowDomShim */) {
2752
2723
  const childNodesFn = elm.__lookupGetter__('childNodes');
2753
2724
  Object.defineProperty(elm, 'children', {
@@ -2881,7 +2852,7 @@ const bootstrapLazy = (lazyBundles, options = {}) => {
2881
2852
  cmpMeta.$watchers$ = {};
2882
2853
  }
2883
2854
  if (BUILD.shadowDom && !supportsShadow && cmpMeta.$flags$ & 1 /* CMP_FLAGS.shadowDomEncapsulation */) {
2884
- // TODO: Remove code related to deprecated shadowDomShim field
2855
+ // TODO: Remove code related to legacy shadowDomShim field
2885
2856
  cmpMeta.$flags$ |= 8 /* CMP_FLAGS.needsShadowDomShim */;
2886
2857
  }
2887
2858
  const tagName = BUILD.transformTagName && options.transformTagName
@@ -3314,8 +3285,6 @@ const loadModule = (cmpMeta, hostRef, hmrVersionId) => {
3314
3285
  const styles = /*@__PURE__*/ new Map();
3315
3286
  const modeResolutionChain = [];
3316
3287
  const win = typeof window !== 'undefined' ? window : {};
3317
- // TODO: Remove code implementing the CSS variable shim
3318
- const CSS = BUILD.cssVarShim ? win.CSS : null;
3319
3288
  const doc = win.document || { head: {} };
3320
3289
  const H = (win.HTMLElement || class {
3321
3290
  });
@@ -3332,7 +3301,7 @@ const setPlatformHelpers = (helpers) => {
3332
3301
  Object.assign(plt, helpers);
3333
3302
  };
3334
3303
  const supportsShadow =
3335
- // TODO: Remove code related to deprecated shadowDomShim field
3304
+ // TODO: Remove code related to legacy shadowDomShim field
3336
3305
  BUILD.shadowDomShim && BUILD.shadowDom
3337
3306
  ? /*@__PURE__*/ (() => (doc.head.attachShadow + '').indexOf('[native') > -1)()
3338
3307
  : true;
@@ -3444,4 +3413,4 @@ const nextTick = /*@__PURE__*/ (cb) => promiseResolve().then(cb);
3444
3413
  const readTask = /*@__PURE__*/ queueTask(queueDomReads, false);
3445
3414
  const writeTask = /*@__PURE__*/ queueTask(queueDomWrites, true);
3446
3415
  export { BUILD, Env, NAMESPACE } from '@rindo/core/internal/app-data';
3447
- export { Build, CSS, Context, Fragment, H, H as HTMLElement, Host, RINDO_DEV_MODE, addHostEventListeners, bootstrapLazy, cmpModules, connectedCallback, consoleDevError, consoleDevInfo, consoleDevWarn, consoleError, createEvent, defineCustomElement, disconnectedCallback, doc, forceModeUpdate, forceUpdate, getAssetPath, getConnect, getContext, getElement, getHostRef, getMode, getRenderingRef, getValue, h, insertVdomAnnotations, isMemberInElement, loadModule, modeResolutionChain, nextTick, parsePropertyValue, plt, postUpdateComponent, promiseResolve, proxyComponent, proxyCustomElement, readTask, registerHost, registerInstance, renderVdom, setAssetPath, setErrorHandler, setMode, setNonce, setPlatformHelpers, setPlatformOptions, setValue, styles, supportsConstructableStylesheets, supportsListenerOptions, supportsShadow, win, writeTask };
3416
+ export { Build, Context, Fragment, H, H as HTMLElement, Host, RINDO_DEV_MODE, addHostEventListeners, bootstrapLazy, cmpModules, connectedCallback, consoleDevError, consoleDevInfo, consoleDevWarn, consoleError, createEvent, defineCustomElement, disconnectedCallback, doc, forceModeUpdate, forceUpdate, getAssetPath, getConnect, getContext, getElement, getHostRef, getMode, getRenderingRef, getValue, h, insertVdomAnnotations, isMemberInElement, loadModule, modeResolutionChain, nextTick, parsePropertyValue, plt, postUpdateComponent, promiseResolve, proxyComponent, proxyCustomElement, readTask, registerHost, registerInstance, renderVdom, setAssetPath, setErrorHandler, setMode, setNonce, setPlatformHelpers, setPlatformOptions, setValue, styles, supportsConstructableStylesheets, supportsListenerOptions, supportsShadow, win, writeTask };
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rindo/core/internal/client",
3
- "version": "3.3.0",
3
+ "version": "4.0.0-beta.1",
4
4
  "description": "Rindo internal client platform to be imported by the Rindo Compiler and internal runtime. Breaking changes can and will happen at any time.",
5
5
  "main": "./index.js",
6
6
  "private": true,
@@ -1,33 +1,13 @@
1
1
  /*
2
- Rindo Client Patch Browser v3.3.0 | MIT Licensed | https://rindojs.web.app
2
+ Rindo Client Patch Browser v4.0.0-beta.1 | MIT Licensed | https://rindojs.web.app
3
3
  */
4
4
  import { BUILD, NAMESPACE } from '@rindo/core/internal/app-data';
5
- import { consoleDevInfo, plt, win, doc, promiseResolve, H } from '@rindo/core';
6
- /**
7
- * Helper method for querying a `meta` tag that contains a nonce value
8
- * out of a DOM's head.
9
- *
10
- * @param doc The DOM containing the `head` to query against
11
- * @returns The content of the meta tag representing the nonce value, or `undefined` if no tag
12
- * exists or the tag has no content.
13
- */
14
- function queryNonceMetaTagContent(doc) {
15
- var _a, _b, _c;
16
- return (_c = (_b = (_a = doc.head) === null || _a === void 0 ? void 0 : _a.querySelector('meta[name="csp-nonce"]')) === null || _b === void 0 ? void 0 : _b.getAttribute('content')) !== null && _c !== void 0 ? _c : undefined;
17
- }
18
- // TODO: Remove code related to the dynamic import shim
19
- const getDynamicImportFunction = (namespace) => `__sc_import_${namespace.replace(/\s|-/g, '_')}`;
5
+ import { consoleDevInfo, doc, promiseResolve, H } from '@rindo/core';
20
6
  const patchBrowser = () => {
21
7
  // NOTE!! This fn cannot use async/await!
22
8
  if (BUILD.isDev && !BUILD.isTesting) {
23
9
  consoleDevInfo('Running in development mode.');
24
10
  }
25
- // TODO: Remove code implementing the CSS variable shim
26
- if (BUILD.cssVarShim) {
27
- // shim css vars
28
- // TODO: Remove code implementing the CSS variable shim
29
- plt.$cssShim$ = win.__cssshim;
30
- }
31
11
  if (BUILD.cloneNodeFix) {
32
12
  // opted-in to polyfill cloneNode() for slot polyfilled components
33
13
  patchCloneNodeFix(H.prototype);
@@ -44,95 +24,17 @@ const patchBrowser = () => {
44
24
  performance.getEntriesByName = () => [];
45
25
  }
46
26
  // @ts-ignore
47
- const scriptElm =
48
- // TODO: Remove code related to the dynamic import shim
49
- // TODO: Remove code related to deprecated `safari10` field.
50
- BUILD.scriptDataOpts || BUILD.safari10 || BUILD.dynamicImportShim
27
+ const scriptElm = BUILD.scriptDataOpts
51
28
  ? Array.from(doc.querySelectorAll('script')).find((s) => new RegExp(`\/${NAMESPACE}(\\.esm)?\\.js($|\\?|#)`).test(s.src) ||
52
29
  s.getAttribute('data-rindo-namespace') === NAMESPACE)
53
30
  : null;
54
31
  const importMeta = import.meta.url;
55
32
  const opts = BUILD.scriptDataOpts ? (scriptElm || {})['data-opts'] || {} : {};
56
- // TODO: Remove code related to deprecated `safari10` field.
57
- if (BUILD.safari10 && 'onbeforeload' in scriptElm && !history.scrollRestoration /* IS_ESM_BUILD */) {
58
- // Safari < v11 support: This IF is true if it's Safari below v11.
59
- // This fn cannot use async/await since Safari didn't support it until v11,
60
- // however, Safari 10 did support modules. Safari 10 also didn't support "nomodule",
61
- // so both the ESM file and nomodule file would get downloaded. Only Safari
62
- // has 'onbeforeload' in the script, and "history.scrollRestoration" was added
63
- // to Safari in v11. Return a noop then() so the async/await ESM code doesn't continue.
64
- // IS_ESM_BUILD is replaced at build time so this check doesn't happen in systemjs builds.
65
- return {
66
- then() {
67
- /* promise noop */
68
- },
69
- };
70
- }
71
- // TODO: Remove code related to deprecated `safari10` field.
72
- if (!BUILD.safari10 && importMeta !== '') {
33
+ if (importMeta !== '') {
73
34
  opts.resourcesUrl = new URL('.', importMeta).href;
74
- // TODO: Remove code related to the dynamic import shim
75
- // TODO: Remove code related to deprecated `safari10` field.
76
- }
77
- else if (BUILD.dynamicImportShim || BUILD.safari10) {
78
- opts.resourcesUrl = new URL('.', new URL(scriptElm.getAttribute('data-resources-url') || scriptElm.src, win.location.href)).href;
79
- // TODO: Remove code related to the dynamic import shim
80
- if (BUILD.dynamicImportShim) {
81
- patchDynamicImport(opts.resourcesUrl, scriptElm);
82
- }
83
- // TODO: Remove code related to the dynamic import shim
84
- if (BUILD.dynamicImportShim && !win.customElements) {
85
- // module support, but no custom elements support (Old Edge)
86
- // @ts-ignore
87
- return import(/* webpackChunkName: "polyfills-dom" */ './dom.js').then(() => opts);
88
- }
89
35
  }
90
36
  return promiseResolve(opts);
91
37
  };
92
- // TODO: Remove code related to the dynamic import shim
93
- const patchDynamicImport = (base, orgScriptElm) => {
94
- const importFunctionName = getDynamicImportFunction(NAMESPACE);
95
- try {
96
- // test if this browser supports dynamic imports
97
- // There is a caching issue in V8, that breaks using import() in Function
98
- // By generating a random string, we can workaround it
99
- // Check https://bugs.chromium.org/p/chromium/issues/detail?id=990810 for more info
100
- win[importFunctionName] = new Function('w', `return import(w);//${Math.random()}`);
101
- }
102
- catch (e) {
103
- // this shim is specifically for browsers that do support "esm" imports
104
- // however, they do NOT support "dynamic" imports
105
- // basically this code is for old Edge, v18 and below
106
- const moduleMap = new Map();
107
- win[importFunctionName] = (src) => {
108
- var _a;
109
- const url = new URL(src, base).href;
110
- let mod = moduleMap.get(url);
111
- if (!mod) {
112
- const script = doc.createElement('script');
113
- script.type = 'module';
114
- script.crossOrigin = orgScriptElm.crossOrigin;
115
- script.src = URL.createObjectURL(new Blob([`import * as m from '${url}'; window.${importFunctionName}.m = m;`], {
116
- type: 'application/javascript',
117
- }));
118
- // Apply CSP nonce to the script tag if it exists
119
- const nonce = (_a = plt.$nonce$) !== null && _a !== void 0 ? _a : queryNonceMetaTagContent(doc);
120
- if (nonce != null) {
121
- script.setAttribute('nonce', nonce);
122
- }
123
- mod = new Promise((resolve) => {
124
- script.onload = () => {
125
- resolve(win[importFunctionName].m);
126
- script.remove();
127
- };
128
- });
129
- moduleMap.set(url, mod);
130
- doc.head.appendChild(script);
131
- }
132
- return mod;
133
- };
134
- }
135
- };
136
38
  const patchCloneNodeFix = (HTMLElementPrototype) => {
137
39
  const nativeCloneNodeFn = HTMLElementPrototype.cloneNode;
138
40
  HTMLElementPrototype.cloneNode = function (deep) {
@@ -1,5 +1,5 @@
1
1
  /*
2
- Rindo Client Platform v3.3.0 | MIT Licensed | https://rindojs.web.app
2
+ Rindo Client Platform v4.0.0-beta.1 | MIT Licensed | https://rindojs.web.app
3
3
  */
4
4
  /**
5
5
  * @license