@wallabyjs/cli 1.0.14 → 1.0.15
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.mjs +2 -2
- package/package.json +1 -1
package/dist/index.mjs
CHANGED
|
@@ -61,9 +61,9 @@ KbGKJvzkdPgfs62MItfi4uf+XiHa8rN0Bk7hRbddI1zA4Wupf/E0wZ7UorgCE9XB
|
|
|
61
61
|
EM6VULphGdHorpmHBW5deeCHIledtMOpOfDSM5lvjiqgVqmjNYT+WXCwjN8yCcyU
|
|
62
62
|
oedY3afSHTyqiuInKcpXd+VJQb2+d7y583Pb3+kDGraBMGFJaWGewm7+IYIlgk5C
|
|
63
63
|
uk54FsjCvwvaa0SKr2rkIBKuyFX3ZGymyQIDAQAB
|
|
64
|
-
-----END RSA PUBLIC KEY-----`})}verify(e){this.version=JSON.parse(e.readAsText(`package.json`)).version,this.date=new Date(e.getEntry(`package.json`).header.time),this.date.setMinutes(this.date.getMinutes()-this.date.getTimezoneOffset());let[t,n,r]=this.version.split(`.`).map(e=>Number.parseInt(e,10));return t>1||n>0||r>1091?super.verify(e):!0}};async function Mr(e,t,n,r){let a=!1;Q.debug({path:t,latest:n,reuse:r,ssl:e},`Resolving distribution with update policy`);let o=new Fr,s=Ar(),c=e===`off`?`http`:`https`,l=`${c}://update.wallabyjs.com/`,u=l,d=t=>sr(`version`,`${t}wallaby.json?${s?`expiry=`+s.replace(/\//g,`-`):``}`,kr.versions,void 0,e!==`relaxed`),f=o.pinned,p=n?!1:!!t&&G.default.existsSync(t),m=i(kr.downloads,`wallaby.zip`);if(!p&&!n&&G.default.existsSync(m))try{t=await Pr(m),p=!!t&&G.default.existsSync(t),a=!0,Q.debug({path:t},`Recovered from cached archive`)}catch(e){Q.info({error:e,distFilePath:m},`Failed to recover from cached archive`)}let h;if(r&&p)h=o.read(t),Q.debug({path:t,latestVersion:h},`Using installed version`);else{let e=Lr(`Downloading version file`);try{try{await d(l)}catch{u=`${c}://s3.amazonaws.com/wallaby-downloads/`,Q.debug({downloadUrl:u},`Falling back to S3 metadata endpoint`),await d(`http://update.wallabyjs.com/`)}}finally{e()}h=o.latest,Q.debug({latestVersion:h},`Fetched latest version`)}if(f&&(h&&(0,ar.gt)(f,h)?await o.unpin():h=f,Q.debug({pinnedVersion:f,latestVersion:h},`Applied pinned version policy`)),!(p&&o.read(t)===h))try{t=await Nr(`core`,`${u}wallaby-v${h}.zip`,e),a=!0}catch{Q.info({latestVersion:h},`Primary download failed, falling back to S3 archive`),t=await Nr(`core`,`${c}://s3.amazonaws.com/wallaby-downloads/wallaby-v${h}.zip`,e),a=!0}return Q.debug({path:t,updated:a,latestVersion:h},`Resolved dist`),{path:t,updated:a,type:`dist`}}async function Nr(e,t,n){Q.debug({name:e,from:t,ssl:n},`Downloading and extracting dist`);let r=Lr(`Downloading core`),a=i(kr.downloads,`wallaby.zip`);try{G.default.ensureDirSync(kr.downloads),await sr(e,t,a,2e6,n!==`relaxed`)}finally{r()}let o=Lr(`Extracting core`);try{return await Pr(a)}catch(t){throw Q.error({error:t,downloadedArchiveFilePath:a},`Failed to extract archive`),Error(`Error while unzipping wallaby.js ${e} file: ${t instanceof Error?t.message:String(t)}`,{cause:t})}finally{o()}}async function Pr(e){let t=O.randomBytes(3).toString(`hex`),n=i(Y.paths.dirs.current,`wallaby`+t);for(;G.default.existsSync(n);)t=O.randomBytes(3).toString(`hex`),n=i(Y.paths.dirs.current,`wallaby`+t);let r=new jr;await Er({from:e,to:n,verifier:r});let a=new Fr().register(t,r.date.getTime());return Q.debug({from:e,to:{extracted:n,registered:a}},`Extracted dist`),a}var Fr=class{_logger=J.create(`core/installer/vm`);_paths;constructor(e){this._paths={pinned:e?.pinned??kr.pinned,manifest:e?.manifest??kr.manifest,versions:e?.versions??kr.versions}}get pinned(){if(G.default.existsSync(this._paths.pinned)){let e=G.default.readFileSync(this._paths.pinned,`utf-8`);return this._logger.debug({version:e},`Read pinned version`),e}}get latest(){let e=JSON.parse(G.default.readFileSync(this._paths.versions).toString()),t;return e.latestServer.forEach(e=>{e.substring(0,e.lastIndexOf(`.`))===Y.version.substring(0,e.lastIndexOf(`.`))&&(t=e)}),this._logger.debug({latest:t},`Resolved latest known version`),t}async pin(e){this._logger.info({version:e},`Pinning version`),await E(this._paths.pinned,e)}async unpin(){if(G.default.existsSync(this._paths.pinned))return this._logger.debug(`Removing pinned version`),await T(this._paths.pinned)}refresh(e,t=!1){let n;if(!e)try{e=JSON.parse(G.default.readFileSync(this._paths.manifest).toString())}catch{}e||={},this._logger.debug({manifestEntries:Object.keys(e).length},`Resolving installed core from manifest`);let a;try{let[e,t,n]=Ar().split(`/`);a=new Date(Date.UTC(Number.parseInt(n,10),Number.parseInt(t,10)-1,Number.parseInt(e,10))).getTime()}catch{}let o=this.pinned,s=Object.keys(e).map(t=>{let n=i(i(Y.paths.dirs.current,`wallaby`+t),`package.json`),r=o&&G.default.existsSync(n)?JSON.parse(G.default.readFileSync(n,`utf-8`)).version:void 0;return{id:t,pinned:o?r===o:!1,package:n,...e[t]}}).sort((e,t)=>t.releaseDate-e.releaseDate),c=new Date().getTime()-1e3*60*60*24*5;s.forEach(n=>{G.default.existsSync(n.package)?!n.pinned&&n.invalidated&&Object.keys(n.expiry).length===0&&n.invalidated<c&&(t=!0,delete e[n.id],G.default.remove(r(n.package)).catch(e=>{this._logger.warn({error:e,path:n.package},`Failed to remove invalidated core directory`)})):(t=!0,delete e[n.id])});let l=s.filter(t=>(!a||t.releaseDate<a)&&e[t.id]);if(l.length){if(a&&a<new Date().getTime()&&!e[l[0].id].expiry[a]){e[l[0].id].expiry[a]=!0;for(let t=1;t<l.length;t++)delete e[l[t].id].expiry[a];t=!0}let r=o?(l.find(e=>e.pinned)||l.find(e=>!e.invalidated)||l[0]).id:(l.find(e=>!e.invalidated)||l[0]).id;n=i(Y.paths.dirs.current,`wallaby`+r),this._logger.debug({coreFolder:n,pinnedVersion:o},`Selected installed core folder`)}return t&&(G.default.writeFileSync(this._paths.manifest,JSON.stringify(e)),this._logger.debug({coreVersionManifest:this._paths.manifest},`Saved updated core manifest`)),n}register(e,t){let n;try{n=JSON.parse(G.default.readFileSync(this._paths.manifest).toString());let e=new Date().getTime();Object.keys(n).forEach(r=>{!n[r].invalidated&&n[r].releaseDate<=t&&(n[r].invalidated=e)})}catch{n={}}return n[e]={releaseDate:t,invalidated:!1,expiry:{}},this._logger.debug({id:e,releaseDate:t},`Added new core version to manifest`),this.refresh(n,!0)}read(e){let t=JSON.parse(G.default.readFileSync(i(e,`package.json`)).toString()).version;return this._logger.debug({path:e,version:t},`Read version`),t}async handle(e){return e=e?.trim(),e?e===`0`?{update:!1,fresh:!0}:e===`latest`?(await this.unpin(),{update:!0,fresh:!0}):(await this.pin(e.startsWith(`v`)?e.slice(1):e),{update:!1,fresh:!0}):{update:!1,fresh:!1}}},Ir=class{_timeout;_retry=0;_dist;_restarter;get dist(){return this._dist}clear(){this._dist=void 0}set restarter(e){this._restarter=e}stop(){clearTimeout(this._timeout),this._timeout=void 0}async check(e,t){try{Q.debug({path:e},`Performing update check`);let n=await Mr(t,e);if(n.updated){this._dist=n;let e=new Fr().read(n.path);Q.debug({path:n.path,version:e},`Core update downloaded`),this._restarter?.restart(e),this._retry=0}}catch(t){this._retry++,Q.info({error:t,path:e,retry:this._retry},`Scheduled update check failed`)}finally{this._retry<=3?this.schedule(this._dist?.path||e,t):Q.warn({path:e,retry:this._retry},`Stopped scheduling update checks after repeated failures`)}}schedule(e,t){this.stop(),Q.debug({path:e},`Scheduled update check`),this._timeout=setTimeout(async()=>await this.check(e,t),600*1e3)}};function Lr(e){let t=new ir.Spinner;return t.setSpinnerString(4),t.setSpinnerDelay(250),t.setSpinnerTitle(` ${K.default.green(`%s`)} ${e}`),t.start(),()=>t.stop(!0)}const Rr=J.create(`core/locator`),zr=e(import.meta.url);r(_(import.meta.url));async function Br(e){try{let e=zr.resolve(`@wallabyjs/core`);if(await G.default.pathExists(e))return Rr.info({path:e},`Using installed @wallabyjs/core package`),{path:e,type:`npm`}}catch(e){Rr.debug({error:e},`No installed @wallabyjs/core package found`)}let t=await e();if(!t)throw Error(`Could not locate installed Wallaby Core`);return t}const Vr=J.create(`core/launcher`);var Hr=class e{location;version;_process;_ready=e._createDeferred();_exited=e._createDeferred();_stopping=e._createDeferred();_interrupted=!1;_cleaned=!1;_tail=``;constructor(e,t,n){this._process=e,this.location=t,this.version=n,this._attach(),e.pid||this._fail(Error(`Failed to start Wallaby process: no PID`))}async exited(e){let t=this._exited.promise,{promise:n,cleanup:r}=this._waitShutdown(e);try{await Promise.race([this.ready,n,t]),await t}finally{r()}}get ready(){return this._ready.promise}get stopping(){return this._stopping.promise}release(){Vr.debug({pid:this._process.pid},`Releasing process handle`),this._cleanup(),this._process.stdout.destroy(),this._process.stderr.destroy(),this._process.unref()}async stop(e){if(!this._interrupted&&(this._interrupted=!0,this._stopping.resolve(),Vr.debug({pid:this._process.pid},`Stopping process`),!(this._process.exitCode!==null||this._process.signalCode!==null))){if(process.platform===`win32`&&e)Vr.debug(`Stopping process through RPC`),e();else if(!this._process.kill(`SIGTERM`))throw Error(`Failed to terminate Wallaby process`)}}_attach(){this._process.stdout.on(`data`,this._onStdOut),this._process.stderr.on(`data`,this._onStdError),this._process.on(`error`,this._onError),this._process.on(`exit`,this._onExit)}_waitShutdown(e){let t=new Map,n=!1,r=[`SIGINT`,`SIGTERM`];return{promise:new Promise((i,a)=>{for(let o of r){let r=()=>{n||(n=!0,this._handleShutdown(o,e).then(i,a))};t.set(o,r),process.on(o,r)}}),cleanup:()=>{for(let[e,n]of t)process.off(e,n)}}}async _handleShutdown(e,t){Vr.debug({signal:e},`Received shutdown signal`),await this.stop(t)}_onStdOut=e=>{if(this._tail===void 0)return;let t=this._tail+e.toString(`utf8`),n=t.match(/wallaby\.js started, port=(\d+)/);if(n){delete this._tail,this._process.stdout.off(`data`,this._onStdOut),this._ready.resolve(Number.parseInt(n[1],10));return}this._tail=t};_onStdError=e=>{let t=e.toString(`utf8`);Vr.warn({stderr:t}),this._tail!==void 0&&process.stdout.write(t)};_onError=e=>{Vr.error({error:e},`Process emitted an error`),this._fail(e,this._tail===void 0?`Wallaby process crashed`:`Wallaby process failed to start`),this._cleanup()};_onExit=(t,n)=>{Vr.info({code:t,signal:n},`Process exited`),this._tail!==void 0&&this._ready.reject(e._createExitError(`Wallaby exited unexpectedly before startup completed`,t,n)),this._interrupted?this._exited.resolve():this._exited.reject(e._createExitError(`Wallaby exited unexpectedly`,t,n)),this._cleanup()};_cleanup(){this._cleaned||(this._cleaned=!0,this._process.stdout.off(`data`,this._onStdOut),this._process.stderr.off(`data`,this._onStdError),this._process.off(`error`,this._onError),this._process.off(`exit`,this._onExit))}_fail(e,t){let n=t?Error(`${t}: ${e.message}`):e;this._ready.reject(n),this._interrupted?this._exited.resolve():this._exited.reject(n)}static _createDeferred(){let e,t;return{promise:new Promise((n,r)=>{e=n,t=r}),resolve:e,reject:t}}static _createExitError(e,t,n){let r=``;return n&&(r=` (signal: ${n})`),t!==null&&(r=` (code: ${t})`),Error(`${e}${r}.`)}};async function Ur(e,t,n){n?.stop();let r=await t.handle(e.update);r.fresh&&n?.clear();let a=async()=>await Mr(e.ssl,t.refresh(),r.update,!0),o=r.fresh?await Br(a):n?.dist||await Br(a);Vr.debug({...o},`Located target to launch`);let s=Wr(e,t.pinned),c=t.read(o.path),[,,l]=c.split(`.`);if(Number.parseInt(l,10)<2033)throw Vr.debug({revision:l},`Refusing to start unsupported version`),Error(`Wallaby Core v${c} is not supported by Wallaby CLI v ${Y.version}.\nRun with --update flag to get the latest version of Wallaby Core.`);Vr.info({args:s,revision:l},`Launching process`);let u=F(process.execPath,[i(o.path,`server.js`),`extended-core-ws`,...s],{detached:e.skill||process.platform===`win32`,stdio:[`ignore`,`pipe`,`pipe`]});return Vr.info({pid:u.pid},`Launched process`),new Hr(u,o,c)}function Wr(e,t){let n=[`--port=0`,`--lkp=${Or}`,`--cli=${Y.version}`];return e.config&&n.push(`--configPath=${s(e.config)}`),e.smart&&n.push(`--smartStart=true`),t&&n.push(`--pinned=`+t),e.cache===!1&&n.push(`--cache=no-run-result`),e.skill&&n.push(`--skill`),n}const Gr=J.create(`core/registry`);var Kr=class{_storeDirPath;constructor(e=i(Y.paths.dirs.home,`registry`)){this._storeDirPath=e,p(this._storeDirPath)||m(this._storeDirPath,{recursive:!0})}get manifests(){let e=[];try{for(let t of g(this._storeDirPath))if(t.endsWith(`.json`))try{let n=JSON.parse(h(i(this._storeDirPath,t),`utf8`));e.push(n)}catch(e){Gr.trace({error:e},`Failed to read manifest`)}}catch(e){Gr.error({error:e},`Failed to read registry directory`)}return e}},qr=R(((e,t)=>{let n=[`nodebuffer`,`arraybuffer`,`fragments`],r=typeof Blob<`u`;r&&n.push(`blob`),t.exports={BINARY_TYPES:n,CLOSE_TIMEOUT:3e4,EMPTY_BUFFER:Buffer.alloc(0),GUID:`258EAFA5-E914-47DA-95CA-C5AB0DC85B11`,hasBlob:r,kForOnEventAttribute:Symbol(`kIsForOnEventAttribute`),kListener:Symbol(`kListener`),kStatusCode:Symbol(`status-code`),kWebSocket:Symbol(`websocket`),NOOP:()=>{}}})),Jr=R(((e,t)=>{let{EMPTY_BUFFER:n}=qr(),r=Buffer[Symbol.species];function i(e,t){if(e.length===0)return n;if(e.length===1)return e[0];let i=Buffer.allocUnsafe(t),a=0;for(let t=0;t<e.length;t++){let n=e[t];i.set(n,a),a+=n.length}return a<t?new r(i.buffer,i.byteOffset,a):i}function a(e,t,n,r,i){for(let a=0;a<i;a++)n[r+a]=e[a]^t[a&3]}function o(e,t){for(let n=0;n<e.length;n++)e[n]^=t[n&3]}function s(e){return e.length===e.buffer.byteLength?e.buffer:e.buffer.slice(e.byteOffset,e.byteOffset+e.length)}function c(e){if(c.readOnly=!0,Buffer.isBuffer(e))return e;let t;return e instanceof ArrayBuffer?t=new r(e):ArrayBuffer.isView(e)?t=new r(e.buffer,e.byteOffset,e.byteLength):(t=Buffer.from(e),c.readOnly=!1),t}if(t.exports={concat:i,mask:a,toArrayBuffer:s,toBuffer:c,unmask:o},!process.env.WS_NO_BUFFER_UTIL)try{let e=B(`bufferutil`);t.exports.mask=function(t,n,r,i,o){o<48?a(t,n,r,i,o):e.mask(t,n,r,i,o)},t.exports.unmask=function(t,n){t.length<32?o(t,n):e.unmask(t,n)}}catch{}})),Yr=R(((e,t)=>{let n=Symbol(`kDone`),r=Symbol(`kRun`);t.exports=class{constructor(e){this[n]=()=>{this.pending--,this[r]()},this.concurrency=e||1/0,this.jobs=[],this.pending=0}add(e){this.jobs.push(e),this[r]()}[r](){if(this.pending!==this.concurrency&&this.jobs.length){let e=this.jobs.shift();this.pending++,e(this[n])}}}})),Xr=R(((e,t)=>{let n=B(`zlib`),r=Jr(),i=Yr(),{kStatusCode:a}=qr(),o=Buffer[Symbol.species],s=Buffer.from([0,0,255,255]),c=Symbol(`permessage-deflate`),l=Symbol(`total-length`),u=Symbol(`callback`),d=Symbol(`buffers`),f=Symbol(`error`),p;t.exports=class{constructor(e){this._options=e||{},this._threshold=this._options.threshold===void 0?1024:this._options.threshold,this._maxPayload=this._options.maxPayload|0,this._isServer=!!this._options.isServer,this._deflate=null,this._inflate=null,this.params=null,p||=new i(this._options.concurrencyLimit===void 0?10:this._options.concurrencyLimit)}static get extensionName(){return`permessage-deflate`}offer(){let e={};return this._options.serverNoContextTakeover&&(e.server_no_context_takeover=!0),this._options.clientNoContextTakeover&&(e.client_no_context_takeover=!0),this._options.serverMaxWindowBits&&(e.server_max_window_bits=this._options.serverMaxWindowBits),this._options.clientMaxWindowBits?e.client_max_window_bits=this._options.clientMaxWindowBits:this._options.clientMaxWindowBits??(e.client_max_window_bits=!0),e}accept(e){return e=this.normalizeParams(e),this.params=this._isServer?this.acceptAsServer(e):this.acceptAsClient(e),this.params}cleanup(){if(this._inflate&&=(this._inflate.close(),null),this._deflate){let e=this._deflate[u];this._deflate.close(),this._deflate=null,e&&e(Error(`The deflate stream was closed while data was being processed`))}}acceptAsServer(e){let t=this._options,n=e.find(e=>!(t.serverNoContextTakeover===!1&&e.server_no_context_takeover||e.server_max_window_bits&&(t.serverMaxWindowBits===!1||typeof t.serverMaxWindowBits==`number`&&t.serverMaxWindowBits>e.server_max_window_bits)||typeof t.clientMaxWindowBits==`number`&&!e.client_max_window_bits));if(!n)throw Error(`None of the extension offers can be accepted`);return t.serverNoContextTakeover&&(n.server_no_context_takeover=!0),t.clientNoContextTakeover&&(n.client_no_context_takeover=!0),typeof t.serverMaxWindowBits==`number`&&(n.server_max_window_bits=t.serverMaxWindowBits),typeof t.clientMaxWindowBits==`number`?n.client_max_window_bits=t.clientMaxWindowBits:(n.client_max_window_bits===!0||t.clientMaxWindowBits===!1)&&delete n.client_max_window_bits,n}acceptAsClient(e){let t=e[0];if(this._options.clientNoContextTakeover===!1&&t.client_no_context_takeover)throw Error(`Unexpected parameter "client_no_context_takeover"`);if(!t.client_max_window_bits)typeof this._options.clientMaxWindowBits==`number`&&(t.client_max_window_bits=this._options.clientMaxWindowBits);else if(this._options.clientMaxWindowBits===!1||typeof this._options.clientMaxWindowBits==`number`&&t.client_max_window_bits>this._options.clientMaxWindowBits)throw Error(`Unexpected or invalid parameter "client_max_window_bits"`);return t}normalizeParams(e){return e.forEach(e=>{Object.keys(e).forEach(t=>{let n=e[t];if(n.length>1)throw Error(`Parameter "${t}" must have only a single value`);if(n=n[0],t===`client_max_window_bits`){if(n!==!0){let e=+n;if(!Number.isInteger(e)||e<8||e>15)throw TypeError(`Invalid value for parameter "${t}": ${n}`);n=e}else if(!this._isServer)throw TypeError(`Invalid value for parameter "${t}": ${n}`)}else if(t===`server_max_window_bits`){let e=+n;if(!Number.isInteger(e)||e<8||e>15)throw TypeError(`Invalid value for parameter "${t}": ${n}`);n=e}else if(t===`client_no_context_takeover`||t===`server_no_context_takeover`){if(n!==!0)throw TypeError(`Invalid value for parameter "${t}": ${n}`)}else throw Error(`Unknown parameter "${t}"`);e[t]=n})}),e}decompress(e,t,n){p.add(r=>{this._decompress(e,t,(e,t)=>{r(),n(e,t)})})}compress(e,t,n){p.add(r=>{this._compress(e,t,(e,t)=>{r(),n(e,t)})})}_decompress(e,t,i){let a=this._isServer?`client`:`server`;if(!this._inflate){let e=`${a}_max_window_bits`,t=typeof this.params[e]==`number`?this.params[e]:n.Z_DEFAULT_WINDOWBITS;this._inflate=n.createInflateRaw({...this._options.zlibInflateOptions,windowBits:t}),this._inflate[c]=this,this._inflate[l]=0,this._inflate[d]=[],this._inflate.on(`error`,g),this._inflate.on(`data`,h)}this._inflate[u]=i,this._inflate.write(e),t&&this._inflate.write(s),this._inflate.flush(()=>{let e=this._inflate[f];if(e){this._inflate.close(),this._inflate=null,i(e);return}let n=r.concat(this._inflate[d],this._inflate[l]);this._inflate._readableState.endEmitted?(this._inflate.close(),this._inflate=null):(this._inflate[l]=0,this._inflate[d]=[],t&&this.params[`${a}_no_context_takeover`]&&this._inflate.reset()),i(null,n)})}_compress(e,t,i){let a=this._isServer?`server`:`client`;if(!this._deflate){let e=`${a}_max_window_bits`,t=typeof this.params[e]==`number`?this.params[e]:n.Z_DEFAULT_WINDOWBITS;this._deflate=n.createDeflateRaw({...this._options.zlibDeflateOptions,windowBits:t}),this._deflate[l]=0,this._deflate[d]=[],this._deflate.on(`data`,m)}this._deflate[u]=i,this._deflate.write(e),this._deflate.flush(n.Z_SYNC_FLUSH,()=>{if(!this._deflate)return;let e=r.concat(this._deflate[d],this._deflate[l]);t&&(e=new o(e.buffer,e.byteOffset,e.length-4)),this._deflate[u]=null,this._deflate[l]=0,this._deflate[d]=[],t&&this.params[`${a}_no_context_takeover`]&&this._deflate.reset(),i(null,e)})}};function m(e){this[d].push(e),this[l]+=e.length}function h(e){if(this[l]+=e.length,this[c]._maxPayload<1||this[l]<=this[c]._maxPayload){this[d].push(e);return}this[f]=RangeError(`Max payload size exceeded`),this[f].code=`WS_ERR_UNSUPPORTED_MESSAGE_LENGTH`,this[f][a]=1009,this.removeListener(`data`,h),this.reset()}function g(e){if(this[c]._inflate=null,this[f]){this[u](this[f]);return}e[a]=1007,this[u](e)}})),Zr=R(((e,t)=>{let{isUtf8:n}=B(`buffer`),{hasBlob:r}=qr(),i=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,1,1,1,1,0,0,1,1,0,1,1,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0,1,0];function a(e){return e>=1e3&&e<=1014&&e!==1004&&e!==1005&&e!==1006||e>=3e3&&e<=4999}function o(e){let t=e.length,n=0;for(;n<t;)if(!(e[n]&128))n++;else if((e[n]&224)==192){if(n+1===t||(e[n+1]&192)!=128||(e[n]&254)==192)return!1;n+=2}else if((e[n]&240)==224){if(n+2>=t||(e[n+1]&192)!=128||(e[n+2]&192)!=128||e[n]===224&&(e[n+1]&224)==128||e[n]===237&&(e[n+1]&224)==160)return!1;n+=3}else if((e[n]&248)==240){if(n+3>=t||(e[n+1]&192)!=128||(e[n+2]&192)!=128||(e[n+3]&192)!=128||e[n]===240&&(e[n+1]&240)==128||e[n]===244&&e[n+1]>143||e[n]>244)return!1;n+=4}else return!1;return!0}function s(e){return r&&typeof e==`object`&&typeof e.arrayBuffer==`function`&&typeof e.type==`string`&&typeof e.stream==`function`&&(e[Symbol.toStringTag]===`Blob`||e[Symbol.toStringTag]===`File`)}if(t.exports={isBlob:s,isValidStatusCode:a,isValidUTF8:o,tokenChars:i},n)t.exports.isValidUTF8=function(e){return e.length<24?o(e):n(e)};else if(!process.env.WS_NO_UTF_8_VALIDATE)try{let e=B(`utf-8-validate`);t.exports.isValidUTF8=function(t){return t.length<32?o(t):e(t)}}catch{}})),Qr=R(((e,t)=>{let{Writable:n}=B(`stream`),r=Xr(),{BINARY_TYPES:i,EMPTY_BUFFER:a,kStatusCode:o,kWebSocket:s}=qr(),{concat:c,toArrayBuffer:l,unmask:u}=Jr(),{isValidStatusCode:d,isValidUTF8:f}=Zr(),p=Buffer[Symbol.species];t.exports=class extends n{constructor(e={}){super(),this._allowSynchronousEvents=e.allowSynchronousEvents===void 0?!0:e.allowSynchronousEvents,this._binaryType=e.binaryType||i[0],this._extensions=e.extensions||{},this._isServer=!!e.isServer,this._maxPayload=e.maxPayload|0,this._skipUTF8Validation=!!e.skipUTF8Validation,this[s]=void 0,this._bufferedBytes=0,this._buffers=[],this._compressed=!1,this._payloadLength=0,this._mask=void 0,this._fragmented=0,this._masked=!1,this._fin=!1,this._opcode=0,this._totalPayloadLength=0,this._messageLength=0,this._fragments=[],this._errored=!1,this._loop=!1,this._state=0}_write(e,t,n){if(this._opcode===8&&this._state==0)return n();this._bufferedBytes+=e.length,this._buffers.push(e),this.startLoop(n)}consume(e){if(this._bufferedBytes-=e,e===this._buffers[0].length)return this._buffers.shift();if(e<this._buffers[0].length){let t=this._buffers[0];return this._buffers[0]=new p(t.buffer,t.byteOffset+e,t.length-e),new p(t.buffer,t.byteOffset,e)}let t=Buffer.allocUnsafe(e);do{let n=this._buffers[0],r=t.length-e;e>=n.length?t.set(this._buffers.shift(),r):(t.set(new Uint8Array(n.buffer,n.byteOffset,e),r),this._buffers[0]=new p(n.buffer,n.byteOffset+e,n.length-e)),e-=n.length}while(e>0);return t}startLoop(e){this._loop=!0;do switch(this._state){case 0:this.getInfo(e);break;case 1:this.getPayloadLength16(e);break;case 2:this.getPayloadLength64(e);break;case 3:this.getMask();break;case 4:this.getData(e);break;case 5:case 6:this._loop=!1;return}while(this._loop);this._errored||e()}getInfo(e){if(this._bufferedBytes<2){this._loop=!1;return}let t=this.consume(2);if(t[0]&48){e(this.createError(RangeError,`RSV2 and RSV3 must be clear`,!0,1002,`WS_ERR_UNEXPECTED_RSV_2_3`));return}let n=(t[0]&64)==64;if(n&&!this._extensions[r.extensionName]){e(this.createError(RangeError,`RSV1 must be clear`,!0,1002,`WS_ERR_UNEXPECTED_RSV_1`));return}if(this._fin=(t[0]&128)==128,this._opcode=t[0]&15,this._payloadLength=t[1]&127,this._opcode===0){if(n){e(this.createError(RangeError,`RSV1 must be clear`,!0,1002,`WS_ERR_UNEXPECTED_RSV_1`));return}if(!this._fragmented){e(this.createError(RangeError,`invalid opcode 0`,!0,1002,`WS_ERR_INVALID_OPCODE`));return}this._opcode=this._fragmented}else if(this._opcode===1||this._opcode===2){if(this._fragmented){e(this.createError(RangeError,`invalid opcode ${this._opcode}`,!0,1002,`WS_ERR_INVALID_OPCODE`));return}this._compressed=n}else if(this._opcode>7&&this._opcode<11){if(!this._fin){e(this.createError(RangeError,`FIN must be set`,!0,1002,`WS_ERR_EXPECTED_FIN`));return}if(n){e(this.createError(RangeError,`RSV1 must be clear`,!0,1002,`WS_ERR_UNEXPECTED_RSV_1`));return}if(this._payloadLength>125||this._opcode===8&&this._payloadLength===1){e(this.createError(RangeError,`invalid payload length ${this._payloadLength}`,!0,1002,`WS_ERR_INVALID_CONTROL_PAYLOAD_LENGTH`));return}}else{e(this.createError(RangeError,`invalid opcode ${this._opcode}`,!0,1002,`WS_ERR_INVALID_OPCODE`));return}if(!this._fin&&!this._fragmented&&(this._fragmented=this._opcode),this._masked=(t[1]&128)==128,this._isServer){if(!this._masked){e(this.createError(RangeError,`MASK must be set`,!0,1002,`WS_ERR_EXPECTED_MASK`));return}}else if(this._masked){e(this.createError(RangeError,`MASK must be clear`,!0,1002,`WS_ERR_UNEXPECTED_MASK`));return}this._payloadLength===126?this._state=1:this._payloadLength===127?this._state=2:this.haveLength(e)}getPayloadLength16(e){if(this._bufferedBytes<2){this._loop=!1;return}this._payloadLength=this.consume(2).readUInt16BE(0),this.haveLength(e)}getPayloadLength64(e){if(this._bufferedBytes<8){this._loop=!1;return}let t=this.consume(8),n=t.readUInt32BE(0);if(n>2**21-1){e(this.createError(RangeError,`Unsupported WebSocket frame: payload length > 2^53 - 1`,!1,1009,`WS_ERR_UNSUPPORTED_DATA_PAYLOAD_LENGTH`));return}this._payloadLength=n*2**32+t.readUInt32BE(4),this.haveLength(e)}haveLength(e){if(this._payloadLength&&this._opcode<8&&(this._totalPayloadLength+=this._payloadLength,this._totalPayloadLength>this._maxPayload&&this._maxPayload>0)){e(this.createError(RangeError,`Max payload size exceeded`,!1,1009,`WS_ERR_UNSUPPORTED_MESSAGE_LENGTH`));return}this._masked?this._state=3:this._state=4}getMask(){if(this._bufferedBytes<4){this._loop=!1;return}this._mask=this.consume(4),this._state=4}getData(e){let t=a;if(this._payloadLength){if(this._bufferedBytes<this._payloadLength){this._loop=!1;return}t=this.consume(this._payloadLength),this._masked&&(this._mask[0]|this._mask[1]|this._mask[2]|this._mask[3])!==0&&u(t,this._mask)}if(this._opcode>7){this.controlMessage(t,e);return}if(this._compressed){this._state=5,this.decompress(t,e);return}t.length&&(this._messageLength=this._totalPayloadLength,this._fragments.push(t)),this.dataMessage(e)}decompress(e,t){this._extensions[r.extensionName].decompress(e,this._fin,(e,n)=>{if(e)return t(e);if(n.length){if(this._messageLength+=n.length,this._messageLength>this._maxPayload&&this._maxPayload>0){t(this.createError(RangeError,`Max payload size exceeded`,!1,1009,`WS_ERR_UNSUPPORTED_MESSAGE_LENGTH`));return}this._fragments.push(n)}this.dataMessage(t),this._state===0&&this.startLoop(t)})}dataMessage(e){if(!this._fin){this._state=0;return}let t=this._messageLength,n=this._fragments;if(this._totalPayloadLength=0,this._messageLength=0,this._fragmented=0,this._fragments=[],this._opcode===2){let r;r=this._binaryType===`nodebuffer`?c(n,t):this._binaryType===`arraybuffer`?l(c(n,t)):this._binaryType===`blob`?new Blob(n):n,this._allowSynchronousEvents?(this.emit(`message`,r,!0),this._state=0):(this._state=6,setImmediate(()=>{this.emit(`message`,r,!0),this._state=0,this.startLoop(e)}))}else{let r=c(n,t);if(!this._skipUTF8Validation&&!f(r)){e(this.createError(Error,`invalid UTF-8 sequence`,!0,1007,`WS_ERR_INVALID_UTF8`));return}this._state===5||this._allowSynchronousEvents?(this.emit(`message`,r,!1),this._state=0):(this._state=6,setImmediate(()=>{this.emit(`message`,r,!1),this._state=0,this.startLoop(e)}))}}controlMessage(e,t){if(this._opcode===8){if(e.length===0)this._loop=!1,this.emit(`conclude`,1005,a),this.end();else{let n=e.readUInt16BE(0);if(!d(n)){t(this.createError(RangeError,`invalid status code ${n}`,!0,1002,`WS_ERR_INVALID_CLOSE_CODE`));return}let r=new p(e.buffer,e.byteOffset+2,e.length-2);if(!this._skipUTF8Validation&&!f(r)){t(this.createError(Error,`invalid UTF-8 sequence`,!0,1007,`WS_ERR_INVALID_UTF8`));return}this._loop=!1,this.emit(`conclude`,n,r),this.end()}this._state=0;return}this._allowSynchronousEvents?(this.emit(this._opcode===9?`ping`:`pong`,e),this._state=0):(this._state=6,setImmediate(()=>{this.emit(this._opcode===9?`ping`:`pong`,e),this._state=0,this.startLoop(t)}))}createError(e,t,n,r,i){this._loop=!1,this._errored=!0;let a=new e(n?`Invalid WebSocket frame: ${t}`:t);return Error.captureStackTrace(a,this.createError),a.code=i,a[o]=r,a}}})),$r=R(((e,t)=>{let{Duplex:n}=B(`stream`),{randomFillSync:r}=B(`crypto`),i=Xr(),{EMPTY_BUFFER:a,kWebSocket:o,NOOP:s}=qr(),{isBlob:c,isValidStatusCode:l}=Zr(),{mask:u,toBuffer:d}=Jr(),f=Symbol(`kByteLength`),p=Buffer.alloc(4),m=8*1024,h,g=m;t.exports=class e{constructor(e,t,n){this._extensions=t||{},n&&(this._generateMask=n,this._maskBuffer=Buffer.alloc(4)),this._socket=e,this._firstFragment=!0,this._compress=!1,this._bufferedBytes=0,this._queue=[],this._state=0,this.onerror=s,this[o]=void 0}static frame(e,t){let n,i=!1,a=2,o=!1;t.mask&&(n=t.maskBuffer||p,t.generateMask?t.generateMask(n):(g===m&&(h===void 0&&(h=Buffer.alloc(m)),r(h,0,m),g=0),n[0]=h[g++],n[1]=h[g++],n[2]=h[g++],n[3]=h[g++]),o=(n[0]|n[1]|n[2]|n[3])===0,a=6);let s;typeof e==`string`?(!t.mask||o)&&t[f]!==void 0?s=t[f]:(e=Buffer.from(e),s=e.length):(s=e.length,i=t.mask&&t.readOnly&&!o);let c=s;s>=65536?(a+=8,c=127):s>125&&(a+=2,c=126);let l=Buffer.allocUnsafe(i?s+a:a);return l[0]=t.fin?t.opcode|128:t.opcode,t.rsv1&&(l[0]|=64),l[1]=c,c===126?l.writeUInt16BE(s,2):c===127&&(l[2]=l[3]=0,l.writeUIntBE(s,4,6)),!t.mask||(l[1]|=128,l[a-4]=n[0],l[a-3]=n[1],l[a-2]=n[2],l[a-1]=n[3],o)?[l,e]:i?(u(e,n,l,a,s),[l]):(u(e,n,e,0,s),[l,e])}close(t,n,r,i){let o;if(t===void 0)o=a;else if(typeof t!=`number`||!l(t))throw TypeError(`First argument must be a valid error code number`);else if(n===void 0||!n.length)o=Buffer.allocUnsafe(2),o.writeUInt16BE(t,0);else{let e=Buffer.byteLength(n);if(e>123)throw RangeError(`The message must not be greater than 123 bytes`);o=Buffer.allocUnsafe(2+e),o.writeUInt16BE(t,0),typeof n==`string`?o.write(n,2):o.set(n,2)}let s={[f]:o.length,fin:!0,generateMask:this._generateMask,mask:r,maskBuffer:this._maskBuffer,opcode:8,readOnly:!1,rsv1:!1};this._state===0?this.sendFrame(e.frame(o,s),i):this.enqueue([this.dispatch,o,!1,s,i])}ping(t,n,r){let i,a;if(typeof t==`string`?(i=Buffer.byteLength(t),a=!1):c(t)?(i=t.size,a=!1):(t=d(t),i=t.length,a=d.readOnly),i>125)throw RangeError(`The data size must not be greater than 125 bytes`);let o={[f]:i,fin:!0,generateMask:this._generateMask,mask:n,maskBuffer:this._maskBuffer,opcode:9,readOnly:a,rsv1:!1};c(t)?this._state===0?this.getBlobData(t,!1,o,r):this.enqueue([this.getBlobData,t,!1,o,r]):this._state===0?this.sendFrame(e.frame(t,o),r):this.enqueue([this.dispatch,t,!1,o,r])}pong(t,n,r){let i,a;if(typeof t==`string`?(i=Buffer.byteLength(t),a=!1):c(t)?(i=t.size,a=!1):(t=d(t),i=t.length,a=d.readOnly),i>125)throw RangeError(`The data size must not be greater than 125 bytes`);let o={[f]:i,fin:!0,generateMask:this._generateMask,mask:n,maskBuffer:this._maskBuffer,opcode:10,readOnly:a,rsv1:!1};c(t)?this._state===0?this.getBlobData(t,!1,o,r):this.enqueue([this.getBlobData,t,!1,o,r]):this._state===0?this.sendFrame(e.frame(t,o),r):this.enqueue([this.dispatch,t,!1,o,r])}send(e,t,n){let r=this._extensions[i.extensionName],a=t.binary?2:1,o=t.compress,s,l;typeof e==`string`?(s=Buffer.byteLength(e),l=!1):c(e)?(s=e.size,l=!1):(e=d(e),s=e.length,l=d.readOnly),this._firstFragment?(this._firstFragment=!1,o&&r&&r.params[r._isServer?`server_no_context_takeover`:`client_no_context_takeover`]&&(o=s>=r._threshold),this._compress=o):(o=!1,a=0),t.fin&&(this._firstFragment=!0);let u={[f]:s,fin:t.fin,generateMask:this._generateMask,mask:t.mask,maskBuffer:this._maskBuffer,opcode:a,readOnly:l,rsv1:o};c(e)?this._state===0?this.getBlobData(e,this._compress,u,n):this.enqueue([this.getBlobData,e,this._compress,u,n]):this._state===0?this.dispatch(e,this._compress,u,n):this.enqueue([this.dispatch,e,this._compress,u,n])}getBlobData(t,n,r,i){this._bufferedBytes+=r[f],this._state=2,t.arrayBuffer().then(t=>{if(this._socket.destroyed){let e=Error(`The socket was closed while the blob was being read`);process.nextTick(_,this,e,i);return}this._bufferedBytes-=r[f];let a=d(t);n?this.dispatch(a,n,r,i):(this._state=0,this.sendFrame(e.frame(a,r),i),this.dequeue())}).catch(e=>{process.nextTick(v,this,e,i)})}dispatch(t,n,r,a){if(!n){this.sendFrame(e.frame(t,r),a);return}let o=this._extensions[i.extensionName];this._bufferedBytes+=r[f],this._state=1,o.compress(t,r.fin,(t,n)=>{if(this._socket.destroyed){let e=Error(`The socket was closed while data was being compressed`);_(this,e,a);return}this._bufferedBytes-=r[f],this._state=0,r.readOnly=!1,this.sendFrame(e.frame(n,r),a),this.dequeue()})}dequeue(){for(;this._state===0&&this._queue.length;){let e=this._queue.shift();this._bufferedBytes-=e[3][f],Reflect.apply(e[0],this,e.slice(1))}}enqueue(e){this._bufferedBytes+=e[3][f],this._queue.push(e)}sendFrame(e,t){e.length===2?(this._socket.cork(),this._socket.write(e[0]),this._socket.write(e[1],t),this._socket.uncork()):this._socket.write(e[0],t)}};function _(e,t,n){typeof n==`function`&&n(t);for(let n=0;n<e._queue.length;n++){let r=e._queue[n],i=r[r.length-1];typeof i==`function`&&i(t)}}function v(e,t,n){_(e,t,n),e.onerror(t)}})),ei=R(((e,t)=>{let{kForOnEventAttribute:n,kListener:r}=qr(),i=Symbol(`kCode`),a=Symbol(`kData`),o=Symbol(`kError`),s=Symbol(`kMessage`),c=Symbol(`kReason`),l=Symbol(`kTarget`),u=Symbol(`kType`),d=Symbol(`kWasClean`);var f=class{constructor(e){this[l]=null,this[u]=e}get target(){return this[l]}get type(){return this[u]}};Object.defineProperty(f.prototype,`target`,{enumerable:!0}),Object.defineProperty(f.prototype,`type`,{enumerable:!0});var p=class extends f{constructor(e,t={}){super(e),this[i]=t.code===void 0?0:t.code,this[c]=t.reason===void 0?``:t.reason,this[d]=t.wasClean===void 0?!1:t.wasClean}get code(){return this[i]}get reason(){return this[c]}get wasClean(){return this[d]}};Object.defineProperty(p.prototype,`code`,{enumerable:!0}),Object.defineProperty(p.prototype,`reason`,{enumerable:!0}),Object.defineProperty(p.prototype,`wasClean`,{enumerable:!0});var m=class extends f{constructor(e,t={}){super(e),this[o]=t.error===void 0?null:t.error,this[s]=t.message===void 0?``:t.message}get error(){return this[o]}get message(){return this[s]}};Object.defineProperty(m.prototype,`error`,{enumerable:!0}),Object.defineProperty(m.prototype,`message`,{enumerable:!0});var h=class extends f{constructor(e,t={}){super(e),this[a]=t.data===void 0?null:t.data}get data(){return this[a]}};Object.defineProperty(h.prototype,`data`,{enumerable:!0}),t.exports={CloseEvent:p,ErrorEvent:m,Event:f,EventTarget:{addEventListener(e,t,i={}){for(let a of this.listeners(e))if(!i[n]&&a[r]===t&&!a[n])return;let a;if(e===`message`)a=function(e,n){let r=new h(`message`,{data:n?e:e.toString()});r[l]=this,g(t,this,r)};else if(e===`close`)a=function(e,n){let r=new p(`close`,{code:e,reason:n.toString(),wasClean:this._closeFrameReceived&&this._closeFrameSent});r[l]=this,g(t,this,r)};else if(e===`error`)a=function(e){let n=new m(`error`,{error:e,message:e.message});n[l]=this,g(t,this,n)};else if(e===`open`)a=function(){let e=new f(`open`);e[l]=this,g(t,this,e)};else return;a[n]=!!i[n],a[r]=t,i.once?this.once(e,a):this.on(e,a)},removeEventListener(e,t){for(let i of this.listeners(e))if(i[r]===t&&!i[n]){this.removeListener(e,i);break}}},MessageEvent:h};function g(e,t,n){typeof e==`object`&&e.handleEvent?e.handleEvent.call(e,n):e.call(t,n)}})),ti=R(((e,t)=>{let{tokenChars:n}=Zr();function r(e,t,n){e[t]===void 0?e[t]=[n]:e[t].push(n)}function i(e){let t=Object.create(null),i=Object.create(null),a=!1,o=!1,s=!1,c,l,u=-1,d=-1,f=-1,p=0;for(;p<e.length;p++)if(d=e.charCodeAt(p),c===void 0)if(f===-1&&n[d]===1)u===-1&&(u=p);else if(p!==0&&(d===32||d===9))f===-1&&u!==-1&&(f=p);else if(d===59||d===44){if(u===-1)throw SyntaxError(`Unexpected character at index ${p}`);f===-1&&(f=p);let n=e.slice(u,f);d===44?(r(t,n,i),i=Object.create(null)):c=n,u=f=-1}else throw SyntaxError(`Unexpected character at index ${p}`);else if(l===void 0)if(f===-1&&n[d]===1)u===-1&&(u=p);else if(d===32||d===9)f===-1&&u!==-1&&(f=p);else if(d===59||d===44){if(u===-1)throw SyntaxError(`Unexpected character at index ${p}`);f===-1&&(f=p),r(i,e.slice(u,f),!0),d===44&&(r(t,c,i),i=Object.create(null),c=void 0),u=f=-1}else if(d===61&&u!==-1&&f===-1)l=e.slice(u,p),u=f=-1;else throw SyntaxError(`Unexpected character at index ${p}`);else if(o){if(n[d]!==1)throw SyntaxError(`Unexpected character at index ${p}`);u===-1?u=p:a||=!0,o=!1}else if(s)if(n[d]===1)u===-1&&(u=p);else if(d===34&&u!==-1)s=!1,f=p;else if(d===92)o=!0;else throw SyntaxError(`Unexpected character at index ${p}`);else if(d===34&&e.charCodeAt(p-1)===61)s=!0;else if(f===-1&&n[d]===1)u===-1&&(u=p);else if(u!==-1&&(d===32||d===9))f===-1&&(f=p);else if(d===59||d===44){if(u===-1)throw SyntaxError(`Unexpected character at index ${p}`);f===-1&&(f=p);let n=e.slice(u,f);a&&=(n=n.replace(/\\/g,``),!1),r(i,l,n),d===44&&(r(t,c,i),i=Object.create(null),c=void 0),l=void 0,u=f=-1}else throw SyntaxError(`Unexpected character at index ${p}`);if(u===-1||s||d===32||d===9)throw SyntaxError(`Unexpected end of input`);f===-1&&(f=p);let m=e.slice(u,f);return c===void 0?r(t,m,i):(l===void 0?r(i,m,!0):a?r(i,l,m.replace(/\\/g,``)):r(i,l,m),r(t,c,i)),t}function a(e){return Object.keys(e).map(t=>{let n=e[t];return Array.isArray(n)||(n=[n]),n.map(e=>[t].concat(Object.keys(e).map(t=>{let n=e[t];return Array.isArray(n)||(n=[n]),n.map(e=>e===!0?t:`${t}=${e}`).join(`; `)})).join(`; `)).join(`, `)}).join(`, `)}t.exports={format:a,parse:i}})),ni=R(((e,t)=>{let n=B(`events`),r=B(`https`),i=B(`http`),a=B(`net`),o=B(`tls`),{randomBytes:s,createHash:c}=B(`crypto`),{Duplex:l,Readable:u}=B(`stream`),{URL:d}=B(`url`),f=Xr(),p=Qr(),m=$r(),{isBlob:h}=Zr(),{BINARY_TYPES:g,CLOSE_TIMEOUT:_,EMPTY_BUFFER:v,GUID:y,kForOnEventAttribute:b,kListener:x,kStatusCode:S,kWebSocket:C,NOOP:w}=qr(),{EventTarget:{addEventListener:T,removeEventListener:E}}=ei(),{format:D,parse:O}=ti(),{toBuffer:k}=Jr(),A=Symbol(`kAborted`),j=[8,13],M=[`CONNECTING`,`OPEN`,`CLOSING`,`CLOSED`],N=/^[!#$%&'*+\-.0-9A-Z^_`|a-z~]+$/;var P=class e extends n{constructor(t,n,r){super(),this._binaryType=g[0],this._closeCode=1006,this._closeFrameReceived=!1,this._closeFrameSent=!1,this._closeMessage=v,this._closeTimer=null,this._errorEmitted=!1,this._extensions={},this._paused=!1,this._protocol=``,this._readyState=e.CONNECTING,this._receiver=null,this._sender=null,this._socket=null,t===null?(this._autoPong=r.autoPong,this._closeTimeout=r.closeTimeout,this._isServer=!0):(this._bufferedAmount=0,this._isServer=!1,this._redirects=0,n===void 0?n=[]:Array.isArray(n)||(typeof n==`object`&&n?(r=n,n=[]):n=[n]),ee(this,t,n,r))}get binaryType(){return this._binaryType}set binaryType(e){g.includes(e)&&(this._binaryType=e,this._receiver&&(this._receiver._binaryType=e))}get bufferedAmount(){return this._socket?this._socket._writableState.length+this._sender._bufferedBytes:this._bufferedAmount}get extensions(){return Object.keys(this._extensions).join()}get isPaused(){return this._paused}get onclose(){return null}get onerror(){return null}get onopen(){return null}get onmessage(){return null}get protocol(){return this._protocol}get readyState(){return this._readyState}get url(){return this._url}setSocket(t,n,r){let i=new p({allowSynchronousEvents:r.allowSynchronousEvents,binaryType:this.binaryType,extensions:this._extensions,isServer:this._isServer,maxPayload:r.maxPayload,skipUTF8Validation:r.skipUTF8Validation}),a=new m(t,this._extensions,r.generateMask);this._receiver=i,this._sender=a,this._socket=t,i[C]=this,a[C]=this,t[C]=this,i.on(`conclude`,ie),i.on(`drain`,ae),i.on(`error`,oe),i.on(`message`,ce),i.on(`ping`,L),i.on(`pong`,R),a.onerror=ue,t.setTimeout&&t.setTimeout(0),t.setNoDelay&&t.setNoDelay(),n.length>0&&t.unshift(n),t.on(`close`,V),t.on(`data`,de),t.on(`end`,fe),t.on(`error`,pe),this._readyState=e.OPEN,this.emit(`open`)}emitClose(){if(!this._socket){this._readyState=e.CLOSED,this.emit(`close`,this._closeCode,this._closeMessage);return}this._extensions[f.extensionName]&&this._extensions[f.extensionName].cleanup(),this._receiver.removeAllListeners(),this._readyState=e.CLOSED,this.emit(`close`,this._closeCode,this._closeMessage)}close(t,n){if(this.readyState!==e.CLOSED){if(this.readyState===e.CONNECTING){I(this,this._req,`WebSocket was closed before the connection was established`);return}if(this.readyState===e.CLOSING){this._closeFrameSent&&(this._closeFrameReceived||this._receiver._writableState.errorEmitted)&&this._socket.end();return}this._readyState=e.CLOSING,this._sender.close(t,n,!this._isServer,e=>{e||(this._closeFrameSent=!0,(this._closeFrameReceived||this._receiver._writableState.errorEmitted)&&this._socket.end())}),z(this)}}pause(){this.readyState===e.CONNECTING||this.readyState===e.CLOSED||(this._paused=!0,this._socket.pause())}ping(t,n,r){if(this.readyState===e.CONNECTING)throw Error(`WebSocket is not open: readyState 0 (CONNECTING)`);if(typeof t==`function`?(r=t,t=n=void 0):typeof n==`function`&&(r=n,n=void 0),typeof t==`number`&&(t=t.toString()),this.readyState!==e.OPEN){re(this,t,r);return}n===void 0&&(n=!this._isServer),this._sender.ping(t||v,n,r)}pong(t,n,r){if(this.readyState===e.CONNECTING)throw Error(`WebSocket is not open: readyState 0 (CONNECTING)`);if(typeof t==`function`?(r=t,t=n=void 0):typeof n==`function`&&(r=n,n=void 0),typeof t==`number`&&(t=t.toString()),this.readyState!==e.OPEN){re(this,t,r);return}n===void 0&&(n=!this._isServer),this._sender.pong(t||v,n,r)}resume(){this.readyState===e.CONNECTING||this.readyState===e.CLOSED||(this._paused=!1,this._receiver._writableState.needDrain||this._socket.resume())}send(t,n,r){if(this.readyState===e.CONNECTING)throw Error(`WebSocket is not open: readyState 0 (CONNECTING)`);if(typeof n==`function`&&(r=n,n={}),typeof t==`number`&&(t=t.toString()),this.readyState!==e.OPEN){re(this,t,r);return}let i={binary:typeof t!=`string`,mask:!this._isServer,compress:!0,fin:!0,...n};this._extensions[f.extensionName]||(i.compress=!1),this._sender.send(t||v,i,r)}terminate(){if(this.readyState!==e.CLOSED){if(this.readyState===e.CONNECTING){I(this,this._req,`WebSocket was closed before the connection was established`);return}this._socket&&(this._readyState=e.CLOSING,this._socket.destroy())}}};Object.defineProperty(P,`CONNECTING`,{enumerable:!0,value:M.indexOf(`CONNECTING`)}),Object.defineProperty(P.prototype,`CONNECTING`,{enumerable:!0,value:M.indexOf(`CONNECTING`)}),Object.defineProperty(P,`OPEN`,{enumerable:!0,value:M.indexOf(`OPEN`)}),Object.defineProperty(P.prototype,`OPEN`,{enumerable:!0,value:M.indexOf(`OPEN`)}),Object.defineProperty(P,`CLOSING`,{enumerable:!0,value:M.indexOf(`CLOSING`)}),Object.defineProperty(P.prototype,`CLOSING`,{enumerable:!0,value:M.indexOf(`CLOSING`)}),Object.defineProperty(P,`CLOSED`,{enumerable:!0,value:M.indexOf(`CLOSED`)}),Object.defineProperty(P.prototype,`CLOSED`,{enumerable:!0,value:M.indexOf(`CLOSED`)}),[`binaryType`,`bufferedAmount`,`extensions`,`isPaused`,`protocol`,`readyState`,`url`].forEach(e=>{Object.defineProperty(P.prototype,e,{enumerable:!0})}),[`open`,`error`,`close`,`message`].forEach(e=>{Object.defineProperty(P.prototype,`on${e}`,{enumerable:!0,get(){for(let t of this.listeners(e))if(t[b])return t[x];return null},set(t){for(let t of this.listeners(e))if(t[b]){this.removeListener(e,t);break}typeof t==`function`&&this.addEventListener(e,t,{[b]:!0})}})}),P.prototype.addEventListener=T,P.prototype.removeEventListener=E,t.exports=P;function ee(e,t,n,a){let o={allowSynchronousEvents:!0,autoPong:!0,closeTimeout:_,protocolVersion:j[1],maxPayload:100*1024*1024,skipUTF8Validation:!1,perMessageDeflate:!0,followRedirects:!1,maxRedirects:10,...a,socketPath:void 0,hostname:void 0,protocol:void 0,timeout:void 0,method:`GET`,host:void 0,path:void 0,port:void 0};if(e._autoPong=o.autoPong,e._closeTimeout=o.closeTimeout,!j.includes(o.protocolVersion))throw RangeError(`Unsupported protocol version: ${o.protocolVersion} (supported versions: ${j.join(`, `)})`);let l;if(t instanceof d)l=t;else try{l=new d(t)}catch{throw SyntaxError(`Invalid URL: ${t}`)}l.protocol===`http:`?l.protocol=`ws:`:l.protocol===`https:`&&(l.protocol=`wss:`),e._url=l.href;let u=l.protocol===`wss:`,p=l.protocol===`ws+unix:`,m;if(l.protocol!==`ws:`&&!u&&!p?m=`The URL's protocol must be one of "ws:", "wss:", "http:", "https:", or "ws+unix:"`:p&&!l.pathname?m=`The URL's pathname is empty`:l.hash&&(m=`The URL contains a fragment identifier`),m){let t=SyntaxError(m);if(e._redirects===0)throw t;F(e,t);return}let h=u?443:80,g=s(16).toString(`base64`),v=u?r.request:i.request,b=new Set,x;if(o.createConnection=o.createConnection||(u?ne:te),o.defaultPort=o.defaultPort||h,o.port=l.port||h,o.host=l.hostname.startsWith(`[`)?l.hostname.slice(1,-1):l.hostname,o.headers={...o.headers,"Sec-WebSocket-Version":o.protocolVersion,"Sec-WebSocket-Key":g,Connection:`Upgrade`,Upgrade:`websocket`},o.path=l.pathname+l.search,o.timeout=o.handshakeTimeout,o.perMessageDeflate&&(x=new f({...o.perMessageDeflate,isServer:!1,maxPayload:o.maxPayload}),o.headers[`Sec-WebSocket-Extensions`]=D({[f.extensionName]:x.offer()})),n.length){for(let e of n){if(typeof e!=`string`||!N.test(e)||b.has(e))throw SyntaxError(`An invalid or duplicated subprotocol was specified`);b.add(e)}o.headers[`Sec-WebSocket-Protocol`]=n.join(`,`)}if(o.origin&&(o.protocolVersion<13?o.headers[`Sec-WebSocket-Origin`]=o.origin:o.headers.Origin=o.origin),(l.username||l.password)&&(o.auth=`${l.username}:${l.password}`),p){let e=o.path.split(`:`);o.socketPath=e[0],o.path=e[1]}let S;if(o.followRedirects){if(e._redirects===0){e._originalIpc=p,e._originalSecure=u,e._originalHostOrSocketPath=p?o.socketPath:l.host;let t=a&&a.headers;if(a={...a,headers:{}},t)for(let[e,n]of Object.entries(t))a.headers[e.toLowerCase()]=n}else if(e.listenerCount(`redirect`)===0){let t=p?e._originalIpc?o.socketPath===e._originalHostOrSocketPath:!1:e._originalIpc?!1:l.host===e._originalHostOrSocketPath;(!t||e._originalSecure&&!u)&&(delete o.headers.authorization,delete o.headers.cookie,t||delete o.headers.host,o.auth=void 0)}o.auth&&!a.headers.authorization&&(a.headers.authorization=`Basic `+Buffer.from(o.auth).toString(`base64`)),S=e._req=v(o),e._redirects&&e.emit(`redirect`,e.url,S)}else S=e._req=v(o);o.timeout&&S.on(`timeout`,()=>{I(e,S,`Opening handshake has timed out`)}),S.on(`error`,t=>{S===null||S[A]||(S=e._req=null,F(e,t))}),S.on(`response`,r=>{let i=r.headers.location,s=r.statusCode;if(i&&o.followRedirects&&s>=300&&s<400){if(++e._redirects>o.maxRedirects){I(e,S,`Maximum redirects exceeded`);return}S.abort();let r;try{r=new d(i,t)}catch{F(e,SyntaxError(`Invalid URL: ${i}`));return}ee(e,r,n,a)}else e.emit(`unexpected-response`,S,r)||I(e,S,`Unexpected server response: ${r.statusCode}`)}),S.on(`upgrade`,(t,n,r)=>{if(e.emit(`upgrade`,t),e.readyState!==P.CONNECTING)return;S=e._req=null;let i=t.headers.upgrade;if(i===void 0||i.toLowerCase()!==`websocket`){I(e,n,`Invalid Upgrade header`);return}let a=c(`sha1`).update(g+y).digest(`base64`);if(t.headers[`sec-websocket-accept`]!==a){I(e,n,`Invalid Sec-WebSocket-Accept header`);return}let s=t.headers[`sec-websocket-protocol`],l;if(s===void 0?b.size&&(l=`Server sent no subprotocol`):b.size?b.has(s)||(l=`Server sent an invalid subprotocol`):l=`Server sent a subprotocol but none was requested`,l){I(e,n,l);return}s&&(e._protocol=s);let u=t.headers[`sec-websocket-extensions`];if(u!==void 0){if(!x){I(e,n,`Server sent a Sec-WebSocket-Extensions header but no extension was requested`);return}let t;try{t=O(u)}catch{I(e,n,`Invalid Sec-WebSocket-Extensions header`);return}let r=Object.keys(t);if(r.length!==1||r[0]!==f.extensionName){I(e,n,`Server indicated an extension that was not requested`);return}try{x.accept(t[f.extensionName])}catch{I(e,n,`Invalid Sec-WebSocket-Extensions header`);return}e._extensions[f.extensionName]=x}e.setSocket(n,r,{allowSynchronousEvents:o.allowSynchronousEvents,generateMask:o.generateMask,maxPayload:o.maxPayload,skipUTF8Validation:o.skipUTF8Validation})}),o.finishRequest?o.finishRequest(S,e):S.end()}function F(e,t){e._readyState=P.CLOSING,e._errorEmitted=!0,e.emit(`error`,t),e.emitClose()}function te(e){return e.path=e.socketPath,a.connect(e)}function ne(e){return e.path=void 0,!e.servername&&e.servername!==``&&(e.servername=a.isIP(e.host)?``:e.host),o.connect(e)}function I(e,t,n){e._readyState=P.CLOSING;let r=Error(n);Error.captureStackTrace(r,I),t.setHeader?(t[A]=!0,t.abort(),t.socket&&!t.socket.destroyed&&t.socket.destroy(),process.nextTick(F,e,r)):(t.destroy(r),t.once(`error`,e.emit.bind(e,`error`)),t.once(`close`,e.emitClose.bind(e)))}function re(e,t,n){if(t){let n=h(t)?t.size:k(t).length;e._socket?e._sender._bufferedBytes+=n:e._bufferedAmount+=n}if(n){let t=Error(`WebSocket is not open: readyState ${e.readyState} (${M[e.readyState]})`);process.nextTick(n,t)}}function ie(e,t){let n=this[C];n._closeFrameReceived=!0,n._closeMessage=t,n._closeCode=e,n._socket[C]!==void 0&&(n._socket.removeListener(`data`,de),process.nextTick(le,n._socket),e===1005?n.close():n.close(e,t))}function ae(){let e=this[C];e.isPaused||e._socket.resume()}function oe(e){let t=this[C];t._socket[C]!==void 0&&(t._socket.removeListener(`data`,de),process.nextTick(le,t._socket),t.close(e[S])),t._errorEmitted||(t._errorEmitted=!0,t.emit(`error`,e))}function se(){this[C].emitClose()}function ce(e,t){this[C].emit(`message`,e,t)}function L(e){let t=this[C];t._autoPong&&t.pong(e,!this._isServer,w),t.emit(`ping`,e)}function R(e){this[C].emit(`pong`,e)}function le(e){e.resume()}function ue(e){let t=this[C];t.readyState!==P.CLOSED&&(t.readyState===P.OPEN&&(t._readyState=P.CLOSING,z(t)),this._socket.end(),t._errorEmitted||(t._errorEmitted=!0,t.emit(`error`,e)))}function z(e){e._closeTimer=setTimeout(e._socket.destroy.bind(e._socket),e._closeTimeout)}function V(){let e=this[C];if(this.removeListener(`close`,V),this.removeListener(`data`,de),this.removeListener(`end`,fe),e._readyState=P.CLOSING,!this._readableState.endEmitted&&!e._closeFrameReceived&&!e._receiver._writableState.errorEmitted&&this._readableState.length!==0){let t=this.read(this._readableState.length);e._receiver.write(t)}e._receiver.end(),this[C]=void 0,clearTimeout(e._closeTimer),e._receiver._writableState.finished||e._receiver._writableState.errorEmitted?e.emitClose():(e._receiver.on(`error`,se),e._receiver.on(`finish`,se))}function de(e){this[C]._receiver.write(e)||this.pause()}function fe(){let e=this[C];e._readyState=P.CLOSING,e._receiver.end(),this.end()}function pe(){let e=this[C];this.removeListener(`error`,pe),this.on(`error`,w),e&&(e._readyState=P.CLOSING,this.destroy())}})),ri=R(((e,t)=>{ni();let{Duplex:n}=B(`stream`);function r(e){e.emit(`close`)}function i(){!this.destroyed&&this._writableState.finished&&this.destroy()}function a(e){this.removeListener(`error`,a),this.destroy(),this.listenerCount(`error`)===0&&this.emit(`error`,e)}function o(e,t){let o=!0,s=new n({...t,autoDestroy:!1,emitClose:!1,objectMode:!1,writableObjectMode:!1});return e.on(`message`,function(t,n){let r=!n&&s._readableState.objectMode?t.toString():t;s.push(r)||e.pause()}),e.once(`error`,function(e){s.destroyed||(o=!1,s.destroy(e))}),e.once(`close`,function(){s.destroyed||s.push(null)}),s._destroy=function(t,n){if(e.readyState===e.CLOSED){n(t),process.nextTick(r,s);return}let i=!1;e.once(`error`,function(e){i=!0,n(e)}),e.once(`close`,function(){i||n(t),process.nextTick(r,s)}),o&&e.terminate()},s._final=function(t){if(e.readyState===e.CONNECTING){e.once(`open`,function(){s._final(t)});return}e._socket!==null&&(e._socket._writableState.finished?(t(),s._readableState.endEmitted&&s.destroy()):(e._socket.once(`finish`,function(){t()}),e.close()))},s._read=function(){e.isPaused&&e.resume()},s._write=function(t,n,r){if(e.readyState===e.CONNECTING){e.once(`open`,function(){s._write(t,n,r)});return}e.send(t,r)},s.on(`end`,i),s.on(`error`,a),s}t.exports=o})),ii=R(((e,t)=>{let{tokenChars:n}=Zr();function r(e){let t=new Set,r=-1,i=-1,a=0;for(;a<e.length;a++){let o=e.charCodeAt(a);if(i===-1&&n[o]===1)r===-1&&(r=a);else if(a!==0&&(o===32||o===9))i===-1&&r!==-1&&(i=a);else if(o===44){if(r===-1)throw SyntaxError(`Unexpected character at index ${a}`);i===-1&&(i=a);let n=e.slice(r,i);if(t.has(n))throw SyntaxError(`The "${n}" subprotocol is duplicated`);t.add(n),r=i=-1}else throw SyntaxError(`Unexpected character at index ${a}`)}if(r===-1||i!==-1)throw SyntaxError(`Unexpected end of input`);let o=e.slice(r,a);if(t.has(o))throw SyntaxError(`The "${o}" subprotocol is duplicated`);return t.add(o),t}t.exports={parse:r}})),ai=R(((e,t)=>{let n=B(`events`),r=B(`http`),{Duplex:i}=B(`stream`),{createHash:a}=B(`crypto`),o=ti(),s=Xr(),c=ii(),l=ni(),{CLOSE_TIMEOUT:u,GUID:d,kWebSocket:f}=qr(),p=/^[+/0-9A-Za-z]{22}==$/;t.exports=class extends n{constructor(e,t){if(super(),e={allowSynchronousEvents:!0,autoPong:!0,maxPayload:100*1024*1024,skipUTF8Validation:!1,perMessageDeflate:!1,handleProtocols:null,clientTracking:!0,closeTimeout:u,verifyClient:null,noServer:!1,backlog:null,server:null,host:null,path:null,port:null,WebSocket:l,...e},e.port==null&&!e.server&&!e.noServer||e.port!=null&&(e.server||e.noServer)||e.server&&e.noServer)throw TypeError(`One and only one of the "port", "server", or "noServer" options must be specified`);if(e.port==null?e.server&&(this._server=e.server):(this._server=r.createServer((e,t)=>{let n=r.STATUS_CODES[426];t.writeHead(426,{"Content-Length":n.length,"Content-Type":`text/plain`}),t.end(n)}),this._server.listen(e.port,e.host,e.backlog,t)),this._server){let e=this.emit.bind(this,`connection`);this._removeListeners=m(this._server,{listening:this.emit.bind(this,`listening`),error:this.emit.bind(this,`error`),upgrade:(t,n,r)=>{this.handleUpgrade(t,n,r,e)}})}e.perMessageDeflate===!0&&(e.perMessageDeflate={}),e.clientTracking&&(this.clients=new Set,this._shouldEmitClose=!1),this.options=e,this._state=0}address(){if(this.options.noServer)throw Error(`The server is operating in "noServer" mode`);return this._server?this._server.address():null}close(e){if(this._state===2){e&&this.once(`close`,()=>{e(Error(`The server is not running`))}),process.nextTick(h,this);return}if(e&&this.once(`close`,e),this._state!==1)if(this._state=1,this.options.noServer||this.options.server)this._server&&(this._removeListeners(),this._removeListeners=this._server=null),this.clients&&this.clients.size?this._shouldEmitClose=!0:process.nextTick(h,this);else{let e=this._server;this._removeListeners(),this._removeListeners=this._server=null,e.close(()=>{h(this)})}}shouldHandle(e){if(this.options.path){let t=e.url.indexOf(`?`);if((t===-1?e.url:e.url.slice(0,t))!==this.options.path)return!1}return!0}handleUpgrade(e,t,n,r){t.on(`error`,g);let i=e.headers[`sec-websocket-key`],a=e.headers.upgrade,l=+e.headers[`sec-websocket-version`];if(e.method!==`GET`){v(this,e,t,405,`Invalid HTTP method`);return}if(a===void 0||a.toLowerCase()!==`websocket`){v(this,e,t,400,`Invalid Upgrade header`);return}if(i===void 0||!p.test(i)){v(this,e,t,400,`Missing or invalid Sec-WebSocket-Key header`);return}if(l!==13&&l!==8){v(this,e,t,400,`Missing or invalid Sec-WebSocket-Version header`,{"Sec-WebSocket-Version":`13, 8`});return}if(!this.shouldHandle(e)){_(t,400);return}let u=e.headers[`sec-websocket-protocol`],d=new Set;if(u!==void 0)try{d=c.parse(u)}catch{v(this,e,t,400,`Invalid Sec-WebSocket-Protocol header`);return}let f=e.headers[`sec-websocket-extensions`],m={};if(this.options.perMessageDeflate&&f!==void 0){let n=new s({...this.options.perMessageDeflate,isServer:!0,maxPayload:this.options.maxPayload});try{let e=o.parse(f);e[s.extensionName]&&(n.accept(e[s.extensionName]),m[s.extensionName]=n)}catch{v(this,e,t,400,`Invalid or unacceptable Sec-WebSocket-Extensions header`);return}}if(this.options.verifyClient){let a={origin:e.headers[`${l===8?`sec-websocket-origin`:`origin`}`],secure:!!(e.socket.authorized||e.socket.encrypted),req:e};if(this.options.verifyClient.length===2){this.options.verifyClient(a,(a,o,s,c)=>{if(!a)return _(t,o||401,s,c);this.completeUpgrade(m,i,d,e,t,n,r)});return}if(!this.options.verifyClient(a))return _(t,401)}this.completeUpgrade(m,i,d,e,t,n,r)}completeUpgrade(e,t,n,r,i,c,l){if(!i.readable||!i.writable)return i.destroy();if(i[f])throw Error(`server.handleUpgrade() was called more than once with the same socket, possibly due to a misconfiguration`);if(this._state>0)return _(i,503);let u=[`HTTP/1.1 101 Switching Protocols`,`Upgrade: websocket`,`Connection: Upgrade`,`Sec-WebSocket-Accept: ${a(`sha1`).update(t+d).digest(`base64`)}`],p=new this.options.WebSocket(null,void 0,this.options);if(n.size){let e=this.options.handleProtocols?this.options.handleProtocols(n,r):n.values().next().value;e&&(u.push(`Sec-WebSocket-Protocol: ${e}`),p._protocol=e)}if(e[s.extensionName]){let t=e[s.extensionName].params,n=o.format({[s.extensionName]:[t]});u.push(`Sec-WebSocket-Extensions: ${n}`),p._extensions=e}this.emit(`headers`,u,r),i.write(u.concat(`\r
|
|
64
|
+
-----END RSA PUBLIC KEY-----`})}verify(e){this.version=JSON.parse(e.readAsText(`package.json`)).version,this.date=new Date(e.getEntry(`package.json`).header.time),this.date.setMinutes(this.date.getMinutes()-this.date.getTimezoneOffset());let[t,n,r]=this.version.split(`.`).map(e=>Number.parseInt(e,10));return t>1||n>0||r>1091?super.verify(e):!0}};async function Mr(e,t,n,r){let a=!1;Q.debug({path:t,latest:n,reuse:r,ssl:e},`Resolving distribution with update policy`);let o=new Fr,s=Ar(),c=e===`off`?`http`:`https`,l=`${c}://update.wallabyjs.com/`,u=l,d=t=>sr(`version`,`${t}wallaby.json?${s?`expiry=`+s.replace(/\//g,`-`):``}`,kr.versions,void 0,e!==`relaxed`),f=o.pinned,p=n?!1:!!t&&G.default.existsSync(t),m=i(kr.downloads,`wallaby.zip`);if(!p&&!n&&G.default.existsSync(m))try{t=await Pr(m),p=!!t&&G.default.existsSync(t),a=!0,Q.debug({path:t},`Recovered from cached archive`)}catch(e){Q.info({error:e,distFilePath:m},`Failed to recover from cached archive`)}let h;if(r&&p)h=o.read(t),Q.debug({path:t,latestVersion:h},`Using installed version`);else{let e=Lr(`Downloading version file`);try{try{await d(l)}catch{u=`${c}://s3.amazonaws.com/wallaby-downloads/`,Q.debug({downloadUrl:u},`Falling back to S3 metadata endpoint`),await d(`http://update.wallabyjs.com/`)}}finally{e()}h=o.latest,Q.debug({latestVersion:h},`Fetched latest version`)}if(f&&(h&&(0,ar.gt)(f,h)?await o.unpin():h=f,Q.debug({pinnedVersion:f,latestVersion:h},`Applied pinned version policy`)),!(p&&o.read(t)===h))try{t=await Nr(`core`,`${u}wallaby-v${h}.zip`,e),a=!0}catch{Q.info({latestVersion:h},`Primary download failed, falling back to S3 archive`),t=await Nr(`core`,`${c}://s3.amazonaws.com/wallaby-downloads/wallaby-v${h}.zip`,e),a=!0}return Q.debug({path:t,updated:a,latestVersion:h},`Resolved dist`),{path:t,updated:a,type:`dist`}}async function Nr(e,t,n){Q.debug({name:e,from:t,ssl:n},`Downloading and extracting dist`);let r=Lr(`Downloading core`),a=i(kr.downloads,`wallaby.zip`);try{G.default.ensureDirSync(kr.downloads),await sr(e,t,a,2e6,n!==`relaxed`)}finally{r()}let o=Lr(`Extracting core`);try{return await Pr(a)}catch(t){throw Q.error({error:t,downloadedArchiveFilePath:a},`Failed to extract archive`),Error(`Error while unzipping wallaby.js ${e} file: ${t instanceof Error?t.message:String(t)}`,{cause:t})}finally{o()}}async function Pr(e){let t=O.randomBytes(3).toString(`hex`),n=i(Y.paths.dirs.current,`wallaby`+t);for(;G.default.existsSync(n);)t=O.randomBytes(3).toString(`hex`),n=i(Y.paths.dirs.current,`wallaby`+t);let r=new jr;await Er({from:e,to:n,verifier:r});let a=new Fr().register(t,r.date.getTime());return Q.debug({from:e,to:{extracted:n,registered:a}},`Extracted dist`),a}var Fr=class{_logger=J.create(`core/installer/vm`);_paths;constructor(e){this._paths={pinned:e?.pinned??kr.pinned,manifest:e?.manifest??kr.manifest,versions:e?.versions??kr.versions}}get pinned(){if(G.default.existsSync(this._paths.pinned)){let e=G.default.readFileSync(this._paths.pinned,`utf-8`);return this._logger.debug({version:e},`Read pinned version`),e}}get latest(){let e=JSON.parse(G.default.readFileSync(this._paths.versions).toString()),t;return e.latestServer.forEach(e=>{e.substring(0,e.lastIndexOf(`.`))===Y.version.substring(0,e.lastIndexOf(`.`))&&(t=e)}),this._logger.debug({latest:t},`Resolved latest known version`),t}async pin(e){this._logger.info({version:e},`Pinning version`),await E(this._paths.pinned,e)}async unpin(){if(G.default.existsSync(this._paths.pinned))return this._logger.debug(`Removing pinned version`),await T(this._paths.pinned)}refresh(e,t=!1){let n;if(!e)try{e=JSON.parse(G.default.readFileSync(this._paths.manifest).toString())}catch{}e||={},this._logger.debug({manifestEntries:Object.keys(e).length},`Resolving installed core from manifest`);let a;try{let[e,t,n]=Ar().split(`/`);a=new Date(Date.UTC(Number.parseInt(n,10),Number.parseInt(t,10)-1,Number.parseInt(e,10))).getTime()}catch{}let o=this.pinned,s=Object.keys(e).map(t=>{let n=i(i(Y.paths.dirs.current,`wallaby`+t),`package.json`),r=o&&G.default.existsSync(n)?JSON.parse(G.default.readFileSync(n,`utf-8`)).version:void 0;return{id:t,pinned:o?r===o:!1,package:n,...e[t]}}).sort((e,t)=>t.releaseDate-e.releaseDate),c=new Date().getTime()-1e3*60*60*24*5;s.forEach(n=>{G.default.existsSync(n.package)?!n.pinned&&n.invalidated&&Object.keys(n.expiry).length===0&&n.invalidated<c&&(t=!0,delete e[n.id],G.default.remove(r(n.package)).catch(e=>{this._logger.warn({error:e,path:n.package},`Failed to remove invalidated core directory`)})):(t=!0,delete e[n.id])});let l=s.filter(t=>(!a||t.releaseDate<a)&&e[t.id]);if(l.length){if(a&&a<new Date().getTime()&&!e[l[0].id].expiry[a]){e[l[0].id].expiry[a]=!0;for(let t=1;t<l.length;t++)delete e[l[t].id].expiry[a];t=!0}let r=o?(l.find(e=>e.pinned)||l.find(e=>!e.invalidated)||l[0]).id:(l.find(e=>!e.invalidated)||l[0]).id;n=i(Y.paths.dirs.current,`wallaby`+r),this._logger.debug({coreFolder:n,pinnedVersion:o},`Selected installed core folder`)}return t&&(G.default.writeFileSync(this._paths.manifest,JSON.stringify(e)),this._logger.debug({coreVersionManifest:this._paths.manifest},`Saved updated core manifest`)),n}register(e,t){let n;try{n=JSON.parse(G.default.readFileSync(this._paths.manifest).toString());let e=new Date().getTime();Object.keys(n).forEach(r=>{!n[r].invalidated&&n[r].releaseDate<=t&&(n[r].invalidated=e)})}catch{n={}}return n[e]={releaseDate:t,invalidated:!1,expiry:{}},this._logger.debug({id:e,releaseDate:t},`Added new core version to manifest`),this.refresh(n,!0)}read(e){let t=JSON.parse(G.default.readFileSync(i(e,`package.json`)).toString()).version;return this._logger.debug({path:e,version:t},`Read version`),t}async handle(e){return e=e?.trim(),e?e===`0`?{update:!1,fresh:!0}:e===`latest`?(await this.unpin(),{update:!0,fresh:!0}):(await this.pin(e.startsWith(`v`)?e.slice(1):e),{update:!1,fresh:!0}):{update:!1,fresh:!1}}},Ir=class{_timeout;_retry=0;_dist;_restarter;get dist(){return this._dist}clear(){this._dist=void 0}set restarter(e){this._restarter=e}stop(){clearTimeout(this._timeout),this._timeout=void 0}async check(e,t){try{Q.debug({path:e},`Performing update check`);let n=await Mr(t,e);if(n.updated){this._dist=n;let e=new Fr().read(n.path);Q.debug({path:n.path,version:e},`Core update downloaded`),this._restarter?.restart(e),this._retry=0}}catch(t){this._retry++,Q.info({error:t,path:e,retry:this._retry},`Scheduled update check failed`)}finally{this._retry<=3?this.schedule(this._dist?.path||e,t):Q.warn({path:e,retry:this._retry},`Stopped scheduling update checks after repeated failures`)}}schedule(e,t){this.stop(),Q.debug({path:e},`Scheduled update check`),this._timeout=setTimeout(async()=>await this.check(e,t),600*1e3),this._timeout.unref()}};function Lr(e){let t=new ir.Spinner;return t.setSpinnerString(4),t.setSpinnerDelay(250),t.setSpinnerTitle(` ${K.default.green(`%s`)} ${e}`),t.start(),()=>t.stop(!0)}const Rr=J.create(`core/locator`),zr=e(import.meta.url);r(_(import.meta.url));async function Br(e){try{let e=zr.resolve(`@wallabyjs/core`);if(await G.default.pathExists(e))return Rr.info({path:e},`Using installed @wallabyjs/core package`),{path:e,type:`npm`}}catch(e){Rr.debug({error:e},`No installed @wallabyjs/core package found`)}let t=await e();if(!t)throw Error(`Could not locate installed Wallaby Core`);return t}const Vr=J.create(`core/launcher`);var Hr=class e{location;version;_process;_ready=e._createDeferred();_exited=e._createDeferred();_stopping=e._createDeferred();_interrupted=!1;_cleaned=!1;_tail=``;constructor(e,t,n){this._process=e,this.location=t,this.version=n,this._attach(),e.pid||this._fail(Error(`Failed to start Wallaby process: no PID`))}async exited(e){let t=this._exited.promise,{promise:n,cleanup:r}=this._waitShutdown(e);try{await Promise.race([this.ready,n,t]),await t}finally{r()}}get ready(){return this._ready.promise}get stopping(){return this._stopping.promise}release(){Vr.debug({pid:this._process.pid},`Releasing process handle`),this._cleanup(),this._process.stdout.destroy(),this._process.stderr.destroy(),this._process.unref()}async stop(e){if(!this._interrupted&&(this._interrupted=!0,this._stopping.resolve(),Vr.debug({pid:this._process.pid},`Stopping process`),!(this._process.exitCode!==null||this._process.signalCode!==null))){if(process.platform===`win32`&&e)Vr.debug(`Stopping process through RPC`),e();else if(!this._process.kill(`SIGTERM`))throw Error(`Failed to terminate Wallaby process`)}}_attach(){this._process.stdout.on(`data`,this._onStdOut),this._process.stderr.on(`data`,this._onStdError),this._process.on(`error`,this._onError),this._process.on(`exit`,this._onExit)}_waitShutdown(e){let t=new Map,n=!1,r=[`SIGINT`,`SIGTERM`];return{promise:new Promise((i,a)=>{for(let o of r){let r=()=>{n||(n=!0,this._handleShutdown(o,e).then(i,a))};t.set(o,r),process.on(o,r)}}),cleanup:()=>{for(let[e,n]of t)process.off(e,n)}}}async _handleShutdown(e,t){Vr.debug({signal:e},`Received shutdown signal`),await this.stop(t)}_onStdOut=e=>{if(this._tail===void 0)return;let t=this._tail+e.toString(`utf8`),n=t.match(/wallaby\.js started, port=(\d+)/);if(n){delete this._tail,this._process.stdout.off(`data`,this._onStdOut),this._ready.resolve(Number.parseInt(n[1],10));return}this._tail=t};_onStdError=e=>{let t=e.toString(`utf8`);Vr.warn({stderr:t}),this._tail!==void 0&&process.stdout.write(t)};_onError=e=>{Vr.error({error:e},`Process emitted an error`),this._fail(e,this._tail===void 0?`Wallaby process crashed`:`Wallaby process failed to start`),this._cleanup()};_onExit=(t,n)=>{Vr.info({code:t,signal:n},`Process exited`),this._tail!==void 0&&this._ready.reject(e._createExitError(`Wallaby exited unexpectedly before startup completed`,t,n)),this._interrupted?this._exited.resolve():this._exited.reject(e._createExitError(`Wallaby exited unexpectedly`,t,n)),this._cleanup()};_cleanup(){this._cleaned||(this._cleaned=!0,this._process.stdout.off(`data`,this._onStdOut),this._process.stderr.off(`data`,this._onStdError),this._process.off(`error`,this._onError),this._process.off(`exit`,this._onExit))}_fail(e,t){let n=t?Error(`${t}: ${e.message}`):e;this._ready.reject(n),this._interrupted?this._exited.resolve():this._exited.reject(n)}static _createDeferred(){let e,t;return{promise:new Promise((n,r)=>{e=n,t=r}),resolve:e,reject:t}}static _createExitError(e,t,n){let r=``;return n&&(r=` (signal: ${n})`),t!==null&&(r=` (code: ${t})`),Error(`${e}${r}.`)}};async function Ur(e,t,n){n?.stop();let r=await t.handle(e.update);r.fresh&&n?.clear();let a=async()=>await Mr(e.ssl,t.refresh(),r.update,!0),o=r.fresh?await Br(a):n?.dist||await Br(a);Vr.debug({...o},`Located target to launch`);let s=Wr(e,t.pinned),c=t.read(o.path),[,,l]=c.split(`.`);if(Number.parseInt(l,10)<2035)throw Vr.debug({revision:l},`Refusing to start unsupported version`),Error(`Wallaby Core v${c} is not supported by Wallaby CLI v ${Y.version}.\nRun with --update flag to get the latest version of Wallaby Core.`);Vr.info({args:s,revision:l},`Launching process`);let u=F(process.execPath,[i(o.path,`server.js`),`extended-core-ws`,...s],{detached:e.skill||process.platform===`win32`,stdio:[`ignore`,`pipe`,`pipe`]});return Vr.info({pid:u.pid},`Launched process`),new Hr(u,o,c)}function Wr(e,t){let n=[`--port=0`,`--lkp=${Or}`,`--cli=${Y.version}`];return e.config&&n.push(`--configPath=${s(e.config)}`),e.smart&&n.push(`--smartStart=true`),t&&n.push(`--pinned=`+t),e.cache===!1&&n.push(`--cache=no-run-result`),e.skill&&n.push(`--skill`),n}const Gr=J.create(`core/registry`);var Kr=class{_storeDirPath;constructor(e=i(Y.paths.dirs.home,`registry`)){this._storeDirPath=e,p(this._storeDirPath)||m(this._storeDirPath,{recursive:!0})}get manifests(){let e=[];try{for(let t of g(this._storeDirPath))if(t.endsWith(`.json`))try{let n=JSON.parse(h(i(this._storeDirPath,t),`utf8`));e.push(n)}catch(e){Gr.trace({error:e},`Failed to read manifest`)}}catch(e){Gr.error({error:e},`Failed to read registry directory`)}return e}},qr=R(((e,t)=>{let n=[`nodebuffer`,`arraybuffer`,`fragments`],r=typeof Blob<`u`;r&&n.push(`blob`),t.exports={BINARY_TYPES:n,CLOSE_TIMEOUT:3e4,EMPTY_BUFFER:Buffer.alloc(0),GUID:`258EAFA5-E914-47DA-95CA-C5AB0DC85B11`,hasBlob:r,kForOnEventAttribute:Symbol(`kIsForOnEventAttribute`),kListener:Symbol(`kListener`),kStatusCode:Symbol(`status-code`),kWebSocket:Symbol(`websocket`),NOOP:()=>{}}})),Jr=R(((e,t)=>{let{EMPTY_BUFFER:n}=qr(),r=Buffer[Symbol.species];function i(e,t){if(e.length===0)return n;if(e.length===1)return e[0];let i=Buffer.allocUnsafe(t),a=0;for(let t=0;t<e.length;t++){let n=e[t];i.set(n,a),a+=n.length}return a<t?new r(i.buffer,i.byteOffset,a):i}function a(e,t,n,r,i){for(let a=0;a<i;a++)n[r+a]=e[a]^t[a&3]}function o(e,t){for(let n=0;n<e.length;n++)e[n]^=t[n&3]}function s(e){return e.length===e.buffer.byteLength?e.buffer:e.buffer.slice(e.byteOffset,e.byteOffset+e.length)}function c(e){if(c.readOnly=!0,Buffer.isBuffer(e))return e;let t;return e instanceof ArrayBuffer?t=new r(e):ArrayBuffer.isView(e)?t=new r(e.buffer,e.byteOffset,e.byteLength):(t=Buffer.from(e),c.readOnly=!1),t}if(t.exports={concat:i,mask:a,toArrayBuffer:s,toBuffer:c,unmask:o},!process.env.WS_NO_BUFFER_UTIL)try{let e=B(`bufferutil`);t.exports.mask=function(t,n,r,i,o){o<48?a(t,n,r,i,o):e.mask(t,n,r,i,o)},t.exports.unmask=function(t,n){t.length<32?o(t,n):e.unmask(t,n)}}catch{}})),Yr=R(((e,t)=>{let n=Symbol(`kDone`),r=Symbol(`kRun`);t.exports=class{constructor(e){this[n]=()=>{this.pending--,this[r]()},this.concurrency=e||1/0,this.jobs=[],this.pending=0}add(e){this.jobs.push(e),this[r]()}[r](){if(this.pending!==this.concurrency&&this.jobs.length){let e=this.jobs.shift();this.pending++,e(this[n])}}}})),Xr=R(((e,t)=>{let n=B(`zlib`),r=Jr(),i=Yr(),{kStatusCode:a}=qr(),o=Buffer[Symbol.species],s=Buffer.from([0,0,255,255]),c=Symbol(`permessage-deflate`),l=Symbol(`total-length`),u=Symbol(`callback`),d=Symbol(`buffers`),f=Symbol(`error`),p;t.exports=class{constructor(e){this._options=e||{},this._threshold=this._options.threshold===void 0?1024:this._options.threshold,this._maxPayload=this._options.maxPayload|0,this._isServer=!!this._options.isServer,this._deflate=null,this._inflate=null,this.params=null,p||=new i(this._options.concurrencyLimit===void 0?10:this._options.concurrencyLimit)}static get extensionName(){return`permessage-deflate`}offer(){let e={};return this._options.serverNoContextTakeover&&(e.server_no_context_takeover=!0),this._options.clientNoContextTakeover&&(e.client_no_context_takeover=!0),this._options.serverMaxWindowBits&&(e.server_max_window_bits=this._options.serverMaxWindowBits),this._options.clientMaxWindowBits?e.client_max_window_bits=this._options.clientMaxWindowBits:this._options.clientMaxWindowBits??(e.client_max_window_bits=!0),e}accept(e){return e=this.normalizeParams(e),this.params=this._isServer?this.acceptAsServer(e):this.acceptAsClient(e),this.params}cleanup(){if(this._inflate&&=(this._inflate.close(),null),this._deflate){let e=this._deflate[u];this._deflate.close(),this._deflate=null,e&&e(Error(`The deflate stream was closed while data was being processed`))}}acceptAsServer(e){let t=this._options,n=e.find(e=>!(t.serverNoContextTakeover===!1&&e.server_no_context_takeover||e.server_max_window_bits&&(t.serverMaxWindowBits===!1||typeof t.serverMaxWindowBits==`number`&&t.serverMaxWindowBits>e.server_max_window_bits)||typeof t.clientMaxWindowBits==`number`&&!e.client_max_window_bits));if(!n)throw Error(`None of the extension offers can be accepted`);return t.serverNoContextTakeover&&(n.server_no_context_takeover=!0),t.clientNoContextTakeover&&(n.client_no_context_takeover=!0),typeof t.serverMaxWindowBits==`number`&&(n.server_max_window_bits=t.serverMaxWindowBits),typeof t.clientMaxWindowBits==`number`?n.client_max_window_bits=t.clientMaxWindowBits:(n.client_max_window_bits===!0||t.clientMaxWindowBits===!1)&&delete n.client_max_window_bits,n}acceptAsClient(e){let t=e[0];if(this._options.clientNoContextTakeover===!1&&t.client_no_context_takeover)throw Error(`Unexpected parameter "client_no_context_takeover"`);if(!t.client_max_window_bits)typeof this._options.clientMaxWindowBits==`number`&&(t.client_max_window_bits=this._options.clientMaxWindowBits);else if(this._options.clientMaxWindowBits===!1||typeof this._options.clientMaxWindowBits==`number`&&t.client_max_window_bits>this._options.clientMaxWindowBits)throw Error(`Unexpected or invalid parameter "client_max_window_bits"`);return t}normalizeParams(e){return e.forEach(e=>{Object.keys(e).forEach(t=>{let n=e[t];if(n.length>1)throw Error(`Parameter "${t}" must have only a single value`);if(n=n[0],t===`client_max_window_bits`){if(n!==!0){let e=+n;if(!Number.isInteger(e)||e<8||e>15)throw TypeError(`Invalid value for parameter "${t}": ${n}`);n=e}else if(!this._isServer)throw TypeError(`Invalid value for parameter "${t}": ${n}`)}else if(t===`server_max_window_bits`){let e=+n;if(!Number.isInteger(e)||e<8||e>15)throw TypeError(`Invalid value for parameter "${t}": ${n}`);n=e}else if(t===`client_no_context_takeover`||t===`server_no_context_takeover`){if(n!==!0)throw TypeError(`Invalid value for parameter "${t}": ${n}`)}else throw Error(`Unknown parameter "${t}"`);e[t]=n})}),e}decompress(e,t,n){p.add(r=>{this._decompress(e,t,(e,t)=>{r(),n(e,t)})})}compress(e,t,n){p.add(r=>{this._compress(e,t,(e,t)=>{r(),n(e,t)})})}_decompress(e,t,i){let a=this._isServer?`client`:`server`;if(!this._inflate){let e=`${a}_max_window_bits`,t=typeof this.params[e]==`number`?this.params[e]:n.Z_DEFAULT_WINDOWBITS;this._inflate=n.createInflateRaw({...this._options.zlibInflateOptions,windowBits:t}),this._inflate[c]=this,this._inflate[l]=0,this._inflate[d]=[],this._inflate.on(`error`,g),this._inflate.on(`data`,h)}this._inflate[u]=i,this._inflate.write(e),t&&this._inflate.write(s),this._inflate.flush(()=>{let e=this._inflate[f];if(e){this._inflate.close(),this._inflate=null,i(e);return}let n=r.concat(this._inflate[d],this._inflate[l]);this._inflate._readableState.endEmitted?(this._inflate.close(),this._inflate=null):(this._inflate[l]=0,this._inflate[d]=[],t&&this.params[`${a}_no_context_takeover`]&&this._inflate.reset()),i(null,n)})}_compress(e,t,i){let a=this._isServer?`server`:`client`;if(!this._deflate){let e=`${a}_max_window_bits`,t=typeof this.params[e]==`number`?this.params[e]:n.Z_DEFAULT_WINDOWBITS;this._deflate=n.createDeflateRaw({...this._options.zlibDeflateOptions,windowBits:t}),this._deflate[l]=0,this._deflate[d]=[],this._deflate.on(`data`,m)}this._deflate[u]=i,this._deflate.write(e),this._deflate.flush(n.Z_SYNC_FLUSH,()=>{if(!this._deflate)return;let e=r.concat(this._deflate[d],this._deflate[l]);t&&(e=new o(e.buffer,e.byteOffset,e.length-4)),this._deflate[u]=null,this._deflate[l]=0,this._deflate[d]=[],t&&this.params[`${a}_no_context_takeover`]&&this._deflate.reset(),i(null,e)})}};function m(e){this[d].push(e),this[l]+=e.length}function h(e){if(this[l]+=e.length,this[c]._maxPayload<1||this[l]<=this[c]._maxPayload){this[d].push(e);return}this[f]=RangeError(`Max payload size exceeded`),this[f].code=`WS_ERR_UNSUPPORTED_MESSAGE_LENGTH`,this[f][a]=1009,this.removeListener(`data`,h),this.reset()}function g(e){if(this[c]._inflate=null,this[f]){this[u](this[f]);return}e[a]=1007,this[u](e)}})),Zr=R(((e,t)=>{let{isUtf8:n}=B(`buffer`),{hasBlob:r}=qr(),i=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,1,1,1,1,0,0,1,1,0,1,1,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0,1,0];function a(e){return e>=1e3&&e<=1014&&e!==1004&&e!==1005&&e!==1006||e>=3e3&&e<=4999}function o(e){let t=e.length,n=0;for(;n<t;)if(!(e[n]&128))n++;else if((e[n]&224)==192){if(n+1===t||(e[n+1]&192)!=128||(e[n]&254)==192)return!1;n+=2}else if((e[n]&240)==224){if(n+2>=t||(e[n+1]&192)!=128||(e[n+2]&192)!=128||e[n]===224&&(e[n+1]&224)==128||e[n]===237&&(e[n+1]&224)==160)return!1;n+=3}else if((e[n]&248)==240){if(n+3>=t||(e[n+1]&192)!=128||(e[n+2]&192)!=128||(e[n+3]&192)!=128||e[n]===240&&(e[n+1]&240)==128||e[n]===244&&e[n+1]>143||e[n]>244)return!1;n+=4}else return!1;return!0}function s(e){return r&&typeof e==`object`&&typeof e.arrayBuffer==`function`&&typeof e.type==`string`&&typeof e.stream==`function`&&(e[Symbol.toStringTag]===`Blob`||e[Symbol.toStringTag]===`File`)}if(t.exports={isBlob:s,isValidStatusCode:a,isValidUTF8:o,tokenChars:i},n)t.exports.isValidUTF8=function(e){return e.length<24?o(e):n(e)};else if(!process.env.WS_NO_UTF_8_VALIDATE)try{let e=B(`utf-8-validate`);t.exports.isValidUTF8=function(t){return t.length<32?o(t):e(t)}}catch{}})),Qr=R(((e,t)=>{let{Writable:n}=B(`stream`),r=Xr(),{BINARY_TYPES:i,EMPTY_BUFFER:a,kStatusCode:o,kWebSocket:s}=qr(),{concat:c,toArrayBuffer:l,unmask:u}=Jr(),{isValidStatusCode:d,isValidUTF8:f}=Zr(),p=Buffer[Symbol.species];t.exports=class extends n{constructor(e={}){super(),this._allowSynchronousEvents=e.allowSynchronousEvents===void 0?!0:e.allowSynchronousEvents,this._binaryType=e.binaryType||i[0],this._extensions=e.extensions||{},this._isServer=!!e.isServer,this._maxPayload=e.maxPayload|0,this._skipUTF8Validation=!!e.skipUTF8Validation,this[s]=void 0,this._bufferedBytes=0,this._buffers=[],this._compressed=!1,this._payloadLength=0,this._mask=void 0,this._fragmented=0,this._masked=!1,this._fin=!1,this._opcode=0,this._totalPayloadLength=0,this._messageLength=0,this._fragments=[],this._errored=!1,this._loop=!1,this._state=0}_write(e,t,n){if(this._opcode===8&&this._state==0)return n();this._bufferedBytes+=e.length,this._buffers.push(e),this.startLoop(n)}consume(e){if(this._bufferedBytes-=e,e===this._buffers[0].length)return this._buffers.shift();if(e<this._buffers[0].length){let t=this._buffers[0];return this._buffers[0]=new p(t.buffer,t.byteOffset+e,t.length-e),new p(t.buffer,t.byteOffset,e)}let t=Buffer.allocUnsafe(e);do{let n=this._buffers[0],r=t.length-e;e>=n.length?t.set(this._buffers.shift(),r):(t.set(new Uint8Array(n.buffer,n.byteOffset,e),r),this._buffers[0]=new p(n.buffer,n.byteOffset+e,n.length-e)),e-=n.length}while(e>0);return t}startLoop(e){this._loop=!0;do switch(this._state){case 0:this.getInfo(e);break;case 1:this.getPayloadLength16(e);break;case 2:this.getPayloadLength64(e);break;case 3:this.getMask();break;case 4:this.getData(e);break;case 5:case 6:this._loop=!1;return}while(this._loop);this._errored||e()}getInfo(e){if(this._bufferedBytes<2){this._loop=!1;return}let t=this.consume(2);if(t[0]&48){e(this.createError(RangeError,`RSV2 and RSV3 must be clear`,!0,1002,`WS_ERR_UNEXPECTED_RSV_2_3`));return}let n=(t[0]&64)==64;if(n&&!this._extensions[r.extensionName]){e(this.createError(RangeError,`RSV1 must be clear`,!0,1002,`WS_ERR_UNEXPECTED_RSV_1`));return}if(this._fin=(t[0]&128)==128,this._opcode=t[0]&15,this._payloadLength=t[1]&127,this._opcode===0){if(n){e(this.createError(RangeError,`RSV1 must be clear`,!0,1002,`WS_ERR_UNEXPECTED_RSV_1`));return}if(!this._fragmented){e(this.createError(RangeError,`invalid opcode 0`,!0,1002,`WS_ERR_INVALID_OPCODE`));return}this._opcode=this._fragmented}else if(this._opcode===1||this._opcode===2){if(this._fragmented){e(this.createError(RangeError,`invalid opcode ${this._opcode}`,!0,1002,`WS_ERR_INVALID_OPCODE`));return}this._compressed=n}else if(this._opcode>7&&this._opcode<11){if(!this._fin){e(this.createError(RangeError,`FIN must be set`,!0,1002,`WS_ERR_EXPECTED_FIN`));return}if(n){e(this.createError(RangeError,`RSV1 must be clear`,!0,1002,`WS_ERR_UNEXPECTED_RSV_1`));return}if(this._payloadLength>125||this._opcode===8&&this._payloadLength===1){e(this.createError(RangeError,`invalid payload length ${this._payloadLength}`,!0,1002,`WS_ERR_INVALID_CONTROL_PAYLOAD_LENGTH`));return}}else{e(this.createError(RangeError,`invalid opcode ${this._opcode}`,!0,1002,`WS_ERR_INVALID_OPCODE`));return}if(!this._fin&&!this._fragmented&&(this._fragmented=this._opcode),this._masked=(t[1]&128)==128,this._isServer){if(!this._masked){e(this.createError(RangeError,`MASK must be set`,!0,1002,`WS_ERR_EXPECTED_MASK`));return}}else if(this._masked){e(this.createError(RangeError,`MASK must be clear`,!0,1002,`WS_ERR_UNEXPECTED_MASK`));return}this._payloadLength===126?this._state=1:this._payloadLength===127?this._state=2:this.haveLength(e)}getPayloadLength16(e){if(this._bufferedBytes<2){this._loop=!1;return}this._payloadLength=this.consume(2).readUInt16BE(0),this.haveLength(e)}getPayloadLength64(e){if(this._bufferedBytes<8){this._loop=!1;return}let t=this.consume(8),n=t.readUInt32BE(0);if(n>2**21-1){e(this.createError(RangeError,`Unsupported WebSocket frame: payload length > 2^53 - 1`,!1,1009,`WS_ERR_UNSUPPORTED_DATA_PAYLOAD_LENGTH`));return}this._payloadLength=n*2**32+t.readUInt32BE(4),this.haveLength(e)}haveLength(e){if(this._payloadLength&&this._opcode<8&&(this._totalPayloadLength+=this._payloadLength,this._totalPayloadLength>this._maxPayload&&this._maxPayload>0)){e(this.createError(RangeError,`Max payload size exceeded`,!1,1009,`WS_ERR_UNSUPPORTED_MESSAGE_LENGTH`));return}this._masked?this._state=3:this._state=4}getMask(){if(this._bufferedBytes<4){this._loop=!1;return}this._mask=this.consume(4),this._state=4}getData(e){let t=a;if(this._payloadLength){if(this._bufferedBytes<this._payloadLength){this._loop=!1;return}t=this.consume(this._payloadLength),this._masked&&(this._mask[0]|this._mask[1]|this._mask[2]|this._mask[3])!==0&&u(t,this._mask)}if(this._opcode>7){this.controlMessage(t,e);return}if(this._compressed){this._state=5,this.decompress(t,e);return}t.length&&(this._messageLength=this._totalPayloadLength,this._fragments.push(t)),this.dataMessage(e)}decompress(e,t){this._extensions[r.extensionName].decompress(e,this._fin,(e,n)=>{if(e)return t(e);if(n.length){if(this._messageLength+=n.length,this._messageLength>this._maxPayload&&this._maxPayload>0){t(this.createError(RangeError,`Max payload size exceeded`,!1,1009,`WS_ERR_UNSUPPORTED_MESSAGE_LENGTH`));return}this._fragments.push(n)}this.dataMessage(t),this._state===0&&this.startLoop(t)})}dataMessage(e){if(!this._fin){this._state=0;return}let t=this._messageLength,n=this._fragments;if(this._totalPayloadLength=0,this._messageLength=0,this._fragmented=0,this._fragments=[],this._opcode===2){let r;r=this._binaryType===`nodebuffer`?c(n,t):this._binaryType===`arraybuffer`?l(c(n,t)):this._binaryType===`blob`?new Blob(n):n,this._allowSynchronousEvents?(this.emit(`message`,r,!0),this._state=0):(this._state=6,setImmediate(()=>{this.emit(`message`,r,!0),this._state=0,this.startLoop(e)}))}else{let r=c(n,t);if(!this._skipUTF8Validation&&!f(r)){e(this.createError(Error,`invalid UTF-8 sequence`,!0,1007,`WS_ERR_INVALID_UTF8`));return}this._state===5||this._allowSynchronousEvents?(this.emit(`message`,r,!1),this._state=0):(this._state=6,setImmediate(()=>{this.emit(`message`,r,!1),this._state=0,this.startLoop(e)}))}}controlMessage(e,t){if(this._opcode===8){if(e.length===0)this._loop=!1,this.emit(`conclude`,1005,a),this.end();else{let n=e.readUInt16BE(0);if(!d(n)){t(this.createError(RangeError,`invalid status code ${n}`,!0,1002,`WS_ERR_INVALID_CLOSE_CODE`));return}let r=new p(e.buffer,e.byteOffset+2,e.length-2);if(!this._skipUTF8Validation&&!f(r)){t(this.createError(Error,`invalid UTF-8 sequence`,!0,1007,`WS_ERR_INVALID_UTF8`));return}this._loop=!1,this.emit(`conclude`,n,r),this.end()}this._state=0;return}this._allowSynchronousEvents?(this.emit(this._opcode===9?`ping`:`pong`,e),this._state=0):(this._state=6,setImmediate(()=>{this.emit(this._opcode===9?`ping`:`pong`,e),this._state=0,this.startLoop(t)}))}createError(e,t,n,r,i){this._loop=!1,this._errored=!0;let a=new e(n?`Invalid WebSocket frame: ${t}`:t);return Error.captureStackTrace(a,this.createError),a.code=i,a[o]=r,a}}})),$r=R(((e,t)=>{let{Duplex:n}=B(`stream`),{randomFillSync:r}=B(`crypto`),i=Xr(),{EMPTY_BUFFER:a,kWebSocket:o,NOOP:s}=qr(),{isBlob:c,isValidStatusCode:l}=Zr(),{mask:u,toBuffer:d}=Jr(),f=Symbol(`kByteLength`),p=Buffer.alloc(4),m=8*1024,h,g=m;t.exports=class e{constructor(e,t,n){this._extensions=t||{},n&&(this._generateMask=n,this._maskBuffer=Buffer.alloc(4)),this._socket=e,this._firstFragment=!0,this._compress=!1,this._bufferedBytes=0,this._queue=[],this._state=0,this.onerror=s,this[o]=void 0}static frame(e,t){let n,i=!1,a=2,o=!1;t.mask&&(n=t.maskBuffer||p,t.generateMask?t.generateMask(n):(g===m&&(h===void 0&&(h=Buffer.alloc(m)),r(h,0,m),g=0),n[0]=h[g++],n[1]=h[g++],n[2]=h[g++],n[3]=h[g++]),o=(n[0]|n[1]|n[2]|n[3])===0,a=6);let s;typeof e==`string`?(!t.mask||o)&&t[f]!==void 0?s=t[f]:(e=Buffer.from(e),s=e.length):(s=e.length,i=t.mask&&t.readOnly&&!o);let c=s;s>=65536?(a+=8,c=127):s>125&&(a+=2,c=126);let l=Buffer.allocUnsafe(i?s+a:a);return l[0]=t.fin?t.opcode|128:t.opcode,t.rsv1&&(l[0]|=64),l[1]=c,c===126?l.writeUInt16BE(s,2):c===127&&(l[2]=l[3]=0,l.writeUIntBE(s,4,6)),!t.mask||(l[1]|=128,l[a-4]=n[0],l[a-3]=n[1],l[a-2]=n[2],l[a-1]=n[3],o)?[l,e]:i?(u(e,n,l,a,s),[l]):(u(e,n,e,0,s),[l,e])}close(t,n,r,i){let o;if(t===void 0)o=a;else if(typeof t!=`number`||!l(t))throw TypeError(`First argument must be a valid error code number`);else if(n===void 0||!n.length)o=Buffer.allocUnsafe(2),o.writeUInt16BE(t,0);else{let e=Buffer.byteLength(n);if(e>123)throw RangeError(`The message must not be greater than 123 bytes`);o=Buffer.allocUnsafe(2+e),o.writeUInt16BE(t,0),typeof n==`string`?o.write(n,2):o.set(n,2)}let s={[f]:o.length,fin:!0,generateMask:this._generateMask,mask:r,maskBuffer:this._maskBuffer,opcode:8,readOnly:!1,rsv1:!1};this._state===0?this.sendFrame(e.frame(o,s),i):this.enqueue([this.dispatch,o,!1,s,i])}ping(t,n,r){let i,a;if(typeof t==`string`?(i=Buffer.byteLength(t),a=!1):c(t)?(i=t.size,a=!1):(t=d(t),i=t.length,a=d.readOnly),i>125)throw RangeError(`The data size must not be greater than 125 bytes`);let o={[f]:i,fin:!0,generateMask:this._generateMask,mask:n,maskBuffer:this._maskBuffer,opcode:9,readOnly:a,rsv1:!1};c(t)?this._state===0?this.getBlobData(t,!1,o,r):this.enqueue([this.getBlobData,t,!1,o,r]):this._state===0?this.sendFrame(e.frame(t,o),r):this.enqueue([this.dispatch,t,!1,o,r])}pong(t,n,r){let i,a;if(typeof t==`string`?(i=Buffer.byteLength(t),a=!1):c(t)?(i=t.size,a=!1):(t=d(t),i=t.length,a=d.readOnly),i>125)throw RangeError(`The data size must not be greater than 125 bytes`);let o={[f]:i,fin:!0,generateMask:this._generateMask,mask:n,maskBuffer:this._maskBuffer,opcode:10,readOnly:a,rsv1:!1};c(t)?this._state===0?this.getBlobData(t,!1,o,r):this.enqueue([this.getBlobData,t,!1,o,r]):this._state===0?this.sendFrame(e.frame(t,o),r):this.enqueue([this.dispatch,t,!1,o,r])}send(e,t,n){let r=this._extensions[i.extensionName],a=t.binary?2:1,o=t.compress,s,l;typeof e==`string`?(s=Buffer.byteLength(e),l=!1):c(e)?(s=e.size,l=!1):(e=d(e),s=e.length,l=d.readOnly),this._firstFragment?(this._firstFragment=!1,o&&r&&r.params[r._isServer?`server_no_context_takeover`:`client_no_context_takeover`]&&(o=s>=r._threshold),this._compress=o):(o=!1,a=0),t.fin&&(this._firstFragment=!0);let u={[f]:s,fin:t.fin,generateMask:this._generateMask,mask:t.mask,maskBuffer:this._maskBuffer,opcode:a,readOnly:l,rsv1:o};c(e)?this._state===0?this.getBlobData(e,this._compress,u,n):this.enqueue([this.getBlobData,e,this._compress,u,n]):this._state===0?this.dispatch(e,this._compress,u,n):this.enqueue([this.dispatch,e,this._compress,u,n])}getBlobData(t,n,r,i){this._bufferedBytes+=r[f],this._state=2,t.arrayBuffer().then(t=>{if(this._socket.destroyed){let e=Error(`The socket was closed while the blob was being read`);process.nextTick(_,this,e,i);return}this._bufferedBytes-=r[f];let a=d(t);n?this.dispatch(a,n,r,i):(this._state=0,this.sendFrame(e.frame(a,r),i),this.dequeue())}).catch(e=>{process.nextTick(v,this,e,i)})}dispatch(t,n,r,a){if(!n){this.sendFrame(e.frame(t,r),a);return}let o=this._extensions[i.extensionName];this._bufferedBytes+=r[f],this._state=1,o.compress(t,r.fin,(t,n)=>{if(this._socket.destroyed){let e=Error(`The socket was closed while data was being compressed`);_(this,e,a);return}this._bufferedBytes-=r[f],this._state=0,r.readOnly=!1,this.sendFrame(e.frame(n,r),a),this.dequeue()})}dequeue(){for(;this._state===0&&this._queue.length;){let e=this._queue.shift();this._bufferedBytes-=e[3][f],Reflect.apply(e[0],this,e.slice(1))}}enqueue(e){this._bufferedBytes+=e[3][f],this._queue.push(e)}sendFrame(e,t){e.length===2?(this._socket.cork(),this._socket.write(e[0]),this._socket.write(e[1],t),this._socket.uncork()):this._socket.write(e[0],t)}};function _(e,t,n){typeof n==`function`&&n(t);for(let n=0;n<e._queue.length;n++){let r=e._queue[n],i=r[r.length-1];typeof i==`function`&&i(t)}}function v(e,t,n){_(e,t,n),e.onerror(t)}})),ei=R(((e,t)=>{let{kForOnEventAttribute:n,kListener:r}=qr(),i=Symbol(`kCode`),a=Symbol(`kData`),o=Symbol(`kError`),s=Symbol(`kMessage`),c=Symbol(`kReason`),l=Symbol(`kTarget`),u=Symbol(`kType`),d=Symbol(`kWasClean`);var f=class{constructor(e){this[l]=null,this[u]=e}get target(){return this[l]}get type(){return this[u]}};Object.defineProperty(f.prototype,`target`,{enumerable:!0}),Object.defineProperty(f.prototype,`type`,{enumerable:!0});var p=class extends f{constructor(e,t={}){super(e),this[i]=t.code===void 0?0:t.code,this[c]=t.reason===void 0?``:t.reason,this[d]=t.wasClean===void 0?!1:t.wasClean}get code(){return this[i]}get reason(){return this[c]}get wasClean(){return this[d]}};Object.defineProperty(p.prototype,`code`,{enumerable:!0}),Object.defineProperty(p.prototype,`reason`,{enumerable:!0}),Object.defineProperty(p.prototype,`wasClean`,{enumerable:!0});var m=class extends f{constructor(e,t={}){super(e),this[o]=t.error===void 0?null:t.error,this[s]=t.message===void 0?``:t.message}get error(){return this[o]}get message(){return this[s]}};Object.defineProperty(m.prototype,`error`,{enumerable:!0}),Object.defineProperty(m.prototype,`message`,{enumerable:!0});var h=class extends f{constructor(e,t={}){super(e),this[a]=t.data===void 0?null:t.data}get data(){return this[a]}};Object.defineProperty(h.prototype,`data`,{enumerable:!0}),t.exports={CloseEvent:p,ErrorEvent:m,Event:f,EventTarget:{addEventListener(e,t,i={}){for(let a of this.listeners(e))if(!i[n]&&a[r]===t&&!a[n])return;let a;if(e===`message`)a=function(e,n){let r=new h(`message`,{data:n?e:e.toString()});r[l]=this,g(t,this,r)};else if(e===`close`)a=function(e,n){let r=new p(`close`,{code:e,reason:n.toString(),wasClean:this._closeFrameReceived&&this._closeFrameSent});r[l]=this,g(t,this,r)};else if(e===`error`)a=function(e){let n=new m(`error`,{error:e,message:e.message});n[l]=this,g(t,this,n)};else if(e===`open`)a=function(){let e=new f(`open`);e[l]=this,g(t,this,e)};else return;a[n]=!!i[n],a[r]=t,i.once?this.once(e,a):this.on(e,a)},removeEventListener(e,t){for(let i of this.listeners(e))if(i[r]===t&&!i[n]){this.removeListener(e,i);break}}},MessageEvent:h};function g(e,t,n){typeof e==`object`&&e.handleEvent?e.handleEvent.call(e,n):e.call(t,n)}})),ti=R(((e,t)=>{let{tokenChars:n}=Zr();function r(e,t,n){e[t]===void 0?e[t]=[n]:e[t].push(n)}function i(e){let t=Object.create(null),i=Object.create(null),a=!1,o=!1,s=!1,c,l,u=-1,d=-1,f=-1,p=0;for(;p<e.length;p++)if(d=e.charCodeAt(p),c===void 0)if(f===-1&&n[d]===1)u===-1&&(u=p);else if(p!==0&&(d===32||d===9))f===-1&&u!==-1&&(f=p);else if(d===59||d===44){if(u===-1)throw SyntaxError(`Unexpected character at index ${p}`);f===-1&&(f=p);let n=e.slice(u,f);d===44?(r(t,n,i),i=Object.create(null)):c=n,u=f=-1}else throw SyntaxError(`Unexpected character at index ${p}`);else if(l===void 0)if(f===-1&&n[d]===1)u===-1&&(u=p);else if(d===32||d===9)f===-1&&u!==-1&&(f=p);else if(d===59||d===44){if(u===-1)throw SyntaxError(`Unexpected character at index ${p}`);f===-1&&(f=p),r(i,e.slice(u,f),!0),d===44&&(r(t,c,i),i=Object.create(null),c=void 0),u=f=-1}else if(d===61&&u!==-1&&f===-1)l=e.slice(u,p),u=f=-1;else throw SyntaxError(`Unexpected character at index ${p}`);else if(o){if(n[d]!==1)throw SyntaxError(`Unexpected character at index ${p}`);u===-1?u=p:a||=!0,o=!1}else if(s)if(n[d]===1)u===-1&&(u=p);else if(d===34&&u!==-1)s=!1,f=p;else if(d===92)o=!0;else throw SyntaxError(`Unexpected character at index ${p}`);else if(d===34&&e.charCodeAt(p-1)===61)s=!0;else if(f===-1&&n[d]===1)u===-1&&(u=p);else if(u!==-1&&(d===32||d===9))f===-1&&(f=p);else if(d===59||d===44){if(u===-1)throw SyntaxError(`Unexpected character at index ${p}`);f===-1&&(f=p);let n=e.slice(u,f);a&&=(n=n.replace(/\\/g,``),!1),r(i,l,n),d===44&&(r(t,c,i),i=Object.create(null),c=void 0),l=void 0,u=f=-1}else throw SyntaxError(`Unexpected character at index ${p}`);if(u===-1||s||d===32||d===9)throw SyntaxError(`Unexpected end of input`);f===-1&&(f=p);let m=e.slice(u,f);return c===void 0?r(t,m,i):(l===void 0?r(i,m,!0):a?r(i,l,m.replace(/\\/g,``)):r(i,l,m),r(t,c,i)),t}function a(e){return Object.keys(e).map(t=>{let n=e[t];return Array.isArray(n)||(n=[n]),n.map(e=>[t].concat(Object.keys(e).map(t=>{let n=e[t];return Array.isArray(n)||(n=[n]),n.map(e=>e===!0?t:`${t}=${e}`).join(`; `)})).join(`; `)).join(`, `)}).join(`, `)}t.exports={format:a,parse:i}})),ni=R(((e,t)=>{let n=B(`events`),r=B(`https`),i=B(`http`),a=B(`net`),o=B(`tls`),{randomBytes:s,createHash:c}=B(`crypto`),{Duplex:l,Readable:u}=B(`stream`),{URL:d}=B(`url`),f=Xr(),p=Qr(),m=$r(),{isBlob:h}=Zr(),{BINARY_TYPES:g,CLOSE_TIMEOUT:_,EMPTY_BUFFER:v,GUID:y,kForOnEventAttribute:b,kListener:x,kStatusCode:S,kWebSocket:C,NOOP:w}=qr(),{EventTarget:{addEventListener:T,removeEventListener:E}}=ei(),{format:D,parse:O}=ti(),{toBuffer:k}=Jr(),A=Symbol(`kAborted`),j=[8,13],M=[`CONNECTING`,`OPEN`,`CLOSING`,`CLOSED`],N=/^[!#$%&'*+\-.0-9A-Z^_`|a-z~]+$/;var P=class e extends n{constructor(t,n,r){super(),this._binaryType=g[0],this._closeCode=1006,this._closeFrameReceived=!1,this._closeFrameSent=!1,this._closeMessage=v,this._closeTimer=null,this._errorEmitted=!1,this._extensions={},this._paused=!1,this._protocol=``,this._readyState=e.CONNECTING,this._receiver=null,this._sender=null,this._socket=null,t===null?(this._autoPong=r.autoPong,this._closeTimeout=r.closeTimeout,this._isServer=!0):(this._bufferedAmount=0,this._isServer=!1,this._redirects=0,n===void 0?n=[]:Array.isArray(n)||(typeof n==`object`&&n?(r=n,n=[]):n=[n]),ee(this,t,n,r))}get binaryType(){return this._binaryType}set binaryType(e){g.includes(e)&&(this._binaryType=e,this._receiver&&(this._receiver._binaryType=e))}get bufferedAmount(){return this._socket?this._socket._writableState.length+this._sender._bufferedBytes:this._bufferedAmount}get extensions(){return Object.keys(this._extensions).join()}get isPaused(){return this._paused}get onclose(){return null}get onerror(){return null}get onopen(){return null}get onmessage(){return null}get protocol(){return this._protocol}get readyState(){return this._readyState}get url(){return this._url}setSocket(t,n,r){let i=new p({allowSynchronousEvents:r.allowSynchronousEvents,binaryType:this.binaryType,extensions:this._extensions,isServer:this._isServer,maxPayload:r.maxPayload,skipUTF8Validation:r.skipUTF8Validation}),a=new m(t,this._extensions,r.generateMask);this._receiver=i,this._sender=a,this._socket=t,i[C]=this,a[C]=this,t[C]=this,i.on(`conclude`,ie),i.on(`drain`,ae),i.on(`error`,oe),i.on(`message`,ce),i.on(`ping`,L),i.on(`pong`,R),a.onerror=ue,t.setTimeout&&t.setTimeout(0),t.setNoDelay&&t.setNoDelay(),n.length>0&&t.unshift(n),t.on(`close`,V),t.on(`data`,de),t.on(`end`,fe),t.on(`error`,pe),this._readyState=e.OPEN,this.emit(`open`)}emitClose(){if(!this._socket){this._readyState=e.CLOSED,this.emit(`close`,this._closeCode,this._closeMessage);return}this._extensions[f.extensionName]&&this._extensions[f.extensionName].cleanup(),this._receiver.removeAllListeners(),this._readyState=e.CLOSED,this.emit(`close`,this._closeCode,this._closeMessage)}close(t,n){if(this.readyState!==e.CLOSED){if(this.readyState===e.CONNECTING){I(this,this._req,`WebSocket was closed before the connection was established`);return}if(this.readyState===e.CLOSING){this._closeFrameSent&&(this._closeFrameReceived||this._receiver._writableState.errorEmitted)&&this._socket.end();return}this._readyState=e.CLOSING,this._sender.close(t,n,!this._isServer,e=>{e||(this._closeFrameSent=!0,(this._closeFrameReceived||this._receiver._writableState.errorEmitted)&&this._socket.end())}),z(this)}}pause(){this.readyState===e.CONNECTING||this.readyState===e.CLOSED||(this._paused=!0,this._socket.pause())}ping(t,n,r){if(this.readyState===e.CONNECTING)throw Error(`WebSocket is not open: readyState 0 (CONNECTING)`);if(typeof t==`function`?(r=t,t=n=void 0):typeof n==`function`&&(r=n,n=void 0),typeof t==`number`&&(t=t.toString()),this.readyState!==e.OPEN){re(this,t,r);return}n===void 0&&(n=!this._isServer),this._sender.ping(t||v,n,r)}pong(t,n,r){if(this.readyState===e.CONNECTING)throw Error(`WebSocket is not open: readyState 0 (CONNECTING)`);if(typeof t==`function`?(r=t,t=n=void 0):typeof n==`function`&&(r=n,n=void 0),typeof t==`number`&&(t=t.toString()),this.readyState!==e.OPEN){re(this,t,r);return}n===void 0&&(n=!this._isServer),this._sender.pong(t||v,n,r)}resume(){this.readyState===e.CONNECTING||this.readyState===e.CLOSED||(this._paused=!1,this._receiver._writableState.needDrain||this._socket.resume())}send(t,n,r){if(this.readyState===e.CONNECTING)throw Error(`WebSocket is not open: readyState 0 (CONNECTING)`);if(typeof n==`function`&&(r=n,n={}),typeof t==`number`&&(t=t.toString()),this.readyState!==e.OPEN){re(this,t,r);return}let i={binary:typeof t!=`string`,mask:!this._isServer,compress:!0,fin:!0,...n};this._extensions[f.extensionName]||(i.compress=!1),this._sender.send(t||v,i,r)}terminate(){if(this.readyState!==e.CLOSED){if(this.readyState===e.CONNECTING){I(this,this._req,`WebSocket was closed before the connection was established`);return}this._socket&&(this._readyState=e.CLOSING,this._socket.destroy())}}};Object.defineProperty(P,`CONNECTING`,{enumerable:!0,value:M.indexOf(`CONNECTING`)}),Object.defineProperty(P.prototype,`CONNECTING`,{enumerable:!0,value:M.indexOf(`CONNECTING`)}),Object.defineProperty(P,`OPEN`,{enumerable:!0,value:M.indexOf(`OPEN`)}),Object.defineProperty(P.prototype,`OPEN`,{enumerable:!0,value:M.indexOf(`OPEN`)}),Object.defineProperty(P,`CLOSING`,{enumerable:!0,value:M.indexOf(`CLOSING`)}),Object.defineProperty(P.prototype,`CLOSING`,{enumerable:!0,value:M.indexOf(`CLOSING`)}),Object.defineProperty(P,`CLOSED`,{enumerable:!0,value:M.indexOf(`CLOSED`)}),Object.defineProperty(P.prototype,`CLOSED`,{enumerable:!0,value:M.indexOf(`CLOSED`)}),[`binaryType`,`bufferedAmount`,`extensions`,`isPaused`,`protocol`,`readyState`,`url`].forEach(e=>{Object.defineProperty(P.prototype,e,{enumerable:!0})}),[`open`,`error`,`close`,`message`].forEach(e=>{Object.defineProperty(P.prototype,`on${e}`,{enumerable:!0,get(){for(let t of this.listeners(e))if(t[b])return t[x];return null},set(t){for(let t of this.listeners(e))if(t[b]){this.removeListener(e,t);break}typeof t==`function`&&this.addEventListener(e,t,{[b]:!0})}})}),P.prototype.addEventListener=T,P.prototype.removeEventListener=E,t.exports=P;function ee(e,t,n,a){let o={allowSynchronousEvents:!0,autoPong:!0,closeTimeout:_,protocolVersion:j[1],maxPayload:100*1024*1024,skipUTF8Validation:!1,perMessageDeflate:!0,followRedirects:!1,maxRedirects:10,...a,socketPath:void 0,hostname:void 0,protocol:void 0,timeout:void 0,method:`GET`,host:void 0,path:void 0,port:void 0};if(e._autoPong=o.autoPong,e._closeTimeout=o.closeTimeout,!j.includes(o.protocolVersion))throw RangeError(`Unsupported protocol version: ${o.protocolVersion} (supported versions: ${j.join(`, `)})`);let l;if(t instanceof d)l=t;else try{l=new d(t)}catch{throw SyntaxError(`Invalid URL: ${t}`)}l.protocol===`http:`?l.protocol=`ws:`:l.protocol===`https:`&&(l.protocol=`wss:`),e._url=l.href;let u=l.protocol===`wss:`,p=l.protocol===`ws+unix:`,m;if(l.protocol!==`ws:`&&!u&&!p?m=`The URL's protocol must be one of "ws:", "wss:", "http:", "https:", or "ws+unix:"`:p&&!l.pathname?m=`The URL's pathname is empty`:l.hash&&(m=`The URL contains a fragment identifier`),m){let t=SyntaxError(m);if(e._redirects===0)throw t;F(e,t);return}let h=u?443:80,g=s(16).toString(`base64`),v=u?r.request:i.request,b=new Set,x;if(o.createConnection=o.createConnection||(u?ne:te),o.defaultPort=o.defaultPort||h,o.port=l.port||h,o.host=l.hostname.startsWith(`[`)?l.hostname.slice(1,-1):l.hostname,o.headers={...o.headers,"Sec-WebSocket-Version":o.protocolVersion,"Sec-WebSocket-Key":g,Connection:`Upgrade`,Upgrade:`websocket`},o.path=l.pathname+l.search,o.timeout=o.handshakeTimeout,o.perMessageDeflate&&(x=new f({...o.perMessageDeflate,isServer:!1,maxPayload:o.maxPayload}),o.headers[`Sec-WebSocket-Extensions`]=D({[f.extensionName]:x.offer()})),n.length){for(let e of n){if(typeof e!=`string`||!N.test(e)||b.has(e))throw SyntaxError(`An invalid or duplicated subprotocol was specified`);b.add(e)}o.headers[`Sec-WebSocket-Protocol`]=n.join(`,`)}if(o.origin&&(o.protocolVersion<13?o.headers[`Sec-WebSocket-Origin`]=o.origin:o.headers.Origin=o.origin),(l.username||l.password)&&(o.auth=`${l.username}:${l.password}`),p){let e=o.path.split(`:`);o.socketPath=e[0],o.path=e[1]}let S;if(o.followRedirects){if(e._redirects===0){e._originalIpc=p,e._originalSecure=u,e._originalHostOrSocketPath=p?o.socketPath:l.host;let t=a&&a.headers;if(a={...a,headers:{}},t)for(let[e,n]of Object.entries(t))a.headers[e.toLowerCase()]=n}else if(e.listenerCount(`redirect`)===0){let t=p?e._originalIpc?o.socketPath===e._originalHostOrSocketPath:!1:e._originalIpc?!1:l.host===e._originalHostOrSocketPath;(!t||e._originalSecure&&!u)&&(delete o.headers.authorization,delete o.headers.cookie,t||delete o.headers.host,o.auth=void 0)}o.auth&&!a.headers.authorization&&(a.headers.authorization=`Basic `+Buffer.from(o.auth).toString(`base64`)),S=e._req=v(o),e._redirects&&e.emit(`redirect`,e.url,S)}else S=e._req=v(o);o.timeout&&S.on(`timeout`,()=>{I(e,S,`Opening handshake has timed out`)}),S.on(`error`,t=>{S===null||S[A]||(S=e._req=null,F(e,t))}),S.on(`response`,r=>{let i=r.headers.location,s=r.statusCode;if(i&&o.followRedirects&&s>=300&&s<400){if(++e._redirects>o.maxRedirects){I(e,S,`Maximum redirects exceeded`);return}S.abort();let r;try{r=new d(i,t)}catch{F(e,SyntaxError(`Invalid URL: ${i}`));return}ee(e,r,n,a)}else e.emit(`unexpected-response`,S,r)||I(e,S,`Unexpected server response: ${r.statusCode}`)}),S.on(`upgrade`,(t,n,r)=>{if(e.emit(`upgrade`,t),e.readyState!==P.CONNECTING)return;S=e._req=null;let i=t.headers.upgrade;if(i===void 0||i.toLowerCase()!==`websocket`){I(e,n,`Invalid Upgrade header`);return}let a=c(`sha1`).update(g+y).digest(`base64`);if(t.headers[`sec-websocket-accept`]!==a){I(e,n,`Invalid Sec-WebSocket-Accept header`);return}let s=t.headers[`sec-websocket-protocol`],l;if(s===void 0?b.size&&(l=`Server sent no subprotocol`):b.size?b.has(s)||(l=`Server sent an invalid subprotocol`):l=`Server sent a subprotocol but none was requested`,l){I(e,n,l);return}s&&(e._protocol=s);let u=t.headers[`sec-websocket-extensions`];if(u!==void 0){if(!x){I(e,n,`Server sent a Sec-WebSocket-Extensions header but no extension was requested`);return}let t;try{t=O(u)}catch{I(e,n,`Invalid Sec-WebSocket-Extensions header`);return}let r=Object.keys(t);if(r.length!==1||r[0]!==f.extensionName){I(e,n,`Server indicated an extension that was not requested`);return}try{x.accept(t[f.extensionName])}catch{I(e,n,`Invalid Sec-WebSocket-Extensions header`);return}e._extensions[f.extensionName]=x}e.setSocket(n,r,{allowSynchronousEvents:o.allowSynchronousEvents,generateMask:o.generateMask,maxPayload:o.maxPayload,skipUTF8Validation:o.skipUTF8Validation})}),o.finishRequest?o.finishRequest(S,e):S.end()}function F(e,t){e._readyState=P.CLOSING,e._errorEmitted=!0,e.emit(`error`,t),e.emitClose()}function te(e){return e.path=e.socketPath,a.connect(e)}function ne(e){return e.path=void 0,!e.servername&&e.servername!==``&&(e.servername=a.isIP(e.host)?``:e.host),o.connect(e)}function I(e,t,n){e._readyState=P.CLOSING;let r=Error(n);Error.captureStackTrace(r,I),t.setHeader?(t[A]=!0,t.abort(),t.socket&&!t.socket.destroyed&&t.socket.destroy(),process.nextTick(F,e,r)):(t.destroy(r),t.once(`error`,e.emit.bind(e,`error`)),t.once(`close`,e.emitClose.bind(e)))}function re(e,t,n){if(t){let n=h(t)?t.size:k(t).length;e._socket?e._sender._bufferedBytes+=n:e._bufferedAmount+=n}if(n){let t=Error(`WebSocket is not open: readyState ${e.readyState} (${M[e.readyState]})`);process.nextTick(n,t)}}function ie(e,t){let n=this[C];n._closeFrameReceived=!0,n._closeMessage=t,n._closeCode=e,n._socket[C]!==void 0&&(n._socket.removeListener(`data`,de),process.nextTick(le,n._socket),e===1005?n.close():n.close(e,t))}function ae(){let e=this[C];e.isPaused||e._socket.resume()}function oe(e){let t=this[C];t._socket[C]!==void 0&&(t._socket.removeListener(`data`,de),process.nextTick(le,t._socket),t.close(e[S])),t._errorEmitted||(t._errorEmitted=!0,t.emit(`error`,e))}function se(){this[C].emitClose()}function ce(e,t){this[C].emit(`message`,e,t)}function L(e){let t=this[C];t._autoPong&&t.pong(e,!this._isServer,w),t.emit(`ping`,e)}function R(e){this[C].emit(`pong`,e)}function le(e){e.resume()}function ue(e){let t=this[C];t.readyState!==P.CLOSED&&(t.readyState===P.OPEN&&(t._readyState=P.CLOSING,z(t)),this._socket.end(),t._errorEmitted||(t._errorEmitted=!0,t.emit(`error`,e)))}function z(e){e._closeTimer=setTimeout(e._socket.destroy.bind(e._socket),e._closeTimeout)}function V(){let e=this[C];if(this.removeListener(`close`,V),this.removeListener(`data`,de),this.removeListener(`end`,fe),e._readyState=P.CLOSING,!this._readableState.endEmitted&&!e._closeFrameReceived&&!e._receiver._writableState.errorEmitted&&this._readableState.length!==0){let t=this.read(this._readableState.length);e._receiver.write(t)}e._receiver.end(),this[C]=void 0,clearTimeout(e._closeTimer),e._receiver._writableState.finished||e._receiver._writableState.errorEmitted?e.emitClose():(e._receiver.on(`error`,se),e._receiver.on(`finish`,se))}function de(e){this[C]._receiver.write(e)||this.pause()}function fe(){let e=this[C];e._readyState=P.CLOSING,e._receiver.end(),this.end()}function pe(){let e=this[C];this.removeListener(`error`,pe),this.on(`error`,w),e&&(e._readyState=P.CLOSING,this.destroy())}})),ri=R(((e,t)=>{ni();let{Duplex:n}=B(`stream`);function r(e){e.emit(`close`)}function i(){!this.destroyed&&this._writableState.finished&&this.destroy()}function a(e){this.removeListener(`error`,a),this.destroy(),this.listenerCount(`error`)===0&&this.emit(`error`,e)}function o(e,t){let o=!0,s=new n({...t,autoDestroy:!1,emitClose:!1,objectMode:!1,writableObjectMode:!1});return e.on(`message`,function(t,n){let r=!n&&s._readableState.objectMode?t.toString():t;s.push(r)||e.pause()}),e.once(`error`,function(e){s.destroyed||(o=!1,s.destroy(e))}),e.once(`close`,function(){s.destroyed||s.push(null)}),s._destroy=function(t,n){if(e.readyState===e.CLOSED){n(t),process.nextTick(r,s);return}let i=!1;e.once(`error`,function(e){i=!0,n(e)}),e.once(`close`,function(){i||n(t),process.nextTick(r,s)}),o&&e.terminate()},s._final=function(t){if(e.readyState===e.CONNECTING){e.once(`open`,function(){s._final(t)});return}e._socket!==null&&(e._socket._writableState.finished?(t(),s._readableState.endEmitted&&s.destroy()):(e._socket.once(`finish`,function(){t()}),e.close()))},s._read=function(){e.isPaused&&e.resume()},s._write=function(t,n,r){if(e.readyState===e.CONNECTING){e.once(`open`,function(){s._write(t,n,r)});return}e.send(t,r)},s.on(`end`,i),s.on(`error`,a),s}t.exports=o})),ii=R(((e,t)=>{let{tokenChars:n}=Zr();function r(e){let t=new Set,r=-1,i=-1,a=0;for(;a<e.length;a++){let o=e.charCodeAt(a);if(i===-1&&n[o]===1)r===-1&&(r=a);else if(a!==0&&(o===32||o===9))i===-1&&r!==-1&&(i=a);else if(o===44){if(r===-1)throw SyntaxError(`Unexpected character at index ${a}`);i===-1&&(i=a);let n=e.slice(r,i);if(t.has(n))throw SyntaxError(`The "${n}" subprotocol is duplicated`);t.add(n),r=i=-1}else throw SyntaxError(`Unexpected character at index ${a}`)}if(r===-1||i!==-1)throw SyntaxError(`Unexpected end of input`);let o=e.slice(r,a);if(t.has(o))throw SyntaxError(`The "${o}" subprotocol is duplicated`);return t.add(o),t}t.exports={parse:r}})),ai=R(((e,t)=>{let n=B(`events`),r=B(`http`),{Duplex:i}=B(`stream`),{createHash:a}=B(`crypto`),o=ti(),s=Xr(),c=ii(),l=ni(),{CLOSE_TIMEOUT:u,GUID:d,kWebSocket:f}=qr(),p=/^[+/0-9A-Za-z]{22}==$/;t.exports=class extends n{constructor(e,t){if(super(),e={allowSynchronousEvents:!0,autoPong:!0,maxPayload:100*1024*1024,skipUTF8Validation:!1,perMessageDeflate:!1,handleProtocols:null,clientTracking:!0,closeTimeout:u,verifyClient:null,noServer:!1,backlog:null,server:null,host:null,path:null,port:null,WebSocket:l,...e},e.port==null&&!e.server&&!e.noServer||e.port!=null&&(e.server||e.noServer)||e.server&&e.noServer)throw TypeError(`One and only one of the "port", "server", or "noServer" options must be specified`);if(e.port==null?e.server&&(this._server=e.server):(this._server=r.createServer((e,t)=>{let n=r.STATUS_CODES[426];t.writeHead(426,{"Content-Length":n.length,"Content-Type":`text/plain`}),t.end(n)}),this._server.listen(e.port,e.host,e.backlog,t)),this._server){let e=this.emit.bind(this,`connection`);this._removeListeners=m(this._server,{listening:this.emit.bind(this,`listening`),error:this.emit.bind(this,`error`),upgrade:(t,n,r)=>{this.handleUpgrade(t,n,r,e)}})}e.perMessageDeflate===!0&&(e.perMessageDeflate={}),e.clientTracking&&(this.clients=new Set,this._shouldEmitClose=!1),this.options=e,this._state=0}address(){if(this.options.noServer)throw Error(`The server is operating in "noServer" mode`);return this._server?this._server.address():null}close(e){if(this._state===2){e&&this.once(`close`,()=>{e(Error(`The server is not running`))}),process.nextTick(h,this);return}if(e&&this.once(`close`,e),this._state!==1)if(this._state=1,this.options.noServer||this.options.server)this._server&&(this._removeListeners(),this._removeListeners=this._server=null),this.clients&&this.clients.size?this._shouldEmitClose=!0:process.nextTick(h,this);else{let e=this._server;this._removeListeners(),this._removeListeners=this._server=null,e.close(()=>{h(this)})}}shouldHandle(e){if(this.options.path){let t=e.url.indexOf(`?`);if((t===-1?e.url:e.url.slice(0,t))!==this.options.path)return!1}return!0}handleUpgrade(e,t,n,r){t.on(`error`,g);let i=e.headers[`sec-websocket-key`],a=e.headers.upgrade,l=+e.headers[`sec-websocket-version`];if(e.method!==`GET`){v(this,e,t,405,`Invalid HTTP method`);return}if(a===void 0||a.toLowerCase()!==`websocket`){v(this,e,t,400,`Invalid Upgrade header`);return}if(i===void 0||!p.test(i)){v(this,e,t,400,`Missing or invalid Sec-WebSocket-Key header`);return}if(l!==13&&l!==8){v(this,e,t,400,`Missing or invalid Sec-WebSocket-Version header`,{"Sec-WebSocket-Version":`13, 8`});return}if(!this.shouldHandle(e)){_(t,400);return}let u=e.headers[`sec-websocket-protocol`],d=new Set;if(u!==void 0)try{d=c.parse(u)}catch{v(this,e,t,400,`Invalid Sec-WebSocket-Protocol header`);return}let f=e.headers[`sec-websocket-extensions`],m={};if(this.options.perMessageDeflate&&f!==void 0){let n=new s({...this.options.perMessageDeflate,isServer:!0,maxPayload:this.options.maxPayload});try{let e=o.parse(f);e[s.extensionName]&&(n.accept(e[s.extensionName]),m[s.extensionName]=n)}catch{v(this,e,t,400,`Invalid or unacceptable Sec-WebSocket-Extensions header`);return}}if(this.options.verifyClient){let a={origin:e.headers[`${l===8?`sec-websocket-origin`:`origin`}`],secure:!!(e.socket.authorized||e.socket.encrypted),req:e};if(this.options.verifyClient.length===2){this.options.verifyClient(a,(a,o,s,c)=>{if(!a)return _(t,o||401,s,c);this.completeUpgrade(m,i,d,e,t,n,r)});return}if(!this.options.verifyClient(a))return _(t,401)}this.completeUpgrade(m,i,d,e,t,n,r)}completeUpgrade(e,t,n,r,i,c,l){if(!i.readable||!i.writable)return i.destroy();if(i[f])throw Error(`server.handleUpgrade() was called more than once with the same socket, possibly due to a misconfiguration`);if(this._state>0)return _(i,503);let u=[`HTTP/1.1 101 Switching Protocols`,`Upgrade: websocket`,`Connection: Upgrade`,`Sec-WebSocket-Accept: ${a(`sha1`).update(t+d).digest(`base64`)}`],p=new this.options.WebSocket(null,void 0,this.options);if(n.size){let e=this.options.handleProtocols?this.options.handleProtocols(n,r):n.values().next().value;e&&(u.push(`Sec-WebSocket-Protocol: ${e}`),p._protocol=e)}if(e[s.extensionName]){let t=e[s.extensionName].params,n=o.format({[s.extensionName]:[t]});u.push(`Sec-WebSocket-Extensions: ${n}`),p._extensions=e}this.emit(`headers`,u,r),i.write(u.concat(`\r
|
|
65
65
|
`).join(`\r
|
|
66
66
|
`)),i.removeListener(`error`,g),p.setSocket(i,c,{allowSynchronousEvents:this.options.allowSynchronousEvents,maxPayload:this.options.maxPayload,skipUTF8Validation:this.options.skipUTF8Validation}),this.clients&&(this.clients.add(p),p.on(`close`,()=>{this.clients.delete(p),this._shouldEmitClose&&!this.clients.size&&process.nextTick(h,this)})),l(p,r)}};function m(e,t){for(let n of Object.keys(t))e.on(n,t[n]);return function(){for(let n of Object.keys(t))e.removeListener(n,t[n])}}function h(e){e._state=2,e.emit(`close`)}function g(){this.destroy()}function _(e,t,n,i){n||=r.STATUS_CODES[t],i={Connection:`close`,"Content-Type":`text/html`,"Content-Length":Buffer.byteLength(n),...i},e.once(`finish`,e.destroy),e.end(`HTTP/1.1 ${t} ${r.STATUS_CODES[t]}\r\n`+Object.keys(i).map(e=>`${e}: ${i[e]}`).join(`\r
|
|
67
67
|
`)+`\r
|
|
68
68
|
\r
|
|
69
|
-
`+n)}function v(e,t,n,r,i,a){if(e.listenerCount(`wsClientError`)){let r=Error(i);Error.captureStackTrace(r,v),e.emit(`wsClientError`,r,n,t)}else _(n,r,i,a)}}));ri(),ti(),Xr(),Qr(),$r(),ii();var oi=z(ni(),1);ai();function si(e){if(!(e instanceof Error))return e;let t=e;return{...Object.keys(e).reduce((e,n)=>(e[n]=t[n],e),{}),name:e.name,message:e.message,stack:e.stack}}function ci(e){if(e instanceof Error)return e;if(typeof e==`object`&&e){let t=e,n=Error(typeof t.message==`string`?t.message:String(e));return typeof t.name==`string`&&t.name&&(n.name=t.name),typeof t.stack==`string`&&t.stack&&(n.stack=t.stack),Object.assign(n,e),n}return Error(String(e))}var li=class e{properties;static nextId=0;id;sequenceNumber=1;awaitingPromises={};sendAcknowledgement=!0;remoteApiAcknowledgement=!0;inboundApi;_api;_originalProcessMessageReceived;constructor(t,n){this.properties=n;let r=this;this.id=e.nextId++,this._api=new Proxy({},{get:function(e,t){return async(...e)=>await r.sendInternal({method:t,args:e})}}),this.inboundApi=t(this)}get api(){return this._api}async processMethod(e,t,n){n?this.sendAcknowledgement&&e.sequenceNumber&&this.sendMessage({sequenceNumber:e.sequenceNumber,error:si(n)}):this.sendAcknowledgement&&e.sequenceNumber&&this.sendMessage({sequenceNumber:e.sequenceNumber,result:{value:t}})}async processResult(e,t,n,r){t(r)}async processError(e,t,n,r){n(ci(r))}async processMessageReceived(e){if(e.method)try{let t=await this.inboundApi[e.method].apply(this.inboundApi,e.args);await this.processMethod(e,t,void 0)}catch(t){t||=Error(`An unknown error occurred`),await this.processMethod(e,void 0,t)}else if(e.result){let{sequenceNumber:t,result:n}=e;if(this.awaitingPromises[t]){let{resolve:r,reject:i}=this.awaitingPromises[t];delete this.awaitingPromises[t],r&&n&&await this.processResult(e,r,i,n.value)}}else if(e.error){let{sequenceNumber:t,error:n}=e;if(this.awaitingPromises[t]){let{resolve:r,reject:i}=this.awaitingPromises[t];delete this.awaitingPromises[t],r&&i&&await this.processError(e,r,i,n)}}}rejectAwaitingPromises(e){Object.values(this.awaitingPromises).forEach(({reject:t})=>t(e))}async onMessageReceived(e){this.processMessageReceived(e)}async sendInternal(e){if(this.remoteApiAcknowledgement&&(this.remoteApiAcknowledgement===!0||this.remoteApiAcknowledgement(e)))return e.sequenceNumber=this.sequenceNumber++,await new Promise(async(t,n)=>{this.awaitingPromises[e.sequenceNumber]={resolve:t,reject:n};try{await this.sendMessage(e)}catch(t){delete this.awaitingPromises[e.sequenceNumber],n(t)}});try{await this.sendMessage(e)}catch{}}dispose(){this.onDisposeListeners.map(e=>e()),this.onDisposeListeners=[],this.onConnectedListeners=[],this.onVersionMismatchListeners=[],this.rejectAwaitingPromises(Error(`Channel disposed`))}onConnectedListeners=[];subscribeOnConnected(e){this.onConnectedListeners.push(e)}unsubscribeOnConnected(e){this.onConnectedListeners=this.onConnectedListeners.filter(t=>t!==e)}connected(){this.onConnectedListeners.map(e=>e()),this.onConnectedListeners=[]}onVersionMismatchListeners=[];subscribeOnVersionMismatch(e){this.onVersionMismatchListeners.push(e)}unsubscribeOnVersionMismatch(e){this.onVersionMismatchListeners=this.onVersionMismatchListeners.filter(t=>t!==e)}versionMismatch(e,t){this.onVersionMismatchListeners.map(n=>n(e,t))}onDisposeListeners=[];subscribeOnDispose(e){this.onDisposeListeners.push(e)}unsubscribeOnDispose(e){this.onDisposeListeners=this.onDisposeListeners.filter(t=>t!==e)}replaceReceiver(e){this._originalProcessMessageReceived||=this.processMessageReceived;let t=e.allowedCalls;this.processMessageReceived=n=>{if(e.filter(n)){if(t<=0)return e.replacement(n);t--}return this._originalProcessMessageReceived.bind(this)(n)}}restoreReceiver(){this.processMessageReceived=(this._originalProcessMessageReceived||this.processMessageReceived).bind(this),delete this._originalProcessMessageReceived}},ui=class{inboundApiFactory;channelBaseConstructor;_channels=[];get channels(){return[...this._channels]}constructor(e,t){this.inboundApiFactory=e,this.channelBaseConstructor=t}createChannel(e){let t=new this.channelBaseConstructor(this.inboundApiFactory,e);return this._channels.push(t),t.connected(),t}destroyChannel(e){let t=this._channels.indexOf(e);t!==-1&&this._channels.splice(t,1)[0].dispose()}dispose(){this.channels.map(e=>this.destroyChannel(e))}};function di(e){return e instanceof Error?e.message:String(e)}function fi(e){return e instanceof Error?e.toString():String(e)}function pi(e){return e instanceof Error?e:Error(String(e))}var mi=class extends li{_disposed=!1;_version=``;_onChannelError=()=>{};setOptions(e,t){this._onChannelError=e,this._version=t}async sendMessage(e){if(this._disposed){this._onChannelError(Error(`Channel has been disposed`));return}try{this._version&&typeof e==`object`&&e&&(e.version=this._version);let t=JSON.stringify(e);if(t===void 0)throw TypeError(`Failed to serialize RPC message`);this.properties.socket.send(t,e=>{e&&this.properties.logger.trace(`send callback error:%s`,di(e))})}catch(e){throw this.properties.logger.trace(`failed to send message: %s`,di(e)),e}}async processError(e,t,n,r){r&&this.properties.logger.trace(`error processing message: %s, %s`,e,fi(r)),await super.processError(e,t,n,r)}async processMessageReceived(e){e.method&&this.properties.logger.trace(`received method call: %s`,e.method),await super.processMessageReceived(e)}rejectAwaitingPromises(e){this._disposed||super.rejectAwaitingPromises(e)}dispose(){if(this._disposed=!0,super.dispose(),!this.properties.socket.CLOSED)try{this.properties.socket.close()}catch{}}};function hi(e,t,n){e.on(`message`,e=>{try{t(JSON.parse(e.toString()))}catch(e){n(pi(e))}})}function gi(e,t,n,r){let{secure:i,host:a,port:o,secret:s,onError:c,onClose:l}=e,u={};e.from&&(u.headers={from:e.from});let d=i?`wss://`:`ws://`,f=o?`:${o}`:``,p=s?`?secret=${s}`:``,m=new oi.default(d+(a||`localhost`)+f+p,u);return n&&hi(m,n,e=>{r.trace(`incoming message processing error: %s`,e?.message)}),m.onclose=({code:e,reason:t})=>{r.trace(`client disconnected: %s %s`,e,t);try{l&&l(m,e,t?.toString())}catch(e){r.trace(`error when closing connection: %s`,di(e))}},m.onerror=e=>{try{r.trace(`connection error: %s`,e.error),c&&c(e.error)}catch(e){r.trace(`error when processing connection error: %s`,di(e))}},m.onopen=()=>{t()},m}var _i=class extends ui{_socket;constructor(e,t){super(t,mi),e.onChannelError||=e=>{this.channels.forEach(t=>{t.rejectAwaitingPromises(e),this.destroyChannel(t)})},e.onError||=e=>{this.channels.forEach(t=>{t.rejectAwaitingPromises(e),this.destroyChannel(t)})},e.onClose||=(e,t,n)=>{this.channels.forEach(e=>{e.rejectAwaitingPromises(Error(`WebSocket closed with code ${t} and reason ${n}`)),this.destroyChannel(e)})},this._socket=gi(e,()=>{this.createChannel({socket:this._socket,logger:e.logger}).setOptions(e.onChannelError,e.version)},e=>{this.channels.forEach(t=>{t.onMessageReceived(e)})},e.logger)}dispose(){this._socket?.close(),super.dispose()}};const vi=J.create(`core/session`);var yi=class{_channels;constructor(e){this._channels=e}get _channel(){let[e]=this._channels();if(!e)throw Error(`Core RPC channel is not available`);return e}handshake(e){return this._channel.api.handshake(e)}signal(e){this._channel.api.signal(e)}run(e){return this._channel.api.run(e)}export(e){return this._channel.api.export(e)}stop(){this._channel.api.stop()}},bi=class{ping(){}notify(e){}restart(){}launched(e){}relicensed(){}stopped(e){}},xi=class{_client;_alive=Ci();_api;_disposed=!1;_deactivated=!1;_interrupted=!1;constructor(e,t){this._client=e,this._api=t(()=>this._client.channels)}get alive(){return this._alive.promise}get api(){return this._api}deactivate(){this._deactivated=!0}interrupt(e){if(!this._interrupted){if(this._interrupted=!0,this._deactivated||this._disposed){this._alive.resolve();return}this._alive.reject(e)}}dispose(){this._disposed||(this._disposed=!0,this._interrupted||(this._interrupted=!0,this._alive.resolve()),this._client.dispose())}};async function Si(e,t,n){let r=!1,i=!1,a,o=Ci(),s=e=>{if(!r){r=!0,o.reject(e);return}i&&a.interrupt(e)};a=new xi(new _i({port:e,from:`cli`,logger:{trace:(...e)=>{let[t,n,...r]=e;if(typeof t==`string`){vi.trace(te(t,n,...r));return}if(typeof n==`string`||n===void 0){vi.trace(t,n,...r);return}vi.trace({args:e},`Websocket`)}},version:`1.0.0`,onError:e=>{vi.debug({error:e},`Socket error`),s(e)},onChannelError:e=>{vi.debug({error:e},`Channel error`),s(e)},onClose:(e,t,n)=>{vi.debug({code:t,reason:n},`Socket closed`),s(Error(`Socket closed with code ${t} and reason: ${n}`))}},n=>(n.subscribeOnConnected(async()=>{r||(i=!0,r=!0,vi.debug({port:e},`Connected`),o.resolve())}),t)),n);try{return await o.promise,a}catch(e){throw a.dispose(),e}}function Ci(){let e,t;return{promise:new Promise((n,r)=>{e=n,t=r}),resolve:e,reject:t}}const wi=new Ir;var Ti=class extends bi{_options;_path;_restart;constructor(e,t,n){super(),this._options=e,this._path=t,this._restart=n}ping(){}notify(e){}restart(){this._restart()}launched(e){}relicensed(){this._path&&(wi.stop(),wi.check(this._path,this._options.ssl))}stopped(e){}},Ei=class{_logger=J.create(`commands/run`);async execute(e){this._logger.info({cwd:j(),options:e},`Executing run command`);let t=await this._execute(e);return this._logger.info({result:t},`Executed run command`),t}async _execute(e){let t=await this._cycle(e);return t?`restarted`in t?(this._logger.info(`Restarting process`),await this._execute(e)):(console.info(t.message),t.success):!1}async _cycle(e){let t=!1,n=!1,r,i,a,o=()=>{t=!0},s=await this._attach(e,()=>new Ti(e,void 0,()=>{n||r!==void 0||(n=!0,o())}),e=>new yi(e));if(!s)return await this._launch(e);let{manifest:c,session:l}=s;this._logger.info({id:c.id,pid:c.pids.primary,port:c.ports.primary},`Connected to active process from registry`),o=()=>{t||(t=!0,l.deactivate())};let u=k(),d=this._handshake(l).then(async()=>(await this._run(u,l,e),await l.api.export({id:u}))).then(e=>{n||r!==void 0||(r=e,o())}).catch(e=>{n||t||(i=e,o())}),f=l.alive.catch(e=>{t||(a=e,o())});try{await d}finally{o(),l.dispose(),await f}if(n)return{restarted:!0};if(a)throw a;if(i)throw i;return r}async _launch(e){let t=await Ur({...e,cache:!1,skill:e.skill,smart:e.smart||e.paths.length>0},new Fr,wi),n,r=()=>n?(n(),!0):!1,i=t.exited(r),a=await Promise.race([t.ready,i.then(()=>void 0)]);if(a===void 0)return;let o,s,c,l,u,d=!1,f=!1,p=!1,m,h,g,_,v=()=>(_?.(),h||(h=t.stop(r),h.catch(()=>{})),h);try{g=await Si(a,new Ti(e,t.location.path,()=>{p||u!==void 0||(p=!0,v())}),e=>new yi(e)),n=()=>g.api.stop(),wi.restarter={restart(e){g.api.signal({type:`update`,version:e})}},_=()=>{f||(f=!0,g.deactivate())}}catch(e){try{await t.stop(),await i}catch(e){this._logger.warn({error:e},`Failed to stop process after connection failure`)}throw e}t.stopping.then(()=>{_?.()}),m=this._handshake(g).then(async()=>{t.location.type===`dist`&&wi.schedule(t.location.path,e.ssl);let n=k();return await this._run(n,g,e),await g.api.export({id:n})}).then(t=>{if(!(p||u!==void 0)){if(u=t,e.skill){d=!0,_?.();return}return v()}}).catch(async e=>{if(!(p||f)){c=e;try{await v()}catch(e){this._logger.warn({error:e},`Failed to stop process after run/export failure`)}}});let y=g.alive.catch(async e=>{if(!f){s=e;try{await v()}catch(e){this._logger.warn({error:e},`Failed to stop process after connection loss`)}}});try{if(m&&await m,d&&t.release(),!d)try{await i}catch(e){o=e}}finally{if(wi.restarter=void 0,g.dispose(),await y,h)try{await h}catch(e){l=e}}if(l)throw l;if(p)return{restarted:!0};if(o)throw o;if(s)throw s;if(c)throw c;if(u)return u}async _attach(e,t,n){if(e.force)return;let r=this._find(e);if(r.length===0)return;let i=await this._connect(r,t,n);if(i)return i;throw Error(`Failed to attach to active Wallaby instance for the specified config.`)}async _connect([e,...t],n,r){if(e){this._logger.info({id:e.id,pid:e.pids.primary,port:e.ports.primary},`Trying to connect to active process from registry`);try{return{manifest:e,session:await Si(e.ports.primary,n(e),r)}}catch(i){return this._logger.warn({error:i,id:e.id,pid:e.pids.primary,port:e.ports.primary},`Failed to connect to active process from registry`),await this._connect(t,n,r)}}}async _run(e,t,n){await t.api.run({id:e,paths:n.paths})}async _handshake(e){let t=await e.api.handshake(Y.version);if(!t.compatible)throw Error(t.message||`Wallaby CLI v${Y.version} is not compatible with the running Wallaby Core.`)}_find(e){let t=ln(s(e.config?e.config:i(j(),`auto.detect`)));return new Kr().manifests.filter(e=>e.paths.config===t).sort((e,t)=>t.timestamps.refreshed-e.timestamps.refreshed).filter(e=>{try{return process.kill(e.pids.primary,0),!0}catch(e){return(typeof e==`object`&&e&&`code`in e?e.code:void 0)===`EPERM`}})}},Di=R(((e,t)=>{t.exports=a,a.sync=o;var n=B(`fs`);function r(e,t){var n=t.pathExt===void 0?process.env.PATHEXT:t.pathExt;if(!n||(n=n.split(`;`),n.indexOf(``)!==-1))return!0;for(var r=0;r<n.length;r++){var i=n[r].toLowerCase();if(i&&e.substr(-i.length).toLowerCase()===i)return!0}return!1}function i(e,t,n){return!e.isSymbolicLink()&&!e.isFile()?!1:r(t,n)}function a(e,t,r){n.stat(e,function(n,a){r(n,n?!1:i(a,e,t))})}function o(e,t){return i(n.statSync(e),e,t)}})),Oi=R(((e,t)=>{t.exports=r,r.sync=i;var n=B(`fs`);function r(e,t,r){n.stat(e,function(e,n){r(e,e?!1:a(n,t))})}function i(e,t){return a(n.statSync(e),t)}function a(e,t){return e.isFile()&&o(e,t)}function o(e,t){var n=e.mode,r=e.uid,i=e.gid,a=t.uid===void 0?process.getuid&&process.getuid():t.uid,o=t.gid===void 0?process.getgid&&process.getgid():t.gid,s=64,c=8,l=1,u=s|c;return n&l||n&c&&i===o||n&s&&r===a||n&u&&a===0}})),ki=R(((e,t)=>{B(`fs`);var n=process.platform===`win32`||global.TESTING_WINDOWS?Di():Oi();t.exports=r,r.sync=i;function r(e,t,i){if(typeof t==`function`&&(i=t,t={}),!i){if(typeof Promise!=`function`)throw TypeError(`callback not provided`);return new Promise(function(n,i){r(e,t||{},function(e,t){e?i(e):n(t)})})}n(e,t||{},function(e,n){e&&(e.code===`EACCES`||t&&t.ignoreErrors)&&(e=null,n=!1),i(e,n)})}function i(e,t){try{return n.sync(e,t||{})}catch(e){if(t&&t.ignoreErrors||e.code===`EACCES`)return!1;throw e}}})),Ai=R(((e,t)=>{let n=process.platform===`win32`||process.env.OSTYPE===`cygwin`||process.env.OSTYPE===`msys`,r=B(`path`),i=n?`;`:`:`,a=ki(),o=e=>Object.assign(Error(`not found: ${e}`),{code:`ENOENT`}),s=(e,t)=>{let r=t.colon||i,a=e.match(/\//)||n&&e.match(/\\/)?[``]:[...n?[process.cwd()]:[],...(t.path||process.env.PATH||``).split(r)],o=n?t.pathExt||process.env.PATHEXT||`.EXE;.CMD;.BAT;.COM`:``,s=n?o.split(r):[``];return n&&e.indexOf(`.`)!==-1&&s[0]!==``&&s.unshift(``),{pathEnv:a,pathExt:s,pathExtExe:o}},c=(e,t,n)=>{typeof t==`function`&&(n=t,t={}),t||={};let{pathEnv:i,pathExt:c,pathExtExe:l}=s(e,t),u=[],d=n=>new Promise((a,s)=>{if(n===i.length)return t.all&&u.length?a(u):s(o(e));let c=i[n],l=/^".*"$/.test(c)?c.slice(1,-1):c,d=r.join(l,e);a(f(!l&&/^\.[\\\/]/.test(e)?e.slice(0,2)+d:d,n,0))}),f=(e,n,r)=>new Promise((i,o)=>{if(r===c.length)return i(d(n+1));let s=c[r];a(e+s,{pathExt:l},(a,o)=>{if(!a&&o)if(t.all)u.push(e+s);else return i(e+s);return i(f(e,n,r+1))})});return n?d(0).then(e=>n(null,e),n):d(0)};t.exports=c,c.sync=(e,t)=>{t||={};let{pathEnv:n,pathExt:i,pathExtExe:c}=s(e,t),l=[];for(let o=0;o<n.length;o++){let s=n[o],u=/^".*"$/.test(s)?s.slice(1,-1):s,d=r.join(u,e),f=!u&&/^\.[\\\/]/.test(e)?e.slice(0,2)+d:d;for(let e=0;e<i.length;e++){let n=f+i[e];try{if(a.sync(n,{pathExt:c}))if(t.all)l.push(n);else return n}catch{}}}if(t.all&&l.length)return l;if(t.nothrow)return null;throw o(e)}})),ji=R(((e,t)=>{let n=(e={})=>{let t=e.env||process.env;return(e.platform||process.platform)===`win32`?Object.keys(t).reverse().find(e=>e.toUpperCase()===`PATH`)||`Path`:`PATH`};t.exports=n,t.exports.default=n})),Mi=R(((e,t)=>{let n=B(`path`),r=Ai(),i=ji();function a(e,t){let a=e.options.env||process.env,o=process.cwd(),s=e.options.cwd!=null,c=s&&process.chdir!==void 0&&!process.chdir.disabled;if(c)try{process.chdir(e.options.cwd)}catch{}let l;try{l=r.sync(e.command,{path:a[i({env:a})],pathExt:t?n.delimiter:void 0})}catch{}finally{c&&process.chdir(o)}return l&&=n.resolve(s?e.options.cwd:``,l),l}function o(e){return a(e)||a(e,!0)}t.exports=o})),Ni=R(((e,t)=>{let n=/([()\][%!^"`<>&|;, *?])/g;function r(e){return e=e.replace(n,`^$1`),e}function i(e,t){return e=`${e}`,e=e.replace(/(?=(\\+?)?)\1"/g,`$1$1\\"`),e=e.replace(/(?=(\\+?)?)\1$/,`$1$1`),e=`"${e}"`,e=e.replace(n,`^$1`),t&&(e=e.replace(n,`^$1`)),e}t.exports.command=r,t.exports.argument=i})),Pi=R(((e,t)=>{t.exports=/^#!(.*)/})),Fi=R(((e,t)=>{let n=Pi();t.exports=(e=``)=>{let t=e.match(n);if(!t)return null;let[r,i]=t[0].replace(/#! ?/,``).split(` `),a=r.split(`/`).pop();return a===`env`?i:i?`${a} ${i}`:a}})),Ii=R(((e,t)=>{let n=B(`fs`),r=Fi();function i(e){let t=Buffer.alloc(150),i;try{i=n.openSync(e,`r`),n.readSync(i,t,0,150,0),n.closeSync(i)}catch{}return r(t.toString())}t.exports=i})),Li=R(((e,t)=>{let n=B(`path`),r=Mi(),i=Ni(),a=Ii(),o=process.platform===`win32`,s=/\.(?:com|exe)$/i,c=/node_modules[\\/].bin[\\/][^\\/]+\.cmd$/i;function l(e){e.file=r(e);let t=e.file&&a(e.file);return t?(e.args.unshift(e.file),e.command=t,r(e)):e.file}function u(e){if(!o)return e;let t=l(e),r=!s.test(t);if(e.options.forceShell||r){let r=c.test(t);e.command=n.normalize(e.command),e.command=i.command(e.command),e.args=e.args.map(e=>i.argument(e,r)),e.args=[`/d`,`/s`,`/c`,`"${[e.command].concat(e.args).join(` `)}"`],e.command=process.env.comspec||`cmd.exe`,e.options.windowsVerbatimArguments=!0}return e}function d(e,t,n){t&&!Array.isArray(t)&&(n=t,t=null),t=t?t.slice(0):[],n=Object.assign({},n);let r={command:e,args:t,options:n,file:void 0,original:{command:e,args:t}};return n.shell?r:u(r)}t.exports=d})),Ri=R(((e,t)=>{let n=process.platform===`win32`;function r(e,t){return Object.assign(Error(`${t} ${e.command} ENOENT`),{code:`ENOENT`,errno:`ENOENT`,syscall:`${t} ${e.command}`,path:e.command,spawnargs:e.args})}function i(e,t){if(!n)return;let r=e.emit;e.emit=function(n,i){if(n===`exit`){let n=a(i,t);if(n)return r.call(e,`error`,n)}return r.apply(e,arguments)}}function a(e,t){return n&&e===1&&!t.file?r(t.original,`spawn`):null}function o(e,t){return n&&e===1&&!t.file?r(t.original,`spawnSync`):null}t.exports={hookChildProcess:i,verifyENOENT:a,verifyENOENTSync:o,notFoundError:r}})),zi=R(((e,t)=>{let n=B(`child_process`),r=Li(),i=Ri();function a(e,t,a){let o=r(e,t,a),s=n.spawn(o.command,o.args,o.options);return i.hookChildProcess(s,o),s}function o(e,t,a){let o=r(e,t,a),s=n.spawnSync(o.command,o.args,o.options);return s.error=s.error||i.verifyENOENTSync(s.status,o),s}t.exports=a,t.exports.spawn=a,t.exports.sync=o,t.exports._parse=r,t.exports._enoent=i}));function Bi(){try{return d.statSync(`/.dockerenv`),!0}catch{return!1}}function Vi(){try{return d.readFileSync(`/proc/self/cgroup`,`utf8`).includes(`docker`)}catch{return!1}}function Hi(){return Ui===void 0&&(Ui=Bi()||Vi()),Ui}var Ui,Wi=L((()=>{}));function Gi(){return Ki===void 0&&(Ki=qi()||Hi()),Ki}var Ki,qi,Ji=L((()=>{Wi(),qi=()=>{try{return d.statSync(`/run/.containerenv`),!0}catch{return!1}}})),Yi,Xi,Zi=L((()=>{Ji(),Yi=()=>{if(A.platform!==`linux`)return!1;if(c.release().toLowerCase().includes(`microsoft`))return!Gi();try{if(d.readFileSync(`/proc/version`,`utf8`).toLowerCase().includes(`microsoft`))return!Gi()}catch{}return d.existsSync(`/proc/sys/fs/binfmt_misc/WSLInterop`)||d.existsSync(`/run/WSL`)?!Gi():!1},Xi=A.env.__IS_WSL_TEST__?Yi:Yi()})),Qi,$i,ea,ta=L((()=>{Zi(),Qi=(()=>{let e=`/mnt/`,t;return async function(){if(t)return t;let n=`/etc/wsl.conf`,r=!1;try{await v.access(n,y.F_OK),r=!0}catch{}if(!r)return e;let i=await v.readFile(n,{encoding:`utf8`}),a=/(?<!#.*)root\s*=\s*(?<mountPoint>.*)/g.exec(i);return a?(t=a.groups.mountPoint.trim(),t=t.endsWith(`/`)?t:`${t}/`,t):e}})(),$i=async()=>`${await Qi()}c/Windows/System32/WindowsPowerShell/v1.0/powershell.exe`,ea=async()=>Xi?$i():`${A.env.SYSTEMROOT||A.env.windir||String.raw`C:\Windows`}\\System32\\WindowsPowerShell\\v1.0\\powershell.exe`}));function na(e,t,n){let r=n=>Object.defineProperty(e,t,{value:n,enumerable:!0,writable:!0});return Object.defineProperty(e,t,{configurable:!0,enumerable:!0,get(){let e=n();return r(e),e},set(e){r(e)}}),e}var ra=L((()=>{}));async function ia(){if(A.platform!==`darwin`)throw Error(`macOS only`);let{stdout:e}=await aa(`defaults`,[`read`,`com.apple.LaunchServices/com.apple.launchservices.secure`,`LSHandlers`]),t=/LSHandlerRoleAll = "(?!-)(?<id>[^"]+?)";\s+?LSHandlerURLScheme = (?:http|https);/.exec(e)?.groups.id??`com.apple.Safari`;return t===`com.apple.safari`?`com.apple.Safari`:t}var aa,oa=L((()=>{aa=ne(ee)}));async function sa(e,{humanReadableOutput:t=!0,signal:n}={}){if(A.platform!==`darwin`)throw Error(`macOS only`);let r=t?[]:[`-ss`],i={};n&&(i.signal=n);let{stdout:a}=await ca(`osascript`,[`-e`,e,r],i);return a.trim()}var ca,la=L((()=>{ca=ne(ee)}));async function ua(e){return sa(`tell application "Finder" to set app_path to application file id "${e}" as string\ntell application "System Events" to get value of property list item "CFBundleName" of property list file (app_path & ":Contents:Info.plist")`)}var da=L((()=>{la()}));async function fa(e=pa){let{stdout:t}=await e(`reg`,[`QUERY`,` HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\Shell\\Associations\\UrlAssociations\\http\\UserChoice`,`/v`,`ProgId`]),n=/ProgId\s*REG_SZ\s*(?<id>\S+)/.exec(t);if(!n)throw new ha(`Cannot find Windows browser in stdout: ${JSON.stringify(t)}`);let{id:r}=n.groups,i=r.lastIndexOf(`.`),a=r.lastIndexOf(`-`),o=i===-1?void 0:r.slice(0,i),s=a===-1?void 0:r.slice(0,a);return ma[r]??ma[o]??ma[s]??{name:r,id:r}}var pa,ma,ha,ga=L((()=>{pa=ne(ee),ma={MSEdgeHTM:{name:`Edge`,id:`com.microsoft.edge`},MSEdgeBHTML:{name:`Edge Beta`,id:`com.microsoft.edge.beta`},MSEdgeDHTML:{name:`Edge Dev`,id:`com.microsoft.edge.dev`},AppXq0fevzme2pys62n3e0fbqa7peapykr8v:{name:`Edge`,id:`com.microsoft.edge.old`},ChromeHTML:{name:`Chrome`,id:`com.google.chrome`},ChromeBHTML:{name:`Chrome Beta`,id:`com.google.chrome.beta`},ChromeDHTML:{name:`Chrome Dev`,id:`com.google.chrome.dev`},ChromiumHTM:{name:`Chromium`,id:`org.chromium.Chromium`},BraveHTML:{name:`Brave`,id:`com.brave.Browser`},BraveBHTML:{name:`Brave Beta`,id:`com.brave.Browser.beta`},BraveDHTML:{name:`Brave Dev`,id:`com.brave.Browser.dev`},BraveSSHTM:{name:`Brave Nightly`,id:`com.brave.Browser.nightly`},FirefoxURL:{name:`Firefox`,id:`org.mozilla.firefox`},OperaStable:{name:`Opera`,id:`com.operasoftware.Opera`},VivaldiHTM:{name:`Vivaldi`,id:`com.vivaldi.Vivaldi`},"IE.HTTP":{name:`Internet Explorer`,id:`com.microsoft.ie`}},new Map(Object.entries(ma)),ha=class extends Error{}}));async function _a(){if(A.platform===`darwin`){let e=await ia();return{name:await ua(e),id:e}}if(A.platform===`linux`){let{stdout:e}=await va(`xdg-mime`,[`query`,`default`,`x-scheme-handler/http`]),t=e.trim();return{name:ya(t.replace(/.desktop$/,``).replace(`-`,` `)),id:t}}if(A.platform===`win32`)return fa();throw Error(`Only macOS, Linux, and Windows are supported`)}var va,ya,ba=L((()=>{oa(),da(),ga(),va=ne(ee),ya=e=>e.toLowerCase().replaceAll(/(?:^|\s|-)\S/g,e=>e.toUpperCase())})),xa=le({apps:()=>Pa,default:()=>Ma,openApp:()=>Na});async function Sa(){let e=await ea(),t=String.raw`(Get-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\Shell\Associations\UrlAssociations\http\UserChoice").ProgId`,{stdout:n}=await Ta(e,[`-NoProfile`,`-NonInteractive`,`-ExecutionPolicy`,`Bypass`,`-EncodedCommand`,I.from(t,`utf16le`).toString(`base64`)],{encoding:`utf8`}),r=n.trim(),i={ChromeHTML:`com.google.chrome`,BraveHTML:`com.brave.Browser`,MSEdgeHTM:`com.microsoft.edge`,FirefoxURL:`org.mozilla.firefox`};return i[r]?{id:i[r]}:{}}function Ca(e){if(typeof e==`string`||Array.isArray(e))return e;let{[ka]:t}=e;if(!t)throw Error(`${ka} is not supported`);return t}function wa({[Oa]:e},{wsl:t}){if(t&&Xi)return Ca(t);if(!e)throw Error(`${Oa} is not supported`);return Ca(e)}var Ta,Ea,Da,Oa,ka,Aa,ja,Ma,Na,Pa,Fa=L((()=>{ta(),ra(),ba(),Ji(),Ta=ne(N.execFile),Ea=t.dirname(_(import.meta.url)),Da=t.join(Ea,`xdg-open`),{platform:Oa,arch:ka}=A,Aa=async(e,t)=>{let n;for(let r of e)try{return await t(r)}catch(e){n=e}throw n},ja=async e=>{if(e={wait:!1,background:!1,newInstance:!1,allowNonzeroExitCode:!1,...e},Array.isArray(e.app))return Aa(e.app,t=>ja({...e,app:t}));let{name:t,arguments:n=[]}=e.app??{};if(n=[...n],Array.isArray(t))return Aa(t,t=>ja({...e,app:{name:t,arguments:n}}));if(t===`browser`||t===`browserPrivate`){let r={"com.google.chrome":`chrome`,"google-chrome.desktop":`chrome`,"com.brave.Browser":`brave`,"org.mozilla.firefox":`firefox`,"firefox.desktop":`firefox`,"com.microsoft.msedge":`edge`,"com.microsoft.edge":`edge`,"com.microsoft.edgemac":`edge`,"microsoft-edge.desktop":`edge`},i={chrome:`--incognito`,brave:`--incognito`,firefox:`--private-window`,edge:`--inPrivate`},a=Xi?await Sa():await _a();if(a.id in r){let o=r[a.id];return t===`browserPrivate`&&n.push(i[o]),ja({...e,app:{name:Pa[o],arguments:n}})}throw Error(`${a.name} is not supported as a default browser`)}let r,i=[],a={};if(Oa===`darwin`)r=`open`,e.wait&&i.push(`--wait-apps`),e.background&&i.push(`--background`),e.newInstance&&i.push(`--new`),t&&i.push(`-a`,t);else if(Oa===`win32`||Xi&&!Gi()&&!t){r=await ea(),i.push(`-NoProfile`,`-NonInteractive`,`-ExecutionPolicy`,`Bypass`,`-EncodedCommand`),Xi||(a.windowsVerbatimArguments=!0);let o=[`Start`];e.wait&&o.push(`-Wait`),t?(o.push(`"\`"${t}\`""`),e.target&&n.push(e.target)):e.target&&o.push(`"${e.target}"`),n.length>0&&(n=n.map(e=>`"\`"${e}\`""`),o.push(`-ArgumentList`,n.join(`,`))),e.target=I.from(o.join(` `),`utf16le`).toString(`base64`)}else{if(t)r=t;else{let e=!Ea||Ea===`/`,t=!1;try{await v.access(Da,y.X_OK),t=!0}catch{}r=A.versions.electron??(Oa===`android`||e||!t)?`xdg-open`:Da}n.length>0&&i.push(...n),e.wait||(a.stdio=`ignore`,a.detached=!0)}Oa===`darwin`&&n.length>0&&i.push(`--args`,...n),e.target&&i.push(e.target);let o=N.spawn(r,i,a);return e.wait?new Promise((t,n)=>{o.once(`error`,n),o.once(`close`,r=>{if(!e.allowNonzeroExitCode&&r>0){n(Error(`Exited with code ${r}`));return}t(o)})}):(o.unref(),o)},Ma=(e,t)=>{if(typeof e!=`string`)throw TypeError("Expected a `target`");return ja({...t,target:e})},Na=(e,t)=>{if(typeof e!=`string`&&!Array.isArray(e))throw TypeError("Expected a valid `name`");let{arguments:n=[]}=t??{};if(n!=null&&!Array.isArray(n))throw TypeError("Expected `appArguments` as Array type");return ja({...t,app:{name:e,arguments:n}})},Pa={},na(Pa,`chrome`,()=>wa({darwin:`google chrome`,win32:`chrome`,linux:[`google-chrome`,`google-chrome-stable`,`chromium`]},{wsl:{ia32:`/mnt/c/Program Files (x86)/Google/Chrome/Application/chrome.exe`,x64:[`/mnt/c/Program Files/Google/Chrome/Application/chrome.exe`,`/mnt/c/Program Files (x86)/Google/Chrome/Application/chrome.exe`]}})),na(Pa,`brave`,()=>wa({darwin:`brave browser`,win32:`brave`,linux:[`brave-browser`,`brave`]},{wsl:{ia32:`/mnt/c/Program Files (x86)/BraveSoftware/Brave-Browser/Application/brave.exe`,x64:[`/mnt/c/Program Files/BraveSoftware/Brave-Browser/Application/brave.exe`,`/mnt/c/Program Files (x86)/BraveSoftware/Brave-Browser/Application/brave.exe`]}})),na(Pa,`firefox`,()=>wa({darwin:`firefox`,win32:String.raw`C:\Program Files\Mozilla Firefox\firefox.exe`,linux:`firefox`},{wsl:`/mnt/c/Program Files/Mozilla Firefox/firefox.exe`})),na(Pa,`edge`,()=>wa({darwin:`microsoft edge`,win32:`msedge`,linux:[`microsoft-edge`,`microsoft-edge-dev`]},{wsl:`/mnt/c/Program Files (x86)/Microsoft/Edge/Application/msedge.exe`})),na(Pa,`browser`,()=>`browser`),na(Pa,`browserPrivate`,()=>`browserPrivate`)})),Ia=z(zi(),1);const $=J.create(`browser`);function La(e){let t=process.env.BROWSER||``;$.info({url:e,browser:t||`default`},`Opening browser`),t.toLowerCase().endsWith(`.js`)?za(t,e):t.toLowerCase()===`none`?$.debug({url:e},`Browser auto-open disabled by environment`):Va(t,process.env.BROWSER_ARGS?process.env.BROWSER_ARGS.split(` `):[],e)}function Ra(e,t){return new Promise((n,r)=>{$.debug({command:e,cwd:t?.cwd},`Executing shell command`),P(e,t,(i,a)=>{i?($.error({err:i,command:e,cwd:t?.cwd},`Shell command failed`),r(i)):($.debug({command:e,cwd:t?.cwd},`Shell command completed`),n(a.toString()))})})}function za(e,t){let n=process.argv.slice(2);$.debug({scriptPath:e,url:t,extraArgs:n},`Launching browser script`);let r=(0,Ia.default)(process.execPath,[e,...n,t],{stdio:`inherit`});r.on(`error`,n=>{$.error({err:n,scriptPath:e,url:t},`Browser script process failed to start`)}),r.on(`close`,n=>{n===0?$.debug({scriptPath:e,url:t},`Browser script completed successfully`):($.warn({code:n,scriptPath:e,url:t},`Browser script exited with a non-zero status`),process.stdout.write(K.default.red(`\nThe script specified as BROWSER environment variable failed.\n\n${K.default.cyan(e)} exited with code ${n}.`)))})}const Ba=[`Google Chrome Canary`,`Google Chrome Dev`,`Google Chrome Beta`,`Google Chrome`,`Microsoft Edge`,`Brave Browser`,`Vivaldi`,`Chromium`];async function Va(e,t,n){let r=e===`google chrome`?`Google Chrome`:e,i=process.platform===`darwin`&&(!r||Ba.includes(r));if($.debug({browser:r,browserArgs:t,url:n},`Starting browser process`),i)try{let e=await Ra(`ps cax`),t=r&&e.includes(r)?r:Ba.find(t=>e.includes(t));if(t)return await Ra(`osascript openChrome.applescript "${encodeURI(n)}" "${t}"`,{cwd:Y.paths.dirs.package.bin}),$.debug({openedBrowser:t,url:n},`Opened browser via AppleScript`),!0}catch(e){$.debug({err:e,url:n},`AppleScript browser reuse attempt failed`)}process.platform===`darwin`&&e===`open`&&(e=void 0);try{let r=e?{app:{name:e,arguments:t}}:{},i;try{i=(await Promise.resolve().then(()=>(Fa(),xa))).default}catch(e){$.error({err:e},`Failed to import browser opener`)}if(i)try{let t=await i(n,r);$.debug({url:n,browser:e||`default`},`Opened browser with open package`),t.on(`error`,e=>{$.error({err:e,url:n},`Browser subprocess reported an error`),process.stderr.write(e.stack||e.message)})}catch(e){$.error({err:e,url:n},`Failed to open browser`),process.stderr.write(e instanceof Error?e.stack||e.message:String(e))}else $.warn({url:n},`Browser opener module was unavailable`);return!0}catch(t){return $.warn({err:t,url:n,browser:e||`default`},`Browser launch failed`),!1}}const Ha=J.create(`core/notifications`);function Ua(e,t){if(!t.text){Ha.trace({type:t.type},`Skipping empty notification`);return}Ha.debug({type:t.type,button:!!t.button},`Received notification from core`);let n=[];if(~t.text.indexOf(`expire`)&&t.type===`warning`&&e.notifications===!1){Ha.trace({type:t.type},`Suppressed expiration notification`);return}let r=`http://localhost:${e.port}`;~t.text.indexOf(`activate-link`)&&e.port&&n.push({title:`Enter License`,url:r}),~t.text.indexOf(`continue-trial-link`)&&e.port&&n.push({title:`Continue Trial`,url:r}),t.button&&n.push({title:t.button.label,url:t.button.link}),t.text=t.text.replace(/<br\/><br\/>/g,` `).replace(/<br\/>/g,` `).replace(/<a\s+(?:[^>]*?\s+)?href=['"]([^'"]*)['"]/g,(e,t)=>(t.startsWith(`http`)&&n.push({url:t}),e)).replace(/<[^>]*>/g,``);let i=t.type===`error`?K.default.red:t.type===`warning`?K.default.yellow:K.default.green;if(process.stdout.write(i(`\n ⚑ ${t.text}\n\n`)),n.length)for(let e of n)process.stdout.write(`${K.default.green(` ➜ `)}${K.default.bold(K.default.yellow(e.title?e.title+`: `:``))}${K.default.cyan(e.url)}\n`);Ha.trace({links:n},`Rendered notification links`)}const Wa=new Ir;var Ga=class extends bi{_options;_path;_version;_restart;_port;constructor(e,t,n,r){super(),this._options=e,this._path=t,this._version=n,this._restart=r}ping(){}notify(e){Ua({notifications:this._options.notifications,port:this._port,ui:this._options.ui},e)}restart(){this._restart()}launched(e){this._port=e;let t=`http://localhost:${e}`;process.stdout.write(K.default.green(` ${K.default.bold(`WALLABY CORE`)}${this._version?` v${this._version}`:``}\n`)),process.stdout.write(`${K.default.green(` ➜ `)}${K.default.bold(K.default.yellow(`UI:`))} ${K.default.cyan(t)}\n`),process.stdout.write(`${K.default.green(` ➜ `)}${K.default.bold(K.default.dim(`Docs:`))} ${K.default.cyan(`https://wallabyjs.com/docs`)}\n`),this._options.ui!==!1&&La(t)}relicensed(){this._path&&(Wa.stop(),Wa.check(this._path,this._options.ssl))}stopped(e){}},Ka=class{_logger=J.create(`commands/start`);async execute(e){this._logger.info({cwd:j(),options:e},`Executing start command`);let t=await this._execute(e);return this._logger.info({result:t},`Executed start command`),t}async _execute(e){return await this._cycle(e)?(this._logger.info(`Restarting process`),await this._execute(e)):!0}async _cycle(e){if(!e.force){let t=this._find(e)[0];if(t)return this._logger.info({id:t.id,pid:t.pids.primary,port:t.ports.primary},`Active process is already running for the specified config`),console.warn(`Wallaby Core is already started.`),!1}let t=await Ur({...e,smart:e.smart||e.paths.length>0},new Fr,Wa),n,r=()=>n?(n(),!0):!1,i=t.exited(r),a=await Promise.race([t.ready,i.then(()=>void 0)]);if(a===void 0)return!1;let o,s,c,l,u=!1,d,f,p=()=>(d||(d=t.stop(r),d.catch(()=>{})),d);try{f=await Si(a,new Ga(e,t.location.path,t.version,()=>{u||(u=!0,p())}),e=>new yi(e)),n=()=>f.api.stop(),Wa.restarter={restart(e){f.api.signal({type:`update`,version:e})}}}catch(e){try{await t.stop(),await i}catch(e){this._logger.warn({error:e},`Failed to stop process after connection failure`)}throw e}t.stopping.then(()=>f.deactivate());let m=f.alive.catch(async e=>{s=e;try{await p()}catch(e){this._logger.warn({error:e},`Failed to stop process after connection loss`)}});try{await this._handshake(f),t.location.type===`dist`&&Wa.schedule(t.location.path,e.ssl),await this._run(f,e).catch(async e=>{if(!u){c=e;try{await p()}catch(e){this._logger.warn({error:e},`Failed to stop process after run failure`)}}}),await i}catch(e){if(o=e,!u)try{await p(),await i.catch(()=>{})}catch(e){this._logger.warn({error:e},`Failed to stop process after startup failure`)}}finally{if(Wa.restarter=void 0,f.dispose(),await m,d)try{await d}catch(e){l=e}}if(l)throw l;if(o)throw o;if(c)throw c;if(s&&!(s instanceof Error&&s.message.startsWith(`Socket closed with code 1006 and reason:`)))throw s;return u}async _run(e,t){t.paths.length!==0&&await e.api.run({id:k(),paths:t.paths})}async _handshake(e){let t=await e.api.handshake(Y.version);if(!t.compatible)throw Error(t.message||`Wallaby CLI v${Y.version} is not compatible with the running Wallaby Core.`)}_find(e){let t=ln(s(e.config?e.config:i(j(),`auto.detect`)));return new Kr().manifests.filter(e=>e.paths.config===t).sort((e,t)=>t.timestamps.refreshed-e.timestamps.refreshed).filter(e=>{try{return process.kill(e.pids.primary,0),!0}catch(e){return(typeof e==`object`&&e&&`code`in e?e.code:void 0)===`EPERM`}})}},qa=class{_logger=J.create(`commands/stop`);async execute(e){this._logger.info({cwd:j(),options:e},`Executing stop command`);let t=ln(s(e.config?e.config:i(j(),`auto.detect`)));this._logger.info({config:t},`Determined config path and config directory`);let n=new Kr().manifests.filter(n=>e.all?!0:e.config?n.paths.config===t:r(n.paths.config)===r(t));if(n.length!==0)for(let e of n)this._stop(e);else this._logger.info(`No running processes matched stop criteria`);this._logger.info({count:n.length},`Executed stop command`)}_stop(e){this._logger.info({id:e.id,pid:e.pids.primary,config:e.paths.config},`Stopping process from registry`);try{process.kill(e.pids.primary,`SIGTERM`)}catch(e){this._logger.info({error:e},`Failed to send SIGTERM to process, it may have already stopped`)}this._logger.info({id:e.id,pid:e.pids.primary},`Stopped process from registry`)}};J.initialize({path:i(Y.paths.dirs.current,`logs`,`trace.log`)});const Ja=J.create(`cli`);async function Ya(){Ja.trace({argv:process.argv.slice(2),version:Y.version},`Parsing CLI arguments`);let e=gt(process.argv,Y.version);if(e){if(await G.default.ensureDir(Y.paths.dirs.current),e.action===`stop`){await new qa().execute(e.options);return}if(e.action===`run`){let t=await new Ei().execute(e.options);process.exitCode=+!t;return}await new Ka().execute(e.options)}}async function Xa(){try{await Ya()}catch(e){Ja.error({error:e},`Wallaby CLI failed`),console.error(K.default.red(e instanceof Error?e.message:String(e))),process.exitCode=1}finally{try{await J.shutdown()}catch(e){process.stderr.write(`[logger] ${e instanceof Error?e.stack||e.message:String(e)}\n`),process.exitCode=1}}}Xa();export{};
|
|
69
|
+
`+n)}function v(e,t,n,r,i,a){if(e.listenerCount(`wsClientError`)){let r=Error(i);Error.captureStackTrace(r,v),e.emit(`wsClientError`,r,n,t)}else _(n,r,i,a)}}));ri(),ti(),Xr(),Qr(),$r(),ii();var oi=z(ni(),1);ai();function si(e){if(!(e instanceof Error))return e;let t=e;return{...Object.keys(e).reduce((e,n)=>(e[n]=t[n],e),{}),name:e.name,message:e.message,stack:e.stack}}function ci(e){if(e instanceof Error)return e;if(typeof e==`object`&&e){let t=e,n=Error(typeof t.message==`string`?t.message:String(e));return typeof t.name==`string`&&t.name&&(n.name=t.name),typeof t.stack==`string`&&t.stack&&(n.stack=t.stack),Object.assign(n,e),n}return Error(String(e))}var li=class e{properties;static nextId=0;id;sequenceNumber=1;awaitingPromises={};sendAcknowledgement=!0;remoteApiAcknowledgement=!0;inboundApi;_api;_originalProcessMessageReceived;constructor(t,n){this.properties=n;let r=this;this.id=e.nextId++,this._api=new Proxy({},{get:function(e,t){return async(...e)=>await r.sendInternal({method:t,args:e})}}),this.inboundApi=t(this)}get api(){return this._api}async processMethod(e,t,n){n?this.sendAcknowledgement&&e.sequenceNumber&&this.sendMessage({sequenceNumber:e.sequenceNumber,error:si(n)}):this.sendAcknowledgement&&e.sequenceNumber&&this.sendMessage({sequenceNumber:e.sequenceNumber,result:{value:t}})}async processResult(e,t,n,r){t(r)}async processError(e,t,n,r){n(ci(r))}async processMessageReceived(e){if(e.method)try{let t=await this.inboundApi[e.method].apply(this.inboundApi,e.args);await this.processMethod(e,t,void 0)}catch(t){t||=Error(`An unknown error occurred`),await this.processMethod(e,void 0,t)}else if(e.result){let{sequenceNumber:t,result:n}=e;if(this.awaitingPromises[t]){let{resolve:r,reject:i}=this.awaitingPromises[t];delete this.awaitingPromises[t],r&&n&&await this.processResult(e,r,i,n.value)}}else if(e.error){let{sequenceNumber:t,error:n}=e;if(this.awaitingPromises[t]){let{resolve:r,reject:i}=this.awaitingPromises[t];delete this.awaitingPromises[t],r&&i&&await this.processError(e,r,i,n)}}}rejectAwaitingPromises(e){Object.values(this.awaitingPromises).forEach(({reject:t})=>t(e))}async onMessageReceived(e){this.processMessageReceived(e)}async sendInternal(e){if(this.remoteApiAcknowledgement&&(this.remoteApiAcknowledgement===!0||this.remoteApiAcknowledgement(e)))return e.sequenceNumber=this.sequenceNumber++,await new Promise(async(t,n)=>{this.awaitingPromises[e.sequenceNumber]={resolve:t,reject:n};try{await this.sendMessage(e)}catch(t){delete this.awaitingPromises[e.sequenceNumber],n(t)}});try{await this.sendMessage(e)}catch{}}dispose(){this.onDisposeListeners.map(e=>e()),this.onDisposeListeners=[],this.onConnectedListeners=[],this.onVersionMismatchListeners=[],this.rejectAwaitingPromises(Error(`Channel disposed`))}onConnectedListeners=[];subscribeOnConnected(e){this.onConnectedListeners.push(e)}unsubscribeOnConnected(e){this.onConnectedListeners=this.onConnectedListeners.filter(t=>t!==e)}connected(){this.onConnectedListeners.map(e=>e()),this.onConnectedListeners=[]}onVersionMismatchListeners=[];subscribeOnVersionMismatch(e){this.onVersionMismatchListeners.push(e)}unsubscribeOnVersionMismatch(e){this.onVersionMismatchListeners=this.onVersionMismatchListeners.filter(t=>t!==e)}versionMismatch(e,t){this.onVersionMismatchListeners.map(n=>n(e,t))}onDisposeListeners=[];subscribeOnDispose(e){this.onDisposeListeners.push(e)}unsubscribeOnDispose(e){this.onDisposeListeners=this.onDisposeListeners.filter(t=>t!==e)}replaceReceiver(e){this._originalProcessMessageReceived||=this.processMessageReceived;let t=e.allowedCalls;this.processMessageReceived=n=>{if(e.filter(n)){if(t<=0)return e.replacement(n);t--}return this._originalProcessMessageReceived.bind(this)(n)}}restoreReceiver(){this.processMessageReceived=(this._originalProcessMessageReceived||this.processMessageReceived).bind(this),delete this._originalProcessMessageReceived}},ui=class{inboundApiFactory;channelBaseConstructor;_channels=[];get channels(){return[...this._channels]}constructor(e,t){this.inboundApiFactory=e,this.channelBaseConstructor=t}createChannel(e){let t=new this.channelBaseConstructor(this.inboundApiFactory,e);return this._channels.push(t),t.connected(),t}destroyChannel(e){let t=this._channels.indexOf(e);t!==-1&&this._channels.splice(t,1)[0].dispose()}dispose(){this.channels.map(e=>this.destroyChannel(e))}};function di(e){return e instanceof Error?e.message:String(e)}function fi(e){return e instanceof Error?e.toString():String(e)}function pi(e){return e instanceof Error?e:Error(String(e))}var mi=class extends li{_disposed=!1;_version=``;_onChannelError=()=>{};setOptions(e,t){this._onChannelError=e,this._version=t}async sendMessage(e){if(this._disposed){this._onChannelError(Error(`Channel has been disposed`));return}try{this._version&&typeof e==`object`&&e&&(e.version=this._version);let t=JSON.stringify(e);if(t===void 0)throw TypeError(`Failed to serialize RPC message`);this.properties.socket.send(t,e=>{e&&this.properties.logger.trace(`send callback error:%s`,di(e))})}catch(e){throw this.properties.logger.trace(`failed to send message: %s`,di(e)),e}}async processError(e,t,n,r){r&&this.properties.logger.trace(`error processing message: %s, %s`,e,fi(r)),await super.processError(e,t,n,r)}async processMessageReceived(e){e.method&&this.properties.logger.trace(`received method call: %s`,e.method),await super.processMessageReceived(e)}rejectAwaitingPromises(e){this._disposed||super.rejectAwaitingPromises(e)}dispose(){if(this._disposed=!0,super.dispose(),!this.properties.socket.CLOSED)try{this.properties.socket.close()}catch{}}};function hi(e,t,n){e.on(`message`,e=>{try{t(JSON.parse(e.toString()))}catch(e){n(pi(e))}})}function gi(e,t,n,r){let{secure:i,host:a,port:o,secret:s,onError:c,onClose:l}=e,u={};e.from&&(u.headers={from:e.from});let d=i?`wss://`:`ws://`,f=o?`:${o}`:``,p=s?`?secret=${s}`:``,m=new oi.default(d+(a||`localhost`)+f+p,u);return n&&hi(m,n,e=>{r.trace(`incoming message processing error: %s`,e?.message)}),m.onclose=({code:e,reason:t})=>{r.trace(`client disconnected: %s %s`,e,t);try{l&&l(m,e,t?.toString())}catch(e){r.trace(`error when closing connection: %s`,di(e))}},m.onerror=e=>{try{r.trace(`connection error: %s`,e.error),c&&c(e.error)}catch(e){r.trace(`error when processing connection error: %s`,di(e))}},m.onopen=()=>{t()},m}var _i=class extends ui{_socket;constructor(e,t){super(t,mi),e.onChannelError||=e=>{this.channels.forEach(t=>{t.rejectAwaitingPromises(e),this.destroyChannel(t)})},e.onError||=e=>{this.channels.forEach(t=>{t.rejectAwaitingPromises(e),this.destroyChannel(t)})},e.onClose||=(e,t,n)=>{this.channels.forEach(e=>{e.rejectAwaitingPromises(Error(`WebSocket closed with code ${t} and reason ${n}`)),this.destroyChannel(e)})},this._socket=gi(e,()=>{this.createChannel({socket:this._socket,logger:e.logger}).setOptions(e.onChannelError,e.version)},e=>{this.channels.forEach(t=>{t.onMessageReceived(e)})},e.logger)}dispose(){this._socket?.close(),super.dispose()}};const vi=J.create(`core/session`);var yi=class{_channels;constructor(e){this._channels=e}get _channel(){let[e]=this._channels();if(!e)throw Error(`Core RPC channel is not available`);return e}handshake(e){return this._channel.api.handshake(e)}signal(e){this._channel.api.signal(e)}run(e){return this._channel.api.run(e)}export(e){return this._channel.api.export(e)}stop(){this._channel.api.stop()}},bi=class{ping(){}notify(e){}restart(){}launched(e){}relicensed(){}stopped(e){}},xi=class{_client;_alive=Ci();_api;_disposed=!1;_deactivated=!1;_interrupted=!1;constructor(e,t){this._client=e,this._api=t(()=>this._client.channels)}get alive(){return this._alive.promise}get api(){return this._api}deactivate(){this._deactivated=!0}interrupt(e){if(!this._interrupted){if(this._interrupted=!0,this._deactivated||this._disposed){this._alive.resolve();return}this._alive.reject(e)}}dispose(){this._disposed||(this._disposed=!0,this._interrupted||(this._interrupted=!0,this._alive.resolve()),this._client.dispose())}};async function Si(e,t,n){let r=!1,i=!1,a,o=Ci(),s=e=>{if(!r){r=!0,o.reject(e);return}i&&a.interrupt(e)};a=new xi(new _i({port:e,from:`cli`,logger:{trace:(...e)=>{let[t,n,...r]=e;if(typeof t==`string`){vi.trace(te(t,n,...r));return}if(typeof n==`string`||n===void 0){vi.trace(t,n,...r);return}vi.trace({args:e},`Websocket`)}},version:`1.0.0`,onError:e=>{vi.debug({error:e},`Socket error`),s(e)},onChannelError:e=>{vi.debug({error:e},`Channel error`),s(e)},onClose:(e,t,n)=>{vi.debug({code:t,reason:n},`Socket closed`),s(Error(`Socket closed with code ${t} and reason: ${n}`))}},n=>(n.subscribeOnConnected(async()=>{r||(i=!0,r=!0,vi.debug({port:e},`Connected`),o.resolve())}),t)),n);try{return await o.promise,a}catch(e){throw a.dispose(),e}}function Ci(){let e,t;return{promise:new Promise((n,r)=>{e=n,t=r}),resolve:e,reject:t}}const wi=new Ir;var Ti=class extends bi{_options;_path;_restart;constructor(e,t,n){super(),this._options=e,this._path=t,this._restart=n}ping(){}notify(e){}restart(){this._restart()}launched(e){}relicensed(){this._path&&(wi.stop(),wi.check(this._path,this._options.ssl))}stopped(e){}},Ei=class{_logger=J.create(`commands/run`);async execute(e){this._logger.info({cwd:j(),options:e},`Executing run command`);let t=await this._execute(e);return this._logger.info({result:t},`Executed run command`),t}async _execute(e){let t=await this._cycle(e);return t?`restarted`in t?(this._logger.info(`Restarting process`),await this._execute(e)):(console.info(t.message),t.success):!1}async _cycle(e){let t=!1,n=!1,r,i,a,o=()=>{t=!0},s=await this._attach(e,()=>new Ti(e,void 0,()=>{n||r!==void 0||(n=!0,o())}),e=>new yi(e));if(!s)return await this._launch(e);let{manifest:c,session:l}=s;this._logger.info({id:c.id,pid:c.pids.primary,port:c.ports.primary},`Connected to active process from registry`),o=()=>{t||(t=!0,l.deactivate())};let u=k(),d=this._handshake(l).then(async()=>(await this._run(u,l,e),await l.api.export({id:u}))).then(e=>{n||r!==void 0||(r=e,o())}).catch(e=>{n||t||(i=e,o())}),f=l.alive.catch(e=>{t||(a=e,o())});try{await d}finally{o(),l.dispose(),await f}if(n)return{restarted:!0};if(a)throw a;if(i)throw i;return r}async _launch(e){let t=await Ur({...e,cache:!1,skill:e.skill,smart:e.smart||e.paths.length>0},new Fr,wi),n,r=()=>n?(n(),!0):!1,i=t.exited(r),a=await Promise.race([t.ready,i.then(()=>void 0)]);if(a===void 0)return;let o,s,c,l,u,d=!1,f=!1,p=!1,m,h,g,_,v=()=>(_?.(),h||(h=t.stop(r),h.catch(()=>{})),h);try{g=await Si(a,new Ti(e,t.location.path,()=>{p||u!==void 0||(p=!0,v())}),e=>new yi(e)),n=()=>g.api.stop(),wi.restarter={restart(e){g.api.signal({type:`update`,version:e})}},_=()=>{f||(f=!0,g.deactivate())}}catch(e){try{await t.stop(),await i}catch(e){this._logger.warn({error:e},`Failed to stop process after connection failure`)}throw e}t.stopping.then(()=>{_?.()}),m=this._handshake(g).then(async()=>{t.location.type===`dist`&&wi.schedule(t.location.path,e.ssl);let n=k();return await this._run(n,g,e),await g.api.export({id:n})}).then(t=>{if(!(p||u!==void 0)){if(u=t,e.skill){d=!0,_?.();return}return v()}}).catch(async e=>{if(!(p||f)){c=e;try{await v()}catch(e){this._logger.warn({error:e},`Failed to stop process after run/export failure`)}}});let y=g.alive.catch(async e=>{if(!f){s=e;try{await v()}catch(e){this._logger.warn({error:e},`Failed to stop process after connection loss`)}}});try{if(m&&await m,d&&t.release(),!d)try{await i}catch(e){o=e}}finally{if(wi.stop(),wi.restarter=void 0,g.dispose(),await y,h)try{await h}catch(e){l=e}}if(l)throw l;if(p)return{restarted:!0};if(o)throw o;if(s)throw s;if(c)throw c;if(u)return u}async _attach(e,t,n){if(e.force)return;let r=this._find(e);if(r.length===0)return;let i=await this._connect(r,t,n);if(i)return i;throw Error(`Failed to attach to active Wallaby instance for the specified config.`)}async _connect([e,...t],n,r){if(e){this._logger.info({id:e.id,pid:e.pids.primary,port:e.ports.primary},`Trying to connect to active process from registry`);try{return{manifest:e,session:await Si(e.ports.primary,n(e),r)}}catch(i){return this._logger.warn({error:i,id:e.id,pid:e.pids.primary,port:e.ports.primary},`Failed to connect to active process from registry`),await this._connect(t,n,r)}}}async _run(e,t,n){await t.api.run({id:e,paths:n.paths})}async _handshake(e){let t=await e.api.handshake(Y.version);if(!t.compatible)throw Error(t.message||`Wallaby CLI v${Y.version} is not compatible with the running Wallaby Core.`)}_find(e){let t=ln(s(e.config?e.config:i(j(),`auto.detect`)));return new Kr().manifests.filter(e=>e.paths.config===t).sort((e,t)=>t.timestamps.refreshed-e.timestamps.refreshed).filter(e=>{try{return process.kill(e.pids.primary,0),!0}catch(e){return(typeof e==`object`&&e&&`code`in e?e.code:void 0)===`EPERM`}})}},Di=R(((e,t)=>{t.exports=a,a.sync=o;var n=B(`fs`);function r(e,t){var n=t.pathExt===void 0?process.env.PATHEXT:t.pathExt;if(!n||(n=n.split(`;`),n.indexOf(``)!==-1))return!0;for(var r=0;r<n.length;r++){var i=n[r].toLowerCase();if(i&&e.substr(-i.length).toLowerCase()===i)return!0}return!1}function i(e,t,n){return!e.isSymbolicLink()&&!e.isFile()?!1:r(t,n)}function a(e,t,r){n.stat(e,function(n,a){r(n,n?!1:i(a,e,t))})}function o(e,t){return i(n.statSync(e),e,t)}})),Oi=R(((e,t)=>{t.exports=r,r.sync=i;var n=B(`fs`);function r(e,t,r){n.stat(e,function(e,n){r(e,e?!1:a(n,t))})}function i(e,t){return a(n.statSync(e),t)}function a(e,t){return e.isFile()&&o(e,t)}function o(e,t){var n=e.mode,r=e.uid,i=e.gid,a=t.uid===void 0?process.getuid&&process.getuid():t.uid,o=t.gid===void 0?process.getgid&&process.getgid():t.gid,s=64,c=8,l=1,u=s|c;return n&l||n&c&&i===o||n&s&&r===a||n&u&&a===0}})),ki=R(((e,t)=>{B(`fs`);var n=process.platform===`win32`||global.TESTING_WINDOWS?Di():Oi();t.exports=r,r.sync=i;function r(e,t,i){if(typeof t==`function`&&(i=t,t={}),!i){if(typeof Promise!=`function`)throw TypeError(`callback not provided`);return new Promise(function(n,i){r(e,t||{},function(e,t){e?i(e):n(t)})})}n(e,t||{},function(e,n){e&&(e.code===`EACCES`||t&&t.ignoreErrors)&&(e=null,n=!1),i(e,n)})}function i(e,t){try{return n.sync(e,t||{})}catch(e){if(t&&t.ignoreErrors||e.code===`EACCES`)return!1;throw e}}})),Ai=R(((e,t)=>{let n=process.platform===`win32`||process.env.OSTYPE===`cygwin`||process.env.OSTYPE===`msys`,r=B(`path`),i=n?`;`:`:`,a=ki(),o=e=>Object.assign(Error(`not found: ${e}`),{code:`ENOENT`}),s=(e,t)=>{let r=t.colon||i,a=e.match(/\//)||n&&e.match(/\\/)?[``]:[...n?[process.cwd()]:[],...(t.path||process.env.PATH||``).split(r)],o=n?t.pathExt||process.env.PATHEXT||`.EXE;.CMD;.BAT;.COM`:``,s=n?o.split(r):[``];return n&&e.indexOf(`.`)!==-1&&s[0]!==``&&s.unshift(``),{pathEnv:a,pathExt:s,pathExtExe:o}},c=(e,t,n)=>{typeof t==`function`&&(n=t,t={}),t||={};let{pathEnv:i,pathExt:c,pathExtExe:l}=s(e,t),u=[],d=n=>new Promise((a,s)=>{if(n===i.length)return t.all&&u.length?a(u):s(o(e));let c=i[n],l=/^".*"$/.test(c)?c.slice(1,-1):c,d=r.join(l,e);a(f(!l&&/^\.[\\\/]/.test(e)?e.slice(0,2)+d:d,n,0))}),f=(e,n,r)=>new Promise((i,o)=>{if(r===c.length)return i(d(n+1));let s=c[r];a(e+s,{pathExt:l},(a,o)=>{if(!a&&o)if(t.all)u.push(e+s);else return i(e+s);return i(f(e,n,r+1))})});return n?d(0).then(e=>n(null,e),n):d(0)};t.exports=c,c.sync=(e,t)=>{t||={};let{pathEnv:n,pathExt:i,pathExtExe:c}=s(e,t),l=[];for(let o=0;o<n.length;o++){let s=n[o],u=/^".*"$/.test(s)?s.slice(1,-1):s,d=r.join(u,e),f=!u&&/^\.[\\\/]/.test(e)?e.slice(0,2)+d:d;for(let e=0;e<i.length;e++){let n=f+i[e];try{if(a.sync(n,{pathExt:c}))if(t.all)l.push(n);else return n}catch{}}}if(t.all&&l.length)return l;if(t.nothrow)return null;throw o(e)}})),ji=R(((e,t)=>{let n=(e={})=>{let t=e.env||process.env;return(e.platform||process.platform)===`win32`?Object.keys(t).reverse().find(e=>e.toUpperCase()===`PATH`)||`Path`:`PATH`};t.exports=n,t.exports.default=n})),Mi=R(((e,t)=>{let n=B(`path`),r=Ai(),i=ji();function a(e,t){let a=e.options.env||process.env,o=process.cwd(),s=e.options.cwd!=null,c=s&&process.chdir!==void 0&&!process.chdir.disabled;if(c)try{process.chdir(e.options.cwd)}catch{}let l;try{l=r.sync(e.command,{path:a[i({env:a})],pathExt:t?n.delimiter:void 0})}catch{}finally{c&&process.chdir(o)}return l&&=n.resolve(s?e.options.cwd:``,l),l}function o(e){return a(e)||a(e,!0)}t.exports=o})),Ni=R(((e,t)=>{let n=/([()\][%!^"`<>&|;, *?])/g;function r(e){return e=e.replace(n,`^$1`),e}function i(e,t){return e=`${e}`,e=e.replace(/(?=(\\+?)?)\1"/g,`$1$1\\"`),e=e.replace(/(?=(\\+?)?)\1$/,`$1$1`),e=`"${e}"`,e=e.replace(n,`^$1`),t&&(e=e.replace(n,`^$1`)),e}t.exports.command=r,t.exports.argument=i})),Pi=R(((e,t)=>{t.exports=/^#!(.*)/})),Fi=R(((e,t)=>{let n=Pi();t.exports=(e=``)=>{let t=e.match(n);if(!t)return null;let[r,i]=t[0].replace(/#! ?/,``).split(` `),a=r.split(`/`).pop();return a===`env`?i:i?`${a} ${i}`:a}})),Ii=R(((e,t)=>{let n=B(`fs`),r=Fi();function i(e){let t=Buffer.alloc(150),i;try{i=n.openSync(e,`r`),n.readSync(i,t,0,150,0),n.closeSync(i)}catch{}return r(t.toString())}t.exports=i})),Li=R(((e,t)=>{let n=B(`path`),r=Mi(),i=Ni(),a=Ii(),o=process.platform===`win32`,s=/\.(?:com|exe)$/i,c=/node_modules[\\/].bin[\\/][^\\/]+\.cmd$/i;function l(e){e.file=r(e);let t=e.file&&a(e.file);return t?(e.args.unshift(e.file),e.command=t,r(e)):e.file}function u(e){if(!o)return e;let t=l(e),r=!s.test(t);if(e.options.forceShell||r){let r=c.test(t);e.command=n.normalize(e.command),e.command=i.command(e.command),e.args=e.args.map(e=>i.argument(e,r)),e.args=[`/d`,`/s`,`/c`,`"${[e.command].concat(e.args).join(` `)}"`],e.command=process.env.comspec||`cmd.exe`,e.options.windowsVerbatimArguments=!0}return e}function d(e,t,n){t&&!Array.isArray(t)&&(n=t,t=null),t=t?t.slice(0):[],n=Object.assign({},n);let r={command:e,args:t,options:n,file:void 0,original:{command:e,args:t}};return n.shell?r:u(r)}t.exports=d})),Ri=R(((e,t)=>{let n=process.platform===`win32`;function r(e,t){return Object.assign(Error(`${t} ${e.command} ENOENT`),{code:`ENOENT`,errno:`ENOENT`,syscall:`${t} ${e.command}`,path:e.command,spawnargs:e.args})}function i(e,t){if(!n)return;let r=e.emit;e.emit=function(n,i){if(n===`exit`){let n=a(i,t);if(n)return r.call(e,`error`,n)}return r.apply(e,arguments)}}function a(e,t){return n&&e===1&&!t.file?r(t.original,`spawn`):null}function o(e,t){return n&&e===1&&!t.file?r(t.original,`spawnSync`):null}t.exports={hookChildProcess:i,verifyENOENT:a,verifyENOENTSync:o,notFoundError:r}})),zi=R(((e,t)=>{let n=B(`child_process`),r=Li(),i=Ri();function a(e,t,a){let o=r(e,t,a),s=n.spawn(o.command,o.args,o.options);return i.hookChildProcess(s,o),s}function o(e,t,a){let o=r(e,t,a),s=n.spawnSync(o.command,o.args,o.options);return s.error=s.error||i.verifyENOENTSync(s.status,o),s}t.exports=a,t.exports.spawn=a,t.exports.sync=o,t.exports._parse=r,t.exports._enoent=i}));function Bi(){try{return d.statSync(`/.dockerenv`),!0}catch{return!1}}function Vi(){try{return d.readFileSync(`/proc/self/cgroup`,`utf8`).includes(`docker`)}catch{return!1}}function Hi(){return Ui===void 0&&(Ui=Bi()||Vi()),Ui}var Ui,Wi=L((()=>{}));function Gi(){return Ki===void 0&&(Ki=qi()||Hi()),Ki}var Ki,qi,Ji=L((()=>{Wi(),qi=()=>{try{return d.statSync(`/run/.containerenv`),!0}catch{return!1}}})),Yi,Xi,Zi=L((()=>{Ji(),Yi=()=>{if(A.platform!==`linux`)return!1;if(c.release().toLowerCase().includes(`microsoft`))return!Gi();try{if(d.readFileSync(`/proc/version`,`utf8`).toLowerCase().includes(`microsoft`))return!Gi()}catch{}return d.existsSync(`/proc/sys/fs/binfmt_misc/WSLInterop`)||d.existsSync(`/run/WSL`)?!Gi():!1},Xi=A.env.__IS_WSL_TEST__?Yi:Yi()})),Qi,$i,ea,ta=L((()=>{Zi(),Qi=(()=>{let e=`/mnt/`,t;return async function(){if(t)return t;let n=`/etc/wsl.conf`,r=!1;try{await v.access(n,y.F_OK),r=!0}catch{}if(!r)return e;let i=await v.readFile(n,{encoding:`utf8`}),a=/(?<!#.*)root\s*=\s*(?<mountPoint>.*)/g.exec(i);return a?(t=a.groups.mountPoint.trim(),t=t.endsWith(`/`)?t:`${t}/`,t):e}})(),$i=async()=>`${await Qi()}c/Windows/System32/WindowsPowerShell/v1.0/powershell.exe`,ea=async()=>Xi?$i():`${A.env.SYSTEMROOT||A.env.windir||String.raw`C:\Windows`}\\System32\\WindowsPowerShell\\v1.0\\powershell.exe`}));function na(e,t,n){let r=n=>Object.defineProperty(e,t,{value:n,enumerable:!0,writable:!0});return Object.defineProperty(e,t,{configurable:!0,enumerable:!0,get(){let e=n();return r(e),e},set(e){r(e)}}),e}var ra=L((()=>{}));async function ia(){if(A.platform!==`darwin`)throw Error(`macOS only`);let{stdout:e}=await aa(`defaults`,[`read`,`com.apple.LaunchServices/com.apple.launchservices.secure`,`LSHandlers`]),t=/LSHandlerRoleAll = "(?!-)(?<id>[^"]+?)";\s+?LSHandlerURLScheme = (?:http|https);/.exec(e)?.groups.id??`com.apple.Safari`;return t===`com.apple.safari`?`com.apple.Safari`:t}var aa,oa=L((()=>{aa=ne(ee)}));async function sa(e,{humanReadableOutput:t=!0,signal:n}={}){if(A.platform!==`darwin`)throw Error(`macOS only`);let r=t?[]:[`-ss`],i={};n&&(i.signal=n);let{stdout:a}=await ca(`osascript`,[`-e`,e,r],i);return a.trim()}var ca,la=L((()=>{ca=ne(ee)}));async function ua(e){return sa(`tell application "Finder" to set app_path to application file id "${e}" as string\ntell application "System Events" to get value of property list item "CFBundleName" of property list file (app_path & ":Contents:Info.plist")`)}var da=L((()=>{la()}));async function fa(e=pa){let{stdout:t}=await e(`reg`,[`QUERY`,` HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\Shell\\Associations\\UrlAssociations\\http\\UserChoice`,`/v`,`ProgId`]),n=/ProgId\s*REG_SZ\s*(?<id>\S+)/.exec(t);if(!n)throw new ha(`Cannot find Windows browser in stdout: ${JSON.stringify(t)}`);let{id:r}=n.groups,i=r.lastIndexOf(`.`),a=r.lastIndexOf(`-`),o=i===-1?void 0:r.slice(0,i),s=a===-1?void 0:r.slice(0,a);return ma[r]??ma[o]??ma[s]??{name:r,id:r}}var pa,ma,ha,ga=L((()=>{pa=ne(ee),ma={MSEdgeHTM:{name:`Edge`,id:`com.microsoft.edge`},MSEdgeBHTML:{name:`Edge Beta`,id:`com.microsoft.edge.beta`},MSEdgeDHTML:{name:`Edge Dev`,id:`com.microsoft.edge.dev`},AppXq0fevzme2pys62n3e0fbqa7peapykr8v:{name:`Edge`,id:`com.microsoft.edge.old`},ChromeHTML:{name:`Chrome`,id:`com.google.chrome`},ChromeBHTML:{name:`Chrome Beta`,id:`com.google.chrome.beta`},ChromeDHTML:{name:`Chrome Dev`,id:`com.google.chrome.dev`},ChromiumHTM:{name:`Chromium`,id:`org.chromium.Chromium`},BraveHTML:{name:`Brave`,id:`com.brave.Browser`},BraveBHTML:{name:`Brave Beta`,id:`com.brave.Browser.beta`},BraveDHTML:{name:`Brave Dev`,id:`com.brave.Browser.dev`},BraveSSHTM:{name:`Brave Nightly`,id:`com.brave.Browser.nightly`},FirefoxURL:{name:`Firefox`,id:`org.mozilla.firefox`},OperaStable:{name:`Opera`,id:`com.operasoftware.Opera`},VivaldiHTM:{name:`Vivaldi`,id:`com.vivaldi.Vivaldi`},"IE.HTTP":{name:`Internet Explorer`,id:`com.microsoft.ie`}},new Map(Object.entries(ma)),ha=class extends Error{}}));async function _a(){if(A.platform===`darwin`){let e=await ia();return{name:await ua(e),id:e}}if(A.platform===`linux`){let{stdout:e}=await va(`xdg-mime`,[`query`,`default`,`x-scheme-handler/http`]),t=e.trim();return{name:ya(t.replace(/.desktop$/,``).replace(`-`,` `)),id:t}}if(A.platform===`win32`)return fa();throw Error(`Only macOS, Linux, and Windows are supported`)}var va,ya,ba=L((()=>{oa(),da(),ga(),va=ne(ee),ya=e=>e.toLowerCase().replaceAll(/(?:^|\s|-)\S/g,e=>e.toUpperCase())})),xa=le({apps:()=>Pa,default:()=>Ma,openApp:()=>Na});async function Sa(){let e=await ea(),t=String.raw`(Get-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\Shell\Associations\UrlAssociations\http\UserChoice").ProgId`,{stdout:n}=await Ta(e,[`-NoProfile`,`-NonInteractive`,`-ExecutionPolicy`,`Bypass`,`-EncodedCommand`,I.from(t,`utf16le`).toString(`base64`)],{encoding:`utf8`}),r=n.trim(),i={ChromeHTML:`com.google.chrome`,BraveHTML:`com.brave.Browser`,MSEdgeHTM:`com.microsoft.edge`,FirefoxURL:`org.mozilla.firefox`};return i[r]?{id:i[r]}:{}}function Ca(e){if(typeof e==`string`||Array.isArray(e))return e;let{[ka]:t}=e;if(!t)throw Error(`${ka} is not supported`);return t}function wa({[Oa]:e},{wsl:t}){if(t&&Xi)return Ca(t);if(!e)throw Error(`${Oa} is not supported`);return Ca(e)}var Ta,Ea,Da,Oa,ka,Aa,ja,Ma,Na,Pa,Fa=L((()=>{ta(),ra(),ba(),Ji(),Ta=ne(N.execFile),Ea=t.dirname(_(import.meta.url)),Da=t.join(Ea,`xdg-open`),{platform:Oa,arch:ka}=A,Aa=async(e,t)=>{let n;for(let r of e)try{return await t(r)}catch(e){n=e}throw n},ja=async e=>{if(e={wait:!1,background:!1,newInstance:!1,allowNonzeroExitCode:!1,...e},Array.isArray(e.app))return Aa(e.app,t=>ja({...e,app:t}));let{name:t,arguments:n=[]}=e.app??{};if(n=[...n],Array.isArray(t))return Aa(t,t=>ja({...e,app:{name:t,arguments:n}}));if(t===`browser`||t===`browserPrivate`){let r={"com.google.chrome":`chrome`,"google-chrome.desktop":`chrome`,"com.brave.Browser":`brave`,"org.mozilla.firefox":`firefox`,"firefox.desktop":`firefox`,"com.microsoft.msedge":`edge`,"com.microsoft.edge":`edge`,"com.microsoft.edgemac":`edge`,"microsoft-edge.desktop":`edge`},i={chrome:`--incognito`,brave:`--incognito`,firefox:`--private-window`,edge:`--inPrivate`},a=Xi?await Sa():await _a();if(a.id in r){let o=r[a.id];return t===`browserPrivate`&&n.push(i[o]),ja({...e,app:{name:Pa[o],arguments:n}})}throw Error(`${a.name} is not supported as a default browser`)}let r,i=[],a={};if(Oa===`darwin`)r=`open`,e.wait&&i.push(`--wait-apps`),e.background&&i.push(`--background`),e.newInstance&&i.push(`--new`),t&&i.push(`-a`,t);else if(Oa===`win32`||Xi&&!Gi()&&!t){r=await ea(),i.push(`-NoProfile`,`-NonInteractive`,`-ExecutionPolicy`,`Bypass`,`-EncodedCommand`),Xi||(a.windowsVerbatimArguments=!0);let o=[`Start`];e.wait&&o.push(`-Wait`),t?(o.push(`"\`"${t}\`""`),e.target&&n.push(e.target)):e.target&&o.push(`"${e.target}"`),n.length>0&&(n=n.map(e=>`"\`"${e}\`""`),o.push(`-ArgumentList`,n.join(`,`))),e.target=I.from(o.join(` `),`utf16le`).toString(`base64`)}else{if(t)r=t;else{let e=!Ea||Ea===`/`,t=!1;try{await v.access(Da,y.X_OK),t=!0}catch{}r=A.versions.electron??(Oa===`android`||e||!t)?`xdg-open`:Da}n.length>0&&i.push(...n),e.wait||(a.stdio=`ignore`,a.detached=!0)}Oa===`darwin`&&n.length>0&&i.push(`--args`,...n),e.target&&i.push(e.target);let o=N.spawn(r,i,a);return e.wait?new Promise((t,n)=>{o.once(`error`,n),o.once(`close`,r=>{if(!e.allowNonzeroExitCode&&r>0){n(Error(`Exited with code ${r}`));return}t(o)})}):(o.unref(),o)},Ma=(e,t)=>{if(typeof e!=`string`)throw TypeError("Expected a `target`");return ja({...t,target:e})},Na=(e,t)=>{if(typeof e!=`string`&&!Array.isArray(e))throw TypeError("Expected a valid `name`");let{arguments:n=[]}=t??{};if(n!=null&&!Array.isArray(n))throw TypeError("Expected `appArguments` as Array type");return ja({...t,app:{name:e,arguments:n}})},Pa={},na(Pa,`chrome`,()=>wa({darwin:`google chrome`,win32:`chrome`,linux:[`google-chrome`,`google-chrome-stable`,`chromium`]},{wsl:{ia32:`/mnt/c/Program Files (x86)/Google/Chrome/Application/chrome.exe`,x64:[`/mnt/c/Program Files/Google/Chrome/Application/chrome.exe`,`/mnt/c/Program Files (x86)/Google/Chrome/Application/chrome.exe`]}})),na(Pa,`brave`,()=>wa({darwin:`brave browser`,win32:`brave`,linux:[`brave-browser`,`brave`]},{wsl:{ia32:`/mnt/c/Program Files (x86)/BraveSoftware/Brave-Browser/Application/brave.exe`,x64:[`/mnt/c/Program Files/BraveSoftware/Brave-Browser/Application/brave.exe`,`/mnt/c/Program Files (x86)/BraveSoftware/Brave-Browser/Application/brave.exe`]}})),na(Pa,`firefox`,()=>wa({darwin:`firefox`,win32:String.raw`C:\Program Files\Mozilla Firefox\firefox.exe`,linux:`firefox`},{wsl:`/mnt/c/Program Files/Mozilla Firefox/firefox.exe`})),na(Pa,`edge`,()=>wa({darwin:`microsoft edge`,win32:`msedge`,linux:[`microsoft-edge`,`microsoft-edge-dev`]},{wsl:`/mnt/c/Program Files (x86)/Microsoft/Edge/Application/msedge.exe`})),na(Pa,`browser`,()=>`browser`),na(Pa,`browserPrivate`,()=>`browserPrivate`)})),Ia=z(zi(),1);const $=J.create(`browser`);function La(e){let t=process.env.BROWSER||``;$.info({url:e,browser:t||`default`},`Opening browser`),t.toLowerCase().endsWith(`.js`)?za(t,e):t.toLowerCase()===`none`?$.debug({url:e},`Browser auto-open disabled by environment`):Va(t,process.env.BROWSER_ARGS?process.env.BROWSER_ARGS.split(` `):[],e)}function Ra(e,t){return new Promise((n,r)=>{$.debug({command:e,cwd:t?.cwd},`Executing shell command`),P(e,t,(i,a)=>{i?($.error({err:i,command:e,cwd:t?.cwd},`Shell command failed`),r(i)):($.debug({command:e,cwd:t?.cwd},`Shell command completed`),n(a.toString()))})})}function za(e,t){let n=process.argv.slice(2);$.debug({scriptPath:e,url:t,extraArgs:n},`Launching browser script`);let r=(0,Ia.default)(process.execPath,[e,...n,t],{stdio:`inherit`});r.on(`error`,n=>{$.error({err:n,scriptPath:e,url:t},`Browser script process failed to start`)}),r.on(`close`,n=>{n===0?$.debug({scriptPath:e,url:t},`Browser script completed successfully`):($.warn({code:n,scriptPath:e,url:t},`Browser script exited with a non-zero status`),process.stdout.write(K.default.red(`\nThe script specified as BROWSER environment variable failed.\n\n${K.default.cyan(e)} exited with code ${n}.`)))})}const Ba=[`Google Chrome Canary`,`Google Chrome Dev`,`Google Chrome Beta`,`Google Chrome`,`Microsoft Edge`,`Brave Browser`,`Vivaldi`,`Chromium`];async function Va(e,t,n){let r=e===`google chrome`?`Google Chrome`:e,i=process.platform===`darwin`&&(!r||Ba.includes(r));if($.debug({browser:r,browserArgs:t,url:n},`Starting browser process`),i)try{let e=await Ra(`ps cax`),t=r&&e.includes(r)?r:Ba.find(t=>e.includes(t));if(t)return await Ra(`osascript openChrome.applescript "${encodeURI(n)}" "${t}"`,{cwd:Y.paths.dirs.package.bin}),$.debug({openedBrowser:t,url:n},`Opened browser via AppleScript`),!0}catch(e){$.debug({err:e,url:n},`AppleScript browser reuse attempt failed`)}process.platform===`darwin`&&e===`open`&&(e=void 0);try{let r=e?{app:{name:e,arguments:t}}:{},i;try{i=(await Promise.resolve().then(()=>(Fa(),xa))).default}catch(e){$.error({err:e},`Failed to import browser opener`)}if(i)try{let t=await i(n,r);$.debug({url:n,browser:e||`default`},`Opened browser with open package`),t.on(`error`,e=>{$.error({err:e,url:n},`Browser subprocess reported an error`),process.stderr.write(e.stack||e.message)})}catch(e){$.error({err:e,url:n},`Failed to open browser`),process.stderr.write(e instanceof Error?e.stack||e.message:String(e))}else $.warn({url:n},`Browser opener module was unavailable`);return!0}catch(t){return $.warn({err:t,url:n,browser:e||`default`},`Browser launch failed`),!1}}const Ha=J.create(`core/notifications`);function Ua(e,t){if(!t.text){Ha.trace({type:t.type},`Skipping empty notification`);return}Ha.debug({type:t.type,button:!!t.button},`Received notification from core`);let n=[];if(~t.text.indexOf(`expire`)&&t.type===`warning`&&e.notifications===!1){Ha.trace({type:t.type},`Suppressed expiration notification`);return}let r=`http://localhost:${e.port}`;~t.text.indexOf(`activate-link`)&&e.port&&n.push({title:`Enter License`,url:r}),~t.text.indexOf(`continue-trial-link`)&&e.port&&n.push({title:`Continue Trial`,url:r}),t.button&&n.push({title:t.button.label,url:t.button.link}),t.text=t.text.replace(/<br\/><br\/>/g,` `).replace(/<br\/>/g,` `).replace(/<a\s+(?:[^>]*?\s+)?href=['"]([^'"]*)['"]/g,(e,t)=>(t.startsWith(`http`)&&n.push({url:t}),e)).replace(/<[^>]*>/g,``);let i=t.type===`error`?K.default.red:t.type===`warning`?K.default.yellow:K.default.green;if(process.stdout.write(i(`\n ⚑ ${t.text}\n\n`)),n.length)for(let e of n)process.stdout.write(`${K.default.green(` ➜ `)}${K.default.bold(K.default.yellow(e.title?e.title+`: `:``))}${K.default.cyan(e.url)}\n`);Ha.trace({links:n},`Rendered notification links`)}const Wa=new Ir;var Ga=class extends bi{_options;_path;_version;_restart;_port;constructor(e,t,n,r){super(),this._options=e,this._path=t,this._version=n,this._restart=r}ping(){}notify(e){Ua({notifications:this._options.notifications,port:this._port,ui:this._options.ui},e)}restart(){this._restart()}launched(e){this._port=e;let t=`http://localhost:${e}`;process.stdout.write(K.default.green(` ${K.default.bold(`WALLABY CORE`)}${this._version?` v${this._version}`:``}\n`)),process.stdout.write(`${K.default.green(` ➜ `)}${K.default.bold(K.default.yellow(`UI:`))} ${K.default.cyan(t)}\n`),process.stdout.write(`${K.default.green(` ➜ `)}${K.default.bold(K.default.dim(`Docs:`))} ${K.default.cyan(`https://wallabyjs.com/docs`)}\n`),this._options.ui!==!1&&La(t)}relicensed(){this._path&&(Wa.stop(),Wa.check(this._path,this._options.ssl))}stopped(e){}},Ka=class{_logger=J.create(`commands/start`);async execute(e){this._logger.info({cwd:j(),options:e},`Executing start command`);let t=await this._execute(e);return this._logger.info({result:t},`Executed start command`),t}async _execute(e){return await this._cycle(e)?(this._logger.info(`Restarting process`),await this._execute(e)):!0}async _cycle(e){if(!e.force){let t=this._find(e)[0];if(t)return this._logger.info({id:t.id,pid:t.pids.primary,port:t.ports.primary},`Active process is already running for the specified config`),console.warn(`Wallaby Core is already started.`),!1}let t=await Ur({...e,smart:e.smart||e.paths.length>0},new Fr,Wa),n,r=()=>n?(n(),!0):!1,i=t.exited(r),a=await Promise.race([t.ready,i.then(()=>void 0)]);if(a===void 0)return!1;let o,s,c,l,u=!1,d,f,p=()=>(d||(d=t.stop(r),d.catch(()=>{})),d);try{f=await Si(a,new Ga(e,t.location.path,t.version,()=>{u||(u=!0,p())}),e=>new yi(e)),n=()=>f.api.stop(),Wa.restarter={restart(e){f.api.signal({type:`update`,version:e})}}}catch(e){try{await t.stop(),await i}catch(e){this._logger.warn({error:e},`Failed to stop process after connection failure`)}throw e}t.stopping.then(()=>f.deactivate());let m=f.alive.catch(async e=>{s=e;try{await p()}catch(e){this._logger.warn({error:e},`Failed to stop process after connection loss`)}});try{await this._handshake(f),t.location.type===`dist`&&Wa.schedule(t.location.path,e.ssl),await this._run(f,e).catch(async e=>{if(!u){c=e;try{await p()}catch(e){this._logger.warn({error:e},`Failed to stop process after run failure`)}}}),await i}catch(e){if(o=e,!u)try{await p(),await i.catch(()=>{})}catch(e){this._logger.warn({error:e},`Failed to stop process after startup failure`)}}finally{if(Wa.stop(),Wa.restarter=void 0,f.dispose(),await m,d)try{await d}catch(e){l=e}}if(l)throw l;if(o)throw o;if(c)throw c;if(s&&!(s instanceof Error&&s.message.startsWith(`Socket closed with code 1006 and reason:`)))throw s;return u}async _run(e,t){t.paths.length!==0&&await e.api.run({id:k(),paths:t.paths})}async _handshake(e){let t=await e.api.handshake(Y.version);if(!t.compatible)throw Error(t.message||`Wallaby CLI v${Y.version} is not compatible with the running Wallaby Core.`)}_find(e){let t=ln(s(e.config?e.config:i(j(),`auto.detect`)));return new Kr().manifests.filter(e=>e.paths.config===t).sort((e,t)=>t.timestamps.refreshed-e.timestamps.refreshed).filter(e=>{try{return process.kill(e.pids.primary,0),!0}catch(e){return(typeof e==`object`&&e&&`code`in e?e.code:void 0)===`EPERM`}})}},qa=class{_logger=J.create(`commands/stop`);async execute(e){this._logger.info({cwd:j(),options:e},`Executing stop command`);let t=ln(s(e.config?e.config:i(j(),`auto.detect`)));this._logger.info({config:t},`Determined config path and config directory`);let n=new Kr().manifests.filter(n=>e.all?!0:e.config?n.paths.config===t:r(n.paths.config)===r(t));if(n.length!==0)for(let e of n)this._stop(e);else this._logger.info(`No running processes matched stop criteria`);this._logger.info({count:n.length},`Executed stop command`)}_stop(e){this._logger.info({id:e.id,pid:e.pids.primary,config:e.paths.config},`Stopping process from registry`);try{process.kill(e.pids.primary,`SIGTERM`)}catch(e){this._logger.info({error:e},`Failed to send SIGTERM to process, it may have already stopped`)}this._logger.info({id:e.id,pid:e.pids.primary},`Stopped process from registry`)}};J.initialize({path:i(Y.paths.dirs.current,`logs`,`trace.log`)});const Ja=J.create(`cli`);async function Ya(){Ja.trace({argv:process.argv.slice(2),version:Y.version},`Parsing CLI arguments`);let e=gt(process.argv,Y.version);if(e){if(await G.default.ensureDir(Y.paths.dirs.current),e.action===`stop`){await new qa().execute(e.options);return}if(e.action===`run`){let t=await new Ei().execute(e.options);process.exitCode=+!t;return}await new Ka().execute(e.options)}}async function Xa(){try{await Ya()}catch(e){Ja.error({error:e},`Wallaby CLI failed`),console.error(K.default.red(e instanceof Error?e.message:String(e))),process.exitCode=1}finally{try{await J.shutdown()}catch(e){process.stderr.write(`[logger] ${e instanceof Error?e.stack||e.message:String(e)}\n`),process.exitCode=1}}}Xa();export{};
|