@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.
- package/cli/index.cjs +1 -1
- package/cli/index.js +1 -1
- package/cli/package.json +1 -1
- package/compiler/package.json +1 -1
- package/compiler/rindo.js +20 -84
- package/compiler/rindo.min.js +2 -2
- package/dev-server/client/index.js +1 -1
- package/dev-server/client/package.json +1 -1
- package/dev-server/connector.html +2 -2
- package/dev-server/index.js +1 -1
- package/dev-server/package.json +1 -1
- package/dev-server/server-process.js +2 -2
- package/dev-server/ws.js +1 -1
- package/internal/app-data/index.cjs +1 -7
- package/internal/app-data/index.js +1 -7
- package/internal/app-data/package.json +1 -1
- package/internal/client/index.js +13 -44
- package/internal/client/package.json +1 -1
- package/internal/client/patch-browser.js +4 -102
- package/internal/client/shadow-css.js +1 -1
- package/internal/hydrate/index.js +18 -23
- package/internal/hydrate/package.json +1 -1
- package/internal/package.json +1 -1
- package/internal/rindo-private.d.ts +0 -13
- package/internal/rindo-public-compiler.d.ts +0 -34
- package/internal/testing/index.js +18 -24
- package/internal/testing/package.json +1 -1
- package/mock-doc/index.cjs +2 -2
- package/mock-doc/index.js +2 -2
- package/mock-doc/package.json +1 -1
- package/package.json +2 -2
- package/screenshot/package.json +1 -1
- package/sys/node/713.node-fetch.js +451 -0
- package/sys/node/autoprefixer.js +2 -2
- package/sys/node/glob.js +1 -1
- package/sys/node/graceful-fs.js +1 -1
- package/sys/node/index.js +1 -1
- package/sys/node/node-fetch.js +4 -1
- package/sys/node/package.json +1 -1
- package/sys/node/worker.js +1 -1
- package/testing/index.js +8 -8
- package/testing/package.json +1 -1
- package/internal/client/css-shim.js +0 -4
- package/internal/client/dom.js +0 -73
- package/internal/client/patch-esm.js +0 -25
- 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
|
|
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
|
|
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,
|
package/internal/client/index.js
CHANGED
|
@@ -19,7 +19,7 @@ let renderingRef = null;
|
|
|
19
19
|
let queueCongestion = 0;
|
|
20
20
|
let queuePending = false;
|
|
21
21
|
/*
|
|
22
|
-
Rindo Client Platform
|
|
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
|
|
670
|
+
const addStyle = (styleContainerNode, cmpMeta, mode) => {
|
|
671
671
|
var _a;
|
|
672
|
-
|
|
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
|
-
|
|
697
|
-
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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,
|
|
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
|
+
"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
|
|
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,
|
|
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
|
-
|
|
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) {
|